<?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>155561</bug_id>
          
          <creation_ts>2016-03-16 14:59:04 -0700</creation_ts>
          <short_desc>Replace all of the various non-working and non-compiling sampling profiler hacks with a single super hack</short_desc>
          <delta_ts>2016-03-18 04:41:34 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1175514</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-16 14:59:04 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175517</commentid>
    <comment_count>1</comment_count>
      <attachid>274223</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-16 14:59:34 -0700</bug_when>
    <thetext>Created attachment 274223
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175587</commentid>
    <comment_count>2</comment_count>
      <attachid>274247</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-16 17:56:21 -0700</bug_when>
    <thetext>Created attachment 274247
maybe the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175591</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-16 17:58:48 -0700</bug_when>
    <thetext>Attachment 274247 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/SuperSampler.h:33:  g_superSamplerCount is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/bytecode/SuperSampler.cpp:36:  g_superSamplerCount is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/bytecode/SuperSampler.cpp:48:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 25 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>1175799</commentid>
    <comment_count>4</comment_count>
      <attachid>274307</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-17 11:56:18 -0700</bug_when>
    <thetext>Created attachment 274307
better patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175801</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-17 12:00:40 -0700</bug_when>
    <thetext>Attachment 274307 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/SuperSampler.h:33:  g_superSamplerCount is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/bytecode/SuperSampler.cpp:36:  g_superSamplerCount is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/bytecode/SuperSampler.cpp:48:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 25 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>1175817</commentid>
    <comment_count>6</comment_count>
      <attachid>274314</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-17 12:28:36 -0700</bug_when>
    <thetext>Created attachment 274314
the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175819</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-17 12:30:16 -0700</bug_when>
    <thetext>Attachment 274314 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/SuperSampler.h:33:  g_superSamplerCount is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/bytecode/SuperSampler.cpp:36:  g_superSamplerCount is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/bytecode/SuperSampler.cpp:48:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 27 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>1175845</commentid>
    <comment_count>8</comment_count>
      <attachid>274314</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-17 13:43:23 -0700</bug_when>
    <thetext>Comment on attachment 274314
the patch?

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6482
&gt; +        bool sample = false;
&gt; +
&gt; +        if (sample)
&gt; +            m_out.incrementSuperSamplerCount();
&gt; +        

I&apos;m not a big fan of checking this in. I think it&apos;s better to let individual users of the profiler do it.
I think this just clutters the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175954</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-17 17:54:41 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/198364</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176093</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-03-18 00:21:56 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Landed in http://trac.webkit.org/changeset/198364

It broke the cloop build: (you could have noticed it on build.webkit.org ...)

/Volumes/Data/slave/elcapitan-cloop-debug/build/Source/JavaScriptCore/bytecode/SuperSampler.cpp:61:21: error: use of undeclared identifier &apos;dataLog&apos;
                    dataLog(&quot;WARNING: Super sampler undercount detected!\n&quot;);
                    ^
/Volumes/Data/slave/elcapitan-cloop-debug/build/Source/JavaScriptCore/bytecode/SuperSampler.cpp:74:5: error: use of undeclared identifier &apos;dataLog&apos;
    dataLog(&quot;Percent time behind super sampler flag: &quot;, percentage, &quot;\n&quot;);
    ^
2 errors generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176094</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-03-18 00:23:09 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Landed in http://trac.webkit.org/changeset/198364

just to document, GTK buildfix landed in https://trac.webkit.org/changeset/198384</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176144</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-03-18 04:41:34 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; Landed in http://trac.webkit.org/changeset/198364
&gt; 
&gt; It broke the cloop build: (you could have noticed it on build.webkit.org ...)
&gt; 
&gt; /Volumes/Data/slave/elcapitan-cloop-debug/build/Source/JavaScriptCore/
&gt; bytecode/SuperSampler.cpp:61:21: error: use of undeclared identifier
&gt; &apos;dataLog&apos;
&gt;                     dataLog(&quot;WARNING: Super sampler undercount detected!\n&quot;);
&gt;                     ^
&gt; /Volumes/Data/slave/elcapitan-cloop-debug/build/Source/JavaScriptCore/
&gt; bytecode/SuperSampler.cpp:74:5: error: use of undeclared identifier &apos;dataLog&apos;
&gt;     dataLog(&quot;Percent time behind super sampler flag: &quot;, percentage, &quot;\n&quot;);
&gt;     ^
&gt; 2 errors generated.

Fix landed in https://trac.webkit.org/changeset/198396.
Please check build.webkit.org after landing patches next time.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274223</attachid>
            <date>2016-03-16 14:59:34 -0700</date>
            <delta_ts>2016-03-16 17:56:21 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>113355</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE5ODMwMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMjEzLDEyICsyMTMsMTIgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAog
ICAgIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCi0gICAgYnl0ZWNvZGUvU2FtcGxpbmdU
b29sLmNwcAogICAgIGJ5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcAogICAgIGJ5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAKICAgICBieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcAogICAgIGJ5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcAorICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAKICAgICBi
eXRlY29kZS9Ub1RoaXNTdGF0dXMuY3BwCiAgICAgYnl0ZWNvZGUvVHJhY2tlZFJlZmVyZW5jZXMu
Y3BwCiAgICAgYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJTdGFja1Zpc2l0
b3IuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJl
UmFyZURhdGFJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAi
VGVzdFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVk
ZSAiV0FTTU1vZHVsZVBhcnNlci5oIgpAQCAtMTk0MCwxNiArMTk0MSw2IEBAIHN0YXRpYyBib29s
IHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCoKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCktPmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgfQogCi0jaWYgRU5BQkxFKFNBTVBMSU5H
X0ZMQUdTKQotICAgIFNhbXBsaW5nRmxhZ3M6OnN0b3AoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShT
QU1QTElOR19SRUdJT05TKQotICAgIFNhbXBsaW5nUmVnaW9uOjpkdW1wKCk7Ci0jZW5kaWYKLSAg
ICB2bS5kdW1wU2FtcGxlRGF0YShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7Ci0jaWYgRU5B
QkxFKFNBTVBMSU5HX0NPVU5URVJTKQotICAgIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyOjpkdW1w
KCk7Ci0jZW5kaWYKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgdm0uZHVtcFJlZ0V4
cFRyYWNlKCk7CiAjZW5kaWYKQEAgLTIyMTAsNiArMjIwMSw4IEBAIGludCBqc2NtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikKICAgICAgICAgdm0tPmhlYXAuY29sbGVjdEFsbEdhcmJhZ2UoKTsK
ICAgICB9CiAKKyAgICBwcmludFN1cGVyU2FtcGxlclN0YXRlKCk7CisKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk4
MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM3Niw2ICszNzYsOCBAQAogCQkwRjQ4
NTMyOTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0ODUzMjUxODdERkRFQzAwODNC
Njg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmNwcCAqLzsgfTsKIAkJMEY0ODUzMkExODdERkRFQzAw
ODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ4NTMyNjE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3Zl
cnlPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjQ5M0FGQTE2RDBDQUQzMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0OTNBRjgxNkQwQ0FE
MTAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCAqLzsgfTsKKwkJMEY0QTM4RjkxQzhFMTNE
RjAwMTkwMzE4IC8qIFN1cGVyU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRBMzhGNzFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1w
bGVyLmNwcCAqLzsgfTsKKwkJMEY0QTM4RkExQzhFMTNERjAwMTkwMzE4IC8qIFN1cGVyU2FtcGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0QTM4
RjgxQzhFMTNERjAwMTkwMzE4IC8qIFN1cGVyU2FtcGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNEI5NERDMTdCOUYwNzUwMEREMDNBNCAv
KiBUeXBlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0Qjk0REIxN0I5RjA3NTAwREQwM0E0IC8qIFR5cGVkQXJyYXlJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0
QzkxNjYxQzI5RjRGMjAwNDM0MUE2IC8qIEIzT3JpZ2luRHVtcC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0QzkxNjUxQzI5RjRGMjAwNDM0MUE2IC8q
IEIzT3JpZ2luRHVtcC5oICovOyB9OwogCQkwRjRERTFDRTFDNEMxQjU0MDA0RDZDMTEgLyogQWly
Rml4T2J2aW91c1NwaWxscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjRERTFDQzFDNEMxQjU0MDA0RDZDMTEgLyogQWlyRml4T2J2aW91c1NwaWxs
cy5jcHAgKi87IH07CkBAIC05ODgsOCArOTkwLDYgQEAKIAkJMTQyOUQ3N0MwRUQyMEQ3MzAwQjg5
NjE5IC8qIEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDI5RDc3QjBFRDIwRDczMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDI5RDdENDBF
RDIxMjgyMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyOUQ3RDMwRUQyMTI4MjAwQjg5NjE5IC8qIEludGVy
cHJldGVyLmNwcCAqLzsgfTsKIAkJMTQyOUQ4NzgwRUQyMUFDRDAwQjg5NjE5IC8qIEV4Y2VwdGlv
bkhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQyOUQ4NzcwRUQyMUFDRDAwQjg5NjE5IC8qIEV4Y2VwdGlvbkhlbHBlcnMuY3BwICovOyB9
OwotCQkxNDI5RDg4NTBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjlEODgzMEVEMjFDM0Qw
MEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuY3BwICovOyB9OwotCQkxNDI5RDg4NjBFRDIxQzNEMDBC
ODk2MTkgLyogU2FtcGxpbmdUb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDI5RDg4NDBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQyOUQ4
REQwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDI5RDhEQjBFRDIyMDVCMDBCODk2MTkgLyogQ2Fs
bEZyYW1lLmNwcCAqLzsgfTsKIAkJMTQyOUQ4REUwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyOUQ4
REMwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MjlEOTJGMEVEMjJENzAwMEI4OTYxOSAvKiBK
SVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQy
OUQ5MkQwRUQyMkQ3MDAwQjg5NjE5IC8qIEpJVC5jcHAgKi87IH07CkBAIC0yNTMwLDYgKzI1MzAs
OCBAQAogCQkwRjQ4NTMyNTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMUmVjb3ZlcnlPcGNvZGUu
Y3BwOyBwYXRoID0gZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY0ODUzMjYxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2Rl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFJlY292ZXJ5T3Bjb2RlLmg7
IHBhdGggPSBmdGwvRlRMUmVjb3ZlcnlPcGNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY0OTNBRjgxNkQwQ0FEMTAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0QTM4RjcxQzhFMTNERjAwMTkwMzE4IC8qIFN1
cGVyU2FtcGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdXBl
clNhbXBsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjRBMzhGODFDOEUx
M0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN1cGVyU2FtcGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjRC
OTREQjE3QjlGMDc1MDBERDAzQTQgLyogVHlwZWRBcnJheUlubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZWRBcnJheUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY0QzkxNjUxQzI5RjRGMjAwNDM0MUE2IC8qIEIzT3JpZ2luRHVtcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM09yaWdpbkR1bXAuaDsgcGF0aCA9
IGIzL0IzT3JpZ2luRHVtcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjRERTFD
QzFDNEMxQjU0MDA0RDZDMTEgLyogQWlyRml4T2J2aW91c1NwaWxscy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJGaXhPYnZpb3VzU3BpbGxzLmNwcDsgcGF0aCA9
IGIzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTMxMjQsOCArMzEyNiw2IEBACiAJCTE0MjlEN0QzMEVEMjEyODIwMEI4OTYxOSAvKiBJ
bnRlcnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRl
cnByZXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MjlEODVCMEVEMjE4
RTkwMEI4OTYxOSAvKiBKU1N0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTU3RhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDI5RDg3
NzBFRDIxQUNEMDBCODk2MTkgLyogRXhjZXB0aW9uSGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb25IZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMTQyOUQ4ODMwRUQyMUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9v
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ1Rvb2wu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDI5RDg4NDBFRDIxQzNEMDBCODk2
MTkgLyogU2FtcGxpbmdUb29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNh
bXBsaW5nVG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDI5RDhEQjBFRDIy
MDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
MjlEOERDMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IENhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5n
Lm9iamNwcDsgfTsKIAkJMTQyOUQ5MkQwRUQyMkQ3MDAwQjg5NjE5IC8qIEpJVC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNjU3Niw4ICs2NTc2LDYgQEAKIAkJCQkwRjlGQzhDMTE0RTFCNUZCMDBE
NTJBRTAgLyogUHV0S2luZC5oICovLAogCQkJCTBGRjYwQUJGMTY3NDBGODEwMDAyOTc3OSAvKiBS
ZWR1Y2VXaGl0ZXNwYWNlLmNwcCAqLywKIAkJCQkwRkY2MEFDMDE2NzQwRjgxMDAwMjk3NzkgLyog
UmVkdWNlV2hpdGVzcGFjZS5oICovLAotCQkJCTE0MjlEODgzMEVEMjFDM0QwMEI4OTYxOSAvKiBT
YW1wbGluZ1Rvb2wuY3BwICovLAotCQkJCTE0MjlEODg0MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1w
bGluZ1Rvb2wuaCAqLywKIAkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBv
aW50ZXIuY3BwICovLAogCQkJCTBGNTU0MUIwMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9p
bnRlci5oICovLAogCQkJCTBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlw
ZS5jcHAgKi8sCkBAIC02NTg4LDYgKzY1ODYsOCBAQAogCQkJCTBGNzY2RDM3MTVBRTRBMUEwMDhG
MzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggKi8sCiAJCQkJQkNDRjBE
MEIwRUYwQjhBNTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmNwcCAqLywKIAkJCQlCQ0NG
MEQwNzBFRjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLywKKwkJCQkwRjRB
MzhGNzFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLywKKwkJCQkwRjRBMzhG
ODFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8sCiAJCQkJMEYyRDRERTUxOTgz
MkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8sCiAJCQkJMEYyRDRERTYxOTgzMkRB
QzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oICovLAogCQkJCTBGOTUyQUJBMUI0ODdBNzcwMEMz
NjdDNSAvKiBUcmFja2VkUmVmZXJlbmNlcy5jcHAgKi8sCkBAIC03ODU0LDYgKzc4NTQsNyBAQAog
CQkJCTBGQjM4NzkwMUJGQkM0NEQwMEUzQUIxRSAvKiBBaXJPcHRpbWl6ZUJsb2NrT3JkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRjcyOUJBMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckNv
bXBpbGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCQjE2NkFEMzYwMDAwRjVCQTMg
LyogUHJvZmlsZXJDb21waWxhdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNEEzOEZB
MUM4RTEzREYwMDE5MDMxOCAvKiBTdXBlclNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RjcyOUJDMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRjcyOUJEMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckRhdGFi
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCRTE2NkFEMzYwMDAwRjVCQTMgLyogUHJv
ZmlsZXJFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MTMsNyArNzkxNCw2
IEBACiAJCQkJNzBCMEE5RDExQTlCNjY0NjAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTJDMDYxMUYxQUE1MUUxQzAwQjRBREJBIC8qIFJ1bnRpbWVUeXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2FtcGxpbmdD
b3VudGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxNDI5RDg4NjBFRDIxQzNEMDBCODk2MTkgLyog
U2FtcGxpbmdUb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyODFBQTkwOTU2MDBEMzNC
MzMgLyogU2NvcGVkQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyOTFBQTkw
OTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRTA1MDJCMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNldC5oIGluIEhlYWRlcnMgKi8s
CkBAIC05MDY5LDYgKzkwNjksNyBAQAogCQkJCUZFMzg0RUU3MUFEREI3QUQwMDU1REUyQyAvKiBK
U0RvbGxhclZNUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUQ3MTA3RUMz
NzYwMDQyN0E0OCAvKiBKU0Vudmlyb25tZW50UmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0MDU2NkQ2MTA3RUMyNzEwMDVEQkM4RCAvKiBKU0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGNEEzOEY5MUM4RTEzREYwMDE5MDMxOCAvKiBTdXBlclNhbXBsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzk3RTA3QTkxQjhGQ0ZCOTAwODQwMEJBIC8qIEpTR2xvYmFsTGV4aWNh
bEVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUQyMTA3RUMzNzYwMDQy
N0E0OCAvKiBKU0dsb2JhbE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZEMDA4NTE4
OUIxQjdFMDA2MzMyMzEgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC05MjYxLDcgKzkyNjIsNiBAQAogCQkJCTBGNkI4QUQ4MUM0RUREQTIwMDk2OTA1
MiAvKiBCM0R1cGxpY2F0ZVRhaWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyNzc3M0RFMUFB
RjgzQUMwMEJERTdFOCAvKiBSdW50aW1lVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc3
MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTE0MjlEODg1MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZFMDUwMjcxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAyRjFBQUE4MDY5MDBEMzNCMzMgLyogU2Nv
cGVkQXJndW1lbnRzVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTkyQUJDRjkxQkVBOUJE
MjAwNjQwM0EwIC8qIFJlbW90ZUF1dG9tYXRpb25UYXJnZXQuY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNw
cAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nh
bXBsaW5nVG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNDc5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgotCi0jaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCi0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKLSNpbmNsdWRlICJPcGNvZGUuaCIK
LSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0KLSNpZiAhT1MoV0lORE9XUykKLSNpbmNsdWRlIDx1
bmlzdGQuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgSlNDIHsKLQotI2lmIEVOQUJMRShTQU1QTElO
R19GTEFHUykKLQotdm9pZCBTYW1wbGluZ0ZsYWdzOjpzYW1wbGUoKQotewotICAgIHVpbnQzMl90
IG1hc2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oMSA8PCAzMSk7Ci0gICAgdW5zaWduZWQgaW5k
ZXg7Ci0KLSAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCAzMjsgKytpbmRleCkgewotICAgICAg
ICBpZiAobWFzayAmIHNfZmxhZ3MpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgbWFzayA+
Pj0gMTsKLSAgICB9Ci0KLSAgICBzX2ZsYWdDb3VudHNbMzIgLSBpbmRleF0rKzsKLX0KLQotdm9p
ZCBTYW1wbGluZ0ZsYWdzOjpzdGFydCgpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
PSAzMjsgKytpKQotICAgICAgICBzX2ZsYWdDb3VudHNbaV0gPSAwOwotfQotdm9pZCBTYW1wbGlu
Z0ZsYWdzOjpzdG9wKCkKLXsKLSAgICB1aW50NjRfdCB0b3RhbCA9IDA7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8PSAzMjsgKytpKQotICAgICAgICB0b3RhbCArPSBzX2ZsYWdDb3VudHNb
aV07Ci0KLSAgICBpZiAodG90YWwpIHsKLSAgICAgICAgZGF0YUxvZ0YoIlxuU2FtcGxpbmdGbGFn
czogc2FtcGxlIGNvdW50cyB3aXRoIGZsYWdzIHNldDogKCVsbGQgdG90YWwpXG4iLCB0b3RhbCk7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPD0gMzI7ICsraSkgewotICAgICAgICAg
ICAgaWYgKHNfZmxhZ0NvdW50c1tpXSkKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiICBbICUw
MmQgXSA6ICVsbGRcdFx0KCUwMy4yZiUlKVxuIiwgaSwgc19mbGFnQ291bnRzW2ldLCAoMTAwLjAg
KiBzX2ZsYWdDb3VudHNbaV0pIC8gdG90YWwpOwotICAgICAgICB9Ci0gICAgICAgIGRhdGFMb2dG
KCJcbiIpOwotICAgIH0gZWxzZQotICAgIGRhdGFMb2dGKCJcblNhbXBsaW5nRmxhZ3M6IG5vIHNh
bXBsZXMuXG5cbiIpOwotfQotdWludDY0X3QgU2FtcGxpbmdGbGFnczo6c19mbGFnQ291bnRzWzMz
XTsKLQotI2Vsc2UKLXZvaWQgU2FtcGxpbmdGbGFnczo6c3RhcnQoKSB7fQotdm9pZCBTYW1wbGlu
Z0ZsYWdzOjpzdG9wKCkge30KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFNBTVBMSU5HX1JFR0lPTlMp
Ci12b2xhdGlsZSB1aW50cHRyX3QgU2FtcGxpbmdSZWdpb246OnNfY3VycmVudE9yUmVzZXJ2ZWQ7
Ci1TcGVjdHJ1bTxjb25zdCBjaGFyKj4qIFNhbXBsaW5nUmVnaW9uOjpzX3NwZWN0cnVtOwotdW5z
aWduZWQgbG9uZyBTYW1wbGluZ1JlZ2lvbjo6c19ub25lT2ZUaGVBYm92ZTsKLXVuc2lnbmVkIFNh
bXBsaW5nUmVnaW9uOjpzX251bWJlck9mU2FtcGxlc1NpbmNlRHVtcDsKLQotU2FtcGxpbmdSZWdp
b246OkxvY2tlcjo6TG9ja2VyKCkKLXsKLSAgICB1aW50cHRyX3QgcHJldmlvdXM7Ci0gICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgcHJldmlvdXMgPSBzX2N1cnJlbnRPclJlc2VydmVkOwotICAg
ICAgICBpZiAocHJldmlvdXMgJiAxKSB7Ci0jaWYgT1MoVU5JWCkKLSAgICAgICAgICAgIHNjaGVk
X3lpZWxkKCk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAg
ICAgIGlmIChXVEY6OndlYWtDb21wYXJlQW5kU3dhcFVJbnRQdHIoJnNfY3VycmVudE9yUmVzZXJ2
ZWQsIHByZXZpb3VzLCBwcmV2aW91cyB8IDEpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQot
fQotCi1TYW1wbGluZ1JlZ2lvbjo6TG9ja2VyOjp+TG9ja2VyKCkKLXsKLSAgICAvLyBXZSBkb24n
dCBuZWVkIHRoZSBDQVMsIGJ1dCB3ZSBkbyBpdCBvdXQgb2YgYW4KLSAgICAvLyBhYnVuZGFuY2Ug
b2YgY2F1dGlvbiAoYW5kIGJlY2F1c2UgaXQgZ2l2ZXMgdXMgYSBtZW1vcnkgZmVuY2UsIHdoaWNo
IGlzCi0gICAgLy8gbmV2ZXIgYmFkKS4KLSAgICB1aW50cHRyX3QgcHJldmlvdXM7Ci0gICAgZG8g
ewotICAgICAgICBwcmV2aW91cyA9IHNfY3VycmVudE9yUmVzZXJ2ZWQ7Ci0gICAgfSB3aGlsZSAo
IVdURjo6d2Vha0NvbXBhcmVBbmRTd2FwVUludFB0cigmc19jdXJyZW50T3JSZXNlcnZlZCwgcHJl
dmlvdXMsIHByZXZpb3VzICYgfjEpKTsKLX0KLQotdm9pZCBTYW1wbGluZ1JlZ2lvbjo6c2FtcGxl
KCkKLXsKLSAgICAvLyBNYWtlIHN1cmUgd2UgbG9jayBzX2N1cnJlbnQuCi0gICAgTG9ja2VyIGxv
Y2tlcjsKLSAgICAKLSAgICAvLyBDcmVhdGUgYSBzcGVjdHJ1bSBpZiB3ZSBkb24ndCBoYXZlIG9u
ZSBhbHJlYWR5LgotICAgIGlmICghc19zcGVjdHJ1bSkKLSAgICAgICAgc19zcGVjdHJ1bSA9IG5l
dyBTcGVjdHJ1bTxjb25zdCBjaGFyKj4oKTsKLSAgICAKLSAgICBBU1NFUlQoc19jdXJyZW50T3JS
ZXNlcnZlZCAmIDEpOwotICAgIAotICAgIC8vIFdhbGsgdGhlIHJlZ2lvbiBzdGFjaywgYW5kIHJl
Y29yZCBlYWNoIHJlZ2lvbiB3ZSBzZWUuCi0gICAgU2FtcGxpbmdSZWdpb24qIHJlZ2lvbiA9IGJp
dHdpc2VfY2FzdDxTYW1wbGluZ1JlZ2lvbio+KHNfY3VycmVudE9yUmVzZXJ2ZWQgJiB+MSk7Ci0g
ICAgaWYgKHJlZ2lvbikgewotICAgICAgICBmb3IgKDsgcmVnaW9uOyByZWdpb24gPSByZWdpb24t
Pm1fcHJldmlvdXMpCi0gICAgICAgICAgICBzX3NwZWN0cnVtLT5hZGQocmVnaW9uLT5tX25hbWUp
OwotICAgIH0gZWxzZQotICAgICAgICBzX25vbmVPZlRoZUFib3ZlKys7Ci0gICAgCi0gICAgaWYg
KHNfbnVtYmVyT2ZTYW1wbGVzU2luY2VEdW1wKysgPT0gU2FtcGxpbmdUaHJlYWQ6OnNfaGVydHop
IHsKLSAgICAgICAgc19udW1iZXJPZlNhbXBsZXNTaW5jZUR1bXAgPSAwOwotICAgICAgICBkdW1w
SW50ZXJuYWwoKTsKLSAgICB9Ci19Ci0KLXZvaWQgU2FtcGxpbmdSZWdpb246OmR1bXAoKQotewot
ICAgIExvY2tlciBsb2NrZXI7Ci0gICAgCi0gICAgZHVtcEludGVybmFsKCk7Ci19Ci0KLXZvaWQg
U2FtcGxpbmdSZWdpb246OmR1bXBJbnRlcm5hbCgpCi17Ci0gICAgaWYgKCFzX3NwZWN0cnVtKSB7
Ci0gICAgICAgIGRhdGFMb2dGKCJcblNhbXBsaW5nUmVnaW9uOiB3YXMgbmV2ZXIgc2FtcGxlZC5c
blxuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgVmVjdG9yPFNwZWN0cnVt
PGNvbnN0IGNoYXIqPjo6S2V5QW5kQ291bnQ+IGxpc3QgPSBzX3NwZWN0cnVtLT5idWlsZExpc3Qo
KTsKLSAgICAKLSAgICB1bnNpZ25lZCBsb25nIHRvdGFsID0gc19ub25lT2ZUaGVBYm92ZTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNpemUoKTsgaS0tOykKLSAgICAgICAgdG90YWwgKz0g
bGlzdFtpXS5jb3VudDsKLSAgICAKLSAgICBkYXRhTG9nRigiXG5TYW1wbGluZ1JlZ2lvbjogc2Ft
cGxlIGNvdW50cyBmb3IgcmVnaW9uczogKCVsdSBzYW1wbGVzKVxuIiwgdG90YWwpOwotCi0gICAg
Zm9yICh1bnNpZ25lZCBpID0gbGlzdC5zaXplKCk7IGktLTspCi0gICAgICAgIGRhdGFMb2dGKCIg
ICAgJTMuMmxmJSUgICVzXG4iLCAoMTAwLjAgKiBsaXN0W2ldLmNvdW50KSAvIHRvdGFsLCBsaXN0
W2ldLmtleSk7Ci19Ci0jZWxzZSAvLyBFTkFCTEUoU0FNUExJTkdfUkVHSU9OUykKLXZvaWQgU2Ft
cGxpbmdSZWdpb246OmR1bXAoKSB7IH0KLSNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUkVHSU9O
UykKLQotLyoKLSAgU3RhcnQgd2l0aCBmbGFnIDE2IHNldC4KLSAgQnkgZG9pbmcgdGhpcyB0aGUg
bW9uaXRvcmluZyBvZiBsb3dlciB2YWx1ZWQgZmxhZ3Mgd2lsbCBiZSBtYXNrZWQgb3V0Ci0gIHVu
dGlsIGZsYWcgMTYgaXMgZXhwbGljdGx5IGNsZWFyZWQuCi0qLwotdWludDMyX3QgU2FtcGxpbmdG
bGFnczo6c19mbGFncyA9IDEgPDwgMTU7Ci0KLQotI2lmIE9TKFdJTkRPV1MpCi0KLXN0YXRpYyB2
b2lkIHNsZWVwRm9yTWljcm9zZWNvbmRzKHVuc2lnbmVkIHVzKQotewotICAgIHVuc2lnbmVkIG1z
ID0gdXMgLyAxMDAwOwotICAgIGlmICh1cyAmJiAhbXMpCi0gICAgICAgIG1zID0gMTsKLSAgICBT
bGVlcChtcyk7Ci19Ci0KLSNlbHNlIAotCi1zdGF0aWMgdm9pZCBzbGVlcEZvck1pY3Jvc2Vjb25k
cyh1bnNpZ25lZCB1cykKLXsKLSAgICB1c2xlZXAodXMpOwotfQotCi0jZW5kaWYKLQotc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBoZXJ0ejJ1cyh1bnNpZ25lZCBoZXJ0eikKLXsKLSAgICByZXR1cm4g
MTAwMDAwMCAvIGhlcnR6OwotfQotCi0KLVNhbXBsaW5nVG9vbCogU2FtcGxpbmdUb29sOjpzX3Nh
bXBsaW5nVG9vbCA9IDA7Ci0KLQotYm9vbCBTYW1wbGluZ1RocmVhZDo6c19ydW5uaW5nID0gZmFs
c2U7Ci11bnNpZ25lZCBTYW1wbGluZ1RocmVhZDo6c19oZXJ0eiA9IDEwMDAwOwotVGhyZWFkSWRl
bnRpZmllciBTYW1wbGluZ1RocmVhZDo6c19zYW1wbGluZ1RocmVhZDsKLQotdm9pZCBTYW1wbGlu
Z1RocmVhZDo6dGhyZWFkU3RhcnRGdW5jKHZvaWQqKQotewotICAgIHdoaWxlIChzX3J1bm5pbmcp
IHsKLSAgICAgICAgc2xlZXBGb3JNaWNyb3NlY29uZHMoaGVydHoydXMoc19oZXJ0eikpOwotCi0j
aWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQotICAgICAgICBTYW1wbGluZ0ZsYWdzOjpzYW1wbGUo
KTsKLSNlbmRpZgotI2lmIEVOQUJMRShTQU1QTElOR19SRUdJT05TKQotICAgICAgICBTYW1wbGlu
Z1JlZ2lvbjo6c2FtcGxlKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQot
ICAgICAgICBTYW1wbGluZ1Rvb2w6OnNhbXBsZSgpOwotI2VuZGlmCi0gICAgfQotfQotCi0KLXZv
aWQgU2FtcGxpbmdUaHJlYWQ6OnN0YXJ0KHVuc2lnbmVkIGhlcnR6KQotewotICAgIEFTU0VSVCgh
c19ydW5uaW5nKTsKLSAgICBzX3J1bm5pbmcgPSB0cnVlOwotICAgIHNfaGVydHogPSBoZXJ0ejsK
LQotICAgIHNfc2FtcGxpbmdUaHJlYWQgPSBjcmVhdGVUaHJlYWQodGhyZWFkU3RhcnRGdW5jLCAw
LCAiSmF2YVNjcmlwdENvcmU6OlNhbXBsZXIiKTsKLX0KLQotdm9pZCBTYW1wbGluZ1RocmVhZDo6
c3RvcCgpCi17Ci0gICAgQVNTRVJUKHNfcnVubmluZyk7Ci0gICAgc19ydW5uaW5nID0gZmFsc2U7
Ci0gICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24oc19zYW1wbGluZ1RocmVhZCk7Ci19Ci0KLQot
dm9pZCBTY3JpcHRTYW1wbGVSZWNvcmQ6OnNhbXBsZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5z
dHJ1Y3Rpb24qIHZQQykKLXsKLSAgICBpZiAoIW1fc2FtcGxlcykgewotICAgICAgICBtX3NpemUg
PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKLSAgICAgICAgbV9zYW1wbGVzID0g
c3RhdGljX2Nhc3Q8aW50Kj4oY2FsbG9jKG1fc2l6ZSwgc2l6ZW9mKGludCkpKTsKLSAgICAgICAg
bV9jb2RlQmxvY2sgPSBjb2RlQmxvY2s7Ci0gICAgfQotCi0gICAgKyttX3NhbXBsZUNvdW50Owot
Ci0gICAgdW5zaWduZWQgb2ZmZXN0ID0gdlBDIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpOwotICAgIC8vIFNpbmNlIHdlIGRvbid0IHJlYWQgYW5kIHdyaXRlIGNvZGVCbG9jayBh
bmQgdlBDIGF0b21pY2FsbHksIHRoaXMgY2hlY2sKLSAgICAvLyBjYW4gZmFpbCBpZiB3ZSBzYW1w
bGUgbWlkIG9wX2NhbGwgLyBvcF9yZXQuCi0gICAgaWYgKG9mZmVzdCA8IG1fc2l6ZSkgewotICAg
ICAgICBtX3NhbXBsZXNbb2ZmZXN0XSsrOwotICAgICAgICBtX29wY29kZVNhbXBsZUNvdW50Kys7
Ci0gICAgfQotfQotCi12b2lkIFNhbXBsaW5nVG9vbDo6ZG9SdW4oKQotewotICAgIFNhbXBsZSBz
YW1wbGUobV9zYW1wbGUsIG1fY29kZUJsb2NrKTsKLSAgICArK21fc2FtcGxlQ291bnQ7Ci0KLSAg
ICBpZiAoc2FtcGxlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXNhbXBs
ZS5pbkhvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAgIHVuc2lnbmVkIG9wY29kZUlEID0gbV9pbnRl
cnByZXRlci0+Z2V0T3Bjb2RlSUQoc2FtcGxlLnZQQygpWzBdLnUub3Bjb2RlKTsKLQotICAgICAg
ICArK21fb3Bjb2RlU2FtcGxlQ291bnQ7Ci0gICAgICAgICsrbV9vcGNvZGVTYW1wbGVzW29wY29k
ZUlEXTsKLQotICAgICAgICBpZiAoc2FtcGxlLmluQ1RJRnVuY3Rpb24oKSkKLSAgICAgICAgICAg
IG1fb3Bjb2RlU2FtcGxlc0luQ1RJRnVuY3Rpb25zW29wY29kZUlEXSsrOwotICAgIH0KLQotI2lm
IEVOQUJMRShDT0RFQkxPQ0tfU0FNUExJTkcpCi0gICAgaWYgKENvZGVCbG9jayogY29kZUJsb2Nr
ID0gc2FtcGxlLmNvZGVCbG9jaygpKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Ny
aXB0U2FtcGxlTWFwTXV0ZXgpOwotICAgICAgICBTY3JpcHRTYW1wbGVSZWNvcmQqIHJlY29yZCA9
IG1fc2NvcGVTYW1wbGVNYXAtPmdldChjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpKTsKLSAg
ICAgICAgQVNTRVJUKHJlY29yZCk7Ci0gICAgICAgIHJlY29yZC0+c2FtcGxlKGNvZGVCbG9jaywg
c2FtcGxlLnZQQygpKTsKLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBTYW1wbGluZ1Rvb2w6OnNh
bXBsZSgpCi17Ci0gICAgc19zYW1wbGluZ1Rvb2wtPmRvUnVuKCk7Ci19Ci0KLXZvaWQgU2FtcGxp
bmdUb29sOjpub3RpZnlPZlNjb3BlKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogc2NyaXB0KQot
ewotI2lmIEVOQUJMRShDT0RFQkxPQ0tfU0FNUExJTkcpCi0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zY3JpcHRTYW1wbGVNYXBNdXRleCk7Ci0gICAgbV9zY29wZVNhbXBsZU1hcC0+c2V0KHNjcmlw
dCwgYWRvcHRQdHIobmV3IFNjcmlwdFNhbXBsZVJlY29yZCh2bSwgc2NyaXB0KSkpOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0odm0pOwotICAgIFVOVVNFRF9QQVJBTShzY3JpcHQpOwotI2VuZGlm
Ci19Ci0KLXZvaWQgU2FtcGxpbmdUb29sOjpzZXR1cCgpCi17Ci0gICAgc19zYW1wbGluZ1Rvb2wg
PSB0aGlzOwotfQotCi0jaWYgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQotc3RydWN0IE9wY29k
ZVNhbXBsZUluZm8gewotICAgIE9wY29kZUlEIG9wY29kZTsKLSAgICBsb25nIGxvbmcgY291bnQ7
Ci0gICAgbG9uZyBsb25nIGNvdW50SW5DVElGdW5jdGlvbnM7Ci19OwotCi1zdHJ1Y3QgTGluZUNv
dW50SW5mbyB7Ci0gICAgdW5zaWduZWQgbGluZTsKLSAgICB1bnNpZ25lZCBjb3VudDsKLX07Ci0K
LXN0YXRpYyBpbnQgY29tcGFyZU9wY29kZUluZGljZXNTYW1wbGluZyhjb25zdCB2b2lkKiBsZWZ0
LCBjb25zdCB2b2lkKiByaWdodCkKLXsKLSAgICBjb25zdCBPcGNvZGVTYW1wbGVJbmZvKiBsZWZ0
U2FtcGxlSW5mbyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgT3Bjb2RlU2FtcGxlSW5mbyo+KGxl
ZnQpOwotICAgIGNvbnN0IE9wY29kZVNhbXBsZUluZm8qIHJpZ2h0U2FtcGxlSW5mbyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgT3Bjb2RlU2FtcGxlSW5mbyo+KHJpZ2h0KTsKLQotICAgIHJldHVy
biAobGVmdFNhbXBsZUluZm8tPmNvdW50IDwgcmlnaHRTYW1wbGVJbmZvLT5jb3VudCkgPyAxIDog
KGxlZnRTYW1wbGVJbmZvLT5jb3VudCA+IHJpZ2h0U2FtcGxlSW5mby0+Y291bnQpID8gLTEgOiAw
OwotfQotCi0jaWYgRU5BQkxFKENPREVCTE9DS19TQU1QTElORykKLXN0YXRpYyBpbnQgY29tcGFy
ZUxpbmVDb3VudEluZm9TYW1wbGluZyhjb25zdCB2b2lkKiBsZWZ0LCBjb25zdCB2b2lkKiByaWdo
dCkKLXsKLSAgICBjb25zdCBMaW5lQ291bnRJbmZvKiBsZWZ0TGluZUNvdW50ID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMaW5lQ291bnRJbmZvKj4obGVmdCk7Ci0gICAgY29uc3QgTGluZUNvdW50
SW5mbyogcmlnaHRMaW5lQ291bnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IExpbmVDb3VudElu
Zm8qPihyaWdodCk7Ci0KLSAgICByZXR1cm4gKGxlZnRMaW5lQ291bnQtPmxpbmUgPiByaWdodExp
bmVDb3VudC0+bGluZSkgPyAxIDogKGxlZnRMaW5lQ291bnQtPmxpbmUgPCByaWdodExpbmVDb3Vu
dC0+bGluZSkgPyAtMSA6IDA7Ci19Ci0KLXN0YXRpYyBpbnQgY29tcGFyZVNjcmlwdFNhbXBsZVJl
Y29yZHMoY29uc3Qgdm9pZCogbGVmdCwgY29uc3Qgdm9pZCogcmlnaHQpCi17Ci0gICAgY29uc3Qg
U2NyaXB0U2FtcGxlUmVjb3JkKiBjb25zdCBsZWZ0VmFsdWUgPSAqc3RhdGljX2Nhc3Q8Y29uc3Qg
U2NyaXB0U2FtcGxlUmVjb3JkKiBjb25zdCAqPihsZWZ0KTsKLSAgICBjb25zdCBTY3JpcHRTYW1w
bGVSZWNvcmQqIGNvbnN0IHJpZ2h0VmFsdWUgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgU2NyaXB0U2Ft
cGxlUmVjb3JkKiBjb25zdCAqPihyaWdodCk7Ci0KLSAgICByZXR1cm4gKGxlZnRWYWx1ZS0+bV9z
YW1wbGVDb3VudCA8IHJpZ2h0VmFsdWUtPm1fc2FtcGxlQ291bnQpID8gMSA6IChsZWZ0VmFsdWUt
Pm1fc2FtcGxlQ291bnQgPiByaWdodFZhbHVlLT5tX3NhbXBsZUNvdW50KSA/IC0xIDogMDsKLX0K
LSNlbmRpZgotCi12b2lkIFNhbXBsaW5nVG9vbDo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0g
ICAgLy8gVGlkaWVzIHVwIFN1blNwaWRlciBvdXRwdXQgYnkgcmVtb3Zpbmcgc2hvcnQgc2NyaXB0
cyAtIHN1Y2ggYSBzbWFsbCBudW1iZXIgb2Ygc2FtcGxlcyB3b3VsZCBsaWtlbHkgbm90IGJlIHVz
ZWZ1bCBhbnlob3cuCi0gICAgaWYgKG1fc2FtcGxlQ291bnQgPCAxMCkKLSAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIC8vICgxKSBCdWlsZCBhbmQgc29ydCAnb3Bjb2RlU2FtcGxlSW5mbycgYXJy
YXkuCi0KLSAgICBPcGNvZGVTYW1wbGVJbmZvIG9wY29kZVNhbXBsZUluZm9bbnVtT3Bjb2RlSURz
XTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7Ci0gICAgICAg
IG9wY29kZVNhbXBsZUluZm9baV0ub3Bjb2RlID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpOwot
ICAgICAgICBvcGNvZGVTYW1wbGVJbmZvW2ldLmNvdW50ID0gbV9vcGNvZGVTYW1wbGVzW2ldOwot
ICAgICAgICBvcGNvZGVTYW1wbGVJbmZvW2ldLmNvdW50SW5DVElGdW5jdGlvbnMgPSBtX29wY29k
ZVNhbXBsZXNJbkNUSUZ1bmN0aW9uc1tpXTsKLSAgICB9Ci0KLSAgICBxc29ydChvcGNvZGVTYW1w
bGVJbmZvLCBudW1PcGNvZGVJRHMsIHNpemVvZihPcGNvZGVTYW1wbGVJbmZvKSwgY29tcGFyZU9w
Y29kZUluZGljZXNTYW1wbGluZyk7Ci0KLSAgICAvLyAoMikgUHJpbnQgT3Bjb2RlIHNhbXBsaW5n
IHJlc3VsdHMuCi0KLSAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBzYW1wbGVzIFsqXVxuIik7Ci0g
ICAgZGF0YUxvZ0YoIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlICAgJSUgb2Yg
ICAgICAgJSUgb2YgICAgIHwgICBjdGkgICAgIGN0aSAlJVxuIik7Ci0gICAgZGF0YUxvZ0YoIm9w
Y29kZSAgICAgICAgICAgICAgICAgICAgICAgY291bnQgICAgIFZNICAgICAgICB0b3RhbCAgICB8
ICBjb3VudCAgIG9mIHNlbGZcbiIpOwotICAgIGRhdGFMb2dGKCItLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgfCAgLS0tLS0tLS0tLS0tLS0t
LVxuIik7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7Ci0g
ICAgICAgIGxvbmcgbG9uZyBjb3VudCA9IG9wY29kZVNhbXBsZUluZm9baV0uY291bnQ7Ci0gICAg
ICAgIGlmICghY291bnQpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IG9wY29kZVNhbXBsZUluZm9baV0ub3Bjb2RlOwotICAgICAgICAKLSAgICAg
ICAgY29uc3QgY2hhciogb3Bjb2RlTmFtZSA9IG9wY29kZU5hbWVzW29wY29kZUlEXTsKLSAgICAg
ICAgY29uc3QgY2hhciogb3Bjb2RlUGFkZGluZyA9IHBhZE9wY29kZU5hbWUob3Bjb2RlSUQsIDI4
KTsKLSAgICAgICAgZG91YmxlIHBlcmNlbnRPZlZNID0gKHN0YXRpY19jYXN0PGRvdWJsZT4oY291
bnQpICogMTAwKSAvIG1fb3Bjb2RlU2FtcGxlQ291bnQ7Ci0gICAgICAgIGRvdWJsZSBwZXJjZW50
T2ZUb3RhbCA9IChzdGF0aWNfY2FzdDxkb3VibGU+KGNvdW50KSAqIDEwMCkgLyBtX3NhbXBsZUNv
dW50OwotICAgICAgICBsb25nIGxvbmcgY291bnRJbkNUSUZ1bmN0aW9ucyA9IG9wY29kZVNhbXBs
ZUluZm9baV0uY291bnRJbkNUSUZ1bmN0aW9uczsKLSAgICAgICAgZG91YmxlIHBlcmNlbnRJbkNU
SUZ1bmN0aW9ucyA9IChzdGF0aWNfY2FzdDxkb3VibGU+KGNvdW50SW5DVElGdW5jdGlvbnMpICog
MTAwKSAvIGNvdW50OwotICAgICAgICBkZWJ1Z0RlYnVnUHJpbnRmKCIlczolcyUtNmxsZCAlLjNm
JSVcdCUuM2YlJVx0ICB8ICAgJS02bGxkICUuM2YlJVxuIiwgb3Bjb2RlTmFtZSwgb3Bjb2RlUGFk
ZGluZywgY291bnQsIHBlcmNlbnRPZlZNLCBwZXJjZW50T2ZUb3RhbCwgY291bnRJbkNUSUZ1bmN0
aW9ucywgcGVyY2VudEluQ1RJRnVuY3Rpb25zKTsKLSAgICB9Ci0gICAgCi0gICAgZGF0YUxvZ0Yo
IlxuWypdIFNhbXBsZXMgaW5zaWRlIGhvc3QgY29kZSBhcmUgbm90IGNoYXJnZWQgdG8gYW55IEJ5
dGVjb2RlLlxuXG4iKTsKLSAgICBkYXRhTG9nRigiXHRTYW1wbGVzIGluc2lkZSBWTTpcdFx0JWxs
ZCAvICVsbGQgKCUuM2YlJSlcbiIsIG1fb3Bjb2RlU2FtcGxlQ291bnQsIG1fc2FtcGxlQ291bnQs
IChzdGF0aWNfY2FzdDxkb3VibGU+KG1fb3Bjb2RlU2FtcGxlQ291bnQpICogMTAwKSAvIG1fc2Ft
cGxlQ291bnQpOwotICAgIGRhdGFMb2dGKCJcdFNhbXBsZXMgaW5zaWRlIGhvc3QgY29kZTpcdCVs
bGQgLyAlbGxkICglLjNmJSUpXG5cbiIsIG1fc2FtcGxlQ291bnQgLSBtX29wY29kZVNhbXBsZUNv
dW50LCBtX3NhbXBsZUNvdW50LCAoc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3NhbXBsZUNvdW50IC0g
bV9vcGNvZGVTYW1wbGVDb3VudCkgKiAxMDApIC8gbV9zYW1wbGVDb3VudCk7Ci0gICAgZGF0YUxv
Z0YoIlx0c2FtcGxlIGNvdW50Olx0c2FtcGxlcyBpbnNpZGUgdGhpcyBvcGNvZGVcbiIpOwotICAg
IGRhdGFMb2dGKCJcdCUlIG9mIFZNOlx0c2FtcGxlIGNvdW50IC8gYWxsIG9wY29kZSBzYW1wbGVz
XG4iKTsKLSAgICBkYXRhTG9nRigiXHQlJSBvZiB0b3RhbDpcdHNhbXBsZSBjb3VudCAvIGFsbCBz
YW1wbGVzXG4iKTsKLSAgICBkYXRhTG9nRigiXHQtLS0tLS0tLS0tLS0tLVxuIik7Ci0gICAgZGF0
YUxvZ0YoIlx0Y3RpIGNvdW50Olx0c2FtcGxlcyBpbnNpZGUgYSBDVEkgZnVuY3Rpb24gY2FsbGVk
IGJ5IHRoaXMgb3Bjb2RlXG4iKTsKLSAgICBkYXRhTG9nRigiXHRjdGkgJSUgb2Ygc2VsZjpcdGN0
aSBjb3VudCAvIHNhbXBsZSBjb3VudFxuIik7Ci0gICAgCi0jaWYgRU5BQkxFKENPREVCTE9DS19T
QU1QTElORykKLQotICAgIC8vICgzKSBCdWlsZCBhbmQgc29ydCAnY29kZUJsb2NrU2FtcGxlcycg
YXJyYXkuCi0KLSAgICBpbnQgc2NvcGVDb3VudCA9IG1fc2NvcGVTYW1wbGVNYXAtPnNpemUoKTsK
LSAgICBWZWN0b3I8U2NyaXB0U2FtcGxlUmVjb3JkKj4gY29kZUJsb2NrU2FtcGxlcyhzY29wZUNv
dW50KTsKLSAgICBTY3JpcHRTYW1wbGVSZWNvcmRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3Njb3Bl
U2FtcGxlTWFwLT5iZWdpbigpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2NvcGVDb3VudDsg
KytpLCArK2l0ZXIpCi0gICAgICAgIGNvZGVCbG9ja1NhbXBsZXNbaV0gPSBpdGVyLT52YWx1ZS5n
ZXQoKTsKLQotICAgIHFzb3J0KGNvZGVCbG9ja1NhbXBsZXMuYmVnaW4oKSwgc2NvcGVDb3VudCwg
c2l6ZW9mKFNjcmlwdFNhbXBsZVJlY29yZCopLCBjb21wYXJlU2NyaXB0U2FtcGxlUmVjb3Jkcyk7
Ci0KLSAgICAvLyAoNCkgUHJpbnQgZGF0YSBmcm9tICdjb2RlQmxvY2tTYW1wbGVzJyBhcnJheS4K
LQotICAgIGRhdGFMb2dGKCJcbkNvZGVCbG9jayBzYW1wbGVzXG5cbiIpOyAKLQotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgc2NvcGVDb3VudDsgKytpKSB7Ci0gICAgICAgIFNjcmlwdFNhbXBsZVJl
Y29yZCogcmVjb3JkID0gY29kZUJsb2NrU2FtcGxlc1tpXTsKLSAgICAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSByZWNvcmQtPm1fY29kZUJsb2NrOwotCi0gICAgICAgIGRvdWJsZSBibG9ja1Bl
cmNlbnQgPSAocmVjb3JkLT5tX3NhbXBsZUNvdW50ICogMTAwLjApIC8gbV9zYW1wbGVDb3VudDsK
LQotICAgICAgICBpZiAoYmxvY2tQZXJjZW50ID49IDEpIHsKLSAgICAgICAgICAgIC8vSW5zdHJ1
Y3Rpb24qIGNvZGUgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgICAg
ICAgICBkYXRhTG9nRigiIyVkOiAlczolZDogJWQgLyAlbGxkICglLjNmJSUpXG4iLCBpICsgMSwg
cmVjb3JkLT5tX2V4ZWN1dGFibGUtPnNvdXJjZVVSTCgpLnV0ZjgoKS5kYXRhKCksIGNvZGVCbG9j
ay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KDApLCByZWNvcmQtPm1fc2FtcGxlQ291bnQs
IG1fc2FtcGxlQ291bnQsIGJsb2NrUGVyY2VudCk7Ci0gICAgICAgICAgICBpZiAoaSA8IDEwKSB7
Ci0gICAgICAgICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCx1bnNpZ25lZD4gbGluZUNvdW50czsK
LSAgICAgICAgICAgICAgICBjb2RlQmxvY2stPmR1bXAoZXhlYyk7Ci0KLSAgICAgICAgICAgICAg
ICBkYXRhTG9nRigiICAgIE9wY29kZSBhbmQgbGluZSBudW1iZXIgc2FtcGxlcyBbKl1cblxuIik7
Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBvcCA9IDA7IG9wIDwgcmVjb3JkLT5tX3Np
emU7ICsrb3ApIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gcmVjb3JkLT5tX3Nh
bXBsZXNbb3BdOwotICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgWyUgNGRdIGhhcyBzYW1wbGUgY291bnQ6ICUgNGRc
biIsIG9wLCBjb3VudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaW5lID0g
Y29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQob3ApOwotICAgICAgICAgICAg
ICAgICAgICAgICAgbGluZUNvdW50cy5zZXQobGluZSwgKGxpbmVDb3VudHMuY29udGFpbnMobGlu
ZSkgPyBsaW5lQ291bnRzLmdldChsaW5lKSA6IDApICsgY291bnQpOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIp
OwotCi0gICAgICAgICAgICAgICAgaW50IGxpbmVzQ291bnQgPSBsaW5lQ291bnRzLnNpemUoKTsK
LSAgICAgICAgICAgICAgICBWZWN0b3I8TGluZUNvdW50SW5mbz4gbGluZUNvdW50SW5mbyhsaW5l
c0NvdW50KTsKLSAgICAgICAgICAgICAgICBpbnQgbGluZW5vID0gMDsKLSAgICAgICAgICAgICAg
ICBmb3IgKEhhc2hNYXA8dW5zaWduZWQsdW5zaWduZWQ+OjppdGVyYXRvciBpdGVyID0gbGluZUNv
dW50cy5iZWdpbigpOyBpdGVyICE9IGxpbmVDb3VudHMuZW5kKCk7ICsraXRlciwgKytsaW5lbm8p
IHsKLSAgICAgICAgICAgICAgICAgICAgbGluZUNvdW50SW5mb1tsaW5lbm9dLmxpbmUgPSBpdGVy
LT5rZXk7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVDb3VudEluZm9bbGluZW5vXS5jb3VudCA9
IGl0ZXItPnZhbHVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHFzb3J0
KGxpbmVDb3VudEluZm8uYmVnaW4oKSwgbGluZXNDb3VudCwgc2l6ZW9mKExpbmVDb3VudEluZm8p
LCBjb21wYXJlTGluZUNvdW50SW5mb1NhbXBsaW5nKTsKLQotICAgICAgICAgICAgICAgIGZvciAo
bGluZW5vID0gMDsgbGluZW5vIDwgbGluZXNDb3VudDsgKytsaW5lbm8pIHsKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0YoIiAgICBMaW5lICMlZCBoYXMgc2FtcGxlIGNvdW50ICVkLlxuIiwg
bGluZUNvdW50SW5mb1tsaW5lbm9dLmxpbmUsIGxpbmVDb3VudEluZm9bbGluZW5vXS5jb3VudCk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAg
ICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgWypdIFNhbXBsZXMgaW5zaWRlIGhvc3QgY29kZSBh
cmUgY2hhcmdlZCB0byB0aGUgY2FsbGluZyBCeXRlY29kZS5cbiIpOwotICAgICAgICAgICAgICAg
IGRhdGFMb2dGKCIgICAgICAgIFNhbXBsZXMgb24gYSBjYWxsIC8gcmV0dXJuIGJvdW5kYXJ5IGFy
ZSBub3QgY2hhcmdlZCB0byBhIHNwZWNpZmljIG9wY29kZSBvciBsaW5lLlxuXG4iKTsKLSAgICAg
ICAgICAgICAgICBkYXRhTG9nRigiICAgICAgICAgICAgU2FtcGxlcyBvbiBhIGNhbGwgLyByZXR1
cm4gYm91bmRhcnk6ICVkIC8gJWQgKCUuM2YlJSlcblxuIiwgcmVjb3JkLT5tX3NhbXBsZUNvdW50
IC0gcmVjb3JkLT5tX29wY29kZVNhbXBsZUNvdW50LCByZWNvcmQtPm1fc2FtcGxlQ291bnQsIChz
dGF0aWNfY2FzdDxkb3VibGU+KHJlY29yZC0+bV9zYW1wbGVDb3VudCAtIHJlY29yZC0+bV9vcGNv
ZGVTYW1wbGVDb3VudCkgKiAxMDApIC8gcmVjb3JkLT5tX3NhbXBsZUNvdW50KTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwot
I2VuZGlmCi19Ci0KLSNlbHNlCi0KLXZvaWQgU2FtcGxpbmdUb29sOjpkdW1wKEV4ZWNTdGF0ZSop
Ci17Ci19Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmgJKHJldmlzaW9uIDE5ODMwMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAx
MywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNhbXBsaW5nVG9vbF9oCi0jZGVm
aW5lIFNhbXBsaW5nVG9vbF9oCi0KLSNpbmNsdWRlICJTdHJvbmcuaCIKLSNpbmNsdWRlICJPcGNv
ZGUuaCIKLSNpbmNsdWRlICJTYW1wbGluZ0NvdW50ZXIuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0j
aW5jbHVkZSA8d3RmL1NwZWN0cnVtLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotCi1u
YW1lc3BhY2UgSlNDIHsKLQotICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7Ci0KLSAgICBjbGFz
cyBTYW1wbGluZ0ZsYWdzIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIHN0YXJ0KCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIHN0b3AoKTsKLQotI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKLSAgICAgICAgc3RhdGlj
IHZvaWQgc2V0RmxhZyh1bnNpZ25lZCBmbGFnKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NF
UlQoZmxhZyA+PSAxKTsKLSAgICAgICAgICAgIEFTU0VSVChmbGFnIDw9IDMyKTsKLSAgICAgICAg
ICAgIHNfZmxhZ3MgfD0gMXUgPDwgKGZsYWcgLSAxKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0
YXRpYyB2b2lkIGNsZWFyRmxhZyh1bnNpZ25lZCBmbGFnKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQoZmxhZyA+PSAxKTsKLSAgICAgICAgICAgIEFTU0VSVChmbGFnIDw9IDMyKTsKLSAg
ICAgICAgICAgIHNfZmxhZ3MgJj0gfigxdSA8PCAoZmxhZyAtIDEpKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHN0YXRpYyB2b2lkIHNhbXBsZSgpOwotCi0gICAgICAgIGNsYXNzIFNjb3BlZEZsYWcg
ewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBTY29wZWRGbGFnKGludCBmbGFnKQotICAg
ICAgICAgICAgICAgIDogbV9mbGFnKGZsYWcpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgc2V0RmxhZyhmbGFnKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgflNjb3BlZEZs
YWcoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNsZWFyRmxhZyhtX2ZsYWcpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBpbnQgbV9mbGFn
OwotICAgICAgICB9OwotICAgIAotICAgICAgICBzdGF0aWMgY29uc3Qgdm9pZCogYWRkcmVzc09m
RmxhZ3MoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gJnNfZmxhZ3M7Ci0gICAgICAg
IH0KLQotI2VuZGlmCi0gICAgcHJpdmF0ZToKLSAgICAgICAgSlNfRVhQT1JUREFUQSBzdGF0aWMg
dWludDMyX3Qgc19mbGFnczsKLSNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi0gICAgICAgIHN0
YXRpYyB1aW50NjRfdCBzX2ZsYWdDb3VudHNbMzNdOwotI2VuZGlmCi0gICAgfTsKLQotI2lmIEVO
QUJMRShTQU1QTElOR19SRUdJT05TKQotICAgIGNsYXNzIFNhbXBsaW5nUmVnaW9uIHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIC8vIENyZWF0ZSBhIHNjb3BlZCBzYW1wbGluZyByZWdpb24gdXNpbmcg
YSBDIHN0cmluZyBjb25zdGFudCBuYW1lIHRoYXQgZGVzY3JpYmVzCi0gICAgICAgIC8vIHdoYXQg
eW91IGFyZSBkb2luZy4gVGhpcyBtdXN0IGJlIGEgc3RyaW5nIGNvbnN0YW50IHRoYXQgcGVyc2lz
dHMgZm9yIHRoZQotICAgICAgICAvLyBsaWZldGltZSBvZiB0aGUgcHJvY2VzcyBhbmQgaXMgaW1t
dXRhYmxlLgotICAgICAgICBTYW1wbGluZ1JlZ2lvbihjb25zdCBjaGFyKiBuYW1lKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgICAgICAgICAg
bV9uYW1lID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIG1fbmFtZSA9IG5hbWU7Ci0gICAgICAgICAgICBleGNoYW5n
ZUN1cnJlbnQodGhpcywgJm1fcHJldmlvdXMpOwotICAgICAgICAgICAgQVNTRVJUKCFtX3ByZXZp
b3VzIHx8IG1fcHJldmlvdXMgPiB0aGlzKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
flNhbXBsaW5nUmVnaW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX25hbWUpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBBU1NFUlQo
Yml0d2lzZV9jYXN0PFNhbXBsaW5nUmVnaW9uKj4oc19jdXJyZW50T3JSZXNlcnZlZCAmIH4xKSA9
PSB0aGlzKTsKLSAgICAgICAgICAgIGV4Y2hhbmdlQ3VycmVudChtX3ByZXZpb3VzKTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgc3RhdGljIHZvaWQgc2FtcGxlKCk7Ci0gICAgICAgIAot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkdW1wKCk7Ci0gICAgICAgIAot
ICAgIHByaXZhdGU6Ci0gICAgICAgIGNvbnN0IGNoYXIqIG1fbmFtZTsKLSAgICAgICAgU2FtcGxp
bmdSZWdpb24qIG1fcHJldmlvdXM7Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgZXhjaGFuZ2VDdXJy
ZW50KFNhbXBsaW5nUmVnaW9uKiBjdXJyZW50LCBTYW1wbGluZ1JlZ2lvbioqIHByZXZpb3VzUHRy
ID0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgdWludHB0cl90IHByZXZpb3VzOwotICAgICAg
ICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91cyA9IHNfY3VycmVu
dE9yUmVzZXJ2ZWQ7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gSWYgaXQn
cyByZXNlcnZlZCAoaS5lLiBzYW1wbGluZyB0aHJlYWQgaXMgcmVhZGluZyBpdCksIGxvb3AgYXJv
dW5kLgotICAgICAgICAgICAgICAgIGlmIChwcmV2aW91cyAmIDEpIHsKLSNpZiBPUyhVTklYKQot
ICAgICAgICAgICAgICAgICAgICBzY2hlZF95aWVsZCgpOwotI2VuZGlmCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBnb2luZyB0byBDQVMsIHRoZW4gbWFrZSBzdXJlIHBy
ZXZpb3VzIGlzIHNldC4KLSAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNQdHIpCi0gICAgICAg
ICAgICAgICAgICAgICpwcmV2aW91c1B0ciA9IGJpdHdpc2VfY2FzdDxTYW1wbGluZ1JlZ2lvbio+
KHByZXZpb3VzKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoV1RGOjp3
ZWFrQ29tcGFyZUFuZFN3YXBVSW50UHRyKCZzX2N1cnJlbnRPclJlc2VydmVkLCBwcmV2aW91cywg
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY3VycmVudCkpKQotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3RhdGlj
IHZvaWQgZHVtcEludGVybmFsKCk7Ci0KLSAgICAgICAgY2xhc3MgTG9ja2VyIHsKLSAgICAgICAg
cHVibGljOgotICAgICAgICAgICAgTG9ja2VyKCk7Ci0gICAgICAgICAgICB+TG9ja2VyKCk7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIHZvbGF0aWxlIHVpbnRwdHJfdCBzX2N1cnJlbnRP
clJlc2VydmVkOwotICAgICAgICAKLSAgICAgICAgLy8gcmVseSBvbiBpZGVudGl0eSBoYXNoaW5n
IG9mIHN0cmluZyBjb25zdGFudHMKLSAgICAgICAgc3RhdGljIFNwZWN0cnVtPGNvbnN0IGNoYXIq
Piogc19zcGVjdHJ1bTsKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIHNf
bm9uZU9mVGhlQWJvdmU7Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgdW5zaWduZWQgc19udW1i
ZXJPZlNhbXBsZXNTaW5jZUR1bXA7Ci0gICAgfTsKLSNlbHNlIC8vIEVOQUJMRShTQU1QTElOR19S
RUdJT05TKQotICAgIGNsYXNzIFNhbXBsaW5nUmVnaW9uIHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IFNhbXBsaW5nUmVnaW9uKGNvbnN0IGNoYXIqKSB7IH0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBkdW1wKCk7Ci0gICAgfTsKLSNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUkVHSU9O
UykKLQotICAgIGNsYXNzIENvZGVCbG9jazsKLSAgICBjbGFzcyBFeGVjU3RhdGU7Ci0gICAgY2xh
c3MgSW50ZXJwcmV0ZXI7Ci0gICAgY2xhc3MgU2NvcGVOb2RlOwotICAgIHN0cnVjdCBJbnN0cnVj
dGlvbjsKLQotICAgIHN0cnVjdCBTY3JpcHRTYW1wbGVSZWNvcmQgewotICAgICAgICBTY3JpcHRT
YW1wbGVSZWNvcmQoVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlKQotICAgICAg
ICAgICAgOiBtX2V4ZWN1dGFibGUodm0sIGV4ZWN1dGFibGUpCi0gICAgICAgICAgICAsIG1fY29k
ZUJsb2NrKDApCi0gICAgICAgICAgICAsIG1fc2FtcGxlQ291bnQoMCkKLSAgICAgICAgICAgICwg
bV9vcGNvZGVTYW1wbGVDb3VudCgwKQotICAgICAgICAgICAgLCBtX3NhbXBsZXMoMCkKLSAgICAg
ICAgICAgICwgbV9zaXplKDApCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgflNjcmlwdFNhbXBsZVJlY29yZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3Nh
bXBsZXMpCi0gICAgICAgICAgICAgICAgZnJlZShtX3NhbXBsZXMpOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICB2b2lkIHNhbXBsZShDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiopOwotCi0g
ICAgICAgIFN0cm9uZzxTY3JpcHRFeGVjdXRhYmxlPiBtX2V4ZWN1dGFibGU7Ci0gICAgICAgIENv
ZGVCbG9jayogbV9jb2RlQmxvY2s7Ci0gICAgICAgIGludCBtX3NhbXBsZUNvdW50OwotICAgICAg
ICBpbnQgbV9vcGNvZGVTYW1wbGVDb3VudDsKLSAgICAgICAgaW50KiBtX3NhbXBsZXM7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fc2l6ZTsKLSAgICB9OwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPFNjcmlw
dEV4ZWN1dGFibGUqLCBzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0U2FtcGxlUmVjb3JkPj4gU2NyaXB0
U2FtcGxlUmVjb3JkTWFwOwotCi0gICAgY2xhc3MgU2FtcGxpbmdUaHJlYWQgewotICAgIHB1Ymxp
YzoKLSAgICAgICAgLy8gU2FtcGxpbmcgdGhyZWFkIHN0YXRlLgotICAgICAgICBzdGF0aWMgYm9v
bCBzX3J1bm5pbmc7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBzX2hlcnR6OwotICAgICAgICBz
dGF0aWMgVGhyZWFkSWRlbnRpZmllciBzX3NhbXBsaW5nVGhyZWFkOwotCi0gICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHN0YXJ0KHVuc2lnbmVkIGhlcnR6PTEwMDAwKTsKLSAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc3RvcCgpOwotCi0gICAgICAgIHN0
YXRpYyB2b2lkIHRocmVhZFN0YXJ0RnVuYyh2b2lkKik7Ci0gICAgfTsKLQotICAgIGNsYXNzIFNh
bXBsaW5nVG9vbCB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1Ymxp
YzoKLSAgICAgICAgZnJpZW5kIHN0cnVjdCBDYWxsUmVjb3JkOwotICAgICAgICAKLSNpZiBFTkFC
TEUoT1BDT0RFX1NBTVBMSU5HKQotICAgICAgICBjbGFzcyBDYWxsUmVjb3JkIHsKLSAgICAgICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhbGxSZWNvcmQpOwotICAgICAgICBwdWJsaWM6Ci0g
ICAgICAgICAgICBDYWxsUmVjb3JkKFNhbXBsaW5nVG9vbCogc2FtcGxpbmdUb29sLCBib29sIGlz
SG9zdENhbGwgPSBmYWxzZSkKLSAgICAgICAgICAgICAgICA6IG1fc2FtcGxpbmdUb29sKHNhbXBs
aW5nVG9vbCkKLSAgICAgICAgICAgICAgICAsIG1fc2F2ZWRTYW1wbGUoc2FtcGxpbmdUb29sLT5t
X3NhbXBsZSkKLSAgICAgICAgICAgICAgICAsIG1fc2F2ZWRDb2RlQmxvY2soc2FtcGxpbmdUb29s
LT5tX2NvZGVCbG9jaykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNIb3N0
Y2FsbCkKLSAgICAgICAgICAgICAgICAgICAgc2FtcGxpbmdUb29sLT5tX3NhbXBsZSB8PSAweDE7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIH5DYWxsUmVjb3JkKCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBtX3NhbXBsaW5nVG9vbC0+bV9zYW1wbGUgPSBtX3NhdmVkU2Ft
cGxlOwotICAgICAgICAgICAgICAgIG1fc2FtcGxpbmdUb29sLT5tX2NvZGVCbG9jayA9IG1fc2F2
ZWRDb2RlQmxvY2s7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAg
ICAgIFNhbXBsaW5nVG9vbCogbV9zYW1wbGluZ1Rvb2w7Ci0gICAgICAgICAgICBpbnRwdHJfdCBt
X3NhdmVkU2FtcGxlOwotICAgICAgICAgICAgQ29kZUJsb2NrKiBtX3NhdmVkQ29kZUJsb2NrOwot
ICAgICAgICB9OwotI2Vsc2UKLSAgICAgICAgY2xhc3MgQ2FsbFJlY29yZCB7Ci0gICAgICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDYWxsUmVjb3JkKTsKLSAgICAgICAgcHVibGljOgotICAg
ICAgICAgICAgQ2FsbFJlY29yZChTYW1wbGluZ1Rvb2wqLCBib29sID0gZmFsc2UpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0jZW5kaWYKLQotICAgICAgICBTYW1w
bGluZ1Rvb2woSW50ZXJwcmV0ZXIqIGludGVycHJldGVyKQotICAgICAgICAgICAgOiBtX2ludGVy
cHJldGVyKGludGVycHJldGVyKQotICAgICAgICAgICAgLCBtX2NvZGVCbG9jaygwKQotICAgICAg
ICAgICAgLCBtX3NhbXBsZSgwKQotICAgICAgICAgICAgLCBtX3NhbXBsZUNvdW50KDApCi0gICAg
ICAgICAgICAsIG1fb3Bjb2RlU2FtcGxlQ291bnQoMCkKLSNpZiBFTkFCTEUoQ09ERUJMT0NLX1NB
TVBMSU5HKQotICAgICAgICAgICAgLCBtX3Njb3BlU2FtcGxlTWFwKHN0ZDo6bWFrZV91bmlxdWU8
U2NyaXB0U2FtcGxlUmVjb3JkTWFwPikKLSNlbmRpZgotICAgICAgICB7Ci0gICAgICAgICAgICBt
ZW1zZXQobV9vcGNvZGVTYW1wbGVzLCAwLCBzaXplb2YobV9vcGNvZGVTYW1wbGVzKSk7Ci0gICAg
ICAgICAgICBtZW1zZXQobV9vcGNvZGVTYW1wbGVzSW5DVElGdW5jdGlvbnMsIDAsIHNpemVvZiht
X29wY29kZVNhbXBsZXNJbkNUSUZ1bmN0aW9ucykpOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzZXR1cCgpOwotICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRl
Kik7Ci0KLSAgICAgICAgdm9pZCBub3RpZnlPZlNjb3BlKFZNJiwgU2NyaXB0RXhlY3V0YWJsZSog
c2NvcGUpOwotCi0gICAgICAgIHZvaWQgc2FtcGxlKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0
cnVjdGlvbiogdlBDKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIShyZWludGVycHJl
dF9jYXN0PGludHB0cl90Pih2UEMpICYgMHgzKSk7Ci0gICAgICAgICAgICBtX2NvZGVCbG9jayA9
IGNvZGVCbG9jazsKLSAgICAgICAgICAgIG1fc2FtcGxlID0gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4odlBDKTsKLSAgICAgICAgfQotCi0gICAgICAgIENvZGVCbG9jayoqIGNvZGVCbG9ja1Ns
b3QoKSB7IHJldHVybiAmbV9jb2RlQmxvY2s7IH0KLSAgICAgICAgaW50cHRyX3QqIHNhbXBsZVNs
b3QoKSB7IHJldHVybiAmbV9zYW1wbGU7IH0KLQotICAgICAgICB2b2lkKiBlbmNvZGVTYW1wbGUo
SW5zdHJ1Y3Rpb24qIHZQQywgYm9vbCBpbkNUSUZ1bmN0aW9uID0gZmFsc2UsIGJvb2wgaW5Ib3N0
RnVuY3Rpb24gPSBmYWxzZSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCEocmVpbnRl
cnByZXRfY2FzdDxpbnRwdHJfdD4odlBDKSAmIDB4MykpOwotICAgICAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHZQQykgfCAo
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluQ1RJRnVuY3Rpb24pIDw8IDEpIHwgc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KGluSG9zdEZ1bmN0aW9uKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMg
dm9pZCBzYW1wbGUoKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGNsYXNzIFNhbXBsZSB7Ci0g
ICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIFNhbXBsZSh2b2xhdGlsZSBpbnRwdHJfdCBzYW1w
bGUsIENvZGVCbG9jayogdm9sYXRpbGUgY29kZUJsb2NrKQotICAgICAgICAgICAgICAgIDogbV9z
YW1wbGUoc2FtcGxlKQotICAgICAgICAgICAgICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBi
b29sIGlzTnVsbCgpIHsgcmV0dXJuICFtX3NhbXBsZTsgfQotICAgICAgICAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2soKSB7IHJldHVybiBtX2NvZGVCbG9jazsgfQotICAgICAgICAgICAgSW5zdHJ1
Y3Rpb24qIHZQQygpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb24qPihtX3Nh
bXBsZSAmIH4weDMpOyB9Ci0gICAgICAgICAgICBib29sIGluSG9zdEZ1bmN0aW9uKCkgeyByZXR1
cm4gbV9zYW1wbGUgJiAweDE7IH0KLSAgICAgICAgICAgIGJvb2wgaW5DVElGdW5jdGlvbigpIHsg
cmV0dXJuIG1fc2FtcGxlICYgMHgyOyB9Ci0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAg
IGludHB0cl90IG1fc2FtcGxlOwotICAgICAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsK
LSAgICAgICAgfTsKLQotICAgICAgICB2b2lkIGRvUnVuKCk7Ci0gICAgICAgIHN0YXRpYyBTYW1w
bGluZ1Rvb2wqIHNfc2FtcGxpbmdUb29sOwotICAgICAgICAKLSAgICAgICAgSW50ZXJwcmV0ZXIq
IG1faW50ZXJwcmV0ZXI7Ci0gICAgICAgIAotICAgICAgICAvLyBTdGF0ZSB0cmFja2VkIGJ5IHRo
ZSBtYWluIHRocmVhZCwgdXNlZCBieSB0aGUgc2FtcGxpbmcgdGhyZWFkLgotICAgICAgICBDb2Rl
QmxvY2sqIG1fY29kZUJsb2NrOwotICAgICAgICBpbnRwdHJfdCBtX3NhbXBsZTsKLQotICAgICAg
ICAvLyBHYXRoZXJlZCBzYW1wbGUgZGF0YS4KLSAgICAgICAgbG9uZyBsb25nIG1fc2FtcGxlQ291
bnQ7Ci0gICAgICAgIGxvbmcgbG9uZyBtX29wY29kZVNhbXBsZUNvdW50OwotICAgICAgICB1bnNp
Z25lZCBtX29wY29kZVNhbXBsZXNbbnVtT3Bjb2RlSURzXTsKLSAgICAgICAgdW5zaWduZWQgbV9v
cGNvZGVTYW1wbGVzSW5DVElGdW5jdGlvbnNbbnVtT3Bjb2RlSURzXTsKLSAgICAgICAgCi0jaWYg
RU5BQkxFKENPREVCTE9DS19TQU1QTElORykKLSAgICAgICAgTG9jayBtX3NjcmlwdFNhbXBsZU1h
cE11dGV4OwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0U2FtcGxlUmVjb3JkTWFwPiBt
X3Njb3BlU2FtcGxlTWFwOwotI2VuZGlmCi0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0K
LSNlbmRpZiAvLyBTYW1wbGluZ1Rvb2xfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKKworI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKK3ZvbGF0aWxlIHVpbnQzMl90IGdfc3VwZXJTYW1wbGVyQ291bnQ7CisKK3N0
YXRpYyBkb3VibGUgaW47CitzdGF0aWMgZG91YmxlIG91dDsKKwordm9pZCBpbml0aWFsaXplU3Vw
ZXJTYW1wbGVyKCkKK3sKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVN1cGVyU2FtcGxlcigpKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgY3JlYXRlVGhyZWFkKAorICAgICAgICAiSlNDIFN1cGVy
IFNhbXBsZXIiLAorICAgICAgICBbXSAoKSB7CisgICAgICAgICAgICBjb25zdCBpbnQgc2xlZXBR
dWFudHVtID0gMTA7CisgICAgICAgICAgICBjb25zdCBpbnQgcHJpbnRpbmdQZXJpb2QgPSAxMDAw
OworICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgIGZvciAoaW50IG1zID0g
MDsgbXMgPCBwcmludGluZ1BlcmlvZDsgbXMgKz0gc2xlZXBRdWFudHVtKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChnX3N1cGVyU2FtcGxlckNvdW50KQorICAgICAgICAgICAgICAgICAgICAg
ICAgaW4rKzsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0Kys7CisgICAgICAgICAgICAgICAgICAgIHNsZWVwTVMoc2xlZXBRdWFudHVtKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHJpbnRTdXBlclNhbXBsZXJTdGF0ZSgp
OworICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihnX3N1cGVyU2FtcGxl
ckNvdW50KSA8IDApCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIldBUk5JTkc6IFN1cGVy
IHNhbXBsZXIgdW5kZXJjb3VudCBkZXRlY3RlZCFcbiIpOworICAgICAgICAgICAgfQorICAgICAg
ICB9KTsKK30KKwordm9pZCBwcmludFN1cGVyU2FtcGxlclN0YXRlKCkKK3sKKyAgICBpZiAoIU9w
dGlvbnM6OnVzZVN1cGVyU2FtcGxlcigpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZG91
YmxlIHBlcmNlbnRhZ2UgPSAxMDAuMCAqIGluIC8gKGluICsgb3V0KTsKKyAgICBpZiAocGVyY2Vu
dGFnZSAhPSBwZXJjZW50YWdlKQorICAgICAgICBwZXJjZW50YWdlID0gMC4wOworICAgIGRhdGFM
b2coIlBlcmNlbnQgdGltZSBiZWhpbmQgc3VwZXIgc2FtcGxlciBmbGFnOiAiLCBwZXJjZW50YWdl
LCAiXG4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIFN1cGVyU2FtcGxlcl9oCisjZGVmaW5lIFN1cGVyU2FtcGxlcl9oCisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBNYWNyb0Fzc2VtYmxlcjsKKworZXh0ZXJuIHZvbGF0
aWxlIHVpbnQzMl90IGdfc3VwZXJTYW1wbGVyQ291bnQ7CisKK3ZvaWQgaW5pdGlhbGl6ZVN1cGVy
U2FtcGxlcigpOworCitjbGFzcyBTdXBlclNhbXBsZXJTY29wZSB7CitwdWJsaWM6CisgICAgU3Vw
ZXJTYW1wbGVyU2NvcGUoYm9vbCBkb1NhbXBsZSA9IHRydWUpCisgICAgICAgIDogbV9kb1NhbXBs
ZShkb1NhbXBsZSkKKyAgICB7CisgICAgICAgIGlmIChtX2RvU2FtcGxlKQorICAgICAgICAgICAg
Z19zdXBlclNhbXBsZXJDb3VudCsrOworICAgIH0KKworICAgIH5TdXBlclNhbXBsZXJTY29wZSgp
CisgICAgeworICAgICAgICBpZiAobV9kb1NhbXBsZSkKKyAgICAgICAgICAgIGdfc3VwZXJTYW1w
bGVyQ291bnQtLTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2RvU2FtcGxlOworfTsK
KworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludFN1cGVyU2FtcGxlclN0YXRlKCk7CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gU3VwZXJTYW1wbGVyX2gKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw4
ICs2Myw2IEBAIHZvaWQgTGFiZWw6OnNldExvY2F0aW9uKHVuc2lnbmVkIGxvY2F0aW8KIAogUGFy
c2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKIHsKLSAgICBTYW1wbGluZ1Jl
Z2lvbiBzYW1wbGluZ1JlZ2lvbigiQnl0ZWNvZGUgR2VuZXJhdGlvbiIpOwotCiAgICAgbV9jb2Rl
QmxvY2stPnNldFRoaXNSZWdpc3RlcihtX3RoaXNSZWdpc3Rlci52aXJ0dWFsUmVnaXN0ZXIoKSk7
CiAgICAgCiAgICAgLy8gSWYgd2UgaGF2ZSBkZWNsYXJlZCBhIHZhcmlhYmxlIG5hbWVkICJhcmd1
bWVudHMiIGFuZCB3ZSBhcmUgdXNpbmcgYXJndW1lbnRzIHRoZW4gd2Ugc2hvdWxkCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAKICNp
bmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAj
aW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCi0jaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5j
bHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJUZW1wbGF0ZVJlZ2lzdHJ5S2V5Lmgi
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxNiw3ICsyNzE2LDYgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmZvckFsbFZhbHVlcygKICAgICB1bnNpZ25lZCBjbG9iYmVyTGltaXQs
IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24o
IkRGRyBBSSBGb3IgQWxsIFZhbHVlcyIpOwogICAgIGlmIChjbG9iYmVyTGltaXQgPj0gbV9zdGF0
ZS5ibG9jaygpLT5zaXplKCkpCiAgICAgICAgIGNsb2JiZXJMaW1pdCA9IG1fc3RhdGUuYmxvY2so
KS0+c2l6ZSgpOwogICAgIGVsc2UKQEAgLTI3MzksNyArMjczOCw2IEBAIHZvaWQgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3Rh
dGVUeXBlPgogdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6Y2xv
YmJlclN0cnVjdHVyZXModW5zaWduZWQgY2xvYmJlckxpbWl0KQogewotICAgIFNhbXBsaW5nUmVn
aW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQUkgQ2xvYmJlciBTdHJ1Y3R1cmVzIik7CiAgICAgZm9y
QWxsVmFsdWVzKGNsb2JiZXJMaW1pdCwgQWJzdHJhY3RWYWx1ZTo6Y2xvYmJlclN0cnVjdHVyZXNG
b3IpOwogICAgIHNldERpZENsb2JiZXIoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNFbGltaW5hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjc4LDcgKzY3OCw2IEBA
IHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybUFyZ3VtZW50c0VsaW1pbmF0aW9uKEdyYXBoJiBncmFw
aCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIEFyZ3VtZW50cyBF
bGltaW5hdGlvbiBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxBcmd1bWVudHNFbGltaW5h
dGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9w
YWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI2LDcgKzQyNiw2IEBAIHByaXZh
dGU6CiAKIGJvb2wgcGVyZm9ybUJhY2t3YXJkc1Byb3BhZ2F0aW9uKEdyYXBoJiBncmFwaCkKIHsK
LSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIEJhY2t3YXJkcyBQcm9wYWdh
dGlvbiBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxCYWNrd2FyZHNQcm9wYWdhdGlvblBo
YXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA4
MCw3ICs1MDgwLDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogCiBib29sIHBhcnNl
KEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZH
IFBhcnNpbmciKTsKICAgICByZXR1cm4gQnl0ZUNvZGVQYXJzZXIoZ3JhcGgpLnBhcnNlKCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCShyZXZp
c2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDcgKzIwNCw2IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVy
Zm9ybUNGQShHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdp
b24oIkRGRyBDRkEgUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8Q0ZBUGhhc2U+KGdyYXBo
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNh
dGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zODAsNyArMzgwLDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtQ0ZHU2lt
cGxpZmljYXRpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5n
UmVnaW9uKCJERkcgQ0ZHIFNpbXBsaWZpY2F0aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBo
YXNlPENGR1NpbXBsaWZpY2F0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShy
ZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhy
ZWFkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw4ICs3Miw2IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgdm9pZCBmcmVlVW5uZWNlc3NhcnlOb2RlcygpCiAgICAgewotICAgICAgICBT
YW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENQUyBSZXRocmVhZGluZzogZnJlZVVu
bmVjZXNzYXJ5Tm9kZXMiKTsKLSAgICAgICAgCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9j
a0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewogICAgICAgICAg
ICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAg
ICAgICAgaWYgKCFibG9jaykKQEAgLTM2MSw4ICszNTksNiBAQCBwcml2YXRlOgogICAgIAogICAg
IHZvaWQgY2Fub25pY2FsaXplTG9jYWxzSW5CbG9ja3MoKQogICAgIHsKLSAgICAgICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBDUFMgUmV0aHJlYWRpbmc6IGNhbm9uaWNhbGl6
ZUxvY2Fsc0luQmxvY2tzIik7Ci0gICAgICAgIAogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxv
Y2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKICAgICAgICAg
ICAgIG1fYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgY2Fu
b25pY2FsaXplTG9jYWxzSW5CbG9jaygpOwpAQCAtMzg0LDggKzM4MCw2IEBAIHByaXZhdGU6CiAg
ICAgewogICAgICAgICBWZWN0b3I8UGhpU3RhY2tFbnRyeSwgMTI4PiYgcGhpU3RhY2sgPSBvcGVy
YW5kS2luZCA9PSBBcmd1bWVudE9wZXJhbmQgPyBtX2FyZ3VtZW50UGhpU3RhY2sgOiBtX2xvY2Fs
UGhpU3RhY2s7CiAgICAgICAgIAotICAgICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lv
bigiREZHIENQUyBSZXRocmVhZGluZzogcHJvcGFnYXRlUGhpcyIpOwotICAgICAgICAKICAgICAg
ICAgLy8gRW5zdXJlIHRoYXQgYXR0ZW1wdHMgdG8gdXNlIHRoaXMgZmFpbCBpbnN0YW50bHkuCiAg
ICAgICAgIG1fYmxvY2sgPSAwOwogICAgICAgICAKQEAgLTUyMCw3ICs1MTQsNiBAQCBwcml2YXRl
OgogCiBib29sIHBlcmZvcm1DUFNSZXRocmVhZGluZyhHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBDUFMgUmV0aHJlYWRpbmcgUGhhc2UiKTsK
ICAgICByZXR1cm4gcnVuUGhhc2U8Q1BTUmV0aHJlYWRpbmdQaGFzZT4oZ3JhcGgpOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24g
MTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcwMSwxMyArNzAxLDExIEBAIHB1YmxpYzoKIAogYm9vbCBwZXJmb3Jt
TG9jYWxDU0UoR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVn
aW9uKCJERkcgTG9jYWxDU0UgUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8TG9jYWxDU0VQ
aGFzZT4oZ3JhcGgpOwogfQogCiBib29sIHBlcmZvcm1HbG9iYWxDU0UoR3JhcGgmIGdyYXBoKQog
ewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgR2xvYmFsQ1NFIFBoYXNl
Iik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPEdsb2JhbENTRVBoYXNlPihncmFwaCk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5jcHAJKHJl
dmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNiBAQCBwdWJsaWM6CiAgICAgCiBi
b29sIHBlcmZvcm1DbGVhblVwKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbigiREZHIENsZWFuIFVwIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNl
PENsZWFuVXBQaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTk4
MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyNCw3ICs4MjQsNiBAQCBwcml2YXRlOgogCiBib29s
IHBlcmZvcm1Db25zdGFudEZvbGRpbmcoR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVn
aW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQ29uc3RhbnQgRm9sZGluZyBQaGFzZSIpOwogICAgIHJl
dHVybiBydW5QaGFzZTxDb25zdGFudEZvbGRpbmdQaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50SG9pc3RpbmdQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEhvaXN0aW5n
UGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50SG9pc3RpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsx
MzksNiBAQCBwdWJsaWM6CiAgICAgCiBib29sIHBlcmZvcm1Db25zdGFudEhvaXN0aW5nKEdyYXBo
JiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENvbnN0
YW50IEhvaXN0aW5nIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPENvbnN0YW50SG9pc3Rp
bmdQaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAJKHJldmlzaW9u
IDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdlQnJl
YWtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDYgQEAgcHJpdmF0ZToK
IAogYm9vbCBwZXJmb3JtQ3JpdGljYWxFZGdlQnJlYWtpbmcoR3JhcGgmIGdyYXBoKQogewotICAg
IFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQ3JpdGljYWwgRWRnZSBCcmVha2lu
ZyBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNl
PihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhh
c2UuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw2IEBAIHByaXZhdGU6
CiAKIGJvb2wgcGVyZm9ybURDRShHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24g
c2FtcGxpbmdSZWdpb24oIkRGRyBEQ0UgUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8RENF
UGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
cml2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJp
dmVyLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEcml2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAi
SklUQ29kZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPcHRpb25zLmgi
Ci0jaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgi
CiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KIApAQCAtNjEsOCArNjAsNiBAQCBzdGF0aWMgQ29t
cGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgdW5zaWduZWQgb3NyRW50cnlCeXRlY29k
ZUluZGV4LCBjb25zdCBPcGVyYW5kczxKU1ZhbHVlPiYgbXVzdEhhbmRsZVZhbHVlcywKICAgICBQ
YXNzUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4gY2FsbGJhY2spCiB7Ci0gICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBDb21waWxhdGlvbiAoRHJpdmVyKSIp
OwotICAgIAogICAgIGlmICghT3B0aW9uczo6Ynl0ZWNvZGVSYW5nZVRvREZHQ29tcGlsZSgpLmlz
SW5SYW5nZShjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSkKICAgICAgICAgfHwgIUZ1bmN0
aW9uV2hpdGVsaXN0OjplbnN1cmVHbG9iYWxXaGl0ZWxpc3QoKS5jb250YWlucyhjb2RlQmxvY2sp
KQogICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25GYWlsZWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0NDYsNyArMjQ0Niw2IEBAIHByaXZhdGU6CiAgICAgCiBib29sIHBlcmZvcm1GaXh1cChH
cmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBG
aXh1cCBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxGaXh1cFBoYXNlPihncmFwaCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAx
OTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTY4LDggKzU2OCw2IEBAIHZvaWQgR3JhcGg6OmRldGhyZWFkKCkKICAgICBp
ZiAobG9nQ29tcGlsYXRpb25DaGFuZ2VzKCkpCiAgICAgICAgIGRhdGFMb2coIkRldGhyZWFkaW5n
IERGRyBncmFwaC5cbiIpOwogICAgIAotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9u
KCJERkcgRGV0aHJlYWRpbmciKTsKLSAgICAKICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRl
eCA9IG1fYmxvY2tzLnNpemUoKTsgYmxvY2tJbmRleC0tOykgewogICAgICAgICBCYXNpY0Jsb2Nr
KiBibG9jayA9IG1fYmxvY2tzW2Jsb2NrSW5kZXhdLmdldCgpOwogICAgICAgICBpZiAoIWJsb2Nr
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5p
bmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
bnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOTEsNyArMzkxLDYgQEAgcHJpdmF0ZToKICAgICAKIGJvb2wgcGVy
Zm9ybUludGVnZXJDaGVja0NvbWJpbmluZyhHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBJbnRlZ2VyIENoZWNrIENvbWJpbmluZyBQaGFzZSIp
OwogICAgIHJldHVybiBydW5QaGFzZTxJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZT4oZ3JhcGgp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9w
dGltaXphdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzAx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NzAsNyArMTc3MCw2IEBAIHByaXZhdGU6
CiAKIGJvb2wgcGVyZm9ybUludGVnZXJSYW5nZU9wdGltaXphdGlvbihHcmFwaCYgZ3JhcGgpCiB7
Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBJbnRlZ2VyIFJhbmdlIE9w
dGltaXphdGlvbiBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxJbnRlZ2VyUmFuZ2VPcHRp
bWl6YXRpb25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMSw3ICsxMDEsNiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1JbnZhbGlkYXRpb25Qb2lu
dEluamVjdGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdS
ZWdpb24oIkRGRyBJbnZhbGlkYXRpb24gUG9pbnQgSW5qZWN0aW9uIFBoYXNlIik7CiAgICAgcmV0
dXJuIHJ1blBoYXNlPEludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2U+KGdyYXBoKTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJ
KHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsOCArMzI2LDYgQEAgdm9pZCBKSVRDb21w
aWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxl
KCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIEJhY2tlbmQiKTsK
LQogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAgICAgbV9zcGVj
dWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKQEAgLTM4
Nyw4ICszODUsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIAogdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1Jl
Z2lvbigiREZHIEJhY2tlbmQiKTsKLSAgICAKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNv
bXBpbGVFbnRyeSgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNN
UGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xJQ01QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MSw3ICszNjEsNiBAQCBwcml2
YXRlOgogCiBib29sIHBlcmZvcm1MSUNNKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1Jl
Z2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIExJQ00gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhh
c2U8TElDTVBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZh
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTY1LDcgKzE2NSw2IEBAIHB1YmxpYzoKIAogYm9vbCBwZXJmb3JtTGl2ZUNhdGNo
VmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZShHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBMaXZlIENhdGNoIFZhcmlhYmxlcyBQcmVzZXJ2YXRp
b24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8TGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2
YXRpb25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgz
MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNiBAQCBwcml2YXRlOgogCiBib29s
IHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1Jl
Z2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIExpdmVuZXNzIEFuYWx5c2lzIFBoYXNlIik7CiAgICAg
cmV0dXJuIHJ1blBoYXNlPExpdmVuZXNzQW5hbHlzaXNQaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVI
ZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4Myw3ICsxODMsNiBAQCBwdWJsaWM6CiAKIGJvb2wgcGVyZm9ybUxvb3BQcmVI
ZWFkZXJDcmVhdGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxp
bmdSZWdpb24oIkRGRyBMb29wIFByZS1IZWFkZXIgQ3JlYXRpb24gUGhhc2UiKTsKICAgICByZXR1
cm4gcnVuUGhhc2U8TG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFs
Rmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTAsNyArMTUwLDYgQEAgcHVibGljOgogCiBib29sIHBlcmZvcm1NYXhpbWFs
Rmx1c2hJbnNlcnRpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKCJERkcgRmx1c2ggRXZlcnl0aGluZyBJbnNlcnRpb24gUGhhc2UiKTsKICAgICBy
ZXR1cm4gcnVuUGhhc2U8TWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01vdkhpbnRSZW1v
dmFsUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyAr
MTM2LDYgQEAgcHJpdmF0ZToKICAgICAKIGJvb2wgcGVyZm9ybU1vdkhpbnRSZW1vdmFsKEdyYXBo
JiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIE1vdkhp
bnQgUmVtb3ZhbCBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxNb3ZIaW50UmVtb3ZhbFBo
YXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
QXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAkocmV2aXNp
b24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxp
dHlBbmFseXNpc1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw2IEBAIHB1
YmxpYzoKIAogYm9vbCBwZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMoR3JhcGgmIGdyYXBo
KQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgT1NSIEF2YWlsYWJp
bGl0eSBBbmFseXNpcyBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxPU1JBdmFpbGFiaWxp
dHlBbmFseXNpc1BoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw2
IEBAIHB1YmxpYzoKIAogYm9vbCBwZXJmb3JtT1NSRW50cnlwb2ludENyZWF0aW9uKEdyYXBoJiBn
cmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIE9TUiBFbnRy
eXBvaW50IENyZWF0aW9uIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPE9TUkVudHJ5cG9pbnRDcmVh
dGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEyLDggKzExMiw2IEBAIGV4dGVybiAiQyIgewogCiB2b2lkIGNvbXBpbGVPU1JFeGl0
KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigi
REZHIE9TUiBFeGl0IENvbXBpbGF0aW9uIik7Ci0KICAgICBpZiAoZXhlYy0+dm0oKS5jYWxsRnJh
bWVGb3JDYXRjaCkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5jYWxsRnJhbWVG
b3JDYXRjaCA9PSBleGVjKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAko
cmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RB
bGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxMSw3ICsyMjEx
LDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtT2JqZWN0QWxsb2NhdGlvblNpbmtpbmcoR3Jh
cGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgT2Jq
ZWN0IEFsbG9jYXRpb24gU2lua2luZyBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIlJlcGF0Y2guaCIKICNpbmNsdWRlICJTY29w
ZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUg
IlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlN5bWJvbC5oIgogI2luY2x1ZGUgIlR5cGVQcm9m
aWxlckxvZy5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlJbmxpbmVzLmgiCkBAIC02MjEsNiArNjIy
LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcgogICAgICAgICAK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlY1N0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZ0V4cE9iamVj
dCogcmVnRXhwT2JqZWN0LCBKU1N0cmluZyogYXJndW1lbnQpCiB7CisgICAgU3VwZXJTYW1wbGVy
U2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIAogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhl
Yyk7CiAgICAgCkBAIC02MjksNiArNjMyLDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25SZQogICAgICAgICAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUmVnRXhwRXhlYyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QXJndW1lbnQpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOworICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgCkBAIC02NDIsNiArNjQ3LDgg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZQogICAgICAgICAKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQogeworICAgIFN1
cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICAKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOwogCkBAIC02NTksNiArNjY2LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25SZQogICAgICAgICAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblJlZ0V4cFRlc3RTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCwgSlNTdHJpbmcqIGlucHV0KQog
eworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICAK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCkBAIC02NjcsNiArNjc2LDggQEAgc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdAogCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25SZWdFeHBUZXN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRB
cmd1bWVudCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxz
ZSk7CisgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIApAQCAtNjgwLDYgKzY5MSw4IEBAIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QKIAogc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQogeworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVy
U2FtcGxlclNjb3BlOworICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21JbnNlcnRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGhhbnRvbUluc2VydGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw2
IEBAIHByaXZhdGU6CiAgICAgCiBib29sIHBlcmZvcm1QaGFudG9tSW5zZXJ0aW9uKEdyYXBoJiBn
cmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFBoYW50b20g
SW5zZXJ0aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFBoYW50b21JbnNlcnRpb25Q
aGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bs
YW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5j
cHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxh
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3ICsxNzQsNiBAQCB2b2lkIFBsYW46OmNvbXBp
bGVJblRocmVhZChMb25nTGl2ZWRTdGF0CiAgICAgaWYgKHJlcG9ydENvbXBpbGVUaW1lcygpKQog
ICAgICAgICBjb2RlQmxvY2tOYW1lID0gdG9DU3RyaW5nKCpjb2RlQmxvY2spOwogICAgIAotICAg
IFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQ29tcGlsYXRpb24gKFBsYW4pIik7
CiAgICAgQ29tcGlsYXRpb25TY29wZSBjb21waWxhdGlvblNjb3BlOwogCiAgICAgaWYgKGxvZ0Nv
bXBpbGF0aW9uQ2hhbmdlcyhtb2RlKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVj
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNiBAQCBwdWJsaWM6CiAK
IGJvb2wgcGVyZm9ybVByZWRpY3Rpb25JbmplY3Rpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgUHJlZGljdGlvbiBJbmplY3Rpb24gUGhh
c2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8UHJlZGljdGlvbkluamVjdGlvblBoYXNlPihncmFw
aCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxNiw3ICsxMDE2LDYgQEAgcHJpdmF0ZToKICAgICAK
IGJvb2wgcGVyZm9ybVByZWRpY3Rpb25Qcm9wYWdhdGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBQcmVkaWN0aW9uIFByb3BhZ2F0aW9u
IFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
PihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3Rh
Y2tTaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgzLDcgKzU4Myw2IEBAIHB1YmxpYzoKICAgICAKIGJvb2wgcGVyZm9ybVB1
dFN0YWNrU2lua2luZyhHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxp
bmdSZWdpb24oIkRGRyBQdXRTdGFjayBTaW5raW5nIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBo
YXNlPFB1dFN0YWNrU2lua2luZ1BoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE2LDcgKzQxNiw2IEBAIHByaXZhdGU6CiAK
IGJvb2wgcGVyZm9ybVNTQUNvbnZlcnNpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgU1NBIENvbnZlcnNpb24gUGhhc2UiKTsKICAgICBy
ZXR1cm4gcnVuUGhhc2U8U1NBQ29udmVyc2lvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAko
cmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dl
cmluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw2IEBAIHByaXZhdGU6
CiAKIGJvb2wgcGVyZm9ybVNTQUxvd2VyaW5nKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFNTQSBMb3dlcmluZyBQaGFzZSIpOwogICAgIHJl
dHVybiBydW5QaGFzZTxTU0FMb3dlcmluZ1BoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2
aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk4OCw2ICsyOTg4LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAKICAgICBjYXNlIFJlZ0V4
cEV4ZWM6IHsKKyAgICAgICAgYm9vbCBzYW1wbGUgPSBmYWxzZTsKKworICAgICAgICBpZiAoc2Ft
cGxlKQorICAgICAgICAgICAgbV9qaXQuaW5jcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKKyAg
ICAgICAgCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGdsb2JhbE9iamVjdCh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBnbG9iYWxP
YmplY3QuZ3ByKCk7CiAgICAgICAgIApAQCAtMzAwNiw2ICszMDExLDkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworCisgICAgICAgICAgICAgICAgaWYgKHNhbXBsZSkK
KyAgICAgICAgICAgICAgICAgICAgbV9qaXQuZGVjcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAt
MzAyMSw2ICszMDI5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAg
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisKKyAgICAgICAgICAgIGlm
IChzYW1wbGUpCisgICAgICAgICAgICAgICAgbV9qaXQuZGVjcmVtZW50U3VwZXJTYW1wbGVyQ291
bnQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMzAzNSw2
ICszMDQ2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworCisgICAgICAgIGlmIChzYW1wbGUpCisgICAgICAg
ICAgICBtX2ppdC5kZWNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKQEAgLTMwOTMsNiArMzEwNywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgfQogCiAgICAgY2FzZSBTdHJpbmdSZXBsYWNlOiB7CisgICAg
ICAgIGJvb2wgc2FtcGxlID0gZmFsc2U7CisKKyAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAgICAg
ICAgIG1faml0LmluY3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCk7CisgICAgICAgIAogICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmluZ1VzZQogICAgICAgICAgICAg
JiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQogICAgICAgICAg
ICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewpAQCAtMzExMiw2
ICszMTMxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmVnRXhwR1BSKTsKICAgICAgICAgICAgICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHQuZ3ByKCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoc2FtcGxlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9qaXQuZGVjcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpAQCAtMzEzMyw2ICszMTU0LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgICAgIHJlcGxhY2VHUFIpOwogICAgICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBu
b2RlKTsKKyAgICAgICAgICAgIGlmIChzYW1wbGUpCisgICAgICAgICAgICAgICAgbV9qaXQuZGVj
cmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIApAQCAtMzE1MCw2ICszMTczLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgcmVwbGFjZUdQUik7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2Rl
KTsKKyAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAgICAgICAgIG1faml0LmRlY3JlbWVudFN1cGVy
U2FtcGxlckNvdW50KCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAJ
KHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tM
YXlvdXRQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MSw3ICsyNjEsNiBAQCBwcml2YXRl
OgogCiBib29sIHBlcmZvcm1TdGFja0xheW91dChHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBTdGFjayBMYXlvdXQgUGhhc2UiKTsKICAgICBy
ZXR1cm4gcnVuUGhhc2U8U3RhY2tMYXlvdXRQaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRp
Y0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDYgQEAgcHJpdmF0ZToKIAog
Ym9vbCBwZXJmb3JtU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uKEdyYXBoJiBncmFwaCkK
IHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFN0YXRpYyBFeGVjdXRp
b24gQ291bnQgRXN0aW1hdGlvbiIpOwogICAgIHJldHVybiBydW5QaGFzZTxTdGF0aWNFeGVjdXRp
b25Db3VudEVzdGltYXRpb25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNCwx
MyArNTM0LDExIEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybUZhc3RTdG9yZUJhcnJpZXJJbnNl
cnRpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9u
KCJERkcgRmFzdCBTdG9yZSBCYXJyaWVyIEluc2VydGlvbiBQaGFzZSIpOwogICAgIHJldHVybiBy
dW5QaGFzZTxTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZTxQaGFzZU1vZGU6OkZhc3Q+PihncmFw
aCk7CiB9CiAKIGJvb2wgcGVyZm9ybUdsb2JhbFN0b3JlQmFycmllckluc2VydGlvbihHcmFwaCYg
Z3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBHbG9iYWwg
U3RvcmUgQmFycmllciBJbnNlcnRpb24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8U3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2U8UGhhc2VNb2RlOjpHbG9iYWw+PihncmFwaCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzkwLDcgKzM5MCw2IEBAIHByaXZhdGU6CiAgICAgCiBib29sIHBlcmZvcm1TdHJlbmd0aFJl
ZHVjdGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdp
b24oIkRGRyBTdHJlbmd0aCBSZWR1Y3Rpb24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAJ
KHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE2ICszMiw5IEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotLy8gQ29tbWVudCBvdXQgdGhlIGVt
cHR5IFNBTVBMRSgpIGRlZmluaXRpb24sIGFuZCB1bmNvbW1lbnQgdGhlIG9uZSB0aGF0IHVzZXMg
U2FtcGxpbmdSZWdpb24sIGlmCi0vLyB5b3Ugd2FudCBleHRyZW1lbHkgZmluZS1ncmFpbmVkIHBy
b2ZpbGluZyBpbiB0aGlzIGNvZGUuCi0jZGVmaW5lIFNBTVBMRShuYW1lKSAKLS8vI2RlZmluZSBT
QU1QTEUobmFtZSkgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24obmFtZSkKLQogI2lmICFB
U1NFUlRfRElTQUJMRUQKIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YXNzZXJ0SXNSZWdp
c3RlcmVkKEdyYXBoJiBncmFwaCkgY29uc3QKIHsKLSAgICBTQU1QTEUoIlN0cnVjdHVyZUFic3Ry
YWN0VmFsdWUgYXNzZXJ0SXNSZWdpc3RlcmVkIik7Ci0KICAgICBpZiAoaXNUb3AoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIApAQCAtNTIsOCArNDUsNiBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0
VmFsdWU6OmFzc2VydElzUmVnCiAKIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y2xvYmJl
cigpCiB7Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIGNsb2JiZXIiKTsKLQog
ICAgIC8vIFRoZSBwcmVtaXNlIG9mIHRoaXMgYXBwcm9hY2ggdG8gY2xvYmJlcmluZyBpcyB0aGF0
IGFueXRpbWUgd2UgaW50cm9kdWNlCiAgICAgLy8gYSB3YXRjaGFibGUgc3RydWN0dXJlIGludG8g
YW4gYWJzdHJhY3QgdmFsdWUsIHdlIHdhdGNocG9pbnQgaXQuIFlvdSBjYW4gYXNzZXJ0CiAgICAg
Ly8gdGhhdCB0aGlzIGhvbGRzIGJ5IGNhbGxpbmcgYXNzZXJ0SXNXYXRjaGVkKCkuCkBAIC04Miw4
ICs3Myw2IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y2xvYmJlcigpCiAKIHZvaWQg
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW5zaXRpb24oU3RydWN0dXJlKiBmcm9t
LCBTdHJ1Y3R1cmUqIHRvKQogewotICAgIFNBTVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBv
YnNlcnZlVHJhbnNpdGlvbiIpOwotICAgIAogICAgIEFTU0VSVCghZnJvbS0+ZGZnU2hvdWxkV2F0
Y2goKSk7CiAKICAgICBpZiAoaXNUb3AoKSkKQEAgLTEwMSw4ICs5MCw2IEBAIHZvaWQgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW4KIAogdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlOjpvYnNlcnZlVHJhbnNpdGlvbnMoY29uc3QgVHJhbnNpdGlvblZlY3RvciYgdmVjdG9yKQog
ewotICAgIFNBTVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBvYnNlcnZlVHJhbnNpdGlvbnMi
KTsKLQogICAgIGlmIChpc1RvcCgpKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC0xMjUsOCAr
MTEyLDYgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvYnNlcnZlVHJhbgogCiBib29s
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFkZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAg
ICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFsdWUgYWRkIik7Ci0KICAgICBpZiAoaXNUb3Ao
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMTQxLDggKzEyNiw2IEBAIGJvb2wg
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKFN0cnVjdHUKIAogYm9vbCBTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlOjptZXJnZShjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQogewotICAgIFNBTVBM
RSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBtZXJnZSBzZXQiKTsKLQogICAgIGlmIChpc1RvcCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0xNTEsOCArMTM0LDYgQEAgYm9vbCBT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZShjb25zdAogCiBib29sIFN0cnVjdHVyZUFic3Ry
YWN0VmFsdWU6Om1lcmdlU2xvdyhjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikK
IHsKLSAgICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFsdWUgbWVyZ2UgdmFsdWUgc2xvdyIp
OwotCiAgICAgLy8gSXQgaXNuJ3QgaW1tZWRpYXRlbHkgb2J2aW91cyB0aGF0IHRoZSBjb2RlIGJl
bG93IGlzIGRvaW5nIHRoZSByaWdodCB0aGluZywgc28gbGV0J3MgZ28KICAgICAvLyB0aHJvdWdo
IGl0LgogICAgIC8vCkBAIC0xOTYsOCArMTc3LDYgQEAgYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlOjptZXJnZVNsb3coYwogCiBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlTm90
VG9wKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpCiB7Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlIG1lcmdlIG5vdCB0b3AiKTsKLQogICAgIGlmICghbV9zZXQubWVyZ2Uob3Ro
ZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0yMDksOCArMTg4LDYgQEAgYm9v
bCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZU5vdFRvcAogCiB2b2lkIFN0cnVjdHVyZUFi
c3RyYWN0VmFsdWU6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQogewotICAgIFNB
TVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBmaWx0ZXIgc2V0Iik7Ci0KICAgICBpZiAoaXNU
b3AoKSkgewogICAgICAgICBtX3NldCA9IG90aGVyOwogICAgICAgICByZXR1cm47CkBAIC0yNDQs
OCArMjIxLDYgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXIoY29ucwogCiB2
b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlJiBvdGhlcikKIHsKLSAgICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFsdWUgZmls
dGVyIHZhbHVlIik7Ci0KICAgICBpZiAob3RoZXIuaXNUb3AoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIApAQCAtMjcwLDggKzI0NSw2IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Zmls
dGVyKGNvbnMKIAogdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJTbG93KFNwZWN1
bGF0ZWRUeXBlIHR5cGUpCiB7Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIGZp
bHRlciB0eXBlIHNsb3ciKTsKLQogICAgIGlmICghKHR5cGUgJiBTcGVjQ2VsbCkpIHsKICAgICAg
ICAgY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg3LDggKzI2MCw2IEBAIHZvaWQgU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyU2xvdygKIAogYm9vbCBTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOjpjb250YWlucyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3QKIHsKLSAgICBTQU1Q
TEUoIlN0cnVjdHVyZUFic3RyYWN0VmFsdWUgY29udGFpbnMiKTsKLQogICAgIGlmIChpc0luZmlu
aXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIApAQCAtMjk3LDggKzI2OCw2IEBAIGJv
b2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMoU3QKIAogYm9vbCBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjppc1N1YnNldE9mKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0
CiB7Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIGlzU3Vic2V0T2Ygc2V0Iik7
Ci0KICAgICBpZiAoaXNJbmZpbml0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBA
IC0zMDcsOCArMjc2LDYgQEAgYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1N1YnNldE9m
KAogCiBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YoY29uc3QgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlIGlzU3Vic2V0T2YgdmFsdWUiKTsKLQogICAgIGlmIChpc1RvcCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0zMzAsOCArMjk3LDYgQEAgYm9vbCBTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOjppc1N1YnNldE9mKAogCiBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFs
dWU6OmlzU3VwZXJzZXRPZihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdAogewotICAg
IFNBTVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBpc1N1cGVyc2V0T2Ygc2V0Iik7Ci0KICAg
ICBpZiAoaXNJbmZpbml0ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKQEAgLTM0MCw4
ICszMDUsNiBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3VwZXJzZXRPCiAKIGJv
b2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMoY29uc3QgU3RydWN0dXJlU2V0JiBv
dGhlcikgY29uc3QKIHsKLSAgICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFsdWUgb3Zlcmxh
cHMgc2V0Iik7Ci0KICAgICBpZiAoaXNJbmZpbml0ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAKQEAgLTM1MCw4ICszMTMsNiBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om92
ZXJsYXBzKGNvCiAKIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMoY29uc3Qg
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgU0FNUExFKCJTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlIG92ZXJsYXBzIHZhbHVlIik7Ci0KICAgICBpZiAob3RoZXIuaXNJ
bmZpbml0ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKQEAgLTM2MCw4ICszMjEsNiBA
QCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om92ZXJsYXBzKGNvCiAKIGJvb2wgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6ZXF1YWxzU2xvdyhjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
JiBvdGhlcikgY29uc3QKIHsKLSAgICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFsdWUgZXF1
YWxzU2xvdyIpOwotCiAgICAgQVNTRVJUKG1fc2V0Lm1fcG9pbnRlciAhPSBvdGhlci5tX3NldC5t
X3BvaW50ZXIpOwogICAgIEFTU0VSVCghaXNUb3AoKSk7CiAgICAgQVNTRVJUKCFvdGhlci5pc1Rv
cCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0
cmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDcgKzE5MSw2IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVy
Zm9ybVN0cnVjdHVyZVJlZ2lzdHJhdGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBTdHJ1Y3R1cmUgUmVnaXN0cmF0aW9uIFBoYXNlIik7
CiAgICAgcmV0dXJuIHJ1blBoYXNlPFN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlPihncmFwaCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmpl
Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTkwLDcgKzE5MCw2IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9y
bVRpZXJVcENoZWNrSW5qZWN0aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lv
biBzYW1wbGluZ1JlZ2lvbigiREZHIFRpZXItdXAgQ2hlY2sgSW5qZWN0aW9uIik7CiAgICAgcmV0
dXJuIHJ1blBoYXNlPFRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hv
aXN0aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MjYsNyArNTI2LDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtVHlwZUNoZWNrSG9pc3Rpbmco
R3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcg
VHlwZSBDaGVjayBIb2lzdGluZyBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxUeXBlQ2hl
Y2tIb2lzdGluZ1BoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVW5pZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdVbmlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzAxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVbmlmaWNhdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODUsNyArODUsNiBAQCBwdWJsaWM6CiAKIGJvb2wgcGVyZm9ybVVuaWZp
Y2F0aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lv
bigiREZHIFVuaWZpY2F0aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFVuaWZpY2F0
aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgz
MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNyArMzI1LDYgQEAgcHJpdmF0ZToKIAogYm9v
bCBwZXJmb3JtVmFyYXJnc0ZvcndhcmRpbmcoR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgVmFyYXJncyBGb3J3YXJkaW5nIFBoYXNlIik7CiAg
ICAgcmV0dXJuIHJ1blBoYXNlPFZhcmFyZ3NGb3J3YXJkaW5nUGhhc2U+KGdyYXBoKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDYgQEAgcHVibGljOgogCiBib29s
IHBlcmZvcm1WaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBT
YW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFZpcnR1YWwgUmVnaXN0ZXIgQWxsb2Nh
dGlvbiBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0
aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xs
ZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDYgQEAgcHJpdmF0
ZToKIAogYm9vbCBwZXJmb3JtV2F0Y2hwb2ludENvbGxlY3Rpb24oR3JhcGgmIGdyYXBoKQogewot
ICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgV2F0Y2hwb2ludCBDb2xsZWN0
aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFdhdGNocG9pbnRDb2xsZWN0aW9uUGhh
c2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDc1LDYgKzY0
NzUsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcGlsZVJlZ0V4cEV4ZWMoKQogICAgIHsK
KyAgICAgICAgYm9vbCBzYW1wbGUgPSBmYWxzZTsKKworICAgICAgICBpZiAoc2FtcGxlKQorICAg
ICAgICAgICAgbV9vdXQuaW5jcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKKyAgICAgICAgCiAg
ICAgICAgIExWYWx1ZSBnbG9iYWxPYmplY3QgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4
cE9iamVjdFVzZSkgewpAQCAtNjQ4Niw2ICs2NDkxLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjU3RyaW5n
KSwgbV9jYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgYmFzZSwg
YXJndW1lbnQpOwogICAgICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAg
ICAgICAgICBpZiAoc2FtcGxlKQorICAgICAgICAgICAgICAgICAgICBtX291dC5kZWNyZW1lbnRT
dXBlclNhbXBsZXJDb3VudCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIApAQCAtNjQ5NCw2ICs2NTAxLDggQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWMpLCBtX2Nh
bGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBiYXNlLAogICAgICAgICAgICAgICAgIGFyZ3VtZW50KTsK
ICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChzYW1wbGUp
CisgICAgICAgICAgICAgICAgbV9vdXQuZGVjcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTY1MDMsNiArNjUxMiw5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
blJlZ0V4cEV4ZWNHZW5lcmljKSwgbV9jYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYmFzZSwKICAg
ICAgICAgICAgIGFyZ3VtZW50KTsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworCisgICAg
ICAgIGlmIChzYW1wbGUpCisgICAgICAgICAgICBtX291dC5kZWNyZW1lbnRTdXBlclNhbXBsZXJD
b3VudCgpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZVJlZ0V4cFRlc3QoKQpAQCAtNjU1OSw2
ICs2NTcxLDExIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlU3RyaW5nUmVwbGFj
ZSgpCiAgICAgeworICAgICAgICBib29sIHNhbXBsZSA9IGZhbHNlOworCisgICAgICAgIGlmIChz
YW1wbGUpCisgICAgICAgICAgICBtX291dC5pbmNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpOwor
ICAgICAgICAKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmlu
Z1VzZQogICAgICAgICAgICAgJiYgbV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhw
T2JqZWN0VXNlCiAgICAgICAgICAgICAmJiBtX25vZGUtPmNoaWxkMygpLnVzZUtpbmQoKSA9PSBT
dHJpbmdVc2UpIHsKQEAgLTY1NzMsNiArNjU5MCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2NhbGxGcmFtZSwgc3RyaW5nLCByZWdFeHApOwogCiAgICAgICAgICAgICAg
ICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNhbXBs
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmRlY3JlbWVudFN1cGVyU2FtcGxlckNv
dW50KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CkBAIC02NTg2LDYgKzY2MDUsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIG1fY2FsbEZyYW1lLCBzdHJpbmcsIHJlZ0V4cCwgcmVwbGFjZSk7CiAKICAgICAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChzYW1wbGUpCisgICAgICAgICAg
ICAgICAgbV9vdXQuZGVjcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTY1OTUsNiArNjYxNiw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpKTsKIAogICAgICAgICBz
ZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgIGlmIChzYW1wbGUpCisgICAgICAgICAgICBtX291
dC5kZWNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGls
ZUdldFJlZ0V4cE9iamVjdExhc3RJbmRleCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUzMiw4ICs1MzIsNiBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKIAogZXh0
ZXJuICJDIiB2b2lkKiBjb21waWxlRlRMT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGV4aXRJRCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiRlRMIE9TUiBF
eGl0IENvbXBpbGF0aW9uIik7Ci0KICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkgfHwg
T3B0aW9uczo6dmVyYm9zZU9TUigpIHx8IE9wdGlvbnM6OnZlcmJvc2VGVExPU1JFeGl0KCkpCiAg
ICAgICAgIGRhdGFMb2coIkNvbXBpbGluZyBPU1IgZXhpdCB3aXRoIGV4aXRJRCA9ICIsIGV4aXRJ
RCwgIlxuIik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAJ
KHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQjNNYXRo
RXh0cmFzLmgiCiAjaW5jbHVkZSAiQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaCIKKyNpbmNs
dWRlICJTdXBlclNhbXBsZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewog
CkBAIC0yOTYsNiArMjk3LDIzIEBAIHZvaWQgT3V0cHV0OjpzdG9yZShMVmFsdWUgdmFsdWUsIFR5
cGVkUG8KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitUeXBlZFBvaW50
ZXIgT3V0cHV0OjphYnNvbHV0ZSh2b2lkKiBhZGRyZXNzKQoreworICAgIHJldHVybiBUeXBlZFBv
aW50ZXIobV9oZWFwcy0+YWJzb2x1dGVbYWRkcmVzc10sIGNvbnN0SW50UHRyKGFkZHJlc3MpKTsK
K30KKwordm9pZCBPdXRwdXQ6OmluY3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCkKK3sKKyAgICBU
eXBlZFBvaW50ZXIgY291bnRlciA9IGFic29sdXRlKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmdfc3Vw
ZXJTYW1wbGVyQ291bnQpKTsKKyAgICBzdG9yZTMyKGFkZChsb2FkMzIoY291bnRlciksIGludDMy
T25lKSwgY291bnRlcik7Cit9CisKK3ZvaWQgT3V0cHV0OjpkZWNyZW1lbnRTdXBlclNhbXBsZXJD
b3VudCgpCit7CisgICAgVHlwZWRQb2ludGVyIGNvdW50ZXIgPSBhYnNvbHV0ZShiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZnX3N1cGVyU2FtcGxlckNvdW50KSk7CisgICAgc3RvcmUzMihzdWIobG9hZDMy
KGNvdW50ZXIpLCBpbnQzMk9uZSksIGNvdW50ZXIpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6RlRMCiAKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPdXRwdXQuaAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzA2LDEwICszMDYsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBoZWFwLmJhc2VJbmRleCgqdGhpcywgYmFzZSwgaW5k
ZXgsIGluZGV4QXNDb25zdGFudCwgb2Zmc2V0KTsKICAgICB9CiAKLSAgICBUeXBlZFBvaW50ZXIg
YWJzb2x1dGUodm9pZCogYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBUeXBlZFBvaW50
ZXIobV9oZWFwcy0+YWJzb2x1dGVbYWRkcmVzc10sIGNvbnN0SW50UHRyKGFkZHJlc3MpKTsKLSAg
ICB9CisgICAgVHlwZWRQb2ludGVyIGFic29sdXRlKHZvaWQqIGFkZHJlc3MpOwogCiAgICAgTFZh
bHVlIGxvYWQ4U2lnbkV4dDMyKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxk
KSB7IHJldHVybiBsb2FkOFNpZ25FeHQzMihhZGRyZXNzKGJhc2UsIGZpZWxkKSk7IH0KICAgICBM
VmFsdWUgbG9hZDhaZXJvRXh0MzIoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmll
bGQpIHsgcmV0dXJuIGxvYWQ4WmVyb0V4dDMyKGFkZHJlc3MoYmFzZSwgZmllbGQpKTsgfQpAQCAt
NDU0LDYgKzQ1MSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFZhbHVlRnJvbUJsb2NrKHVw
c2lsb24sIG1fYmxvY2spOwogICAgIH0KIAorICAgIHZvaWQgaW5jcmVtZW50U3VwZXJTYW1wbGVy
Q291bnQoKTsKKyAgICB2b2lkIGRlY3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCk7CisKICNpZiBQ
TEFURk9STShDT0NPQSkKICNwcmFnbWEgbWFyayAtIFN0YXRlcwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcg
QEAKICNpbmNsdWRlICJXZWFrU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi9QYXJhbGxlbFZlY3Rvckl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1By
b2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CkBAIC01MTUsOCArNTE2LDYgQEAg
dm9pZCBIZWFwOjpjb21wbGV0ZUFsbERGR1BsYW5zKCkKIAogdm9pZCBIZWFwOjptYXJrUm9vdHMo
ZG91YmxlIGdjU3RhcnRUaW1lLCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIE1h
Y2hpbmVUaHJlYWRzOjpSZWdpc3RlclN0YXRlJiBjYWxsZWVTYXZlZFJlZ2lzdGVycykKIHsKLSAg
ICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiR2FyYmFnZSBDb2xsZWN0aW9uOiBNYXJr
aW5nIik7Ci0KICAgICBHQ1BIQVNFKE1hcmtSb290cyk7CiAgICAgQVNTRVJUKGlzVmFsaWRUaHJl
YWRTdGF0ZShtX3ZtKSk7CiAKQEAgLTEwOTAsOCArMTA4OSw2IEBAIHZvaWQgSGVhcDo6Y29sbGVj
dEFuZFN3ZWVwKEhlYXBPcGVyYXRpb24KIAogICAgIGNvbGxlY3QoY29sbGVjdGlvblR5cGUpOwog
Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkdhcmJhZ2UgQ29sbGVjdGlvbjog
U3dlZXBpbmciKTsKLQogICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQygqdGhpcyk7CiAgICAg
bV9vYmplY3RTcGFjZS5zd2VlcCgpOwogICAgIG1fb2JqZWN0U3BhY2Uuc2hyaW5rKCk7CkBAIC0x
MTIxLDggKzExMTgsNiBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1wbChIZWFw
CiAgICAgICAgIGJlZm9yZSA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICB9CiAgICAgCi0gICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkdhcmJhZ2UgQ29sbGVjdGlvbiIpOwotICAgIAog
ICAgIGlmICh2bSgpLT50eXBlUHJvZmlsZXIoKSkgewogICAgICAgICBEZWZlckdDRm9yQVdoaWxl
IGF3aGlsZSgqdGhpcyk7CiAgICAgICAgIHZtKCktPnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNz
TG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIkdDIikpOwpAQCAtMTYwMiwxMCArMTU5Nyw3IEBAIHB1
YmxpYzoKIHZvaWQgSGVhcDo6em9tYmlmeURlYWRPYmplY3RzKCkKIHsKICAgICAvLyBTd2VlcCBu
b3cgYmVjYXVzZSBkZXN0cnVjdG9ycyB3aWxsIGNyYXNoIG9uY2Ugd2UncmUgem9tYmlmaWVkLgot
ICAgIHsKLSAgICAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkdhcmJhZ2UgQ29s
bGVjdGlvbjogU3dlZXBpbmciKTsKLSAgICAgICAgbV9vYmplY3RTcGFjZS56b21iaWZ5U3dlZXAo
KTsKLSAgICB9CisgICAgbV9vYmplY3RTcGFjZS56b21iaWZ5U3dlZXAoKTsKICAgICBIZWFwSXRl
cmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKnRoaXMpOwogICAgIG1fb2JqZWN0U3BhY2UuZm9y
RWFjaERlYWRDZWxsPFpvbWJpZnk+KGl0ZXJhdGlvblNjb3BlKTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTQsOCArOTQsNiBAQCBNYXJrZWRCbG9jazo6RnJlZUxpc3QgTWFya2VkQmxvY2s6OnNw
ZWNpCiAgICAgQVNTRVJUKGJsb2NrU3RhdGUgIT0gQWxsb2NhdGVkICYmIGJsb2NrU3RhdGUgIT0g
RnJlZUxpc3RlZCk7CiAgICAgQVNTRVJUKCEoIWNhbGxEZXN0cnVjdG9ycyAmJiBzd2VlcE1vZGUg
PT0gU3dlZXBPbmx5KSk7CiAKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigoIWNh
bGxEZXN0cnVjdG9ycyAmJiBibG9ja1N0YXRlICE9IE5ldykgPyAiQ2FsbGluZyBkZXN0cnVjdG9y
cyIgOiAic3dlZXBpbmciKTsKLSAgICAKICAgICAvLyBUaGlzIHByb2R1Y2VzIGEgZnJlZSBsaXN0
IHRoYXQgaXMgb3JkZXJlZCBpbiByZXZlcnNlIHRocm91Z2ggdGhlIGJsb2NrLgogICAgIC8vIFRo
aXMgaXMgZmluZSwgc2luY2UgdGhlIGFsbG9jYXRpb24gY29kZSBtYWtlcyBubyBhc3N1bXB0aW9u
cyBhYm91dCB0aGUKICAgICAvLyBvcmRlciBvZiB0aGUgZnJlZSBsaXN0LgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZp
c2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw2IEBACiAjaW5jbHVkZSAiUmVn
RXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiUmVn
aXN0ZXIuaCIKLSNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1
bWVudHMuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgIlN0YWNrVmlz
aXRvci5oIgpAQCAtMjg5LDggKzI4OCw3IEBAIHZvaWQgc2V0dXBWYXJhcmdzRnJhbWVBbmRTZXRU
aGlzKENhbGxGcmEKIH0KIAogSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKFZNJiB2bSkKLSAgICA6
IG1fc2FtcGxlRW50cnlEZXB0aCgwKQotICAgICwgbV92bSh2bSkKKyAgICA6IG1fdm0odm0pCiAg
ICAgLCBtX3N0YWNrKHZtKQogICAgICwgbV9lcnJvckhhbmRsaW5nTW9kZVJlZW50cnkoMCkKICNp
ZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0zMTQsMTAgKzMxMiw2IEBAIHZvaWQgSW50ZXJwcmV0ZXI6
OmluaXRpYWxpemUoKQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBtX2luaXRpYWxpemVkID0g
dHJ1ZTsKICNlbmRpZgotCi0jaWYgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLSAgICBlbmFibGVT
YW1wbGVyKCk7Ci0jZW5kaWYKIH0KIAogI2lmZGVmIE5ERUJVRwpAQCAtODA1LDI1ICs3OTksOCBA
QCBzdGF0aWMgaW5saW5lIEpTT2JqZWN0KiBjaGVja2VkUmV0dXJuKEpTCiAgICAgcmV0dXJuIHJl
dHVyblZhbHVlOwogfQogCi1jbGFzcyBTYW1wbGluZ1Njb3BlIHsKLXB1YmxpYzoKLSAgICBTYW1w
bGluZ1Njb3BlKEludGVycHJldGVyKiBpbnRlcnByZXRlcikKLSAgICAgICAgOiBtX2ludGVycHJl
dGVyKGludGVycHJldGVyKQotICAgIHsKLSAgICAgICAgaW50ZXJwcmV0ZXItPnN0YXJ0U2FtcGxp
bmcoKTsKLSAgICB9Ci0gICAgflNhbXBsaW5nU2NvcGUoKQotICAgIHsKLSAgICAgICAgbV9pbnRl
cnByZXRlci0+c3RvcFNhbXBsaW5nKCk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBJbnRlcnByZXRl
ciogbV9pbnRlcnByZXRlcjsKLX07Ci0KIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJv
Z3JhbUV4ZWN1dGFibGUqIHByb2dyYW0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCog
dGhpc09iaikKIHsKLSAgICBTYW1wbGluZ1Njb3BlIHNhbXBsaW5nU2NvcGUodGhpcyk7Ci0KICAg
ICBKU1Njb3BlKiBzY29wZSA9IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZSgp
OwogICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKIApAQCAtOTYyLDExICs5MzksNyBAQCBmYWls
ZWRKU09OUDoKICAgICAgICAgcHJvZmlsZXItPndpbGxFeGVjdXRlKGNhbGxGcmFtZSwgcHJvZ3Jh
bS0+c291cmNlVVJMKCksIHByb2dyYW0tPmZpcnN0TGluZSgpLCBwcm9ncmFtLT5zdGFydENvbHVt
bigpKTsKIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0g
ICAgewotICAgICAgICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBs
ZXIuZ2V0KCkpOwotICAgICAgICByZXN1bHQgPSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCkt
PmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwotICAgIH0KKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHByb2dyYW0tPmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxG
cmFtZSk7CiAKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFBy
b2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgcHJvZ3Jh
bS0+c291cmNlVVJMKCksIHByb2dyYW0tPmZpcnN0TGluZSgpLCBwcm9ncmFtLT5zdGFydENvbHVt
bigpKTsKQEAgLTEwMjQsOCArOTk3LDYgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNh
bGwoQ2FsbEZyYQogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgewotICAgICAgICBTYW1wbGlu
Z1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCksICFpc0pTQ2FsbCk7
Ci0KICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKICAgICAgICAgaWYgKGlzSlNDYWxsKQog
ICAgICAgICAgICAgcmVzdWx0ID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5l
cmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKQEAg
LTEwOTQsOCArMTA2NSw2IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVj
dCgKIAogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIHsKLSAgICAgICAgU2FtcGxpbmdUb29sOjpD
YWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdldCgpLCAhaXNKU0NvbnN0cnVjdCk7Ci0K
ICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZS4KICAgICAgICAgaWYgKGlzSlNDb25zdHJ1Y3Qp
CiAgICAgICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJs
ZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2Fs
bEZyYW1lKTsKQEAgLTExNDQsNyArMTExMyw2IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0
ZXI6OnByZXBhcmVGb3IKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2xv
c3VyZSYgY2xvc3VyZSkgCiB7CiAgICAgVk0mIHZtID0gKmNsb3N1cmUudm07Ci0gICAgU2FtcGxp
bmdTY29wZSBzYW1wbGluZ1Njb3BlKHRoaXMpOwogICAgIAogICAgIEFTU0VSVCghdm0uaXNDb2xs
ZWN0b3JCdXN5KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRp
bmdBUElMb2NrKCkpOwpAQCAtMTE2MCwxMSArMTEyOCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1
dGlvbkV4Y2VwdGlvbihjbG9zdXJlLm9sZENhbGxGcmFtZSk7CiAKICAgICAvLyBFeGVjdXRlIHRo
ZSBjb2RlOgotICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIHsKLSAgICAgICAgU2FtcGxpbmdUb29s
OjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdldCgpKTsKLSAgICAgICAgcmVzdWx0
ID0gY2xvc3VyZS5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkt
PmV4ZWN1dGUoJnZtLCBjbG9zdXJlLnByb3RvQ2FsbEZyYW1lKTsKLSAgICB9CisgICAgSlNWYWx1
ZSByZXN1bHQgPSBjbG9zdXJlLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZv
ckNhbGwoKS0+ZXhlY3V0ZSgmdm0sIGNsb3N1cmUucHJvdG9DYWxsRnJhbWUpOwogCiAgICAgaWYg
KExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQogICAgICAg
ICBwcm9maWxlci0+ZGlkRXhlY3V0ZShjbG9zdXJlLm9sZENhbGxGcmFtZSwgY2xvc3VyZS5mdW5j
dGlvbik7CkBAIC0xMTc1LDcgKzExMzksNiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
KENhbGxGcmFtZUNsCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxl
KiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUq
IHNjb3BlKQogewogICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKLSAgICBTYW1wbGluZ1Njb3Bl
IHNhbXBsaW5nU2NvcGUodGhpcyk7CiAgICAgCiAgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZj
YWxsRnJhbWUtPnZtKCkpOwogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwpAQCAtMTI3MSwx
MSArMTIzNCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAg
ICAgICAgcHJvZmlsZXItPndpbGxFeGVjdXRlKGNhbGxGcmFtZSwgZXZhbC0+c291cmNlVVJMKCks
IGV2YWwtPmZpcnN0TGluZSgpLCBldmFsLT5zdGFydENvbHVtbigpKTsKIAogICAgIC8vIEV4ZWN1
dGUgdGhlIGNvZGU6Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgewotICAgICAgICBTYW1wbGlu
Z1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOwotICAgICAgICBy
ZXN1bHQgPSBldmFsLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxs
RnJhbWUpOwotICAgIH0KKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWwtPmdlbmVyYXRlZEpJVENv
ZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CiAKICAgICBpZiAoTGVnYWN5UHJv
ZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVy
LT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgZXZhbC0+c291cmNlVVJMKCksIGV2YWwtPmZpcnN0TGlu
ZSgpLCBldmFsLT5zdGFydENvbHVtbigpKTsKQEAgLTEyODYsNyArMTI0NSw2IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU01vZHVsZUVudmlyb25tZW50KiBzY29wZSkKIHsKICAgICBWTSYgdm0gPSAqc2Nv
cGUtPnZtKCk7Ci0gICAgU2FtcGxpbmdTY29wZSBzYW1wbGluZ1Njb3BlKHRoaXMpOwogCiAgICAg
QVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOwogICAgIEFTU0VSVCghdm0u
ZXhjZXB0aW9uKCkpOwpAQCAtMTMxOSwxMSArMTI3Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoTW9kdWxlUHJvZ3IKICAgICAgICAgcHJvZmlsZXItPndpbGxFeGVjdXRlKGNhbGxG
cmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1dGFibGUtPmZpcnN0TGluZSgpLCBl
eGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Ci0g
ICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgewotICAgICAgICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNv
cmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOwotICAgICAgICByZXN1bHQgPSBleGVjdXRh
YmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwot
ICAgIH0KKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUo
KS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CiAKICAgICBpZiAoTGVnYWN5UHJvZmls
ZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT5k
aWRFeGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1dGFibGUt
PmZpcnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKQEAgLTEzNjMsNDAgKzEz
MTcsNCBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6ZGVidWcoQ2FsCiAgICAgQVNT
RVJUKCFjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKTsKIH0gICAgCiAKLXZvaWQgSW50ZXJwcmV0
ZXI6OmVuYWJsZVNhbXBsZXIoKQotewotI2lmIEVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAg
aWYgKCFtX3NhbXBsZXIpIHsKLSAgICAgICAgbV9zYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxT
YW1wbGluZ1Rvb2w+KHRoaXMpOwotICAgICAgICBtX3NhbXBsZXItPnNldHVwKCk7Ci0gICAgfQot
I2VuZGlmCi19Ci12b2lkIEludGVycHJldGVyOjpkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqIGV4
ZWMpCi17Ci0jaWYgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAobV9zYW1wbGVyKQot
ICAgICAgICBtX3NhbXBsZXItPmR1bXAoZXhlYyk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKLSNlbmRpZgotfQotdm9pZCBJbnRlcnByZXRlcjo6c3RhcnRTYW1wbGluZygpCi17Ci0j
aWYgRU5BQkxFKFNBTVBMSU5HX1RIUkVBRCkKLSAgICBpZiAoIW1fc2FtcGxlRW50cnlEZXB0aCkK
LSAgICAgICAgU2FtcGxpbmdUaHJlYWQ6OnN0YXJ0KCk7Ci0KLSAgICBtX3NhbXBsZUVudHJ5RGVw
dGgrKzsKLSNlbmRpZgotfQotdm9pZCBJbnRlcnByZXRlcjo6c3RvcFNhbXBsaW5nKCkKLXsKLSNp
ZiBFTkFCTEUoU0FNUExJTkdfVEhSRUFEKQotICAgIG1fc2FtcGxlRW50cnlEZXB0aC0tOwotICAg
IGlmICghbV9zYW1wbGVFbnRyeURlcHRoKQotICAgICAgICBTYW1wbGluZ1RocmVhZDo6c3RvcCgp
OwotI2VuZGlmCi19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDE5ODMwMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSw3ICs1OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIEpT
U2NvcGU7Ci0gICAgY2xhc3MgU2FtcGxpbmdUb29sOwogICAgIHN0cnVjdCBDYWxsRnJhbWVDbG9z
dXJlOwogICAgIHN0cnVjdCBIYW5kbGVySW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CkBA
IC0yMjEsOCArMjIwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBnZXRBcmd1
bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwgcHRyZGlmZl90JiBmaXJzdFBhcmFt
ZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJnYyk7CiAgICAgICAgIAotICAgICAg
ICBTYW1wbGluZ1Rvb2wqIHNhbXBsZXIoKSB7IHJldHVybiBtX3NhbXBsZXIuZ2V0KCk7IH0KLQog
ICAgICAgICBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHVud2luZChWTSYsIENhbGxGcmFtZSom
LCBFeGNlcHRpb24qLCBVbndpbmRTdGFydCk7CiAgICAgICAgIHZvaWQgbm90aWZ5RGVidWdnZXJP
ZkV4Y2VwdGlvblRvQmVUaHJvd24oQ2FsbEZyYW1lKiwgRXhjZXB0aW9uKik7CiAgICAgICAgIE5F
VkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERlYnVnSG9va0lEKTsKQEAgLTIzMywx
MCArMjMwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSopOwogICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKIAotICAgICAgICB2b2lkIGR1bXBT
YW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7Ci0gICAgICAgIHZvaWQgc3RhcnRTYW1wbGluZygp
OwotICAgICAgICB2b2lkIHN0b3BTYW1wbGluZygpOwotCiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZHVtcENhbGxGcmFtZShDYWxsRnJhbWUqKTsKIAogICAgICAgICB2b2lkIGdldFN0
YWNrVHJhY2UoVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRzLCBzaXplX3QgbWF4U3RhY2tTaXpl
ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CkBAIC0yNTQsMTAgKzI0Nyw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBpc0NhbGxCeXRlY29k
ZShPcGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNvZGUgPT0gZ2V0T3Bjb2RlKG9wX2NhbGwpIHx8
IG9wY29kZSA9PSBnZXRPcGNvZGUob3BfY29uc3RydWN0KSB8fCBvcGNvZGUgPT0gZ2V0T3Bjb2Rl
KG9wX2NhbGxfZXZhbCkgfHwgb3Bjb2RlID09IGdldE9wY29kZShvcF90YWlsX2NhbGwpOyB9CiAK
LSAgICAgICAgdm9pZCBlbmFibGVTYW1wbGVyKCk7Ci0gICAgICAgIGludCBtX3NhbXBsZUVudHJ5
RGVwdGg7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGluZ1Rvb2w+IG1fc2FtcGxlcjsK
LQogICAgICAgICBWTSYgbV92bTsKICAgICAgICAgSlNTdGFjayBtX3N0YWNrOwogICAgICAgICBp
bnQgbV9lcnJvckhhbmRsaW5nTW9kZVJlZW50cnk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0OCw2ICsxNDgsMTYgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIEFzc2VtYmx5SGVscGVy
czo6YgogICAgICAgICBUcnVzdGVkSW1tMzIoRmFzdFR5cGVkQXJyYXkpKTsKIH0KIAordm9pZCBB
c3NlbWJseUhlbHBlcnM6OmluY3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCkKK3sKKyAgICBhZGQz
MihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcyhiaXR3aXNlX2Nhc3Q8Y29uc3Qgdm9p
ZCo+KCZnX3N1cGVyU2FtcGxlckNvdW50KSkpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6
ZGVjcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKQoreworICAgIHN1YjMyKFRydXN0ZWRJbW0zMigx
KSwgQWJzb2x1dGVBZGRyZXNzKGJpdHdpc2VfY2FzdDxjb25zdCB2b2lkKj4oJmdfc3VwZXJTYW1w
bGVyQ291bnQpKSk7Cit9CisgICAgCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6cHVyaWZ5TmFOKEZQ
UlJlZyBmcHIpCiB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90TmFOID0gYnJhbmNoRG91
YmxlKERvdWJsZUVxdWFsLCBmcHIsIGZwcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYg
KzM4LDcgQEAKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2lu
Y2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIK
KyNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJUeXBlb2ZUeXBlLmgiCiAjaW5j
bHVkZSAiVk0uaCIKIApAQCAtMTAwNiw2ICsxMDA3LDkgQEAgcHVibGljOgogI2VuZGlmCiAKICAg
ICB2b2lkIGppdFJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOworCisgICAgdm9pZCBpbmNyZW1l
bnRTdXBlclNhbXBsZXJDb3VudCgpOworICAgIHZvaWQgZGVjcmVtZW50U3VwZXJTYW1wbGVyQ291
bnQoKTsKICAgICAKICAgICB2b2lkIHB1cmlmeU5hTihGUFJSZWcpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNs
dWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIK
ICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCi0jaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5j
bHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNs
dWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2
aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUg
IlBDVG9Db2RlT3JpZ2luTWFwLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUg
IlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlVudXNlZFBvaW50ZXIuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1l
dGljMzJfNjQuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYg
QEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJSZXN1bHRUeXBlLmgiCi0jaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVk
ZSAiU2xvd1BhdGhDYWxsLmgiCiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBcml0aG1ldGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEFyaXRobWV0aWMuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw2
IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1
ZGUgIlNsb3dQYXRoQ2FsbC5oIgogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwzMl82NC5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBA
QAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5j
bHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUg
IlNldHVwVmFyYXJnc0ZyYW1lLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVz
dWx0VHlwZS5oIgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlNldHVwVmFy
YXJnc0ZyYW1lLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJUaHVu
a0dlbmVyYXRvcnMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQAogI2lu
Y2x1ZGUgIlByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlJlcGF0Y2guaCIKICNpbmNsdWRlICJT
Y29wZWRBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJU
ZXN0UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRl
ICJWTUlubGluZXMuaCIKQEAgLTEwMzQsNiArMTAzNSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdPYmplY3QKIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiBleGVjLCB2b2lkKiByZWdleHBQdHIpCiB7CisgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OwogICAgIFJlZ0V4cCogcmVnZXhwID0gc3RhdGljX2Nhc3Q8UmVnRXhwKj4ocmVnZXhwUHRyKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyAr
MzksNiBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgi
CiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2lu
Y2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5o
PgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUg
IlJlc3VsdFR5cGUuaCIKLSNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlICJTY29w
ZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHNUYWJsZS5oIgogI2luY2x1
ZGUgIlNsb3dQYXRoQ2FsbC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiUGFy
c2VyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJSZWdFeHBP
YmplY3QuaCIKLSNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NDksOCArMTY0OSw2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVj
dG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwKICAgICBUaGlzVERaTW9kZSB0aGlzVERa
TW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQogewotICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKCJQYXJzaW5nIik7Ci0KICAgICBBU1NFUlQoIXNvdXJjZS5wcm92aWRl
cigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJjZS5wcm92aWRlcigpLT5zb3Vy
Y2UoKS5pczhCaXQoKSkgewogICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0s
IHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5n
LCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxOTgzMDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJJbmZlcnJlZFZhbHVlLmgiCiAjaW5jbHVkZSAi
SklUQ29kZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAiU2FtcGxp
bmdUb29sLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlR5cGVTZXQuaCIK
ICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9u
IDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSlNM
b2NrLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJs
ZS5oIgorI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5o
IgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CkBAIC02OSw2ICs3MCw3
IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBE
aXNhbGxvd0dDOjppbml0aWFsaXplKCk7CiAjZW5kaWYKKyAgICAgICAgaW5pdGlhbGl6ZVN1cGVy
U2FtcGxlcigpOwogICAgICAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFk
RGF0YSgpOwogICAgICAgICB0aHJlYWREYXRhLnNldFNhdmVkTGFzdFN0YWNrVG9wKHRocmVhZERh
dGEuc3RhY2soKS5vcmlnaW4oKSk7CiAgICAgfSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw2ICszNDgsOCBA
QCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGR1bXBNb2R1
bGVSZWNvcmQsIGZhbHNlLCBudWxscHRyKSBcCiAgICAgdihib29sLCBkdW1wTW9kdWxlTG9hZGlu
Z1N0YXRlLCBmYWxzZSwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgZXhwb3NlSW50ZXJuYWxNb2R1
bGVMb2FkZXIsIGZhbHNlLCAiZXhwb3NlIHRoZSBpbnRlcm5hbCBtb2R1bGUgbG9hZGVyIG9iamVj
dCB0byB0aGUgZ2xvYmFsIHNwYWNlIGZvciBkZWJ1Z2dpbmciKSBcCisgICAgXAorICAgIHYoYm9v
bCwgdXNlU3VwZXJTYW1wbGVyLCBmYWxzZSwgbnVsbHB0cikKIAogZW51bSBPcHRpb25FcXVpdmFs
ZW5jZSB7CiAgICAgU2FtZU9wdGlvbiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCShyZXZpc2lvbiAxOTgzMDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBSZWdFeHBDYWNoZWRSZXN1bHRfaAog
CiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCisjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUyLDggKzUyLDYgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiBjcmVhdGVSZWdFeHBN
YXRjaAogICAgIFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcq
IGlucHV0LCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUsCiAgICAgUmVnRXhwKiByZWdFeHAsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCBNYXRjaFJlc3VsdCYgcmVzdWx0KQogewotICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkiKTsKLSAgICAK
ICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7CiAgICAgaW50IHBvc2l0aW9u
ID0gcmVnRXhwLT5tYXRjaElubGluZSh2bSwgaW5wdXRWYWx1ZSwgc3RhcnRPZmZzZXQsIHN1YnBh
dHRlcm5SZXN1bHRzKTsKICAgICBpZiAocG9zaXRpb24gPT0gLTEpIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2aXNp
b24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlJlZ0V4
cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiUmVnRXhwTWF0Y2hlc0FycmF5LmgiCiAjaW5jbHVk
ZSAiUmVnRXhwT2JqZWN0LmgiCisjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgogI2luY2x1ZGUgPHVuaWNvZGUvdWNvbmZpZy5oPgogI2luY2x1ZGUgPHVuaWNv
ZGUvdW5vcm0uaD4KQEAgLTQ0Nyw2ICs0NDgsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzU3BsaWNlU3ViCiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJl
bW92ZVVzaW5nUmVnRXhwU2VhcmNoKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmluZywg
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIFJlZ0V4cCogcmVnRXhwKQogeworICAgIFN1cGVyU2FtcGxl
clNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICAKICAgICBzaXplX3QgbGFzdElu
ZGV4ID0gMDsKICAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uID0gMDsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjgsMTYgKzUy
OCw2IEBAIHZvaWQgVk06OnJlc2V0RGF0ZUNhY2hlKCkKICAgICBkYXRlSW5zdGFuY2VDYWNoZS5y
ZXNldCgpOwogfQogCi12b2lkIFZNOjpzdGFydFNhbXBsaW5nKCkKLXsKLSAgICBpbnRlcnByZXRl
ci0+c3RhcnRTYW1wbGluZygpOwotfQotCi12b2lkIFZNOjpzdG9wU2FtcGxpbmcoKQotewotICAg
IGludGVycHJldGVyLT5zdG9wU2FtcGxpbmcoKTsKLX0KLQogdm9pZCBWTTo6d2hlbklkbGUoc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrKQogewogICAgIGlmICghZW50cnlTY29wZSkgewpA
QCAtNTc1LDE0ICs1NjUsNiBAQCB2b2lkIFZNOjpkZWxldGVBbGxDb2RlKCkKICAgICB9KTsKIH0K
IAotdm9pZCBWTTo6ZHVtcFNhbXBsZURhdGEoRXhlY1N0YXRlKiBleGVjKQotewotICAgIGludGVy
cHJldGVyLT5kdW1wU2FtcGxlRGF0YShleGVjKTsKLSNpZiBFTkFCTEUoQVNTRU1CTEVSKQotICAg
IEV4ZWN1dGFibGVBbGxvY2F0b3I6OmR1bXBQcm9maWxlKCk7Ci0jZW5kaWYKLX0KLQogU291cmNl
UHJvdmlkZXJDYWNoZSogVk06OmFkZFNvdXJjZVByb3ZpZGVyQ2FjaGUoU291cmNlUHJvdmlkZXIq
IHNvdXJjZVByb3ZpZGVyKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gc291cmNlUHJvdmlkZXJD
YWNoZU1hcC5hZGQoc291cmNlUHJvdmlkZXIsIG51bGxwdHIpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsOSArNTUzLDYgQEAgcHVibGlj
OgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNldERhdGVDYWNoZSgpOwogCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydFNhbXBsaW5nKCk7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBzdG9wU2FtcGxpbmcoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1
bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSopOwogICAgIFJlZ0V4cENhY2hlKiByZWdFeHBDYWNoZSgp
IHsgcmV0dXJuIG1fcmVnRXhwQ2FjaGU7IH0KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAg
ICAgdm9pZCBhZGRSZWdFeHBUb1RyYWNlKFJlZ0V4cCopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
WWFyckludGVycHJldGVyLmgiCiAKKyNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRl
ICJZYXJyLmgiCiAjaW5jbHVkZSAiWWFyckNhbm9uaWNhbGl6ZS5oIgogI2luY2x1ZGUgPHd0Zi9C
dW1wUG9pbnRlckFsbG9jYXRvci5oPgpAQCAtMjAzNCw2ICsyMDM1LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbQogCiB1bnNpZ25lZCBpbnRlcnByZXQoQnl0ZWNv
ZGVQYXR0ZXJuKiBieXRlY29kZSwgY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkKiBvdXRwdXQpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVy
U2NvcGUoZmFsc2UpOwogICAgIGlmIChpbnB1dC5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIElu
dGVycHJldGVyPExDaGFyPihieXRlY29kZSwgb3V0cHV0LCBpbnB1dC5jaGFyYWN0ZXJzOCgpLCBp
bnB1dC5sZW5ndGgoKSwgc3RhcnQpLmludGVycHJldCgpOwogICAgIHJldHVybiBJbnRlcnByZXRl
cjxVQ2hhcj4oYnl0ZWNvZGUsIG91dHB1dCwgaW5wdXQuY2hhcmFjdGVyczE2KCksIGlucHV0Lmxl
bmd0aCgpLCBzdGFydCkuaW50ZXJwcmV0KCk7CkBAIC0yMDQxLDExICsyMDQzLDEzIEBAIHVuc2ln
bmVkIGludGVycHJldChCeXRlY29kZVBhdHRlcm4qIGJ5dGUKIAogdW5zaWduZWQgaW50ZXJwcmV0
KEJ5dGVjb2RlUGF0dGVybiogYnl0ZWNvZGUsIGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQg
bGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQqIG91dHB1dCkKIHsKKyAgICBTdXBlclNh
bXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgcmV0dXJuIEludGVycHJl
dGVyPExDaGFyPihieXRlY29kZSwgb3V0cHV0LCBpbnB1dCwgbGVuZ3RoLCBzdGFydCkuaW50ZXJw
cmV0KCk7CiB9CiAKIHVuc2lnbmVkIGludGVycHJldChCeXRlY29kZVBhdHRlcm4qIGJ5dGVjb2Rl
LCBjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkKiBvdXRwdXQpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2Nv
cGUoZmFsc2UpOwogICAgIHJldHVybiBJbnRlcnByZXRlcjxVQ2hhcj4oYnl0ZWNvZGUsIG91dHB1
dCwgaW5wdXQsIGxlbmd0aCwgc3RhcnQpLmludGVycHJldCgpOwogfQogCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9DdXJyZW50VGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ3Vy
cmVudFRpbWUuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvV1RGL3d0Zi9DdXJyZW50
VGltZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNyw0ICszMjcsMTYgQEAgc3RkOjpjaHJvbm86
Om1pY3Jvc2Vjb25kcyBjdXJyZW50Q1BVVGltZQogI2VuZGlmCiB9CiAKKy8vIFRoaXMgZnVuY3Rp
b24gaXMgYWx3YXlzIGF2YWlsYWJsZSwgZXZlbiB0aG91Z2ggaGVhZGVycyB3aWxsIGNsYWltIG90
aGVyd2lzZSBiZWNhdXNlIHJlYXNvbnMuCitleHRlcm4gIkMiIHZvaWQgdXNsZWVwKHVuc2lnbmVk
KTsKKwordm9pZCBzbGVlcChkb3VibGUgdmFsdWUpCit7CisjaWYgT1MoV0lORE9XUykKKyAgICBT
bGVlcChzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlICogMTAwMC4wKSk7CisjZWxzZQorICAgIHVzbGVl
cChzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmFsdWUgKiAxMDAwMDAwLjApKTsKKyNlbmRpZgorfQor
CiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0N1cnJlbnRUaW1lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ3VycmVudFRpbWUuaAkocmV2aXNpb24gMTk4
MzAxKQorKysgU291cmNlL1dURi93dGYvQ3VycmVudFRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAt
NjYsMTIgKzY2LDIxIEBAIGlubGluZSBkb3VibGUgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW0K
IC8vIHRoYW4gYSBtaWxsaXNlY29uZC4KIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6OmNocm9ubzo6
bWljcm9zZWNvbmRzIGN1cnJlbnRDUFVUaW1lKCk7CiAKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHNsZWVwKGRvdWJsZSk7CisKK2lubGluZSB2b2lkIHNsZWVwTVMoZG91YmxlIHZhbHVlKQorewor
ICAgIHNsZWVwKHZhbHVlIC8gMTAwMC4wKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKK3Vz
aW5nIFdURjo6Y3VycmVudENQVVRpbWU7CiB1c2luZyBXVEY6OmN1cnJlbnRUaW1lOwogdXNpbmcg
V1RGOjpjdXJyZW50VGltZU1TOwogdXNpbmcgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWU7CiB1c2luZyBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZU1TOwotdXNpbmcgV1RG
OjpjdXJyZW50Q1BVVGltZTsKK3VzaW5nIFdURjo6c2xlZXA7Cit1c2luZyBXVEY6OnNsZWVwTVM7
CiAKICNlbmRpZiAvLyBDdXJyZW50VGltZV9oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDE5
ODMwMSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3
NywxOSArNjc3LDYgQEAKICNkZWZpbmUgVVNFX1NZU1RFTV9NQUxMT0MgMQogI2VuZGlmCiAKLSNk
ZWZpbmUgRU5BQkxFX0RFQlVHX1dJVEhfQlJFQUtQT0lOVCAwCi0jZGVmaW5lIEVOQUJMRV9TQU1Q
TElOR19DT1VOVEVSUyAwCi0jZGVmaW5lIEVOQUJMRV9TQU1QTElOR19GTEFHUyAwCi0jZGVmaW5l
IEVOQUJMRV9TQU1QTElOR19SRUdJT05TIDAKLSNkZWZpbmUgRU5BQkxFX09QQ09ERV9TQU1QTElO
RyAwCi0jZGVmaW5lIEVOQUJMRV9DT0RFQkxPQ0tfU0FNUExJTkcgMAotI2lmIEVOQUJMRShDT0RF
QkxPQ0tfU0FNUExJTkcpICYmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotI2Vycm9yICJDT0RF
QkxPQ0tfU0FNUExJTkcgcmVxdWlyZXMgT1BDT0RFX1NBTVBMSU5HIgotI2VuZGlmCi0jaWYgRU5B
QkxFKE9QQ09ERV9TQU1QTElORykgfHwgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKSB8fCBFTkFCTEUo
U0FNUExJTkdfUkVHSU9OUykKLSNkZWZpbmUgRU5BQkxFX1NBTVBMSU5HX1RIUkVBRCAxCi0jZW5k
aWYKLQogI2lmICFkZWZpbmVkKFVTRV9KU1ZBTFVFNjQpICYmICFkZWZpbmVkKFVTRV9KU1ZBTFVF
MzJfNjQpCiAjaWYgKENQVShYODZfNjQpICYmIChPUyhVTklYKSB8fCBPUyhXSU5ET1dTKSkpIFwK
ICAgICB8fCAoQ1BVKElBNjQpICYmICFDUFUoSUE2NF8zMikpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274247</attachid>
            <date>2016-03-16 17:56:21 -0700</date>
            <delta_ts>2016-03-17 11:56:18 -0700</delta_ts>
            <desc>maybe the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>129708</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4MzEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3NCBA
QAorMjAxNi0wMy0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFJlcGxhY2UgYWxsIG9mIHRoZSB2YXJpb3VzIG5vbi13b3JraW5nIGFuZCBub24tY29tcGlsaW5n
IHNhbXBsaW5nIHByb2ZpbGVyIGhhY2tzIHdpdGggYSBzaW5nbGUgc3VwZXIgaGFjaworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NTYxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBWTSBuZWVkcyBzb21l
IGludGVybmFsIHByb2ZpbGluZyBoYWNrcyBpbiBhZGRpdGlvbiB0byB0aGUgcHJvZmlsZXIocykg
dGhhdCB0aGUgdXNlciBzZWVzLCBiZWNhdXNlCisgICAgICAgIHlvdSBjYW4gc3F1ZWV6ZSBvdXQg
bW9yZSBmaWRlbGl0eSBpZiB5b3UncmUgd2lsbGluZyB0byBtYWtlIHNvbWUga2luZCBvZiBkZWFs
IHdpdGggdGhlIGRldmlsLiBQcmlvcgorICAgICAgICB0byB0aGlzIGNoYW5nZSBKU0MgaGFkIGEg
YnVuY2ggb2YgdGhlc2U6CisKKyAgICAgICAgLSBDb2RlQmxvY2sgc2FtcGxpbmcgcHJvZmlsZXIK
KyAgICAgICAgLSBCeXRlY29kZSBzYW1wbGluZyBwcm9maWxlcgorICAgICAgICAtIFNhbXBsaW5n
IGZsYWdzCisgICAgICAgIC0gU2FtcGxpbmcgcmVnaW9ucworICAgICAgICAtIFNvbWUgb3RoZXIg
c3R1ZmYKKworICAgICAgICBJIHRyaWVkIHVzaW5nIHRoZXNlIHJlY2VudGx5LiBUaGV5IGRpZG4n
dCBldmVuIGJ1aWxkLiBJbml0aWFsbHkgSSBmaXhlZCB0aGF0LCBidXQgdGhlbiBJIGZvdW5kIHRo
YXQKKyAgICAgICAgdGhlc2UgcHJvZmlsZXJzIGhhZCBzb21lIHNlcmlvdXMgYnVncyB0aGF0IG1h
ZGUgdGhlbSByZXBvcnQgYm9ndXMgcmVzdWx0cyAtIGxpa2UgdW5kZXJyZXBvcnRpbmcgdGhlCisg
ICAgICAgIHRpbWUgc3BlbnQgaW4gcmVnaW9ucyBvZiBjb2RlIGJ5IG1vcmUgdGhhbiAyeC4KKwor
ICAgICAgICBQYXJ0IG9mIHRoZSBwcm9ibGVtIGhlcmUgaXMgdGhhdCBhIHByb2ZpbGVyIGxvc2Vz
IGZpZGVsaXR5IGFzIGl0IGdhaW5zIHBvd2VyLiBUaGUgbW9yZSBnZW5lcmFsIGl0CisgICAgICAg
IHRyaWVzIHRvIGJlLCB0aGUgbW9yZSBjb2RlIGdldHMgZXhlY3V0ZWQgb24gdGhlIGhvdCBwYXRo
IGZvciB0aGUgcHJvZmlsZXIsIHdoaWNoIGluY3JlYXNpbmdseQorICAgICAgICBwZXJ0dXJicyB0
aGUgcmVzdWx0cy4gSSBiZWxpZXZlIHRoYXQncyB0aGUgcmVhc29uIGZvciB0aGUgdW5kZXJyZXBv
cnRpbmcgLSBjb2RlIHJhbiBzdWZmaWNpZW50bHkKKyAgICAgICAgc2xvd2VyLCBhbmQgaW4gYSBz
dWZmaWNpZW50bHkgZGlmZmVyZW50IHdheSB3aGVuIHByb2ZpbGluZywgdGhhdCB0aGUgcmVzdWx0
cyB3ZXJlIGp1c3Qgd3JvbmcuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYXR0YWNrcyB0aGlzIHBy
b2JsZW0gZGlyZWN0bHkgYnkgcmVwbGFjaW5nIGFsbCBvZiB0aGUgZGl2ZXJzZSBwcm9maWxpbmcg
aGFja3Mgd2l0aCBqdXN0CisgICAgICAgIG9uZSwgd2hpY2ggSSBjYWxsIHRoZSBTdXBlclNhbXBs
ZXIuIEl0IGNvbnNpc3RzIG9mIGV4YWN0bHkgb25lIGNvdW50ZXIuIFdoZW4gZW5hYmxlZCwgdGhl
IHNhbXBsZXIKKyAgICAgICAgd2lsbCBwZXJpb2RpY2FsbHkgcHJpbnQgKHZpYSBkYXRhTG9nKCkp
IHRoZSBwZXJjZW50YWdlIG9mIHNhbXBsZXMgdGhhdCBzYXcgYSBub24temVybyBjb3VudC4gQmVj
YXVzZQorICAgICAgICBpdCdzIHNvIHNpbXBsZSwgaXQgZ2l2ZXMgYmV0dGVyIGFjY3VyYWN5LiBU
aGlzIGNvbWVzIGFib3V0IGluIHR3byB3YXlzOgorCisgICAgICAgIC0gSXQgcnVucyBhdCBhIGxv
d2VyIHJhdGUuIFRoYXQncyBmaW5lIHNpbmNlIGl0J3Mgb25seSBjaGVja2luZyBvbmUgZmxhZy4g
WW91IGRvbid0IG5lZWQgYSBoaWdoIHJhdGUKKyAgICAgICAgICBmb3IganVzdCBvbmUgZmxhZy4K
KyAgICAgICAgCisgICAgICAgIC0gVGhlIGZhY3QgdGhhdCB0aGVyZSBpcyBvbmx5ICpvbmUqIGZs
YWcgbWVhbnMgdGhhdCB0aGUgdXNlciBtdXN0IGNob29zZSBhIGh5cG90aGVzaXMgYWJvdXQgd2hh
dCBpcworICAgICAgICAgIHNsb3cuIFRoaXMgdHVybnMgdGhlIHByb2JsZW0gb2YgcHJvZmlsaW5n
IGludG8gYSBoeXBvdGhlc2lzIHRlc3RpbmcgcHJvYmxlbSwgd2hpY2ggaXMgYW4gaW5oZXJlbnRs
eQorICAgICAgICAgIGxlc3MgZmxha3kga2luZCBvZiBleHBlcmltZW50IHRvIHJ1bi4KKyAgICAg
ICAgCisgICAgICAgIFRoZSBTdXBlclNhbXBsZXIgaXMgZW5hYmxlZCB3aXRoIGEgcnVudGltZSBm
bGFnIHJhdGhlciB0aGFuIGEgY29tcGlsZS10aW1lIGZsYWcsIHNvIGl0J3MgbXVjaCBsZXNzCisg
ICAgICAgIGxpa2VseSB0byBicmVhay4gVGhhdCBhbHNvIG1lYW5zIHRoYXQgeW91IGNhbiBlbmFi
bGUgaXQgd2l0aG91dCByZWJ1aWxkaW5nIHRoZSB1bml2ZXJzZS4gVGhlIG9sZAorICAgICAgICBz
YW1wbGVycyBhbGwgaGFkIEVOQUJMRSBmbGFncyBpbiBQbGF0Zm9ybS5oLCB3aGljaCB3YXMgcmF0
aGVyIHVuZm9ydHVuYXRlIGZvciBjb21waWxlIHRpbWVzLgorCisgICAgICAgIFN1cGVyU2FtcGxl
ciBzdXBwb3J0cyBib3RoIEpJVCBhbmQgQysrIHVzZXJzLiBDKysgdXNlcnMgc2hvdWxkIHVzZSBT
dXBlclNhbXBsZXJTY29wZS4gVGhlIGRlZmF1bHQKKyAgICAgICAgaWRpb20gaXMgdG8gY3JlYXRl
IG9uZSBhbmQgcGFzcyAidHJ1ZSIgdG8gaXQuIFlvdSBjYW4gZGlzYWJsZSBhIHNjb3BlIGJ5IHBh
c3NpbmcgImZhbHNlIiBpbnN0ZWFkLgorICAgICAgICBUaGlzIHBhdGNoIHB1dHMgYSBidW5jaCBv
ZiBzY29wZXMgaW4gcGxhY2VzIEkgY2FyZSBhYm91dC4gSSB0aGluayBpdCdzIHByb2JhYmx5IE9L
IGlmIHBlb3BsZSBjaGVjayBpbgorICAgICAgICB0aGVzZSBkZWFjdGl2YXRlZCBzY29wZXMuIFRo
YXQgbWFrZXMgaXQgY29udmVuaWVudCB0byByZXRlc3QgdGhpbmdzIHdlJ3ZlIHRlc3RlZCBwcmV2
aW91c2x5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9TYW1w
bGluZ1Rvb2wuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5o
OiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjppbml0aWFsaXplU3VwZXJTYW1wbGVyKToKKyAgICAgICAgKEpTQzo6cHJp
bnRTdXBlclNhbXBsZXJTdGF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpTdXBlclNhbXBsZXJTY29wZTo6U3VwZXJTYW1wbGVyU2Nv
cGUpOgorICAgICAgICAoSlNDOjpTdXBlclNhbXBsZXJTY29wZTo6flN1cGVyU2FtcGxlclNjb3Bl
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+Ojpmb3JBbGxWYWx1ZXMpOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpjbG9iYmVyU3RydWN0dXJlcyk6Cisg
ICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OnBlcmZvcm1Bcmd1bWVudHNFbGltaW5hdGlvbik6CisgICAgICAgICogZGZnL0RG
R0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZv
cm1CYWNrd2FyZHNQcm9wYWdhdGlvbik6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwYXJzZSk6CisgICAgICAgICogZGZnL0RGR0NGQVBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtQ0ZBKToKKyAgICAgICAgKiBkZmcv
REZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9y
bUNGR1NpbXBsaWZpY2F0aW9uKToKKyAgICAgICAgKiBkZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0aHJlYWRpbmdQaGFzZTo6ZnJlZVVubmVj
ZXNzYXJ5Tm9kZXMpOgorICAgICAgICAoSlNDOjpERkc6OkNQU1JldGhyZWFkaW5nUGhhc2U6OmNh
bm9uaWNhbGl6ZUxvY2Fsc0luQmxvY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVh
ZGluZ1BoYXNlOjpwcm9wYWdhdGVQaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtQ1BT
UmV0aHJlYWRpbmcpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6cGVyZm9ybUxvY2FsQ1NFKToKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtR2xv
YmFsQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ2xlYW5VcFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpwZXJmb3JtQ2xlYW5VcCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtQ29uc3RhbnRGb2xkaW5nKToK
KyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpwZXJmb3JtQ29uc3RhbnRIb2lzdGluZyk6CisgICAgICAgICogZGZnL0RGR0NyaXRp
Y2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1Dcml0
aWNhbEVkZ2VCcmVha2luZyk6CisgICAgICAgICogZGZnL0RGR0RDRVBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpwZXJmb3JtRENFKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1GaXh1cCk6CisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZGV0aHJlYWQpOgor
ICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6cGVyZm9ybUludGVnZXJDaGVja0NvbWJpbmluZyk6CisgICAgICAgICogZGZn
L0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpwZXJmb3JtSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSW52
YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVy
Zm9ybUludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29t
cGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAg
KiBkZmcvREZHTElDTVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtTElDTSk6
CisgICAgICAgICogZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1MaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlv
blBoYXNlKToKKyAgICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgICogZGZn
L0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpw
ZXJmb3JtTG9vcFByZUhlYWRlckNyZWF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTWF4aW1hbEZs
dXNoSW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1NYXhpbWFs
Rmx1c2hJbnNlcnRpb24pOgorICAgICAgICAqIGRmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtTW92SGludFJlbW92YWwpOgorICAgICAgICAq
IGRmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpwZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMpOgorICAgICAgICAqIGRmZy9ERkdP
U1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9y
bU9TUkVudHJ5cG9pbnRDcmVhdGlvbik6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxl
ci5jcHA6CisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1PYmplY3RBbGxvY2F0aW9uU2lua2luZyk6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdQaGFudG9t
SW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1QaGFudG9tSW5z
ZXJ0aW9uKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
UGxhbjo6Y29tcGlsZUluVGhyZWFkKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvbkluamVj
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtUHJlZGljdGlvbkluamVj
dGlvbik6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtUHJlZGljdGlvblByb3BhZ2F0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OnBlcmZvcm1QdXRTdGFja1NpbmtpbmcpOgorICAgICAgICAqIGRmZy9ERkdTU0FDb252ZXJzaW9u
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1TU0FDb252ZXJzaW9uKToKKyAg
ICAgICAgKiBkZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
cGVyZm9ybVNTQUxvd2VyaW5nKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJm
b3JtU3RhY2tMYXlvdXQpOgorICAgICAgICAqIGRmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVz
dGltYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVN0YXRpY0V4ZWN1
dGlvbkNvdW50RXN0aW1hdGlvbik6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2Vy
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtRmFzdFN0b3JlQmFycmll
ckluc2VydGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybUdsb2JhbFN0b3JlQmFycmll
ckluc2VydGlvbik6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1TdHJlbmd0aFJlZHVjdGlvbik6CisgICAgICAg
ICogZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFzc2VydElzUmVnaXN0ZXJlZCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y2xvYmJlcik6CisgICAgICAgIChKU0M6
OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW5zaXRpb24pOgorICAgICAg
ICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9ucyk6
CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VTbG93KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZU5vdFRvcCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJTbG93KToKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjb250YWlucyk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdWJzZXRPZik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdXBlcnNldE9mKToKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvdmVybGFwcyk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZXF1YWxzU2xvdyk6CisgICAgICAgICogZGZnL0RG
R1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJm
b3JtU3RydWN0dXJlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJ
bmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVRpZXJVcENoZWNr
SW5qZWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVR5cGVDaGVja0hvaXN0aW5nKToKKyAgICAgICAg
KiBkZmcvREZHVW5pZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9y
bVVuaWZpY2F0aW9uKToKKyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVZhcmFyZ3NGb3J3YXJkaW5nKToKKyAgICAg
ICAgKiBkZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpwZXJmb3JtVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvbik6CisgICAgICAgICog
ZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OnBlcmZvcm1XYXRjaHBvaW50Q29sbGVjdGlvbik6CisgICAgICAgICogZHluYmVuY2guY3BwOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlUmVnRXhwRXhlYyk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVSZWdFeHBUZXN0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVN0cmluZ1JlcGxhY2UpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4
KToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjb21waWxlRlRMT1NSRXhpdCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzdG9yZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjphYnNvbHV0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjppbmNyZW1lbnRTdXBl
clNhbXBsZXJDb3VudCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpkZWNyZW1lbnRTdXBl
clNhbXBsZXJDb3VudCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6YmFzZUluZGV4KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxv
YWQ4U2lnbkV4dDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWQ4WmVyb0V4dDMy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFuY2hvcik6CisgICAgICAgIChKU0M6OkZU
TDo6T3V0cHV0OjphYnNvbHV0ZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoK
KyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29s
bGVjdEFuZFN3ZWVwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdEltcGwpOgorICAgICAg
ICAoSlNDOjpIZWFwOjp6b21iaWZ5RGVhZE9iamVjdHMpOgorICAgICAgICAqIGhlYXAvTWFya2Vk
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCk6
CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpz
ZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChKU0M6OmNoZWNrZWRSZXR1cm4pOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ2FsbCk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmRlYnVnKToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdTY29wZTo6U2FtcGxp
bmdTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNhbXBsaW5nU2NvcGU6On5TYW1wbGlu
Z1Njb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZVNhbXBs
ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZHVtcFNhbXBsZURhdGEp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6c3RhcnRTYW1wbGluZyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpzdG9wU2FtcGxpbmcpOiBEZWxldGVk
LgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjppc0NhbGxCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpz
YW1wbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdEZhc3RUeXBlZEFycmF5KToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjppbmNyZW1lbnRTdXBlclNhbXBsZXJDb3Vu
dCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZGVjcmVtZW50U3VwZXJTYW1wbGVy
Q291bnQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnB1cmlmeU5hTik6CisgICAg
ICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAg
ICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAg
ICAgICogaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHA6CisgICAgICAgICogaml0L0pJVENhbGwu
Y3BwOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAg
ICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKiBqc2MuY3Bw
OgorICAgICAgICAocnVuV2l0aFNjcmlwdHMpOgorICAgICAgICAoanNjbWFpbik6CisgICAgICAg
ICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAg
IChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFs
aXplVGhyZWFkaW5nKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBy
dW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwTWF0
Y2hlc0FycmF5Lmg6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSk6Cisg
ICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZW1v
dmVVc2luZ1JlZ0V4cFNlYXJjaCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1YnN0
cmluZyk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpyZXNl
dERhdGVDYWNoZSk6CisgICAgICAgIChKU0M6OlZNOjp3aGVuSWRsZSk6CisgICAgICAgIChKU0M6
OlZNOjpkZWxldGVBbGxDb2RlKToKKyAgICAgICAgKEpTQzo6Vk06OmFkZFNvdXJjZVByb3ZpZGVy
Q2FjaGUpOgorICAgICAgICAoSlNDOjpWTTo6c3RhcnRTYW1wbGluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OlZNOjpzdG9wU2FtcGxpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWTTo6
ZHVtcFNhbXBsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAg
ICAgKEpTQzo6Vk06OnJlZ0V4cENhY2hlKToKKyAgICAgICAgKiB0ZXN0UmVnRXhwLmNwcDoKKyAg
ICAgICAgKHJ1bkZyb21GaWxlcyk6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpZYXJyOjppbnRlcnByZXQpOgorCiAyMDE2LTAzLTE1ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogIWVk
Z2UtPmlzUGhhbnRvbUFsbG9jYXRpb24oKSBpbiByZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW5rLWh1
Z2UtYWN0aXZhdGlvbi5qcy5mdGwtZWFnZXIgaW4gZGVidWcgbW9kZQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsMTIgKzIxMywx
MiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0
dXMuY3BwCiAgICAgYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCiAgICAgYnl0ZWNvZGUvUmVk
dWNlV2hpdGVzcGFjZS5jcHAKLSAgICBieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwCiAgICAgYnl0
ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3Bw
CiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVN0
dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwCisgICAgYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAogICAgIGJ5dGVjb2RlL1RvVGhpc1N0
YXR1cy5jcHAKICAgICBieXRlY29kZS9UcmFja2VkUmVmZXJlbmNlcy5jcHAKICAgICBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9keW5i
ZW5jaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2R5bmJlbmNoLmNw
cAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2R5bmJlbmNoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJTdGFja1Zpc2l0b3Iu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlUmFy
ZURhdGFJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVGVz
dFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAi
V0FTTU1vZHVsZVBhcnNlci5oIgpAQCAtMTkxOSw4ICsxOTIwLDYgQEAgc3RhdGljIGJvb2wgcnVu
V2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAgZmlsZU5hbWUgPSBBU0NJSUxp
dGVyYWwoIltDb21tYW5kIExpbmVdIik7CiAgICAgICAgIH0KIAotICAgICAgICB2bS5zdGFydFNh
bXBsaW5nKCk7Ci0KICAgICAgICAgaWYgKG1vZHVsZSkgewogICAgICAgICAgICAgaWYgKCFwcm9t
aXNlKQogICAgICAgICAgICAgICAgIHByb21pc2UgPSBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHRCdWZmZXIsIGZpbGVOYW1l
KSk7CkBAIC0xOTM2LDIwICsxOTM1LDkgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xv
YmFsT2JqZWN0KgogICAgICAgICAgICAgZHVtcEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIGV2YWx1
YXRpb25FeGNlcHRpb24pOwogICAgICAgICB9CiAKLSAgICAgICAgdm0uc3RvcFNhbXBsaW5nKCk7
CiAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLT5jbGVhckV4Y2VwdGlvbigpOwog
ICAgIH0KIAotI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKLSAgICBTYW1wbGluZ0ZsYWdzOjpz
dG9wKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU0FNUExJTkdfUkVHSU9OUykKLSAgICBTYW1wbGlu
Z1JlZ2lvbjo6ZHVtcCgpOwotI2VuZGlmCi0gICAgdm0uZHVtcFNhbXBsZURhdGEoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCkpOwotI2lmIEVOQUJMRShTQU1QTElOR19DT1VOVEVSUykKLSAgICBB
YnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6ZHVtcCgpOwotI2VuZGlmCiAjaWYgRU5BQkxFKFJFR0VY
UF9UUkFDSU5HKQogICAgIHZtLmR1bXBSZWdFeHBUcmFjZSgpOwogI2VuZGlmCkBAIC0yMjEwLDYg
KzIxOTgsOCBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgIHZt
LT5oZWFwLmNvbGxlY3RBbGxHYXJiYWdlKCk7CiAgICAgfQogCisgICAgcHJpbnRTdXBlclNhbXBs
ZXJTdGF0ZSgpOworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0UmVnRXhwLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RSZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODksNyArNDg5LDYgQEAg
c3RhdGljIGJvb2wgcnVuRnJvbUZpbGVzKEdsb2JhbE9iamVjdCogZwogCiAgICAgZGVsZXRlW10g
bGluZUJ1ZmZlcjsKIAotICAgIHZtLmR1bXBTYW1wbGVEYXRhKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpKTsKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgdm0uZHVtcFJlZ0V4cFRy
YWNlKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzc2LDYgKzM3Niw4IEBACiAJ
CTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ4NTMyNTE4N0RGREVD
MDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuY3BwICovOyB9OwogCQkwRjQ4NTMyQTE4N0RG
REVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDg1MzI2MTg3REZERUMwMDgzQjY4NyAvKiBGVExS
ZWNvdmVyeU9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGNDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ5M0FGODE2
RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwICovOyB9OworCQkwRjRBMzhGOTFD
OEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNEEzOEY3MUM4RTEzREYwMDE5MDMxOCAvKiBTdXBl
clNhbXBsZXIuY3BwICovOyB9OworCQkwRjRBMzhGQTFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJT
YW1wbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjRBMzhGODFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0Qjk0REMxN0I5RjA3NTAwREQw
M0E0IC8qIFR5cGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjRCOTREQjE3QjlGMDc1MDBERDAzQTQgLyogVHlwZWRBcnJheUlu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjRDOTE2NjFDMjlGNEYyMDA0MzQxQTYgLyogQjNPcmlnaW5EdW1wLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRDOTE2NTFDMjlGNEYyMDA0MzQx
QTYgLyogQjNPcmlnaW5EdW1wLmggKi87IH07CiAJCTBGNERFMUNFMUM0QzFCNTQwMDRENkMxMSAv
KiBBaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNERFMUNDMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3Vz
U3BpbGxzLmNwcCAqLzsgfTsKQEAgLTk4OCw4ICs5OTAsNiBAQAogCQkxNDI5RDc3QzBFRDIwRDcz
MDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0MjlENzdCMEVEMjBENzMwMEI4OTYxOSAvKiBJbnRlcnByZXRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MjlE
N0Q0MEVEMjEyODIwMEI4OTYxOSAvKiBJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDI5RDdEMzBFRDIxMjgyMDBCODk2MTkgLyog
SW50ZXJwcmV0ZXIuY3BwICovOyB9OwogCQkxNDI5RDg3ODBFRDIxQUNEMDBCODk2MTkgLyogRXhj
ZXB0aW9uSGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDI5RDg3NzBFRDIxQUNEMDBCODk2MTkgLyogRXhjZXB0aW9uSGVscGVycy5jcHAg
Ki87IH07Ci0JCTE0MjlEODg1MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyOUQ4ODMwRUQy
MUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5jcHAgKi87IH07Ci0JCTE0MjlEODg2MEVEMjFD
M0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjlEODg0MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rv
b2wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
NDI5RDhERDBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjlEOERCMEVEMjIwNUIwMEI4OTYxOSAv
KiBDYWxsRnJhbWUuY3BwICovOyB9OwogCQkxNDI5RDhERTBFRDIyMDVCMDBCODk2MTkgLyogQ2Fs
bEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDI5RDhEQzBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQyOUQ5MkYwRUQyMkQ3MDAwQjg5NjE5
IC8qIEpJVC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDI5RDkyRDBFRDIyRDcwMDBCODk2MTkgLyogSklULmNwcCAqLzsgfTsKQEAgLTI1MzAsNiAr
MjUzMCw4IEBACiAJCTBGNDg1MzI1MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29k
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExSZWNvdmVyeU9w
Y29kZS5jcHA7IHBhdGggPSBmdGwvRlRMUmVjb3ZlcnlPcGNvZGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjQ4NTMyNjE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlP
cGNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMUmVjb3ZlcnlPcGNv
ZGUuaDsgcGF0aCA9IGZ0bC9GVExSZWNvdmVyeU9wY29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQ5M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlUHJvdmlkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjRBMzhGNzFDOEUxM0RGMDAxOTAzMTgg
LyogU3VwZXJTYW1wbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN1cGVyU2FtcGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNEEzOEY4
MUM4RTEzREYwMDE5MDMxOCAvKiBTdXBlclNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3VwZXJTYW1wbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNEI5NERCMTdCOUYwNzUwMEREMDNBNCAvKiBUeXBlZEFycmF5SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlZEFycmF5SW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjRDOTE2NTFDMjlGNEYyMDA0MzQxQTYgLyogQjNPcmlnaW5E
dW1wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzT3JpZ2luRHVtcC5oOyBw
YXRoID0gYjMvQjNPcmlnaW5EdW1wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NERFMUNDMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpckZpeE9idmlvdXNTcGlsbHMuY3BwOyBw
YXRoID0gYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzEyNCw4ICszMTI2LDYgQEAKIAkJMTQyOUQ3RDMwRUQyMTI4MjAwQjg5NjE5
IC8qIEludGVycHJldGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEludGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQyOUQ4NUIw
RUQyMThFOTAwQjg5NjE5IC8qIEpTU3RhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNTdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
MjlEODc3MEVEMjFBQ0QwMEI4OTYxOSAvKiBFeGNlcHRpb25IZWxwZXJzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlvbkhlbHBlcnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxNDI5RDg4MzBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxp
bmdUb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsaW5n
VG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0MjlEODg0MEVEMjFDM0Qw
MEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2FtcGxpbmdUb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MjlEOERC
MEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTQyOUQ4REMwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gQ2FsbEZyYW1lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2Rl
Lmxhbmcub2JqY3BwOyB9OwogCQkxNDI5RDkyRDBFRDIyRDcwMDBCODk2MTkgLyogSklULmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02NTc2LDggKzY1NzYsNiBAQAogCQkJCTBGOUZDOEMxMTRFMUI1
RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJCQkJMEZGNjBBQkYxNjc0MEY4MTAwMDI5Nzc5
IC8qIFJlZHVjZVdoaXRlc3BhY2UuY3BwICovLAogCQkJCTBGRjYwQUMwMTY3NDBGODEwMDAyOTc3
OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmggKi8sCi0JCQkJMTQyOUQ4ODMwRUQyMUMzRDAwQjg5NjE5
IC8qIFNhbXBsaW5nVG9vbC5jcHAgKi8sCi0JCQkJMTQyOUQ4ODQwRUQyMUMzRDAwQjg5NjE5IC8q
IFNhbXBsaW5nVG9vbC5oICovLAogCQkJCTBGNTU0MUFGMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVj
aWFsUG9pbnRlci5jcHAgKi8sCiAJCQkJMEY1NTQxQjAxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNp
YWxQb2ludGVyLmggKi8sCiAJCQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFNwZWN1bGF0
ZWRUeXBlLmNwcCAqLywKQEAgLTY1ODgsNiArNjU4Niw4IEBACiAJCQkJMEY3NjZEMzcxNUFFNEEx
QTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCAqLywKIAkJCQlC
Q0NGMEQwQjBFRjBCOEE1MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uY3BwICovLAogCQkJ
CUJDQ0YwRDA3MEVGMEFBQjkwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5oICovLAorCQkJ
CTBGNEEzOEY3MUM4RTEzREYwMDE5MDMxOCAvKiBTdXBlclNhbXBsZXIuY3BwICovLAorCQkJCTBG
NEEzOEY4MUM4RTEzREYwMDE5MDMxOCAvKiBTdXBlclNhbXBsZXIuaCAqLywKIAkJCQkwRjJENERF
NTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLywKIAkJCQkwRjJENERFNjE5
ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggKi8sCiAJCQkJMEY5NTJBQkExQjQ4N0E3
NzAwQzM2N0M1IC8qIFRyYWNrZWRSZWZlcmVuY2VzLmNwcCAqLywKQEAgLTc4NTQsNiArNzg1NCw3
IEBACiAJCQkJMEZCMzg3OTAxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpck9wdGltaXplQmxvY2tPcmRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5QkExNjZBRDM2MDAwMEY1QkEzIC8qIFByb2Zp
bGVyQ29tcGlsYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUJCMTY2QUQzNjAwMDBG
NUJBMyAvKiBQcm9maWxlckNvbXBpbGF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0
QTM4RkExQzhFMTNERjAwMTkwMzE4IC8qIFN1cGVyU2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZGNzI5QkMxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5QkQxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVy
RGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUJFMTY2QUQzNjAwMDBGNUJBMyAv
KiBQcm9maWxlckV4ZWN1dGlvbkNvdW50ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNzkxMyw3ICs3
OTE0LDYgQEAKIAkJCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MkMwNjExRjFBQTUxRTFDMDBCNEFEQkEgLyogUnVudGltZVR5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyMkIzMUI5MTQwNTc3RDcwMERCNDc1QSAvKiBTYW1w
bGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTE0MjlEODg2MEVEMjFDM0QwMEI4OTYx
OSAvKiBTYW1wbGluZ1Rvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDI4MUFBOTA5NTYw
MEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDI5
MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFMDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTkwNjksNiArOTA2OSw3IEBACiAJCQkJRkUzODRFRTcxQUREQjdBRDAwNTVERTJD
IC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDcx
MDdFQzM3NjAwNDI3QTQ4IC8qIEpTRW52aXJvbm1lbnRSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQwNTY2RDYxMDdFQzI3MTAwNURCQzhEIC8qIEpTRnVuY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEY0QTM4RjkxQzhFMTNERjAwMTkwMzE4IC8qIFN1cGVyU2FtcGxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3OTdFMDdBOTFCOEZDRkI5MDA4NDAwQkEgLyogSlNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDIxMDdFQzM3
NjAwNDI3QTQ4IC8qIEpTR2xvYmFsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQw
MDg1MTg5QjFCN0UwMDYzMzIzMSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTkyNjEsNyArOTI2Miw2IEBACiAJCQkJMEY2QjhBRDgxQzRFRERBMjAw
OTY5MDUyIC8qIEIzRHVwbGljYXRlVGFpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI3Nzcz
REUxQUFGODNBQzAwQkRFN0U4IC8qIFJ1bnRpbWVUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMTQyOUQ4ODUwRUQyMUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAyNzFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJn
dW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDJGMUFBQTgwNjkwMEQzM0IzMyAv
KiBTY29wZWRBcmd1bWVudHNUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OTJBQkNGOTFC
RUE5QkQyMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rv
b2wuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU2FtcGxpbmdUb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0NzkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCi0KLSNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgotI2luY2x1ZGUgIk9wY29k
ZS5oIgotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotI2lmICFPUyhXSU5ET1dTKQotI2luY2x1
ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBKU0MgewotCi0jaWYgRU5BQkxFKFNB
TVBMSU5HX0ZMQUdTKQotCi12b2lkIFNhbXBsaW5nRmxhZ3M6OnNhbXBsZSgpCi17Ci0gICAgdWlu
dDMyX3QgbWFzayA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigxIDw8IDMxKTsKLSAgICB1bnNpZ25l
ZCBpbmRleDsKLQotICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IDMyOyArK2luZGV4KSB7Ci0g
ICAgICAgIGlmIChtYXNrICYgc19mbGFncykKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBt
YXNrID4+PSAxOwotICAgIH0KLQotICAgIHNfZmxhZ0NvdW50c1szMiAtIGluZGV4XSsrOwotfQot
Ci12b2lkIFNhbXBsaW5nRmxhZ3M6OnN0YXJ0KCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDw9IDMyOyArK2kpCi0gICAgICAgIHNfZmxhZ0NvdW50c1tpXSA9IDA7Ci19Ci12b2lkIFNh
bXBsaW5nRmxhZ3M6OnN0b3AoKQotewotICAgIHVpbnQ2NF90IHRvdGFsID0gMDsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDw9IDMyOyArK2kpCi0gICAgICAgIHRvdGFsICs9IHNfZmxhZ0Nv
dW50c1tpXTsKLQotICAgIGlmICh0b3RhbCkgewotICAgICAgICBkYXRhTG9nRigiXG5TYW1wbGlu
Z0ZsYWdzOiBzYW1wbGUgY291bnRzIHdpdGggZmxhZ3Mgc2V0OiAoJWxsZCB0b3RhbClcbiIsIHRv
dGFsKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8PSAzMjsgKytpKSB7Ci0gICAg
ICAgICAgICBpZiAoc19mbGFnQ291bnRzW2ldKQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIg
IFsgJTAyZCBdIDogJWxsZFx0XHQoJTAzLjJmJSUpXG4iLCBpLCBzX2ZsYWdDb3VudHNbaV0sICgx
MDAuMCAqIHNfZmxhZ0NvdW50c1tpXSkgLyB0b3RhbCk7Ci0gICAgICAgIH0KLSAgICAgICAgZGF0
YUxvZ0YoIlxuIik7Ci0gICAgfSBlbHNlCi0gICAgZGF0YUxvZ0YoIlxuU2FtcGxpbmdGbGFnczog
bm8gc2FtcGxlcy5cblxuIik7Ci19Ci11aW50NjRfdCBTYW1wbGluZ0ZsYWdzOjpzX2ZsYWdDb3Vu
dHNbMzNdOwotCi0jZWxzZQotdm9pZCBTYW1wbGluZ0ZsYWdzOjpzdGFydCgpIHt9Ci12b2lkIFNh
bXBsaW5nRmxhZ3M6OnN0b3AoKSB7fQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU0FNUExJTkdfUkVH
SU9OUykKLXZvbGF0aWxlIHVpbnRwdHJfdCBTYW1wbGluZ1JlZ2lvbjo6c19jdXJyZW50T3JSZXNl
cnZlZDsKLVNwZWN0cnVtPGNvbnN0IGNoYXIqPiogU2FtcGxpbmdSZWdpb246OnNfc3BlY3RydW07
Ci11bnNpZ25lZCBsb25nIFNhbXBsaW5nUmVnaW9uOjpzX25vbmVPZlRoZUFib3ZlOwotdW5zaWdu
ZWQgU2FtcGxpbmdSZWdpb246OnNfbnVtYmVyT2ZTYW1wbGVzU2luY2VEdW1wOwotCi1TYW1wbGlu
Z1JlZ2lvbjo6TG9ja2VyOjpMb2NrZXIoKQotewotICAgIHVpbnRwdHJfdCBwcmV2aW91czsKLSAg
ICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBwcmV2aW91cyA9IHNfY3VycmVudE9yUmVzZXJ2ZWQ7
Ci0gICAgICAgIGlmIChwcmV2aW91cyAmIDEpIHsKLSNpZiBPUyhVTklYKQotICAgICAgICAgICAg
c2NoZWRfeWllbGQoKTsKLSNlbmRpZgotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKFdURjo6d2Vha0NvbXBhcmVBbmRTd2FwVUludFB0cigmc19jdXJyZW50T3JS
ZXNlcnZlZCwgcHJldmlvdXMsIHByZXZpb3VzIHwgMSkpCi0gICAgICAgICAgICBicmVhazsKLSAg
ICB9Ci19Ci0KLVNhbXBsaW5nUmVnaW9uOjpMb2NrZXI6On5Mb2NrZXIoKQotewotICAgIC8vIFdl
IGRvbid0IG5lZWQgdGhlIENBUywgYnV0IHdlIGRvIGl0IG91dCBvZiBhbgotICAgIC8vIGFidW5k
YW5jZSBvZiBjYXV0aW9uIChhbmQgYmVjYXVzZSBpdCBnaXZlcyB1cyBhIG1lbW9yeSBmZW5jZSwg
d2hpY2ggaXMKLSAgICAvLyBuZXZlciBiYWQpLgotICAgIHVpbnRwdHJfdCBwcmV2aW91czsKLSAg
ICBkbyB7Ci0gICAgICAgIHByZXZpb3VzID0gc19jdXJyZW50T3JSZXNlcnZlZDsKLSAgICB9IHdo
aWxlICghV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXBVSW50UHRyKCZzX2N1cnJlbnRPclJlc2VydmVk
LCBwcmV2aW91cywgcHJldmlvdXMgJiB+MSkpOwotfQotCi12b2lkIFNhbXBsaW5nUmVnaW9uOjpz
YW1wbGUoKQotewotICAgIC8vIE1ha2Ugc3VyZSB3ZSBsb2NrIHNfY3VycmVudC4KLSAgICBMb2Nr
ZXIgbG9ja2VyOwotICAgIAotICAgIC8vIENyZWF0ZSBhIHNwZWN0cnVtIGlmIHdlIGRvbid0IGhh
dmUgb25lIGFscmVhZHkuCi0gICAgaWYgKCFzX3NwZWN0cnVtKQotICAgICAgICBzX3NwZWN0cnVt
ID0gbmV3IFNwZWN0cnVtPGNvbnN0IGNoYXIqPigpOwotICAgIAotICAgIEFTU0VSVChzX2N1cnJl
bnRPclJlc2VydmVkICYgMSk7Ci0gICAgCi0gICAgLy8gV2FsayB0aGUgcmVnaW9uIHN0YWNrLCBh
bmQgcmVjb3JkIGVhY2ggcmVnaW9uIHdlIHNlZS4KLSAgICBTYW1wbGluZ1JlZ2lvbiogcmVnaW9u
ID0gYml0d2lzZV9jYXN0PFNhbXBsaW5nUmVnaW9uKj4oc19jdXJyZW50T3JSZXNlcnZlZCAmIH4x
KTsKLSAgICBpZiAocmVnaW9uKSB7Ci0gICAgICAgIGZvciAoOyByZWdpb247IHJlZ2lvbiA9IHJl
Z2lvbi0+bV9wcmV2aW91cykKLSAgICAgICAgICAgIHNfc3BlY3RydW0tPmFkZChyZWdpb24tPm1f
bmFtZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNfbm9uZU9mVGhlQWJvdmUrKzsKLSAgICAKLSAg
ICBpZiAoc19udW1iZXJPZlNhbXBsZXNTaW5jZUR1bXArKyA9PSBTYW1wbGluZ1RocmVhZDo6c19o
ZXJ0eikgewotICAgICAgICBzX251bWJlck9mU2FtcGxlc1NpbmNlRHVtcCA9IDA7Ci0gICAgICAg
IGR1bXBJbnRlcm5hbCgpOwotICAgIH0KLX0KLQotdm9pZCBTYW1wbGluZ1JlZ2lvbjo6ZHVtcCgp
Ci17Ci0gICAgTG9ja2VyIGxvY2tlcjsKLSAgICAKLSAgICBkdW1wSW50ZXJuYWwoKTsKLX0KLQot
dm9pZCBTYW1wbGluZ1JlZ2lvbjo6ZHVtcEludGVybmFsKCkKLXsKLSAgICBpZiAoIXNfc3BlY3Ry
dW0pIHsKLSAgICAgICAgZGF0YUxvZ0YoIlxuU2FtcGxpbmdSZWdpb246IHdhcyBuZXZlciBzYW1w
bGVkLlxuXG4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBWZWN0b3I8U3Bl
Y3RydW08Y29uc3QgY2hhcio+OjpLZXlBbmRDb3VudD4gbGlzdCA9IHNfc3BlY3RydW0tPmJ1aWxk
TGlzdCgpOwotICAgIAotICAgIHVuc2lnbmVkIGxvbmcgdG90YWwgPSBzX25vbmVPZlRoZUFib3Zl
OwotICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgpOyBpLS07KQotICAgICAgICB0b3Rh
bCArPSBsaXN0W2ldLmNvdW50OwotICAgIAotICAgIGRhdGFMb2dGKCJcblNhbXBsaW5nUmVnaW9u
OiBzYW1wbGUgY291bnRzIGZvciByZWdpb25zOiAoJWx1IHNhbXBsZXMpXG4iLCB0b3RhbCk7Ci0K
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNpemUoKTsgaS0tOykKLSAgICAgICAgZGF0YUxv
Z0YoIiAgICAlMy4ybGYlJSAgJXNcbiIsICgxMDAuMCAqIGxpc3RbaV0uY291bnQpIC8gdG90YWws
IGxpc3RbaV0ua2V5KTsKLX0KLSNlbHNlIC8vIEVOQUJMRShTQU1QTElOR19SRUdJT05TKQotdm9p
ZCBTYW1wbGluZ1JlZ2lvbjo6ZHVtcCgpIHsgfQotI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19S
RUdJT05TKQotCi0vKgotICBTdGFydCB3aXRoIGZsYWcgMTYgc2V0LgotICBCeSBkb2luZyB0aGlz
IHRoZSBtb25pdG9yaW5nIG9mIGxvd2VyIHZhbHVlZCBmbGFncyB3aWxsIGJlIG1hc2tlZCBvdXQK
LSAgdW50aWwgZmxhZyAxNiBpcyBleHBsaWN0bHkgY2xlYXJlZC4KLSovCi11aW50MzJfdCBTYW1w
bGluZ0ZsYWdzOjpzX2ZsYWdzID0gMSA8PCAxNTsKLQotCi0jaWYgT1MoV0lORE9XUykKLQotc3Rh
dGljIHZvaWQgc2xlZXBGb3JNaWNyb3NlY29uZHModW5zaWduZWQgdXMpCi17Ci0gICAgdW5zaWdu
ZWQgbXMgPSB1cyAvIDEwMDA7Ci0gICAgaWYgKHVzICYmICFtcykKLSAgICAgICAgbXMgPSAxOwot
ICAgIFNsZWVwKG1zKTsKLX0KLQotI2Vsc2UgCi0KLXN0YXRpYyB2b2lkIHNsZWVwRm9yTWljcm9z
ZWNvbmRzKHVuc2lnbmVkIHVzKQotewotICAgIHVzbGVlcCh1cyk7Ci19Ci0KLSNlbmRpZgotCi1z
dGF0aWMgaW5saW5lIHVuc2lnbmVkIGhlcnR6MnVzKHVuc2lnbmVkIGhlcnR6KQotewotICAgIHJl
dHVybiAxMDAwMDAwIC8gaGVydHo7Ci19Ci0KLQotU2FtcGxpbmdUb29sKiBTYW1wbGluZ1Rvb2w6
OnNfc2FtcGxpbmdUb29sID0gMDsKLQotCi1ib29sIFNhbXBsaW5nVGhyZWFkOjpzX3J1bm5pbmcg
PSBmYWxzZTsKLXVuc2lnbmVkIFNhbXBsaW5nVGhyZWFkOjpzX2hlcnR6ID0gMTAwMDA7Ci1UaHJl
YWRJZGVudGlmaWVyIFNhbXBsaW5nVGhyZWFkOjpzX3NhbXBsaW5nVGhyZWFkOwotCi12b2lkIFNh
bXBsaW5nVGhyZWFkOjp0aHJlYWRTdGFydEZ1bmModm9pZCopCi17Ci0gICAgd2hpbGUgKHNfcnVu
bmluZykgewotICAgICAgICBzbGVlcEZvck1pY3Jvc2Vjb25kcyhoZXJ0ejJ1cyhzX2hlcnR6KSk7
Ci0KLSNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi0gICAgICAgIFNhbXBsaW5nRmxhZ3M6OnNh
bXBsZSgpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNBTVBMSU5HX1JFR0lPTlMpCi0gICAgICAgIFNh
bXBsaW5nUmVnaW9uOjpzYW1wbGUoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShPUENPREVfU0FNUExJ
TkcpCi0gICAgICAgIFNhbXBsaW5nVG9vbDo6c2FtcGxlKCk7Ci0jZW5kaWYKLSAgICB9Ci19Ci0K
LQotdm9pZCBTYW1wbGluZ1RocmVhZDo6c3RhcnQodW5zaWduZWQgaGVydHopCi17Ci0gICAgQVNT
RVJUKCFzX3J1bm5pbmcpOwotICAgIHNfcnVubmluZyA9IHRydWU7Ci0gICAgc19oZXJ0eiA9IGhl
cnR6OwotCi0gICAgc19zYW1wbGluZ1RocmVhZCA9IGNyZWF0ZVRocmVhZCh0aHJlYWRTdGFydEZ1
bmMsIDAsICJKYXZhU2NyaXB0Q29yZTo6U2FtcGxlciIpOwotfQotCi12b2lkIFNhbXBsaW5nVGhy
ZWFkOjpzdG9wKCkKLXsKLSAgICBBU1NFUlQoc19ydW5uaW5nKTsKLSAgICBzX3J1bm5pbmcgPSBm
YWxzZTsKLSAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihzX3NhbXBsaW5nVGhyZWFkKTsKLX0K
LQotCi12b2lkIFNjcmlwdFNhbXBsZVJlY29yZDo6c2FtcGxlKENvZGVCbG9jayogY29kZUJsb2Nr
LCBJbnN0cnVjdGlvbiogdlBDKQotewotICAgIGlmICghbV9zYW1wbGVzKSB7Ci0gICAgICAgIG1f
c2l6ZSA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgICAgICBtX3NhbXBs
ZXMgPSBzdGF0aWNfY2FzdDxpbnQqPihjYWxsb2MobV9zaXplLCBzaXplb2YoaW50KSkpOwotICAg
ICAgICBtX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKLSAgICB9Ci0KLSAgICArK21fc2FtcGxlQ291
bnQ7Ci0KLSAgICB1bnNpZ25lZCBvZmZlc3QgPSB2UEMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCk7Ci0gICAgLy8gU2luY2Ugd2UgZG9uJ3QgcmVhZCBhbmQgd3JpdGUgY29kZUJs
b2NrIGFuZCB2UEMgYXRvbWljYWxseSwgdGhpcyBjaGVjawotICAgIC8vIGNhbiBmYWlsIGlmIHdl
IHNhbXBsZSBtaWQgb3BfY2FsbCAvIG9wX3JldC4KLSAgICBpZiAob2ZmZXN0IDwgbV9zaXplKSB7
Ci0gICAgICAgIG1fc2FtcGxlc1tvZmZlc3RdKys7Ci0gICAgICAgIG1fb3Bjb2RlU2FtcGxlQ291
bnQrKzsKLSAgICB9Ci19Ci0KLXZvaWQgU2FtcGxpbmdUb29sOjpkb1J1bigpCi17Ci0gICAgU2Ft
cGxlIHNhbXBsZShtX3NhbXBsZSwgbV9jb2RlQmxvY2spOwotICAgICsrbV9zYW1wbGVDb3VudDsK
LQotICAgIGlmIChzYW1wbGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICgh
c2FtcGxlLmluSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgdW5zaWduZWQgb3Bjb2RlSUQgPSBt
X2ludGVycHJldGVyLT5nZXRPcGNvZGVJRChzYW1wbGUudlBDKClbMF0udS5vcGNvZGUpOwotCi0g
ICAgICAgICsrbV9vcGNvZGVTYW1wbGVDb3VudDsKLSAgICAgICAgKyttX29wY29kZVNhbXBsZXNb
b3Bjb2RlSURdOwotCi0gICAgICAgIGlmIChzYW1wbGUuaW5DVElGdW5jdGlvbigpKQotICAgICAg
ICAgICAgbV9vcGNvZGVTYW1wbGVzSW5DVElGdW5jdGlvbnNbb3Bjb2RlSURdKys7Ci0gICAgfQot
Ci0jaWYgRU5BQkxFKENPREVCTE9DS19TQU1QTElORykKLSAgICBpZiAoQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBzYW1wbGUuY29kZUJsb2NrKCkpIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zY3JpcHRTYW1wbGVNYXBNdXRleCk7Ci0gICAgICAgIFNjcmlwdFNhbXBsZVJlY29yZCogcmVj
b3JkID0gbV9zY29wZVNhbXBsZU1hcC0+Z2V0KGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkp
OwotICAgICAgICBBU1NFUlQocmVjb3JkKTsKLSAgICAgICAgcmVjb3JkLT5zYW1wbGUoY29kZUJs
b2NrLCBzYW1wbGUudlBDKCkpOwotICAgIH0KLSNlbmRpZgotfQotCi12b2lkIFNhbXBsaW5nVG9v
bDo6c2FtcGxlKCkKLXsKLSAgICBzX3NhbXBsaW5nVG9vbC0+ZG9SdW4oKTsKLX0KLQotdm9pZCBT
YW1wbGluZ1Rvb2w6Om5vdGlmeU9mU2NvcGUoVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBzY3Jp
cHQpCi17Ci0jaWYgRU5BQkxFKENPREVCTE9DS19TQU1QTElORykKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NjcmlwdFNhbXBsZU1hcE11dGV4KTsKLSAgICBtX3Njb3BlU2FtcGxlTWFwLT5zZXQo
c2NyaXB0LCBhZG9wdFB0cihuZXcgU2NyaXB0U2FtcGxlUmVjb3JkKHZtLCBzY3JpcHQpKSk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNjcmlwdCk7Ci0j
ZW5kaWYKLX0KLQotdm9pZCBTYW1wbGluZ1Rvb2w6OnNldHVwKCkKLXsKLSAgICBzX3NhbXBsaW5n
VG9vbCA9IHRoaXM7Ci19Ci0KLSNpZiBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotCi1zdHJ1Y3Qg
T3Bjb2RlU2FtcGxlSW5mbyB7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlOwotICAgIGxvbmcgbG9uZyBj
b3VudDsKLSAgICBsb25nIGxvbmcgY291bnRJbkNUSUZ1bmN0aW9uczsKLX07Ci0KLXN0cnVjdCBM
aW5lQ291bnRJbmZvIHsKLSAgICB1bnNpZ25lZCBsaW5lOwotICAgIHVuc2lnbmVkIGNvdW50Owot
fTsKLQotc3RhdGljIGludCBjb21wYXJlT3Bjb2RlSW5kaWNlc1NhbXBsaW5nKGNvbnN0IHZvaWQq
IGxlZnQsIGNvbnN0IHZvaWQqIHJpZ2h0KQotewotICAgIGNvbnN0IE9wY29kZVNhbXBsZUluZm8q
IGxlZnRTYW1wbGVJbmZvID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBPcGNvZGVTYW1wbGVJbmZv
Kj4obGVmdCk7Ci0gICAgY29uc3QgT3Bjb2RlU2FtcGxlSW5mbyogcmlnaHRTYW1wbGVJbmZvID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBPcGNvZGVTYW1wbGVJbmZvKj4ocmlnaHQpOwotCi0gICAg
cmV0dXJuIChsZWZ0U2FtcGxlSW5mby0+Y291bnQgPCByaWdodFNhbXBsZUluZm8tPmNvdW50KSA/
IDEgOiAobGVmdFNhbXBsZUluZm8tPmNvdW50ID4gcmlnaHRTYW1wbGVJbmZvLT5jb3VudCkgPyAt
MSA6IDA7Ci19Ci0KLSNpZiBFTkFCTEUoQ09ERUJMT0NLX1NBTVBMSU5HKQotc3RhdGljIGludCBj
b21wYXJlTGluZUNvdW50SW5mb1NhbXBsaW5nKGNvbnN0IHZvaWQqIGxlZnQsIGNvbnN0IHZvaWQq
IHJpZ2h0KQotewotICAgIGNvbnN0IExpbmVDb3VudEluZm8qIGxlZnRMaW5lQ291bnQgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExpbmVDb3VudEluZm8qPihsZWZ0KTsKLSAgICBjb25zdCBMaW5l
Q291bnRJbmZvKiByaWdodExpbmVDb3VudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTGluZUNv
dW50SW5mbyo+KHJpZ2h0KTsKLQotICAgIHJldHVybiAobGVmdExpbmVDb3VudC0+bGluZSA+IHJp
Z2h0TGluZUNvdW50LT5saW5lKSA/IDEgOiAobGVmdExpbmVDb3VudC0+bGluZSA8IHJpZ2h0TGlu
ZUNvdW50LT5saW5lKSA/IC0xIDogMDsKLX0KLQotc3RhdGljIGludCBjb21wYXJlU2NyaXB0U2Ft
cGxlUmVjb3Jkcyhjb25zdCB2b2lkKiBsZWZ0LCBjb25zdCB2b2lkKiByaWdodCkKLXsKLSAgICBj
b25zdCBTY3JpcHRTYW1wbGVSZWNvcmQqIGNvbnN0IGxlZnRWYWx1ZSA9ICpzdGF0aWNfY2FzdDxj
b25zdCBTY3JpcHRTYW1wbGVSZWNvcmQqIGNvbnN0ICo+KGxlZnQpOwotICAgIGNvbnN0IFNjcmlw
dFNhbXBsZVJlY29yZCogY29uc3QgcmlnaHRWYWx1ZSA9ICpzdGF0aWNfY2FzdDxjb25zdCBTY3Jp
cHRTYW1wbGVSZWNvcmQqIGNvbnN0ICo+KHJpZ2h0KTsKLQotICAgIHJldHVybiAobGVmdFZhbHVl
LT5tX3NhbXBsZUNvdW50IDwgcmlnaHRWYWx1ZS0+bV9zYW1wbGVDb3VudCkgPyAxIDogKGxlZnRW
YWx1ZS0+bV9zYW1wbGVDb3VudCA+IHJpZ2h0VmFsdWUtPm1fc2FtcGxlQ291bnQpID8gLTEgOiAw
OwotfQotI2VuZGlmCi0KLXZvaWQgU2FtcGxpbmdUb29sOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykK
LXsKLSAgICAvLyBUaWRpZXMgdXAgU3VuU3BpZGVyIG91dHB1dCBieSByZW1vdmluZyBzaG9ydCBz
Y3JpcHRzIC0gc3VjaCBhIHNtYWxsIG51bWJlciBvZiBzYW1wbGVzIHdvdWxkIGxpa2VseSBub3Qg
YmUgdXNlZnVsIGFueWhvdy4KLSAgICBpZiAobV9zYW1wbGVDb3VudCA8IDEwKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgLy8gKDEpIEJ1aWxkIGFuZCBzb3J0ICdvcGNvZGVTYW1wbGVJbmZv
JyBhcnJheS4KLQotICAgIE9wY29kZVNhbXBsZUluZm8gb3Bjb2RlU2FtcGxlSW5mb1tudW1PcGNv
ZGVJRHNdOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsKLSAg
ICAgICAgb3Bjb2RlU2FtcGxlSW5mb1tpXS5vcGNvZGUgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4o
aSk7Ci0gICAgICAgIG9wY29kZVNhbXBsZUluZm9baV0uY291bnQgPSBtX29wY29kZVNhbXBsZXNb
aV07Ci0gICAgICAgIG9wY29kZVNhbXBsZUluZm9baV0uY291bnRJbkNUSUZ1bmN0aW9ucyA9IG1f
b3Bjb2RlU2FtcGxlc0luQ1RJRnVuY3Rpb25zW2ldOwotICAgIH0KLQotICAgIHFzb3J0KG9wY29k
ZVNhbXBsZUluZm8sIG51bU9wY29kZUlEcywgc2l6ZW9mKE9wY29kZVNhbXBsZUluZm8pLCBjb21w
YXJlT3Bjb2RlSW5kaWNlc1NhbXBsaW5nKTsKLQotICAgIC8vICgyKSBQcmludCBPcGNvZGUgc2Ft
cGxpbmcgcmVzdWx0cy4KLQotICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2RlIHNhbXBsZXMgWypdXG4i
KTsKLSAgICBkYXRhTG9nRigiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGUgICAl
JSBvZiAgICAgICAlJSBvZiAgICAgfCAgIGN0aSAgICAgY3RpICUlXG4iKTsKLSAgICBkYXRhTG9n
Rigib3Bjb2RlICAgICAgICAgICAgICAgICAgICAgICBjb3VudCAgICAgVk0gICAgICAgIHRvdGFs
ICAgIHwgIGNvdW50ICAgb2Ygc2VsZlxuIik7Ci0gICAgZGF0YUxvZ0YoIi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICB8ICAtLS0tLS0tLS0t
LS0tLS0tXG4iKTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kp
IHsKLSAgICAgICAgbG9uZyBsb25nIGNvdW50ID0gb3Bjb2RlU2FtcGxlSW5mb1tpXS5jb3VudDsK
LSAgICAgICAgaWYgKCFjb3VudCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIE9w
Y29kZUlEIG9wY29kZUlEID0gb3Bjb2RlU2FtcGxlSW5mb1tpXS5vcGNvZGU7Ci0gICAgICAgIAot
ICAgICAgICBjb25zdCBjaGFyKiBvcGNvZGVOYW1lID0gb3Bjb2RlTmFtZXNbb3Bjb2RlSURdOwot
ICAgICAgICBjb25zdCBjaGFyKiBvcGNvZGVQYWRkaW5nID0gcGFkT3Bjb2RlTmFtZShvcGNvZGVJ
RCwgMjgpOwotICAgICAgICBkb3VibGUgcGVyY2VudE9mVk0gPSAoc3RhdGljX2Nhc3Q8ZG91Ymxl
Pihjb3VudCkgKiAxMDApIC8gbV9vcGNvZGVTYW1wbGVDb3VudDsKLSAgICAgICAgZG91YmxlIHBl
cmNlbnRPZlRvdGFsID0gKHN0YXRpY19jYXN0PGRvdWJsZT4oY291bnQpICogMTAwKSAvIG1fc2Ft
cGxlQ291bnQ7Ci0gICAgICAgIGxvbmcgbG9uZyBjb3VudEluQ1RJRnVuY3Rpb25zID0gb3Bjb2Rl
U2FtcGxlSW5mb1tpXS5jb3VudEluQ1RJRnVuY3Rpb25zOwotICAgICAgICBkb3VibGUgcGVyY2Vu
dEluQ1RJRnVuY3Rpb25zID0gKHN0YXRpY19jYXN0PGRvdWJsZT4oY291bnRJbkNUSUZ1bmN0aW9u
cykgKiAxMDApIC8gY291bnQ7Ci0gICAgICAgIGRlYnVnRGVidWdQcmludGYoIiVzOiVzJS02bGxk
ICUuM2YlJVx0JS4zZiUlXHQgIHwgICAlLTZsbGQgJS4zZiUlXG4iLCBvcGNvZGVOYW1lLCBvcGNv
ZGVQYWRkaW5nLCBjb3VudCwgcGVyY2VudE9mVk0sIHBlcmNlbnRPZlRvdGFsLCBjb3VudEluQ1RJ
RnVuY3Rpb25zLCBwZXJjZW50SW5DVElGdW5jdGlvbnMpOwotICAgIH0KLSAgICAKLSAgICBkYXRh
TG9nRigiXG5bKl0gU2FtcGxlcyBpbnNpZGUgaG9zdCBjb2RlIGFyZSBub3QgY2hhcmdlZCB0byBh
bnkgQnl0ZWNvZGUuXG5cbiIpOwotICAgIGRhdGFMb2dGKCJcdFNhbXBsZXMgaW5zaWRlIFZNOlx0
XHQlbGxkIC8gJWxsZCAoJS4zZiUlKVxuIiwgbV9vcGNvZGVTYW1wbGVDb3VudCwgbV9zYW1wbGVD
b3VudCwgKHN0YXRpY19jYXN0PGRvdWJsZT4obV9vcGNvZGVTYW1wbGVDb3VudCkgKiAxMDApIC8g
bV9zYW1wbGVDb3VudCk7Ci0gICAgZGF0YUxvZ0YoIlx0U2FtcGxlcyBpbnNpZGUgaG9zdCBjb2Rl
Olx0JWxsZCAvICVsbGQgKCUuM2YlJSlcblxuIiwgbV9zYW1wbGVDb3VudCAtIG1fb3Bjb2RlU2Ft
cGxlQ291bnQsIG1fc2FtcGxlQ291bnQsIChzdGF0aWNfY2FzdDxkb3VibGU+KG1fc2FtcGxlQ291
bnQgLSBtX29wY29kZVNhbXBsZUNvdW50KSAqIDEwMCkgLyBtX3NhbXBsZUNvdW50KTsKLSAgICBk
YXRhTG9nRigiXHRzYW1wbGUgY291bnQ6XHRzYW1wbGVzIGluc2lkZSB0aGlzIG9wY29kZVxuIik7
Ci0gICAgZGF0YUxvZ0YoIlx0JSUgb2YgVk06XHRzYW1wbGUgY291bnQgLyBhbGwgb3Bjb2RlIHNh
bXBsZXNcbiIpOwotICAgIGRhdGFMb2dGKCJcdCUlIG9mIHRvdGFsOlx0c2FtcGxlIGNvdW50IC8g
YWxsIHNhbXBsZXNcbiIpOwotICAgIGRhdGFMb2dGKCJcdC0tLS0tLS0tLS0tLS0tXG4iKTsKLSAg
ICBkYXRhTG9nRigiXHRjdGkgY291bnQ6XHRzYW1wbGVzIGluc2lkZSBhIENUSSBmdW5jdGlvbiBj
YWxsZWQgYnkgdGhpcyBvcGNvZGVcbiIpOwotICAgIGRhdGFMb2dGKCJcdGN0aSAlJSBvZiBzZWxm
Olx0Y3RpIGNvdW50IC8gc2FtcGxlIGNvdW50XG4iKTsKLSAgICAKLSNpZiBFTkFCTEUoQ09ERUJM
T0NLX1NBTVBMSU5HKQotCi0gICAgLy8gKDMpIEJ1aWxkIGFuZCBzb3J0ICdjb2RlQmxvY2tTYW1w
bGVzJyBhcnJheS4KLQotICAgIGludCBzY29wZUNvdW50ID0gbV9zY29wZVNhbXBsZU1hcC0+c2l6
ZSgpOwotICAgIFZlY3RvcjxTY3JpcHRTYW1wbGVSZWNvcmQqPiBjb2RlQmxvY2tTYW1wbGVzKHNj
b3BlQ291bnQpOwotICAgIFNjcmlwdFNhbXBsZVJlY29yZE1hcDo6aXRlcmF0b3IgaXRlciA9IG1f
c2NvcGVTYW1wbGVNYXAtPmJlZ2luKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzY29wZUNv
dW50OyArK2ksICsraXRlcikKLSAgICAgICAgY29kZUJsb2NrU2FtcGxlc1tpXSA9IGl0ZXItPnZh
bHVlLmdldCgpOwotCi0gICAgcXNvcnQoY29kZUJsb2NrU2FtcGxlcy5iZWdpbigpLCBzY29wZUNv
dW50LCBzaXplb2YoU2NyaXB0U2FtcGxlUmVjb3JkKiksIGNvbXBhcmVTY3JpcHRTYW1wbGVSZWNv
cmRzKTsKLQotICAgIC8vICg0KSBQcmludCBkYXRhIGZyb20gJ2NvZGVCbG9ja1NhbXBsZXMnIGFy
cmF5LgotCi0gICAgZGF0YUxvZ0YoIlxuQ29kZUJsb2NrIHNhbXBsZXNcblxuIik7IAotCi0gICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBzY29wZUNvdW50OyArK2kpIHsKLSAgICAgICAgU2NyaXB0U2Ft
cGxlUmVjb3JkKiByZWNvcmQgPSBjb2RlQmxvY2tTYW1wbGVzW2ldOwotICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IHJlY29yZC0+bV9jb2RlQmxvY2s7Ci0KLSAgICAgICAgZG91YmxlIGJs
b2NrUGVyY2VudCA9IChyZWNvcmQtPm1fc2FtcGxlQ291bnQgKiAxMDAuMCkgLyBtX3NhbXBsZUNv
dW50OwotCi0gICAgICAgIGlmIChibG9ja1BlcmNlbnQgPj0gMSkgewotICAgICAgICAgICAgLy9J
bnN0cnVjdGlvbiogY29kZSA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAg
ICAgICAgICAgIGRhdGFMb2dGKCIjJWQ6ICVzOiVkOiAlZCAvICVsbGQgKCUuM2YlJSlcbiIsIGkg
KyAxLCByZWNvcmQtPm1fZXhlY3V0YWJsZS0+c291cmNlVVJMKCkudXRmOCgpLmRhdGEoKSwgY29k
ZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoMCksIHJlY29yZC0+bV9zYW1wbGVD
b3VudCwgbV9zYW1wbGVDb3VudCwgYmxvY2tQZXJjZW50KTsKLSAgICAgICAgICAgIGlmIChpIDwg
MTApIHsKLSAgICAgICAgICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLHVuc2lnbmVkPiBsaW5lQ291
bnRzOwotICAgICAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVtcChleGVjKTsKLQotICAgICAgICAg
ICAgICAgIGRhdGFMb2dGKCIgICAgT3Bjb2RlIGFuZCBsaW5lIG51bWJlciBzYW1wbGVzIFsqXVxu
XG4iKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG9wID0gMDsgb3AgPCByZWNvcmQt
Pm1fc2l6ZTsgKytvcCkgewotICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQgPSByZWNvcmQt
Pm1fc2FtcGxlc1tvcF07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBbJSA0ZF0gaGFzIHNhbXBsZSBjb3VudDog
JSA0ZFxuIiwgb3AsIGNvdW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxp
bmUgPSBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChvcCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBsaW5lQ291bnRzLnNldChsaW5lLCAobGluZUNvdW50cy5jb250YWlu
cyhsaW5lKSA/IGxpbmVDb3VudHMuZ2V0KGxpbmUpIDogMCkgKyBjb3VudCk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0Yo
IlxuIik7Ci0KLSAgICAgICAgICAgICAgICBpbnQgbGluZXNDb3VudCA9IGxpbmVDb3VudHMuc2l6
ZSgpOwotICAgICAgICAgICAgICAgIFZlY3RvcjxMaW5lQ291bnRJbmZvPiBsaW5lQ291bnRJbmZv
KGxpbmVzQ291bnQpOwotICAgICAgICAgICAgICAgIGludCBsaW5lbm8gPSAwOwotICAgICAgICAg
ICAgICAgIGZvciAoSGFzaE1hcDx1bnNpZ25lZCx1bnNpZ25lZD46Oml0ZXJhdG9yIGl0ZXIgPSBs
aW5lQ291bnRzLmJlZ2luKCk7IGl0ZXIgIT0gbGluZUNvdW50cy5lbmQoKTsgKytpdGVyLCArK2xp
bmVubykgewotICAgICAgICAgICAgICAgICAgICBsaW5lQ291bnRJbmZvW2xpbmVub10ubGluZSA9
IGl0ZXItPmtleTsKLSAgICAgICAgICAgICAgICAgICAgbGluZUNvdW50SW5mb1tsaW5lbm9dLmNv
dW50ID0gaXRlci0+dmFsdWU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
cXNvcnQobGluZUNvdW50SW5mby5iZWdpbigpLCBsaW5lc0NvdW50LCBzaXplb2YoTGluZUNvdW50
SW5mbyksIGNvbXBhcmVMaW5lQ291bnRJbmZvU2FtcGxpbmcpOwotCi0gICAgICAgICAgICAgICAg
Zm9yIChsaW5lbm8gPSAwOyBsaW5lbm8gPCBsaW5lc0NvdW50OyArK2xpbmVubykgewotICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nRigiICAgIExpbmUgIyVkIGhhcyBzYW1wbGUgY291bnQgJWQu
XG4iLCBsaW5lQ291bnRJbmZvW2xpbmVub10ubGluZSwgbGluZUNvdW50SW5mb1tsaW5lbm9dLmNv
dW50KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIlxuIik7
Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBbKl0gU2FtcGxlcyBpbnNpZGUgaG9zdCBj
b2RlIGFyZSBjaGFyZ2VkIHRvIHRoZSBjYWxsaW5nIEJ5dGVjb2RlLlxuIik7Ci0gICAgICAgICAg
ICAgICAgZGF0YUxvZ0YoIiAgICAgICAgU2FtcGxlcyBvbiBhIGNhbGwgLyByZXR1cm4gYm91bmRh
cnkgYXJlIG5vdCBjaGFyZ2VkIHRvIGEgc3BlY2lmaWMgb3Bjb2RlIG9yIGxpbmUuXG5cbiIpOwot
ICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgICAgICAgICBTYW1wbGVzIG9uIGEgY2FsbCAv
IHJldHVybiBib3VuZGFyeTogJWQgLyAlZCAoJS4zZiUlKVxuXG4iLCByZWNvcmQtPm1fc2FtcGxl
Q291bnQgLSByZWNvcmQtPm1fb3Bjb2RlU2FtcGxlQ291bnQsIHJlY29yZC0+bV9zYW1wbGVDb3Vu
dCwgKHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjb3JkLT5tX3NhbXBsZUNvdW50IC0gcmVjb3JkLT5t
X29wY29kZVNhbXBsZUNvdW50KSAqIDEwMCkgLyByZWNvcmQtPm1fc2FtcGxlQ291bnQpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7Ci0jZW5kaWYKLX0KLQotI2Vsc2UKLQotdm9pZCBTYW1wbGluZ1Rvb2w6OmR1bXAoRXhlY1N0
YXRlKikKLXsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaAkocmV2aXNpb24gMTk4
MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDM0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2FtcGxpbmdUb29sX2gK
LSNkZWZpbmUgU2FtcGxpbmdUb29sX2gKLQotI2luY2x1ZGUgIlN0cm9uZy5oIgotI2luY2x1ZGUg
Ik9wY29kZS5oIgotI2luY2x1ZGUgIlNhbXBsaW5nQ291bnRlci5oIgotI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KLSNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KLSNpbmNsdWRlIDx3dGYvU3BlY3RydW0uaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
Ci0KLW5hbWVzcGFjZSBKU0MgewotCi0gICAgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKLQotICAg
IGNsYXNzIFNhbXBsaW5nRmxhZ3MgewotICAgIHB1YmxpYzoKLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgc3RhcnQoKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgc3RvcCgpOwotCi0jaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQotICAgICAgICBz
dGF0aWMgdm9pZCBzZXRGbGFnKHVuc2lnbmVkIGZsYWcpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVChmbGFnID49IDEpOwotICAgICAgICAgICAgQVNTRVJUKGZsYWcgPD0gMzIpOwotICAg
ICAgICAgICAgc19mbGFncyB8PSAxdSA8PCAoZmxhZyAtIDEpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgc3RhdGljIHZvaWQgY2xlYXJGbGFnKHVuc2lnbmVkIGZsYWcpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEFTU0VSVChmbGFnID49IDEpOwotICAgICAgICAgICAgQVNTRVJUKGZsYWcgPD0gMzIp
OwotICAgICAgICAgICAgc19mbGFncyAmPSB+KDF1IDw8IChmbGFnIC0gMSkpOwotICAgICAgICB9
Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgc2FtcGxlKCk7Ci0KLSAgICAgICAgY2xhc3MgU2NvcGVk
RmxhZyB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIFNjb3BlZEZsYWcoaW50IGZsYWcp
Ci0gICAgICAgICAgICAgICAgOiBtX2ZsYWcoZmxhZykKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBzZXRGbGFnKGZsYWcpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB+U2Nv
cGVkRmxhZygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2xlYXJGbGFnKG1fZmxh
Zyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIGludCBt
X2ZsYWc7Ci0gICAgICAgIH07Ci0gICAgCi0gICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBhZGRy
ZXNzT2ZGbGFncygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmc19mbGFnczsKLSAg
ICAgICAgfQotCi0jZW5kaWYKLSAgICBwcml2YXRlOgotICAgICAgICBKU19FWFBPUlREQVRBIHN0
YXRpYyB1aW50MzJfdCBzX2ZsYWdzOwotI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKLSAgICAg
ICAgc3RhdGljIHVpbnQ2NF90IHNfZmxhZ0NvdW50c1szM107Ci0jZW5kaWYKLSAgICB9OwotCi0j
aWYgRU5BQkxFKFNBTVBMSU5HX1JFR0lPTlMpCi0gICAgY2xhc3MgU2FtcGxpbmdSZWdpb24gewot
ICAgIHB1YmxpYzoKLSAgICAgICAgLy8gQ3JlYXRlIGEgc2NvcGVkIHNhbXBsaW5nIHJlZ2lvbiB1
c2luZyBhIEMgc3RyaW5nIGNvbnN0YW50IG5hbWUgdGhhdCBkZXNjcmliZXMKLSAgICAgICAgLy8g
d2hhdCB5b3UgYXJlIGRvaW5nLiBUaGlzIG11c3QgYmUgYSBzdHJpbmcgY29uc3RhbnQgdGhhdCBw
ZXJzaXN0cyBmb3IgdGhlCi0gICAgICAgIC8vIGxpZmV0aW1lIG9mIHRoZSBwcm9jZXNzIGFuZCBp
cyBpbW11dGFibGUuCi0gICAgICAgIFNhbXBsaW5nUmVnaW9uKGNvbnN0IGNoYXIqIG5hbWUpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgICAg
ICAgICBtX25hbWUgPSAwOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9uYW1lID0gbmFtZTsKLSAgICAgICAgICAgIGV4
Y2hhbmdlQ3VycmVudCh0aGlzLCAmbV9wcmV2aW91cyk7Ci0gICAgICAgICAgICBBU1NFUlQoIW1f
cHJldmlvdXMgfHwgbV9wcmV2aW91cyA+IHRoaXMpOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICB+U2FtcGxpbmdSZWdpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fbmFt
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEFT
U0VSVChiaXR3aXNlX2Nhc3Q8U2FtcGxpbmdSZWdpb24qPihzX2N1cnJlbnRPclJlc2VydmVkICYg
fjEpID09IHRoaXMpOwotICAgICAgICAgICAgZXhjaGFuZ2VDdXJyZW50KG1fcHJldmlvdXMpOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBzYW1wbGUoKTsKLSAgICAg
ICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXAoKTsKLSAgICAg
ICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgY29uc3QgY2hhciogbV9uYW1lOwotICAgICAgICBT
YW1wbGluZ1JlZ2lvbiogbV9wcmV2aW91czsKLQotICAgICAgICBzdGF0aWMgdm9pZCBleGNoYW5n
ZUN1cnJlbnQoU2FtcGxpbmdSZWdpb24qIGN1cnJlbnQsIFNhbXBsaW5nUmVnaW9uKiogcHJldmlv
dXNQdHIgPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICB1aW50cHRyX3QgcHJldmlvdXM7Ci0g
ICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgIHByZXZpb3VzID0gc19j
dXJyZW50T3JSZXNlcnZlZDsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBJ
ZiBpdCdzIHJlc2VydmVkIChpLmUuIHNhbXBsaW5nIHRocmVhZCBpcyByZWFkaW5nIGl0KSwgbG9v
cCBhcm91bmQuCi0gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzICYgMSkgewotI2lmIE9TKFVO
SVgpCi0gICAgICAgICAgICAgICAgICAgIHNjaGVkX3lpZWxkKCk7Ci0jZW5kaWYKLSAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGdvaW5nIHRvIENBUywgdGhlbiBtYWtlIHN1
cmUgcHJldmlvdXMgaXMgc2V0LgotICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1B0cikKLSAg
ICAgICAgICAgICAgICAgICAgKnByZXZpb3VzUHRyID0gYml0d2lzZV9jYXN0PFNhbXBsaW5nUmVn
aW9uKj4ocHJldmlvdXMpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChX
VEY6OndlYWtDb21wYXJlQW5kU3dhcFVJbnRQdHIoJnNfY3VycmVudE9yUmVzZXJ2ZWQsIHByZXZp
b3VzLCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihjdXJyZW50KSkpCi0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBz
dGF0aWMgdm9pZCBkdW1wSW50ZXJuYWwoKTsKLQotICAgICAgICBjbGFzcyBMb2NrZXIgewotICAg
ICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBMb2NrZXIoKTsKLSAgICAgICAgICAgIH5Mb2NrZXIo
KTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgdm9sYXRpbGUgdWludHB0cl90IHNfY3Vy
cmVudE9yUmVzZXJ2ZWQ7Ci0gICAgICAgIAotICAgICAgICAvLyByZWx5IG9uIGlkZW50aXR5IGhh
c2hpbmcgb2Ygc3RyaW5nIGNvbnN0YW50cwotICAgICAgICBzdGF0aWMgU3BlY3RydW08Y29uc3Qg
Y2hhcio+KiBzX3NwZWN0cnVtOwotICAgICAgICAKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGxv
bmcgc19ub25lT2ZUaGVBYm92ZTsKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBz
X251bWJlck9mU2FtcGxlc1NpbmNlRHVtcDsKLSAgICB9OwotI2Vsc2UgLy8gRU5BQkxFKFNBTVBM
SU5HX1JFR0lPTlMpCi0gICAgY2xhc3MgU2FtcGxpbmdSZWdpb24gewotICAgIHB1YmxpYzoKLSAg
ICAgICAgU2FtcGxpbmdSZWdpb24oY29uc3QgY2hhciopIHsgfQotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGR1bXAoKTsKLSAgICB9OwotI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19S
RUdJT05TKQotCi0gICAgY2xhc3MgQ29kZUJsb2NrOwotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKLSAg
ICBjbGFzcyBJbnRlcnByZXRlcjsKLSAgICBjbGFzcyBTY29wZU5vZGU7Ci0gICAgc3RydWN0IElu
c3RydWN0aW9uOwotCi0gICAgc3RydWN0IFNjcmlwdFNhbXBsZVJlY29yZCB7Ci0gICAgICAgIFNj
cmlwdFNhbXBsZVJlY29yZChWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUpCi0g
ICAgICAgICAgICA6IG1fZXhlY3V0YWJsZSh2bSwgZXhlY3V0YWJsZSkKLSAgICAgICAgICAgICwg
bV9jb2RlQmxvY2soMCkKLSAgICAgICAgICAgICwgbV9zYW1wbGVDb3VudCgwKQotICAgICAgICAg
ICAgLCBtX29wY29kZVNhbXBsZUNvdW50KDApCi0gICAgICAgICAgICAsIG1fc2FtcGxlcygwKQot
ICAgICAgICAgICAgLCBtX3NpemUoMCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICB+U2NyaXB0U2FtcGxlUmVjb3JkKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KG1fc2FtcGxlcykKLSAgICAgICAgICAgICAgICBmcmVlKG1fc2FtcGxlcyk7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIHZvaWQgc2FtcGxlKENvZGVCbG9jayosIEluc3RydWN0aW9uKik7
Ci0KLSAgICAgICAgU3Ryb25nPFNjcmlwdEV4ZWN1dGFibGU+IG1fZXhlY3V0YWJsZTsKLSAgICAg
ICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLSAgICAgICAgaW50IG1fc2FtcGxlQ291bnQ7Ci0g
ICAgICAgIGludCBtX29wY29kZVNhbXBsZUNvdW50OwotICAgICAgICBpbnQqIG1fc2FtcGxlczsK
LSAgICAgICAgdW5zaWduZWQgbV9zaXplOwotICAgIH07Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8
U2NyaXB0RXhlY3V0YWJsZSosIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRTYW1wbGVSZWNvcmQ+PiBT
Y3JpcHRTYW1wbGVSZWNvcmRNYXA7Ci0KLSAgICBjbGFzcyBTYW1wbGluZ1RocmVhZCB7Ci0gICAg
cHVibGljOgotICAgICAgICAvLyBTYW1wbGluZyB0aHJlYWQgc3RhdGUuCi0gICAgICAgIHN0YXRp
YyBib29sIHNfcnVubmluZzsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIHNfaGVydHo7Ci0gICAg
ICAgIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIHNfc2FtcGxpbmdUaHJlYWQ7Ci0KLSAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc3RhcnQodW5zaWduZWQgaGVydHo9MTAwMDAp
OwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBzdG9wKCk7Ci0KLSAgICAg
ICAgc3RhdGljIHZvaWQgdGhyZWFkU3RhcnRGdW5jKHZvaWQqKTsKLSAgICB9OwotCi0gICAgY2xh
c3MgU2FtcGxpbmdUb29sIHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAg
cHVibGljOgotICAgICAgICBmcmllbmQgc3RydWN0IENhbGxSZWNvcmQ7Ci0gICAgICAgIAotI2lm
IEVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgICAgIGNsYXNzIENhbGxSZWNvcmQgewotICAg
ICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2FsbFJlY29yZCk7Ci0gICAgICAgIHB1Ymxp
YzoKLSAgICAgICAgICAgIENhbGxSZWNvcmQoU2FtcGxpbmdUb29sKiBzYW1wbGluZ1Rvb2wsIGJv
b2wgaXNIb3N0Q2FsbCA9IGZhbHNlKQotICAgICAgICAgICAgICAgIDogbV9zYW1wbGluZ1Rvb2wo
c2FtcGxpbmdUb29sKQotICAgICAgICAgICAgICAgICwgbV9zYXZlZFNhbXBsZShzYW1wbGluZ1Rv
b2wtPm1fc2FtcGxlKQotICAgICAgICAgICAgICAgICwgbV9zYXZlZENvZGVCbG9jayhzYW1wbGlu
Z1Rvb2wtPm1fY29kZUJsb2NrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChp
c0hvc3RjYWxsKQotICAgICAgICAgICAgICAgICAgICBzYW1wbGluZ1Rvb2wtPm1fc2FtcGxlIHw9
IDB4MTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgfkNhbGxSZWNvcmQoKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIG1fc2FtcGxpbmdUb29sLT5tX3NhbXBsZSA9IG1fc2F2
ZWRTYW1wbGU7Ci0gICAgICAgICAgICAgICAgbV9zYW1wbGluZ1Rvb2wtPm1fY29kZUJsb2NrID0g
bV9zYXZlZENvZGVCbG9jazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICBwcml2YXRlOgotICAg
ICAgICAgICAgU2FtcGxpbmdUb29sKiBtX3NhbXBsaW5nVG9vbDsKLSAgICAgICAgICAgIGludHB0
cl90IG1fc2F2ZWRTYW1wbGU7Ci0gICAgICAgICAgICBDb2RlQmxvY2sqIG1fc2F2ZWRDb2RlQmxv
Y2s7Ci0gICAgICAgIH07Ci0jZWxzZQotICAgICAgICBjbGFzcyBDYWxsUmVjb3JkIHsKLSAgICAg
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhbGxSZWNvcmQpOwotICAgICAgICBwdWJsaWM6
Ci0gICAgICAgICAgICBDYWxsUmVjb3JkKFNhbXBsaW5nVG9vbCosIGJvb2wgPSBmYWxzZSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSNlbmRpZgotCi0gICAgICAg
IFNhbXBsaW5nVG9vbChJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIpCi0gICAgICAgICAgICA6IG1f
aW50ZXJwcmV0ZXIoaW50ZXJwcmV0ZXIpCi0gICAgICAgICAgICAsIG1fY29kZUJsb2NrKDApCi0g
ICAgICAgICAgICAsIG1fc2FtcGxlKDApCi0gICAgICAgICAgICAsIG1fc2FtcGxlQ291bnQoMCkK
LSAgICAgICAgICAgICwgbV9vcGNvZGVTYW1wbGVDb3VudCgwKQotI2lmIEVOQUJMRShDT0RFQkxP
Q0tfU0FNUExJTkcpCi0gICAgICAgICAgICAsIG1fc2NvcGVTYW1wbGVNYXAoc3RkOjptYWtlX3Vu
aXF1ZTxTY3JpcHRTYW1wbGVSZWNvcmRNYXA+KQotI2VuZGlmCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIG1lbXNldChtX29wY29kZVNhbXBsZXMsIDAsIHNpemVvZihtX29wY29kZVNhbXBsZXMpKTsK
LSAgICAgICAgICAgIG1lbXNldChtX29wY29kZVNhbXBsZXNJbkNUSUZ1bmN0aW9ucywgMCwgc2l6
ZW9mKG1fb3Bjb2RlU2FtcGxlc0luQ1RJRnVuY3Rpb25zKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldHVwKCk7Ci0gICAgICAgIHZvaWQgZHVtcChFeGVj
U3RhdGUqKTsKLQotICAgICAgICB2b2lkIG5vdGlmeU9mU2NvcGUoVk0mLCBTY3JpcHRFeGVjdXRh
YmxlKiBzY29wZSk7Ci0KLSAgICAgICAgdm9pZCBzYW1wbGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEluc3RydWN0aW9uKiB2UEMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghKHJlaW50
ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHZQQykgJiAweDMpKTsKLSAgICAgICAgICAgIG1fY29kZUJs
b2NrID0gY29kZUJsb2NrOwotICAgICAgICAgICAgbV9zYW1wbGUgPSByZWludGVycHJldF9jYXN0
PGludHB0cl90Pih2UEMpOwotICAgICAgICB9Ci0KLSAgICAgICAgQ29kZUJsb2NrKiogY29kZUJs
b2NrU2xvdCgpIHsgcmV0dXJuICZtX2NvZGVCbG9jazsgfQotICAgICAgICBpbnRwdHJfdCogc2Ft
cGxlU2xvdCgpIHsgcmV0dXJuICZtX3NhbXBsZTsgfQotCi0gICAgICAgIHZvaWQqIGVuY29kZVNh
bXBsZShJbnN0cnVjdGlvbiogdlBDLCBib29sIGluQ1RJRnVuY3Rpb24gPSBmYWxzZSwgYm9vbCBp
bkhvc3RGdW5jdGlvbiA9IGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIShy
ZWludGVycHJldF9jYXN0PGludHB0cl90Pih2UEMpICYgMHgzKSk7Ci0gICAgICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odlBD
KSB8IChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5DVElGdW5jdGlvbikgPDwgMSkgfCBzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oaW5Ib3N0RnVuY3Rpb24pKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0
YXRpYyB2b2lkIHNhbXBsZSgpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgY2xhc3MgU2FtcGxl
IHsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgU2FtcGxlKHZvbGF0aWxlIGludHB0cl90
IHNhbXBsZSwgQ29kZUJsb2NrKiB2b2xhdGlsZSBjb2RlQmxvY2spCi0gICAgICAgICAgICAgICAg
OiBtX3NhbXBsZShzYW1wbGUpCi0gICAgICAgICAgICAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxv
Y2spCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIGJvb2wgaXNOdWxsKCkgeyByZXR1cm4gIW1fc2FtcGxlOyB9Ci0gICAgICAgICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaygpIHsgcmV0dXJuIG1fY29kZUJsb2NrOyB9Ci0gICAgICAgICAgICBJ
bnN0cnVjdGlvbiogdlBDKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJbnN0cnVjdGlvbio+
KG1fc2FtcGxlICYgfjB4Myk7IH0KLSAgICAgICAgICAgIGJvb2wgaW5Ib3N0RnVuY3Rpb24oKSB7
IHJldHVybiBtX3NhbXBsZSAmIDB4MTsgfQotICAgICAgICAgICAgYm9vbCBpbkNUSUZ1bmN0aW9u
KCkgeyByZXR1cm4gbV9zYW1wbGUgJiAweDI7IH0KLQotICAgICAgICBwcml2YXRlOgotICAgICAg
ICAgICAgaW50cHRyX3QgbV9zYW1wbGU7Ci0gICAgICAgICAgICBDb2RlQmxvY2sqIG1fY29kZUJs
b2NrOwotICAgICAgICB9OwotCi0gICAgICAgIHZvaWQgZG9SdW4oKTsKLSAgICAgICAgc3RhdGlj
IFNhbXBsaW5nVG9vbCogc19zYW1wbGluZ1Rvb2w7Ci0gICAgICAgIAotICAgICAgICBJbnRlcnBy
ZXRlciogbV9pbnRlcnByZXRlcjsKLSAgICAgICAgCi0gICAgICAgIC8vIFN0YXRlIHRyYWNrZWQg
YnkgdGhlIG1haW4gdGhyZWFkLCB1c2VkIGJ5IHRoZSBzYW1wbGluZyB0aHJlYWQuCi0gICAgICAg
IENvZGVCbG9jayogbV9jb2RlQmxvY2s7Ci0gICAgICAgIGludHB0cl90IG1fc2FtcGxlOwotCi0g
ICAgICAgIC8vIEdhdGhlcmVkIHNhbXBsZSBkYXRhLgotICAgICAgICBsb25nIGxvbmcgbV9zYW1w
bGVDb3VudDsKLSAgICAgICAgbG9uZyBsb25nIG1fb3Bjb2RlU2FtcGxlQ291bnQ7Ci0gICAgICAg
IHVuc2lnbmVkIG1fb3Bjb2RlU2FtcGxlc1tudW1PcGNvZGVJRHNdOwotICAgICAgICB1bnNpZ25l
ZCBtX29wY29kZVNhbXBsZXNJbkNUSUZ1bmN0aW9uc1tudW1PcGNvZGVJRHNdOwotICAgICAgICAK
LSNpZiBFTkFCTEUoQ09ERUJMT0NLX1NBTVBMSU5HKQotICAgICAgICBMb2NrIG1fc2NyaXB0U2Ft
cGxlTWFwTXV0ZXg7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRTYW1wbGVSZWNvcmRN
YXA+IG1fc2NvcGVTYW1wbGVNYXA7Ci0jZW5kaWYKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBK
U0MKLQotI2VuZGlmIC8vIFNhbXBsaW5nVG9vbF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgor
CisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCisjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKwordm9sYXRpbGUgdWludDMyX3QgZ19zdXBlclNhbXBsZXJDb3VudDsK
Kworc3RhdGljIGRvdWJsZSBpbjsKK3N0YXRpYyBkb3VibGUgb3V0OworCit2b2lkIGluaXRpYWxp
emVTdXBlclNhbXBsZXIoKQoreworICAgIGlmICghT3B0aW9uczo6dXNlU3VwZXJTYW1wbGVyKCkp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBjcmVhdGVUaHJlYWQoCisgICAgICAgICJKU0Mg
U3VwZXIgU2FtcGxlciIsCisgICAgICAgIFtdICgpIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBz
bGVlcFF1YW50dW0gPSAxMDsKKyAgICAgICAgICAgIGNvbnN0IGludCBwcmludGluZ1BlcmlvZCA9
IDEwMDA7CisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQg
bXMgPSAwOyBtcyA8IHByaW50aW5nUGVyaW9kOyBtcyArPSBzbGVlcFF1YW50dW0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGdfc3VwZXJTYW1wbGVyQ291bnQpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpbisrOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICBvdXQrKzsKKyAgICAgICAgICAgICAgICAgICAgc2xlZXBNUyhzbGVlcFF1YW50dW0p
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwcmludFN1cGVyU2FtcGxlclN0
YXRlKCk7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGdfc3VwZXJT
YW1wbGVyQ291bnQpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiV0FSTklORzog
U3VwZXIgc2FtcGxlciB1bmRlcmNvdW50IGRldGVjdGVkIVxuIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0pOworfQorCit2b2lkIHByaW50U3VwZXJTYW1wbGVyU3RhdGUoKQoreworICAgIGlm
ICghT3B0aW9uczo6dXNlU3VwZXJTYW1wbGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBkb3VibGUgcGVyY2VudGFnZSA9IDEwMC4wICogaW4gLyAoaW4gKyBvdXQpOworICAgIGlmIChw
ZXJjZW50YWdlICE9IHBlcmNlbnRhZ2UpCisgICAgICAgIHBlcmNlbnRhZ2UgPSAwLjA7CisgICAg
ZGF0YUxvZygiUGVyY2VudCB0aW1lIGJlaGluZCBzdXBlciBzYW1wbGVyIGZsYWc6ICIsIHBlcmNl
bnRhZ2UsICJcbiIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgU3VwZXJTYW1wbGVyX2gKKyNkZWZpbmUgU3VwZXJTYW1wbGVy
X2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIE1hY3JvQXNzZW1ibGVyOworCitleHRlcm4g
dm9sYXRpbGUgdWludDMyX3QgZ19zdXBlclNhbXBsZXJDb3VudDsKKwordm9pZCBpbml0aWFsaXpl
U3VwZXJTYW1wbGVyKCk7CisKK2NsYXNzIFN1cGVyU2FtcGxlclNjb3BlIHsKK3B1YmxpYzoKKyAg
ICBTdXBlclNhbXBsZXJTY29wZShib29sIGRvU2FtcGxlID0gdHJ1ZSkKKyAgICAgICAgOiBtX2Rv
U2FtcGxlKGRvU2FtcGxlKQorICAgIHsKKyAgICAgICAgaWYgKG1fZG9TYW1wbGUpCisgICAgICAg
ICAgICBnX3N1cGVyU2FtcGxlckNvdW50Kys7CisgICAgfQorCisgICAgflN1cGVyU2FtcGxlclNj
b3BlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2RvU2FtcGxlKQorICAgICAgICAgICAgZ19zdXBl
clNhbXBsZXJDb3VudC0tOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIG1fZG9TYW1wbGU7
Cit9OworCitKU19FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50U3VwZXJTYW1wbGVyU3RhdGUoKTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBTdXBlclNhbXBsZXJfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYzLDggKzYzLDYgQEAgdm9pZCBMYWJlbDo6c2V0TG9jYXRpb24odW5zaWduZWQgbG9jYXRpbwog
CiBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogewotICAgIFNhbXBs
aW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJCeXRlY29kZSBHZW5lcmF0aW9uIik7Ci0KICAgICBt
X2NvZGVCbG9jay0+c2V0VGhpc1JlZ2lzdGVyKG1fdGhpc1JlZ2lzdGVyLnZpcnR1YWxSZWdpc3Rl
cigpKTsKICAgICAKICAgICAvLyBJZiB3ZSBoYXZlIGRlY2xhcmVkIGEgdmFyaWFibGUgbmFtZWQg
ImFyZ3VtZW50cyIgYW5kIHdlIGFyZSB1c2luZyBhcmd1bWVudHMgdGhlbiB3ZSBzaG91bGQKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBA
QAogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUu
aCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKLSNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIK
ICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgIlRlbXBsYXRlUmVnaXN0cnlL
ZXkuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzE2LDcgKzI3MTYs
NiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6Zm9yQWxsVmFsdWVzKAogICAgIHVuc2lnbmVkIGNsb2JiZXJM
aW1pdCwgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1Jl
Z2lvbigiREZHIEFJIEZvciBBbGwgVmFsdWVzIik7CiAgICAgaWYgKGNsb2JiZXJMaW1pdCA+PSBt
X3N0YXRlLmJsb2NrKCktPnNpemUoKSkKICAgICAgICAgY2xvYmJlckxpbWl0ID0gbV9zdGF0ZS5i
bG9jaygpLT5zaXplKCk7CiAgICAgZWxzZQpAQCAtMjczOSw3ICsyNzM4LDYgQEAgdm9pZCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJh
Y3RTdGF0ZVR5cGU+CiB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpjbG9iYmVyU3RydWN0dXJlcyh1bnNpZ25lZCBjbG9iYmVyTGltaXQpCiB7Ci0gICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBBSSBDbG9iYmVyIFN0cnVjdHVyZXMiKTsKICAg
ICBmb3JBbGxWYWx1ZXMoY2xvYmJlckxpbWl0LCBBYnN0cmFjdFZhbHVlOjpjbG9iYmVyU3RydWN0
dXJlc0Zvcik7CiAgICAgc2V0RGlkQ2xvYmJlcigpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NzgsNyArNjc4
LDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtQXJndW1lbnRzRWxpbWluYXRpb24oR3JhcGgm
IGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQXJndW1l
bnRzIEVsaW1pbmF0aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPEFyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjYsNyArNDI2LDYgQEAg
cHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtQmFja3dhcmRzUHJvcGFnYXRpb24oR3JhcGgmIGdyYXBo
KQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQmFja3dhcmRzIFBy
b3BhZ2F0aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPEJhY2t3YXJkc1Byb3BhZ2F0
aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MDgwLDcgKzUwODAsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAKIGJvb2wg
cGFyc2UoR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9u
KCJERkcgUGFyc2luZyIpOwogICAgIHJldHVybiBCeXRlQ29kZVBhcnNlcihncmFwaCkucGFyc2Uo
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAJ
KHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyArMjA0LDYgQEAgcHJpdmF0ZToKIAogYm9v
bCBwZXJmb3JtQ0ZBKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbigiREZHIENGQSBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxDRkFQaGFzZT4o
Z3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4MCw3ICszODAsNiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1D
RkdTaW1wbGlmaWNhdGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oIkRGRyBDRkcgU2ltcGxpZmljYXRpb24gUGhhc2UiKTsKICAgICByZXR1cm4g
cnVuUGhhc2U8Q0ZHU2ltcGxpZmljYXRpb25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5j
cHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BT
UmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDggKzcyLDYgQEAgcHJp
dmF0ZToKICAgICAKICAgICB2b2lkIGZyZWVVbm5lY2Vzc2FyeU5vZGVzKCkKICAgICB7Ci0gICAg
ICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQ1BTIFJldGhyZWFkaW5nOiBm
cmVlVW5uZWNlc3NhcnlOb2RlcyIpOwotICAgICAgICAKICAgICAgICAgZm9yIChCbG9ja0luZGV4
IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CiAgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CiAg
ICAgICAgICAgICBpZiAoIWJsb2NrKQpAQCAtMzYxLDggKzM1OSw2IEBAIHByaXZhdGU6CiAgICAg
CiAgICAgdm9pZCBjYW5vbmljYWxpemVMb2NhbHNJbkJsb2NrcygpCiAgICAgewotICAgICAgICBT
YW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENQUyBSZXRocmVhZGluZzogY2Fub25p
Y2FsaXplTG9jYWxzSW5CbG9ja3MiKTsKLSAgICAgICAgCiAgICAgICAgIGZvciAoQmxvY2tJbmRl
eCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewogICAg
ICAgICAgICAgbV9ibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgICAg
ICBjYW5vbmljYWxpemVMb2NhbHNJbkJsb2NrKCk7CkBAIC0zODQsOCArMzgwLDYgQEAgcHJpdmF0
ZToKICAgICB7CiAgICAgICAgIFZlY3RvcjxQaGlTdGFja0VudHJ5LCAxMjg+JiBwaGlTdGFjayA9
IG9wZXJhbmRLaW5kID09IEFyZ3VtZW50T3BlcmFuZCA/IG1fYXJndW1lbnRQaGlTdGFjayA6IG1f
bG9jYWxQaGlTdGFjazsKICAgICAgICAgCi0gICAgICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5n
UmVnaW9uKCJERkcgQ1BTIFJldGhyZWFkaW5nOiBwcm9wYWdhdGVQaGlzIik7Ci0gICAgICAgIAog
ICAgICAgICAvLyBFbnN1cmUgdGhhdCBhdHRlbXB0cyB0byB1c2UgdGhpcyBmYWlsIGluc3RhbnRs
eS4KICAgICAgICAgbV9ibG9jayA9IDA7CiAgICAgICAgIApAQCAtNTIwLDcgKzUxNCw2IEBAIHBy
aXZhdGU6CiAKIGJvb2wgcGVyZm9ybUNQU1JldGhyZWFkaW5nKEdyYXBoJiBncmFwaCkKIHsKLSAg
ICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENQUyBSZXRocmVhZGluZyBQaGFz
ZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxDUFNSZXRocmVhZGluZ1BoYXNlPihncmFwaCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZp
c2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzAxLDEzICs3MDEsMTEgQEAgcHVibGljOgogCiBib29sIHBl
cmZvcm1Mb2NhbENTRShHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxp
bmdSZWdpb24oIkRGRyBMb2NhbENTRSBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxMb2Nh
bENTRVBoYXNlPihncmFwaCk7CiB9CiAKIGJvb2wgcGVyZm9ybUdsb2JhbENTRShHcmFwaCYgZ3Jh
cGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBHbG9iYWxDU0Ug
UGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8R2xvYmFsQ1NFUGhhc2U+KGdyYXBoKTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNw
cAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVh
blVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw2IEBAIHB1YmxpYzoKICAg
ICAKIGJvb2wgcGVyZm9ybUNsZWFuVXAoR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVn
aW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQ2xlYW4gVXAgUGhhc2UiKTsKICAgICByZXR1cm4gcnVu
UGhhc2U8Q2xlYW5VcFBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lv
biAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI0LDcgKzgyNCw2IEBAIHByaXZhdGU6CiAK
IGJvb2wgcGVyZm9ybUNvbnN0YW50Rm9sZGluZyhHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBDb25zdGFudCBGb2xkaW5nIFBoYXNlIik7CiAg
ICAgcmV0dXJuIHJ1blBoYXNlPENvbnN0YW50Rm9sZGluZ1BoYXNlPihncmFwaCk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50SG9p
c3RpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5
LDcgKzEzOSw2IEBAIHB1YmxpYzoKICAgICAKIGJvb2wgcGVyZm9ybUNvbnN0YW50SG9pc3Rpbmco
R3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcg
Q29uc3RhbnQgSG9pc3RpbmcgUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8Q29uc3RhbnRI
b2lzdGluZ1BoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcAkocmV2
aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDcml0aWNhbEVk
Z2VCcmVha2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNiBAQCBwcml2
YXRlOgogCiBib29sIHBlcmZvcm1Dcml0aWNhbEVkZ2VCcmVha2luZyhHcmFwaCYgZ3JhcGgpCiB7
Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBDcml0aWNhbCBFZGdlIEJy
ZWFraW5nIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPENyaXRpY2FsRWRnZUJyZWFraW5n
UGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
Q0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
Q0VQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDYgQEAgcHJp
dmF0ZToKIAogYm9vbCBwZXJmb3JtRENFKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1Jl
Z2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIERDRSBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFz
ZTxEQ0VQaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNs
dWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wdGlv
bnMuaCIKLSNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJM
b2cuaCIKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogCkBAIC02MSw4ICs2MCw2IEBAIHN0YXRp
YyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKICAgICB1bnNpZ25lZCBvc3JFbnRyeUJ5
dGVjb2RlSW5kZXgsIGNvbnN0IE9wZXJhbmRzPEpTVmFsdWU+JiBtdXN0SGFuZGxlVmFsdWVzLAog
ICAgIFBhc3NSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiBjYWxsYmFjaykKIHsK
LSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENvbXBpbGF0aW9uIChEcml2
ZXIpIik7Ci0gICAgCiAgICAgaWYgKCFPcHRpb25zOjpieXRlY29kZVJhbmdlVG9ERkdDb21waWxl
KCkuaXNJblJhbmdlKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpKQogICAgICAgICB8fCAh
RnVuY3Rpb25XaGl0ZWxpc3Q6OmVuc3VyZUdsb2JhbFdoaXRlbGlzdCgpLmNvbnRhaW5zKGNvZGVC
bG9jaykpCiAgICAgICAgIHJldHVybiBDb21waWxhdGlvbkZhaWxlZDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzAxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQ0Niw3ICsyNDQ2LDYgQEAgcHJpdmF0ZToKICAgICAKIGJvb2wgcGVyZm9ybUZp
eHVwKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigi
REZHIEZpeHVwIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPEZpeHVwUGhhc2U+KGdyYXBo
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlz
aW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NjgsOCArNTY4LDYgQEAgdm9pZCBHcmFwaDo6ZGV0aHJlYWQoKQog
ICAgIGlmIChsb2dDb21waWxhdGlvbkNoYW5nZXMoKSkKICAgICAgICAgZGF0YUxvZygiRGV0aHJl
YWRpbmcgREZHIGdyYXBoLlxuIik7CiAgICAgCi0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdS
ZWdpb24oIkRGRyBEZXRocmVhZGluZyIpOwotICAgIAogICAgIGZvciAoQmxvY2tJbmRleCBibG9j
a0luZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgIEJhc2lj
QmxvY2sqIGJsb2NrID0gbV9ibG9ja3NbYmxvY2tJbmRleF0uZ2V0KCk7CiAgICAgICAgIGlmICgh
YmxvY2spCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0Nv
bWJpbmluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MSw3ICszOTEsNiBAQCBwcml2YXRlOgogICAgIAogYm9v
bCBwZXJmb3JtSW50ZWdlckNoZWNrQ29tYmluaW5nKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIEludGVnZXIgQ2hlY2sgQ29tYmluaW5nIFBo
YXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPEludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlPihn
cmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJh
bmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAx
OTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGlt
aXphdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3MCw3ICsxNzcwLDYgQEAgcHJp
dmF0ZToKIAogYm9vbCBwZXJmb3JtSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uKEdyYXBoJiBncmFw
aCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIEludGVnZXIgUmFu
Z2UgT3B0aW1pemF0aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPEludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlkYXRpb25Qb2ludEluamVj
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAxLDcgKzEwMSw2IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybUludmFsaWRhdGlv
blBvaW50SW5qZWN0aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1w
bGluZ1JlZ2lvbigiREZHIEludmFsaWRhdGlvbiBQb2ludCBJbmplY3Rpb24gUGhhc2UiKTsKICAg
ICByZXR1cm4gcnVuUGhhc2U8SW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZT4oZ3JhcGgp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiw4ICszMjYsNiBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAKIHZvaWQgSklUQ29tcGlsZXI6OmNv
bXBpbGUoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQmFja2Vu
ZCIpOwotCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKICAgICBt
X3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwpA
QCAtMzg3LDggKzM4NSw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiB2b2lkIEpJ
VENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKCJERkcgQmFja2VuZCIpOwotICAgIAogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAg
ICAgY29tcGlsZUVudHJ5KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TElDTVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0xJQ01QaGFzZS5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYxLDcgKzM2MSw2IEBA
IHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybUxJQ00oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBs
aW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgTElDTSBQaGFzZSIpOwogICAgIHJldHVybiBy
dW5QaGFzZTxMSUNNUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJl
c2VydmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDYgQEAgcHVibGljOgogCiBib29sIHBlcmZvcm1MaXZl
Q2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIExpdmUgQ2F0Y2ggVmFyaWFibGVzIFByZXNl
cnZhdGlvbiBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxMaXZlQ2F0Y2hWYXJpYWJsZVBy
ZXNlcnZhdGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAJKHJldmlzaW9u
IDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNp
c1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSw2IEBAIHByaXZhdGU6CiAK
IGJvb2wgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMoR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBs
aW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgTGl2ZW5lc3MgQW5hbHlzaXMgUGhhc2UiKTsK
ICAgICByZXR1cm4gcnVuUGhhc2U8TGl2ZW5lc3NBbmFseXNpc1BoYXNlPihncmFwaCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9v
cFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTgzLDcgKzE4Myw2IEBAIHB1YmxpYzoKIAogYm9vbCBwZXJmb3JtTG9v
cFByZUhlYWRlckNyZWF0aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbigiREZHIExvb3AgUHJlLUhlYWRlciBDcmVhdGlvbiBQaGFzZSIpOwogICAg
IHJldHVybiBydW5QaGFzZTxMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZT4oZ3JhcGgpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNiBAQCBwdWJsaWM6CiAKIGJvb2wgcGVyZm9ybU1h
eGltYWxGbHVzaEluc2VydGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24g
c2FtcGxpbmdSZWdpb24oIkRGRyBGbHVzaCBFdmVyeXRoaW5nIEluc2VydGlvbiBQaGFzZSIpOwog
ICAgIHJldHVybiBydW5QaGFzZTxNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZT4oZ3JhcGgpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGlu
dFJlbW92YWxQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
Niw3ICsxMzYsNiBAQCBwcml2YXRlOgogICAgIAogYm9vbCBwZXJmb3JtTW92SGludFJlbW92YWwo
R3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcg
TW92SGludCBSZW1vdmFsIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPE1vdkhpbnRSZW1v
dmFsUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCShy
ZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWls
YWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDYg
QEAgcHVibGljOgogCiBib29sIHBlcmZvcm1PU1JBdmFpbGFiaWxpdHlBbmFseXNpcyhHcmFwaCYg
Z3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBPU1IgQXZh
aWxhYmlsaXR5IEFuYWx5c2lzIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPE9TUkF2YWls
YWJpbGl0eUFuYWx5c2lzUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyAr
MTQ3LDYgQEAgcHVibGljOgogCiBib29sIHBlcmZvcm1PU1JFbnRyeXBvaW50Q3JlYXRpb24oR3Jh
cGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgT1NS
IEVudHJ5cG9pbnQgQ3JlYXRpb24iKTsKICAgICByZXR1cm4gcnVuUGhhc2U8T1NSRW50cnlwb2lu
dENyZWF0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTIsOCArMTEyLDYgQEAgZXh0ZXJuICJDIiB7CiAKIHZvaWQgY29tcGlsZU9T
UkV4aXQoRXhlY1N0YXRlKiBleGVjKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVn
aW9uKCJERkcgT1NSIEV4aXQgQ29tcGlsYXRpb24iKTsKLQogICAgIGlmIChleGVjLT52bSgpLmNh
bGxGcmFtZUZvckNhdGNoKQogICAgICAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmNhbGxG
cmFtZUZvckNhdGNoID09IGV4ZWMpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09i
amVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjExLDcg
KzIyMTEsNiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1PYmplY3RBbGxvY2F0aW9uU2lua2lu
ZyhHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRG
RyBPYmplY3QgQWxsb2NhdGlvbiBTaW5raW5nIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNl
PE9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTgzMDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiUmVwYXRjaC5oIgogI2luY2x1ZGUg
IlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCisjaW5j
bHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiU3ltYm9sLmgiCiAjaW5jbHVkZSAiVHlw
ZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUlubGluZXMuaCIKQEAgLTYyMSw2
ICs2MjIsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyCiAgICAg
ICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVnRXhw
T2JqZWN0KiByZWdFeHBPYmplY3QsIEpTU3RyaW5nKiBhcmd1bWVudCkKIHsKKyAgICBTdXBlclNh
bXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKICAgICAKQEAgLTYyOSw2ICs2MzIsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblJlCiAgICAgICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25SZWdFeHBFeGVjKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRBcmd1bWVudCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29w
ZShmYWxzZSk7CisgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICAKQEAgLTY0Miw2ICs2
NDcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlCiAgICAgICAg
IAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjR2VuZXJp
YyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnQpCiB7Cisg
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIAogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKCZ2bSwgZXhlYyk7CiAKQEAgLTY1OSw2ICs2NjYsOCBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlCiAgICAgICAgIAogc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0LCBKU1N0cmluZyogaW5w
dXQpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwor
ICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKQEAgLTY2Nyw2ICs2NzYsOCBAQCBzaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0CiAKIHNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblJlZ0V4cFRlc3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEFyZ3VtZW50KQogeworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKKyAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCkBAIC02ODAsNiArNjkxLDgg
QEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdAogCiBzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnQpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGU7CisgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUluc2VydGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNyAr
MTgxLDYgQEAgcHJpdmF0ZToKICAgICAKIGJvb2wgcGVyZm9ybVBoYW50b21JbnNlcnRpb24oR3Jh
cGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgUGhh
bnRvbSBJbnNlcnRpb24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8UGhhbnRvbUluc2Vy
dGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
bGFuLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDcgKzE3NCw2IEBAIHZvaWQgUGxhbjo6
Y29tcGlsZUluVGhyZWFkKExvbmdMaXZlZFN0YXQKICAgICBpZiAocmVwb3J0Q29tcGlsZVRpbWVz
KCkpCiAgICAgICAgIGNvZGVCbG9ja05hbWUgPSB0b0NTdHJpbmcoKmNvZGVCbG9jayk7CiAgICAg
Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBDb21waWxhdGlvbiAoUGxh
bikiKTsKICAgICBDb21waWxhdGlvblNjb3BlIGNvbXBpbGF0aW9uU2NvcGU7CiAKICAgICBpZiAo
bG9nQ29tcGlsYXRpb25DaGFuZ2VzKG1vZGUpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
SW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw2IEBAIHB1Ymxp
YzoKIAogYm9vbCBwZXJmb3JtUHJlZGljdGlvbkluamVjdGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0g
ICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBQcmVkaWN0aW9uIEluamVjdGlv
biBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2U+
KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5ODMw
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE2LDcgKzEwMTYsNiBAQCBwcml2YXRlOgog
ICAgIAogYm9vbCBwZXJmb3JtUHJlZGljdGlvblByb3BhZ2F0aW9uKEdyYXBoJiBncmFwaCkKIHsK
LSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFByZWRpY3Rpb24gUHJvcGFn
YXRpb24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8UHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01ODMsNyArNTgzLDYgQEAgcHVibGljOgogICAgIAogYm9vbCBwZXJm
b3JtUHV0U3RhY2tTaW5raW5nKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbigiREZHIFB1dFN0YWNrIFNpbmtpbmcgUGhhc2UiKTsKICAgICByZXR1cm4g
cnVuUGhhc2U8UHV0U3RhY2tTaW5raW5nUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAko
cmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252
ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyArNDE2LDYgQEAgcHJpdmF0
ZToKIAogYm9vbCBwZXJmb3JtU1NBQ29udmVyc2lvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBTU0EgQ29udmVyc2lvbiBQaGFzZSIpOwog
ICAgIHJldHVybiBydW5QaGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NT
QUxvd2VyaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDYgQEAgcHJp
dmF0ZToKIAogYm9vbCBwZXJmb3JtU1NBTG93ZXJpbmcoR3JhcGgmIGdyYXBoKQogewotICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgU1NBIExvd2VyaW5nIFBoYXNlIik7CiAg
ICAgcmV0dXJuIHJ1blBoYXNlPFNTQUxvd2VyaW5nUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTg4LDYgKzI5ODgsMTEgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KIAogICAgIGNhc2Ug
UmVnRXhwRXhlYzogeworICAgICAgICBib29sIHNhbXBsZSA9IGZhbHNlOworCisgICAgICAgIGlm
IChzYW1wbGUpCisgICAgICAgICAgICBtX2ppdC5pbmNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgp
OworICAgICAgICAKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZ2xvYmFsT2JqZWN0KHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGds
b2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgCkBAIC0zMDA2LDYgKzMwMTEsOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoc2Ft
cGxlKQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5kZWNyZW1lbnRTdXBlclNhbXBsZXJDb3Vu
dCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
CkBAIC0zMDIxLDYgKzMwMjksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAg
ICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKKworICAgICAgICAg
ICAgaWYgKHNhbXBsZSkKKyAgICAgICAgICAgICAgICBtX2ppdC5kZWNyZW1lbnRTdXBlclNhbXBs
ZXJDb3VudCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0z
MDM1LDYgKzMwNDYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisKKyAgICAgICAgaWYgKHNhbXBsZSkKKyAg
ICAgICAgICAgIG1faml0LmRlY3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIApAQCAtMzA5Myw2ICszMTA3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAKICAgICBjYXNlIFN0cmluZ1JlcGxhY2U6IHsK
KyAgICAgICAgYm9vbCBzYW1wbGUgPSBmYWxzZTsKKworICAgICAgICBpZiAoc2FtcGxlKQorICAg
ICAgICAgICAgbV9qaXQuaW5jcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKKyAgICAgICAgCiAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlCiAgICAgICAg
ICAgICAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlCiAgICAg
ICAgICAgICAmJiBub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CkBAIC0z
MTEyLDYgKzMxMzEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAgICAgICAgICAgICByZWdFeHBHUFIpOwogICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzYW1wbGUpCisg
ICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5kZWNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgp
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CkBAIC0zMTMzLDYgKzMxNTQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgcmVwbGFjZUdQUik7CiAgICAgICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3By
KCksIG5vZGUpOworICAgICAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAgICAgICAgICAgICBtX2pp
dC5kZWNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgCkBAIC0zMTUwLDYgKzMxNzMsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICByZXBsYWNlR1BSKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCks
IG5vZGUpOworICAgICAgICBpZiAoc2FtcGxlKQorICAgICAgICAgICAgbV9qaXQuZGVjcmVtZW50
U3VwZXJTYW1wbGVyQ291bnQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNl
LmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dGFja0xheW91dFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYxLDcgKzI2MSw2IEBAIHBy
aXZhdGU6CiAKIGJvb2wgcGVyZm9ybVN0YWNrTGF5b3V0KEdyYXBoJiBncmFwaCkKIHsKLSAgICBT
YW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFN0YWNrIExheW91dCBQaGFzZSIpOwog
ICAgIHJldHVybiBydW5QaGFzZTxTdGFja0xheW91dFBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzMDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0
aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNiBAQCBwcml2YXRl
OgogCiBib29sIHBlcmZvcm1TdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb24oR3JhcGgmIGdy
YXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgU3RhdGljIEV4
ZWN1dGlvbiBDb3VudCBFc3RpbWF0aW9uIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFN0YXRpY0V4
ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTM0LDEzICs1MzQsMTEgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtRmFzdFN0b3JlQmFycmll
ckluc2VydGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdS
ZWdpb24oIkRGRyBGYXN0IFN0b3JlIEJhcnJpZXIgSW5zZXJ0aW9uIFBoYXNlIik7CiAgICAgcmV0
dXJuIHJ1blBoYXNlPFN0b3JlQmFycmllckluc2VydGlvblBoYXNlPFBoYXNlTW9kZTo6RmFzdD4+
KGdyYXBoKTsKIH0KIAogYm9vbCBwZXJmb3JtR2xvYmFsU3RvcmVCYXJyaWVySW5zZXJ0aW9uKEdy
YXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIEds
b2JhbCBTdG9yZSBCYXJyaWVyIEluc2VydGlvbiBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFz
ZTxTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZTxQaGFzZU1vZGU6Okdsb2JhbD4+KGdyYXBoKTsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOTAsNyArMzkwLDYgQEAgcHJpdmF0ZToKICAgICAKIGJvb2wgcGVyZm9ybVN0cmVu
Z3RoUmVkdWN0aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbigiREZHIFN0cmVuZ3RoIFJlZHVjdGlvbiBQaGFzZSIpOwogICAgIHJldHVybiBydW5Q
aGFzZTxTdHJlbmd0aFJlZHVjdGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
LmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTYgKzMyLDkg
QEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi0vLyBDb21tZW50IG91dCB0
aGUgZW1wdHkgU0FNUExFKCkgZGVmaW5pdGlvbiwgYW5kIHVuY29tbWVudCB0aGUgb25lIHRoYXQg
dXNlcyBTYW1wbGluZ1JlZ2lvbiwgaWYKLS8vIHlvdSB3YW50IGV4dHJlbWVseSBmaW5lLWdyYWlu
ZWQgcHJvZmlsaW5nIGluIHRoaXMgY29kZS4KLSNkZWZpbmUgU0FNUExFKG5hbWUpIAotLy8jZGVm
aW5lIFNBTVBMRShuYW1lKSBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihuYW1lKQotCiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAogdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjphc3NlcnRJ
c1JlZ2lzdGVyZWQoR3JhcGgmIGdyYXBoKSBjb25zdAogewotICAgIFNBTVBMRSgiU3RydWN0dXJl
QWJzdHJhY3RWYWx1ZSBhc3NlcnRJc1JlZ2lzdGVyZWQiKTsKLQogICAgIGlmIChpc1RvcCgpKQog
ICAgICAgICByZXR1cm47CiAgICAgCkBAIC01Miw4ICs0NSw2IEBAIHZvaWQgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZTo6YXNzZXJ0SXNSZWcKIAogdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpj
bG9iYmVyKCkKIHsKLSAgICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFsdWUgY2xvYmJlciIp
OwotCiAgICAgLy8gVGhlIHByZW1pc2Ugb2YgdGhpcyBhcHByb2FjaCB0byBjbG9iYmVyaW5nIGlz
IHRoYXQgYW55dGltZSB3ZSBpbnRyb2R1Y2UKICAgICAvLyBhIHdhdGNoYWJsZSBzdHJ1Y3R1cmUg
aW50byBhbiBhYnN0cmFjdCB2YWx1ZSwgd2Ugd2F0Y2hwb2ludCBpdC4gWW91IGNhbiBhc3NlcnQK
ICAgICAvLyB0aGF0IHRoaXMgaG9sZHMgYnkgY2FsbGluZyBhc3NlcnRJc1dhdGNoZWQoKS4KQEAg
LTgyLDggKzczLDYgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjbG9iYmVyKCkKIAog
dm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvYnNlcnZlVHJhbnNpdGlvbihTdHJ1Y3R1cmUq
IGZyb20sIFN0cnVjdHVyZSogdG8pCiB7Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlIG9ic2VydmVUcmFuc2l0aW9uIik7Ci0gICAgCiAgICAgQVNTRVJUKCFmcm9tLT5kZmdTaG91
bGRXYXRjaCgpKTsKIAogICAgIGlmIChpc1RvcCgpKQpAQCAtMTAxLDggKzkwLDYgQEAgdm9pZCBT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvYnNlcnZlVHJhbgogCiB2b2lkIFN0cnVjdHVyZUFic3Ry
YWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9ucyhjb25zdCBUcmFuc2l0aW9uVmVjdG9yJiB2ZWN0
b3IpCiB7Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIG9ic2VydmVUcmFuc2l0
aW9ucyIpOwotCiAgICAgaWYgKGlzVG9wKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTEy
NSw4ICsxMTIsNiBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuCiAK
IGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ewotICAgIFNBTVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBhZGQiKTsKLQogICAgIGlmIChp
c1RvcCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0xNDEsOCArMTI2LDYgQEAg
Ym9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjphZGQoU3RydWN0dQogCiBib29sIFN0cnVjdHVy
ZUFic3RyYWN0VmFsdWU6Om1lcmdlKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpCiB7Ci0gICAg
U0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIG1lcmdlIHNldCIpOwotCiAgICAgaWYgKGlz
VG9wKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTE1MSw4ICsxMzQsNiBAQCBi
b29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlKGNvbnN0CiAKIGJvb2wgU3RydWN0dXJl
QWJzdHJhY3RWYWx1ZTo6bWVyZ2VTbG93KGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90
aGVyKQogewotICAgIFNBTVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBtZXJnZSB2YWx1ZSBz
bG93Iik7Ci0KICAgICAvLyBJdCBpc24ndCBpbW1lZGlhdGVseSBvYnZpb3VzIHRoYXQgdGhlIGNv
ZGUgYmVsb3cgaXMgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLCBzbyBsZXQncyBnbwogICAgIC8vIHRo
cm91Z2ggaXQuCiAgICAgLy8KQEAgLTE5Niw4ICsxNzcsNiBAQCBib29sIFN0cnVjdHVyZUFic3Ry
YWN0VmFsdWU6Om1lcmdlU2xvdyhjCiAKIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVy
Z2VOb3RUb3AoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikKIHsKLSAgICBTQU1QTEUoIlN0cnVj
dHVyZUFic3RyYWN0VmFsdWUgbWVyZ2Ugbm90IHRvcCIpOwotCiAgICAgaWYgKCFtX3NldC5tZXJn
ZShvdGhlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTIwOSw4ICsxODgsNiBA
QCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlTm90VG9wCiAKIHZvaWQgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpCiB7Ci0g
ICAgU0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIGZpbHRlciBzZXQiKTsKLQogICAgIGlm
IChpc1RvcCgpKSB7CiAgICAgICAgIG1fc2V0ID0gb3RoZXI7CiAgICAgICAgIHJldHVybjsKQEAg
LTI0NCw4ICsyMjEsNiBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcihjb25z
CiAKIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZUFi
c3RyYWN0VmFsdWUmIG90aGVyKQogewotICAgIFNBTVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZSBmaWx0ZXIgdmFsdWUiKTsKLQogICAgIGlmIChvdGhlci5pc1RvcCgpKQogICAgICAgICByZXR1
cm47CiAgICAgCkBAIC0yNzAsOCArMjQ1LDYgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
OjpmaWx0ZXIoY29ucwogCiB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlclNsb3co
U3BlY3VsYXRlZFR5cGUgdHlwZSkKIHsKLSAgICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFs
dWUgZmlsdGVyIHR5cGUgc2xvdyIpOwotCiAgICAgaWYgKCEodHlwZSAmIFNwZWNDZWxsKSkgewog
ICAgICAgICBjbGVhcigpOwogICAgICAgICByZXR1cm47CkBAIC0yODcsOCArMjYwLDYgQEAgdm9p
ZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJTbG93KAogCiBib29sIFN0cnVjdHVyZUFi
c3RyYWN0VmFsdWU6OmNvbnRhaW5zKFN0cnVjdHVyZSogc3RydWN0dXJlKSBjb25zdAogewotICAg
IFNBTVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBjb250YWlucyIpOwotCiAgICAgaWYgKGlz
SW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCkBAIC0yOTcsOCArMjY4LDYg
QEAgYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjb250YWlucyhTdAogCiBib29sIFN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikg
Y29uc3QKIHsKLSAgICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFsdWUgaXNTdWJzZXRPZiBz
ZXQiKTsKLQogICAgIGlmIChpc0luZmluaXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKQEAgLTMwNyw4ICsyNzYsNiBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vi
c2V0T2YoCiAKIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdWJzZXRPZihjb25zdCBT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKIHsKLSAgICBTQU1QTEUoIlN0cnVj
dHVyZUFic3RyYWN0VmFsdWUgaXNTdWJzZXRPZiB2YWx1ZSIpOwotCiAgICAgaWYgKGlzVG9wKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTMzMCw4ICsyOTcsNiBAQCBib29sIFN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YoCiAKIGJvb2wgU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZTo6aXNTdXBlcnNldE9mKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0CiB7
Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIGlzU3VwZXJzZXRPZiBzZXQiKTsK
LQogICAgIGlmIChpc0luZmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIApAQCAt
MzQwLDggKzMwNSw2IEBAIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdXBlcnNldE8K
IAogYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvdmVybGFwcyhjb25zdCBTdHJ1Y3R1cmVT
ZXQmIG90aGVyKSBjb25zdAogewotICAgIFNBTVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBv
dmVybGFwcyBzZXQiKTsKLQogICAgIGlmIChpc0luZmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIApAQCAtMzUwLDggKzMxMyw2IEBAIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZTo6b3ZlcmxhcHMoY28KIAogYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvdmVybGFwcyhj
b25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKIHsKLSAgICBTQU1QTEUo
IlN0cnVjdHVyZUFic3RyYWN0VmFsdWUgb3ZlcmxhcHMgdmFsdWUiKTsKLQogICAgIGlmIChvdGhl
ci5pc0luZmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIApAQCAtMzYwLDggKzMy
MSw2IEBAIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMoY28KIAogYm9vbCBT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjplcXVhbHNTbG93KGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0
VmFsdWUmIG90aGVyKSBjb25zdAogewotICAgIFNBTVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZSBlcXVhbHNTbG93Iik7Ci0KICAgICBBU1NFUlQobV9zZXQubV9wb2ludGVyICE9IG90aGVyLm1f
c2V0Lm1fcG9pbnRlcik7CiAgICAgQVNTRVJUKCFpc1RvcCgpKTsKICAgICBBU1NFUlQoIW90aGVy
LmlzVG9wKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVS
ZWdpc3RyYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5ODMwMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNyArMTkxLDYgQEAgcHJpdmF0ZToKIAogYm9v
bCBwZXJmb3JtU3RydWN0dXJlUmVnaXN0cmF0aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFN0cnVjdHVyZSBSZWdpc3RyYXRpb24gUGhh
c2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2U+KGdy
YXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVj
a0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDYgQEAgcHJpdmF0ZToKIAogYm9vbCBw
ZXJmb3JtVGllclVwQ2hlY2tJbmplY3Rpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgVGllci11cCBDaGVjayBJbmplY3Rpb24iKTsKICAg
ICByZXR1cm4gcnVuUGhhc2U8VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZT4oZ3JhcGgpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNo
ZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyNiw3ICs1MjYsNiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1UeXBlQ2hlY2tIb2lz
dGluZyhHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24o
IkRGRyBUeXBlIENoZWNrIEhvaXN0aW5nIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFR5
cGVDaGVja0hvaXN0aW5nUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdVbmlmaWNhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1VuaWZpY2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgz
MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VuaWZpY2F0aW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw2IEBAIHB1YmxpYzoKIAogYm9vbCBwZXJmb3Jt
VW5pZmljYXRpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5n
UmVnaW9uKCJERkcgVW5pZmljYXRpb24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8VW5p
ZmljYXRpb25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAJKHJldmlzaW9u
IDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw3ICszMjUsNiBAQCBwcml2YXRlOgog
CiBib29sIHBlcmZvcm1WYXJhcmdzRm9yd2FyZGluZyhHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBWYXJhcmdzIEZvcndhcmRpbmcgUGhhc2Ui
KTsKICAgICByZXR1cm4gcnVuUGhhc2U8VmFyYXJnc0ZvcndhcmRpbmdQaGFzZT4oZ3JhcGgpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFs
bG9jYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzMDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMsNiBAQCBwdWJsaWM6CiAK
IGJvb2wgcGVyZm9ybVZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb24oR3JhcGgmIGdyYXBoKQogewot
ICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgVmlydHVhbCBSZWdpc3RlciBB
bGxvY2F0aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFZpcnR1YWxSZWdpc3RlckFs
bG9jYXRpb25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2lu
dENvbGxlY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNiBAQCBw
cml2YXRlOgogCiBib29sIHBlcmZvcm1XYXRjaHBvaW50Q29sbGVjdGlvbihHcmFwaCYgZ3JhcGgp
CiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBXYXRjaHBvaW50IENv
bGxlY3Rpb24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8V2F0Y2hwb2ludENvbGxlY3Rp
b25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0NzUs
NiArNjQ3NSwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21waWxlUmVnRXhwRXhlYygpCiAg
ICAgeworICAgICAgICBib29sIHNhbXBsZSA9IGZhbHNlOworCisgICAgICAgIGlmIChzYW1wbGUp
CisgICAgICAgICAgICBtX291dC5pbmNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpOworICAgICAg
ICAKICAgICAgICAgTFZhbHVlIGdsb2JhbE9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgIAogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0g
UmVnRXhwT2JqZWN0VXNlKSB7CkBAIC02NDg2LDYgKzY0OTEsOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWNT
dHJpbmcpLCBtX2NhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICBi
YXNlLCBhcmd1bWVudCk7CiAgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAg
ICAgICAgICAgICAgIGlmIChzYW1wbGUpCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmRlY3Jl
bWVudFN1cGVyU2FtcGxlckNvdW50KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgCkBAIC02NDk0LDYgKzY1MDEsOCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwRXhlYyks
IG1fY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGJhc2UsCiAgICAgICAgICAgICAgICAgYXJndW1l
bnQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgaWYgKHNh
bXBsZSkKKyAgICAgICAgICAgICAgICBtX291dC5kZWNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNjUwMyw2ICs2
NTEyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMpLCBtX2NhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBiYXNl
LAogICAgICAgICAgICAgYXJndW1lbnQpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisK
KyAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAgICAgICAgIG1fb3V0LmRlY3JlbWVudFN1cGVyU2Ft
cGxlckNvdW50KCk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlUmVnRXhwVGVzdCgpCkBAIC02
NTU5LDYgKzY1NzEsMTEgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVTdHJpbmdS
ZXBsYWNlKCkKICAgICB7CisgICAgICAgIGJvb2wgc2FtcGxlID0gZmFsc2U7CisKKyAgICAgICAg
aWYgKHNhbXBsZSkKKyAgICAgICAgICAgIG1fb3V0LmluY3JlbWVudFN1cGVyU2FtcGxlckNvdW50
KCk7CisgICAgICAgIAogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
U3RyaW5nVXNlCiAgICAgICAgICAgICAmJiBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBS
ZWdFeHBPYmplY3RVc2UKICAgICAgICAgICAgICYmIG1fbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgp
ID09IFN0cmluZ1VzZSkgewpAQCAtNjU3Myw2ICs2NTkwLDggQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBzdHJpbmcsIHJlZ0V4cCk7CiAKICAgICAgICAg
ICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBpZiAo
c2FtcGxlKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuZGVjcmVtZW50U3VwZXJTYW1w
bGVyQ291bnQoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTY1ODYsNiArNjYwNSw4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgbV9jYWxsRnJhbWUsIHN0cmluZywgcmVnRXhwLCByZXBsYWNlKTsKIAogICAgICAg
ICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAg
ICAgICAgICAgICBtX291dC5kZWNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNjU5NSw2ICs2NjE2LDggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSkpOwogCiAgICAg
ICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAgICAgICAg
IG1fb3V0LmRlY3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCk7CiAgICAgfQogCiAgICAgdm9pZCBj
b21waWxlR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDE5ODMwMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTMyLDggKzUzMiw2IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAog
CiBleHRlcm4gIkMiIHZvaWQqIGNvbXBpbGVGVExPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgZXhpdElEKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJGVEwg
T1NSIEV4aXQgQ29tcGlsYXRpb24iKTsKLQogICAgIGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHko
KSB8fCBPcHRpb25zOjp2ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6dmVyYm9zZUZUTE9TUkV4aXQo
KSkKICAgICAgICAgZGF0YUxvZygiQ29tcGlsaW5nIE9TUiBleGl0IHdpdGggZXhpdElEID0gIiwg
ZXhpdElELCAiXG4iKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRw
dXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0
LmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
dXRwdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJC
M01hdGhFeHRyYXMuaCIKICNpbmNsdWRlICJCM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oIgor
I2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZU
TCB7CiAKQEAgLTI5Niw2ICsyOTcsMjMgQEAgdm9pZCBPdXRwdXQ6OnN0b3JlKExWYWx1ZSB2YWx1
ZSwgVHlwZWRQbwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK1R5cGVk
UG9pbnRlciBPdXRwdXQ6OmFic29sdXRlKHZvaWQqIGFkZHJlc3MpCit7CisgICAgcmV0dXJuIFR5
cGVkUG9pbnRlcihtX2hlYXBzLT5hYnNvbHV0ZVthZGRyZXNzXSwgY29uc3RJbnRQdHIoYWRkcmVz
cykpOworfQorCit2b2lkIE91dHB1dDo6aW5jcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKQorewor
ICAgIFR5cGVkUG9pbnRlciBjb3VudGVyID0gYWJzb2x1dGUoYml0d2lzZV9jYXN0PHZvaWQqPigm
Z19zdXBlclNhbXBsZXJDb3VudCkpOworICAgIHN0b3JlMzIoYWRkKGxvYWQzMihjb3VudGVyKSwg
aW50MzJPbmUpLCBjb3VudGVyKTsKK30KKwordm9pZCBPdXRwdXQ6OmRlY3JlbWVudFN1cGVyU2Ft
cGxlckNvdW50KCkKK3sKKyAgICBUeXBlZFBvaW50ZXIgY291bnRlciA9IGFic29sdXRlKGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmdfc3VwZXJTYW1wbGVyQ291bnQpKTsKKyAgICBzdG9yZTMyKHN1Yihs
b2FkMzIoY291bnRlciksIGludDMyT25lKSwgY291bnRlcik7Cit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpGVEwKIAogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDYsMTAgKzMw
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGhlYXAuYmFzZUluZGV4KCp0aGlzLCBiYXNl
LCBpbmRleCwgaW5kZXhBc0NvbnN0YW50LCBvZmZzZXQpOwogICAgIH0KIAotICAgIFR5cGVkUG9p
bnRlciBhYnNvbHV0ZSh2b2lkKiBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5cGVk
UG9pbnRlcihtX2hlYXBzLT5hYnNvbHV0ZVthZGRyZXNzXSwgY29uc3RJbnRQdHIoYWRkcmVzcykp
OwotICAgIH0KKyAgICBUeXBlZFBvaW50ZXIgYWJzb2x1dGUodm9pZCogYWRkcmVzcyk7CiAKICAg
ICBMVmFsdWUgbG9hZDhTaWduRXh0MzIoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYg
ZmllbGQpIHsgcmV0dXJuIGxvYWQ4U2lnbkV4dDMyKGFkZHJlc3MoYmFzZSwgZmllbGQpKTsgfQog
ICAgIExWYWx1ZSBsb2FkOFplcm9FeHQzMihMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RIZWFw
JiBmaWVsZCkgeyByZXR1cm4gbG9hZDhaZXJvRXh0MzIoYWRkcmVzcyhiYXNlLCBmaWVsZCkpOyB9
CkBAIC00NTQsNiArNDUxLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gVmFsdWVGcm9tQmxv
Y2sodXBzaWxvbiwgbV9ibG9jayk7CiAgICAgfQogCisgICAgdm9pZCBpbmNyZW1lbnRTdXBlclNh
bXBsZXJDb3VudCgpOworICAgIHZvaWQgZGVjcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKKwog
I2lmIFBMQVRGT1JNKENPQ09BKQogI3ByYWdtYSBtYXJrIC0gU3RhdGVzCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiAr
NTIsNyBAQAogI2luY2x1ZGUgIldlYWtTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGht
PgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsVmVjdG9ySXRlcmF0b3IuaD4KICNpbmNsdWRlIDx3
dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KQEAgLTUxNSw4ICs1MTYs
NiBAQCB2b2lkIEhlYXA6OmNvbXBsZXRlQWxsREZHUGxhbnMoKQogCiB2b2lkIEhlYXA6Om1hcmtS
b290cyhkb3VibGUgZ2NTdGFydFRpbWUsIHZvaWQqIHN0YWNrT3JpZ2luLCB2b2lkKiBzdGFja1Rv
cCwgTWFjaGluZVRocmVhZHM6OlJlZ2lzdGVyU3RhdGUmIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKQog
ewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJHYXJiYWdlIENvbGxlY3Rpb246
IE1hcmtpbmciKTsKLQogICAgIEdDUEhBU0UoTWFya1Jvb3RzKTsKICAgICBBU1NFUlQoaXNWYWxp
ZFRocmVhZFN0YXRlKG1fdm0pKTsKIApAQCAtMTA5MCw4ICsxMDg5LDYgQEAgdm9pZCBIZWFwOjpj
b2xsZWN0QW5kU3dlZXAoSGVhcE9wZXJhdGlvbgogCiAgICAgY29sbGVjdChjb2xsZWN0aW9uVHlw
ZSk7CiAKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiR2FyYmFnZSBDb2xsZWN0
aW9uOiBTd2VlcGluZyIpOwotCiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKCp0aGlzKTsK
ICAgICBtX29iamVjdFNwYWNlLnN3ZWVwKCk7CiAgICAgbV9vYmplY3RTcGFjZS5zaHJpbmsoKTsK
QEAgLTExMjEsOCArMTExOCw2IEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBs
KEhlYXAKICAgICAgICAgYmVmb3JlID0gY3VycmVudFRpbWVNUygpOwogICAgIH0KICAgICAKLSAg
ICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiR2FyYmFnZSBDb2xsZWN0aW9uIik7Ci0g
ICAgCiAgICAgaWYgKHZtKCktPnR5cGVQcm9maWxlcigpKSB7CiAgICAgICAgIERlZmVyR0NGb3JB
V2hpbGUgYXdoaWxlKCp0aGlzKTsKICAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyTG9nKCktPnBy
b2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiR0MiKSk7CkBAIC0xNjAyLDEwICsxNTk3LDcg
QEAgcHVibGljOgogdm9pZCBIZWFwOjp6b21iaWZ5RGVhZE9iamVjdHMoKQogewogICAgIC8vIFN3
ZWVwIG5vdyBiZWNhdXNlIGRlc3RydWN0b3JzIHdpbGwgY3Jhc2ggb25jZSB3ZSdyZSB6b21iaWZp
ZWQuCi0gICAgewotICAgICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiR2FyYmFn
ZSBDb2xsZWN0aW9uOiBTd2VlcGluZyIpOwotICAgICAgICBtX29iamVjdFNwYWNlLnpvbWJpZnlT
d2VlcCgpOwotICAgIH0KKyAgICBtX29iamVjdFNwYWNlLnpvbWJpZnlTd2VlcCgpOwogICAgIEhl
YXBJdGVyYXRpb25TY29wZSBpdGVyYXRpb25TY29wZSgqdGhpcyk7CiAgICAgbV9vYmplY3RTcGFj
ZS5mb3JFYWNoRGVhZENlbGw8Wm9tYmlmeT4oaXRlcmF0aW9uU2NvcGUpOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMTk4MzAx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NCw4ICs5NCw2IEBAIE1hcmtlZEJsb2NrOjpGcmVlTGlzdCBNYXJrZWRCbG9j
azo6c3BlY2kKICAgICBBU1NFUlQoYmxvY2tTdGF0ZSAhPSBBbGxvY2F0ZWQgJiYgYmxvY2tTdGF0
ZSAhPSBGcmVlTGlzdGVkKTsKICAgICBBU1NFUlQoISghY2FsbERlc3RydWN0b3JzICYmIHN3ZWVw
TW9kZSA9PSBTd2VlcE9ubHkpKTsKIAotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9u
KCghY2FsbERlc3RydWN0b3JzICYmIGJsb2NrU3RhdGUgIT0gTmV3KSA/ICJDYWxsaW5nIGRlc3Ry
dWN0b3JzIiA6ICJzd2VlcGluZyIpOwotICAgIAogICAgIC8vIFRoaXMgcHJvZHVjZXMgYSBmcmVl
IGxpc3QgdGhhdCBpcyBvcmRlcmVkIGluIHJldmVyc2UgdGhyb3VnaCB0aGUgYmxvY2suCiAgICAg
Ly8gVGhpcyBpcyBmaW5lLCBzaW5jZSB0aGUgYWxsb2NhdGlvbiBjb2RlIG1ha2VzIG5vIGFzc3Vt
cHRpb25zIGFib3V0IHRoZQogICAgIC8vIG9yZGVyIG9mIHRoZSBmcmVlIGxpc3QuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDYgQEAKICNpbmNsdWRl
ICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJSZWdpc3Rlci5oIgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlNjb3Bl
ZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3Rh
Y2tWaXNpdG9yLmgiCkBAIC0yODksOCArMjg4LDcgQEAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFtZUFu
ZFNldFRoaXMoQ2FsbEZyYQogfQogCiBJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIoVk0mIHZtKQot
ICAgIDogbV9zYW1wbGVFbnRyeURlcHRoKDApCi0gICAgLCBtX3ZtKHZtKQorICAgIDogbV92bSh2
bSkKICAgICAsIG1fc3RhY2sodm0pCiAgICAgLCBtX2Vycm9ySGFuZGxpbmdNb2RlUmVlbnRyeSgw
KQogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTMxNCwxMCArMzEyLDYgQEAgdm9pZCBJbnRlcnBy
ZXRlcjo6aW5pdGlhbGl6ZSgpCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIG1faW5pdGlhbGl6
ZWQgPSB0cnVlOwogI2VuZGlmCi0KLSNpZiBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotICAgIGVu
YWJsZVNhbXBsZXIoKTsKLSNlbmRpZgogfQogCiAjaWZkZWYgTkRFQlVHCkBAIC04MDUsMjUgKzc5
OSw4IEBAIHN0YXRpYyBpbmxpbmUgSlNPYmplY3QqIGNoZWNrZWRSZXR1cm4oSlMKICAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CiB9CiAKLWNsYXNzIFNhbXBsaW5nU2NvcGUgewotcHVibGljOgotICAg
IFNhbXBsaW5nU2NvcGUoSW50ZXJwcmV0ZXIqIGludGVycHJldGVyKQotICAgICAgICA6IG1faW50
ZXJwcmV0ZXIoaW50ZXJwcmV0ZXIpCi0gICAgewotICAgICAgICBpbnRlcnByZXRlci0+c3RhcnRT
YW1wbGluZygpOwotICAgIH0KLSAgICB+U2FtcGxpbmdTY29wZSgpCi0gICAgewotICAgICAgICBt
X2ludGVycHJldGVyLT5zdG9wU2FtcGxpbmcoKTsKLSAgICB9Ci1wcml2YXRlOgotICAgIEludGVy
cHJldGVyKiBtX2ludGVycHJldGVyOwotfTsKLQogSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0
ZShQcm9ncmFtRXhlY3V0YWJsZSogcHJvZ3JhbSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2Jq
ZWN0KiB0aGlzT2JqKQogewotICAgIFNhbXBsaW5nU2NvcGUgc2FtcGxpbmdTY29wZSh0aGlzKTsK
LQogICAgIEpTU2NvcGUqIHNjb3BlID0gdGhpc09iai0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFNj
b3BlKCk7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOwogCkBAIC05NjIsMTEgKzkzOSw3IEBA
IGZhaWxlZEpTT05QOgogICAgICAgICBwcm9maWxlci0+d2lsbEV4ZWN1dGUoY2FsbEZyYW1lLCBw
cm9ncmFtLT5zb3VyY2VVUkwoKSwgcHJvZ3JhbS0+Zmlyc3RMaW5lKCksIHByb2dyYW0tPnN0YXJ0
Q29sdW1uKCkpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKLSAgICBKU1ZhbHVlIHJlc3Vs
dDsKLSAgICB7Ci0gICAgICAgIFNhbXBsaW5nVG9vbDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1f
c2FtcGxlci5nZXQoKSk7Ci0gICAgICAgIHJlc3VsdCA9IHByb2dyYW0tPmdlbmVyYXRlZEpJVENv
ZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7Ci0gICAgfQorICAgIEpTVmFsdWUg
cmVzdWx0ID0gcHJvZ3JhbS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5leGVjdXRlKCZ2bSwgJnByb3Rv
Q2FsbEZyYW1lKTsKIAogICAgIGlmIChMZWdhY3lQcm9maWxlciogcHJvZmlsZXIgPSB2bS5lbmFi
bGVkUHJvZmlsZXIoKSkKICAgICAgICAgcHJvZmlsZXItPmRpZEV4ZWN1dGUoY2FsbEZyYW1lLCBw
cm9ncmFtLT5zb3VyY2VVUkwoKSwgcHJvZ3JhbS0+Zmlyc3RMaW5lKCksIHByb2dyYW0tPnN0YXJ0
Q29sdW1uKCkpOwpAQCAtMTAyNCw4ICs5OTcsNiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVj
dXRlQ2FsbChDYWxsRnJhCiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICB7Ci0gICAgICAgIFNh
bXBsaW5nVG9vbDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQoKSwgIWlzSlND
YWxsKTsKLQogICAgICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgogICAgICAgICBpZiAoaXNKU0Nh
bGwpCiAgICAgICAgICAgICByZXN1bHQgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUt
PmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUp
OwpAQCAtMTA5NCw4ICsxMDY1LDYgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29u
c3RydWN0KAogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgewotICAgICAgICBTYW1wbGluZ1Rv
b2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCksICFpc0pTQ29uc3RydWN0
KTsKLQogICAgICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlLgogICAgICAgICBpZiAoaXNKU0NvbnN0
cnVjdCkKICAgICAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVj
dXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCktPmV4ZWN1dGUoJnZtLCAmcHJv
dG9DYWxsRnJhbWUpOwpAQCAtMTE0NCw3ICsxMTEzLDYgQEAgQ2FsbEZyYW1lQ2xvc3VyZSBJbnRl
cnByZXRlcjo6cHJlcGFyZUZvcgogSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShDYWxsRnJh
bWVDbG9zdXJlJiBjbG9zdXJlKSAKIHsKICAgICBWTSYgdm0gPSAqY2xvc3VyZS52bTsKLSAgICBT
YW1wbGluZ1Njb3BlIHNhbXBsaW5nU2NvcGUodGhpcyk7CiAgICAgCiAgICAgQVNTRVJUKCF2bS5p
c0NvbGxlY3RvckJ1c3koKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElz
SG9sZGluZ0FQSUxvY2soKSk7CkBAIC0xMTYwLDExICsxMTI4LDcgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZShDYWxsRnJhbWVDbAogICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKGNsb3N1cmUub2xkQ2FsbEZyYW1lKTsKIAogICAgIC8vIEV4ZWN1
dGUgdGhlIGNvZGU6Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgewotICAgICAgICBTYW1wbGlu
Z1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOwotICAgICAgICBy
ZXN1bHQgPSBjbG9zdXJlLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNh
bGwoKS0+ZXhlY3V0ZSgmdm0sIGNsb3N1cmUucHJvdG9DYWxsRnJhbWUpOwotICAgIH0KKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IGNsb3N1cmUuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRD
b2RlRm9yQ2FsbCgpLT5leGVjdXRlKCZ2bSwgY2xvc3VyZS5wcm90b0NhbGxGcmFtZSk7CiAKICAg
ICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCiAg
ICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNsb3N1cmUub2xkQ2FsbEZyYW1lLCBjbG9zdXJl
LmZ1bmN0aW9uKTsKQEAgLTExNzUsNyArMTEzOSw2IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoQ2FsbEZyYW1lQ2wKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1
dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNT
Y29wZSogc2NvcGUpCiB7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOwotICAgIFNhbXBsaW5n
U2NvcGUgc2FtcGxpbmdTY29wZSh0aGlzKTsKICAgICAKICAgICBBU1NFUlQoc2NvcGUtPnZtKCkg
PT0gJmNhbGxGcmFtZS0+dm0oKSk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CkBAIC0x
MjcxLDExICsxMjM0LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0
YQogICAgICAgICBwcm9maWxlci0+d2lsbEV4ZWN1dGUoY2FsbEZyYW1lLCBldmFsLT5zb3VyY2VV
UkwoKSwgZXZhbC0+Zmlyc3RMaW5lKCksIGV2YWwtPnN0YXJ0Q29sdW1uKCkpOwogCiAgICAgLy8g
RXhlY3V0ZSB0aGUgY29kZToKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICB7Ci0gICAgICAgIFNh
bXBsaW5nVG9vbDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQoKSk7Ci0gICAg
ICAgIHJlc3VsdCA9IGV2YWwtPmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90
b0NhbGxGcmFtZSk7Ci0gICAgfQorICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbC0+Z2VuZXJhdGVk
SklUQ29kZSgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKIAogICAgIGlmIChMZWdh
Y3lQcm9maWxlciogcHJvZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKICAgICAgICAgcHJv
ZmlsZXItPmRpZEV4ZWN1dGUoY2FsbEZyYW1lLCBldmFsLT5zb3VyY2VVUkwoKSwgZXZhbC0+Zmly
c3RMaW5lKCksIGV2YWwtPnN0YXJ0Q29sdW1uKCkpOwpAQCAtMTI4Niw3ICsxMjQ1LDYgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTTW9kdWxlRW52aXJvbm1lbnQqIHNjb3BlKQogewogICAgIFZNJiB2bSA9
ICpzY29wZS0+dm0oKTsKLSAgICBTYW1wbGluZ1Njb3BlIHNhbXBsaW5nU2NvcGUodGhpcyk7CiAK
ICAgICBBU1NFUlQoc2NvcGUtPnZtKCkgPT0gJmNhbGxGcmFtZS0+dm0oKSk7CiAgICAgQVNTRVJU
KCF2bS5leGNlcHRpb24oKSk7CkBAIC0xMzE5LDExICsxMjc3LDcgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZShNb2R1bGVQcm9ncgogICAgICAgICBwcm9maWxlci0+d2lsbEV4ZWN1dGUo
Y2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2VVUkwoKSwgZXhlY3V0YWJsZS0+Zmlyc3RMaW5l
KCksIGV4ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCkpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29k
ZToKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICB7Ci0gICAgICAgIFNhbXBsaW5nVG9vbDo6Q2Fs
bFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQoKSk7Ci0gICAgICAgIHJlc3VsdCA9IGV4
ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFt
ZSk7Ci0gICAgfQorICAgIEpTVmFsdWUgcmVzdWx0ID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklU
Q29kZSgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKIAogICAgIGlmIChMZWdhY3lQ
cm9maWxlciogcHJvZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKICAgICAgICAgcHJvZmls
ZXItPmRpZEV4ZWN1dGUoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2VVUkwoKSwgZXhlY3V0
YWJsZS0+Zmlyc3RMaW5lKCksIGV4ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCkpOwpAQCAtMTM2Myw0
MCArMTMxNyw0IEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWwKICAg
ICBBU1NFUlQoIWNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpOwogfSAgICAKIAotdm9pZCBJbnRl
cnByZXRlcjo6ZW5hYmxlU2FtcGxlcigpCi17Ci0jaWYgRU5BQkxFKE9QQ09ERV9TQU1QTElORykK
LSAgICBpZiAoIW1fc2FtcGxlcikgewotICAgICAgICBtX3NhbXBsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNhbXBsaW5nVG9vbD4odGhpcyk7Ci0gICAgICAgIG1fc2FtcGxlci0+c2V0dXAoKTsKLSAg
ICB9Ci0jZW5kaWYKLX0KLXZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0
ZSogZXhlYykKLXsKLSNpZiBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotICAgIGlmIChtX3NhbXBs
ZXIpCi0gICAgICAgIG1fc2FtcGxlci0+ZHVtcChleGVjKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwotI2VuZGlmCi19Ci12b2lkIEludGVycHJldGVyOjpzdGFydFNhbXBsaW5nKCkK
LXsKLSNpZiBFTkFCTEUoU0FNUExJTkdfVEhSRUFEKQotICAgIGlmICghbV9zYW1wbGVFbnRyeURl
cHRoKQotICAgICAgICBTYW1wbGluZ1RocmVhZDo6c3RhcnQoKTsKLQotICAgIG1fc2FtcGxlRW50
cnlEZXB0aCsrOwotI2VuZGlmCi19Ci12b2lkIEludGVycHJldGVyOjpzdG9wU2FtcGxpbmcoKQot
ewotI2lmIEVOQUJMRShTQU1QTElOR19USFJFQUQpCi0gICAgbV9zYW1wbGVFbnRyeURlcHRoLS07
Ci0gICAgaWYgKCFtX3NhbXBsZUVudHJ5RGVwdGgpCi0gICAgICAgIFNhbXBsaW5nVGhyZWFkOjpz
dG9wKCk7Ci0jZW5kaWYKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTk4
MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgY2xh
c3MgSlNTY29wZTsKLSAgICBjbGFzcyBTYW1wbGluZ1Rvb2w7CiAgICAgc3RydWN0IENhbGxGcmFt
ZUNsb3N1cmU7CiAgICAgc3RydWN0IEhhbmRsZXJJbmZvOwogICAgIHN0cnVjdCBJbnN0cnVjdGlv
bjsKQEAgLTIyMSw4ICsyMjAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGdl
dEFyZ3VtZW50c0RhdGEoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiomLCBwdHJkaWZmX3QmIGZpcnN0
UGFyYW1ldGVySW5kZXgsIFJlZ2lzdGVyKiYgYXJndiwgaW50JiBhcmdjKTsKICAgICAgICAgCi0g
ICAgICAgIFNhbXBsaW5nVG9vbCogc2FtcGxlcigpIHsgcmV0dXJuIG1fc2FtcGxlci5nZXQoKTsg
fQotCiAgICAgICAgIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogdW53aW5kKFZNJiwgQ2FsbEZy
YW1lKiYsIEV4Y2VwdGlvbiosIFVud2luZFN0YXJ0KTsKICAgICAgICAgdm9pZCBub3RpZnlEZWJ1
Z2dlck9mRXhjZXB0aW9uVG9CZVRocm93bihDYWxsRnJhbWUqLCBFeGNlcHRpb24qKTsKICAgICAg
ICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWcoQ2FsbEZyYW1lKiwgRGVidWdIb29rSUQpOwpAQCAt
MjMzLDEwICsyMzAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aE5hdGl2ZUVycm9yQ29uc3RydWN0b3Io
RXhlY1N0YXRlKik7CiAgICAgICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCi0gICAgICAgIHZvaWQg
ZHVtcFNhbXBsZURhdGEoRXhlY1N0YXRlKiBleGVjKTsKLSAgICAgICAgdm9pZCBzdGFydFNhbXBs
aW5nKCk7Ci0gICAgICAgIHZvaWQgc3RvcFNhbXBsaW5nKCk7Ci0KICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBkdW1wQ2FsbEZyYW1lKENhbGxGcmFtZSopOwogCiAgICAgICAgIHZvaWQg
Z2V0U3RhY2tUcmFjZShWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMsIHNpemVfdCBtYXhTdGFj
a1NpemUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKQEAgLTI1NCwxMCAr
MjQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGlzQ2FsbEJ5
dGVjb2RlKE9wY29kZSBvcGNvZGUpIHsgcmV0dXJuIG9wY29kZSA9PSBnZXRPcGNvZGUob3BfY2Fs
bCkgfHwgb3Bjb2RlID09IGdldE9wY29kZShvcF9jb25zdHJ1Y3QpIHx8IG9wY29kZSA9PSBnZXRP
cGNvZGUob3BfY2FsbF9ldmFsKSB8fCBvcGNvZGUgPT0gZ2V0T3Bjb2RlKG9wX3RhaWxfY2FsbCk7
IH0KIAotICAgICAgICB2b2lkIGVuYWJsZVNhbXBsZXIoKTsKLSAgICAgICAgaW50IG1fc2FtcGxl
RW50cnlEZXB0aDsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNhbXBsaW5nVG9vbD4gbV9zYW1w
bGVyOwotCiAgICAgICAgIFZNJiBtX3ZtOwogICAgICAgICBKU1N0YWNrIG1fc3RhY2s7CiAgICAg
ICAgIGludCBtX2Vycm9ySGFuZGxpbmdNb2RlUmVlbnRyeTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ4LDYgKzE0OCwxNiBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXAgQXNzZW1ibHlI
ZWxwZXJzOjpiCiAgICAgICAgIFRydXN0ZWRJbW0zMihGYXN0VHlwZWRBcnJheSkpOwogfQogCit2
b2lkIEFzc2VtYmx5SGVscGVyczo6aW5jcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKQoreworICAg
IGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKGJpdHdpc2VfY2FzdDxjb25z
dCB2b2lkKj4oJmdfc3VwZXJTYW1wbGVyQ291bnQpKSk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxw
ZXJzOjpkZWNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpCit7CisgICAgc3ViMzIoVHJ1c3RlZElt
bTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3MoYml0d2lzZV9jYXN0PGNvbnN0IHZvaWQqPigmZ19zdXBl
clNhbXBsZXJDb3VudCkpKTsKK30KKyAgICAKIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpwdXJpZnlO
YU4oRlBSUmVnIGZwcikKIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3ROYU4gPSBicmFu
Y2hEb3VibGUoRG91YmxlRXF1YWwsIGZwciwgZnByKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgi
CiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIKICNpbmNsdWRlICJSZWdpc3RlclNl
dC5oIgorI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlR5cGVvZlR5cGUuaCIK
ICNpbmNsdWRlICJWTS5oIgogCkBAIC0xMDA2LDYgKzEwMDcsOSBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogICAgIHZvaWQgaml0UmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CisKKyAgICB2b2lkIGlu
Y3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCk7CisgICAgdm9pZCBkZWNyZW1lbnRTdXBlclNhbXBs
ZXJDb3VudCgpOwogICAgIAogICAgIHZvaWQgcHVyaWZ5TmFOKEZQUlJlZyk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQAog
I2luY2x1ZGUgIlBDVG9Db2RlT3JpZ2luTWFwLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKLSNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIK
ICNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgog
I2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5j
bHVkZSAiUENUb0NvZGVPcmlnaW5NYXAuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCi0jaW5j
bHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiVW51c2VkUG9pbnRlci5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRp
YzMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMzMl82NC5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNiBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKLSNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNp
bmNsdWRlICJTbG93UGF0aENhbGwuaCIKIAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcg
KzQ2LDYgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCi0jaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAj
aW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICsz
Nyw2IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIK
ICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCi0jaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5j
bHVkZSAiU2V0dXBWYXJhcmdzRnJhbWUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRl
ICJSZXN1bHRUeXBlLmgiCi0jaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU2V0
dXBWYXJhcmdzRnJhbWUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUg
IlRodW5rR2VuZXJhdG9ycy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBA
CiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lLmgiCiAjaW5jbHVkZSAiUmVwYXRjaC5oIgogI2luY2x1
ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1
ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2lu
Y2x1ZGUgIlZNSW5saW5lcy5oIgpAQCAtMTAzNCw2ICsxMDM1LDcgQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdAogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld1JlZ2V4cChFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIHJlZ2V4cFB0cikKIHsK
KyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwg
ZXhlYyk7CiAgICAgUmVnRXhwKiByZWdleHAgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihyZWdleHBQ
dHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw2IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkxpbmtCdWZm
ZXIuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCi0jaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgi
CiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3Ry
ZWFtLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNiBA
QAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5j
bHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUg
IlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50c1RhYmxlLmgiCiAj
aW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRl
ICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgIlJl
Z0V4cE9iamVjdC5oIgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTY0OSw4ICsxNjQ5LDYgQEAgc3RkOjp1bmlx
dWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29u
c3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLAogICAgIFRoaXNURFpNb2RlIHRo
aXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCiB7Ci0gICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oIlBhcnNpbmciKTsKLQogICAgIEFTU0VSVCghc291cmNlLnBy
b3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCkt
PnNvdXJjZSgpLmlzOEJpdCgpKSB7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNl
cih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJp
bmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDE5ODMwMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkluZmVycmVkVmFsdWUuaCIKICNpbmNs
dWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJT
YW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiVHlwZVNl
dC5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkocmV2
aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRl
ICJKU0xvY2suaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJ
RFRhYmxlLmgiCisjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJy
aWVyLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KQEAgLTY5LDYg
KzcwLDcgQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKICNpZm5kZWYgTkRFQlVHCiAgICAg
ICAgIERpc2FsbG93R0M6OmluaXRpYWxpemUoKTsKICNlbmRpZgorICAgICAgICBpbml0aWFsaXpl
U3VwZXJTYW1wbGVyKCk7CiAgICAgICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZU
aHJlYWREYXRhKCk7CiAgICAgICAgIHRocmVhZERhdGEuc2V0U2F2ZWRMYXN0U3RhY2tUb3AodGhy
ZWFkRGF0YS5zdGFjaygpLm9yaWdpbigpKTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDE5ODMwMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDYgKzM0
OCw4IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYoYm9vbCwgZHVt
cE1vZHVsZVJlY29yZCwgZmFsc2UsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGR1bXBNb2R1bGVM
b2FkaW5nU3RhdGUsIGZhbHNlLCBudWxscHRyKSBcCiAgICAgdihib29sLCBleHBvc2VJbnRlcm5h
bE1vZHVsZUxvYWRlciwgZmFsc2UsICJleHBvc2UgdGhlIGludGVybmFsIG1vZHVsZSBsb2FkZXIg
b2JqZWN0IHRvIHRoZSBnbG9iYWwgc3BhY2UgZm9yIGRlYnVnZ2luZyIpIFwKKyAgICBcCisgICAg
dihib29sLCB1c2VTdXBlclNhbXBsZXIsIGZhbHNlLCBudWxscHRyKQogCiBlbnVtIE9wdGlvbkVx
dWl2YWxlbmNlIHsKICAgICBTYW1lT3B0aW9uLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmgJKHJldmlzaW9uIDE5ODMwMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFJlZ0V4cENhY2hlZFJlc3Vs
dF9oCiAKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKKyNpbmNsdWRlICJTdXBlclNhbXBsZXIu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCShyZXZpc2lvbiAxOTgzMDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsOCArNTIsNiBAQCBBTFdBWVNfSU5MSU5FIEpTQXJyYXkqIGNyZWF0ZVJl
Z0V4cE1hdGNoCiAgICAgVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0
cmluZyogaW5wdXQsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSwKICAgICBSZWdFeHAqIHJlZ0V4
cCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1hdGNoUmVzdWx0JiByZXN1bHQpCiB7Ci0gICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oImNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSIpOwot
ICAgIAogICAgIFZlY3RvcjxpbnQsIDMyPiBzdWJwYXR0ZXJuUmVzdWx0czsKICAgICBpbnQgcG9z
aXRpb24gPSByZWdFeHAtPm1hdGNoSW5saW5lKHZtLCBpbnB1dFZhbHVlLCBzdGFydE9mZnNldCwg
c3VicGF0dGVyblJlc3VsdHMpOwogICAgIGlmIChwb3NpdGlvbiA9PSAtMSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAi
UmVnRXhwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKICNp
bmNsdWRlICJSZWdFeHBPYmplY3QuaCIKKyNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8dW5pY29kZS91Y29uZmlnLmg+CiAjaW5jbHVkZSA8
dW5pY29kZS91bm9ybS5oPgpAQCAtNDQ3LDYgKzQ0OCw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNTcGxpY2VTdWIKIAogc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFs
dWUgcmVtb3ZlVXNpbmdSZWdFeHBTZWFyY2goRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgUmVnRXhwKiByZWdFeHApCiB7CisgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIAogICAgIHNpemVfdCBs
YXN0SW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24gPSAwOwogCkBAIC0xNDY4
LDcgKzE0NzEsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiRG9p
bmcgc3Vic3RyaW5naW5nIik7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjgsMTYgKzUyOCw2IEBAIHZvaWQg
Vk06OnJlc2V0RGF0ZUNhY2hlKCkKICAgICBkYXRlSW5zdGFuY2VDYWNoZS5yZXNldCgpOwogfQog
Ci12b2lkIFZNOjpzdGFydFNhbXBsaW5nKCkKLXsKLSAgICBpbnRlcnByZXRlci0+c3RhcnRTYW1w
bGluZygpOwotfQotCi12b2lkIFZNOjpzdG9wU2FtcGxpbmcoKQotewotICAgIGludGVycHJldGVy
LT5zdG9wU2FtcGxpbmcoKTsKLX0KLQogdm9pZCBWTTo6d2hlbklkbGUoc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IGNhbGxiYWNrKQogewogICAgIGlmICghZW50cnlTY29wZSkgewpAQCAtNTc1LDE0ICs1
NjUsNiBAQCB2b2lkIFZNOjpkZWxldGVBbGxDb2RlKCkKICAgICB9KTsKIH0KIAotdm9pZCBWTTo6
ZHVtcFNhbXBsZURhdGEoRXhlY1N0YXRlKiBleGVjKQotewotICAgIGludGVycHJldGVyLT5kdW1w
U2FtcGxlRGF0YShleGVjKTsKLSNpZiBFTkFCTEUoQVNTRU1CTEVSKQotICAgIEV4ZWN1dGFibGVB
bGxvY2F0b3I6OmR1bXBQcm9maWxlKCk7Ci0jZW5kaWYKLX0KLQogU291cmNlUHJvdmlkZXJDYWNo
ZSogVk06OmFkZFNvdXJjZVByb3ZpZGVyQ2FjaGUoU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3Zp
ZGVyKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gc291cmNlUHJvdmlkZXJDYWNoZU1hcC5hZGQo
c291cmNlUHJvdmlkZXIsIG51bGxwdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsOSArNTUzLDYgQEAgcHVibGljOgogCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCByZXNldERhdGVDYWNoZSgpOwogCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBzdGFydFNhbXBsaW5nKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
dG9wU2FtcGxpbmcoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBTYW1wbGVEYXRh
KEV4ZWNTdGF0ZSopOwogICAgIFJlZ0V4cENhY2hlKiByZWdFeHBDYWNoZSgpIHsgcmV0dXJuIG1f
cmVnRXhwQ2FjaGU7IH0KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgdm9pZCBhZGRS
ZWdFeHBUb1RyYWNlKFJlZ0V4cCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxOTgzMDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiWWFyckludGVycHJl
dGVyLmgiCiAKKyNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJZYXJyLmgiCiAj
aW5jbHVkZSAiWWFyckNhbm9uaWNhbGl6ZS5oIgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFs
bG9jYXRvci5oPgpAQCAtMjAzNCw2ICsyMDM1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
UGF0dGVybj4gYnl0ZUNvbQogCiB1bnNpZ25lZCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0ZXJuKiBi
eXRlY29kZSwgY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkKiBv
dXRwdXQpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OwogICAgIGlmIChpbnB1dC5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIEludGVycHJldGVyPExD
aGFyPihieXRlY29kZSwgb3V0cHV0LCBpbnB1dC5jaGFyYWN0ZXJzOCgpLCBpbnB1dC5sZW5ndGgo
KSwgc3RhcnQpLmludGVycHJldCgpOwogICAgIHJldHVybiBJbnRlcnByZXRlcjxVQ2hhcj4oYnl0
ZWNvZGUsIG91dHB1dCwgaW5wdXQuY2hhcmFjdGVyczE2KCksIGlucHV0Lmxlbmd0aCgpLCBzdGFy
dCkuaW50ZXJwcmV0KCk7CkBAIC0yMDQxLDExICsyMDQzLDEzIEBAIHVuc2lnbmVkIGludGVycHJl
dChCeXRlY29kZVBhdHRlcm4qIGJ5dGUKIAogdW5zaWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0
dGVybiogYnl0ZWNvZGUsIGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3RoLCB1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQqIG91dHB1dCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgcmV0dXJuIEludGVycHJldGVyPExDaGFyPihi
eXRlY29kZSwgb3V0cHV0LCBpbnB1dCwgbGVuZ3RoLCBzdGFydCkuaW50ZXJwcmV0KCk7CiB9CiAK
IHVuc2lnbmVkIGludGVycHJldChCeXRlY29kZVBhdHRlcm4qIGJ5dGVjb2RlLCBjb25zdCBVQ2hh
ciogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkKiBvdXRw
dXQpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwog
ICAgIHJldHVybiBJbnRlcnByZXRlcjxVQ2hhcj4oYnl0ZWNvZGUsIG91dHB1dCwgaW5wdXQsIGxl
bmd0aCwgc3RhcnQpLmludGVycHJldCgpOwogfQogCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4MzAxKQor
KysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAor
MjAxNi0wMy0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIFJl
cGxhY2UgYWxsIG9mIHRoZSB2YXJpb3VzIG5vbi13b3JraW5nIGFuZCBub24tY29tcGlsaW5nIHNh
bXBsaW5nIHByb2ZpbGVyIGhhY2tzIHdpdGggYSBzaW5nbGUgc3VwZXIgaGFjaworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NTYxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXBsYWNl
cyBhbGwgb2Ygb3VyIHZhcmlvdXMgYWQgaG9jIHByb2ZpbGluZyBoYWNrcyB3aXRoIGEgc2luZ2xl
IGFkIGhvYyBwcm9maWxpbmcgaGFjay4KKyAgICAgICAgVGhhdCBuZWVkcyB0byBiZSBhYmxlIHRv
IHNsZWVwIGEgdGhyZWFkLCBzbyBJIGFkZGVkIGEgcG9ydGFibGUgd2F5IHRvIGRvIGl0LgorCisg
ICAgICAgIFRoaXMgYWxzbyByZW1vdmVzIGEgYnVuY2ggb2YgRU5BQkxFIGZsYWdzIGZvciBhbGwg
b2YgdGhlIG9sZCBub24td29ya2luZyBoYWNrcy4KKworICAgICAgICAqIHd0Zi9DdXJyZW50VGlt
ZS5jcHA6CisgICAgICAgIChXVEY6OmN1cnJlbnRDUFVUaW1lKToKKyAgICAgICAgKFdURjo6c2xl
ZXApOgorICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5oOgorICAgICAgICAoV1RGOjpzbGVlcE1T
KToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxNi0wMy0xNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
OTgyMzUsIHIxOTgyNDAsIHIxOTgyNDEsIGFuZApJbmRleDogU291cmNlL1dURi93dGYvQ3VycmVu
dFRpbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0N1cnJlbnRUaW1lLmNwcAko
cmV2aXNpb24gMTk4MzAxKQorKysgU291cmNlL1dURi93dGYvQ3VycmVudFRpbWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ3VycmVudFRpbWUuaCIKIAorI2luY2x1ZGUgIkNvbmRpdGlvbi5oIgorI2luY2x1ZGUgIkxv
Y2suaCIKKwogI2lmIE9TKERBUldJTikKICNpbmNsdWRlIDxtYWNoL21hY2guaD4KICNpbmNsdWRl
IDxtYWNoL21hY2hfdGltZS5oPgpAQCAtMzI3LDQgKzMzMCwxNyBAQCBzdGQ6OmNocm9ubzo6bWlj
cm9zZWNvbmRzIGN1cnJlbnRDUFVUaW1lCiAjZW5kaWYKIH0KIAordm9pZCBzbGVlcChkb3VibGUg
dmFsdWUpCit7CisgICAgLy8gSXQncyB2ZXJ5IGNoYWxsZW5naW5nIHRvIGZpbmQgcG9ydGFibGUg
d2F5cyBvZiBzbGVlcGluZyBmb3IgbGVzcyB0aGFuIGEgc2Vjb25kLiBPbiBVTklYLCB5b3Ugd2Fu
dCB0bworICAgIC8vIHVzZSB1c2xlZXAoKSBidXQgaXQncyBoYXJkIHRvICNpbmNsdWRlIGl0IGlu
IGEgcG9ydGFibGUgd2F5ICh5b3UnZCB0aGluayBpdCdzIGluIHVuaXN0ZC5oLCBidXQgdGhlbgor
ICAgIC8vIHlvdSdkIGJlIHdyb25nIG9uIHNvbWUgT1NYIFNES3MpLiBBbHNvLCB1c2xlZXAoKSB3
b24ndCBzYXZlIHlvdSBvbiBXaW5kb3dzLiBIZW5jZSwgYm90dG9taW5nIG91dCBpbgorICAgIC8v
IGxvY2sgY29kZSwgd2hpY2ggYWxyZWFkeSBzb2x2ZXMgdGhlIHNsZWVwaW5nIHByb2JsZW0sIGlz
IHByb2JhYmx5IGZvciB0aGUgYmVzdC4KKyAgICAKKyAgICBMb2NrIGZha2VMb2NrOworICAgIENv
bmRpdGlvbiBmYWtlQ29uZGl0aW9uOworICAgIExvY2tIb2xkZXIgZmFrZUxvY2tlcihmYWtlTG9j
ayk7CisgICAgZmFrZUNvbmRpdGlvbi53YWl0VW50aWxNb25vdG9uaWNDbG9ja1NlY29uZHMoZmFr
ZUxvY2ssIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICsgdmFsdWUpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0N1cnJlbnRUaW1lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvQ3VycmVudFRpbWUuaAkocmV2aXNpb24gMTk4MzAxKQor
KysgU291cmNlL1dURi93dGYvQ3VycmVudFRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTIg
KzY2LDIxIEBAIGlubGluZSBkb3VibGUgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW0KIC8vIHRo
YW4gYSBtaWxsaXNlY29uZC4KIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6OmNocm9ubzo6bWljcm9z
ZWNvbmRzIGN1cnJlbnRDUFVUaW1lKCk7CiAKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNsZWVw
KGRvdWJsZSk7CisKK2lubGluZSB2b2lkIHNsZWVwTVMoZG91YmxlIHZhbHVlKQoreworICAgIHNs
ZWVwKHZhbHVlIC8gMTAwMC4wKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKK3VzaW5nIFdU
Rjo6Y3VycmVudENQVVRpbWU7CiB1c2luZyBXVEY6OmN1cnJlbnRUaW1lOwogdXNpbmcgV1RGOjpj
dXJyZW50VGltZU1TOwogdXNpbmcgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWU7CiB1
c2luZyBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZU1TOwotdXNpbmcgV1RGOjpjdXJy
ZW50Q1BVVGltZTsKK3VzaW5nIFdURjo6c2xlZXA7Cit1c2luZyBXVEY6OnNsZWVwTVM7CiAKICNl
bmRpZiAvLyBDdXJyZW50VGltZV9oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDE5ODMwMSkK
KysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3NywxOSAr
Njc3LDYgQEAKICNkZWZpbmUgVVNFX1NZU1RFTV9NQUxMT0MgMQogI2VuZGlmCiAKLSNkZWZpbmUg
RU5BQkxFX0RFQlVHX1dJVEhfQlJFQUtQT0lOVCAwCi0jZGVmaW5lIEVOQUJMRV9TQU1QTElOR19D
T1VOVEVSUyAwCi0jZGVmaW5lIEVOQUJMRV9TQU1QTElOR19GTEFHUyAwCi0jZGVmaW5lIEVOQUJM
RV9TQU1QTElOR19SRUdJT05TIDAKLSNkZWZpbmUgRU5BQkxFX09QQ09ERV9TQU1QTElORyAwCi0j
ZGVmaW5lIEVOQUJMRV9DT0RFQkxPQ0tfU0FNUExJTkcgMAotI2lmIEVOQUJMRShDT0RFQkxPQ0tf
U0FNUExJTkcpICYmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotI2Vycm9yICJDT0RFQkxPQ0tf
U0FNUExJTkcgcmVxdWlyZXMgT1BDT0RFX1NBTVBMSU5HIgotI2VuZGlmCi0jaWYgRU5BQkxFKE9Q
Q09ERV9TQU1QTElORykgfHwgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKSB8fCBFTkFCTEUoU0FNUExJ
TkdfUkVHSU9OUykKLSNkZWZpbmUgRU5BQkxFX1NBTVBMSU5HX1RIUkVBRCAxCi0jZW5kaWYKLQog
I2lmICFkZWZpbmVkKFVTRV9KU1ZBTFVFNjQpICYmICFkZWZpbmVkKFVTRV9KU1ZBTFVFMzJfNjQp
CiAjaWYgKENQVShYODZfNjQpICYmIChPUyhVTklYKSB8fCBPUyhXSU5ET1dTKSkpIFwKICAgICB8
fCAoQ1BVKElBNjQpICYmICFDUFUoSUE2NF8zMikpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274307</attachid>
            <date>2016-03-17 11:56:18 -0700</date>
            <delta_ts>2016-03-17 12:28:36 -0700</delta_ts>
            <desc>better patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>129893</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3NCBA
QAorMjAxNi0wMy0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFJlcGxhY2UgYWxsIG9mIHRoZSB2YXJpb3VzIG5vbi13b3JraW5nIGFuZCBub24tY29tcGlsaW5n
IHNhbXBsaW5nIHByb2ZpbGVyIGhhY2tzIHdpdGggYSBzaW5nbGUgc3VwZXIgaGFjaworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NTYxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBWTSBuZWVkcyBzb21l
IGludGVybmFsIHByb2ZpbGluZyBoYWNrcyBpbiBhZGRpdGlvbiB0byB0aGUgcHJvZmlsZXIocykg
dGhhdCB0aGUgdXNlciBzZWVzLCBiZWNhdXNlCisgICAgICAgIHlvdSBjYW4gc3F1ZWV6ZSBvdXQg
bW9yZSBmaWRlbGl0eSBpZiB5b3UncmUgd2lsbGluZyB0byBtYWtlIHNvbWUga2luZCBvZiBkZWFs
IHdpdGggdGhlIGRldmlsLiBQcmlvcgorICAgICAgICB0byB0aGlzIGNoYW5nZSBKU0MgaGFkIGEg
YnVuY2ggb2YgdGhlc2U6CisKKyAgICAgICAgLSBDb2RlQmxvY2sgc2FtcGxpbmcgcHJvZmlsZXIK
KyAgICAgICAgLSBCeXRlY29kZSBzYW1wbGluZyBwcm9maWxlcgorICAgICAgICAtIFNhbXBsaW5n
IGZsYWdzCisgICAgICAgIC0gU2FtcGxpbmcgcmVnaW9ucworICAgICAgICAtIFNvbWUgb3RoZXIg
c3R1ZmYKKworICAgICAgICBJIHRyaWVkIHVzaW5nIHRoZXNlIHJlY2VudGx5LiBUaGV5IGRpZG4n
dCBldmVuIGJ1aWxkLiBJbml0aWFsbHkgSSBmaXhlZCB0aGF0LCBidXQgdGhlbiBJIGZvdW5kIHRo
YXQKKyAgICAgICAgdGhlc2UgcHJvZmlsZXJzIGhhZCBzb21lIHNlcmlvdXMgYnVncyB0aGF0IG1h
ZGUgdGhlbSByZXBvcnQgYm9ndXMgcmVzdWx0cyAtIGxpa2UgdW5kZXJyZXBvcnRpbmcgdGhlCisg
ICAgICAgIHRpbWUgc3BlbnQgaW4gcmVnaW9ucyBvZiBjb2RlIGJ5IG1vcmUgdGhhbiAyeC4KKwor
ICAgICAgICBQYXJ0IG9mIHRoZSBwcm9ibGVtIGhlcmUgaXMgdGhhdCBhIHByb2ZpbGVyIGxvc2Vz
IGZpZGVsaXR5IGFzIGl0IGdhaW5zIHBvd2VyLiBUaGUgbW9yZSBnZW5lcmFsIGl0CisgICAgICAg
IHRyaWVzIHRvIGJlLCB0aGUgbW9yZSBjb2RlIGdldHMgZXhlY3V0ZWQgb24gdGhlIGhvdCBwYXRo
IGZvciB0aGUgcHJvZmlsZXIsIHdoaWNoIGluY3JlYXNpbmdseQorICAgICAgICBwZXJ0dXJicyB0
aGUgcmVzdWx0cy4gSSBiZWxpZXZlIHRoYXQncyB0aGUgcmVhc29uIGZvciB0aGUgdW5kZXJyZXBv
cnRpbmcgLSBjb2RlIHJhbiBzdWZmaWNpZW50bHkKKyAgICAgICAgc2xvd2VyLCBhbmQgaW4gYSBz
dWZmaWNpZW50bHkgZGlmZmVyZW50IHdheSB3aGVuIHByb2ZpbGluZywgdGhhdCB0aGUgcmVzdWx0
cyB3ZXJlIGp1c3Qgd3JvbmcuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYXR0YWNrcyB0aGlzIHBy
b2JsZW0gZGlyZWN0bHkgYnkgcmVwbGFjaW5nIGFsbCBvZiB0aGUgZGl2ZXJzZSBwcm9maWxpbmcg
aGFja3Mgd2l0aCBqdXN0CisgICAgICAgIG9uZSwgd2hpY2ggSSBjYWxsIHRoZSBTdXBlclNhbXBs
ZXIuIEl0IGNvbnNpc3RzIG9mIGV4YWN0bHkgb25lIGNvdW50ZXIuIFdoZW4gZW5hYmxlZCwgdGhl
IHNhbXBsZXIKKyAgICAgICAgd2lsbCBwZXJpb2RpY2FsbHkgcHJpbnQgKHZpYSBkYXRhTG9nKCkp
IHRoZSBwZXJjZW50YWdlIG9mIHNhbXBsZXMgdGhhdCBzYXcgYSBub24temVybyBjb3VudC4gQmVj
YXVzZQorICAgICAgICBpdCdzIHNvIHNpbXBsZSwgaXQgZ2l2ZXMgYmV0dGVyIGFjY3VyYWN5LiBU
aGlzIGNvbWVzIGFib3V0IGluIHR3byB3YXlzOgorCisgICAgICAgIC0gSXQgcnVucyBhdCBhIGxv
d2VyIHJhdGUuIFRoYXQncyBmaW5lIHNpbmNlIGl0J3Mgb25seSBjaGVja2luZyBvbmUgZmxhZy4g
WW91IGRvbid0IG5lZWQgYSBoaWdoIHJhdGUKKyAgICAgICAgICBmb3IganVzdCBvbmUgZmxhZy4K
KyAgICAgICAgCisgICAgICAgIC0gVGhlIGZhY3QgdGhhdCB0aGVyZSBpcyBvbmx5ICpvbmUqIGZs
YWcgbWVhbnMgdGhhdCB0aGUgdXNlciBtdXN0IGNob29zZSBhIGh5cG90aGVzaXMgYWJvdXQgd2hh
dCBpcworICAgICAgICAgIHNsb3cuIFRoaXMgdHVybnMgdGhlIHByb2JsZW0gb2YgcHJvZmlsaW5n
IGludG8gYSBoeXBvdGhlc2lzIHRlc3RpbmcgcHJvYmxlbSwgd2hpY2ggaXMgYW4gaW5oZXJlbnRs
eQorICAgICAgICAgIGxlc3MgZmxha3kga2luZCBvZiBleHBlcmltZW50IHRvIHJ1bi4KKyAgICAg
ICAgCisgICAgICAgIFRoZSBTdXBlclNhbXBsZXIgaXMgZW5hYmxlZCB3aXRoIGEgcnVudGltZSBm
bGFnIHJhdGhlciB0aGFuIGEgY29tcGlsZS10aW1lIGZsYWcsIHNvIGl0J3MgbXVjaCBsZXNzCisg
ICAgICAgIGxpa2VseSB0byBicmVhay4gVGhhdCBhbHNvIG1lYW5zIHRoYXQgeW91IGNhbiBlbmFi
bGUgaXQgd2l0aG91dCByZWJ1aWxkaW5nIHRoZSB1bml2ZXJzZS4gVGhlIG9sZAorICAgICAgICBz
YW1wbGVycyBhbGwgaGFkIEVOQUJMRSBmbGFncyBpbiBQbGF0Zm9ybS5oLCB3aGljaCB3YXMgcmF0
aGVyIHVuZm9ydHVuYXRlIGZvciBjb21waWxlIHRpbWVzLgorCisgICAgICAgIFN1cGVyU2FtcGxl
ciBzdXBwb3J0cyBib3RoIEpJVCBhbmQgQysrIHVzZXJzLiBDKysgdXNlcnMgc2hvdWxkIHVzZSBT
dXBlclNhbXBsZXJTY29wZS4gVGhlIGRlZmF1bHQKKyAgICAgICAgaWRpb20gaXMgdG8gY3JlYXRl
IG9uZSBhbmQgcGFzcyAidHJ1ZSIgdG8gaXQuIFlvdSBjYW4gZGlzYWJsZSBhIHNjb3BlIGJ5IHBh
c3NpbmcgImZhbHNlIiBpbnN0ZWFkLgorICAgICAgICBUaGlzIHBhdGNoIHB1dHMgYSBidW5jaCBv
ZiBzY29wZXMgaW4gcGxhY2VzIEkgY2FyZSBhYm91dC4gSSB0aGluayBpdCdzIHByb2JhYmx5IE9L
IGlmIHBlb3BsZSBjaGVjayBpbgorICAgICAgICB0aGVzZSBkZWFjdGl2YXRlZCBzY29wZXMuIFRo
YXQgbWFrZXMgaXQgY29udmVuaWVudCB0byByZXRlc3QgdGhpbmdzIHdlJ3ZlIHRlc3RlZCBwcmV2
aW91c2x5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9TYW1w
bGluZ1Rvb2wuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5o
OiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjppbml0aWFsaXplU3VwZXJTYW1wbGVyKToKKyAgICAgICAgKEpTQzo6cHJp
bnRTdXBlclNhbXBsZXJTdGF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpTdXBlclNhbXBsZXJTY29wZTo6U3VwZXJTYW1wbGVyU2Nv
cGUpOgorICAgICAgICAoSlNDOjpTdXBlclNhbXBsZXJTY29wZTo6flN1cGVyU2FtcGxlclNjb3Bl
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+Ojpmb3JBbGxWYWx1ZXMpOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpjbG9iYmVyU3RydWN0dXJlcyk6Cisg
ICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OnBlcmZvcm1Bcmd1bWVudHNFbGltaW5hdGlvbik6CisgICAgICAgICogZGZnL0RG
R0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZv
cm1CYWNrd2FyZHNQcm9wYWdhdGlvbik6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwYXJzZSk6CisgICAgICAgICogZGZnL0RGR0NGQVBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtQ0ZBKToKKyAgICAgICAgKiBkZmcv
REZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9y
bUNGR1NpbXBsaWZpY2F0aW9uKToKKyAgICAgICAgKiBkZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0aHJlYWRpbmdQaGFzZTo6ZnJlZVVubmVj
ZXNzYXJ5Tm9kZXMpOgorICAgICAgICAoSlNDOjpERkc6OkNQU1JldGhyZWFkaW5nUGhhc2U6OmNh
bm9uaWNhbGl6ZUxvY2Fsc0luQmxvY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVh
ZGluZ1BoYXNlOjpwcm9wYWdhdGVQaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtQ1BT
UmV0aHJlYWRpbmcpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6cGVyZm9ybUxvY2FsQ1NFKToKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtR2xv
YmFsQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ2xlYW5VcFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpwZXJmb3JtQ2xlYW5VcCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtQ29uc3RhbnRGb2xkaW5nKToK
KyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpwZXJmb3JtQ29uc3RhbnRIb2lzdGluZyk6CisgICAgICAgICogZGZnL0RGR0NyaXRp
Y2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1Dcml0
aWNhbEVkZ2VCcmVha2luZyk6CisgICAgICAgICogZGZnL0RGR0RDRVBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpwZXJmb3JtRENFKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1GaXh1cCk6CisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZGV0aHJlYWQpOgor
ICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6cGVyZm9ybUludGVnZXJDaGVja0NvbWJpbmluZyk6CisgICAgICAgICogZGZn
L0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpwZXJmb3JtSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSW52
YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVy
Zm9ybUludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29t
cGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAg
KiBkZmcvREZHTElDTVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtTElDTSk6
CisgICAgICAgICogZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1MaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlv
blBoYXNlKToKKyAgICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgICogZGZn
L0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpw
ZXJmb3JtTG9vcFByZUhlYWRlckNyZWF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTWF4aW1hbEZs
dXNoSW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1NYXhpbWFs
Rmx1c2hJbnNlcnRpb24pOgorICAgICAgICAqIGRmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtTW92SGludFJlbW92YWwpOgorICAgICAgICAq
IGRmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpwZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMpOgorICAgICAgICAqIGRmZy9ERkdP
U1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9y
bU9TUkVudHJ5cG9pbnRDcmVhdGlvbik6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxl
ci5jcHA6CisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1PYmplY3RBbGxvY2F0aW9uU2lua2luZyk6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdQaGFudG9t
SW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1QaGFudG9tSW5z
ZXJ0aW9uKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
UGxhbjo6Y29tcGlsZUluVGhyZWFkKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvbkluamVj
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtUHJlZGljdGlvbkluamVj
dGlvbik6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtUHJlZGljdGlvblByb3BhZ2F0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OnBlcmZvcm1QdXRTdGFja1NpbmtpbmcpOgorICAgICAgICAqIGRmZy9ERkdTU0FDb252ZXJzaW9u
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1TU0FDb252ZXJzaW9uKToKKyAg
ICAgICAgKiBkZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
cGVyZm9ybVNTQUxvd2VyaW5nKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJm
b3JtU3RhY2tMYXlvdXQpOgorICAgICAgICAqIGRmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVz
dGltYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVN0YXRpY0V4ZWN1
dGlvbkNvdW50RXN0aW1hdGlvbik6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2Vy
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtRmFzdFN0b3JlQmFycmll
ckluc2VydGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybUdsb2JhbFN0b3JlQmFycmll
ckluc2VydGlvbik6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1TdHJlbmd0aFJlZHVjdGlvbik6CisgICAgICAg
ICogZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFzc2VydElzUmVnaXN0ZXJlZCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y2xvYmJlcik6CisgICAgICAgIChKU0M6
OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW5zaXRpb24pOgorICAgICAg
ICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9ucyk6
CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VTbG93KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZU5vdFRvcCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJTbG93KToKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjb250YWlucyk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdWJzZXRPZik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdXBlcnNldE9mKToKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvdmVybGFwcyk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZXF1YWxzU2xvdyk6CisgICAgICAgICogZGZnL0RG
R1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJm
b3JtU3RydWN0dXJlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJ
bmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVRpZXJVcENoZWNr
SW5qZWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVR5cGVDaGVja0hvaXN0aW5nKToKKyAgICAgICAg
KiBkZmcvREZHVW5pZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9y
bVVuaWZpY2F0aW9uKToKKyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVZhcmFyZ3NGb3J3YXJkaW5nKToKKyAgICAg
ICAgKiBkZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpwZXJmb3JtVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvbik6CisgICAgICAgICog
ZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OnBlcmZvcm1XYXRjaHBvaW50Q29sbGVjdGlvbik6CisgICAgICAgICogZHluYmVuY2guY3BwOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlUmVnRXhwRXhlYyk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVSZWdFeHBUZXN0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVN0cmluZ1JlcGxhY2UpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4
KToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjb21waWxlRlRMT1NSRXhpdCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzdG9yZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjphYnNvbHV0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjppbmNyZW1lbnRTdXBl
clNhbXBsZXJDb3VudCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpkZWNyZW1lbnRTdXBl
clNhbXBsZXJDb3VudCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6YmFzZUluZGV4KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxv
YWQ4U2lnbkV4dDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWQ4WmVyb0V4dDMy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFuY2hvcik6CisgICAgICAgIChKU0M6OkZU
TDo6T3V0cHV0OjphYnNvbHV0ZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoK
KyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29s
bGVjdEFuZFN3ZWVwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdEltcGwpOgorICAgICAg
ICAoSlNDOjpIZWFwOjp6b21iaWZ5RGVhZE9iamVjdHMpOgorICAgICAgICAqIGhlYXAvTWFya2Vk
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCk6
CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpz
ZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChKU0M6OmNoZWNrZWRSZXR1cm4pOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ2FsbCk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmRlYnVnKToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdTY29wZTo6U2FtcGxp
bmdTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNhbXBsaW5nU2NvcGU6On5TYW1wbGlu
Z1Njb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZVNhbXBs
ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZHVtcFNhbXBsZURhdGEp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6c3RhcnRTYW1wbGluZyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpzdG9wU2FtcGxpbmcpOiBEZWxldGVk
LgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjppc0NhbGxCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpz
YW1wbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdEZhc3RUeXBlZEFycmF5KToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjppbmNyZW1lbnRTdXBlclNhbXBsZXJDb3Vu
dCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZGVjcmVtZW50U3VwZXJTYW1wbGVy
Q291bnQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnB1cmlmeU5hTik6CisgICAg
ICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAg
ICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAg
ICAgICogaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHA6CisgICAgICAgICogaml0L0pJVENhbGwu
Y3BwOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAg
ICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKiBqc2MuY3Bw
OgorICAgICAgICAocnVuV2l0aFNjcmlwdHMpOgorICAgICAgICAoanNjbWFpbik6CisgICAgICAg
ICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAg
IChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFs
aXplVGhyZWFkaW5nKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBy
dW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwTWF0
Y2hlc0FycmF5Lmg6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSk6Cisg
ICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZW1v
dmVVc2luZ1JlZ0V4cFNlYXJjaCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1YnN0
cmluZyk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpyZXNl
dERhdGVDYWNoZSk6CisgICAgICAgIChKU0M6OlZNOjp3aGVuSWRsZSk6CisgICAgICAgIChKU0M6
OlZNOjpkZWxldGVBbGxDb2RlKToKKyAgICAgICAgKEpTQzo6Vk06OmFkZFNvdXJjZVByb3ZpZGVy
Q2FjaGUpOgorICAgICAgICAoSlNDOjpWTTo6c3RhcnRTYW1wbGluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OlZNOjpzdG9wU2FtcGxpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWTTo6
ZHVtcFNhbXBsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAg
ICAgKEpTQzo6Vk06OnJlZ0V4cENhY2hlKToKKyAgICAgICAgKiB0ZXN0UmVnRXhwLmNwcDoKKyAg
ICAgICAgKHJ1bkZyb21GaWxlcyk6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpZYXJyOjppbnRlcnByZXQpOgorCiAyMDE2LTAzLTE2ICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBNZXRob2QgbmFtZXMgc2hvdWxkIG5v
dCBhcHBlYXIgaW4gdGhlIGxleGljYWwgc2NvcGUgb2YgdGhlIG1ldGhvZCdzIGJvZHkuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxOTgzNDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIx
MywxMiArMjEzLDEyIEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5jcHAKICAgICBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKICAgICBi
eXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAotICAgIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5j
cHAKICAgICBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKICAgICBieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHAKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCiAgICAgYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKICAgICBieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5jcHAKKyAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCiAgICAgYnl0ZWNv
ZGUvVG9UaGlzU3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL1RyYWNrZWRSZWZlcmVuY2VzLmNwcAog
ICAgIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2R5bmJlbmNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZHluYmVuY2guY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZHluYmVuY2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTAgKzUxLDEwIEBACiAjaW5jbHVkZSAi
SlNXQVNNTW9kdWxlLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1ZGUg
IlNhbXBsaW5nUHJvZmlsZXIuaCIKLSNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRl
ICJTdGFja1Zpc2l0b3IuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgi
CiAjaW5jbHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9n
LmgiCiAjaW5jbHVkZSAiV0FTTU1vZHVsZVBhcnNlci5oIgpAQCAtMTkxOSw4ICsxOTE5LDYgQEAg
c3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAgZmls
ZU5hbWUgPSBBU0NJSUxpdGVyYWwoIltDb21tYW5kIExpbmVdIik7CiAgICAgICAgIH0KIAotICAg
ICAgICB2bS5zdGFydFNhbXBsaW5nKCk7Ci0KICAgICAgICAgaWYgKG1vZHVsZSkgewogICAgICAg
ICAgICAgaWYgKCFwcm9taXNlKQogICAgICAgICAgICAgICAgIHByb21pc2UgPSBsb2FkQW5kRXZh
bHVhdGVNb2R1bGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHRC
dWZmZXIsIGZpbGVOYW1lKSk7CkBAIC0xOTM2LDIwICsxOTM0LDkgQEAgc3RhdGljIGJvb2wgcnVu
V2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAgZHVtcEV4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgICAgICB9CiAKLSAgICAgICAgdm0u
c3RvcFNhbXBsaW5nKCk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLT5jbGVh
ckV4Y2VwdGlvbigpOwogICAgIH0KIAotI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKLSAgICBT
YW1wbGluZ0ZsYWdzOjpzdG9wKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU0FNUExJTkdfUkVHSU9O
UykKLSAgICBTYW1wbGluZ1JlZ2lvbjo6ZHVtcCgpOwotI2VuZGlmCi0gICAgdm0uZHVtcFNhbXBs
ZURhdGEoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOwotI2lmIEVOQUJMRShTQU1QTElOR19D
T1VOVEVSUykKLSAgICBBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6ZHVtcCgpOwotI2VuZGlmCiAj
aWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogICAgIHZtLmR1bXBSZWdFeHBUcmFjZSgpOwogI2Vu
ZGlmCkBAIC0yMjEwLDYgKzIxOTcsOCBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpCiAgICAgICAgIHZtLT5oZWFwLmNvbGxlY3RBbGxHYXJiYWdlKCk7CiAgICAgfQogCisgICAg
cHJpbnRTdXBlclNhbXBsZXJTdGF0ZSgpOworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
ODksNyArNDg5LDYgQEAgc3RhdGljIGJvb2wgcnVuRnJvbUZpbGVzKEdsb2JhbE9iamVjdCogZwog
CiAgICAgZGVsZXRlW10gbGluZUJ1ZmZlcjsKIAotICAgIHZtLmR1bXBTYW1wbGVEYXRhKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAg
dm0uZHVtcFJlZ0V4cFRyYWNlKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzc2
LDYgKzM3Niw4IEBACiAJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9w
Y29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ4NTMyNTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuY3BwICovOyB9Owog
CQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDg1MzI2MTg3REZERUMw
MDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBTb3Vy
Y2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ5M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwICovOyB9
OworCQkwRjRBMzhGOTFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNEEzOEY3MUM4RTEzREYw
MDE5MDMxOCAvKiBTdXBlclNhbXBsZXIuY3BwICovOyB9OworCQkwRjRBMzhGQTFDOEUxM0RGMDAx
OTAzMTggLyogU3VwZXJTYW1wbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjRBMzhGODFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0Qjk0
REMxN0I5RjA3NTAwREQwM0E0IC8qIFR5cGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRCOTREQjE3QjlGMDc1MDBERDAzQTQg
LyogVHlwZWRBcnJheUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjRDOTE2NjFDMjlGNEYyMDA0MzQxQTYgLyogQjNPcmlnaW5EdW1w
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRDOTE2
NTFDMjlGNEYyMDA0MzQxQTYgLyogQjNPcmlnaW5EdW1wLmggKi87IH07CiAJCTBGNERFMUNFMUM0
QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNERFMUNDMUM0QzFCNTQwMDRENkMxMSAv
KiBBaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCAqLzsgfTsKQEAgLTk4OCw4ICs5OTAsNiBAQAogCQkx
NDI5RDc3QzBFRDIwRDczMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjlENzdCMEVEMjBENzMwMEI4OTYxOSAv
KiBJbnRlcnByZXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTE0MjlEN0Q0MEVEMjEyODIwMEI4OTYxOSAvKiBJbnRlcnByZXRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDI5RDdEMzBFRDIx
MjgyMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuY3BwICovOyB9OwogCQkxNDI5RDg3ODBFRDIxQUNE
MDBCODk2MTkgLyogRXhjZXB0aW9uSGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDI5RDg3NzBFRDIxQUNEMDBCODk2MTkgLyogRXhjZXB0
aW9uSGVscGVycy5jcHAgKi87IH07Ci0JCTE0MjlEODg1MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1w
bGluZ1Rvb2wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQyOUQ4ODMwRUQyMUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5jcHAgKi87IH07Ci0J
CTE0MjlEODg2MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjlEODg0MEVEMjFDM0QwMEI4OTYx
OSAvKiBTYW1wbGluZ1Rvb2wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxNDI5RDhERDBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjlEOERCMEVE
MjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuY3BwICovOyB9OwogCQkxNDI5RDhERTBFRDIyMDVC
MDBCODk2MTkgLyogQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDI5RDhEQzBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQyOUQ5MkYw
RUQyMkQ3MDAwQjg5NjE5IC8qIEpJVC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDI5RDkyRDBFRDIyRDcwMDBCODk2MTkgLyogSklULmNwcCAqLzsg
fTsKQEAgLTI1MzAsNiArMjUzMCw4IEBACiAJCTBGNDg1MzI1MTg3REZERUMwMDgzQjY4NyAvKiBG
VExSZWNvdmVyeU9wY29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBGVExSZWNvdmVyeU9wY29kZS5jcHA7IHBhdGggPSBmdGwvRlRMUmVjb3ZlcnlPcGNvZGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ4NTMyNjE4N0RGREVDMDA4M0I2ODcg
LyogRlRMUmVjb3ZlcnlPcGNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
RlRMUmVjb3ZlcnlPcGNvZGUuaDsgcGF0aCA9IGZ0bC9GVExSZWNvdmVyeU9wY29kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ5M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291
cmNlUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291
cmNlUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjRBMzhGNzFD
OEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFN1cGVyU2FtcGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNEEzOEY4MUM4RTEzREYwMDE5MDMxOCAvKiBTdXBlclNhbXBsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VwZXJTYW1wbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNEI5NERCMTdCOUYwNzUwMEREMDNBNCAvKiBUeXBlZEFycmF5SW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlZEFycmF5SW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjRDOTE2NTFDMjlGNEYyMDA0MzQx
QTYgLyogQjNPcmlnaW5EdW1wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIz
T3JpZ2luRHVtcC5oOyBwYXRoID0gYjMvQjNPcmlnaW5EdW1wLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNERFMUNDMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3Bp
bGxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpckZpeE9idmlv
dXNTcGlsbHMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzEyNCw4ICszMTI2LDYgQEAKIAkJMTQyOUQ3RDMw
RUQyMTI4MjAwQjg5NjE5IC8qIEludGVycHJldGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEludGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMTQyOUQ4NUIwRUQyMThFOTAwQjg5NjE5IC8qIEpTU3RhY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0MjlEODc3MEVEMjFBQ0QwMEI4OTYxOSAvKiBFeGNlcHRpb25IZWxwZXJz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlvbkhlbHBl
cnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDI5RDg4MzBFRDIxQzNEMDBC
ODk2MTkgLyogU2FtcGxpbmdUb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNhbXBsaW5nVG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0
MjlEODg0MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdUb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0MjlEOERCMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTQyOUQ4REMwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gQ2FsbEZy
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRl
bnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQkxNDI5RDkyRDBFRDIyRDcwMDBCODk2
MTkgLyogSklULmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTc2LDggKzY1NzYsNiBAQAogCQkJ
CTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJCQkJMEZGNjBBQkYx
Njc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuY3BwICovLAogCQkJCTBGRjYwQUMw
MTY3NDBGODEwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmggKi8sCi0JCQkJMTQyOUQ4ODMw
RUQyMUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5jcHAgKi8sCi0JCQkJMTQyOUQ4ODQwRUQy
MUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5oICovLAogCQkJCTBGNTU0MUFGMTYxM0MxRkIw
MENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgKi8sCiAJCQkJMEY1NTQxQjAxNjEzQzFGQjAw
Q0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmggKi8sCiAJCQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5
Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmNwcCAqLywKQEAgLTY1ODgsNiArNjU4Niw4IEBACiAJCQkJ
MEY3NjZEMzcxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuaCAqLywKIAkJCQlCQ0NGMEQwQjBFRjBCOEE1MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1Yklu
Zm8uY3BwICovLAogCQkJCUJDQ0YwRDA3MEVGMEFBQjkwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHVi
SW5mby5oICovLAorCQkJCTBGNEEzOEY3MUM4RTEzREYwMDE5MDMxOCAvKiBTdXBlclNhbXBsZXIu
Y3BwICovLAorCQkJCTBGNEEzOEY4MUM4RTEzREYwMDE5MDMxOCAvKiBTdXBlclNhbXBsZXIuaCAq
LywKIAkJCQkwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLywK
IAkJCQkwRjJENERFNjE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggKi8sCiAJCQkJ
MEY5NTJBQkExQjQ4N0E3NzAwQzM2N0M1IC8qIFRyYWNrZWRSZWZlcmVuY2VzLmNwcCAqLywKQEAg
LTc4NTQsNiArNzg1NCw3IEBACiAJCQkJMEZCMzg3OTAxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpck9w
dGltaXplQmxvY2tPcmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5QkExNjZBRDM2MDAw
MEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcy
OUJCMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGF0aW9uS2luZC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0QTM4RkExQzhFMTNERjAwMTkwMzE4IC8qIFN1cGVyU2FtcGxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5QkMxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyQ29t
cGlsZWRCeXRlY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5QkQxNjZBRDM2MDAwMEY1
QkEzIC8qIFByb2ZpbGVyRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUJFMTY2
QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckV4ZWN1dGlvbkNvdW50ZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtNzkxMyw3ICs3OTE0LDYgQEAKIAkJCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyog
UnVudGltZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkMwNjExRjFBQTUxRTFDMDBCNEFE
QkEgLyogUnVudGltZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyMkIzMUI5MTQwNTc3RDcw
MERCNDc1QSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTE0MjlEODg2
MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RTA1MDI4MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zm
c2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTkwNjksNiArOTA2OSw3IEBACiAJCQkJRkUzODRFRTcx
QUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ3RjM5RDcxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTRW52aXJvbm1lbnRSZWNvcmQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwNTY2RDYxMDdFQzI3MTAwNURCQzhEIC8qIEpTRnVuY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0QTM4RjkxQzhFMTNERjAwMTkwMzE4IC8qIFN1
cGVyU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3OTdFMDdBOTFCOEZDRkI5MDA4NDAw
QkEgLyogSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQ3RjM5RDIxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTR2xvYmFsT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1RkQwMDg1MTg5QjFCN0UwMDYzMzIzMSAvKiBKU0dsb2JhbE9iamVjdENvbnNv
bGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkyNjEsNyArOTI2Miw2IEBACiAJCQkJMEY2
QjhBRDgxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRlVGFpbHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTI3NzczREUxQUFGODNBQzAwQkRFN0U4IC8qIFJ1bnRpbWVUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTQyOUQ4ODUwRUQyMUMzRDAwQjg5NjE5IC8qIFNh
bXBsaW5nVG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAyNzFBQTkwOTU2MDBEMzNC
MzMgLyogU2NvcGVkQXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDJGMUFB
QTgwNjkwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5OTJBQkNGOTFCRUE5QkQyMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5j
cHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
YW1wbGluZ1Rvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TYW1wbGluZ1Rvb2wuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0
NzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2FtcGxpbmdUb29s
LmgiCi0KLSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgot
I2luY2x1ZGUgIk9wY29kZS5oIgotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotI2lmICFPUyhX
SU5ET1dTKQotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBKU0Mgewot
Ci0jaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQotCi12b2lkIFNhbXBsaW5nRmxhZ3M6OnNhbXBs
ZSgpCi17Ci0gICAgdWludDMyX3QgbWFzayA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigxIDw8IDMx
KTsKLSAgICB1bnNpZ25lZCBpbmRleDsKLQotICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IDMy
OyArK2luZGV4KSB7Ci0gICAgICAgIGlmIChtYXNrICYgc19mbGFncykKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBtYXNrID4+PSAxOwotICAgIH0KLQotICAgIHNfZmxhZ0NvdW50c1szMiAt
IGluZGV4XSsrOwotfQotCi12b2lkIFNhbXBsaW5nRmxhZ3M6OnN0YXJ0KCkKLXsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDw9IDMyOyArK2kpCi0gICAgICAgIHNfZmxhZ0NvdW50c1tpXSA9
IDA7Ci19Ci12b2lkIFNhbXBsaW5nRmxhZ3M6OnN0b3AoKQotewotICAgIHVpbnQ2NF90IHRvdGFs
ID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDw9IDMyOyArK2kpCi0gICAgICAgIHRv
dGFsICs9IHNfZmxhZ0NvdW50c1tpXTsKLQotICAgIGlmICh0b3RhbCkgewotICAgICAgICBkYXRh
TG9nRigiXG5TYW1wbGluZ0ZsYWdzOiBzYW1wbGUgY291bnRzIHdpdGggZmxhZ3Mgc2V0OiAoJWxs
ZCB0b3RhbClcbiIsIHRvdGFsKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8PSAz
MjsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoc19mbGFnQ291bnRzW2ldKQotICAgICAgICAgICAg
ICAgIGRhdGFMb2dGKCIgIFsgJTAyZCBdIDogJWxsZFx0XHQoJTAzLjJmJSUpXG4iLCBpLCBzX2Zs
YWdDb3VudHNbaV0sICgxMDAuMCAqIHNfZmxhZ0NvdW50c1tpXSkgLyB0b3RhbCk7Ci0gICAgICAg
IH0KLSAgICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0gICAgfSBlbHNlCi0gICAgZGF0YUxvZ0YoIlxu
U2FtcGxpbmdGbGFnczogbm8gc2FtcGxlcy5cblxuIik7Ci19Ci11aW50NjRfdCBTYW1wbGluZ0Zs
YWdzOjpzX2ZsYWdDb3VudHNbMzNdOwotCi0jZWxzZQotdm9pZCBTYW1wbGluZ0ZsYWdzOjpzdGFy
dCgpIHt9Ci12b2lkIFNhbXBsaW5nRmxhZ3M6OnN0b3AoKSB7fQotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoU0FNUExJTkdfUkVHSU9OUykKLXZvbGF0aWxlIHVpbnRwdHJfdCBTYW1wbGluZ1JlZ2lvbjo6
c19jdXJyZW50T3JSZXNlcnZlZDsKLVNwZWN0cnVtPGNvbnN0IGNoYXIqPiogU2FtcGxpbmdSZWdp
b246OnNfc3BlY3RydW07Ci11bnNpZ25lZCBsb25nIFNhbXBsaW5nUmVnaW9uOjpzX25vbmVPZlRo
ZUFib3ZlOwotdW5zaWduZWQgU2FtcGxpbmdSZWdpb246OnNfbnVtYmVyT2ZTYW1wbGVzU2luY2VE
dW1wOwotCi1TYW1wbGluZ1JlZ2lvbjo6TG9ja2VyOjpMb2NrZXIoKQotewotICAgIHVpbnRwdHJf
dCBwcmV2aW91czsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBwcmV2aW91cyA9IHNfY3Vy
cmVudE9yUmVzZXJ2ZWQ7Ci0gICAgICAgIGlmIChwcmV2aW91cyAmIDEpIHsKLSNpZiBPUyhVTklY
KQotICAgICAgICAgICAgc2NoZWRfeWllbGQoKTsKLSNlbmRpZgotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFdURjo6d2Vha0NvbXBhcmVBbmRTd2FwVUludFB0
cigmc19jdXJyZW50T3JSZXNlcnZlZCwgcHJldmlvdXMsIHByZXZpb3VzIHwgMSkpCi0gICAgICAg
ICAgICBicmVhazsKLSAgICB9Ci19Ci0KLVNhbXBsaW5nUmVnaW9uOjpMb2NrZXI6On5Mb2NrZXIo
KQotewotICAgIC8vIFdlIGRvbid0IG5lZWQgdGhlIENBUywgYnV0IHdlIGRvIGl0IG91dCBvZiBh
bgotICAgIC8vIGFidW5kYW5jZSBvZiBjYXV0aW9uIChhbmQgYmVjYXVzZSBpdCBnaXZlcyB1cyBh
IG1lbW9yeSBmZW5jZSwgd2hpY2ggaXMKLSAgICAvLyBuZXZlciBiYWQpLgotICAgIHVpbnRwdHJf
dCBwcmV2aW91czsKLSAgICBkbyB7Ci0gICAgICAgIHByZXZpb3VzID0gc19jdXJyZW50T3JSZXNl
cnZlZDsKLSAgICB9IHdoaWxlICghV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXBVSW50UHRyKCZzX2N1
cnJlbnRPclJlc2VydmVkLCBwcmV2aW91cywgcHJldmlvdXMgJiB+MSkpOwotfQotCi12b2lkIFNh
bXBsaW5nUmVnaW9uOjpzYW1wbGUoKQotewotICAgIC8vIE1ha2Ugc3VyZSB3ZSBsb2NrIHNfY3Vy
cmVudC4KLSAgICBMb2NrZXIgbG9ja2VyOwotICAgIAotICAgIC8vIENyZWF0ZSBhIHNwZWN0cnVt
IGlmIHdlIGRvbid0IGhhdmUgb25lIGFscmVhZHkuCi0gICAgaWYgKCFzX3NwZWN0cnVtKQotICAg
ICAgICBzX3NwZWN0cnVtID0gbmV3IFNwZWN0cnVtPGNvbnN0IGNoYXIqPigpOwotICAgIAotICAg
IEFTU0VSVChzX2N1cnJlbnRPclJlc2VydmVkICYgMSk7Ci0gICAgCi0gICAgLy8gV2FsayB0aGUg
cmVnaW9uIHN0YWNrLCBhbmQgcmVjb3JkIGVhY2ggcmVnaW9uIHdlIHNlZS4KLSAgICBTYW1wbGlu
Z1JlZ2lvbiogcmVnaW9uID0gYml0d2lzZV9jYXN0PFNhbXBsaW5nUmVnaW9uKj4oc19jdXJyZW50
T3JSZXNlcnZlZCAmIH4xKTsKLSAgICBpZiAocmVnaW9uKSB7Ci0gICAgICAgIGZvciAoOyByZWdp
b247IHJlZ2lvbiA9IHJlZ2lvbi0+bV9wcmV2aW91cykKLSAgICAgICAgICAgIHNfc3BlY3RydW0t
PmFkZChyZWdpb24tPm1fbmFtZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNfbm9uZU9mVGhlQWJv
dmUrKzsKLSAgICAKLSAgICBpZiAoc19udW1iZXJPZlNhbXBsZXNTaW5jZUR1bXArKyA9PSBTYW1w
bGluZ1RocmVhZDo6c19oZXJ0eikgewotICAgICAgICBzX251bWJlck9mU2FtcGxlc1NpbmNlRHVt
cCA9IDA7Ci0gICAgICAgIGR1bXBJbnRlcm5hbCgpOwotICAgIH0KLX0KLQotdm9pZCBTYW1wbGlu
Z1JlZ2lvbjo6ZHVtcCgpCi17Ci0gICAgTG9ja2VyIGxvY2tlcjsKLSAgICAKLSAgICBkdW1wSW50
ZXJuYWwoKTsKLX0KLQotdm9pZCBTYW1wbGluZ1JlZ2lvbjo6ZHVtcEludGVybmFsKCkKLXsKLSAg
ICBpZiAoIXNfc3BlY3RydW0pIHsKLSAgICAgICAgZGF0YUxvZ0YoIlxuU2FtcGxpbmdSZWdpb246
IHdhcyBuZXZlciBzYW1wbGVkLlxuXG4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAK
LSAgICBWZWN0b3I8U3BlY3RydW08Y29uc3QgY2hhcio+OjpLZXlBbmRDb3VudD4gbGlzdCA9IHNf
c3BlY3RydW0tPmJ1aWxkTGlzdCgpOwotICAgIAotICAgIHVuc2lnbmVkIGxvbmcgdG90YWwgPSBz
X25vbmVPZlRoZUFib3ZlOwotICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgpOyBpLS07
KQotICAgICAgICB0b3RhbCArPSBsaXN0W2ldLmNvdW50OwotICAgIAotICAgIGRhdGFMb2dGKCJc
blNhbXBsaW5nUmVnaW9uOiBzYW1wbGUgY291bnRzIGZvciByZWdpb25zOiAoJWx1IHNhbXBsZXMp
XG4iLCB0b3RhbCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNpemUoKTsgaS0tOykK
LSAgICAgICAgZGF0YUxvZ0YoIiAgICAlMy4ybGYlJSAgJXNcbiIsICgxMDAuMCAqIGxpc3RbaV0u
Y291bnQpIC8gdG90YWwsIGxpc3RbaV0ua2V5KTsKLX0KLSNlbHNlIC8vIEVOQUJMRShTQU1QTElO
R19SRUdJT05TKQotdm9pZCBTYW1wbGluZ1JlZ2lvbjo6ZHVtcCgpIHsgfQotI2VuZGlmIC8vIEVO
QUJMRShTQU1QTElOR19SRUdJT05TKQotCi0vKgotICBTdGFydCB3aXRoIGZsYWcgMTYgc2V0Lgot
ICBCeSBkb2luZyB0aGlzIHRoZSBtb25pdG9yaW5nIG9mIGxvd2VyIHZhbHVlZCBmbGFncyB3aWxs
IGJlIG1hc2tlZCBvdXQKLSAgdW50aWwgZmxhZyAxNiBpcyBleHBsaWN0bHkgY2xlYXJlZC4KLSov
Ci11aW50MzJfdCBTYW1wbGluZ0ZsYWdzOjpzX2ZsYWdzID0gMSA8PCAxNTsKLQotCi0jaWYgT1Mo
V0lORE9XUykKLQotc3RhdGljIHZvaWQgc2xlZXBGb3JNaWNyb3NlY29uZHModW5zaWduZWQgdXMp
Ci17Ci0gICAgdW5zaWduZWQgbXMgPSB1cyAvIDEwMDA7Ci0gICAgaWYgKHVzICYmICFtcykKLSAg
ICAgICAgbXMgPSAxOwotICAgIFNsZWVwKG1zKTsKLX0KLQotI2Vsc2UgCi0KLXN0YXRpYyB2b2lk
IHNsZWVwRm9yTWljcm9zZWNvbmRzKHVuc2lnbmVkIHVzKQotewotICAgIHVzbGVlcCh1cyk7Ci19
Ci0KLSNlbmRpZgotCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGhlcnR6MnVzKHVuc2lnbmVkIGhl
cnR6KQotewotICAgIHJldHVybiAxMDAwMDAwIC8gaGVydHo7Ci19Ci0KLQotU2FtcGxpbmdUb29s
KiBTYW1wbGluZ1Rvb2w6OnNfc2FtcGxpbmdUb29sID0gMDsKLQotCi1ib29sIFNhbXBsaW5nVGhy
ZWFkOjpzX3J1bm5pbmcgPSBmYWxzZTsKLXVuc2lnbmVkIFNhbXBsaW5nVGhyZWFkOjpzX2hlcnR6
ID0gMTAwMDA7Ci1UaHJlYWRJZGVudGlmaWVyIFNhbXBsaW5nVGhyZWFkOjpzX3NhbXBsaW5nVGhy
ZWFkOwotCi12b2lkIFNhbXBsaW5nVGhyZWFkOjp0aHJlYWRTdGFydEZ1bmModm9pZCopCi17Ci0g
ICAgd2hpbGUgKHNfcnVubmluZykgewotICAgICAgICBzbGVlcEZvck1pY3Jvc2Vjb25kcyhoZXJ0
ejJ1cyhzX2hlcnR6KSk7Ci0KLSNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi0gICAgICAgIFNh
bXBsaW5nRmxhZ3M6OnNhbXBsZSgpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNBTVBMSU5HX1JFR0lP
TlMpCi0gICAgICAgIFNhbXBsaW5nUmVnaW9uOjpzYW1wbGUoKTsKLSNlbmRpZgotI2lmIEVOQUJM
RShPUENPREVfU0FNUExJTkcpCi0gICAgICAgIFNhbXBsaW5nVG9vbDo6c2FtcGxlKCk7Ci0jZW5k
aWYKLSAgICB9Ci19Ci0KLQotdm9pZCBTYW1wbGluZ1RocmVhZDo6c3RhcnQodW5zaWduZWQgaGVy
dHopCi17Ci0gICAgQVNTRVJUKCFzX3J1bm5pbmcpOwotICAgIHNfcnVubmluZyA9IHRydWU7Ci0g
ICAgc19oZXJ0eiA9IGhlcnR6OwotCi0gICAgc19zYW1wbGluZ1RocmVhZCA9IGNyZWF0ZVRocmVh
ZCh0aHJlYWRTdGFydEZ1bmMsIDAsICJKYXZhU2NyaXB0Q29yZTo6U2FtcGxlciIpOwotfQotCi12
b2lkIFNhbXBsaW5nVGhyZWFkOjpzdG9wKCkKLXsKLSAgICBBU1NFUlQoc19ydW5uaW5nKTsKLSAg
ICBzX3J1bm5pbmcgPSBmYWxzZTsKLSAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihzX3NhbXBs
aW5nVGhyZWFkKTsKLX0KLQotCi12b2lkIFNjcmlwdFNhbXBsZVJlY29yZDo6c2FtcGxlKENvZGVC
bG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogdlBDKQotewotICAgIGlmICghbV9zYW1wbGVz
KSB7Ci0gICAgICAgIG1fc2l6ZSA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwot
ICAgICAgICBtX3NhbXBsZXMgPSBzdGF0aWNfY2FzdDxpbnQqPihjYWxsb2MobV9zaXplLCBzaXpl
b2YoaW50KSkpOwotICAgICAgICBtX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKLSAgICB9Ci0KLSAg
ICArK21fc2FtcGxlQ291bnQ7Ci0KLSAgICB1bnNpZ25lZCBvZmZlc3QgPSB2UEMgLSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgLy8gU2luY2Ugd2UgZG9uJ3QgcmVhZCBh
bmQgd3JpdGUgY29kZUJsb2NrIGFuZCB2UEMgYXRvbWljYWxseSwgdGhpcyBjaGVjawotICAgIC8v
IGNhbiBmYWlsIGlmIHdlIHNhbXBsZSBtaWQgb3BfY2FsbCAvIG9wX3JldC4KLSAgICBpZiAob2Zm
ZXN0IDwgbV9zaXplKSB7Ci0gICAgICAgIG1fc2FtcGxlc1tvZmZlc3RdKys7Ci0gICAgICAgIG1f
b3Bjb2RlU2FtcGxlQ291bnQrKzsKLSAgICB9Ci19Ci0KLXZvaWQgU2FtcGxpbmdUb29sOjpkb1J1
bigpCi17Ci0gICAgU2FtcGxlIHNhbXBsZShtX3NhbXBsZSwgbV9jb2RlQmxvY2spOwotICAgICsr
bV9zYW1wbGVDb3VudDsKLQotICAgIGlmIChzYW1wbGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmICghc2FtcGxlLmluSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgdW5zaWdu
ZWQgb3Bjb2RlSUQgPSBtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRChzYW1wbGUudlBDKClbMF0u
dS5vcGNvZGUpOwotCi0gICAgICAgICsrbV9vcGNvZGVTYW1wbGVDb3VudDsKLSAgICAgICAgKytt
X29wY29kZVNhbXBsZXNbb3Bjb2RlSURdOwotCi0gICAgICAgIGlmIChzYW1wbGUuaW5DVElGdW5j
dGlvbigpKQotICAgICAgICAgICAgbV9vcGNvZGVTYW1wbGVzSW5DVElGdW5jdGlvbnNbb3Bjb2Rl
SURdKys7Ci0gICAgfQotCi0jaWYgRU5BQkxFKENPREVCTE9DS19TQU1QTElORykKLSAgICBpZiAo
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzYW1wbGUuY29kZUJsb2NrKCkpIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zY3JpcHRTYW1wbGVNYXBNdXRleCk7Ci0gICAgICAgIFNjcmlwdFNh
bXBsZVJlY29yZCogcmVjb3JkID0gbV9zY29wZVNhbXBsZU1hcC0+Z2V0KGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCkpOwotICAgICAgICBBU1NFUlQocmVjb3JkKTsKLSAgICAgICAgcmVjb3Jk
LT5zYW1wbGUoY29kZUJsb2NrLCBzYW1wbGUudlBDKCkpOwotICAgIH0KLSNlbmRpZgotfQotCi12
b2lkIFNhbXBsaW5nVG9vbDo6c2FtcGxlKCkKLXsKLSAgICBzX3NhbXBsaW5nVG9vbC0+ZG9SdW4o
KTsKLX0KLQotdm9pZCBTYW1wbGluZ1Rvb2w6Om5vdGlmeU9mU2NvcGUoVk0mIHZtLCBTY3JpcHRF
eGVjdXRhYmxlKiBzY3JpcHQpCi17Ci0jaWYgRU5BQkxFKENPREVCTE9DS19TQU1QTElORykKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3NjcmlwdFNhbXBsZU1hcE11dGV4KTsKLSAgICBtX3Njb3Bl
U2FtcGxlTWFwLT5zZXQoc2NyaXB0LCBhZG9wdFB0cihuZXcgU2NyaXB0U2FtcGxlUmVjb3JkKHZt
LCBzY3JpcHQpKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNjcmlwdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBTYW1wbGluZ1Rvb2w6OnNldHVwKCkKLXsK
LSAgICBzX3NhbXBsaW5nVG9vbCA9IHRoaXM7Ci19Ci0KLSNpZiBFTkFCTEUoT1BDT0RFX1NBTVBM
SU5HKQotCi1zdHJ1Y3QgT3Bjb2RlU2FtcGxlSW5mbyB7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlOwot
ICAgIGxvbmcgbG9uZyBjb3VudDsKLSAgICBsb25nIGxvbmcgY291bnRJbkNUSUZ1bmN0aW9uczsK
LX07Ci0KLXN0cnVjdCBMaW5lQ291bnRJbmZvIHsKLSAgICB1bnNpZ25lZCBsaW5lOwotICAgIHVu
c2lnbmVkIGNvdW50OwotfTsKLQotc3RhdGljIGludCBjb21wYXJlT3Bjb2RlSW5kaWNlc1NhbXBs
aW5nKGNvbnN0IHZvaWQqIGxlZnQsIGNvbnN0IHZvaWQqIHJpZ2h0KQotewotICAgIGNvbnN0IE9w
Y29kZVNhbXBsZUluZm8qIGxlZnRTYW1wbGVJbmZvID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBP
cGNvZGVTYW1wbGVJbmZvKj4obGVmdCk7Ci0gICAgY29uc3QgT3Bjb2RlU2FtcGxlSW5mbyogcmln
aHRTYW1wbGVJbmZvID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBPcGNvZGVTYW1wbGVJbmZvKj4o
cmlnaHQpOwotCi0gICAgcmV0dXJuIChsZWZ0U2FtcGxlSW5mby0+Y291bnQgPCByaWdodFNhbXBs
ZUluZm8tPmNvdW50KSA/IDEgOiAobGVmdFNhbXBsZUluZm8tPmNvdW50ID4gcmlnaHRTYW1wbGVJ
bmZvLT5jb3VudCkgPyAtMSA6IDA7Ci19Ci0KLSNpZiBFTkFCTEUoQ09ERUJMT0NLX1NBTVBMSU5H
KQotc3RhdGljIGludCBjb21wYXJlTGluZUNvdW50SW5mb1NhbXBsaW5nKGNvbnN0IHZvaWQqIGxl
ZnQsIGNvbnN0IHZvaWQqIHJpZ2h0KQotewotICAgIGNvbnN0IExpbmVDb3VudEluZm8qIGxlZnRM
aW5lQ291bnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IExpbmVDb3VudEluZm8qPihsZWZ0KTsK
LSAgICBjb25zdCBMaW5lQ291bnRJbmZvKiByaWdodExpbmVDb3VudCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTGluZUNvdW50SW5mbyo+KHJpZ2h0KTsKLQotICAgIHJldHVybiAobGVmdExpbmVD
b3VudC0+bGluZSA+IHJpZ2h0TGluZUNvdW50LT5saW5lKSA/IDEgOiAobGVmdExpbmVDb3VudC0+
bGluZSA8IHJpZ2h0TGluZUNvdW50LT5saW5lKSA/IC0xIDogMDsKLX0KLQotc3RhdGljIGludCBj
b21wYXJlU2NyaXB0U2FtcGxlUmVjb3Jkcyhjb25zdCB2b2lkKiBsZWZ0LCBjb25zdCB2b2lkKiBy
aWdodCkKLXsKLSAgICBjb25zdCBTY3JpcHRTYW1wbGVSZWNvcmQqIGNvbnN0IGxlZnRWYWx1ZSA9
ICpzdGF0aWNfY2FzdDxjb25zdCBTY3JpcHRTYW1wbGVSZWNvcmQqIGNvbnN0ICo+KGxlZnQpOwot
ICAgIGNvbnN0IFNjcmlwdFNhbXBsZVJlY29yZCogY29uc3QgcmlnaHRWYWx1ZSA9ICpzdGF0aWNf
Y2FzdDxjb25zdCBTY3JpcHRTYW1wbGVSZWNvcmQqIGNvbnN0ICo+KHJpZ2h0KTsKLQotICAgIHJl
dHVybiAobGVmdFZhbHVlLT5tX3NhbXBsZUNvdW50IDwgcmlnaHRWYWx1ZS0+bV9zYW1wbGVDb3Vu
dCkgPyAxIDogKGxlZnRWYWx1ZS0+bV9zYW1wbGVDb3VudCA+IHJpZ2h0VmFsdWUtPm1fc2FtcGxl
Q291bnQpID8gLTEgOiAwOwotfQotI2VuZGlmCi0KLXZvaWQgU2FtcGxpbmdUb29sOjpkdW1wKEV4
ZWNTdGF0ZSogZXhlYykKLXsKLSAgICAvLyBUaWRpZXMgdXAgU3VuU3BpZGVyIG91dHB1dCBieSBy
ZW1vdmluZyBzaG9ydCBzY3JpcHRzIC0gc3VjaCBhIHNtYWxsIG51bWJlciBvZiBzYW1wbGVzIHdv
dWxkIGxpa2VseSBub3QgYmUgdXNlZnVsIGFueWhvdy4KLSAgICBpZiAobV9zYW1wbGVDb3VudCA8
IDEwKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgLy8gKDEpIEJ1aWxkIGFuZCBzb3J0ICdv
cGNvZGVTYW1wbGVJbmZvJyBhcnJheS4KLQotICAgIE9wY29kZVNhbXBsZUluZm8gb3Bjb2RlU2Ft
cGxlSW5mb1tudW1PcGNvZGVJRHNdOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2Rl
SURzOyArK2kpIHsKLSAgICAgICAgb3Bjb2RlU2FtcGxlSW5mb1tpXS5vcGNvZGUgPSBzdGF0aWNf
Y2FzdDxPcGNvZGVJRD4oaSk7Ci0gICAgICAgIG9wY29kZVNhbXBsZUluZm9baV0uY291bnQgPSBt
X29wY29kZVNhbXBsZXNbaV07Ci0gICAgICAgIG9wY29kZVNhbXBsZUluZm9baV0uY291bnRJbkNU
SUZ1bmN0aW9ucyA9IG1fb3Bjb2RlU2FtcGxlc0luQ1RJRnVuY3Rpb25zW2ldOwotICAgIH0KLQot
ICAgIHFzb3J0KG9wY29kZVNhbXBsZUluZm8sIG51bU9wY29kZUlEcywgc2l6ZW9mKE9wY29kZVNh
bXBsZUluZm8pLCBjb21wYXJlT3Bjb2RlSW5kaWNlc1NhbXBsaW5nKTsKLQotICAgIC8vICgyKSBQ
cmludCBPcGNvZGUgc2FtcGxpbmcgcmVzdWx0cy4KLQotICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2Rl
IHNhbXBsZXMgWypdXG4iKTsKLSAgICBkYXRhTG9nRigiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzYW1wbGUgICAlJSBvZiAgICAgICAlJSBvZiAgICAgfCAgIGN0aSAgICAgY3RpICUlXG4i
KTsKLSAgICBkYXRhTG9nRigib3Bjb2RlICAgICAgICAgICAgICAgICAgICAgICBjb3VudCAgICAg
Vk0gICAgICAgIHRvdGFsICAgIHwgIGNvdW50ICAgb2Ygc2VsZlxuIik7Ci0gICAgZGF0YUxvZ0Yo
Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
ICB8ICAtLS0tLS0tLS0tLS0tLS0tXG4iKTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
T3Bjb2RlSURzOyArK2kpIHsKLSAgICAgICAgbG9uZyBsb25nIGNvdW50ID0gb3Bjb2RlU2FtcGxl
SW5mb1tpXS5jb3VudDsKLSAgICAgICAgaWYgKCFjb3VudCkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gb3Bjb2RlU2FtcGxlSW5mb1tpXS5vcGNv
ZGU7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBjaGFyKiBvcGNvZGVOYW1lID0gb3Bjb2RlTmFt
ZXNbb3Bjb2RlSURdOwotICAgICAgICBjb25zdCBjaGFyKiBvcGNvZGVQYWRkaW5nID0gcGFkT3Bj
b2RlTmFtZShvcGNvZGVJRCwgMjgpOwotICAgICAgICBkb3VibGUgcGVyY2VudE9mVk0gPSAoc3Rh
dGljX2Nhc3Q8ZG91YmxlPihjb3VudCkgKiAxMDApIC8gbV9vcGNvZGVTYW1wbGVDb3VudDsKLSAg
ICAgICAgZG91YmxlIHBlcmNlbnRPZlRvdGFsID0gKHN0YXRpY19jYXN0PGRvdWJsZT4oY291bnQp
ICogMTAwKSAvIG1fc2FtcGxlQ291bnQ7Ci0gICAgICAgIGxvbmcgbG9uZyBjb3VudEluQ1RJRnVu
Y3Rpb25zID0gb3Bjb2RlU2FtcGxlSW5mb1tpXS5jb3VudEluQ1RJRnVuY3Rpb25zOwotICAgICAg
ICBkb3VibGUgcGVyY2VudEluQ1RJRnVuY3Rpb25zID0gKHN0YXRpY19jYXN0PGRvdWJsZT4oY291
bnRJbkNUSUZ1bmN0aW9ucykgKiAxMDApIC8gY291bnQ7Ci0gICAgICAgIGRlYnVnRGVidWdQcmlu
dGYoIiVzOiVzJS02bGxkICUuM2YlJVx0JS4zZiUlXHQgIHwgICAlLTZsbGQgJS4zZiUlXG4iLCBv
cGNvZGVOYW1lLCBvcGNvZGVQYWRkaW5nLCBjb3VudCwgcGVyY2VudE9mVk0sIHBlcmNlbnRPZlRv
dGFsLCBjb3VudEluQ1RJRnVuY3Rpb25zLCBwZXJjZW50SW5DVElGdW5jdGlvbnMpOwotICAgIH0K
LSAgICAKLSAgICBkYXRhTG9nRigiXG5bKl0gU2FtcGxlcyBpbnNpZGUgaG9zdCBjb2RlIGFyZSBu
b3QgY2hhcmdlZCB0byBhbnkgQnl0ZWNvZGUuXG5cbiIpOwotICAgIGRhdGFMb2dGKCJcdFNhbXBs
ZXMgaW5zaWRlIFZNOlx0XHQlbGxkIC8gJWxsZCAoJS4zZiUlKVxuIiwgbV9vcGNvZGVTYW1wbGVD
b3VudCwgbV9zYW1wbGVDb3VudCwgKHN0YXRpY19jYXN0PGRvdWJsZT4obV9vcGNvZGVTYW1wbGVD
b3VudCkgKiAxMDApIC8gbV9zYW1wbGVDb3VudCk7Ci0gICAgZGF0YUxvZ0YoIlx0U2FtcGxlcyBp
bnNpZGUgaG9zdCBjb2RlOlx0JWxsZCAvICVsbGQgKCUuM2YlJSlcblxuIiwgbV9zYW1wbGVDb3Vu
dCAtIG1fb3Bjb2RlU2FtcGxlQ291bnQsIG1fc2FtcGxlQ291bnQsIChzdGF0aWNfY2FzdDxkb3Vi
bGU+KG1fc2FtcGxlQ291bnQgLSBtX29wY29kZVNhbXBsZUNvdW50KSAqIDEwMCkgLyBtX3NhbXBs
ZUNvdW50KTsKLSAgICBkYXRhTG9nRigiXHRzYW1wbGUgY291bnQ6XHRzYW1wbGVzIGluc2lkZSB0
aGlzIG9wY29kZVxuIik7Ci0gICAgZGF0YUxvZ0YoIlx0JSUgb2YgVk06XHRzYW1wbGUgY291bnQg
LyBhbGwgb3Bjb2RlIHNhbXBsZXNcbiIpOwotICAgIGRhdGFMb2dGKCJcdCUlIG9mIHRvdGFsOlx0
c2FtcGxlIGNvdW50IC8gYWxsIHNhbXBsZXNcbiIpOwotICAgIGRhdGFMb2dGKCJcdC0tLS0tLS0t
LS0tLS0tXG4iKTsKLSAgICBkYXRhTG9nRigiXHRjdGkgY291bnQ6XHRzYW1wbGVzIGluc2lkZSBh
IENUSSBmdW5jdGlvbiBjYWxsZWQgYnkgdGhpcyBvcGNvZGVcbiIpOwotICAgIGRhdGFMb2dGKCJc
dGN0aSAlJSBvZiBzZWxmOlx0Y3RpIGNvdW50IC8gc2FtcGxlIGNvdW50XG4iKTsKLSAgICAKLSNp
ZiBFTkFCTEUoQ09ERUJMT0NLX1NBTVBMSU5HKQotCi0gICAgLy8gKDMpIEJ1aWxkIGFuZCBzb3J0
ICdjb2RlQmxvY2tTYW1wbGVzJyBhcnJheS4KLQotICAgIGludCBzY29wZUNvdW50ID0gbV9zY29w
ZVNhbXBsZU1hcC0+c2l6ZSgpOwotICAgIFZlY3RvcjxTY3JpcHRTYW1wbGVSZWNvcmQqPiBjb2Rl
QmxvY2tTYW1wbGVzKHNjb3BlQ291bnQpOwotICAgIFNjcmlwdFNhbXBsZVJlY29yZE1hcDo6aXRl
cmF0b3IgaXRlciA9IG1fc2NvcGVTYW1wbGVNYXAtPmJlZ2luKCk7Ci0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBzY29wZUNvdW50OyArK2ksICsraXRlcikKLSAgICAgICAgY29kZUJsb2NrU2FtcGxl
c1tpXSA9IGl0ZXItPnZhbHVlLmdldCgpOwotCi0gICAgcXNvcnQoY29kZUJsb2NrU2FtcGxlcy5i
ZWdpbigpLCBzY29wZUNvdW50LCBzaXplb2YoU2NyaXB0U2FtcGxlUmVjb3JkKiksIGNvbXBhcmVT
Y3JpcHRTYW1wbGVSZWNvcmRzKTsKLQotICAgIC8vICg0KSBQcmludCBkYXRhIGZyb20gJ2NvZGVC
bG9ja1NhbXBsZXMnIGFycmF5LgotCi0gICAgZGF0YUxvZ0YoIlxuQ29kZUJsb2NrIHNhbXBsZXNc
blxuIik7IAotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzY29wZUNvdW50OyArK2kpIHsKLSAg
ICAgICAgU2NyaXB0U2FtcGxlUmVjb3JkKiByZWNvcmQgPSBjb2RlQmxvY2tTYW1wbGVzW2ldOwot
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHJlY29yZC0+bV9jb2RlQmxvY2s7Ci0KLSAg
ICAgICAgZG91YmxlIGJsb2NrUGVyY2VudCA9IChyZWNvcmQtPm1fc2FtcGxlQ291bnQgKiAxMDAu
MCkgLyBtX3NhbXBsZUNvdW50OwotCi0gICAgICAgIGlmIChibG9ja1BlcmNlbnQgPj0gMSkgewot
ICAgICAgICAgICAgLy9JbnN0cnVjdGlvbiogY29kZSA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKTsKLSAgICAgICAgICAgIGRhdGFMb2dGKCIjJWQ6ICVzOiVkOiAlZCAvICVsbGQg
KCUuM2YlJSlcbiIsIGkgKyAxLCByZWNvcmQtPm1fZXhlY3V0YWJsZS0+c291cmNlVVJMKCkudXRm
OCgpLmRhdGEoKSwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoMCksIHJl
Y29yZC0+bV9zYW1wbGVDb3VudCwgbV9zYW1wbGVDb3VudCwgYmxvY2tQZXJjZW50KTsKLSAgICAg
ICAgICAgIGlmIChpIDwgMTApIHsKLSAgICAgICAgICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLHVu
c2lnbmVkPiBsaW5lQ291bnRzOwotICAgICAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVtcChleGVj
KTsKLQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgT3Bjb2RlIGFuZCBsaW5lIG51bWJl
ciBzYW1wbGVzIFsqXVxuXG4iKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG9wID0g
MDsgb3AgPCByZWNvcmQtPm1fc2l6ZTsgKytvcCkgewotICAgICAgICAgICAgICAgICAgICBpbnQg
Y291bnQgPSByZWNvcmQtPm1fc2FtcGxlc1tvcF07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChj
b3VudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBbJSA0ZF0gaGFz
IHNhbXBsZSBjb3VudDogJSA0ZFxuIiwgb3AsIGNvdW50KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxpbmUgPSBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNl
dChvcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lQ291bnRzLnNldChsaW5lLCAobGlu
ZUNvdW50cy5jb250YWlucyhsaW5lKSA/IGxpbmVDb3VudHMuZ2V0KGxpbmUpIDogMCkgKyBjb3Vu
dCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0KLSAgICAgICAgICAgICAgICBpbnQgbGluZXNDb3VudCA9
IGxpbmVDb3VudHMuc2l6ZSgpOwotICAgICAgICAgICAgICAgIFZlY3RvcjxMaW5lQ291bnRJbmZv
PiBsaW5lQ291bnRJbmZvKGxpbmVzQ291bnQpOwotICAgICAgICAgICAgICAgIGludCBsaW5lbm8g
PSAwOwotICAgICAgICAgICAgICAgIGZvciAoSGFzaE1hcDx1bnNpZ25lZCx1bnNpZ25lZD46Oml0
ZXJhdG9yIGl0ZXIgPSBsaW5lQ291bnRzLmJlZ2luKCk7IGl0ZXIgIT0gbGluZUNvdW50cy5lbmQo
KTsgKytpdGVyLCArK2xpbmVubykgewotICAgICAgICAgICAgICAgICAgICBsaW5lQ291bnRJbmZv
W2xpbmVub10ubGluZSA9IGl0ZXItPmtleTsKLSAgICAgICAgICAgICAgICAgICAgbGluZUNvdW50
SW5mb1tsaW5lbm9dLmNvdW50ID0gaXRlci0+dmFsdWU7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgcXNvcnQobGluZUNvdW50SW5mby5iZWdpbigpLCBsaW5lc0NvdW50LCBz
aXplb2YoTGluZUNvdW50SW5mbyksIGNvbXBhcmVMaW5lQ291bnRJbmZvU2FtcGxpbmcpOwotCi0g
ICAgICAgICAgICAgICAgZm9yIChsaW5lbm8gPSAwOyBsaW5lbm8gPCBsaW5lc0NvdW50OyArK2xp
bmVubykgewotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiICAgIExpbmUgIyVkIGhhcyBz
YW1wbGUgY291bnQgJWQuXG4iLCBsaW5lQ291bnRJbmZvW2xpbmVub10ubGluZSwgbGluZUNvdW50
SW5mb1tsaW5lbm9dLmNvdW50KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ZGF0YUxvZ0YoIlxuIik7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBbKl0gU2FtcGxl
cyBpbnNpZGUgaG9zdCBjb2RlIGFyZSBjaGFyZ2VkIHRvIHRoZSBjYWxsaW5nIEJ5dGVjb2RlLlxu
Iik7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAgICAgU2FtcGxlcyBvbiBhIGNhbGwg
LyByZXR1cm4gYm91bmRhcnkgYXJlIG5vdCBjaGFyZ2VkIHRvIGEgc3BlY2lmaWMgb3Bjb2RlIG9y
IGxpbmUuXG5cbiIpOwotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgICAgICAgICBTYW1w
bGVzIG9uIGEgY2FsbCAvIHJldHVybiBib3VuZGFyeTogJWQgLyAlZCAoJS4zZiUlKVxuXG4iLCBy
ZWNvcmQtPm1fc2FtcGxlQ291bnQgLSByZWNvcmQtPm1fb3Bjb2RlU2FtcGxlQ291bnQsIHJlY29y
ZC0+bV9zYW1wbGVDb3VudCwgKHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjb3JkLT5tX3NhbXBsZUNv
dW50IC0gcmVjb3JkLT5tX29wY29kZVNhbXBsZUNvdW50KSAqIDEwMCkgLyByZWNvcmQtPm1fc2Ft
cGxlQ291bnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7Ci0jZW5kaWYKLX0KLQotI2Vsc2UKLQotdm9pZCBTYW1wbGluZ1Rv
b2w6OmR1bXAoRXhlY1N0YXRlKikKLXsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wu
aAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nh
bXBsaW5nVG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM0OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
U2FtcGxpbmdUb29sX2gKLSNkZWZpbmUgU2FtcGxpbmdUb29sX2gKLQotI2luY2x1ZGUgIlN0cm9u
Zy5oIgotI2luY2x1ZGUgIk9wY29kZS5oIgotI2luY2x1ZGUgIlNhbXBsaW5nQ291bnRlci5oIgot
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KLSNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvU3BlY3RydW0uaD4KLSNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi0gICAgY2xhc3MgU2NyaXB0RXhl
Y3V0YWJsZTsKLQotICAgIGNsYXNzIFNhbXBsaW5nRmxhZ3MgewotICAgIHB1YmxpYzoKLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc3RhcnQoKTsKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc3RvcCgpOwotCi0jaWYgRU5BQkxFKFNBTVBMSU5HX0ZM
QUdTKQotICAgICAgICBzdGF0aWMgdm9pZCBzZXRGbGFnKHVuc2lnbmVkIGZsYWcpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVChmbGFnID49IDEpOwotICAgICAgICAgICAgQVNTRVJUKGZs
YWcgPD0gMzIpOwotICAgICAgICAgICAgc19mbGFncyB8PSAxdSA8PCAoZmxhZyAtIDEpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgY2xlYXJGbGFnKHVuc2lnbmVkIGZsYWcpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChmbGFnID49IDEpOwotICAgICAgICAgICAgQVNT
RVJUKGZsYWcgPD0gMzIpOwotICAgICAgICAgICAgc19mbGFncyAmPSB+KDF1IDw8IChmbGFnIC0g
MSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgc2FtcGxlKCk7Ci0KLSAgICAg
ICAgY2xhc3MgU2NvcGVkRmxhZyB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIFNjb3Bl
ZEZsYWcoaW50IGZsYWcpCi0gICAgICAgICAgICAgICAgOiBtX2ZsYWcoZmxhZykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBzZXRGbGFnKGZsYWcpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICB+U2NvcGVkRmxhZygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Y2xlYXJGbGFnKG1fZmxhZyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgcHJpdmF0ZToKLSAg
ICAgICAgICAgIGludCBtX2ZsYWc7Ci0gICAgICAgIH07Ci0gICAgCi0gICAgICAgIHN0YXRpYyBj
b25zdCB2b2lkKiBhZGRyZXNzT2ZGbGFncygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biAmc19mbGFnczsKLSAgICAgICAgfQotCi0jZW5kaWYKLSAgICBwcml2YXRlOgotICAgICAgICBK
U19FWFBPUlREQVRBIHN0YXRpYyB1aW50MzJfdCBzX2ZsYWdzOwotI2lmIEVOQUJMRShTQU1QTElO
R19GTEFHUykKLSAgICAgICAgc3RhdGljIHVpbnQ2NF90IHNfZmxhZ0NvdW50c1szM107Ci0jZW5k
aWYKLSAgICB9OwotCi0jaWYgRU5BQkxFKFNBTVBMSU5HX1JFR0lPTlMpCi0gICAgY2xhc3MgU2Ft
cGxpbmdSZWdpb24gewotICAgIHB1YmxpYzoKLSAgICAgICAgLy8gQ3JlYXRlIGEgc2NvcGVkIHNh
bXBsaW5nIHJlZ2lvbiB1c2luZyBhIEMgc3RyaW5nIGNvbnN0YW50IG5hbWUgdGhhdCBkZXNjcmli
ZXMKLSAgICAgICAgLy8gd2hhdCB5b3UgYXJlIGRvaW5nLiBUaGlzIG11c3QgYmUgYSBzdHJpbmcg
Y29uc3RhbnQgdGhhdCBwZXJzaXN0cyBmb3IgdGhlCi0gICAgICAgIC8vIGxpZmV0aW1lIG9mIHRo
ZSBwcm9jZXNzIGFuZCBpcyBpbW11dGFibGUuCi0gICAgICAgIFNhbXBsaW5nUmVnaW9uKGNvbnN0
IGNoYXIqIG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkp
IHsKLSAgICAgICAgICAgICAgICBtX25hbWUgPSAwOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9uYW1lID0gbmFtZTsK
LSAgICAgICAgICAgIGV4Y2hhbmdlQ3VycmVudCh0aGlzLCAmbV9wcmV2aW91cyk7Ci0gICAgICAg
ICAgICBBU1NFUlQoIW1fcHJldmlvdXMgfHwgbV9wcmV2aW91cyA+IHRoaXMpOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICB+U2FtcGxpbmdSZWdpb24oKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fbmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIEFTU0VSVChiaXR3aXNlX2Nhc3Q8U2FtcGxpbmdSZWdpb24qPihzX2N1cnJl
bnRPclJlc2VydmVkICYgfjEpID09IHRoaXMpOwotICAgICAgICAgICAgZXhjaGFuZ2VDdXJyZW50
KG1fcHJldmlvdXMpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBz
YW1wbGUoKTsKLSAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IGR1bXAoKTsKLSAgICAgICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgY29uc3QgY2hhciogbV9u
YW1lOwotICAgICAgICBTYW1wbGluZ1JlZ2lvbiogbV9wcmV2aW91czsKLQotICAgICAgICBzdGF0
aWMgdm9pZCBleGNoYW5nZUN1cnJlbnQoU2FtcGxpbmdSZWdpb24qIGN1cnJlbnQsIFNhbXBsaW5n
UmVnaW9uKiogcHJldmlvdXNQdHIgPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICB1aW50cHRy
X3QgcHJldmlvdXM7Ci0gICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAg
IHByZXZpb3VzID0gc19jdXJyZW50T3JSZXNlcnZlZDsKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAvLyBJZiBpdCdzIHJlc2VydmVkIChpLmUuIHNhbXBsaW5nIHRocmVhZCBpcyBy
ZWFkaW5nIGl0KSwgbG9vcCBhcm91bmQuCi0gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzICYg
MSkgewotI2lmIE9TKFVOSVgpCi0gICAgICAgICAgICAgICAgICAgIHNjaGVkX3lpZWxkKCk7Ci0j
ZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGdvaW5nIHRvIENB
UywgdGhlbiBtYWtlIHN1cmUgcHJldmlvdXMgaXMgc2V0LgotICAgICAgICAgICAgICAgIGlmIChw
cmV2aW91c1B0cikKLSAgICAgICAgICAgICAgICAgICAgKnByZXZpb3VzUHRyID0gYml0d2lzZV9j
YXN0PFNhbXBsaW5nUmVnaW9uKj4ocHJldmlvdXMpOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIGlmIChXVEY6OndlYWtDb21wYXJlQW5kU3dhcFVJbnRQdHIoJnNfY3VycmVudE9y
UmVzZXJ2ZWQsIHByZXZpb3VzLCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihjdXJyZW50KSkpCi0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBkdW1wSW50ZXJuYWwoKTsKLQotICAgICAgICBjbGFz
cyBMb2NrZXIgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBMb2NrZXIoKTsKLSAgICAg
ICAgICAgIH5Mb2NrZXIoKTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgdm9sYXRpbGUg
dWludHB0cl90IHNfY3VycmVudE9yUmVzZXJ2ZWQ7Ci0gICAgICAgIAotICAgICAgICAvLyByZWx5
IG9uIGlkZW50aXR5IGhhc2hpbmcgb2Ygc3RyaW5nIGNvbnN0YW50cwotICAgICAgICBzdGF0aWMg
U3BlY3RydW08Y29uc3QgY2hhcio+KiBzX3NwZWN0cnVtOwotICAgICAgICAKLSAgICAgICAgc3Rh
dGljIHVuc2lnbmVkIGxvbmcgc19ub25lT2ZUaGVBYm92ZTsKLSAgICAgICAgCi0gICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBzX251bWJlck9mU2FtcGxlc1NpbmNlRHVtcDsKLSAgICB9OwotI2Vsc2Ug
Ly8gRU5BQkxFKFNBTVBMSU5HX1JFR0lPTlMpCi0gICAgY2xhc3MgU2FtcGxpbmdSZWdpb24gewot
ICAgIHB1YmxpYzoKLSAgICAgICAgU2FtcGxpbmdSZWdpb24oY29uc3QgY2hhciopIHsgfQotICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoKTsKLSAgICB9OwotI2VuZGlmIC8vIEVO
QUJMRShTQU1QTElOR19SRUdJT05TKQotCi0gICAgY2xhc3MgQ29kZUJsb2NrOwotICAgIGNsYXNz
IEV4ZWNTdGF0ZTsKLSAgICBjbGFzcyBJbnRlcnByZXRlcjsKLSAgICBjbGFzcyBTY29wZU5vZGU7
Ci0gICAgc3RydWN0IEluc3RydWN0aW9uOwotCi0gICAgc3RydWN0IFNjcmlwdFNhbXBsZVJlY29y
ZCB7Ci0gICAgICAgIFNjcmlwdFNhbXBsZVJlY29yZChWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUpCi0gICAgICAgICAgICA6IG1fZXhlY3V0YWJsZSh2bSwgZXhlY3V0YWJsZSkK
LSAgICAgICAgICAgICwgbV9jb2RlQmxvY2soMCkKLSAgICAgICAgICAgICwgbV9zYW1wbGVDb3Vu
dCgwKQotICAgICAgICAgICAgLCBtX29wY29kZVNhbXBsZUNvdW50KDApCi0gICAgICAgICAgICAs
IG1fc2FtcGxlcygwKQotICAgICAgICAgICAgLCBtX3NpemUoMCkKLSAgICAgICAgewotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICB+U2NyaXB0U2FtcGxlUmVjb3JkKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKG1fc2FtcGxlcykKLSAgICAgICAgICAgICAgICBmcmVlKG1fc2FtcGxl
cyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2FtcGxlKENvZGVCbG9jayos
IEluc3RydWN0aW9uKik7Ci0KLSAgICAgICAgU3Ryb25nPFNjcmlwdEV4ZWN1dGFibGU+IG1fZXhl
Y3V0YWJsZTsKLSAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLSAgICAgICAgaW50IG1f
c2FtcGxlQ291bnQ7Ci0gICAgICAgIGludCBtX29wY29kZVNhbXBsZUNvdW50OwotICAgICAgICBp
bnQqIG1fc2FtcGxlczsKLSAgICAgICAgdW5zaWduZWQgbV9zaXplOwotICAgIH07Ci0KLSAgICB0
eXBlZGVmIEhhc2hNYXA8U2NyaXB0RXhlY3V0YWJsZSosIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRT
YW1wbGVSZWNvcmQ+PiBTY3JpcHRTYW1wbGVSZWNvcmRNYXA7Ci0KLSAgICBjbGFzcyBTYW1wbGlu
Z1RocmVhZCB7Ci0gICAgcHVibGljOgotICAgICAgICAvLyBTYW1wbGluZyB0aHJlYWQgc3RhdGUu
Ci0gICAgICAgIHN0YXRpYyBib29sIHNfcnVubmluZzsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVk
IHNfaGVydHo7Ci0gICAgICAgIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIHNfc2FtcGxpbmdUaHJl
YWQ7Ci0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc3RhcnQodW5zaWdu
ZWQgaGVydHo9MTAwMDApOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBz
dG9wKCk7Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgdGhyZWFkU3RhcnRGdW5jKHZvaWQqKTsKLSAg
ICB9OwotCi0gICAgY2xhc3MgU2FtcGxpbmdUb29sIHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci0gICAgcHVibGljOgotICAgICAgICBmcmllbmQgc3RydWN0IENhbGxSZWNvcmQ7
Ci0gICAgICAgIAotI2lmIEVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgICAgIGNsYXNzIENh
bGxSZWNvcmQgewotICAgICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2FsbFJlY29yZCk7
Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIENhbGxSZWNvcmQoU2FtcGxpbmdUb29sKiBz
YW1wbGluZ1Rvb2wsIGJvb2wgaXNIb3N0Q2FsbCA9IGZhbHNlKQotICAgICAgICAgICAgICAgIDog
bV9zYW1wbGluZ1Rvb2woc2FtcGxpbmdUb29sKQotICAgICAgICAgICAgICAgICwgbV9zYXZlZFNh
bXBsZShzYW1wbGluZ1Rvb2wtPm1fc2FtcGxlKQotICAgICAgICAgICAgICAgICwgbV9zYXZlZENv
ZGVCbG9jayhzYW1wbGluZ1Rvb2wtPm1fY29kZUJsb2NrKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGlmIChpc0hvc3RjYWxsKQotICAgICAgICAgICAgICAgICAgICBzYW1wbGluZ1Rv
b2wtPm1fc2FtcGxlIHw9IDB4MTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgfkNhbGxS
ZWNvcmQoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1fc2FtcGxpbmdUb29sLT5t
X3NhbXBsZSA9IG1fc2F2ZWRTYW1wbGU7Ci0gICAgICAgICAgICAgICAgbV9zYW1wbGluZ1Rvb2wt
Pm1fY29kZUJsb2NrID0gbV9zYXZlZENvZGVCbG9jazsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICBwcml2YXRlOgotICAgICAgICAgICAgU2FtcGxpbmdUb29sKiBtX3NhbXBsaW5nVG9vbDsKLSAg
ICAgICAgICAgIGludHB0cl90IG1fc2F2ZWRTYW1wbGU7Ci0gICAgICAgICAgICBDb2RlQmxvY2sq
IG1fc2F2ZWRDb2RlQmxvY2s7Ci0gICAgICAgIH07Ci0jZWxzZQotICAgICAgICBjbGFzcyBDYWxs
UmVjb3JkIHsKLSAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhbGxSZWNvcmQpOwot
ICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBDYWxsUmVjb3JkKFNhbXBsaW5nVG9vbCosIGJv
b2wgPSBmYWxzZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSNl
bmRpZgotCi0gICAgICAgIFNhbXBsaW5nVG9vbChJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIpCi0g
ICAgICAgICAgICA6IG1faW50ZXJwcmV0ZXIoaW50ZXJwcmV0ZXIpCi0gICAgICAgICAgICAsIG1f
Y29kZUJsb2NrKDApCi0gICAgICAgICAgICAsIG1fc2FtcGxlKDApCi0gICAgICAgICAgICAsIG1f
c2FtcGxlQ291bnQoMCkKLSAgICAgICAgICAgICwgbV9vcGNvZGVTYW1wbGVDb3VudCgwKQotI2lm
IEVOQUJMRShDT0RFQkxPQ0tfU0FNUExJTkcpCi0gICAgICAgICAgICAsIG1fc2NvcGVTYW1wbGVN
YXAoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRTYW1wbGVSZWNvcmRNYXA+KQotI2VuZGlmCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIG1lbXNldChtX29wY29kZVNhbXBsZXMsIDAsIHNpemVvZihtX29w
Y29kZVNhbXBsZXMpKTsKLSAgICAgICAgICAgIG1lbXNldChtX29wY29kZVNhbXBsZXNJbkNUSUZ1
bmN0aW9ucywgMCwgc2l6ZW9mKG1fb3Bjb2RlU2FtcGxlc0luQ1RJRnVuY3Rpb25zKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldHVwKCk7Ci0gICAgICAg
IHZvaWQgZHVtcChFeGVjU3RhdGUqKTsKLQotICAgICAgICB2b2lkIG5vdGlmeU9mU2NvcGUoVk0m
LCBTY3JpcHRFeGVjdXRhYmxlKiBzY29wZSk7Ci0KLSAgICAgICAgdm9pZCBzYW1wbGUoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiB2UEMpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHZQQykgJiAweDMpKTsKLSAgICAg
ICAgICAgIG1fY29kZUJsb2NrID0gY29kZUJsb2NrOwotICAgICAgICAgICAgbV9zYW1wbGUgPSBy
ZWludGVycHJldF9jYXN0PGludHB0cl90Pih2UEMpOwotICAgICAgICB9Ci0KLSAgICAgICAgQ29k
ZUJsb2NrKiogY29kZUJsb2NrU2xvdCgpIHsgcmV0dXJuICZtX2NvZGVCbG9jazsgfQotICAgICAg
ICBpbnRwdHJfdCogc2FtcGxlU2xvdCgpIHsgcmV0dXJuICZtX3NhbXBsZTsgfQotCi0gICAgICAg
IHZvaWQqIGVuY29kZVNhbXBsZShJbnN0cnVjdGlvbiogdlBDLCBib29sIGluQ1RJRnVuY3Rpb24g
PSBmYWxzZSwgYm9vbCBpbkhvc3RGdW5jdGlvbiA9IGZhbHNlKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90Pih2UEMpICYgMHgzKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4odlBDKSB8IChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5DVElGdW5jdGlvbikg
PDwgMSkgfCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5Ib3N0RnVuY3Rpb24pKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHN0YXRpYyB2b2lkIHNhbXBsZSgpOwotCi0gICAgcHJpdmF0ZToKLSAgICAg
ICAgY2xhc3MgU2FtcGxlIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgU2FtcGxlKHZv
bGF0aWxlIGludHB0cl90IHNhbXBsZSwgQ29kZUJsb2NrKiB2b2xhdGlsZSBjb2RlQmxvY2spCi0g
ICAgICAgICAgICAgICAgOiBtX3NhbXBsZShzYW1wbGUpCi0gICAgICAgICAgICAgICAgLCBtX2Nv
ZGVCbG9jayhjb2RlQmxvY2spCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGJvb2wgaXNOdWxsKCkgeyByZXR1cm4gIW1fc2FtcGxlOyB9Ci0g
ICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIHsgcmV0dXJuIG1fY29kZUJsb2NrOyB9
Ci0gICAgICAgICAgICBJbnN0cnVjdGlvbiogdlBDKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxJbnN0cnVjdGlvbio+KG1fc2FtcGxlICYgfjB4Myk7IH0KLSAgICAgICAgICAgIGJvb2wgaW5I
b3N0RnVuY3Rpb24oKSB7IHJldHVybiBtX3NhbXBsZSAmIDB4MTsgfQotICAgICAgICAgICAgYm9v
bCBpbkNUSUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9zYW1wbGUgJiAweDI7IH0KLQotICAgICAgICBw
cml2YXRlOgotICAgICAgICAgICAgaW50cHRyX3QgbV9zYW1wbGU7Ci0gICAgICAgICAgICBDb2Rl
QmxvY2sqIG1fY29kZUJsb2NrOwotICAgICAgICB9OwotCi0gICAgICAgIHZvaWQgZG9SdW4oKTsK
LSAgICAgICAgc3RhdGljIFNhbXBsaW5nVG9vbCogc19zYW1wbGluZ1Rvb2w7Ci0gICAgICAgIAot
ICAgICAgICBJbnRlcnByZXRlciogbV9pbnRlcnByZXRlcjsKLSAgICAgICAgCi0gICAgICAgIC8v
IFN0YXRlIHRyYWNrZWQgYnkgdGhlIG1haW4gdGhyZWFkLCB1c2VkIGJ5IHRoZSBzYW1wbGluZyB0
aHJlYWQuCi0gICAgICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7Ci0gICAgICAgIGludHB0cl90
IG1fc2FtcGxlOwotCi0gICAgICAgIC8vIEdhdGhlcmVkIHNhbXBsZSBkYXRhLgotICAgICAgICBs
b25nIGxvbmcgbV9zYW1wbGVDb3VudDsKLSAgICAgICAgbG9uZyBsb25nIG1fb3Bjb2RlU2FtcGxl
Q291bnQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fb3Bjb2RlU2FtcGxlc1tudW1PcGNvZGVJRHNdOwot
ICAgICAgICB1bnNpZ25lZCBtX29wY29kZVNhbXBsZXNJbkNUSUZ1bmN0aW9uc1tudW1PcGNvZGVJ
RHNdOwotICAgICAgICAKLSNpZiBFTkFCTEUoQ09ERUJMT0NLX1NBTVBMSU5HKQotICAgICAgICBM
b2NrIG1fc2NyaXB0U2FtcGxlTWFwTXV0ZXg7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3Jp
cHRTYW1wbGVSZWNvcmRNYXA+IG1fc2NvcGVTYW1wbGVNYXA7Ci0jZW5kaWYKLSAgICB9OwotCi19
IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIFNhbXBsaW5nVG9vbF9oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN1
cGVyU2FtcGxlci5oIgorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJP
cHRpb25zLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKwordm9sYXRpbGUgdWludDMyX3QgZ19zdXBl
clNhbXBsZXJDb3VudDsKKworc3RhdGljIGRvdWJsZSBpbjsKK3N0YXRpYyBkb3VibGUgb3V0Owor
Cit2b2lkIGluaXRpYWxpemVTdXBlclNhbXBsZXIoKQoreworICAgIGlmICghT3B0aW9uczo6dXNl
U3VwZXJTYW1wbGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBjcmVhdGVUaHJlYWQo
CisgICAgICAgICJKU0MgU3VwZXIgU2FtcGxlciIsCisgICAgICAgIFtdICgpIHsKKyAgICAgICAg
ICAgIGNvbnN0IGludCBzbGVlcFF1YW50dW0gPSAxMDsKKyAgICAgICAgICAgIGNvbnN0IGludCBw
cmludGluZ1BlcmlvZCA9IDEwMDA7CisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAg
ICAgICAgZm9yIChpbnQgbXMgPSAwOyBtcyA8IHByaW50aW5nUGVyaW9kOyBtcyArPSBzbGVlcFF1
YW50dW0pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGdfc3VwZXJTYW1wbGVyQ291bnQpCisg
ICAgICAgICAgICAgICAgICAgICAgICBpbisrOworICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICBvdXQrKzsKKyAgICAgICAgICAgICAgICAgICAgc2xlZXBN
UyhzbGVlcFF1YW50dW0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwcmlu
dFN1cGVyU2FtcGxlclN0YXRlKCk7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KGdfc3VwZXJTYW1wbGVyQ291bnQpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiV0FSTklORzogU3VwZXIgc2FtcGxlciB1bmRlcmNvdW50IGRldGVjdGVkIVxuIik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0pOworfQorCit2b2lkIHByaW50U3VwZXJTYW1wbGVyU3Rh
dGUoKQoreworICAgIGlmICghT3B0aW9uczo6dXNlU3VwZXJTYW1wbGVyKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBkb3VibGUgcGVyY2VudGFnZSA9IDEwMC4wICogaW4gLyAoaW4gKyBv
dXQpOworICAgIGlmIChwZXJjZW50YWdlICE9IHBlcmNlbnRhZ2UpCisgICAgICAgIHBlcmNlbnRh
Z2UgPSAwLjA7CisgICAgZGF0YUxvZygiUGVyY2VudCB0aW1lIGJlaGluZCBzdXBlciBzYW1wbGVy
IGZsYWc6ICIsIHBlcmNlbnRhZ2UsICJcbiIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU3VwZXJTYW1wbGVyX2gKKyNkZWZp
bmUgU3VwZXJTYW1wbGVyX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIE1hY3JvQXNzZW1i
bGVyOworCitleHRlcm4gdm9sYXRpbGUgdWludDMyX3QgZ19zdXBlclNhbXBsZXJDb3VudDsKKwor
dm9pZCBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCk7CisKK2NsYXNzIFN1cGVyU2FtcGxlclNjb3Bl
IHsKK3B1YmxpYzoKKyAgICBTdXBlclNhbXBsZXJTY29wZShib29sIGRvU2FtcGxlID0gdHJ1ZSkK
KyAgICAgICAgOiBtX2RvU2FtcGxlKGRvU2FtcGxlKQorICAgIHsKKyAgICAgICAgaWYgKG1fZG9T
YW1wbGUpCisgICAgICAgICAgICBnX3N1cGVyU2FtcGxlckNvdW50Kys7CisgICAgfQorCisgICAg
flN1cGVyU2FtcGxlclNjb3BlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2RvU2FtcGxlKQorICAg
ICAgICAgICAgZ19zdXBlclNhbXBsZXJDb3VudC0tOworICAgIH0KKworcHJpdmF0ZToKKyAgICBi
b29sIG1fZG9TYW1wbGU7Cit9OworCitKU19FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50U3VwZXJT
YW1wbGVyU3RhdGUoKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBTdXBlclNh
bXBsZXJfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDYgQEAgdm9pZCBMYWJlbDo6c2V0TG9jYXRpb24odW5z
aWduZWQgbG9jYXRpbwogCiBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
KQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJCeXRlY29kZSBHZW5lcmF0
aW9uIik7Ci0KICAgICBtX2NvZGVCbG9jay0+c2V0VGhpc1JlZ2lzdGVyKG1fdGhpc1JlZ2lzdGVy
LnZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAKICAgICAvLyBJZiB3ZSBoYXZlIGRlY2xhcmVkIGEg
dmFyaWFibGUgbmFtZWQgImFyZ3VtZW50cyIgYW5kIHdlIGFyZSB1c2luZyBhcmd1bWVudHMgdGhl
biB3ZSBzaG91bGQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVk
ZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKLSNpbmNsdWRlICJT
YW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgIlRl
bXBsYXRlUmVnaXN0cnlLZXkuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzE2LDcgKzI3MTYsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6Zm9yQWxsVmFsdWVzKAogICAgIHVu
c2lnbmVkIGNsb2JiZXJMaW1pdCwgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBTYW1wbGluZ1Jl
Z2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIEFJIEZvciBBbGwgVmFsdWVzIik7CiAgICAgaWYgKGNs
b2JiZXJMaW1pdCA+PSBtX3N0YXRlLmJsb2NrKCktPnNpemUoKSkKICAgICAgICAgY2xvYmJlckxp
bWl0ID0gbV9zdGF0ZS5ibG9jaygpLT5zaXplKCk7CiAgICAgZWxzZQpAQCAtMjczOSw3ICsyNzM4
LDYgQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogdGVtcGxhdGU8
dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CiB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpjbG9iYmVyU3RydWN0dXJlcyh1bnNpZ25lZCBjbG9iYmVyTGltaXQp
CiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBBSSBDbG9iYmVyIFN0
cnVjdHVyZXMiKTsKICAgICBmb3JBbGxWYWx1ZXMoY2xvYmJlckxpbWl0LCBBYnN0cmFjdFZhbHVl
OjpjbG9iYmVyU3RydWN0dXJlc0Zvcik7CiAgICAgc2V0RGlkQ2xvYmJlcigpOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NzgsNyArNjc4LDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtQXJndW1lbnRzRWxp
bWluYXRpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVn
aW9uKCJERkcgQXJndW1lbnRzIEVsaW1pbmF0aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBo
YXNlPEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MjYsNyArNDI2LDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtQmFja3dhcmRzUHJvcGFnYXRp
b24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJE
RkcgQmFja3dhcmRzIFByb3BhZ2F0aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPEJh
Y2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE5ODM0
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MDgwLDcgKzUwODAsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZSgpCiAKIGJvb2wgcGFyc2UoR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKCJERkcgUGFyc2luZyIpOwogICAgIHJldHVybiBCeXRlQ29kZVBhcnNl
cihncmFwaCkucGFyc2UoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkFQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkFQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyArMjA0LDYgQEAg
cHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtQ0ZBKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENGQSBQaGFzZSIpOwogICAgIHJldHVybiBydW5Q
aGFzZTxDRkFQaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MCw3ICszODAsNiBAQCBwcml2YXRlOgog
CiBib29sIHBlcmZvcm1DRkdTaW1wbGlmaWNhdGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBDRkcgU2ltcGxpZmljYXRpb24gUGhhc2Ui
KTsKICAgICByZXR1cm4gcnVuUGhhc2U8Q0ZHU2ltcGxpZmljYXRpb25QaGFzZT4oZ3JhcGgpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0
aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcy
LDggKzcyLDYgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGZyZWVVbm5lY2Vzc2FyeU5vZGVz
KCkKICAgICB7Ci0gICAgICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQ1BT
IFJldGhyZWFkaW5nOiBmcmVlVW5uZWNlc3NhcnlOb2RlcyIpOwotICAgICAgICAKICAgICAgICAg
Zm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0lu
ZGV4LS07KSB7CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2so
YmxvY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQpAQCAtMzYxLDggKzM1OSw2IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjYW5vbmljYWxpemVMb2NhbHNJbkJsb2NrcygpCiAg
ICAgewotICAgICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENQUyBSZXRo
cmVhZGluZzogY2Fub25pY2FsaXplTG9jYWxzSW5CbG9ja3MiKTsKLSAgICAgICAgCiAgICAgICAg
IGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJ
bmRleC0tOykgewogICAgICAgICAgICAgbV9ibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRl
eCk7CiAgICAgICAgICAgICBjYW5vbmljYWxpemVMb2NhbHNJbkJsb2NrKCk7CkBAIC0zODQsOCAr
MzgwLDYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIFZlY3RvcjxQaGlTdGFja0VudHJ5LCAx
Mjg+JiBwaGlTdGFjayA9IG9wZXJhbmRLaW5kID09IEFyZ3VtZW50T3BlcmFuZCA/IG1fYXJndW1l
bnRQaGlTdGFjayA6IG1fbG9jYWxQaGlTdGFjazsKICAgICAgICAgCi0gICAgICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQ1BTIFJldGhyZWFkaW5nOiBwcm9wYWdhdGVQaGlz
Iik7Ci0gICAgICAgIAogICAgICAgICAvLyBFbnN1cmUgdGhhdCBhdHRlbXB0cyB0byB1c2UgdGhp
cyBmYWlsIGluc3RhbnRseS4KICAgICAgICAgbV9ibG9jayA9IDA7CiAgICAgICAgIApAQCAtNTIw
LDcgKzUxNCw2IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybUNQU1JldGhyZWFkaW5nKEdyYXBo
JiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENQUyBS
ZXRocmVhZGluZyBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxDUFNSZXRocmVhZGluZ1Bo
YXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NF
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NF
UGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAxLDEzICs3MDEsMTEgQEAgcHVi
bGljOgogCiBib29sIHBlcmZvcm1Mb2NhbENTRShHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBMb2NhbENTRSBQaGFzZSIpOwogICAgIHJldHVy
biBydW5QaGFzZTxMb2NhbENTRVBoYXNlPihncmFwaCk7CiB9CiAKIGJvb2wgcGVyZm9ybUdsb2Jh
bENTRShHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24o
IkRGRyBHbG9iYWxDU0UgUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8R2xvYmFsQ1NFUGhh
c2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVh
blVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xlYW5VcFBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw2
IEBAIHB1YmxpYzoKICAgICAKIGJvb2wgcGVyZm9ybUNsZWFuVXAoR3JhcGgmIGdyYXBoKQogewot
ICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQ2xlYW4gVXAgUGhhc2UiKTsK
ICAgICByZXR1cm4gcnVuUGhhc2U8Q2xlYW5VcFBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI0LDcgKzgyNCw2
IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybUNvbnN0YW50Rm9sZGluZyhHcmFwaCYgZ3JhcGgp
CiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBDb25zdGFudCBGb2xk
aW5nIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPENvbnN0YW50Rm9sZGluZ1BoYXNlPihn
cmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRI
b2lzdGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50SG9pc3RpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw2IEBAIHB1YmxpYzoKICAgICAKIGJvb2wgcGVyZm9ybUNv
bnN0YW50SG9pc3RpbmcoR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKCJERkcgQ29uc3RhbnQgSG9pc3RpbmcgUGhhc2UiKTsKICAgICByZXR1cm4gcnVu
UGhhc2U8Q29uc3RhbnRIb2lzdGluZ1BoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDcml0aWNhbEVkZ2VCcmVha2lu
Z1BoYXNlLmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcs
NyArODcsNiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1Dcml0aWNhbEVkZ2VCcmVha2luZyhH
cmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBD
cml0aWNhbCBFZGdlIEJyZWFraW5nIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPENyaXRp
Y2FsRWRnZUJyZWFraW5nUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAs
NyArMTUwLDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtRENFKEdyYXBoJiBncmFwaCkKIHsK
LSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIERDRSBQaGFzZSIpOwogICAg
IHJldHVybiBydW5QaGFzZTxEQ0VQaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDYgQEAKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIk9wdGlvbnMuaCIKLSNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRl
ICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogCkBAIC02MSw4
ICs2MCw2IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKICAgICB1bnNp
Z25lZCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIGNvbnN0IE9wZXJhbmRzPEpTVmFsdWU+JiBtdXN0
SGFuZGxlVmFsdWVzLAogICAgIFBhc3NSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
PiBjYWxsYmFjaykKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENv
bXBpbGF0aW9uIChEcml2ZXIpIik7Ci0gICAgCiAgICAgaWYgKCFPcHRpb25zOjpieXRlY29kZVJh
bmdlVG9ERkdDb21waWxlKCkuaXNJblJhbmdlKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgp
KQogICAgICAgICB8fCAhRnVuY3Rpb25XaGl0ZWxpc3Q6OmVuc3VyZUdsb2JhbFdoaXRlbGlzdCgp
LmNvbnRhaW5zKGNvZGVCbG9jaykpCiAgICAgICAgIHJldHVybiBDb21waWxhdGlvbkZhaWxlZDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2
aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ0Niw3ICsyNDQ2LDYgQEAgcHJpdmF0ZToKICAgICAK
IGJvb2wgcGVyZm9ybUZpeHVwKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbigiREZHIEZpeHVwIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPEZp
eHVwUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjgsOCArNTY4LDYgQEAgdm9pZCBHcmFw
aDo6ZGV0aHJlYWQoKQogICAgIGlmIChsb2dDb21waWxhdGlvbkNoYW5nZXMoKSkKICAgICAgICAg
ZGF0YUxvZygiRGV0aHJlYWRpbmcgREZHIGdyYXBoLlxuIik7CiAgICAgCi0gICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBEZXRocmVhZGluZyIpOwotICAgIAogICAgIGZvciAo
QmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOyBibG9ja0luZGV4LS07KSB7
CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ibG9ja3NbYmxvY2tJbmRleF0uZ2V0KCk7
CiAgICAgICAgIGlmICghYmxvY2spCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAkocmV2aXNp
b24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tD
b21iaW5pbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MSw3ICszOTEsNiBAQCBwcml2
YXRlOgogICAgIAogYm9vbCBwZXJmb3JtSW50ZWdlckNoZWNrQ29tYmluaW5nKEdyYXBoJiBncmFw
aCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIEludGVnZXIgQ2hl
Y2sgQ29tYmluaW5nIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPEludGVnZXJDaGVja0Nv
bWJpbmluZ1BoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
dGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3MCw3
ICsxNzcwLDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtSW50ZWdlclJhbmdlT3B0aW1pemF0
aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigi
REZHIEludGVnZXIgUmFuZ2UgT3B0aW1pemF0aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBo
YXNlPEludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlk
YXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw2IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVy
Zm9ybUludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIEludmFsaWRhdGlvbiBQb2ludCBJbmplY3Rp
b24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8SW52YWxpZGF0aW9uUG9pbnRJbmplY3Rp
b25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiw4ICsz
MjYsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAKIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGUoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVn
aW9uKCJERkcgQmFja2VuZCIpOwotCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxl
RW50cnkoKTsKICAgICBtX3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2
ZUpJVD4oKnRoaXMpOwpAQCAtMzg3LDggKzM4NSw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBp
bGUoKQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogewotICAgIFNhbXBs
aW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQmFja2VuZCIpOwotICAgIAogICAgIHNldFN0
YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYxLDcgKzM2MSw2IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybUxJQ00oR3JhcGgmIGdyYXBo
KQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgTElDTSBQaGFzZSIp
OwogICAgIHJldHVybiBydW5QaGFzZTxMSUNNUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVD
YXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDYgQEAgcHVibGljOgogCiBi
b29sIHBlcmZvcm1MaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlKEdyYXBoJiBncmFw
aCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIExpdmUgQ2F0Y2gg
VmFyaWFibGVzIFByZXNlcnZhdGlvbiBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxMaXZl
Q2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFz
ZS5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSw2
IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMoR3JhcGgmIGdyYXBo
KQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgTGl2ZW5lc3MgQW5h
bHlzaXMgUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8TGl2ZW5lc3NBbmFseXNpc1BoYXNl
PihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFBy
ZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgz
NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDcgKzE4Myw2IEBAIHB1YmxpYzoKIAog
Ym9vbCBwZXJmb3JtTG9vcFByZUhlYWRlckNyZWF0aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBT
YW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIExvb3AgUHJlLUhlYWRlciBDcmVhdGlv
biBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFz
ZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGlt
YWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4
MzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNiBAQCBwdWJsaWM6CiAK
IGJvb2wgcGVyZm9ybU1heGltYWxGbHVzaEluc2VydGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBGbHVzaCBFdmVyeXRoaW5nIEluc2Vy
dGlvbiBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxNYXhpbWFsRmx1c2hJbnNlcnRpb25Q
aGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01v
dkhpbnRSZW1vdmFsUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNiBAQCBwcml2YXRlOgogICAgIAogYm9vbCBwZXJmb3Jt
TW92SGludFJlbW92YWwoR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKCJERkcgTW92SGludCBSZW1vdmFsIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBo
YXNlPE1vdkhpbnRSZW1vdmFsUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5
c2lzUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDIsNyArMTAyLDYgQEAgcHVibGljOgogCiBib29sIHBlcmZvcm1PU1JBdmFpbGFiaWxpdHlB
bmFseXNpcyhHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdp
b24oIkRGRyBPU1IgQXZhaWxhYmlsaXR5IEFuYWx5c2lzIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1
blBoYXNlPE9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBv
aW50Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDcsNyArMTQ3LDYgQEAgcHVibGljOgogCiBib29sIHBlcmZvcm1PU1JFbnRyeXBv
aW50Q3JlYXRpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5n
UmVnaW9uKCJERkcgT1NSIEVudHJ5cG9pbnQgQ3JlYXRpb24iKTsKICAgICByZXR1cm4gcnVuUGhh
c2U8T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNp
b24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsOCArMTEyLDYgQEAgZXh0ZXJuICJDIiB7CiAK
IHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQogewotICAgIFNhbXBsaW5nUmVn
aW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgT1NSIEV4aXQgQ29tcGlsYXRpb24iKTsKLQogICAgIGlm
IChleGVjLT52bSgpLmNhbGxGcmFtZUZvckNhdGNoKQogICAgICAgICBSRUxFQVNFX0FTU0VSVChl
eGVjLT52bSgpLmNhbGxGcmFtZUZvckNhdGNoID09IGV4ZWMpOwogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRp
b25TaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjExLDcgKzIyMTEsNiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1PYmplY3RB
bGxvY2F0aW9uU2lua2luZyhHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oIkRGRyBPYmplY3QgQWxsb2NhdGlvbiBTaW5raW5nIFBoYXNlIik7CiAgICAg
cmV0dXJuIHJ1blBoYXNlPE9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U+KGdyYXBoKTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiUmVwYXRj
aC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlN0cmluZ0NvbnN0
cnVjdG9yLmgiCisjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiU3ltYm9sLmgi
CiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUlubGlu
ZXMuaCIKQEAgLTYyMSw2ICs2MjIsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFyCiAgICAgICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25SZWdFeHBFeGVjU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEpTU3RyaW5nKiBhcmd1bWVudCkK
IHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAg
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICAKQEAgLTYyOSw2ICs2MzIsOCBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlCiAgICAgICAgIAogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1bWVudCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAg
ICAKQEAgLTY0Miw2ICs2NDcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblJlCiAgICAgICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25S
ZWdFeHBFeGVjR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QXJndW1lbnQpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOworICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKQEAgLTY1OSw2ICs2NjYsOCBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlCiAgICAgICAgIAogc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0
LCBKU1N0cmluZyogaW5wdXQpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVy
U2NvcGUoZmFsc2UpOworICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKQEAgLTY2Nyw2ICs2
NzYsOCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0CiAKIHNpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQogeworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCkBA
IC02ODAsNiArNjkxLDggQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVz
dAogCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYyhFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnQpCiB7CisgICAgU3Vw
ZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGU7CisgICAgCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBl
eGVjKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGhhbnRvbUluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODEsNyArMTgxLDYgQEAgcHJpdmF0ZToKICAgICAKIGJvb2wgcGVyZm9ybVBoYW50
b21JbnNlcnRpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5n
UmVnaW9uKCJERkcgUGhhbnRvbSBJbnNlcnRpb24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhh
c2U8UGhhbnRvbUluc2VydGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDcgKzE3NCw2
IEBAIHZvaWQgUGxhbjo6Y29tcGlsZUluVGhyZWFkKExvbmdMaXZlZFN0YXQKICAgICBpZiAocmVw
b3J0Q29tcGlsZVRpbWVzKCkpCiAgICAgICAgIGNvZGVCbG9ja05hbWUgPSB0b0NTdHJpbmcoKmNv
ZGVCbG9jayk7CiAgICAgCi0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBD
b21waWxhdGlvbiAoUGxhbikiKTsKICAgICBDb21waWxhdGlvblNjb3BlIGNvbXBpbGF0aW9uU2Nv
cGU7CiAKICAgICBpZiAobG9nQ29tcGlsYXRpb25DaGFuZ2VzKG1vZGUpKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3
ICs4Niw2IEBAIHB1YmxpYzoKIAogYm9vbCBwZXJmb3JtUHJlZGljdGlvbkluamVjdGlvbihHcmFw
aCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBQcmVk
aWN0aW9uIEluamVjdGlvbiBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxQcmVkaWN0aW9u
SW5qZWN0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE2LDcgKzEwMTYs
NiBAQCBwcml2YXRlOgogICAgIAogYm9vbCBwZXJmb3JtUHJlZGljdGlvblByb3BhZ2F0aW9uKEdy
YXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFBy
ZWRpY3Rpb24gUHJvcGFnYXRpb24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8UHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5r
aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODMsNyArNTgzLDYgQEAgcHVibGljOgog
ICAgIAogYm9vbCBwZXJmb3JtUHV0U3RhY2tTaW5raW5nKEdyYXBoJiBncmFwaCkKIHsKLSAgICBT
YW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFB1dFN0YWNrIFNpbmtpbmcgUGhhc2Ui
KTsKICAgICByZXR1cm4gcnVuUGhhc2U8UHV0U3RhY2tTaW5raW5nUGhhc2U+KGdyYXBoKTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVy
c2lvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyAr
NDE2LDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtU1NBQ29udmVyc2lvbihHcmFwaCYgZ3Jh
cGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBTU0EgQ29udmVy
c2lvbiBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdy
YXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmlu
Z1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NT
QUxvd2VyaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIs
NyArMTIyLDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtU1NBTG93ZXJpbmcoR3JhcGgmIGdy
YXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgU1NBIExvd2Vy
aW5nIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFNTQUxvd2VyaW5nUGhhc2U+KGdyYXBo
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTg4LDYg
KzI5ODgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
IH0KIAogICAgIGNhc2UgUmVnRXhwRXhlYzogeworICAgICAgICBib29sIHNhbXBsZSA9IGZhbHNl
OworCisgICAgICAgIGlmIChzYW1wbGUpCisgICAgICAgICAgICBtX2ppdC5pbmNyZW1lbnRTdXBl
clNhbXBsZXJDb3VudCgpOworICAgICAgICAKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
Z2xvYmFsT2JqZWN0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiA9IGdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgCkBAIC0zMDA2LDYgKzMw
MTEsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisKKyAgICAgICAg
ICAgICAgICBpZiAoc2FtcGxlKQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5kZWNyZW1lbnRT
dXBlclNhbXBsZXJDb3VudCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCkBAIC0zMDIxLDYgKzMwMjksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBub2Rl
KTsKKworICAgICAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAgICAgICAgICAgICBtX2ppdC5kZWNy
ZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgCkBAIC0zMDM1LDYgKzMwNDYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAg
IAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisKKyAgICAgICAg
aWYgKHNhbXBsZSkKKyAgICAgICAgICAgIG1faml0LmRlY3JlbWVudFN1cGVyU2FtcGxlckNvdW50
KCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMzA5Myw2ICszMTA3LDExIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAKICAgICBjYXNlIFN0
cmluZ1JlcGxhY2U6IHsKKyAgICAgICAgYm9vbCBzYW1wbGUgPSBmYWxzZTsKKworICAgICAgICBp
ZiAoc2FtcGxlKQorICAgICAgICAgICAgbV9qaXQuaW5jcmVtZW50U3VwZXJTYW1wbGVyQ291bnQo
KTsKKyAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3Ry
aW5nVXNlCiAgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhw
T2JqZWN0VXNlCiAgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3Ry
aW5nVXNlKSB7CkBAIC0zMTEyLDYgKzMxMzEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZWdFeHBHUFIpOwogICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChzYW1wbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5kZWNyZW1lbnRTdXBl
clNhbXBsZXJDb3VudCgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zMTMzLDYgKzMxNTQsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgcmVwbGFjZUdQUik7
CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgY2VsbFJl
c3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgICAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAg
ICAgICAgICAgICBtX2ppdC5kZWNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zMTUwLDYgKzMxNzMsOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICByZXBsYWNl
R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgICAgICBpZiAoc2FtcGxlKQorICAgICAgICAgICAg
bV9qaXQuZGVjcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlv
dXRQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dGFja0xheW91dFBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYx
LDcgKzI2MSw2IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybVN0YWNrTGF5b3V0KEdyYXBoJiBn
cmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFN0YWNrIExh
eW91dCBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxTdGFja0xheW91dFBoYXNlPihncmFw
aCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0
aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4
ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyAr
OTgsNiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1TdGF0aWNFeGVjdXRpb25Db3VudEVzdGlt
YXRpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9u
KCJERkcgU3RhdGljIEV4ZWN1dGlvbiBDb3VudCBFc3RpbWF0aW9uIik7CiAgICAgcmV0dXJuIHJ1
blBoYXNlPFN0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlPihncmFwaCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTM0LDEzICs1MzQsMTEgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3Jt
RmFzdFN0b3JlQmFycmllckluc2VydGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBGYXN0IFN0b3JlIEJhcnJpZXIgSW5zZXJ0aW9uIFBo
YXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFN0b3JlQmFycmllckluc2VydGlvblBoYXNlPFBo
YXNlTW9kZTo6RmFzdD4+KGdyYXBoKTsKIH0KIAogYm9vbCBwZXJmb3JtR2xvYmFsU3RvcmVCYXJy
aWVySW5zZXJ0aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbigiREZHIEdsb2JhbCBTdG9yZSBCYXJyaWVyIEluc2VydGlvbiBQaGFzZSIpOwogICAg
IHJldHVybiBydW5QaGFzZTxTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZTxQaGFzZU1vZGU6Okds
b2JhbD4+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTAsNyArMzkwLDYgQEAgcHJpdmF0ZToKICAgICAKIGJv
b2wgcGVyZm9ybVN0cmVuZ3RoUmVkdWN0aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFN0cmVuZ3RoIFJlZHVjdGlvbiBQaGFzZSIpOwog
ICAgIHJldHVybiBydW5QaGFzZTxTdHJlbmd0aFJlZHVjdGlvblBoYXNlPihncmFwaCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlLmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMTYgKzMyLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi0v
LyBDb21tZW50IG91dCB0aGUgZW1wdHkgU0FNUExFKCkgZGVmaW5pdGlvbiwgYW5kIHVuY29tbWVu
dCB0aGUgb25lIHRoYXQgdXNlcyBTYW1wbGluZ1JlZ2lvbiwgaWYKLS8vIHlvdSB3YW50IGV4dHJl
bWVseSBmaW5lLWdyYWluZWQgcHJvZmlsaW5nIGluIHRoaXMgY29kZS4KLSNkZWZpbmUgU0FNUExF
KG5hbWUpIAotLy8jZGVmaW5lIFNBTVBMRShuYW1lKSBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1Jl
Z2lvbihuYW1lKQotCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogdm9pZCBTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOjphc3NlcnRJc1JlZ2lzdGVyZWQoR3JhcGgmIGdyYXBoKSBjb25zdAogewotICAgIFNB
TVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBhc3NlcnRJc1JlZ2lzdGVyZWQiKTsKLQogICAg
IGlmIChpc1RvcCgpKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC01Miw4ICs0NSw2IEBAIHZv
aWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YXNzZXJ0SXNSZWcKIAogdm9pZCBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjpjbG9iYmVyKCkKIHsKLSAgICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0
VmFsdWUgY2xvYmJlciIpOwotCiAgICAgLy8gVGhlIHByZW1pc2Ugb2YgdGhpcyBhcHByb2FjaCB0
byBjbG9iYmVyaW5nIGlzIHRoYXQgYW55dGltZSB3ZSBpbnRyb2R1Y2UKICAgICAvLyBhIHdhdGNo
YWJsZSBzdHJ1Y3R1cmUgaW50byBhbiBhYnN0cmFjdCB2YWx1ZSwgd2Ugd2F0Y2hwb2ludCBpdC4g
WW91IGNhbiBhc3NlcnQKICAgICAvLyB0aGF0IHRoaXMgaG9sZHMgYnkgY2FsbGluZyBhc3NlcnRJ
c1dhdGNoZWQoKS4KQEAgLTgyLDggKzczLDYgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
OjpjbG9iYmVyKCkKIAogdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvYnNlcnZlVHJhbnNp
dGlvbihTdHJ1Y3R1cmUqIGZyb20sIFN0cnVjdHVyZSogdG8pCiB7Ci0gICAgU0FNUExFKCJTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlIG9ic2VydmVUcmFuc2l0aW9uIik7Ci0gICAgCiAgICAgQVNTRVJU
KCFmcm9tLT5kZmdTaG91bGRXYXRjaCgpKTsKIAogICAgIGlmIChpc1RvcCgpKQpAQCAtMTAxLDgg
KzkwLDYgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvYnNlcnZlVHJhbgogCiB2b2lk
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9ucyhjb25zdCBUcmFuc2l0
aW9uVmVjdG9yJiB2ZWN0b3IpCiB7Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
IG9ic2VydmVUcmFuc2l0aW9ucyIpOwotCiAgICAgaWYgKGlzVG9wKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKQEAgLTEyNSw4ICsxMTIsNiBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6
Om9ic2VydmVUcmFuCiAKIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewotICAgIFNBTVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBhZGQi
KTsKLQogICAgIGlmIChpc1RvcCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0x
NDEsOCArMTI2LDYgQEAgYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjphZGQoU3RydWN0dQog
CiBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlKGNvbnN0IFN0cnVjdHVyZVNldCYg
b3RoZXIpCiB7Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIG1lcmdlIHNldCIp
OwotCiAgICAgaWYgKGlzVG9wKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTE1
MSw4ICsxMzQsNiBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlKGNvbnN0CiAK
IGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VTbG93KGNvbnN0IFN0cnVjdHVyZUFi
c3RyYWN0VmFsdWUmIG90aGVyKQogewotICAgIFNBTVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZSBtZXJnZSB2YWx1ZSBzbG93Iik7Ci0KICAgICAvLyBJdCBpc24ndCBpbW1lZGlhdGVseSBvYnZp
b3VzIHRoYXQgdGhlIGNvZGUgYmVsb3cgaXMgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLCBzbyBsZXQn
cyBnbwogICAgIC8vIHRocm91Z2ggaXQuCiAgICAgLy8KQEAgLTE5Niw4ICsxNzcsNiBAQCBib29s
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlU2xvdyhjCiAKIGJvb2wgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZTo6bWVyZ2VOb3RUb3AoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikKIHsKLSAg
ICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFsdWUgbWVyZ2Ugbm90IHRvcCIpOwotCiAgICAg
aWYgKCFtX3NldC5tZXJnZShvdGhlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAg
LTIwOSw4ICsxODgsNiBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlTm90VG9w
CiAKIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNl
dCYgb3RoZXIpCiB7Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIGZpbHRlciBz
ZXQiKTsKLQogICAgIGlmIChpc1RvcCgpKSB7CiAgICAgICAgIG1fc2V0ID0gb3RoZXI7CiAgICAg
ICAgIHJldHVybjsKQEAgLTI0NCw4ICsyMjEsNiBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFs
dWU6OmZpbHRlcihjb25zCiAKIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKGNv
bnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKQogewotICAgIFNBTVBMRSgiU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZSBmaWx0ZXIgdmFsdWUiKTsKLQogICAgIGlmIChvdGhlci5pc1RvcCgp
KQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC0yNzAsOCArMjQ1LDYgQEAgdm9pZCBTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXIoY29ucwogCiB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFs
dWU6OmZpbHRlclNsb3coU3BlY3VsYXRlZFR5cGUgdHlwZSkKIHsKLSAgICBTQU1QTEUoIlN0cnVj
dHVyZUFic3RyYWN0VmFsdWUgZmlsdGVyIHR5cGUgc2xvdyIpOwotCiAgICAgaWYgKCEodHlwZSAm
IFNwZWNDZWxsKSkgewogICAgICAgICBjbGVhcigpOwogICAgICAgICByZXR1cm47CkBAIC0yODcs
OCArMjYwLDYgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJTbG93KAogCiBi
b29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNvbnRhaW5zKFN0cnVjdHVyZSogc3RydWN0dXJl
KSBjb25zdAogewotICAgIFNBTVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBjb250YWlucyIp
OwotCiAgICAgaWYgKGlzSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCkBA
IC0yOTcsOCArMjY4LDYgQEAgYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjb250YWlucyhT
dAogCiBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YoY29uc3QgU3RydWN0
dXJlU2V0JiBvdGhlcikgY29uc3QKIHsKLSAgICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFs
dWUgaXNTdWJzZXRPZiBzZXQiKTsKLQogICAgIGlmIChpc0luZmluaXRlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKQEAgLTMwNyw4ICsyNzYsNiBAQCBib29sIFN0cnVjdHVyZUFic3Ry
YWN0VmFsdWU6OmlzU3Vic2V0T2YoCiAKIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNT
dWJzZXRPZihjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKIHsKLSAg
ICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFsdWUgaXNTdWJzZXRPZiB2YWx1ZSIpOwotCiAg
ICAgaWYgKGlzVG9wKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTMzMCw4ICsy
OTcsNiBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YoCiAKIGJvb2wg
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdXBlcnNldE9mKGNvbnN0IFN0cnVjdHVyZVNldCYg
b3RoZXIpIGNvbnN0CiB7Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIGlzU3Vw
ZXJzZXRPZiBzZXQiKTsKLQogICAgIGlmIChpc0luZmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIApAQCAtMzQwLDggKzMwNSw2IEBAIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZTo6aXNTdXBlcnNldE8KIAogYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvdmVybGFwcyhj
b25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdAogewotICAgIFNBTVBMRSgiU3RydWN0dXJl
QWJzdHJhY3RWYWx1ZSBvdmVybGFwcyBzZXQiKTsKLQogICAgIGlmIChpc0luZmluaXRlKCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIApAQCAtMzUwLDggKzMxMyw2IEBAIGJvb2wgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMoY28KIAogYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlOjpvdmVybGFwcyhjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QK
IHsKLSAgICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFsdWUgb3ZlcmxhcHMgdmFsdWUiKTsK
LQogICAgIGlmIChvdGhlci5pc0luZmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IApAQCAtMzYwLDggKzMyMSw2IEBAIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3Zlcmxh
cHMoY28KIAogYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjplcXVhbHNTbG93KGNvbnN0IFN0
cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogewotICAgIFNBTVBMRSgiU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZSBlcXVhbHNTbG93Iik7Ci0KICAgICBBU1NFUlQobV9zZXQubV9wb2lu
dGVyICE9IG90aGVyLm1fc2V0Lm1fcG9pbnRlcik7CiAgICAgQVNTRVJUKCFpc1RvcCgpKTsKICAg
ICBBU1NFUlQoIW90aGVyLmlzVG9wKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNyArMTkxLDYgQEAg
cHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtU3RydWN0dXJlUmVnaXN0cmF0aW9uKEdyYXBoJiBncmFw
aCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFN0cnVjdHVyZSBS
ZWdpc3RyYXRpb24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8U3RydWN0dXJlUmVnaXN0
cmF0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDYgQEAgcHJp
dmF0ZToKIAogYm9vbCBwZXJmb3JtVGllclVwQ2hlY2tJbmplY3Rpb24oR3JhcGgmIGdyYXBoKQog
ewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgVGllci11cCBDaGVjayBJ
bmplY3Rpb24iKTsKICAgICByZXR1cm4gcnVuUGhhc2U8VGllclVwQ2hlY2tJbmplY3Rpb25QaGFz
ZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVD
aGVja0hvaXN0aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUyNiw3ICs1MjYsNiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZv
cm1UeXBlQ2hlY2tIb2lzdGluZyhHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24g
c2FtcGxpbmdSZWdpb24oIkRGRyBUeXBlIENoZWNrIEhvaXN0aW5nIFBoYXNlIik7CiAgICAgcmV0
dXJuIHJ1blBoYXNlPFR5cGVDaGVja0hvaXN0aW5nUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVbmlmaWNhdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VuaWZpY2F0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VuaWZp
Y2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw2IEBAIHB1YmxpYzoK
IAogYm9vbCBwZXJmb3JtVW5pZmljYXRpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgVW5pZmljYXRpb24gUGhhc2UiKTsKICAgICByZXR1
cm4gcnVuUGhhc2U8VW5pZmljYXRpb25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFz
ZS5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw3ICszMjUs
NiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1WYXJhcmdzRm9yd2FyZGluZyhHcmFwaCYgZ3Jh
cGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBWYXJhcmdzIEZv
cndhcmRpbmcgUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8VmFyYXJnc0ZvcndhcmRpbmdQ
aGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zp
cnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxS
ZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMs
NiBAQCBwdWJsaWM6CiAKIGJvb2wgcGVyZm9ybVZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb24oR3Jh
cGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgVmly
dHVhbCBSZWdpc3RlciBBbGxvY2F0aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFZp
cnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MSw3ICsxMzEsNiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1XYXRjaHBvaW50Q29sbGVjdGlv
bihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRG
RyBXYXRjaHBvaW50IENvbGxlY3Rpb24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8V2F0
Y2hwb2ludENvbGxlY3Rpb25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0NzUsNiArNjQ3NSwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21waWxl
UmVnRXhwRXhlYygpCiAgICAgeworICAgICAgICBib29sIHNhbXBsZSA9IGZhbHNlOworCisgICAg
ICAgIGlmIChzYW1wbGUpCisgICAgICAgICAgICBtX291dC5pbmNyZW1lbnRTdXBlclNhbXBsZXJD
b3VudCgpOworICAgICAgICAKICAgICAgICAgTFZhbHVlIGdsb2JhbE9iamVjdCA9IGxvd0NlbGwo
bV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDIo
KS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlKSB7CkBAIC02NDg2LDYgKzY0OTEsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvblJlZ0V4cEV4ZWNTdHJpbmcpLCBtX2NhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LAogICAgICAg
ICAgICAgICAgICAgICBiYXNlLCBhcmd1bWVudCk7CiAgICAgICAgICAgICAgICAgc2V0SlNWYWx1
ZShyZXN1bHQpOworICAgICAgICAgICAgICAgIGlmIChzYW1wbGUpCisgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmRlY3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC02NDk0LDYgKzY1MDEsOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uUmVnRXhwRXhlYyksIG1fY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGJhc2UsCiAgICAgICAg
ICAgICAgICAgYXJndW1lbnQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAg
ICAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAgICAgICAgICAgICBtX291dC5kZWNyZW1lbnRTdXBl
clNhbXBsZXJDb3VudCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IApAQCAtNjUwMyw2ICs2NTEyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEludDY0LCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMpLCBtX2NhbGxGcmFtZSwgZ2xv
YmFsT2JqZWN0LCBiYXNlLAogICAgICAgICAgICAgYXJndW1lbnQpOwogICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CisKKyAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAgICAgICAgIG1fb3V0LmRl
Y3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlUmVn
RXhwVGVzdCgpCkBAIC02NTU5LDYgKzY1NzEsMTEgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lk
IGNvbXBpbGVTdHJpbmdSZXBsYWNlKCkKICAgICB7CisgICAgICAgIGJvb2wgc2FtcGxlID0gZmFs
c2U7CisKKyAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAgICAgICAgIG1fb3V0LmluY3JlbWVudFN1
cGVyU2FtcGxlckNvdW50KCk7CisgICAgICAgIAogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlCiAgICAgICAgICAgICAmJiBtX25vZGUtPmNoaWxkMigp
LnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKICAgICAgICAgICAgICYmIG1fbm9kZS0+Y2hp
bGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewpAQCAtNjU3Myw2ICs2NTkwLDggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBzdHJpbmcsIHJlZ0V4
cCk7CiAKICAgICAgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoc2FtcGxlKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuZGVj
cmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTY1ODYsNiArNjYwNSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHN0cmluZywgcmVnRXhwLCByZXBs
YWNlKTsKIAogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgaWYg
KHNhbXBsZSkKKyAgICAgICAgICAgICAgICBtX291dC5kZWNyZW1lbnRTdXBlclNhbXBsZXJDb3Vu
dCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNjU5NSw2
ICs2NjE2LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDMoKSkpOwogCiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgaWYgKHNhbXBs
ZSkKKyAgICAgICAgICAgIG1fb3V0LmRlY3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCk7CiAgICAg
fQogCiAgICAgdm9pZCBjb21waWxlR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJl
dmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENv
bXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDggKzUzMiw2IEBAIHN0YXRpYyB2b2lk
IGNvbXBpbGVTdHViKAogCiBleHRlcm4gIkMiIHZvaWQqIGNvbXBpbGVGVExPU1JFeGl0KEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgZXhpdElEKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKCJGVEwgT1NSIEV4aXQgQ29tcGlsYXRpb24iKTsKLQogICAgIGlmIChzaG91bGRE
dW1wRGlzYXNzZW1ibHkoKSB8fCBPcHRpb25zOjp2ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6dmVy
Ym9zZUZUTE9TUkV4aXQoKSkKICAgICAgICAgZGF0YUxvZygiQ29tcGlsaW5nIE9TUiBleGl0IHdp
dGggZXhpdElEID0gIiwgZXhpdElELCAiXG4iKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPdXRwdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT3V0cHV0LmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBA
CiAKICNpbmNsdWRlICJCM01hdGhFeHRyYXMuaCIKICNpbmNsdWRlICJCM1N0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcy5oIgorI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEZUTCB7CiAKQEAgLTI5Niw2ICsyOTcsMjMgQEAgdm9pZCBPdXRwdXQ6OnN0
b3JlKExWYWx1ZSB2YWx1ZSwgVHlwZWRQbwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKK1R5cGVkUG9pbnRlciBPdXRwdXQ6OmFic29sdXRlKHZvaWQqIGFkZHJlc3MpCit7
CisgICAgcmV0dXJuIFR5cGVkUG9pbnRlcihtX2hlYXBzLT5hYnNvbHV0ZVthZGRyZXNzXSwgY29u
c3RJbnRQdHIoYWRkcmVzcykpOworfQorCit2b2lkIE91dHB1dDo6aW5jcmVtZW50U3VwZXJTYW1w
bGVyQ291bnQoKQoreworICAgIFR5cGVkUG9pbnRlciBjb3VudGVyID0gYWJzb2x1dGUoYml0d2lz
ZV9jYXN0PHZvaWQqPigmZ19zdXBlclNhbXBsZXJDb3VudCkpOworICAgIHN0b3JlMzIoYWRkKGxv
YWQzMihjb3VudGVyKSwgaW50MzJPbmUpLCBjb3VudGVyKTsKK30KKwordm9pZCBPdXRwdXQ6OmRl
Y3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCkKK3sKKyAgICBUeXBlZFBvaW50ZXIgY291bnRlciA9
IGFic29sdXRlKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmdfc3VwZXJTYW1wbGVyQ291bnQpKTsKKyAg
ICBzdG9yZTMyKHN1Yihsb2FkMzIoY291bnRlciksIGludDMyT25lKSwgY291bnRlcik7Cit9CisK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKIAogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lvbiAxOTgzNDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMDYsMTAgKzMwNiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGhlYXAuYmFzZUlu
ZGV4KCp0aGlzLCBiYXNlLCBpbmRleCwgaW5kZXhBc0NvbnN0YW50LCBvZmZzZXQpOwogICAgIH0K
IAotICAgIFR5cGVkUG9pbnRlciBhYnNvbHV0ZSh2b2lkKiBhZGRyZXNzKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIFR5cGVkUG9pbnRlcihtX2hlYXBzLT5hYnNvbHV0ZVthZGRyZXNzXSwgY29uc3RJ
bnRQdHIoYWRkcmVzcykpOwotICAgIH0KKyAgICBUeXBlZFBvaW50ZXIgYWJzb2x1dGUodm9pZCog
YWRkcmVzcyk7CiAKICAgICBMVmFsdWUgbG9hZDhTaWduRXh0MzIoTFZhbHVlIGJhc2UsIGNvbnN0
IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ4U2lnbkV4dDMyKGFkZHJlc3MoYmFz
ZSwgZmllbGQpKTsgfQogICAgIExWYWx1ZSBsb2FkOFplcm9FeHQzMihMVmFsdWUgYmFzZSwgY29u
c3QgQWJzdHJhY3RIZWFwJiBmaWVsZCkgeyByZXR1cm4gbG9hZDhaZXJvRXh0MzIoYWRkcmVzcyhi
YXNlLCBmaWVsZCkpOyB9CkBAIC00NTQsNiArNDUxLDkgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gVmFsdWVGcm9tQmxvY2sodXBzaWxvbiwgbV9ibG9jayk7CiAgICAgfQogCisgICAgdm9pZCBp
bmNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpOworICAgIHZvaWQgZGVjcmVtZW50U3VwZXJTYW1w
bGVyQ291bnQoKTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogI3ByYWdtYSBtYXJrIC0gU3RhdGVz
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAx
OTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIldlYWtTZXRJbmxpbmVzLmgiCiAjaW5j
bHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsVmVjdG9ySXRlcmF0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4K
QEAgLTUxNSw4ICs1MTYsNiBAQCB2b2lkIEhlYXA6OmNvbXBsZXRlQWxsREZHUGxhbnMoKQogCiB2
b2lkIEhlYXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUsIHZvaWQqIHN0YWNrT3JpZ2lu
LCB2b2lkKiBzdGFja1RvcCwgTWFjaGluZVRocmVhZHM6OlJlZ2lzdGVyU3RhdGUmIGNhbGxlZVNh
dmVkUmVnaXN0ZXJzKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJHYXJi
YWdlIENvbGxlY3Rpb246IE1hcmtpbmciKTsKLQogICAgIEdDUEhBU0UoTWFya1Jvb3RzKTsKICAg
ICBBU1NFUlQoaXNWYWxpZFRocmVhZFN0YXRlKG1fdm0pKTsKIApAQCAtMTA5MCw4ICsxMDg5LDYg
QEAgdm9pZCBIZWFwOjpjb2xsZWN0QW5kU3dlZXAoSGVhcE9wZXJhdGlvbgogCiAgICAgY29sbGVj
dChjb2xsZWN0aW9uVHlwZSk7CiAKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigi
R2FyYmFnZSBDb2xsZWN0aW9uOiBTd2VlcGluZyIpOwotCiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBk
ZWZlckdDKCp0aGlzKTsKICAgICBtX29iamVjdFNwYWNlLnN3ZWVwKCk7CiAgICAgbV9vYmplY3RT
cGFjZS5zaHJpbmsoKTsKQEAgLTExMjEsOCArMTExOCw2IEBAIE5FVkVSX0lOTElORSB2b2lkIEhl
YXA6OmNvbGxlY3RJbXBsKEhlYXAKICAgICAgICAgYmVmb3JlID0gY3VycmVudFRpbWVNUygpOwog
ICAgIH0KICAgICAKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiR2FyYmFnZSBD
b2xsZWN0aW9uIik7Ci0gICAgCiAgICAgaWYgKHZtKCktPnR5cGVQcm9maWxlcigpKSB7CiAgICAg
ICAgIERlZmVyR0NGb3JBV2hpbGUgYXdoaWxlKCp0aGlzKTsKICAgICAgICAgdm0oKS0+dHlwZVBy
b2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiR0MiKSk7CkBAIC0x
NjAyLDEwICsxNTk3LDcgQEAgcHVibGljOgogdm9pZCBIZWFwOjp6b21iaWZ5RGVhZE9iamVjdHMo
KQogewogICAgIC8vIFN3ZWVwIG5vdyBiZWNhdXNlIGRlc3RydWN0b3JzIHdpbGwgY3Jhc2ggb25j
ZSB3ZSdyZSB6b21iaWZpZWQuCi0gICAgewotICAgICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbigiR2FyYmFnZSBDb2xsZWN0aW9uOiBTd2VlcGluZyIpOwotICAgICAgICBtX29iamVj
dFNwYWNlLnpvbWJpZnlTd2VlcCgpOwotICAgIH0KKyAgICBtX29iamVjdFNwYWNlLnpvbWJpZnlT
d2VlcCgpOwogICAgIEhlYXBJdGVyYXRpb25TY29wZSBpdGVyYXRpb25TY29wZSgqdGhpcyk7CiAg
ICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoRGVhZENlbGw8Wm9tYmlmeT4oaXRlcmF0aW9uU2NvcGUp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAko
cmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw4ICs5NCw2IEBAIE1hcmtlZEJsb2NrOjpGcmVl
TGlzdCBNYXJrZWRCbG9jazo6c3BlY2kKICAgICBBU1NFUlQoYmxvY2tTdGF0ZSAhPSBBbGxvY2F0
ZWQgJiYgYmxvY2tTdGF0ZSAhPSBGcmVlTGlzdGVkKTsKICAgICBBU1NFUlQoISghY2FsbERlc3Ry
dWN0b3JzICYmIHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkpKTsKIAotICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKCghY2FsbERlc3RydWN0b3JzICYmIGJsb2NrU3RhdGUgIT0gTmV3KSA/
ICJDYWxsaW5nIGRlc3RydWN0b3JzIiA6ICJzd2VlcGluZyIpOwotICAgIAogICAgIC8vIFRoaXMg
cHJvZHVjZXMgYSBmcmVlIGxpc3QgdGhhdCBpcyBvcmRlcmVkIGluIHJldmVyc2UgdGhyb3VnaCB0
aGUgYmxvY2suCiAgICAgLy8gVGhpcyBpcyBmaW5lLCBzaW5jZSB0aGUgYWxsb2NhdGlvbiBjb2Rl
IG1ha2VzIG5vIGFzc3VtcHRpb25zIGFib3V0IHRoZQogICAgIC8vIG9yZGVyIG9mIHRoZSBmcmVl
IGxpc3QuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYx
LDYgQEAKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgog
I2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50Lmgi
CiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCkBAIC0yOTgsOCArMjk3LDcgQEAgdm9pZCBzZXR1
cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoQ2FsbEZyYQogfQogCiBJbnRlcnByZXRlcjo6SW50ZXJw
cmV0ZXIoVk0mIHZtKQotICAgIDogbV9zYW1wbGVFbnRyeURlcHRoKDApCi0gICAgLCBtX3ZtKHZt
KQorICAgIDogbV92bSh2bSkKICAgICAsIG1fc3RhY2sodm0pCiAgICAgLCBtX2Vycm9ySGFuZGxp
bmdNb2RlUmVlbnRyeSgwKQogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTMyMywxMCArMzIxLDYg
QEAgdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZSgpCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwogI2VuZGlmCi0KLSNpZiBFTkFCTEUoT1BDT0RFX1NB
TVBMSU5HKQotICAgIGVuYWJsZVNhbXBsZXIoKTsKLSNlbmRpZgogfQogCiAjaWZkZWYgTkRFQlVH
CkBAIC04MTQsMjUgKzgwOCw4IEBAIHN0YXRpYyBpbmxpbmUgSlNPYmplY3QqIGNoZWNrZWRSZXR1
cm4oSlMKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLWNsYXNzIFNhbXBsaW5nU2NvcGUg
ewotcHVibGljOgotICAgIFNhbXBsaW5nU2NvcGUoSW50ZXJwcmV0ZXIqIGludGVycHJldGVyKQot
ICAgICAgICA6IG1faW50ZXJwcmV0ZXIoaW50ZXJwcmV0ZXIpCi0gICAgewotICAgICAgICBpbnRl
cnByZXRlci0+c3RhcnRTYW1wbGluZygpOwotICAgIH0KLSAgICB+U2FtcGxpbmdTY29wZSgpCi0g
ICAgewotICAgICAgICBtX2ludGVycHJldGVyLT5zdG9wU2FtcGxpbmcoKTsKLSAgICB9Ci1wcml2
YXRlOgotICAgIEludGVycHJldGVyKiBtX2ludGVycHJldGVyOwotfTsKLQogSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlY3V0YWJsZSogcHJvZ3JhbSwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTT2JqZWN0KiB0aGlzT2JqKQogewotICAgIFNhbXBsaW5nU2NvcGUgc2FtcGxp
bmdTY29wZSh0aGlzKTsKLQogICAgIEpTU2NvcGUqIHNjb3BlID0gdGhpc09iai0+Z2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbFNjb3BlKCk7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOwogCkBAIC05
NzEsMTEgKzk0OCw3IEBAIGZhaWxlZEpTT05QOgogICAgICAgICBwcm9maWxlci0+d2lsbEV4ZWN1
dGUoY2FsbEZyYW1lLCBwcm9ncmFtLT5zb3VyY2VVUkwoKSwgcHJvZ3JhbS0+Zmlyc3RMaW5lKCks
IHByb2dyYW0tPnN0YXJ0Q29sdW1uKCkpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKLSAg
ICBKU1ZhbHVlIHJlc3VsdDsKLSAgICB7Ci0gICAgICAgIFNhbXBsaW5nVG9vbDo6Q2FsbFJlY29y
ZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQoKSk7Ci0gICAgICAgIHJlc3VsdCA9IHByb2dyYW0t
PmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7Ci0gICAg
fQorICAgIEpTVmFsdWUgcmVzdWx0ID0gcHJvZ3JhbS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5leGVj
dXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKIAogICAgIGlmIChMZWdhY3lQcm9maWxlciogcHJv
ZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKICAgICAgICAgcHJvZmlsZXItPmRpZEV4ZWN1
dGUoY2FsbEZyYW1lLCBwcm9ncmFtLT5zb3VyY2VVUkwoKSwgcHJvZ3JhbS0+Zmlyc3RMaW5lKCks
IHByb2dyYW0tPnN0YXJ0Q29sdW1uKCkpOwpAQCAtMTAzMyw4ICsxMDA2LDYgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAg
ICAgewotICAgICAgICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBs
ZXIuZ2V0KCksICFpc0pTQ2FsbCk7Ci0KICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKICAg
ICAgICAgaWYgKGlzSlNDYWxsKQogICAgICAgICAgICAgcmVzdWx0ID0gY2FsbERhdGEuanMuZnVu
Y3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5leGVjdXRlKCZ2bSwg
JnByb3RvQ2FsbEZyYW1lKTsKQEAgLTExMDMsOCArMTA3NCw2IEBAIEpTT2JqZWN0KiBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKIAogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIHsKLSAg
ICAgICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdldCgp
LCAhaXNKU0NvbnN0cnVjdCk7Ci0KICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZS4KICAgICAg
ICAgaWYgKGlzSlNDb25zdHJ1Y3QpCiAgICAgICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3REYXRh
LmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpLT5l
eGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKQEAgLTExNTMsNyArMTEyMiw2IEBAIENhbGxG
cmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoQ2FsbEZyYW1lQ2xvc3VyZSYgY2xvc3VyZSkgCiB7CiAgICAgVk0mIHZtID0gKmNs
b3N1cmUudm07Ci0gICAgU2FtcGxpbmdTY29wZSBzYW1wbGluZ1Njb3BlKHRoaXMpOwogICAgIAog
ICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZt
LmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwpAQCAtMTE2OSwxMSArMTEzNyw3IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICAgICAgcmV0dXJu
IHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjbG9zdXJlLm9sZENhbGxGcmFtZSk7
CiAKICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgotICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIHsK
LSAgICAgICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdl
dCgpKTsKLSAgICAgICAgcmVzdWx0ID0gY2xvc3VyZS5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVy
YXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1dGUoJnZtLCBjbG9zdXJlLnByb3RvQ2FsbEZyYW1l
KTsKLSAgICB9CisgICAgSlNWYWx1ZSByZXN1bHQgPSBjbG9zdXJlLmZ1bmN0aW9uRXhlY3V0YWJs
ZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+ZXhlY3V0ZSgmdm0sIGNsb3N1cmUucHJvdG9D
YWxsRnJhbWUpOwogCiAgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJs
ZWRQcm9maWxlcigpKQogICAgICAgICBwcm9maWxlci0+ZGlkRXhlY3V0ZShjbG9zdXJlLm9sZENh
bGxGcmFtZSwgY2xvc3VyZS5mdW5jdGlvbik7CkBAIC0xMTg0LDcgKzExNDgsNiBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFtZUNsCiBKU1ZhbHVlIEludGVycHJldGVyOjpl
eGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1
ZSB0aGlzVmFsdWUsIEpTU2NvcGUqIHNjb3BlKQogewogICAgIFZNJiB2bSA9ICpzY29wZS0+dm0o
KTsKLSAgICBTYW1wbGluZ1Njb3BlIHNhbXBsaW5nU2NvcGUodGhpcyk7CiAgICAgCiAgICAgQVNT
RVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOwogICAgIEFTU0VSVCghdm0uZXhj
ZXB0aW9uKCkpOwpAQCAtMTI4MCwxMSArMTI0Myw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgcHJvZmlsZXItPndpbGxFeGVjdXRlKGNhbGxGcmFt
ZSwgZXZhbC0+c291cmNlVVJMKCksIGV2YWwtPmZpcnN0TGluZSgpLCBldmFsLT5zdGFydENvbHVt
bigpKTsKIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0g
ICAgewotICAgICAgICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBs
ZXIuZ2V0KCkpOwotICAgICAgICByZXN1bHQgPSBldmFsLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4
ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwotICAgIH0KKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IGV2YWwtPmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7
CiAKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVy
KCkpCiAgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgZXZhbC0+c291cmNl
VVJMKCksIGV2YWwtPmZpcnN0TGluZSgpLCBldmFsLT5zdGFydENvbHVtbigpKTsKQEAgLTEyOTUs
NyArMTI1NCw2IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU01vZHVsZUVudmlyb25tZW50KiBzY29wZSkK
IHsKICAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7Ci0gICAgU2FtcGxpbmdTY29wZSBzYW1wbGlu
Z1Njb3BlKHRoaXMpOwogCiAgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZt
KCkpOwogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwpAQCAtMTMyOCwxMSArMTI4Niw3IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3IKICAgICAgICAgcHJvZmls
ZXItPndpbGxFeGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1
dGFibGUtPmZpcnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKIAogICAgIC8v
IEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgewotICAgICAgICBT
YW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOwotICAg
ICAgICByZXN1bHQgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZt
LCAmcHJvdG9DYWxsRnJhbWUpOwotICAgIH0KKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWN1dGFi
bGUtPmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CiAK
ICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkp
CiAgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291
cmNlVVJMKCksIGV4ZWN1dGFibGUtPmZpcnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVt
bigpKTsKQEAgLTEzNzIsNDAgKzEzMjYsNCBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRl
cjo6ZGVidWcoQ2FsCiAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKTsKIH0g
ICAgCiAKLXZvaWQgSW50ZXJwcmV0ZXI6OmVuYWJsZVNhbXBsZXIoKQotewotI2lmIEVOQUJMRShP
UENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFtX3NhbXBsZXIpIHsKLSAgICAgICAgbV9zYW1wbGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxTYW1wbGluZ1Rvb2w+KHRoaXMpOwotICAgICAgICBtX3NhbXBs
ZXItPnNldHVwKCk7Ci0gICAgfQotI2VuZGlmCi19Ci12b2lkIEludGVycHJldGVyOjpkdW1wU2Ft
cGxlRGF0YShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0jaWYgRU5BQkxFKE9QQ09ERV9TQU1QTElORykK
LSAgICBpZiAobV9zYW1wbGVyKQotICAgICAgICBtX3NhbXBsZXItPmR1bXAoZXhlYyk7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSNlbmRpZgotfQotdm9pZCBJbnRlcnByZXRlcjo6
c3RhcnRTYW1wbGluZygpCi17Ci0jaWYgRU5BQkxFKFNBTVBMSU5HX1RIUkVBRCkKLSAgICBpZiAo
IW1fc2FtcGxlRW50cnlEZXB0aCkKLSAgICAgICAgU2FtcGxpbmdUaHJlYWQ6OnN0YXJ0KCk7Ci0K
LSAgICBtX3NhbXBsZUVudHJ5RGVwdGgrKzsKLSNlbmRpZgotfQotdm9pZCBJbnRlcnByZXRlcjo6
c3RvcFNhbXBsaW5nKCkKLXsKLSNpZiBFTkFCTEUoU0FNUExJTkdfVEhSRUFEKQotICAgIG1fc2Ft
cGxlRW50cnlEZXB0aC0tOwotICAgIGlmICghbV9zYW1wbGVFbnRyeURlcHRoKQotICAgICAgICBT
YW1wbGluZ1RocmVhZDo6c3RvcCgpOwotI2VuZGlmCi19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJl
Z2lzdGVyOwogICAgIGNsYXNzIEpTU2NvcGU7Ci0gICAgY2xhc3MgU2FtcGxpbmdUb29sOwogICAg
IHN0cnVjdCBDYWxsRnJhbWVDbG9zdXJlOwogICAgIHN0cnVjdCBIYW5kbGVySW5mbzsKICAgICBz
dHJ1Y3QgSW5zdHJ1Y3Rpb247CkBAIC0yMjEsOCArMjIwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgdm9pZCBnZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwg
cHRyZGlmZl90JiBmaXJzdFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJn
Yyk7CiAgICAgICAgIAotICAgICAgICBTYW1wbGluZ1Rvb2wqIHNhbXBsZXIoKSB7IHJldHVybiBt
X3NhbXBsZXIuZ2V0KCk7IH0KLQogICAgICAgICBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHVu
d2luZChWTSYsIENhbGxGcmFtZSomLCBFeGNlcHRpb24qLCBVbndpbmRTdGFydCk7CiAgICAgICAg
IHZvaWQgbm90aWZ5RGVidWdnZXJPZkV4Y2VwdGlvblRvQmVUaHJvd24oQ2FsbEZyYW1lKiwgRXhj
ZXB0aW9uKik7CiAgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERl
YnVnSG9va0lEKTsKQEAgLTIzMywxMCArMjMwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsK
IAotICAgICAgICB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7Ci0gICAgICAg
IHZvaWQgc3RhcnRTYW1wbGluZygpOwotICAgICAgICB2b2lkIHN0b3BTYW1wbGluZygpOwotCiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcENhbGxGcmFtZShDYWxsRnJhbWUqKTsK
IAogICAgICAgICB2b2lkIGdldFN0YWNrVHJhY2UoVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRz
LCBzaXplX3QgbWF4U3RhY2tTaXplID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSk7CkBAIC0yNTQsMTAgKzI0Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAg
ICAgYm9vbCBpc0NhbGxCeXRlY29kZShPcGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNvZGUgPT0g
Z2V0T3Bjb2RlKG9wX2NhbGwpIHx8IG9wY29kZSA9PSBnZXRPcGNvZGUob3BfY29uc3RydWN0KSB8
fCBvcGNvZGUgPT0gZ2V0T3Bjb2RlKG9wX2NhbGxfZXZhbCkgfHwgb3Bjb2RlID09IGdldE9wY29k
ZShvcF90YWlsX2NhbGwpOyB9CiAKLSAgICAgICAgdm9pZCBlbmFibGVTYW1wbGVyKCk7Ci0gICAg
ICAgIGludCBtX3NhbXBsZUVudHJ5RGVwdGg7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTYW1w
bGluZ1Rvb2w+IG1fc2FtcGxlcjsKLQogICAgICAgICBWTSYgbV92bTsKICAgICAgICAgSlNTdGFj
ayBtX3N0YWNrOwogICAgICAgICBpbnQgbV9lcnJvckhhbmRsaW5nTW9kZVJlZW50cnk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZp
c2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw2ICsxNDgsMTYgQEAgQXNzZW1ibHlIZWxwZXJz
OjpKdW1wIEFzc2VtYmx5SGVscGVyczo6YgogICAgICAgICBUcnVzdGVkSW1tMzIoRmFzdFR5cGVk
QXJyYXkpKTsKIH0KIAordm9pZCBBc3NlbWJseUhlbHBlcnM6OmluY3JlbWVudFN1cGVyU2FtcGxl
ckNvdW50KCkKK3sKKyAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcyhi
aXR3aXNlX2Nhc3Q8Y29uc3Qgdm9pZCo+KCZnX3N1cGVyU2FtcGxlckNvdW50KSkpOworfQorCit2
b2lkIEFzc2VtYmx5SGVscGVyczo6ZGVjcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKQoreworICAg
IHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKGJpdHdpc2VfY2FzdDxjb25z
dCB2b2lkKj4oJmdfc3VwZXJTYW1wbGVyQ291bnQpKSk7Cit9CisgICAgCiB2b2lkIEFzc2VtYmx5
SGVscGVyczo6cHVyaWZ5TmFOKEZQUlJlZyBmcHIpCiB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgbm90TmFOID0gYnJhbmNoRG91YmxlKERvdWJsZUVxdWFsLCBmcHIsIGZwcik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE5
ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZv
clNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCiAjaW5j
bHVkZSAiUmVnaXN0ZXJTZXQuaCIKKyNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRl
ICJUeXBlb2ZUeXBlLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApAQCAtMTAwNiw2ICsxMDA3LDkgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGppdFJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigp
OworCisgICAgdm9pZCBpbmNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpOworICAgIHZvaWQgZGVj
cmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKICAgICAKICAgICB2b2lkIHB1cmlmeU5hTihGUFJS
ZWcpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxOTgzNDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgogI2luY2x1ZGUg
IlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCi0jaW5jbHVkZSAi
U2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU3Rh
Y2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUg
Ik9wY29kZS5oIgogI2luY2x1ZGUgIlBDVG9Db2RlT3JpZ2luTWFwLmgiCiAjaW5jbHVkZSAiUmVz
dWx0VHlwZS5oIgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlVudXNlZFBv
aW50ZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCi0jaW5jbHVkZSAiU2Ft
cGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCShyZXZpc2lvbiAxOTgzNDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUgIlNh
bXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJldmlzaW9uIDE5ODM0NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUgIlNhbXBs
aW5nVG9vbC5oIgogI2luY2x1ZGUgIlNldHVwVmFyYXJnc0ZyYW1lLmgiCiAjaW5jbHVkZSAiU3Rh
Y2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5o
IgogI2luY2x1ZGUgIlNldHVwVmFyYXJnc0ZyYW1lLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1l
bnQuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlJl
cGF0Y2guaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJTdXBlclNh
bXBsZXIuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUeXBlUHJv
ZmlsZXJMb2cuaCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIKQEAgLTEwMzQsNiArMTAzNSw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QKIAogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiBleGVjLCB2b2lk
KiByZWdleHBQdHIpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUo
ZmFsc2UpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgIFJlZ0V4cCogcmVnZXhwID0gc3RhdGljX2Nhc3Q8
UmVnRXhwKj4ocmVnZXhwUHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUg
IlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgPHd0
Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTk4MzQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKLSNpbmNsdWRlICJTYW1wbGluZ1Rv
b2wuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1
bWVudHNUYWJsZS5oIgogI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw2IEBACiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXku
aCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKLSNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIK
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVh
a0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NTQsOCArMTY1
NCw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBDb25zdHJ1Y3Rv
cktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgVGhp
c1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwKICAgICBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBl
OjpOb25lKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJQYXJzaW5nIik7
Ci0KICAgICBBU1NFUlQoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAg
ICAgaWYgKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewogICAgICAgICBQ
YXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmlj
dE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0
aGlzVERaTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2
aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiSW5mZXJyZWRW
YWx1ZS5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNp
bmNsdWRlICJUeXBlU2V0LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzks
NyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKKyNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNs
dWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvZHRv
YS5oPgpAQCAtNjksNiArNzAsNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogI2lmbmRl
ZiBOREVCVUcKICAgICAgICAgRGlzYWxsb3dHQzo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCisgICAg
ICAgIGluaXRpYWxpemVTdXBlclNhbXBsZXIoKTsKICAgICAgICAgV1RGVGhyZWFkRGF0YSYgdGhy
ZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKICAgICAgICAgdGhyZWFkRGF0YS5zZXRTYXZlZExh
c3RTdGFja1RvcCh0aHJlYWREYXRhLnN0YWNrKCkub3JpZ2luKCkpOwogICAgIH0pOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTk4MzQ0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNDgsNiArMzQ4LDggQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAg
ICAgdihib29sLCBkdW1wTW9kdWxlUmVjb3JkLCBmYWxzZSwgbnVsbHB0cikgXAogICAgIHYoYm9v
bCwgZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSwgZmFsc2UsIG51bGxwdHIpIFwKICAgICB2KGJvb2ws
IGV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyLCBmYWxzZSwgImV4cG9zZSB0aGUgaW50ZXJuYWwg
bW9kdWxlIGxvYWRlciBvYmplY3QgdG8gdGhlIGdsb2JhbCBzcGFjZSBmb3IgZGVidWdnaW5nIikg
XAorICAgIFwKKyAgICB2KGJvb2wsIHVzZVN1cGVyU2FtcGxlciwgZmFsc2UsIG51bGxwdHIpCiAK
IGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAkocmV2
aXNpb24gMTk4MzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2Fj
aGVkUmVzdWx0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUmVn
RXhwQ2FjaGVkUmVzdWx0X2gKIAogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgorI2luY2x1ZGUg
IlN1cGVyU2FtcGxlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9u
IDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNB
cnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4ICs1Miw2IEBAIEFMV0FZU19JTkxJTkUgSlNB
cnJheSogY3JlYXRlUmVnRXhwTWF0Y2gKICAgICBWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTU3RyaW5nKiBpbnB1dCwgY29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlLAogICAg
IFJlZ0V4cCogcmVnRXhwLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTWF0Y2hSZXN1bHQmIHJlc3Vs
dCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiY3JlYXRlUmVnRXhwTWF0
Y2hlc0FycmF5Iik7Ci0gICAgCiAgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRz
OwogICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2hJbmxpbmUodm0sIGlucHV0VmFsdWUs
IHN0YXJ0T2Zmc2V0LCBzdWJwYXR0ZXJuUmVzdWx0cyk7CiAgICAgaWYgKHBvc2l0aW9uID09IC0x
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcg
QEAKICNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlJlZ0V4cE1hdGNo
ZXNBcnJheS5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgorI2luY2x1ZGUgIlN1cGVyU2Ft
cGxlci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx1bmljb2RlL3Vjb25maWcu
aD4KICNpbmNsdWRlIDx1bmljb2RlL3Vub3JtLmg+CkBAIC00NDcsNiArNDQ4LDggQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogCiBzdGF0aWMgQUxXQVlTX0lOTElO
RSBFbmNvZGVkSlNWYWx1ZSByZW1vdmVVc2luZ1JlZ0V4cFNlYXJjaChFeGVjU3RhdGUqIGV4ZWMs
IEpTU3RyaW5nKiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgc291cmNlLCBSZWdFeHAqIHJlZ0V4cCkK
IHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAg
CiAgICAgc2l6ZV90IGxhc3RJbmRleCA9IDA7CiAgICAgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiA9
IDA7CiAKQEAgLTE0NjgsNyArMTQ3MSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKCJEb2luZyBzdWJzdHJpbmdpbmciKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1Zh
bHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOCwxNiAr
NTI4LDYgQEAgdm9pZCBWTTo6cmVzZXREYXRlQ2FjaGUoKQogICAgIGRhdGVJbnN0YW5jZUNhY2hl
LnJlc2V0KCk7CiB9CiAKLXZvaWQgVk06OnN0YXJ0U2FtcGxpbmcoKQotewotICAgIGludGVycHJl
dGVyLT5zdGFydFNhbXBsaW5nKCk7Ci19Ci0KLXZvaWQgVk06OnN0b3BTYW1wbGluZygpCi17Ci0g
ICAgaW50ZXJwcmV0ZXItPnN0b3BTYW1wbGluZygpOwotfQotCiB2b2lkIFZNOjp3aGVuSWRsZShz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY2FsbGJhY2spCiB7CiAgICAgaWYgKCFlbnRyeVNjb3BlKSB7
CkBAIC01NzUsMTQgKzU2NSw2IEBAIHZvaWQgVk06OmRlbGV0ZUFsbENvZGUoKQogICAgIH0pOwog
fQogCi12b2lkIFZNOjpkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgaW50
ZXJwcmV0ZXItPmR1bXBTYW1wbGVEYXRhKGV4ZWMpOwotI2lmIEVOQUJMRShBU1NFTUJMRVIpCi0g
ICAgRXhlY3V0YWJsZUFsbG9jYXRvcjo6ZHVtcFByb2ZpbGUoKTsKLSNlbmRpZgotfQotCiBTb3Vy
Y2VQcm92aWRlckNhY2hlKiBWTTo6YWRkU291cmNlUHJvdmlkZXJDYWNoZShTb3VyY2VQcm92aWRl
ciogc291cmNlUHJvdmlkZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBzb3VyY2VQcm92aWRl
ckNhY2hlTWFwLmFkZChzb3VyY2VQcm92aWRlciwgbnVsbHB0cik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE5ODM0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1Myw5ICs1NTMsNiBAQCBwdWJs
aWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc2V0RGF0ZUNhY2hlKCk7CiAKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHN0b3BTYW1wbGluZygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZHVtcFNhbXBsZURhdGEoRXhlY1N0YXRlKik7CiAgICAgUmVnRXhwQ2FjaGUqIHJlZ0V4cENhY2hl
KCkgeyByZXR1cm4gbV9yZWdFeHBDYWNoZTsgfQogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykK
ICAgICB2b2lkIGFkZFJlZ0V4cFRvVHJhY2UoUmVnRXhwKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE5ODM0NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJZYXJySW50ZXJwcmV0ZXIuaCIKIAorI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1
ZGUgIllhcnIuaCIKICNpbmNsdWRlICJZYXJyQ2Fub25pY2FsaXplLmgiCiAjaW5jbHVkZSA8d3Rm
L0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CkBAIC0yMDM0LDYgKzIwMzUsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tCiAKIHVuc2lnbmVkIGludGVycHJldChCeXRl
Y29kZVBhdHRlcm4qIGJ5dGVjb2RlLCBjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQqIG91dHB1dCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBs
ZXJTY29wZShmYWxzZSk7CiAgICAgaWYgKGlucHV0LmlzOEJpdCgpKQogICAgICAgICByZXR1cm4g
SW50ZXJwcmV0ZXI8TENoYXI+KGJ5dGVjb2RlLCBvdXRwdXQsIGlucHV0LmNoYXJhY3RlcnM4KCks
IGlucHV0Lmxlbmd0aCgpLCBzdGFydCkuaW50ZXJwcmV0KCk7CiAgICAgcmV0dXJuIEludGVycHJl
dGVyPFVDaGFyPihieXRlY29kZSwgb3V0cHV0LCBpbnB1dC5jaGFyYWN0ZXJzMTYoKSwgaW5wdXQu
bGVuZ3RoKCksIHN0YXJ0KS5pbnRlcnByZXQoKTsKQEAgLTIwNDEsMTEgKzIwNDMsMTMgQEAgdW5z
aWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiogYnl0ZQogCiB1bnNpZ25lZCBpbnRlcnBy
ZXQoQnl0ZWNvZGVQYXR0ZXJuKiBieXRlY29kZSwgY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25l
ZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCogb3V0cHV0KQogeworICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICByZXR1cm4gSW50ZXJw
cmV0ZXI8TENoYXI+KGJ5dGVjb2RlLCBvdXRwdXQsIGlucHV0LCBsZW5ndGgsIHN0YXJ0KS5pbnRl
cnByZXQoKTsKIH0KIAogdW5zaWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiogYnl0ZWNv
ZGUsIGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQqIG91dHB1dCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CiAgICAgcmV0dXJuIEludGVycHJldGVyPFVDaGFyPihieXRlY29kZSwgb3V0
cHV0LCBpbnB1dCwgbGVuZ3RoLCBzdGFydCkuaW50ZXJwcmV0KCk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIyIEBACisyMDE2LTAzLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CisKKyAgICAgICAgUmVwbGFjZSBhbGwgb2YgdGhlIHZhcmlvdXMgbm9uLXdvcmtpbmcgYW5kIG5v
bi1jb21waWxpbmcgc2FtcGxpbmcgcHJvZmlsZXIgaGFja3Mgd2l0aCBhIHNpbmdsZSBzdXBlciBo
YWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU1
NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIHJlcGxhY2VzIGFsbCBvZiBvdXIgdmFyaW91cyBhZCBob2MgcHJvZmlsaW5nIGhhY2tz
IHdpdGggYSBzaW5nbGUgYWQgaG9jIHByb2ZpbGluZyBoYWNrLgorICAgICAgICBUaGF0IG5lZWRz
IHRvIGJlIGFibGUgdG8gc2xlZXAgYSB0aHJlYWQsIHNvIEkgYWRkZWQgYSBwb3J0YWJsZSB3YXkg
dG8gZG8gaXQuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlbW92ZXMgYSBidW5jaCBvZiBFTkFCTEUg
ZmxhZ3MgZm9yIGFsbCBvZiB0aGUgb2xkIG5vbi13b3JraW5nIGhhY2tzLgorCisgICAgICAgICog
d3RmL0N1cnJlbnRUaW1lLmNwcDoKKyAgICAgICAgKFdURjo6Y3VycmVudENQVVRpbWUpOgorICAg
ICAgICAoV1RGOjpzbGVlcCk6CisgICAgICAgICogd3RmL0N1cnJlbnRUaW1lLmg6CisgICAgICAg
IChXVEY6OnNsZWVwTVMpOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDE2LTAzLTE2
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjE5ODIzNSwgcjE5ODI0MCwgcjE5ODI0MSwgYW5kCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9DdXJyZW50VGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ3Vy
cmVudFRpbWUuY3BwCShyZXZpc2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9DdXJyZW50
VGltZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDkgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJDdXJyZW50VGltZS5oIgogCisjaW5jbHVkZSAiQ29uZGl0aW9uLmgi
CisjaW5jbHVkZSAiTG9jay5oIgorCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPG1hY2gvbWFj
aC5oPgogI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+CkBAIC0zMjcsNCArMzMwLDE3IEBAIHN0
ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgY3VycmVudENQVVRpbWUKICNlbmRpZgogfQogCit2b2lk
IHNsZWVwKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICAvLyBJdCdzIHZlcnkgY2hhbGxlbmdpbmcgdG8g
ZmluZCBwb3J0YWJsZSB3YXlzIG9mIHNsZWVwaW5nIGZvciBsZXNzIHRoYW4gYSBzZWNvbmQuIE9u
IFVOSVgsIHlvdSB3YW50IHRvCisgICAgLy8gdXNlIHVzbGVlcCgpIGJ1dCBpdCdzIGhhcmQgdG8g
I2luY2x1ZGUgaXQgaW4gYSBwb3J0YWJsZSB3YXkgKHlvdSdkIHRoaW5rIGl0J3MgaW4gdW5pc3Rk
LmgsIGJ1dCB0aGVuCisgICAgLy8geW91J2QgYmUgd3Jvbmcgb24gc29tZSBPU1ggU0RLcykuIEFs
c28sIHVzbGVlcCgpIHdvbid0IHNhdmUgeW91IG9uIFdpbmRvd3MuIEhlbmNlLCBib3R0b21pbmcg
b3V0IGluCisgICAgLy8gbG9jayBjb2RlLCB3aGljaCBhbHJlYWR5IHNvbHZlcyB0aGUgc2xlZXBp
bmcgcHJvYmxlbSwgaXMgcHJvYmFibHkgZm9yIHRoZSBiZXN0LgorICAgIAorICAgIExvY2sgZmFr
ZUxvY2s7CisgICAgQ29uZGl0aW9uIGZha2VDb25kaXRpb247CisgICAgTG9ja0hvbGRlciBmYWtl
TG9ja2VyKGZha2VMb2NrKTsKKyAgICBmYWtlQ29uZGl0aW9uLndhaXRVbnRpbE1vbm90b25pY0Ns
b2NrU2Vjb25kcyhmYWtlTG9jaywgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKyB2YWx1
ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93dGYvQ3VycmVu
dFRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DdXJyZW50VGltZS5oCShyZXZp
c2lvbiAxOTgzNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9DdXJyZW50VGltZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NiwxMiArNjYsMjEgQEAgaW5saW5lIGRvdWJsZSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbQogLy8gdGhhbiBhIG1pbGxpc2Vjb25kLgogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6
Y2hyb25vOjptaWNyb3NlY29uZHMgY3VycmVudENQVVRpbWUoKTsKIAorV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgc2xlZXAoZG91YmxlKTsKKworaW5saW5lIHZvaWQgc2xlZXBNUyhkb3VibGUgdmFs
dWUpCit7CisgICAgc2xlZXAodmFsdWUgLyAxMDAwLjApOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
VEYKIAordXNpbmcgV1RGOjpjdXJyZW50Q1BVVGltZTsKIHVzaW5nIFdURjo6Y3VycmVudFRpbWU7
CiB1c2luZyBXVEY6OmN1cnJlbnRUaW1lTVM7CiB1c2luZyBXVEY6Om1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZTsKIHVzaW5nIFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lTVM7Ci11
c2luZyBXVEY6OmN1cnJlbnRDUFVUaW1lOwordXNpbmcgV1RGOjpzbGVlcDsKK3VzaW5nIFdURjo6
c2xlZXBNUzsKIAogI2VuZGlmIC8vIEN1cnJlbnRUaW1lX2gKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2
aXNpb24gMTk4MzQ0KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5
KQpAQCAtNjc3LDE5ICs2NzcsNiBAQAogI2RlZmluZSBVU0VfU1lTVEVNX01BTExPQyAxCiAjZW5k
aWYKIAotI2RlZmluZSBFTkFCTEVfREVCVUdfV0lUSF9CUkVBS1BPSU5UIDAKLSNkZWZpbmUgRU5B
QkxFX1NBTVBMSU5HX0NPVU5URVJTIDAKLSNkZWZpbmUgRU5BQkxFX1NBTVBMSU5HX0ZMQUdTIDAK
LSNkZWZpbmUgRU5BQkxFX1NBTVBMSU5HX1JFR0lPTlMgMAotI2RlZmluZSBFTkFCTEVfT1BDT0RF
X1NBTVBMSU5HIDAKLSNkZWZpbmUgRU5BQkxFX0NPREVCTE9DS19TQU1QTElORyAwCi0jaWYgRU5B
QkxFKENPREVCTE9DS19TQU1QTElORykgJiYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0jZXJy
b3IgIkNPREVCTE9DS19TQU1QTElORyByZXF1aXJlcyBPUENPREVfU0FNUExJTkciCi0jZW5kaWYK
LSNpZiBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKSB8fCBFTkFCTEUoU0FNUExJTkdfRkxBR1MpIHx8
IEVOQUJMRShTQU1QTElOR19SRUdJT05TKQotI2RlZmluZSBFTkFCTEVfU0FNUExJTkdfVEhSRUFE
IDEKLSNlbmRpZgotCiAjaWYgIWRlZmluZWQoVVNFX0pTVkFMVUU2NCkgJiYgIWRlZmluZWQoVVNF
X0pTVkFMVUUzMl82NCkKICNpZiAoQ1BVKFg4Nl82NCkgJiYgKE9TKFVOSVgpIHx8IE9TKFdJTkRP
V1MpKSkgXAogICAgIHx8IChDUFUoSUE2NCkgJiYgIUNQVShJQTY0XzMyKSkgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274314</attachid>
            <date>2016-03-17 12:28:36 -0700</date>
            <delta_ts>2016-03-17 13:43:23 -0700</delta_ts>
            <desc>the patch?</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>130903</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3NCBA
QAorMjAxNi0wMy0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFJlcGxhY2UgYWxsIG9mIHRoZSB2YXJpb3VzIG5vbi13b3JraW5nIGFuZCBub24tY29tcGlsaW5n
IHNhbXBsaW5nIHByb2ZpbGVyIGhhY2tzIHdpdGggYSBzaW5nbGUgc3VwZXIgaGFjaworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NTYxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBWTSBuZWVkcyBzb21l
IGludGVybmFsIHByb2ZpbGluZyBoYWNrcyBpbiBhZGRpdGlvbiB0byB0aGUgcHJvZmlsZXIocykg
dGhhdCB0aGUgdXNlciBzZWVzLCBiZWNhdXNlCisgICAgICAgIHlvdSBjYW4gc3F1ZWV6ZSBvdXQg
bW9yZSBmaWRlbGl0eSBpZiB5b3UncmUgd2lsbGluZyB0byBtYWtlIHNvbWUga2luZCBvZiBkZWFs
IHdpdGggdGhlIGRldmlsLiBQcmlvcgorICAgICAgICB0byB0aGlzIGNoYW5nZSBKU0MgaGFkIGEg
YnVuY2ggb2YgdGhlc2U6CisKKyAgICAgICAgLSBDb2RlQmxvY2sgc2FtcGxpbmcgcHJvZmlsZXIK
KyAgICAgICAgLSBCeXRlY29kZSBzYW1wbGluZyBwcm9maWxlcgorICAgICAgICAtIFNhbXBsaW5n
IGZsYWdzCisgICAgICAgIC0gU2FtcGxpbmcgcmVnaW9ucworICAgICAgICAtIFNvbWUgb3RoZXIg
c3R1ZmYKKworICAgICAgICBJIHRyaWVkIHVzaW5nIHRoZXNlIHJlY2VudGx5LiBUaGV5IGRpZG4n
dCBldmVuIGJ1aWxkLiBJbml0aWFsbHkgSSBmaXhlZCB0aGF0LCBidXQgdGhlbiBJIGZvdW5kIHRo
YXQKKyAgICAgICAgdGhlc2UgcHJvZmlsZXJzIGhhZCBzb21lIHNlcmlvdXMgYnVncyB0aGF0IG1h
ZGUgdGhlbSByZXBvcnQgYm9ndXMgcmVzdWx0cyAtIGxpa2UgdW5kZXJyZXBvcnRpbmcgdGhlCisg
ICAgICAgIHRpbWUgc3BlbnQgaW4gcmVnaW9ucyBvZiBjb2RlIGJ5IG1vcmUgdGhhbiAyeC4KKwor
ICAgICAgICBQYXJ0IG9mIHRoZSBwcm9ibGVtIGhlcmUgaXMgdGhhdCBhIHByb2ZpbGVyIGxvc2Vz
IGZpZGVsaXR5IGFzIGl0IGdhaW5zIHBvd2VyLiBUaGUgbW9yZSBnZW5lcmFsIGl0CisgICAgICAg
IHRyaWVzIHRvIGJlLCB0aGUgbW9yZSBjb2RlIGdldHMgZXhlY3V0ZWQgb24gdGhlIGhvdCBwYXRo
IGZvciB0aGUgcHJvZmlsZXIsIHdoaWNoIGluY3JlYXNpbmdseQorICAgICAgICBwZXJ0dXJicyB0
aGUgcmVzdWx0cy4gSSBiZWxpZXZlIHRoYXQncyB0aGUgcmVhc29uIGZvciB0aGUgdW5kZXJyZXBv
cnRpbmcgLSBjb2RlIHJhbiBzdWZmaWNpZW50bHkKKyAgICAgICAgc2xvd2VyLCBhbmQgaW4gYSBz
dWZmaWNpZW50bHkgZGlmZmVyZW50IHdheSB3aGVuIHByb2ZpbGluZywgdGhhdCB0aGUgcmVzdWx0
cyB3ZXJlIGp1c3Qgd3JvbmcuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYXR0YWNrcyB0aGlzIHBy
b2JsZW0gZGlyZWN0bHkgYnkgcmVwbGFjaW5nIGFsbCBvZiB0aGUgZGl2ZXJzZSBwcm9maWxpbmcg
aGFja3Mgd2l0aCBqdXN0CisgICAgICAgIG9uZSwgd2hpY2ggSSBjYWxsIHRoZSBTdXBlclNhbXBs
ZXIuIEl0IGNvbnNpc3RzIG9mIGV4YWN0bHkgb25lIGNvdW50ZXIuIFdoZW4gZW5hYmxlZCwgdGhl
IHNhbXBsZXIKKyAgICAgICAgd2lsbCBwZXJpb2RpY2FsbHkgcHJpbnQgKHZpYSBkYXRhTG9nKCkp
IHRoZSBwZXJjZW50YWdlIG9mIHNhbXBsZXMgdGhhdCBzYXcgYSBub24temVybyBjb3VudC4gQmVj
YXVzZQorICAgICAgICBpdCdzIHNvIHNpbXBsZSwgaXQgZ2l2ZXMgYmV0dGVyIGFjY3VyYWN5LiBU
aGlzIGNvbWVzIGFib3V0IGluIHR3byB3YXlzOgorCisgICAgICAgIC0gSXQgcnVucyBhdCBhIGxv
d2VyIHJhdGUuIFRoYXQncyBmaW5lIHNpbmNlIGl0J3Mgb25seSBjaGVja2luZyBvbmUgZmxhZy4g
WW91IGRvbid0IG5lZWQgYSBoaWdoIHJhdGUKKyAgICAgICAgICBmb3IganVzdCBvbmUgZmxhZy4K
KyAgICAgICAgCisgICAgICAgIC0gVGhlIGZhY3QgdGhhdCB0aGVyZSBpcyBvbmx5ICpvbmUqIGZs
YWcgbWVhbnMgdGhhdCB0aGUgdXNlciBtdXN0IGNob29zZSBhIGh5cG90aGVzaXMgYWJvdXQgd2hh
dCBpcworICAgICAgICAgIHNsb3cuIFRoaXMgdHVybnMgdGhlIHByb2JsZW0gb2YgcHJvZmlsaW5n
IGludG8gYSBoeXBvdGhlc2lzIHRlc3RpbmcgcHJvYmxlbSwgd2hpY2ggaXMgYW4gaW5oZXJlbnRs
eQorICAgICAgICAgIGxlc3MgZmxha3kga2luZCBvZiBleHBlcmltZW50IHRvIHJ1bi4KKyAgICAg
ICAgCisgICAgICAgIFRoZSBTdXBlclNhbXBsZXIgaXMgZW5hYmxlZCB3aXRoIGEgcnVudGltZSBm
bGFnIHJhdGhlciB0aGFuIGEgY29tcGlsZS10aW1lIGZsYWcsIHNvIGl0J3MgbXVjaCBsZXNzCisg
ICAgICAgIGxpa2VseSB0byBicmVhay4gVGhhdCBhbHNvIG1lYW5zIHRoYXQgeW91IGNhbiBlbmFi
bGUgaXQgd2l0aG91dCByZWJ1aWxkaW5nIHRoZSB1bml2ZXJzZS4gVGhlIG9sZAorICAgICAgICBz
YW1wbGVycyBhbGwgaGFkIEVOQUJMRSBmbGFncyBpbiBQbGF0Zm9ybS5oLCB3aGljaCB3YXMgcmF0
aGVyIHVuZm9ydHVuYXRlIGZvciBjb21waWxlIHRpbWVzLgorCisgICAgICAgIFN1cGVyU2FtcGxl
ciBzdXBwb3J0cyBib3RoIEpJVCBhbmQgQysrIHVzZXJzLiBDKysgdXNlcnMgc2hvdWxkIHVzZSBT
dXBlclNhbXBsZXJTY29wZS4gVGhlIGRlZmF1bHQKKyAgICAgICAgaWRpb20gaXMgdG8gY3JlYXRl
IG9uZSBhbmQgcGFzcyAidHJ1ZSIgdG8gaXQuIFlvdSBjYW4gZGlzYWJsZSBhIHNjb3BlIGJ5IHBh
c3NpbmcgImZhbHNlIiBpbnN0ZWFkLgorICAgICAgICBUaGlzIHBhdGNoIHB1dHMgYSBidW5jaCBv
ZiBzY29wZXMgaW4gcGxhY2VzIEkgY2FyZSBhYm91dC4gSSB0aGluayBpdCdzIHByb2JhYmx5IE9L
IGlmIHBlb3BsZSBjaGVjayBpbgorICAgICAgICB0aGVzZSBkZWFjdGl2YXRlZCBzY29wZXMuIFRo
YXQgbWFrZXMgaXQgY29udmVuaWVudCB0byByZXRlc3QgdGhpbmdzIHdlJ3ZlIHRlc3RlZCBwcmV2
aW91c2x5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9TYW1w
bGluZ1Rvb2wuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5o
OiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjppbml0aWFsaXplU3VwZXJTYW1wbGVyKToKKyAgICAgICAgKEpTQzo6cHJp
bnRTdXBlclNhbXBsZXJTdGF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpTdXBlclNhbXBsZXJTY29wZTo6U3VwZXJTYW1wbGVyU2Nv
cGUpOgorICAgICAgICAoSlNDOjpTdXBlclNhbXBsZXJTY29wZTo6flN1cGVyU2FtcGxlclNjb3Bl
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+Ojpmb3JBbGxWYWx1ZXMpOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpjbG9iYmVyU3RydWN0dXJlcyk6Cisg
ICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OnBlcmZvcm1Bcmd1bWVudHNFbGltaW5hdGlvbik6CisgICAgICAgICogZGZnL0RG
R0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZv
cm1CYWNrd2FyZHNQcm9wYWdhdGlvbik6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwYXJzZSk6CisgICAgICAgICogZGZnL0RGR0NGQVBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtQ0ZBKToKKyAgICAgICAgKiBkZmcv
REZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9y
bUNGR1NpbXBsaWZpY2F0aW9uKToKKyAgICAgICAgKiBkZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0aHJlYWRpbmdQaGFzZTo6ZnJlZVVubmVj
ZXNzYXJ5Tm9kZXMpOgorICAgICAgICAoSlNDOjpERkc6OkNQU1JldGhyZWFkaW5nUGhhc2U6OmNh
bm9uaWNhbGl6ZUxvY2Fsc0luQmxvY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVh
ZGluZ1BoYXNlOjpwcm9wYWdhdGVQaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtQ1BT
UmV0aHJlYWRpbmcpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6cGVyZm9ybUxvY2FsQ1NFKToKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtR2xv
YmFsQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ2xlYW5VcFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpwZXJmb3JtQ2xlYW5VcCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtQ29uc3RhbnRGb2xkaW5nKToK
KyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpwZXJmb3JtQ29uc3RhbnRIb2lzdGluZyk6CisgICAgICAgICogZGZnL0RGR0NyaXRp
Y2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1Dcml0
aWNhbEVkZ2VCcmVha2luZyk6CisgICAgICAgICogZGZnL0RGR0RDRVBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpwZXJmb3JtRENFKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1GaXh1cCk6CisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZGV0aHJlYWQpOgor
ICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6cGVyZm9ybUludGVnZXJDaGVja0NvbWJpbmluZyk6CisgICAgICAgICogZGZn
L0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpwZXJmb3JtSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSW52
YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVy
Zm9ybUludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29t
cGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAg
KiBkZmcvREZHTElDTVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtTElDTSk6
CisgICAgICAgICogZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1MaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlv
blBoYXNlKToKKyAgICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgICogZGZn
L0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpw
ZXJmb3JtTG9vcFByZUhlYWRlckNyZWF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTWF4aW1hbEZs
dXNoSW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1NYXhpbWFs
Rmx1c2hJbnNlcnRpb24pOgorICAgICAgICAqIGRmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtTW92SGludFJlbW92YWwpOgorICAgICAgICAq
IGRmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpwZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMpOgorICAgICAgICAqIGRmZy9ERkdP
U1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9y
bU9TUkVudHJ5cG9pbnRDcmVhdGlvbik6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxl
ci5jcHA6CisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1PYmplY3RBbGxvY2F0aW9uU2lua2luZyk6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdQaGFudG9t
SW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1QaGFudG9tSW5z
ZXJ0aW9uKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
UGxhbjo6Y29tcGlsZUluVGhyZWFkKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvbkluamVj
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtUHJlZGljdGlvbkluamVj
dGlvbik6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtUHJlZGljdGlvblByb3BhZ2F0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OnBlcmZvcm1QdXRTdGFja1NpbmtpbmcpOgorICAgICAgICAqIGRmZy9ERkdTU0FDb252ZXJzaW9u
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1TU0FDb252ZXJzaW9uKToKKyAg
ICAgICAgKiBkZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
cGVyZm9ybVNTQUxvd2VyaW5nKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJm
b3JtU3RhY2tMYXlvdXQpOgorICAgICAgICAqIGRmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVz
dGltYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVN0YXRpY0V4ZWN1
dGlvbkNvdW50RXN0aW1hdGlvbik6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2Vy
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtRmFzdFN0b3JlQmFycmll
ckluc2VydGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybUdsb2JhbFN0b3JlQmFycmll
ckluc2VydGlvbik6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1TdHJlbmd0aFJlZHVjdGlvbik6CisgICAgICAg
ICogZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFzc2VydElzUmVnaXN0ZXJlZCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y2xvYmJlcik6CisgICAgICAgIChKU0M6
OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW5zaXRpb24pOgorICAgICAg
ICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9ucyk6
CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VTbG93KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZU5vdFRvcCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJTbG93KToKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjb250YWlucyk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdWJzZXRPZik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdXBlcnNldE9mKToKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvdmVybGFwcyk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZXF1YWxzU2xvdyk6CisgICAgICAgICogZGZnL0RG
R1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwZXJm
b3JtU3RydWN0dXJlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJ
bmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVRpZXJVcENoZWNr
SW5qZWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVR5cGVDaGVja0hvaXN0aW5nKToKKyAgICAgICAg
KiBkZmcvREZHVW5pZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9y
bVVuaWZpY2F0aW9uKToKKyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVZhcmFyZ3NGb3J3YXJkaW5nKToKKyAgICAg
ICAgKiBkZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpwZXJmb3JtVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvbik6CisgICAgICAgICog
ZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OnBlcmZvcm1XYXRjaHBvaW50Q29sbGVjdGlvbik6CisgICAgICAgICogZHluYmVuY2guY3BwOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlUmVnRXhwRXhlYyk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVSZWdFeHBUZXN0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVN0cmluZ1JlcGxhY2UpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4
KToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjb21waWxlRlRMT1NSRXhpdCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzdG9yZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjphYnNvbHV0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjppbmNyZW1lbnRTdXBl
clNhbXBsZXJDb3VudCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpkZWNyZW1lbnRTdXBl
clNhbXBsZXJDb3VudCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6YmFzZUluZGV4KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxv
YWQ4U2lnbkV4dDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWQ4WmVyb0V4dDMy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFuY2hvcik6CisgICAgICAgIChKU0M6OkZU
TDo6T3V0cHV0OjphYnNvbHV0ZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoK
KyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29s
bGVjdEFuZFN3ZWVwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdEltcGwpOgorICAgICAg
ICAoSlNDOjpIZWFwOjp6b21iaWZ5RGVhZE9iamVjdHMpOgorICAgICAgICAqIGhlYXAvTWFya2Vk
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCk6
CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpz
ZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChKU0M6OmNoZWNrZWRSZXR1cm4pOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ2FsbCk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmRlYnVnKToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdTY29wZTo6U2FtcGxp
bmdTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNhbXBsaW5nU2NvcGU6On5TYW1wbGlu
Z1Njb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZVNhbXBs
ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZHVtcFNhbXBsZURhdGEp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6c3RhcnRTYW1wbGluZyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpzdG9wU2FtcGxpbmcpOiBEZWxldGVk
LgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjppc0NhbGxCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpz
YW1wbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdEZhc3RUeXBlZEFycmF5KToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjppbmNyZW1lbnRTdXBlclNhbXBsZXJDb3Vu
dCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZGVjcmVtZW50U3VwZXJTYW1wbGVy
Q291bnQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnB1cmlmeU5hTik6CisgICAg
ICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAg
ICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAg
ICAgICogaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHA6CisgICAgICAgICogaml0L0pJVENhbGwu
Y3BwOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAg
ICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKiBqc2MuY3Bw
OgorICAgICAgICAocnVuV2l0aFNjcmlwdHMpOgorICAgICAgICAoanNjbWFpbik6CisgICAgICAg
ICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAg
IChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFs
aXplVGhyZWFkaW5nKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBy
dW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwTWF0
Y2hlc0FycmF5Lmg6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSk6Cisg
ICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZW1v
dmVVc2luZ1JlZ0V4cFNlYXJjaCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1YnN0
cmluZyk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpyZXNl
dERhdGVDYWNoZSk6CisgICAgICAgIChKU0M6OlZNOjp3aGVuSWRsZSk6CisgICAgICAgIChKU0M6
OlZNOjpkZWxldGVBbGxDb2RlKToKKyAgICAgICAgKEpTQzo6Vk06OmFkZFNvdXJjZVByb3ZpZGVy
Q2FjaGUpOgorICAgICAgICAoSlNDOjpWTTo6c3RhcnRTYW1wbGluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OlZNOjpzdG9wU2FtcGxpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWTTo6
ZHVtcFNhbXBsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAg
ICAgKEpTQzo6Vk06OnJlZ0V4cENhY2hlKToKKyAgICAgICAgKiB0ZXN0UmVnRXhwLmNwcDoKKyAg
ICAgICAgKHJ1bkZyb21GaWxlcyk6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpZYXJyOjppbnRlcnByZXQpOgorCiAyMDE2LTAzLTE2ICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBNZXRob2QgbmFtZXMgc2hvdWxkIG5v
dCBhcHBlYXIgaW4gdGhlIGxleGljYWwgc2NvcGUgb2YgdGhlIG1ldGhvZCdzIGJvZHkuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxOTgzNDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIx
MywxMiArMjEzLDEyIEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5jcHAKICAgICBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKICAgICBi
eXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAotICAgIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5j
cHAKICAgICBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKICAgICBieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHAKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCiAgICAgYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKICAgICBieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5jcHAKKyAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCiAgICAgYnl0ZWNv
ZGUvVG9UaGlzU3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL1RyYWNrZWRSZWZlcmVuY2VzLmNwcAog
ICAgIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2R5bmJlbmNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZHluYmVuY2guY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZHluYmVuY2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTAgKzUxLDEwIEBACiAjaW5jbHVkZSAi
SlNXQVNNTW9kdWxlLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1ZGUg
IlNhbXBsaW5nUHJvZmlsZXIuaCIKLSNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRl
ICJTdGFja1Zpc2l0b3IuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgi
CiAjaW5jbHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9n
LmgiCiAjaW5jbHVkZSAiV0FTTU1vZHVsZVBhcnNlci5oIgpAQCAtMTkxOSw4ICsxOTE5LDYgQEAg
c3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAgZmls
ZU5hbWUgPSBBU0NJSUxpdGVyYWwoIltDb21tYW5kIExpbmVdIik7CiAgICAgICAgIH0KIAotICAg
ICAgICB2bS5zdGFydFNhbXBsaW5nKCk7Ci0KICAgICAgICAgaWYgKG1vZHVsZSkgewogICAgICAg
ICAgICAgaWYgKCFwcm9taXNlKQogICAgICAgICAgICAgICAgIHByb21pc2UgPSBsb2FkQW5kRXZh
bHVhdGVNb2R1bGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHRC
dWZmZXIsIGZpbGVOYW1lKSk7CkBAIC0xOTM2LDIwICsxOTM0LDkgQEAgc3RhdGljIGJvb2wgcnVu
V2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAgZHVtcEV4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgICAgICB9CiAKLSAgICAgICAgdm0u
c3RvcFNhbXBsaW5nKCk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLT5jbGVh
ckV4Y2VwdGlvbigpOwogICAgIH0KIAotI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKLSAgICBT
YW1wbGluZ0ZsYWdzOjpzdG9wKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU0FNUExJTkdfUkVHSU9O
UykKLSAgICBTYW1wbGluZ1JlZ2lvbjo6ZHVtcCgpOwotI2VuZGlmCi0gICAgdm0uZHVtcFNhbXBs
ZURhdGEoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOwotI2lmIEVOQUJMRShTQU1QTElOR19D
T1VOVEVSUykKLSAgICBBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6ZHVtcCgpOwotI2VuZGlmCiAj
aWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogICAgIHZtLmR1bXBSZWdFeHBUcmFjZSgpOwogI2Vu
ZGlmCkBAIC0yMjEwLDYgKzIxOTcsOCBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpCiAgICAgICAgIHZtLT5oZWFwLmNvbGxlY3RBbGxHYXJiYWdlKCk7CiAgICAgfQogCisgICAg
cHJpbnRTdXBlclNhbXBsZXJTdGF0ZSgpOworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
ODksNyArNDg5LDYgQEAgc3RhdGljIGJvb2wgcnVuRnJvbUZpbGVzKEdsb2JhbE9iamVjdCogZwog
CiAgICAgZGVsZXRlW10gbGluZUJ1ZmZlcjsKIAotICAgIHZtLmR1bXBTYW1wbGVEYXRhKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAg
dm0uZHVtcFJlZ0V4cFRyYWNlKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzc2
LDYgKzM3Niw4IEBACiAJCTBGNDg1MzI5MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9w
Y29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ4NTMyNTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuY3BwICovOyB9Owog
CQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDg1MzI2MTg3REZERUMw
MDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBTb3Vy
Y2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ5M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwICovOyB9
OworCQkwRjRBMzhGOTFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNEEzOEY3MUM4RTEzREYw
MDE5MDMxOCAvKiBTdXBlclNhbXBsZXIuY3BwICovOyB9OworCQkwRjRBMzhGQTFDOEUxM0RGMDAx
OTAzMTggLyogU3VwZXJTYW1wbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjRBMzhGODFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0Qjk0
REMxN0I5RjA3NTAwREQwM0E0IC8qIFR5cGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRCOTREQjE3QjlGMDc1MDBERDAzQTQg
LyogVHlwZWRBcnJheUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjRDOTE2NjFDMjlGNEYyMDA0MzQxQTYgLyogQjNPcmlnaW5EdW1w
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRDOTE2
NTFDMjlGNEYyMDA0MzQxQTYgLyogQjNPcmlnaW5EdW1wLmggKi87IH07CiAJCTBGNERFMUNFMUM0
QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNERFMUNDMUM0QzFCNTQwMDRENkMxMSAv
KiBBaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCAqLzsgfTsKQEAgLTk4OCw4ICs5OTAsNiBAQAogCQkx
NDI5RDc3QzBFRDIwRDczMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjlENzdCMEVEMjBENzMwMEI4OTYxOSAv
KiBJbnRlcnByZXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTE0MjlEN0Q0MEVEMjEyODIwMEI4OTYxOSAvKiBJbnRlcnByZXRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDI5RDdEMzBFRDIx
MjgyMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuY3BwICovOyB9OwogCQkxNDI5RDg3ODBFRDIxQUNE
MDBCODk2MTkgLyogRXhjZXB0aW9uSGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDI5RDg3NzBFRDIxQUNEMDBCODk2MTkgLyogRXhjZXB0
aW9uSGVscGVycy5jcHAgKi87IH07Ci0JCTE0MjlEODg1MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1w
bGluZ1Rvb2wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQyOUQ4ODMwRUQyMUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5jcHAgKi87IH07Ci0J
CTE0MjlEODg2MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjlEODg0MEVEMjFDM0QwMEI4OTYx
OSAvKiBTYW1wbGluZ1Rvb2wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxNDI5RDhERDBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjlEOERCMEVE
MjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuY3BwICovOyB9OwogCQkxNDI5RDhERTBFRDIyMDVC
MDBCODk2MTkgLyogQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDI5RDhEQzBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQyOUQ5MkYw
RUQyMkQ3MDAwQjg5NjE5IC8qIEpJVC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDI5RDkyRDBFRDIyRDcwMDBCODk2MTkgLyogSklULmNwcCAqLzsg
fTsKQEAgLTI1MzAsNiArMjUzMCw4IEBACiAJCTBGNDg1MzI1MTg3REZERUMwMDgzQjY4NyAvKiBG
VExSZWNvdmVyeU9wY29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBGVExSZWNvdmVyeU9wY29kZS5jcHA7IHBhdGggPSBmdGwvRlRMUmVjb3ZlcnlPcGNvZGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ4NTMyNjE4N0RGREVDMDA4M0I2ODcg
LyogRlRMUmVjb3ZlcnlPcGNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
RlRMUmVjb3ZlcnlPcGNvZGUuaDsgcGF0aCA9IGZ0bC9GVExSZWNvdmVyeU9wY29kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ5M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291
cmNlUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291
cmNlUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjRBMzhGNzFD
OEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFN1cGVyU2FtcGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNEEzOEY4MUM4RTEzREYwMDE5MDMxOCAvKiBTdXBlclNhbXBsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VwZXJTYW1wbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNEI5NERCMTdCOUYwNzUwMEREMDNBNCAvKiBUeXBlZEFycmF5SW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlZEFycmF5SW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjRDOTE2NTFDMjlGNEYyMDA0MzQx
QTYgLyogQjNPcmlnaW5EdW1wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIz
T3JpZ2luRHVtcC5oOyBwYXRoID0gYjMvQjNPcmlnaW5EdW1wLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNERFMUNDMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3Bp
bGxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpckZpeE9idmlv
dXNTcGlsbHMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzEyNCw4ICszMTI2LDYgQEAKIAkJMTQyOUQ3RDMw
RUQyMTI4MjAwQjg5NjE5IC8qIEludGVycHJldGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEludGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMTQyOUQ4NUIwRUQyMThFOTAwQjg5NjE5IC8qIEpTU3RhY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0MjlEODc3MEVEMjFBQ0QwMEI4OTYxOSAvKiBFeGNlcHRpb25IZWxwZXJz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlvbkhlbHBl
cnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDI5RDg4MzBFRDIxQzNEMDBC
ODk2MTkgLyogU2FtcGxpbmdUb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNhbXBsaW5nVG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0
MjlEODg0MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdUb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0MjlEOERCMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTQyOUQ4REMwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gQ2FsbEZy
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRl
bnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQkxNDI5RDkyRDBFRDIyRDcwMDBCODk2
MTkgLyogSklULmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTc2LDggKzY1NzYsNiBAQAogCQkJ
CTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJCQkJMEZGNjBBQkYx
Njc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuY3BwICovLAogCQkJCTBGRjYwQUMw
MTY3NDBGODEwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmggKi8sCi0JCQkJMTQyOUQ4ODMw
RUQyMUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5jcHAgKi8sCi0JCQkJMTQyOUQ4ODQwRUQy
MUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5oICovLAogCQkJCTBGNTU0MUFGMTYxM0MxRkIw
MENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgKi8sCiAJCQkJMEY1NTQxQjAxNjEzQzFGQjAw
Q0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmggKi8sCiAJCQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5
Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmNwcCAqLywKQEAgLTY1ODgsNiArNjU4Niw4IEBACiAJCQkJ
MEY3NjZEMzcxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuaCAqLywKIAkJCQlCQ0NGMEQwQjBFRjBCOEE1MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1Yklu
Zm8uY3BwICovLAogCQkJCUJDQ0YwRDA3MEVGMEFBQjkwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHVi
SW5mby5oICovLAorCQkJCTBGNEEzOEY3MUM4RTEzREYwMDE5MDMxOCAvKiBTdXBlclNhbXBsZXIu
Y3BwICovLAorCQkJCTBGNEEzOEY4MUM4RTEzREYwMDE5MDMxOCAvKiBTdXBlclNhbXBsZXIuaCAq
LywKIAkJCQkwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLywK
IAkJCQkwRjJENERFNjE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggKi8sCiAJCQkJ
MEY5NTJBQkExQjQ4N0E3NzAwQzM2N0M1IC8qIFRyYWNrZWRSZWZlcmVuY2VzLmNwcCAqLywKQEAg
LTc4NTQsNiArNzg1NCw3IEBACiAJCQkJMEZCMzg3OTAxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpck9w
dGltaXplQmxvY2tPcmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5QkExNjZBRDM2MDAw
MEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcy
OUJCMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGF0aW9uS2luZC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0QTM4RkExQzhFMTNERjAwMTkwMzE4IC8qIFN1cGVyU2FtcGxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5QkMxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyQ29t
cGlsZWRCeXRlY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5QkQxNjZBRDM2MDAwMEY1
QkEzIC8qIFByb2ZpbGVyRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUJFMTY2
QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckV4ZWN1dGlvbkNvdW50ZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtNzkxMyw3ICs3OTE0LDYgQEAKIAkJCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyog
UnVudGltZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkMwNjExRjFBQTUxRTFDMDBCNEFE
QkEgLyogUnVudGltZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyMkIzMUI5MTQwNTc3RDcw
MERCNDc1QSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTE0MjlEODg2
MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RTA1MDI4MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zm
c2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTkwNjksNiArOTA2OSw3IEBACiAJCQkJRkUzODRFRTcx
QUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ3RjM5RDcxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTRW52aXJvbm1lbnRSZWNvcmQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwNTY2RDYxMDdFQzI3MTAwNURCQzhEIC8qIEpTRnVuY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0QTM4RjkxQzhFMTNERjAwMTkwMzE4IC8qIFN1
cGVyU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3OTdFMDdBOTFCOEZDRkI5MDA4NDAw
QkEgLyogSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQ3RjM5RDIxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTR2xvYmFsT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1RkQwMDg1MTg5QjFCN0UwMDYzMzIzMSAvKiBKU0dsb2JhbE9iamVjdENvbnNv
bGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkyNjEsNyArOTI2Miw2IEBACiAJCQkJMEY2
QjhBRDgxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRlVGFpbHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTI3NzczREUxQUFGODNBQzAwQkRFN0U4IC8qIFJ1bnRpbWVUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTQyOUQ4ODUwRUQyMUMzRDAwQjg5NjE5IC8qIFNh
bXBsaW5nVG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAyNzFBQTkwOTU2MDBEMzNC
MzMgLyogU2NvcGVkQXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDJGMUFB
QTgwNjkwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5OTJBQkNGOTFCRUE5QkQyMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5j
cHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
YW1wbGluZ1Rvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TYW1wbGluZ1Rvb2wuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0
NzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2FtcGxpbmdUb29s
LmgiCi0KLSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgot
I2luY2x1ZGUgIk9wY29kZS5oIgotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotI2lmICFPUyhX
SU5ET1dTKQotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBKU0Mgewot
Ci0jaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQotCi12b2lkIFNhbXBsaW5nRmxhZ3M6OnNhbXBs
ZSgpCi17Ci0gICAgdWludDMyX3QgbWFzayA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigxIDw8IDMx
KTsKLSAgICB1bnNpZ25lZCBpbmRleDsKLQotICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IDMy
OyArK2luZGV4KSB7Ci0gICAgICAgIGlmIChtYXNrICYgc19mbGFncykKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBtYXNrID4+PSAxOwotICAgIH0KLQotICAgIHNfZmxhZ0NvdW50c1szMiAt
IGluZGV4XSsrOwotfQotCi12b2lkIFNhbXBsaW5nRmxhZ3M6OnN0YXJ0KCkKLXsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDw9IDMyOyArK2kpCi0gICAgICAgIHNfZmxhZ0NvdW50c1tpXSA9
IDA7Ci19Ci12b2lkIFNhbXBsaW5nRmxhZ3M6OnN0b3AoKQotewotICAgIHVpbnQ2NF90IHRvdGFs
ID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDw9IDMyOyArK2kpCi0gICAgICAgIHRv
dGFsICs9IHNfZmxhZ0NvdW50c1tpXTsKLQotICAgIGlmICh0b3RhbCkgewotICAgICAgICBkYXRh
TG9nRigiXG5TYW1wbGluZ0ZsYWdzOiBzYW1wbGUgY291bnRzIHdpdGggZmxhZ3Mgc2V0OiAoJWxs
ZCB0b3RhbClcbiIsIHRvdGFsKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8PSAz
MjsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoc19mbGFnQ291bnRzW2ldKQotICAgICAgICAgICAg
ICAgIGRhdGFMb2dGKCIgIFsgJTAyZCBdIDogJWxsZFx0XHQoJTAzLjJmJSUpXG4iLCBpLCBzX2Zs
YWdDb3VudHNbaV0sICgxMDAuMCAqIHNfZmxhZ0NvdW50c1tpXSkgLyB0b3RhbCk7Ci0gICAgICAg
IH0KLSAgICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0gICAgfSBlbHNlCi0gICAgZGF0YUxvZ0YoIlxu
U2FtcGxpbmdGbGFnczogbm8gc2FtcGxlcy5cblxuIik7Ci19Ci11aW50NjRfdCBTYW1wbGluZ0Zs
YWdzOjpzX2ZsYWdDb3VudHNbMzNdOwotCi0jZWxzZQotdm9pZCBTYW1wbGluZ0ZsYWdzOjpzdGFy
dCgpIHt9Ci12b2lkIFNhbXBsaW5nRmxhZ3M6OnN0b3AoKSB7fQotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoU0FNUExJTkdfUkVHSU9OUykKLXZvbGF0aWxlIHVpbnRwdHJfdCBTYW1wbGluZ1JlZ2lvbjo6
c19jdXJyZW50T3JSZXNlcnZlZDsKLVNwZWN0cnVtPGNvbnN0IGNoYXIqPiogU2FtcGxpbmdSZWdp
b246OnNfc3BlY3RydW07Ci11bnNpZ25lZCBsb25nIFNhbXBsaW5nUmVnaW9uOjpzX25vbmVPZlRo
ZUFib3ZlOwotdW5zaWduZWQgU2FtcGxpbmdSZWdpb246OnNfbnVtYmVyT2ZTYW1wbGVzU2luY2VE
dW1wOwotCi1TYW1wbGluZ1JlZ2lvbjo6TG9ja2VyOjpMb2NrZXIoKQotewotICAgIHVpbnRwdHJf
dCBwcmV2aW91czsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBwcmV2aW91cyA9IHNfY3Vy
cmVudE9yUmVzZXJ2ZWQ7Ci0gICAgICAgIGlmIChwcmV2aW91cyAmIDEpIHsKLSNpZiBPUyhVTklY
KQotICAgICAgICAgICAgc2NoZWRfeWllbGQoKTsKLSNlbmRpZgotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFdURjo6d2Vha0NvbXBhcmVBbmRTd2FwVUludFB0
cigmc19jdXJyZW50T3JSZXNlcnZlZCwgcHJldmlvdXMsIHByZXZpb3VzIHwgMSkpCi0gICAgICAg
ICAgICBicmVhazsKLSAgICB9Ci19Ci0KLVNhbXBsaW5nUmVnaW9uOjpMb2NrZXI6On5Mb2NrZXIo
KQotewotICAgIC8vIFdlIGRvbid0IG5lZWQgdGhlIENBUywgYnV0IHdlIGRvIGl0IG91dCBvZiBh
bgotICAgIC8vIGFidW5kYW5jZSBvZiBjYXV0aW9uIChhbmQgYmVjYXVzZSBpdCBnaXZlcyB1cyBh
IG1lbW9yeSBmZW5jZSwgd2hpY2ggaXMKLSAgICAvLyBuZXZlciBiYWQpLgotICAgIHVpbnRwdHJf
dCBwcmV2aW91czsKLSAgICBkbyB7Ci0gICAgICAgIHByZXZpb3VzID0gc19jdXJyZW50T3JSZXNl
cnZlZDsKLSAgICB9IHdoaWxlICghV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXBVSW50UHRyKCZzX2N1
cnJlbnRPclJlc2VydmVkLCBwcmV2aW91cywgcHJldmlvdXMgJiB+MSkpOwotfQotCi12b2lkIFNh
bXBsaW5nUmVnaW9uOjpzYW1wbGUoKQotewotICAgIC8vIE1ha2Ugc3VyZSB3ZSBsb2NrIHNfY3Vy
cmVudC4KLSAgICBMb2NrZXIgbG9ja2VyOwotICAgIAotICAgIC8vIENyZWF0ZSBhIHNwZWN0cnVt
IGlmIHdlIGRvbid0IGhhdmUgb25lIGFscmVhZHkuCi0gICAgaWYgKCFzX3NwZWN0cnVtKQotICAg
ICAgICBzX3NwZWN0cnVtID0gbmV3IFNwZWN0cnVtPGNvbnN0IGNoYXIqPigpOwotICAgIAotICAg
IEFTU0VSVChzX2N1cnJlbnRPclJlc2VydmVkICYgMSk7Ci0gICAgCi0gICAgLy8gV2FsayB0aGUg
cmVnaW9uIHN0YWNrLCBhbmQgcmVjb3JkIGVhY2ggcmVnaW9uIHdlIHNlZS4KLSAgICBTYW1wbGlu
Z1JlZ2lvbiogcmVnaW9uID0gYml0d2lzZV9jYXN0PFNhbXBsaW5nUmVnaW9uKj4oc19jdXJyZW50
T3JSZXNlcnZlZCAmIH4xKTsKLSAgICBpZiAocmVnaW9uKSB7Ci0gICAgICAgIGZvciAoOyByZWdp
b247IHJlZ2lvbiA9IHJlZ2lvbi0+bV9wcmV2aW91cykKLSAgICAgICAgICAgIHNfc3BlY3RydW0t
PmFkZChyZWdpb24tPm1fbmFtZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNfbm9uZU9mVGhlQWJv
dmUrKzsKLSAgICAKLSAgICBpZiAoc19udW1iZXJPZlNhbXBsZXNTaW5jZUR1bXArKyA9PSBTYW1w
bGluZ1RocmVhZDo6c19oZXJ0eikgewotICAgICAgICBzX251bWJlck9mU2FtcGxlc1NpbmNlRHVt
cCA9IDA7Ci0gICAgICAgIGR1bXBJbnRlcm5hbCgpOwotICAgIH0KLX0KLQotdm9pZCBTYW1wbGlu
Z1JlZ2lvbjo6ZHVtcCgpCi17Ci0gICAgTG9ja2VyIGxvY2tlcjsKLSAgICAKLSAgICBkdW1wSW50
ZXJuYWwoKTsKLX0KLQotdm9pZCBTYW1wbGluZ1JlZ2lvbjo6ZHVtcEludGVybmFsKCkKLXsKLSAg
ICBpZiAoIXNfc3BlY3RydW0pIHsKLSAgICAgICAgZGF0YUxvZ0YoIlxuU2FtcGxpbmdSZWdpb246
IHdhcyBuZXZlciBzYW1wbGVkLlxuXG4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAK
LSAgICBWZWN0b3I8U3BlY3RydW08Y29uc3QgY2hhcio+OjpLZXlBbmRDb3VudD4gbGlzdCA9IHNf
c3BlY3RydW0tPmJ1aWxkTGlzdCgpOwotICAgIAotICAgIHVuc2lnbmVkIGxvbmcgdG90YWwgPSBz
X25vbmVPZlRoZUFib3ZlOwotICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgpOyBpLS07
KQotICAgICAgICB0b3RhbCArPSBsaXN0W2ldLmNvdW50OwotICAgIAotICAgIGRhdGFMb2dGKCJc
blNhbXBsaW5nUmVnaW9uOiBzYW1wbGUgY291bnRzIGZvciByZWdpb25zOiAoJWx1IHNhbXBsZXMp
XG4iLCB0b3RhbCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNpemUoKTsgaS0tOykK
LSAgICAgICAgZGF0YUxvZ0YoIiAgICAlMy4ybGYlJSAgJXNcbiIsICgxMDAuMCAqIGxpc3RbaV0u
Y291bnQpIC8gdG90YWwsIGxpc3RbaV0ua2V5KTsKLX0KLSNlbHNlIC8vIEVOQUJMRShTQU1QTElO
R19SRUdJT05TKQotdm9pZCBTYW1wbGluZ1JlZ2lvbjo6ZHVtcCgpIHsgfQotI2VuZGlmIC8vIEVO
QUJMRShTQU1QTElOR19SRUdJT05TKQotCi0vKgotICBTdGFydCB3aXRoIGZsYWcgMTYgc2V0Lgot
ICBCeSBkb2luZyB0aGlzIHRoZSBtb25pdG9yaW5nIG9mIGxvd2VyIHZhbHVlZCBmbGFncyB3aWxs
IGJlIG1hc2tlZCBvdXQKLSAgdW50aWwgZmxhZyAxNiBpcyBleHBsaWN0bHkgY2xlYXJlZC4KLSov
Ci11aW50MzJfdCBTYW1wbGluZ0ZsYWdzOjpzX2ZsYWdzID0gMSA8PCAxNTsKLQotCi0jaWYgT1Mo
V0lORE9XUykKLQotc3RhdGljIHZvaWQgc2xlZXBGb3JNaWNyb3NlY29uZHModW5zaWduZWQgdXMp
Ci17Ci0gICAgdW5zaWduZWQgbXMgPSB1cyAvIDEwMDA7Ci0gICAgaWYgKHVzICYmICFtcykKLSAg
ICAgICAgbXMgPSAxOwotICAgIFNsZWVwKG1zKTsKLX0KLQotI2Vsc2UgCi0KLXN0YXRpYyB2b2lk
IHNsZWVwRm9yTWljcm9zZWNvbmRzKHVuc2lnbmVkIHVzKQotewotICAgIHVzbGVlcCh1cyk7Ci19
Ci0KLSNlbmRpZgotCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGhlcnR6MnVzKHVuc2lnbmVkIGhl
cnR6KQotewotICAgIHJldHVybiAxMDAwMDAwIC8gaGVydHo7Ci19Ci0KLQotU2FtcGxpbmdUb29s
KiBTYW1wbGluZ1Rvb2w6OnNfc2FtcGxpbmdUb29sID0gMDsKLQotCi1ib29sIFNhbXBsaW5nVGhy
ZWFkOjpzX3J1bm5pbmcgPSBmYWxzZTsKLXVuc2lnbmVkIFNhbXBsaW5nVGhyZWFkOjpzX2hlcnR6
ID0gMTAwMDA7Ci1UaHJlYWRJZGVudGlmaWVyIFNhbXBsaW5nVGhyZWFkOjpzX3NhbXBsaW5nVGhy
ZWFkOwotCi12b2lkIFNhbXBsaW5nVGhyZWFkOjp0aHJlYWRTdGFydEZ1bmModm9pZCopCi17Ci0g
ICAgd2hpbGUgKHNfcnVubmluZykgewotICAgICAgICBzbGVlcEZvck1pY3Jvc2Vjb25kcyhoZXJ0
ejJ1cyhzX2hlcnR6KSk7Ci0KLSNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi0gICAgICAgIFNh
bXBsaW5nRmxhZ3M6OnNhbXBsZSgpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNBTVBMSU5HX1JFR0lP
TlMpCi0gICAgICAgIFNhbXBsaW5nUmVnaW9uOjpzYW1wbGUoKTsKLSNlbmRpZgotI2lmIEVOQUJM
RShPUENPREVfU0FNUExJTkcpCi0gICAgICAgIFNhbXBsaW5nVG9vbDo6c2FtcGxlKCk7Ci0jZW5k
aWYKLSAgICB9Ci19Ci0KLQotdm9pZCBTYW1wbGluZ1RocmVhZDo6c3RhcnQodW5zaWduZWQgaGVy
dHopCi17Ci0gICAgQVNTRVJUKCFzX3J1bm5pbmcpOwotICAgIHNfcnVubmluZyA9IHRydWU7Ci0g
ICAgc19oZXJ0eiA9IGhlcnR6OwotCi0gICAgc19zYW1wbGluZ1RocmVhZCA9IGNyZWF0ZVRocmVh
ZCh0aHJlYWRTdGFydEZ1bmMsIDAsICJKYXZhU2NyaXB0Q29yZTo6U2FtcGxlciIpOwotfQotCi12
b2lkIFNhbXBsaW5nVGhyZWFkOjpzdG9wKCkKLXsKLSAgICBBU1NFUlQoc19ydW5uaW5nKTsKLSAg
ICBzX3J1bm5pbmcgPSBmYWxzZTsKLSAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihzX3NhbXBs
aW5nVGhyZWFkKTsKLX0KLQotCi12b2lkIFNjcmlwdFNhbXBsZVJlY29yZDo6c2FtcGxlKENvZGVC
bG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogdlBDKQotewotICAgIGlmICghbV9zYW1wbGVz
KSB7Ci0gICAgICAgIG1fc2l6ZSA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwot
ICAgICAgICBtX3NhbXBsZXMgPSBzdGF0aWNfY2FzdDxpbnQqPihjYWxsb2MobV9zaXplLCBzaXpl
b2YoaW50KSkpOwotICAgICAgICBtX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKLSAgICB9Ci0KLSAg
ICArK21fc2FtcGxlQ291bnQ7Ci0KLSAgICB1bnNpZ25lZCBvZmZlc3QgPSB2UEMgLSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgLy8gU2luY2Ugd2UgZG9uJ3QgcmVhZCBh
bmQgd3JpdGUgY29kZUJsb2NrIGFuZCB2UEMgYXRvbWljYWxseSwgdGhpcyBjaGVjawotICAgIC8v
IGNhbiBmYWlsIGlmIHdlIHNhbXBsZSBtaWQgb3BfY2FsbCAvIG9wX3JldC4KLSAgICBpZiAob2Zm
ZXN0IDwgbV9zaXplKSB7Ci0gICAgICAgIG1fc2FtcGxlc1tvZmZlc3RdKys7Ci0gICAgICAgIG1f
b3Bjb2RlU2FtcGxlQ291bnQrKzsKLSAgICB9Ci19Ci0KLXZvaWQgU2FtcGxpbmdUb29sOjpkb1J1
bigpCi17Ci0gICAgU2FtcGxlIHNhbXBsZShtX3NhbXBsZSwgbV9jb2RlQmxvY2spOwotICAgICsr
bV9zYW1wbGVDb3VudDsKLQotICAgIGlmIChzYW1wbGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmICghc2FtcGxlLmluSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgdW5zaWdu
ZWQgb3Bjb2RlSUQgPSBtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRChzYW1wbGUudlBDKClbMF0u
dS5vcGNvZGUpOwotCi0gICAgICAgICsrbV9vcGNvZGVTYW1wbGVDb3VudDsKLSAgICAgICAgKytt
X29wY29kZVNhbXBsZXNbb3Bjb2RlSURdOwotCi0gICAgICAgIGlmIChzYW1wbGUuaW5DVElGdW5j
dGlvbigpKQotICAgICAgICAgICAgbV9vcGNvZGVTYW1wbGVzSW5DVElGdW5jdGlvbnNbb3Bjb2Rl
SURdKys7Ci0gICAgfQotCi0jaWYgRU5BQkxFKENPREVCTE9DS19TQU1QTElORykKLSAgICBpZiAo
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzYW1wbGUuY29kZUJsb2NrKCkpIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zY3JpcHRTYW1wbGVNYXBNdXRleCk7Ci0gICAgICAgIFNjcmlwdFNh
bXBsZVJlY29yZCogcmVjb3JkID0gbV9zY29wZVNhbXBsZU1hcC0+Z2V0KGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCkpOwotICAgICAgICBBU1NFUlQocmVjb3JkKTsKLSAgICAgICAgcmVjb3Jk
LT5zYW1wbGUoY29kZUJsb2NrLCBzYW1wbGUudlBDKCkpOwotICAgIH0KLSNlbmRpZgotfQotCi12
b2lkIFNhbXBsaW5nVG9vbDo6c2FtcGxlKCkKLXsKLSAgICBzX3NhbXBsaW5nVG9vbC0+ZG9SdW4o
KTsKLX0KLQotdm9pZCBTYW1wbGluZ1Rvb2w6Om5vdGlmeU9mU2NvcGUoVk0mIHZtLCBTY3JpcHRF
eGVjdXRhYmxlKiBzY3JpcHQpCi17Ci0jaWYgRU5BQkxFKENPREVCTE9DS19TQU1QTElORykKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3NjcmlwdFNhbXBsZU1hcE11dGV4KTsKLSAgICBtX3Njb3Bl
U2FtcGxlTWFwLT5zZXQoc2NyaXB0LCBhZG9wdFB0cihuZXcgU2NyaXB0U2FtcGxlUmVjb3JkKHZt
LCBzY3JpcHQpKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNjcmlwdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBTYW1wbGluZ1Rvb2w6OnNldHVwKCkKLXsK
LSAgICBzX3NhbXBsaW5nVG9vbCA9IHRoaXM7Ci19Ci0KLSNpZiBFTkFCTEUoT1BDT0RFX1NBTVBM
SU5HKQotCi1zdHJ1Y3QgT3Bjb2RlU2FtcGxlSW5mbyB7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlOwot
ICAgIGxvbmcgbG9uZyBjb3VudDsKLSAgICBsb25nIGxvbmcgY291bnRJbkNUSUZ1bmN0aW9uczsK
LX07Ci0KLXN0cnVjdCBMaW5lQ291bnRJbmZvIHsKLSAgICB1bnNpZ25lZCBsaW5lOwotICAgIHVu
c2lnbmVkIGNvdW50OwotfTsKLQotc3RhdGljIGludCBjb21wYXJlT3Bjb2RlSW5kaWNlc1NhbXBs
aW5nKGNvbnN0IHZvaWQqIGxlZnQsIGNvbnN0IHZvaWQqIHJpZ2h0KQotewotICAgIGNvbnN0IE9w
Y29kZVNhbXBsZUluZm8qIGxlZnRTYW1wbGVJbmZvID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBP
cGNvZGVTYW1wbGVJbmZvKj4obGVmdCk7Ci0gICAgY29uc3QgT3Bjb2RlU2FtcGxlSW5mbyogcmln
aHRTYW1wbGVJbmZvID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBPcGNvZGVTYW1wbGVJbmZvKj4o
cmlnaHQpOwotCi0gICAgcmV0dXJuIChsZWZ0U2FtcGxlSW5mby0+Y291bnQgPCByaWdodFNhbXBs
ZUluZm8tPmNvdW50KSA/IDEgOiAobGVmdFNhbXBsZUluZm8tPmNvdW50ID4gcmlnaHRTYW1wbGVJ
bmZvLT5jb3VudCkgPyAtMSA6IDA7Ci19Ci0KLSNpZiBFTkFCTEUoQ09ERUJMT0NLX1NBTVBMSU5H
KQotc3RhdGljIGludCBjb21wYXJlTGluZUNvdW50SW5mb1NhbXBsaW5nKGNvbnN0IHZvaWQqIGxl
ZnQsIGNvbnN0IHZvaWQqIHJpZ2h0KQotewotICAgIGNvbnN0IExpbmVDb3VudEluZm8qIGxlZnRM
aW5lQ291bnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IExpbmVDb3VudEluZm8qPihsZWZ0KTsK
LSAgICBjb25zdCBMaW5lQ291bnRJbmZvKiByaWdodExpbmVDb3VudCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTGluZUNvdW50SW5mbyo+KHJpZ2h0KTsKLQotICAgIHJldHVybiAobGVmdExpbmVD
b3VudC0+bGluZSA+IHJpZ2h0TGluZUNvdW50LT5saW5lKSA/IDEgOiAobGVmdExpbmVDb3VudC0+
bGluZSA8IHJpZ2h0TGluZUNvdW50LT5saW5lKSA/IC0xIDogMDsKLX0KLQotc3RhdGljIGludCBj
b21wYXJlU2NyaXB0U2FtcGxlUmVjb3Jkcyhjb25zdCB2b2lkKiBsZWZ0LCBjb25zdCB2b2lkKiBy
aWdodCkKLXsKLSAgICBjb25zdCBTY3JpcHRTYW1wbGVSZWNvcmQqIGNvbnN0IGxlZnRWYWx1ZSA9
ICpzdGF0aWNfY2FzdDxjb25zdCBTY3JpcHRTYW1wbGVSZWNvcmQqIGNvbnN0ICo+KGxlZnQpOwot
ICAgIGNvbnN0IFNjcmlwdFNhbXBsZVJlY29yZCogY29uc3QgcmlnaHRWYWx1ZSA9ICpzdGF0aWNf
Y2FzdDxjb25zdCBTY3JpcHRTYW1wbGVSZWNvcmQqIGNvbnN0ICo+KHJpZ2h0KTsKLQotICAgIHJl
dHVybiAobGVmdFZhbHVlLT5tX3NhbXBsZUNvdW50IDwgcmlnaHRWYWx1ZS0+bV9zYW1wbGVDb3Vu
dCkgPyAxIDogKGxlZnRWYWx1ZS0+bV9zYW1wbGVDb3VudCA+IHJpZ2h0VmFsdWUtPm1fc2FtcGxl
Q291bnQpID8gLTEgOiAwOwotfQotI2VuZGlmCi0KLXZvaWQgU2FtcGxpbmdUb29sOjpkdW1wKEV4
ZWNTdGF0ZSogZXhlYykKLXsKLSAgICAvLyBUaWRpZXMgdXAgU3VuU3BpZGVyIG91dHB1dCBieSBy
ZW1vdmluZyBzaG9ydCBzY3JpcHRzIC0gc3VjaCBhIHNtYWxsIG51bWJlciBvZiBzYW1wbGVzIHdv
dWxkIGxpa2VseSBub3QgYmUgdXNlZnVsIGFueWhvdy4KLSAgICBpZiAobV9zYW1wbGVDb3VudCA8
IDEwKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgLy8gKDEpIEJ1aWxkIGFuZCBzb3J0ICdv
cGNvZGVTYW1wbGVJbmZvJyBhcnJheS4KLQotICAgIE9wY29kZVNhbXBsZUluZm8gb3Bjb2RlU2Ft
cGxlSW5mb1tudW1PcGNvZGVJRHNdOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2Rl
SURzOyArK2kpIHsKLSAgICAgICAgb3Bjb2RlU2FtcGxlSW5mb1tpXS5vcGNvZGUgPSBzdGF0aWNf
Y2FzdDxPcGNvZGVJRD4oaSk7Ci0gICAgICAgIG9wY29kZVNhbXBsZUluZm9baV0uY291bnQgPSBt
X29wY29kZVNhbXBsZXNbaV07Ci0gICAgICAgIG9wY29kZVNhbXBsZUluZm9baV0uY291bnRJbkNU
SUZ1bmN0aW9ucyA9IG1fb3Bjb2RlU2FtcGxlc0luQ1RJRnVuY3Rpb25zW2ldOwotICAgIH0KLQot
ICAgIHFzb3J0KG9wY29kZVNhbXBsZUluZm8sIG51bU9wY29kZUlEcywgc2l6ZW9mKE9wY29kZVNh
bXBsZUluZm8pLCBjb21wYXJlT3Bjb2RlSW5kaWNlc1NhbXBsaW5nKTsKLQotICAgIC8vICgyKSBQ
cmludCBPcGNvZGUgc2FtcGxpbmcgcmVzdWx0cy4KLQotICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2Rl
IHNhbXBsZXMgWypdXG4iKTsKLSAgICBkYXRhTG9nRigiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzYW1wbGUgICAlJSBvZiAgICAgICAlJSBvZiAgICAgfCAgIGN0aSAgICAgY3RpICUlXG4i
KTsKLSAgICBkYXRhTG9nRigib3Bjb2RlICAgICAgICAgICAgICAgICAgICAgICBjb3VudCAgICAg
Vk0gICAgICAgIHRvdGFsICAgIHwgIGNvdW50ICAgb2Ygc2VsZlxuIik7Ci0gICAgZGF0YUxvZ0Yo
Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
ICB8ICAtLS0tLS0tLS0tLS0tLS0tXG4iKTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
T3Bjb2RlSURzOyArK2kpIHsKLSAgICAgICAgbG9uZyBsb25nIGNvdW50ID0gb3Bjb2RlU2FtcGxl
SW5mb1tpXS5jb3VudDsKLSAgICAgICAgaWYgKCFjb3VudCkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gb3Bjb2RlU2FtcGxlSW5mb1tpXS5vcGNv
ZGU7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBjaGFyKiBvcGNvZGVOYW1lID0gb3Bjb2RlTmFt
ZXNbb3Bjb2RlSURdOwotICAgICAgICBjb25zdCBjaGFyKiBvcGNvZGVQYWRkaW5nID0gcGFkT3Bj
b2RlTmFtZShvcGNvZGVJRCwgMjgpOwotICAgICAgICBkb3VibGUgcGVyY2VudE9mVk0gPSAoc3Rh
dGljX2Nhc3Q8ZG91YmxlPihjb3VudCkgKiAxMDApIC8gbV9vcGNvZGVTYW1wbGVDb3VudDsKLSAg
ICAgICAgZG91YmxlIHBlcmNlbnRPZlRvdGFsID0gKHN0YXRpY19jYXN0PGRvdWJsZT4oY291bnQp
ICogMTAwKSAvIG1fc2FtcGxlQ291bnQ7Ci0gICAgICAgIGxvbmcgbG9uZyBjb3VudEluQ1RJRnVu
Y3Rpb25zID0gb3Bjb2RlU2FtcGxlSW5mb1tpXS5jb3VudEluQ1RJRnVuY3Rpb25zOwotICAgICAg
ICBkb3VibGUgcGVyY2VudEluQ1RJRnVuY3Rpb25zID0gKHN0YXRpY19jYXN0PGRvdWJsZT4oY291
bnRJbkNUSUZ1bmN0aW9ucykgKiAxMDApIC8gY291bnQ7Ci0gICAgICAgIGRlYnVnRGVidWdQcmlu
dGYoIiVzOiVzJS02bGxkICUuM2YlJVx0JS4zZiUlXHQgIHwgICAlLTZsbGQgJS4zZiUlXG4iLCBv
cGNvZGVOYW1lLCBvcGNvZGVQYWRkaW5nLCBjb3VudCwgcGVyY2VudE9mVk0sIHBlcmNlbnRPZlRv
dGFsLCBjb3VudEluQ1RJRnVuY3Rpb25zLCBwZXJjZW50SW5DVElGdW5jdGlvbnMpOwotICAgIH0K
LSAgICAKLSAgICBkYXRhTG9nRigiXG5bKl0gU2FtcGxlcyBpbnNpZGUgaG9zdCBjb2RlIGFyZSBu
b3QgY2hhcmdlZCB0byBhbnkgQnl0ZWNvZGUuXG5cbiIpOwotICAgIGRhdGFMb2dGKCJcdFNhbXBs
ZXMgaW5zaWRlIFZNOlx0XHQlbGxkIC8gJWxsZCAoJS4zZiUlKVxuIiwgbV9vcGNvZGVTYW1wbGVD
b3VudCwgbV9zYW1wbGVDb3VudCwgKHN0YXRpY19jYXN0PGRvdWJsZT4obV9vcGNvZGVTYW1wbGVD
b3VudCkgKiAxMDApIC8gbV9zYW1wbGVDb3VudCk7Ci0gICAgZGF0YUxvZ0YoIlx0U2FtcGxlcyBp
bnNpZGUgaG9zdCBjb2RlOlx0JWxsZCAvICVsbGQgKCUuM2YlJSlcblxuIiwgbV9zYW1wbGVDb3Vu
dCAtIG1fb3Bjb2RlU2FtcGxlQ291bnQsIG1fc2FtcGxlQ291bnQsIChzdGF0aWNfY2FzdDxkb3Vi
bGU+KG1fc2FtcGxlQ291bnQgLSBtX29wY29kZVNhbXBsZUNvdW50KSAqIDEwMCkgLyBtX3NhbXBs
ZUNvdW50KTsKLSAgICBkYXRhTG9nRigiXHRzYW1wbGUgY291bnQ6XHRzYW1wbGVzIGluc2lkZSB0
aGlzIG9wY29kZVxuIik7Ci0gICAgZGF0YUxvZ0YoIlx0JSUgb2YgVk06XHRzYW1wbGUgY291bnQg
LyBhbGwgb3Bjb2RlIHNhbXBsZXNcbiIpOwotICAgIGRhdGFMb2dGKCJcdCUlIG9mIHRvdGFsOlx0
c2FtcGxlIGNvdW50IC8gYWxsIHNhbXBsZXNcbiIpOwotICAgIGRhdGFMb2dGKCJcdC0tLS0tLS0t
LS0tLS0tXG4iKTsKLSAgICBkYXRhTG9nRigiXHRjdGkgY291bnQ6XHRzYW1wbGVzIGluc2lkZSBh
IENUSSBmdW5jdGlvbiBjYWxsZWQgYnkgdGhpcyBvcGNvZGVcbiIpOwotICAgIGRhdGFMb2dGKCJc
dGN0aSAlJSBvZiBzZWxmOlx0Y3RpIGNvdW50IC8gc2FtcGxlIGNvdW50XG4iKTsKLSAgICAKLSNp
ZiBFTkFCTEUoQ09ERUJMT0NLX1NBTVBMSU5HKQotCi0gICAgLy8gKDMpIEJ1aWxkIGFuZCBzb3J0
ICdjb2RlQmxvY2tTYW1wbGVzJyBhcnJheS4KLQotICAgIGludCBzY29wZUNvdW50ID0gbV9zY29w
ZVNhbXBsZU1hcC0+c2l6ZSgpOwotICAgIFZlY3RvcjxTY3JpcHRTYW1wbGVSZWNvcmQqPiBjb2Rl
QmxvY2tTYW1wbGVzKHNjb3BlQ291bnQpOwotICAgIFNjcmlwdFNhbXBsZVJlY29yZE1hcDo6aXRl
cmF0b3IgaXRlciA9IG1fc2NvcGVTYW1wbGVNYXAtPmJlZ2luKCk7Ci0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBzY29wZUNvdW50OyArK2ksICsraXRlcikKLSAgICAgICAgY29kZUJsb2NrU2FtcGxl
c1tpXSA9IGl0ZXItPnZhbHVlLmdldCgpOwotCi0gICAgcXNvcnQoY29kZUJsb2NrU2FtcGxlcy5i
ZWdpbigpLCBzY29wZUNvdW50LCBzaXplb2YoU2NyaXB0U2FtcGxlUmVjb3JkKiksIGNvbXBhcmVT
Y3JpcHRTYW1wbGVSZWNvcmRzKTsKLQotICAgIC8vICg0KSBQcmludCBkYXRhIGZyb20gJ2NvZGVC
bG9ja1NhbXBsZXMnIGFycmF5LgotCi0gICAgZGF0YUxvZ0YoIlxuQ29kZUJsb2NrIHNhbXBsZXNc
blxuIik7IAotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzY29wZUNvdW50OyArK2kpIHsKLSAg
ICAgICAgU2NyaXB0U2FtcGxlUmVjb3JkKiByZWNvcmQgPSBjb2RlQmxvY2tTYW1wbGVzW2ldOwot
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHJlY29yZC0+bV9jb2RlQmxvY2s7Ci0KLSAg
ICAgICAgZG91YmxlIGJsb2NrUGVyY2VudCA9IChyZWNvcmQtPm1fc2FtcGxlQ291bnQgKiAxMDAu
MCkgLyBtX3NhbXBsZUNvdW50OwotCi0gICAgICAgIGlmIChibG9ja1BlcmNlbnQgPj0gMSkgewot
ICAgICAgICAgICAgLy9JbnN0cnVjdGlvbiogY29kZSA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKTsKLSAgICAgICAgICAgIGRhdGFMb2dGKCIjJWQ6ICVzOiVkOiAlZCAvICVsbGQg
KCUuM2YlJSlcbiIsIGkgKyAxLCByZWNvcmQtPm1fZXhlY3V0YWJsZS0+c291cmNlVVJMKCkudXRm
OCgpLmRhdGEoKSwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoMCksIHJl
Y29yZC0+bV9zYW1wbGVDb3VudCwgbV9zYW1wbGVDb3VudCwgYmxvY2tQZXJjZW50KTsKLSAgICAg
ICAgICAgIGlmIChpIDwgMTApIHsKLSAgICAgICAgICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLHVu
c2lnbmVkPiBsaW5lQ291bnRzOwotICAgICAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVtcChleGVj
KTsKLQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgT3Bjb2RlIGFuZCBsaW5lIG51bWJl
ciBzYW1wbGVzIFsqXVxuXG4iKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG9wID0g
MDsgb3AgPCByZWNvcmQtPm1fc2l6ZTsgKytvcCkgewotICAgICAgICAgICAgICAgICAgICBpbnQg
Y291bnQgPSByZWNvcmQtPm1fc2FtcGxlc1tvcF07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChj
b3VudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBbJSA0ZF0gaGFz
IHNhbXBsZSBjb3VudDogJSA0ZFxuIiwgb3AsIGNvdW50KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxpbmUgPSBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNl
dChvcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lQ291bnRzLnNldChsaW5lLCAobGlu
ZUNvdW50cy5jb250YWlucyhsaW5lKSA/IGxpbmVDb3VudHMuZ2V0KGxpbmUpIDogMCkgKyBjb3Vu
dCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0KLSAgICAgICAgICAgICAgICBpbnQgbGluZXNDb3VudCA9
IGxpbmVDb3VudHMuc2l6ZSgpOwotICAgICAgICAgICAgICAgIFZlY3RvcjxMaW5lQ291bnRJbmZv
PiBsaW5lQ291bnRJbmZvKGxpbmVzQ291bnQpOwotICAgICAgICAgICAgICAgIGludCBsaW5lbm8g
PSAwOwotICAgICAgICAgICAgICAgIGZvciAoSGFzaE1hcDx1bnNpZ25lZCx1bnNpZ25lZD46Oml0
ZXJhdG9yIGl0ZXIgPSBsaW5lQ291bnRzLmJlZ2luKCk7IGl0ZXIgIT0gbGluZUNvdW50cy5lbmQo
KTsgKytpdGVyLCArK2xpbmVubykgewotICAgICAgICAgICAgICAgICAgICBsaW5lQ291bnRJbmZv
W2xpbmVub10ubGluZSA9IGl0ZXItPmtleTsKLSAgICAgICAgICAgICAgICAgICAgbGluZUNvdW50
SW5mb1tsaW5lbm9dLmNvdW50ID0gaXRlci0+dmFsdWU7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgcXNvcnQobGluZUNvdW50SW5mby5iZWdpbigpLCBsaW5lc0NvdW50LCBz
aXplb2YoTGluZUNvdW50SW5mbyksIGNvbXBhcmVMaW5lQ291bnRJbmZvU2FtcGxpbmcpOwotCi0g
ICAgICAgICAgICAgICAgZm9yIChsaW5lbm8gPSAwOyBsaW5lbm8gPCBsaW5lc0NvdW50OyArK2xp
bmVubykgewotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiICAgIExpbmUgIyVkIGhhcyBz
YW1wbGUgY291bnQgJWQuXG4iLCBsaW5lQ291bnRJbmZvW2xpbmVub10ubGluZSwgbGluZUNvdW50
SW5mb1tsaW5lbm9dLmNvdW50KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ZGF0YUxvZ0YoIlxuIik7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBbKl0gU2FtcGxl
cyBpbnNpZGUgaG9zdCBjb2RlIGFyZSBjaGFyZ2VkIHRvIHRoZSBjYWxsaW5nIEJ5dGVjb2RlLlxu
Iik7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAgICAgU2FtcGxlcyBvbiBhIGNhbGwg
LyByZXR1cm4gYm91bmRhcnkgYXJlIG5vdCBjaGFyZ2VkIHRvIGEgc3BlY2lmaWMgb3Bjb2RlIG9y
IGxpbmUuXG5cbiIpOwotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgICAgICAgICBTYW1w
bGVzIG9uIGEgY2FsbCAvIHJldHVybiBib3VuZGFyeTogJWQgLyAlZCAoJS4zZiUlKVxuXG4iLCBy
ZWNvcmQtPm1fc2FtcGxlQ291bnQgLSByZWNvcmQtPm1fb3Bjb2RlU2FtcGxlQ291bnQsIHJlY29y
ZC0+bV9zYW1wbGVDb3VudCwgKHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjb3JkLT5tX3NhbXBsZUNv
dW50IC0gcmVjb3JkLT5tX29wY29kZVNhbXBsZUNvdW50KSAqIDEwMCkgLyByZWNvcmQtPm1fc2Ft
cGxlQ291bnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oZXhlYyk7Ci0jZW5kaWYKLX0KLQotI2Vsc2UKLQotdm9pZCBTYW1wbGluZ1Rv
b2w6OmR1bXAoRXhlY1N0YXRlKikKLXsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wu
aAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nh
bXBsaW5nVG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM0OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
U2FtcGxpbmdUb29sX2gKLSNkZWZpbmUgU2FtcGxpbmdUb29sX2gKLQotI2luY2x1ZGUgIlN0cm9u
Zy5oIgotI2luY2x1ZGUgIk9wY29kZS5oIgotI2luY2x1ZGUgIlNhbXBsaW5nQ291bnRlci5oIgot
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KLSNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvU3BlY3RydW0uaD4KLSNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi0gICAgY2xhc3MgU2NyaXB0RXhl
Y3V0YWJsZTsKLQotICAgIGNsYXNzIFNhbXBsaW5nRmxhZ3MgewotICAgIHB1YmxpYzoKLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc3RhcnQoKTsKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc3RvcCgpOwotCi0jaWYgRU5BQkxFKFNBTVBMSU5HX0ZM
QUdTKQotICAgICAgICBzdGF0aWMgdm9pZCBzZXRGbGFnKHVuc2lnbmVkIGZsYWcpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVChmbGFnID49IDEpOwotICAgICAgICAgICAgQVNTRVJUKGZs
YWcgPD0gMzIpOwotICAgICAgICAgICAgc19mbGFncyB8PSAxdSA8PCAoZmxhZyAtIDEpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgY2xlYXJGbGFnKHVuc2lnbmVkIGZsYWcpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChmbGFnID49IDEpOwotICAgICAgICAgICAgQVNT
RVJUKGZsYWcgPD0gMzIpOwotICAgICAgICAgICAgc19mbGFncyAmPSB+KDF1IDw8IChmbGFnIC0g
MSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgc2FtcGxlKCk7Ci0KLSAgICAg
ICAgY2xhc3MgU2NvcGVkRmxhZyB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIFNjb3Bl
ZEZsYWcoaW50IGZsYWcpCi0gICAgICAgICAgICAgICAgOiBtX2ZsYWcoZmxhZykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBzZXRGbGFnKGZsYWcpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICB+U2NvcGVkRmxhZygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Y2xlYXJGbGFnKG1fZmxhZyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgcHJpdmF0ZToKLSAg
ICAgICAgICAgIGludCBtX2ZsYWc7Ci0gICAgICAgIH07Ci0gICAgCi0gICAgICAgIHN0YXRpYyBj
b25zdCB2b2lkKiBhZGRyZXNzT2ZGbGFncygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biAmc19mbGFnczsKLSAgICAgICAgfQotCi0jZW5kaWYKLSAgICBwcml2YXRlOgotICAgICAgICBK
U19FWFBPUlREQVRBIHN0YXRpYyB1aW50MzJfdCBzX2ZsYWdzOwotI2lmIEVOQUJMRShTQU1QTElO
R19GTEFHUykKLSAgICAgICAgc3RhdGljIHVpbnQ2NF90IHNfZmxhZ0NvdW50c1szM107Ci0jZW5k
aWYKLSAgICB9OwotCi0jaWYgRU5BQkxFKFNBTVBMSU5HX1JFR0lPTlMpCi0gICAgY2xhc3MgU2Ft
cGxpbmdSZWdpb24gewotICAgIHB1YmxpYzoKLSAgICAgICAgLy8gQ3JlYXRlIGEgc2NvcGVkIHNh
bXBsaW5nIHJlZ2lvbiB1c2luZyBhIEMgc3RyaW5nIGNvbnN0YW50IG5hbWUgdGhhdCBkZXNjcmli
ZXMKLSAgICAgICAgLy8gd2hhdCB5b3UgYXJlIGRvaW5nLiBUaGlzIG11c3QgYmUgYSBzdHJpbmcg
Y29uc3RhbnQgdGhhdCBwZXJzaXN0cyBmb3IgdGhlCi0gICAgICAgIC8vIGxpZmV0aW1lIG9mIHRo
ZSBwcm9jZXNzIGFuZCBpcyBpbW11dGFibGUuCi0gICAgICAgIFNhbXBsaW5nUmVnaW9uKGNvbnN0
IGNoYXIqIG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkp
IHsKLSAgICAgICAgICAgICAgICBtX25hbWUgPSAwOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9uYW1lID0gbmFtZTsK
LSAgICAgICAgICAgIGV4Y2hhbmdlQ3VycmVudCh0aGlzLCAmbV9wcmV2aW91cyk7Ci0gICAgICAg
ICAgICBBU1NFUlQoIW1fcHJldmlvdXMgfHwgbV9wcmV2aW91cyA+IHRoaXMpOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICB+U2FtcGxpbmdSZWdpb24oKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fbmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIEFTU0VSVChiaXR3aXNlX2Nhc3Q8U2FtcGxpbmdSZWdpb24qPihzX2N1cnJl
bnRPclJlc2VydmVkICYgfjEpID09IHRoaXMpOwotICAgICAgICAgICAgZXhjaGFuZ2VDdXJyZW50
KG1fcHJldmlvdXMpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBz
YW1wbGUoKTsKLSAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IGR1bXAoKTsKLSAgICAgICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgY29uc3QgY2hhciogbV9u
YW1lOwotICAgICAgICBTYW1wbGluZ1JlZ2lvbiogbV9wcmV2aW91czsKLQotICAgICAgICBzdGF0
aWMgdm9pZCBleGNoYW5nZUN1cnJlbnQoU2FtcGxpbmdSZWdpb24qIGN1cnJlbnQsIFNhbXBsaW5n
UmVnaW9uKiogcHJldmlvdXNQdHIgPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICB1aW50cHRy
X3QgcHJldmlvdXM7Ci0gICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAg
IHByZXZpb3VzID0gc19jdXJyZW50T3JSZXNlcnZlZDsKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAvLyBJZiBpdCdzIHJlc2VydmVkIChpLmUuIHNhbXBsaW5nIHRocmVhZCBpcyBy
ZWFkaW5nIGl0KSwgbG9vcCBhcm91bmQuCi0gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzICYg
MSkgewotI2lmIE9TKFVOSVgpCi0gICAgICAgICAgICAgICAgICAgIHNjaGVkX3lpZWxkKCk7Ci0j
ZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGdvaW5nIHRvIENB
UywgdGhlbiBtYWtlIHN1cmUgcHJldmlvdXMgaXMgc2V0LgotICAgICAgICAgICAgICAgIGlmIChw
cmV2aW91c1B0cikKLSAgICAgICAgICAgICAgICAgICAgKnByZXZpb3VzUHRyID0gYml0d2lzZV9j
YXN0PFNhbXBsaW5nUmVnaW9uKj4ocHJldmlvdXMpOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIGlmIChXVEY6OndlYWtDb21wYXJlQW5kU3dhcFVJbnRQdHIoJnNfY3VycmVudE9y
UmVzZXJ2ZWQsIHByZXZpb3VzLCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihjdXJyZW50KSkpCi0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBkdW1wSW50ZXJuYWwoKTsKLQotICAgICAgICBjbGFz
cyBMb2NrZXIgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBMb2NrZXIoKTsKLSAgICAg
ICAgICAgIH5Mb2NrZXIoKTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgdm9sYXRpbGUg
dWludHB0cl90IHNfY3VycmVudE9yUmVzZXJ2ZWQ7Ci0gICAgICAgIAotICAgICAgICAvLyByZWx5
IG9uIGlkZW50aXR5IGhhc2hpbmcgb2Ygc3RyaW5nIGNvbnN0YW50cwotICAgICAgICBzdGF0aWMg
U3BlY3RydW08Y29uc3QgY2hhcio+KiBzX3NwZWN0cnVtOwotICAgICAgICAKLSAgICAgICAgc3Rh
dGljIHVuc2lnbmVkIGxvbmcgc19ub25lT2ZUaGVBYm92ZTsKLSAgICAgICAgCi0gICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBzX251bWJlck9mU2FtcGxlc1NpbmNlRHVtcDsKLSAgICB9OwotI2Vsc2Ug
Ly8gRU5BQkxFKFNBTVBMSU5HX1JFR0lPTlMpCi0gICAgY2xhc3MgU2FtcGxpbmdSZWdpb24gewot
ICAgIHB1YmxpYzoKLSAgICAgICAgU2FtcGxpbmdSZWdpb24oY29uc3QgY2hhciopIHsgfQotICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoKTsKLSAgICB9OwotI2VuZGlmIC8vIEVO
QUJMRShTQU1QTElOR19SRUdJT05TKQotCi0gICAgY2xhc3MgQ29kZUJsb2NrOwotICAgIGNsYXNz
IEV4ZWNTdGF0ZTsKLSAgICBjbGFzcyBJbnRlcnByZXRlcjsKLSAgICBjbGFzcyBTY29wZU5vZGU7
Ci0gICAgc3RydWN0IEluc3RydWN0aW9uOwotCi0gICAgc3RydWN0IFNjcmlwdFNhbXBsZVJlY29y
ZCB7Ci0gICAgICAgIFNjcmlwdFNhbXBsZVJlY29yZChWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUpCi0gICAgICAgICAgICA6IG1fZXhlY3V0YWJsZSh2bSwgZXhlY3V0YWJsZSkK
LSAgICAgICAgICAgICwgbV9jb2RlQmxvY2soMCkKLSAgICAgICAgICAgICwgbV9zYW1wbGVDb3Vu
dCgwKQotICAgICAgICAgICAgLCBtX29wY29kZVNhbXBsZUNvdW50KDApCi0gICAgICAgICAgICAs
IG1fc2FtcGxlcygwKQotICAgICAgICAgICAgLCBtX3NpemUoMCkKLSAgICAgICAgewotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICB+U2NyaXB0U2FtcGxlUmVjb3JkKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKG1fc2FtcGxlcykKLSAgICAgICAgICAgICAgICBmcmVlKG1fc2FtcGxl
cyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2FtcGxlKENvZGVCbG9jayos
IEluc3RydWN0aW9uKik7Ci0KLSAgICAgICAgU3Ryb25nPFNjcmlwdEV4ZWN1dGFibGU+IG1fZXhl
Y3V0YWJsZTsKLSAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLSAgICAgICAgaW50IG1f
c2FtcGxlQ291bnQ7Ci0gICAgICAgIGludCBtX29wY29kZVNhbXBsZUNvdW50OwotICAgICAgICBp
bnQqIG1fc2FtcGxlczsKLSAgICAgICAgdW5zaWduZWQgbV9zaXplOwotICAgIH07Ci0KLSAgICB0
eXBlZGVmIEhhc2hNYXA8U2NyaXB0RXhlY3V0YWJsZSosIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRT
YW1wbGVSZWNvcmQ+PiBTY3JpcHRTYW1wbGVSZWNvcmRNYXA7Ci0KLSAgICBjbGFzcyBTYW1wbGlu
Z1RocmVhZCB7Ci0gICAgcHVibGljOgotICAgICAgICAvLyBTYW1wbGluZyB0aHJlYWQgc3RhdGUu
Ci0gICAgICAgIHN0YXRpYyBib29sIHNfcnVubmluZzsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVk
IHNfaGVydHo7Ci0gICAgICAgIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIHNfc2FtcGxpbmdUaHJl
YWQ7Ci0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc3RhcnQodW5zaWdu
ZWQgaGVydHo9MTAwMDApOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBz
dG9wKCk7Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgdGhyZWFkU3RhcnRGdW5jKHZvaWQqKTsKLSAg
ICB9OwotCi0gICAgY2xhc3MgU2FtcGxpbmdUb29sIHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci0gICAgcHVibGljOgotICAgICAgICBmcmllbmQgc3RydWN0IENhbGxSZWNvcmQ7
Ci0gICAgICAgIAotI2lmIEVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgICAgIGNsYXNzIENh
bGxSZWNvcmQgewotICAgICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2FsbFJlY29yZCk7
Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIENhbGxSZWNvcmQoU2FtcGxpbmdUb29sKiBz
YW1wbGluZ1Rvb2wsIGJvb2wgaXNIb3N0Q2FsbCA9IGZhbHNlKQotICAgICAgICAgICAgICAgIDog
bV9zYW1wbGluZ1Rvb2woc2FtcGxpbmdUb29sKQotICAgICAgICAgICAgICAgICwgbV9zYXZlZFNh
bXBsZShzYW1wbGluZ1Rvb2wtPm1fc2FtcGxlKQotICAgICAgICAgICAgICAgICwgbV9zYXZlZENv
ZGVCbG9jayhzYW1wbGluZ1Rvb2wtPm1fY29kZUJsb2NrKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGlmIChpc0hvc3RjYWxsKQotICAgICAgICAgICAgICAgICAgICBzYW1wbGluZ1Rv
b2wtPm1fc2FtcGxlIHw9IDB4MTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgfkNhbGxS
ZWNvcmQoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1fc2FtcGxpbmdUb29sLT5t
X3NhbXBsZSA9IG1fc2F2ZWRTYW1wbGU7Ci0gICAgICAgICAgICAgICAgbV9zYW1wbGluZ1Rvb2wt
Pm1fY29kZUJsb2NrID0gbV9zYXZlZENvZGVCbG9jazsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICBwcml2YXRlOgotICAgICAgICAgICAgU2FtcGxpbmdUb29sKiBtX3NhbXBsaW5nVG9vbDsKLSAg
ICAgICAgICAgIGludHB0cl90IG1fc2F2ZWRTYW1wbGU7Ci0gICAgICAgICAgICBDb2RlQmxvY2sq
IG1fc2F2ZWRDb2RlQmxvY2s7Ci0gICAgICAgIH07Ci0jZWxzZQotICAgICAgICBjbGFzcyBDYWxs
UmVjb3JkIHsKLSAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhbGxSZWNvcmQpOwot
ICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBDYWxsUmVjb3JkKFNhbXBsaW5nVG9vbCosIGJv
b2wgPSBmYWxzZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSNl
bmRpZgotCi0gICAgICAgIFNhbXBsaW5nVG9vbChJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIpCi0g
ICAgICAgICAgICA6IG1faW50ZXJwcmV0ZXIoaW50ZXJwcmV0ZXIpCi0gICAgICAgICAgICAsIG1f
Y29kZUJsb2NrKDApCi0gICAgICAgICAgICAsIG1fc2FtcGxlKDApCi0gICAgICAgICAgICAsIG1f
c2FtcGxlQ291bnQoMCkKLSAgICAgICAgICAgICwgbV9vcGNvZGVTYW1wbGVDb3VudCgwKQotI2lm
IEVOQUJMRShDT0RFQkxPQ0tfU0FNUExJTkcpCi0gICAgICAgICAgICAsIG1fc2NvcGVTYW1wbGVN
YXAoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRTYW1wbGVSZWNvcmRNYXA+KQotI2VuZGlmCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIG1lbXNldChtX29wY29kZVNhbXBsZXMsIDAsIHNpemVvZihtX29w
Y29kZVNhbXBsZXMpKTsKLSAgICAgICAgICAgIG1lbXNldChtX29wY29kZVNhbXBsZXNJbkNUSUZ1
bmN0aW9ucywgMCwgc2l6ZW9mKG1fb3Bjb2RlU2FtcGxlc0luQ1RJRnVuY3Rpb25zKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldHVwKCk7Ci0gICAgICAg
IHZvaWQgZHVtcChFeGVjU3RhdGUqKTsKLQotICAgICAgICB2b2lkIG5vdGlmeU9mU2NvcGUoVk0m
LCBTY3JpcHRFeGVjdXRhYmxlKiBzY29wZSk7Ci0KLSAgICAgICAgdm9pZCBzYW1wbGUoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiB2UEMpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHZQQykgJiAweDMpKTsKLSAgICAg
ICAgICAgIG1fY29kZUJsb2NrID0gY29kZUJsb2NrOwotICAgICAgICAgICAgbV9zYW1wbGUgPSBy
ZWludGVycHJldF9jYXN0PGludHB0cl90Pih2UEMpOwotICAgICAgICB9Ci0KLSAgICAgICAgQ29k
ZUJsb2NrKiogY29kZUJsb2NrU2xvdCgpIHsgcmV0dXJuICZtX2NvZGVCbG9jazsgfQotICAgICAg
ICBpbnRwdHJfdCogc2FtcGxlU2xvdCgpIHsgcmV0dXJuICZtX3NhbXBsZTsgfQotCi0gICAgICAg
IHZvaWQqIGVuY29kZVNhbXBsZShJbnN0cnVjdGlvbiogdlBDLCBib29sIGluQ1RJRnVuY3Rpb24g
PSBmYWxzZSwgYm9vbCBpbkhvc3RGdW5jdGlvbiA9IGZhbHNlKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90Pih2UEMpICYgMHgzKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4odlBDKSB8IChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5DVElGdW5jdGlvbikg
PDwgMSkgfCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5Ib3N0RnVuY3Rpb24pKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHN0YXRpYyB2b2lkIHNhbXBsZSgpOwotCi0gICAgcHJpdmF0ZToKLSAgICAg
ICAgY2xhc3MgU2FtcGxlIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgU2FtcGxlKHZv
bGF0aWxlIGludHB0cl90IHNhbXBsZSwgQ29kZUJsb2NrKiB2b2xhdGlsZSBjb2RlQmxvY2spCi0g
ICAgICAgICAgICAgICAgOiBtX3NhbXBsZShzYW1wbGUpCi0gICAgICAgICAgICAgICAgLCBtX2Nv
ZGVCbG9jayhjb2RlQmxvY2spCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGJvb2wgaXNOdWxsKCkgeyByZXR1cm4gIW1fc2FtcGxlOyB9Ci0g
ICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIHsgcmV0dXJuIG1fY29kZUJsb2NrOyB9
Ci0gICAgICAgICAgICBJbnN0cnVjdGlvbiogdlBDKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxJbnN0cnVjdGlvbio+KG1fc2FtcGxlICYgfjB4Myk7IH0KLSAgICAgICAgICAgIGJvb2wgaW5I
b3N0RnVuY3Rpb24oKSB7IHJldHVybiBtX3NhbXBsZSAmIDB4MTsgfQotICAgICAgICAgICAgYm9v
bCBpbkNUSUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9zYW1wbGUgJiAweDI7IH0KLQotICAgICAgICBw
cml2YXRlOgotICAgICAgICAgICAgaW50cHRyX3QgbV9zYW1wbGU7Ci0gICAgICAgICAgICBDb2Rl
QmxvY2sqIG1fY29kZUJsb2NrOwotICAgICAgICB9OwotCi0gICAgICAgIHZvaWQgZG9SdW4oKTsK
LSAgICAgICAgc3RhdGljIFNhbXBsaW5nVG9vbCogc19zYW1wbGluZ1Rvb2w7Ci0gICAgICAgIAot
ICAgICAgICBJbnRlcnByZXRlciogbV9pbnRlcnByZXRlcjsKLSAgICAgICAgCi0gICAgICAgIC8v
IFN0YXRlIHRyYWNrZWQgYnkgdGhlIG1haW4gdGhyZWFkLCB1c2VkIGJ5IHRoZSBzYW1wbGluZyB0
aHJlYWQuCi0gICAgICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7Ci0gICAgICAgIGludHB0cl90
IG1fc2FtcGxlOwotCi0gICAgICAgIC8vIEdhdGhlcmVkIHNhbXBsZSBkYXRhLgotICAgICAgICBs
b25nIGxvbmcgbV9zYW1wbGVDb3VudDsKLSAgICAgICAgbG9uZyBsb25nIG1fb3Bjb2RlU2FtcGxl
Q291bnQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fb3Bjb2RlU2FtcGxlc1tudW1PcGNvZGVJRHNdOwot
ICAgICAgICB1bnNpZ25lZCBtX29wY29kZVNhbXBsZXNJbkNUSUZ1bmN0aW9uc1tudW1PcGNvZGVJ
RHNdOwotICAgICAgICAKLSNpZiBFTkFCTEUoQ09ERUJMT0NLX1NBTVBMSU5HKQotICAgICAgICBM
b2NrIG1fc2NyaXB0U2FtcGxlTWFwTXV0ZXg7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3Jp
cHRTYW1wbGVSZWNvcmRNYXA+IG1fc2NvcGVTYW1wbGVNYXA7Ci0jZW5kaWYKLSAgICB9OwotCi19
IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIFNhbXBsaW5nVG9vbF9oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN1
cGVyU2FtcGxlci5oIgorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJP
cHRpb25zLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKwordm9sYXRpbGUgdWludDMyX3QgZ19zdXBl
clNhbXBsZXJDb3VudDsKKworc3RhdGljIGRvdWJsZSBpbjsKK3N0YXRpYyBkb3VibGUgb3V0Owor
Cit2b2lkIGluaXRpYWxpemVTdXBlclNhbXBsZXIoKQoreworICAgIGlmICghT3B0aW9uczo6dXNl
U3VwZXJTYW1wbGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBjcmVhdGVUaHJlYWQo
CisgICAgICAgICJKU0MgU3VwZXIgU2FtcGxlciIsCisgICAgICAgIFtdICgpIHsKKyAgICAgICAg
ICAgIGNvbnN0IGludCBzbGVlcFF1YW50dW0gPSAxMDsKKyAgICAgICAgICAgIGNvbnN0IGludCBw
cmludGluZ1BlcmlvZCA9IDEwMDA7CisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAg
ICAgICAgZm9yIChpbnQgbXMgPSAwOyBtcyA8IHByaW50aW5nUGVyaW9kOyBtcyArPSBzbGVlcFF1
YW50dW0pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGdfc3VwZXJTYW1wbGVyQ291bnQpCisg
ICAgICAgICAgICAgICAgICAgICAgICBpbisrOworICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICBvdXQrKzsKKyAgICAgICAgICAgICAgICAgICAgc2xlZXBN
UyhzbGVlcFF1YW50dW0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwcmlu
dFN1cGVyU2FtcGxlclN0YXRlKCk7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KGdfc3VwZXJTYW1wbGVyQ291bnQpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiV0FSTklORzogU3VwZXIgc2FtcGxlciB1bmRlcmNvdW50IGRldGVjdGVkIVxuIik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0pOworfQorCit2b2lkIHByaW50U3VwZXJTYW1wbGVyU3Rh
dGUoKQoreworICAgIGlmICghT3B0aW9uczo6dXNlU3VwZXJTYW1wbGVyKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBkb3VibGUgcGVyY2VudGFnZSA9IDEwMC4wICogaW4gLyAoaW4gKyBv
dXQpOworICAgIGlmIChwZXJjZW50YWdlICE9IHBlcmNlbnRhZ2UpCisgICAgICAgIHBlcmNlbnRh
Z2UgPSAwLjA7CisgICAgZGF0YUxvZygiUGVyY2VudCB0aW1lIGJlaGluZCBzdXBlciBzYW1wbGVy
IGZsYWc6ICIsIHBlcmNlbnRhZ2UsICJcbiIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU3VwZXJTYW1wbGVyX2gKKyNkZWZp
bmUgU3VwZXJTYW1wbGVyX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIE1hY3JvQXNzZW1i
bGVyOworCitleHRlcm4gdm9sYXRpbGUgdWludDMyX3QgZ19zdXBlclNhbXBsZXJDb3VudDsKKwor
dm9pZCBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCk7CisKK2NsYXNzIFN1cGVyU2FtcGxlclNjb3Bl
IHsKK3B1YmxpYzoKKyAgICBTdXBlclNhbXBsZXJTY29wZShib29sIGRvU2FtcGxlID0gdHJ1ZSkK
KyAgICAgICAgOiBtX2RvU2FtcGxlKGRvU2FtcGxlKQorICAgIHsKKyAgICAgICAgaWYgKG1fZG9T
YW1wbGUpCisgICAgICAgICAgICBnX3N1cGVyU2FtcGxlckNvdW50Kys7CisgICAgfQorCisgICAg
flN1cGVyU2FtcGxlclNjb3BlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2RvU2FtcGxlKQorICAg
ICAgICAgICAgZ19zdXBlclNhbXBsZXJDb3VudC0tOworICAgIH0KKworcHJpdmF0ZToKKyAgICBi
b29sIG1fZG9TYW1wbGU7Cit9OworCitKU19FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50U3VwZXJT
YW1wbGVyU3RhdGUoKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBTdXBlclNh
bXBsZXJfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDYgQEAgdm9pZCBMYWJlbDo6c2V0TG9jYXRpb24odW5z
aWduZWQgbG9jYXRpbwogCiBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
KQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJCeXRlY29kZSBHZW5lcmF0
aW9uIik7Ci0KICAgICBtX2NvZGVCbG9jay0+c2V0VGhpc1JlZ2lzdGVyKG1fdGhpc1JlZ2lzdGVy
LnZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAKICAgICAvLyBJZiB3ZSBoYXZlIGRlY2xhcmVkIGEg
dmFyaWFibGUgbmFtZWQgImFyZ3VtZW50cyIgYW5kIHdlIGFyZSB1c2luZyBhcmd1bWVudHMgdGhl
biB3ZSBzaG91bGQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVk
ZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKLSNpbmNsdWRlICJT
YW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgIlRl
bXBsYXRlUmVnaXN0cnlLZXkuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzE2LDcgKzI3MTYsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6Zm9yQWxsVmFsdWVzKAogICAgIHVu
c2lnbmVkIGNsb2JiZXJMaW1pdCwgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBTYW1wbGluZ1Jl
Z2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIEFJIEZvciBBbGwgVmFsdWVzIik7CiAgICAgaWYgKGNs
b2JiZXJMaW1pdCA+PSBtX3N0YXRlLmJsb2NrKCktPnNpemUoKSkKICAgICAgICAgY2xvYmJlckxp
bWl0ID0gbV9zdGF0ZS5ibG9jaygpLT5zaXplKCk7CiAgICAgZWxzZQpAQCAtMjczOSw3ICsyNzM4
LDYgQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogdGVtcGxhdGU8
dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CiB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpjbG9iYmVyU3RydWN0dXJlcyh1bnNpZ25lZCBjbG9iYmVyTGltaXQp
CiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBBSSBDbG9iYmVyIFN0
cnVjdHVyZXMiKTsKICAgICBmb3JBbGxWYWx1ZXMoY2xvYmJlckxpbWl0LCBBYnN0cmFjdFZhbHVl
OjpjbG9iYmVyU3RydWN0dXJlc0Zvcik7CiAgICAgc2V0RGlkQ2xvYmJlcigpOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NzgsNyArNjc4LDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtQXJndW1lbnRzRWxp
bWluYXRpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVn
aW9uKCJERkcgQXJndW1lbnRzIEVsaW1pbmF0aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBo
YXNlPEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MjYsNyArNDI2LDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtQmFja3dhcmRzUHJvcGFnYXRp
b24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJE
RkcgQmFja3dhcmRzIFByb3BhZ2F0aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPEJh
Y2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE5ODM0
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MDgwLDcgKzUwODAsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZSgpCiAKIGJvb2wgcGFyc2UoR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKCJERkcgUGFyc2luZyIpOwogICAgIHJldHVybiBCeXRlQ29kZVBhcnNl
cihncmFwaCkucGFyc2UoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkFQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkFQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyArMjA0LDYgQEAg
cHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtQ0ZBKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENGQSBQaGFzZSIpOwogICAgIHJldHVybiBydW5Q
aGFzZTxDRkFQaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MCw3ICszODAsNiBAQCBwcml2YXRlOgog
CiBib29sIHBlcmZvcm1DRkdTaW1wbGlmaWNhdGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBDRkcgU2ltcGxpZmljYXRpb24gUGhhc2Ui
KTsKICAgICByZXR1cm4gcnVuUGhhc2U8Q0ZHU2ltcGxpZmljYXRpb25QaGFzZT4oZ3JhcGgpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0
aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcy
LDggKzcyLDYgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGZyZWVVbm5lY2Vzc2FyeU5vZGVz
KCkKICAgICB7Ci0gICAgICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQ1BT
IFJldGhyZWFkaW5nOiBmcmVlVW5uZWNlc3NhcnlOb2RlcyIpOwotICAgICAgICAKICAgICAgICAg
Zm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0lu
ZGV4LS07KSB7CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2so
YmxvY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQpAQCAtMzYxLDggKzM1OSw2IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjYW5vbmljYWxpemVMb2NhbHNJbkJsb2NrcygpCiAg
ICAgewotICAgICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENQUyBSZXRo
cmVhZGluZzogY2Fub25pY2FsaXplTG9jYWxzSW5CbG9ja3MiKTsKLSAgICAgICAgCiAgICAgICAg
IGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJ
bmRleC0tOykgewogICAgICAgICAgICAgbV9ibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRl
eCk7CiAgICAgICAgICAgICBjYW5vbmljYWxpemVMb2NhbHNJbkJsb2NrKCk7CkBAIC0zODQsOCAr
MzgwLDYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIFZlY3RvcjxQaGlTdGFja0VudHJ5LCAx
Mjg+JiBwaGlTdGFjayA9IG9wZXJhbmRLaW5kID09IEFyZ3VtZW50T3BlcmFuZCA/IG1fYXJndW1l
bnRQaGlTdGFjayA6IG1fbG9jYWxQaGlTdGFjazsKICAgICAgICAgCi0gICAgICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQ1BTIFJldGhyZWFkaW5nOiBwcm9wYWdhdGVQaGlz
Iik7Ci0gICAgICAgIAogICAgICAgICAvLyBFbnN1cmUgdGhhdCBhdHRlbXB0cyB0byB1c2UgdGhp
cyBmYWlsIGluc3RhbnRseS4KICAgICAgICAgbV9ibG9jayA9IDA7CiAgICAgICAgIApAQCAtNTIw
LDcgKzUxNCw2IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybUNQU1JldGhyZWFkaW5nKEdyYXBo
JiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENQUyBS
ZXRocmVhZGluZyBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxDUFNSZXRocmVhZGluZ1Bo
YXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NF
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NF
UGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAxLDEzICs3MDEsMTEgQEAgcHVi
bGljOgogCiBib29sIHBlcmZvcm1Mb2NhbENTRShHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBMb2NhbENTRSBQaGFzZSIpOwogICAgIHJldHVy
biBydW5QaGFzZTxMb2NhbENTRVBoYXNlPihncmFwaCk7CiB9CiAKIGJvb2wgcGVyZm9ybUdsb2Jh
bENTRShHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24o
IkRGRyBHbG9iYWxDU0UgUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8R2xvYmFsQ1NFUGhh
c2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbGVh
blVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xlYW5VcFBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbGVhblVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw2
IEBAIHB1YmxpYzoKICAgICAKIGJvb2wgcGVyZm9ybUNsZWFuVXAoR3JhcGgmIGdyYXBoKQogewot
ICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQ2xlYW4gVXAgUGhhc2UiKTsK
ICAgICByZXR1cm4gcnVuUGhhc2U8Q2xlYW5VcFBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI0LDcgKzgyNCw2
IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybUNvbnN0YW50Rm9sZGluZyhHcmFwaCYgZ3JhcGgp
CiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBDb25zdGFudCBGb2xk
aW5nIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPENvbnN0YW50Rm9sZGluZ1BoYXNlPihn
cmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRI
b2lzdGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50SG9pc3RpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw2IEBAIHB1YmxpYzoKICAgICAKIGJvb2wgcGVyZm9ybUNv
bnN0YW50SG9pc3RpbmcoR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKCJERkcgQ29uc3RhbnQgSG9pc3RpbmcgUGhhc2UiKTsKICAgICByZXR1cm4gcnVu
UGhhc2U8Q29uc3RhbnRIb2lzdGluZ1BoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDcml0aWNhbEVkZ2VCcmVha2lu
Z1BoYXNlLmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcs
NyArODcsNiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1Dcml0aWNhbEVkZ2VCcmVha2luZyhH
cmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBD
cml0aWNhbCBFZGdlIEJyZWFraW5nIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPENyaXRp
Y2FsRWRnZUJyZWFraW5nUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAs
NyArMTUwLDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtRENFKEdyYXBoJiBncmFwaCkKIHsK
LSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIERDRSBQaGFzZSIpOwogICAg
IHJldHVybiBydW5QaGFzZTxEQ0VQaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDYgQEAKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIk9wdGlvbnMuaCIKLSNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRl
ICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogCkBAIC02MSw4
ICs2MCw2IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKICAgICB1bnNp
Z25lZCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIGNvbnN0IE9wZXJhbmRzPEpTVmFsdWU+JiBtdXN0
SGFuZGxlVmFsdWVzLAogICAgIFBhc3NSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
PiBjYWxsYmFjaykKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENv
bXBpbGF0aW9uIChEcml2ZXIpIik7Ci0gICAgCiAgICAgaWYgKCFPcHRpb25zOjpieXRlY29kZVJh
bmdlVG9ERkdDb21waWxlKCkuaXNJblJhbmdlKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgp
KQogICAgICAgICB8fCAhRnVuY3Rpb25XaGl0ZWxpc3Q6OmVuc3VyZUdsb2JhbFdoaXRlbGlzdCgp
LmNvbnRhaW5zKGNvZGVCbG9jaykpCiAgICAgICAgIHJldHVybiBDb21waWxhdGlvbkZhaWxlZDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2
aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ0Niw3ICsyNDQ2LDYgQEAgcHJpdmF0ZToKICAgICAK
IGJvb2wgcGVyZm9ybUZpeHVwKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbigiREZHIEZpeHVwIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPEZp
eHVwUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjgsOCArNTY4LDYgQEAgdm9pZCBHcmFw
aDo6ZGV0aHJlYWQoKQogICAgIGlmIChsb2dDb21waWxhdGlvbkNoYW5nZXMoKSkKICAgICAgICAg
ZGF0YUxvZygiRGV0aHJlYWRpbmcgREZHIGdyYXBoLlxuIik7CiAgICAgCi0gICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBEZXRocmVhZGluZyIpOwotICAgIAogICAgIGZvciAo
QmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOyBibG9ja0luZGV4LS07KSB7
CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ibG9ja3NbYmxvY2tJbmRleF0uZ2V0KCk7
CiAgICAgICAgIGlmICghYmxvY2spCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAkocmV2aXNp
b24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tD
b21iaW5pbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MSw3ICszOTEsNiBAQCBwcml2
YXRlOgogICAgIAogYm9vbCBwZXJmb3JtSW50ZWdlckNoZWNrQ29tYmluaW5nKEdyYXBoJiBncmFw
aCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIEludGVnZXIgQ2hl
Y2sgQ29tYmluaW5nIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPEludGVnZXJDaGVja0Nv
bWJpbmluZ1BoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
dGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3MCw3
ICsxNzcwLDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtSW50ZWdlclJhbmdlT3B0aW1pemF0
aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigi
REZHIEludGVnZXIgUmFuZ2UgT3B0aW1pemF0aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBo
YXNlPEludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlk
YXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw2IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVy
Zm9ybUludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIEludmFsaWRhdGlvbiBQb2ludCBJbmplY3Rp
b24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8SW52YWxpZGF0aW9uUG9pbnRJbmplY3Rp
b25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiw4ICsz
MjYsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAKIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGUoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVn
aW9uKCJERkcgQmFja2VuZCIpOwotCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxl
RW50cnkoKTsKICAgICBtX3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2
ZUpJVD4oKnRoaXMpOwpAQCAtMzg3LDggKzM4NSw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBp
bGUoKQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogewotICAgIFNhbXBs
aW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQmFja2VuZCIpOwotICAgIAogICAgIHNldFN0
YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYxLDcgKzM2MSw2IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybUxJQ00oR3JhcGgmIGdyYXBo
KQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgTElDTSBQaGFzZSIp
OwogICAgIHJldHVybiBydW5QaGFzZTxMSUNNUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVD
YXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDYgQEAgcHVibGljOgogCiBi
b29sIHBlcmZvcm1MaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlKEdyYXBoJiBncmFw
aCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIExpdmUgQ2F0Y2gg
VmFyaWFibGVzIFByZXNlcnZhdGlvbiBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxMaXZl
Q2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFz
ZS5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSw2
IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMoR3JhcGgmIGdyYXBo
KQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgTGl2ZW5lc3MgQW5h
bHlzaXMgUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8TGl2ZW5lc3NBbmFseXNpc1BoYXNl
PihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFBy
ZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgz
NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDcgKzE4Myw2IEBAIHB1YmxpYzoKIAog
Ym9vbCBwZXJmb3JtTG9vcFByZUhlYWRlckNyZWF0aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBT
YW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIExvb3AgUHJlLUhlYWRlciBDcmVhdGlv
biBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFz
ZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGlt
YWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4
MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNiBAQCBwdWJsaWM6CiAK
IGJvb2wgcGVyZm9ybU1heGltYWxGbHVzaEluc2VydGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBGbHVzaCBFdmVyeXRoaW5nIEluc2Vy
dGlvbiBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxNYXhpbWFsRmx1c2hJbnNlcnRpb25Q
aGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01v
dkhpbnRSZW1vdmFsUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNiBAQCBwcml2YXRlOgogICAgIAogYm9vbCBwZXJmb3Jt
TW92SGludFJlbW92YWwoR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKCJERkcgTW92SGludCBSZW1vdmFsIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBo
YXNlPE1vdkhpbnRSZW1vdmFsUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5
c2lzUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDIsNyArMTAyLDYgQEAgcHVibGljOgogCiBib29sIHBlcmZvcm1PU1JBdmFpbGFiaWxpdHlB
bmFseXNpcyhHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdp
b24oIkRGRyBPU1IgQXZhaWxhYmlsaXR5IEFuYWx5c2lzIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1
blBoYXNlPE9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBv
aW50Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDcsNyArMTQ3LDYgQEAgcHVibGljOgogCiBib29sIHBlcmZvcm1PU1JFbnRyeXBv
aW50Q3JlYXRpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5n
UmVnaW9uKCJERkcgT1NSIEVudHJ5cG9pbnQgQ3JlYXRpb24iKTsKICAgICByZXR1cm4gcnVuUGhh
c2U8T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNp
b24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsOCArMTEyLDYgQEAgZXh0ZXJuICJDIiB7CiAK
IHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQogewotICAgIFNhbXBsaW5nUmVn
aW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgT1NSIEV4aXQgQ29tcGlsYXRpb24iKTsKLQogICAgIGlm
IChleGVjLT52bSgpLmNhbGxGcmFtZUZvckNhdGNoKQogICAgICAgICBSRUxFQVNFX0FTU0VSVChl
eGVjLT52bSgpLmNhbGxGcmFtZUZvckNhdGNoID09IGV4ZWMpOwogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRp
b25TaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjExLDcgKzIyMTEsNiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1PYmplY3RB
bGxvY2F0aW9uU2lua2luZyhHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oIkRGRyBPYmplY3QgQWxsb2NhdGlvbiBTaW5raW5nIFBoYXNlIik7CiAgICAg
cmV0dXJuIHJ1blBoYXNlPE9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U+KGdyYXBoKTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiUmVwYXRj
aC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlN0cmluZ0NvbnN0
cnVjdG9yLmgiCisjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiU3ltYm9sLmgi
CiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUlubGlu
ZXMuaCIKQEAgLTYyMSw2ICs2MjIsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFyCiAgICAgICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25SZWdFeHBFeGVjU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEpTU3RyaW5nKiBhcmd1bWVudCkK
IHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAg
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICAKQEAgLTYyOSw2ICs2MzIsOCBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlCiAgICAgICAgIAogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1bWVudCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAg
ICAKQEAgLTY0Miw2ICs2NDcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblJlCiAgICAgICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25S
ZWdFeHBFeGVjR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QXJndW1lbnQpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOworICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKQEAgLTY1OSw2ICs2NjYsOCBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlCiAgICAgICAgIAogc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0
LCBKU1N0cmluZyogaW5wdXQpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVy
U2NvcGUoZmFsc2UpOworICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKQEAgLTY2Nyw2ICs2
NzYsOCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0CiAKIHNpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQogeworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCkBA
IC02ODAsNiArNjkxLDggQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVz
dAogCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYyhFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnQpCiB7CisgICAgU3Vw
ZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGU7CisgICAgCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBl
eGVjKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGhhbnRvbUluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODEsNyArMTgxLDYgQEAgcHJpdmF0ZToKICAgICAKIGJvb2wgcGVyZm9ybVBoYW50
b21JbnNlcnRpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5n
UmVnaW9uKCJERkcgUGhhbnRvbSBJbnNlcnRpb24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhh
c2U8UGhhbnRvbUluc2VydGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDcgKzE3NCw2
IEBAIHZvaWQgUGxhbjo6Y29tcGlsZUluVGhyZWFkKExvbmdMaXZlZFN0YXQKICAgICBpZiAocmVw
b3J0Q29tcGlsZVRpbWVzKCkpCiAgICAgICAgIGNvZGVCbG9ja05hbWUgPSB0b0NTdHJpbmcoKmNv
ZGVCbG9jayk7CiAgICAgCi0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBD
b21waWxhdGlvbiAoUGxhbikiKTsKICAgICBDb21waWxhdGlvblNjb3BlIGNvbXBpbGF0aW9uU2Nv
cGU7CiAKICAgICBpZiAobG9nQ29tcGlsYXRpb25DaGFuZ2VzKG1vZGUpKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3
ICs4Niw2IEBAIHB1YmxpYzoKIAogYm9vbCBwZXJmb3JtUHJlZGljdGlvbkluamVjdGlvbihHcmFw
aCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBQcmVk
aWN0aW9uIEluamVjdGlvbiBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxQcmVkaWN0aW9u
SW5qZWN0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE2LDcgKzEwMTYs
NiBAQCBwcml2YXRlOgogICAgIAogYm9vbCBwZXJmb3JtUHJlZGljdGlvblByb3BhZ2F0aW9uKEdy
YXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFBy
ZWRpY3Rpb24gUHJvcGFnYXRpb24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8UHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5r
aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODMsNyArNTgzLDYgQEAgcHVibGljOgog
ICAgIAogYm9vbCBwZXJmb3JtUHV0U3RhY2tTaW5raW5nKEdyYXBoJiBncmFwaCkKIHsKLSAgICBT
YW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFB1dFN0YWNrIFNpbmtpbmcgUGhhc2Ui
KTsKICAgICByZXR1cm4gcnVuUGhhc2U8UHV0U3RhY2tTaW5raW5nUGhhc2U+KGdyYXBoKTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVy
c2lvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyAr
NDE2LDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtU1NBQ29udmVyc2lvbihHcmFwaCYgZ3Jh
cGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBTU0EgQ29udmVy
c2lvbiBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdy
YXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmlu
Z1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NT
QUxvd2VyaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIs
NyArMTIyLDYgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtU1NBTG93ZXJpbmcoR3JhcGgmIGdy
YXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgU1NBIExvd2Vy
aW5nIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFNTQUxvd2VyaW5nUGhhc2U+KGdyYXBo
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTg4LDYg
KzI5ODgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
IH0KIAogICAgIGNhc2UgUmVnRXhwRXhlYzogeworICAgICAgICBib29sIHNhbXBsZSA9IGZhbHNl
OworCisgICAgICAgIGlmIChzYW1wbGUpCisgICAgICAgICAgICBtX2ppdC5pbmNyZW1lbnRTdXBl
clNhbXBsZXJDb3VudCgpOworICAgICAgICAKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
Z2xvYmFsT2JqZWN0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiA9IGdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgCkBAIC0zMDA2LDYgKzMw
MTEsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisKKyAgICAgICAg
ICAgICAgICBpZiAoc2FtcGxlKQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5kZWNyZW1lbnRT
dXBlclNhbXBsZXJDb3VudCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCkBAIC0zMDIxLDYgKzMwMjksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBub2Rl
KTsKKworICAgICAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAgICAgICAgICAgICBtX2ppdC5kZWNy
ZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgCkBAIC0zMDM1LDYgKzMwNDYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAg
IAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisKKyAgICAgICAg
aWYgKHNhbXBsZSkKKyAgICAgICAgICAgIG1faml0LmRlY3JlbWVudFN1cGVyU2FtcGxlckNvdW50
KCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMzA5Myw2ICszMTA3LDExIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAKICAgICBjYXNlIFN0
cmluZ1JlcGxhY2U6IHsKKyAgICAgICAgYm9vbCBzYW1wbGUgPSBmYWxzZTsKKworICAgICAgICBp
ZiAoc2FtcGxlKQorICAgICAgICAgICAgbV9qaXQuaW5jcmVtZW50U3VwZXJTYW1wbGVyQ291bnQo
KTsKKyAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3Ry
aW5nVXNlCiAgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhw
T2JqZWN0VXNlCiAgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3Ry
aW5nVXNlKSB7CkBAIC0zMTEyLDYgKzMxMzEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZWdFeHBHUFIpOwogICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChzYW1wbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5kZWNyZW1lbnRTdXBl
clNhbXBsZXJDb3VudCgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zMTMzLDYgKzMxNTQsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgcmVwbGFjZUdQUik7
CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgY2VsbFJl
c3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgICAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAg
ICAgICAgICAgICBtX2ppdC5kZWNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zMTUwLDYgKzMxNzMsOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICByZXBsYWNl
R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgICAgICBpZiAoc2FtcGxlKQorICAgICAgICAgICAg
bV9qaXQuZGVjcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlv
dXRQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dGFja0xheW91dFBoYXNlLmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYx
LDcgKzI2MSw2IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybVN0YWNrTGF5b3V0KEdyYXBoJiBn
cmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFN0YWNrIExh
eW91dCBQaGFzZSIpOwogICAgIHJldHVybiBydW5QaGFzZTxTdGFja0xheW91dFBoYXNlPihncmFw
aCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0
aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4
ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyAr
OTgsNiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1TdGF0aWNFeGVjdXRpb25Db3VudEVzdGlt
YXRpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9u
KCJERkcgU3RhdGljIEV4ZWN1dGlvbiBDb3VudCBFc3RpbWF0aW9uIik7CiAgICAgcmV0dXJuIHJ1
blBoYXNlPFN0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlPihncmFwaCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTM0LDEzICs1MzQsMTEgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3Jt
RmFzdFN0b3JlQmFycmllckluc2VydGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBGYXN0IFN0b3JlIEJhcnJpZXIgSW5zZXJ0aW9uIFBo
YXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFN0b3JlQmFycmllckluc2VydGlvblBoYXNlPFBo
YXNlTW9kZTo6RmFzdD4+KGdyYXBoKTsKIH0KIAogYm9vbCBwZXJmb3JtR2xvYmFsU3RvcmVCYXJy
aWVySW5zZXJ0aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbigiREZHIEdsb2JhbCBTdG9yZSBCYXJyaWVyIEluc2VydGlvbiBQaGFzZSIpOwogICAg
IHJldHVybiBydW5QaGFzZTxTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZTxQaGFzZU1vZGU6Okds
b2JhbD4+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTgzNDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTAsNyArMzkwLDYgQEAgcHJpdmF0ZToKICAgICAKIGJv
b2wgcGVyZm9ybVN0cmVuZ3RoUmVkdWN0aW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFN0cmVuZ3RoIFJlZHVjdGlvbiBQaGFzZSIpOwog
ICAgIHJldHVybiBydW5QaGFzZTxTdHJlbmd0aFJlZHVjdGlvblBoYXNlPihncmFwaCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlLmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMTYgKzMyLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi0v
LyBDb21tZW50IG91dCB0aGUgZW1wdHkgU0FNUExFKCkgZGVmaW5pdGlvbiwgYW5kIHVuY29tbWVu
dCB0aGUgb25lIHRoYXQgdXNlcyBTYW1wbGluZ1JlZ2lvbiwgaWYKLS8vIHlvdSB3YW50IGV4dHJl
bWVseSBmaW5lLWdyYWluZWQgcHJvZmlsaW5nIGluIHRoaXMgY29kZS4KLSNkZWZpbmUgU0FNUExF
KG5hbWUpIAotLy8jZGVmaW5lIFNBTVBMRShuYW1lKSBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1Jl
Z2lvbihuYW1lKQotCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogdm9pZCBTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOjphc3NlcnRJc1JlZ2lzdGVyZWQoR3JhcGgmIGdyYXBoKSBjb25zdAogewotICAgIFNB
TVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBhc3NlcnRJc1JlZ2lzdGVyZWQiKTsKLQogICAg
IGlmIChpc1RvcCgpKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC01Miw4ICs0NSw2IEBAIHZv
aWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YXNzZXJ0SXNSZWcKIAogdm9pZCBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjpjbG9iYmVyKCkKIHsKLSAgICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0
VmFsdWUgY2xvYmJlciIpOwotCiAgICAgLy8gVGhlIHByZW1pc2Ugb2YgdGhpcyBhcHByb2FjaCB0
byBjbG9iYmVyaW5nIGlzIHRoYXQgYW55dGltZSB3ZSBpbnRyb2R1Y2UKICAgICAvLyBhIHdhdGNo
YWJsZSBzdHJ1Y3R1cmUgaW50byBhbiBhYnN0cmFjdCB2YWx1ZSwgd2Ugd2F0Y2hwb2ludCBpdC4g
WW91IGNhbiBhc3NlcnQKICAgICAvLyB0aGF0IHRoaXMgaG9sZHMgYnkgY2FsbGluZyBhc3NlcnRJ
c1dhdGNoZWQoKS4KQEAgLTgyLDggKzczLDYgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
OjpjbG9iYmVyKCkKIAogdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvYnNlcnZlVHJhbnNp
dGlvbihTdHJ1Y3R1cmUqIGZyb20sIFN0cnVjdHVyZSogdG8pCiB7Ci0gICAgU0FNUExFKCJTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlIG9ic2VydmVUcmFuc2l0aW9uIik7Ci0gICAgCiAgICAgQVNTRVJU
KCFmcm9tLT5kZmdTaG91bGRXYXRjaCgpKTsKIAogICAgIGlmIChpc1RvcCgpKQpAQCAtMTAxLDgg
KzkwLDYgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvYnNlcnZlVHJhbgogCiB2b2lk
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9ucyhjb25zdCBUcmFuc2l0
aW9uVmVjdG9yJiB2ZWN0b3IpCiB7Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
IG9ic2VydmVUcmFuc2l0aW9ucyIpOwotCiAgICAgaWYgKGlzVG9wKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKQEAgLTEyNSw4ICsxMTIsNiBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6
Om9ic2VydmVUcmFuCiAKIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewotICAgIFNBTVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBhZGQi
KTsKLQogICAgIGlmIChpc1RvcCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0x
NDEsOCArMTI2LDYgQEAgYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjphZGQoU3RydWN0dQog
CiBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlKGNvbnN0IFN0cnVjdHVyZVNldCYg
b3RoZXIpCiB7Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIG1lcmdlIHNldCIp
OwotCiAgICAgaWYgKGlzVG9wKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTE1
MSw4ICsxMzQsNiBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlKGNvbnN0CiAK
IGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VTbG93KGNvbnN0IFN0cnVjdHVyZUFi
c3RyYWN0VmFsdWUmIG90aGVyKQogewotICAgIFNBTVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZSBtZXJnZSB2YWx1ZSBzbG93Iik7Ci0KICAgICAvLyBJdCBpc24ndCBpbW1lZGlhdGVseSBvYnZp
b3VzIHRoYXQgdGhlIGNvZGUgYmVsb3cgaXMgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLCBzbyBsZXQn
cyBnbwogICAgIC8vIHRocm91Z2ggaXQuCiAgICAgLy8KQEAgLTE5Niw4ICsxNzcsNiBAQCBib29s
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlU2xvdyhjCiAKIGJvb2wgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZTo6bWVyZ2VOb3RUb3AoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikKIHsKLSAg
ICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFsdWUgbWVyZ2Ugbm90IHRvcCIpOwotCiAgICAg
aWYgKCFtX3NldC5tZXJnZShvdGhlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAg
LTIwOSw4ICsxODgsNiBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlTm90VG9w
CiAKIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNl
dCYgb3RoZXIpCiB7Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIGZpbHRlciBz
ZXQiKTsKLQogICAgIGlmIChpc1RvcCgpKSB7CiAgICAgICAgIG1fc2V0ID0gb3RoZXI7CiAgICAg
ICAgIHJldHVybjsKQEAgLTI0NCw4ICsyMjEsNiBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFs
dWU6OmZpbHRlcihjb25zCiAKIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKGNv
bnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKQogewotICAgIFNBTVBMRSgiU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZSBmaWx0ZXIgdmFsdWUiKTsKLQogICAgIGlmIChvdGhlci5pc1RvcCgp
KQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC0yNzAsOCArMjQ1LDYgQEAgdm9pZCBTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXIoY29ucwogCiB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFs
dWU6OmZpbHRlclNsb3coU3BlY3VsYXRlZFR5cGUgdHlwZSkKIHsKLSAgICBTQU1QTEUoIlN0cnVj
dHVyZUFic3RyYWN0VmFsdWUgZmlsdGVyIHR5cGUgc2xvdyIpOwotCiAgICAgaWYgKCEodHlwZSAm
IFNwZWNDZWxsKSkgewogICAgICAgICBjbGVhcigpOwogICAgICAgICByZXR1cm47CkBAIC0yODcs
OCArMjYwLDYgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJTbG93KAogCiBi
b29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNvbnRhaW5zKFN0cnVjdHVyZSogc3RydWN0dXJl
KSBjb25zdAogewotICAgIFNBTVBMRSgiU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBjb250YWlucyIp
OwotCiAgICAgaWYgKGlzSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCkBA
IC0yOTcsOCArMjY4LDYgQEAgYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjb250YWlucyhT
dAogCiBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YoY29uc3QgU3RydWN0
dXJlU2V0JiBvdGhlcikgY29uc3QKIHsKLSAgICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFs
dWUgaXNTdWJzZXRPZiBzZXQiKTsKLQogICAgIGlmIChpc0luZmluaXRlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKQEAgLTMwNyw4ICsyNzYsNiBAQCBib29sIFN0cnVjdHVyZUFic3Ry
YWN0VmFsdWU6OmlzU3Vic2V0T2YoCiAKIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNT
dWJzZXRPZihjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKIHsKLSAg
ICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFsdWUgaXNTdWJzZXRPZiB2YWx1ZSIpOwotCiAg
ICAgaWYgKGlzVG9wKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTMzMCw4ICsy
OTcsNiBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YoCiAKIGJvb2wg
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdXBlcnNldE9mKGNvbnN0IFN0cnVjdHVyZVNldCYg
b3RoZXIpIGNvbnN0CiB7Ci0gICAgU0FNUExFKCJTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIGlzU3Vw
ZXJzZXRPZiBzZXQiKTsKLQogICAgIGlmIChpc0luZmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIApAQCAtMzQwLDggKzMwNSw2IEBAIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZTo6aXNTdXBlcnNldE8KIAogYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvdmVybGFwcyhj
b25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdAogewotICAgIFNBTVBMRSgiU3RydWN0dXJl
QWJzdHJhY3RWYWx1ZSBvdmVybGFwcyBzZXQiKTsKLQogICAgIGlmIChpc0luZmluaXRlKCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIApAQCAtMzUwLDggKzMxMyw2IEBAIGJvb2wgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMoY28KIAogYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlOjpvdmVybGFwcyhjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QK
IHsKLSAgICBTQU1QTEUoIlN0cnVjdHVyZUFic3RyYWN0VmFsdWUgb3ZlcmxhcHMgdmFsdWUiKTsK
LQogICAgIGlmIChvdGhlci5pc0luZmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IApAQCAtMzYwLDggKzMyMSw2IEBAIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3Zlcmxh
cHMoY28KIAogYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjplcXVhbHNTbG93KGNvbnN0IFN0
cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogewotICAgIFNBTVBMRSgiU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZSBlcXVhbHNTbG93Iik7Ci0KICAgICBBU1NFUlQobV9zZXQubV9wb2lu
dGVyICE9IG90aGVyLm1fc2V0Lm1fcG9pbnRlcik7CiAgICAgQVNTRVJUKCFpc1RvcCgpKTsKICAg
ICBBU1NFUlQoIW90aGVyLmlzVG9wKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNyArMTkxLDYgQEAg
cHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtU3RydWN0dXJlUmVnaXN0cmF0aW9uKEdyYXBoJiBncmFw
aCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFN0cnVjdHVyZSBS
ZWdpc3RyYXRpb24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8U3RydWN0dXJlUmVnaXN0
cmF0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDYgQEAgcHJp
dmF0ZToKIAogYm9vbCBwZXJmb3JtVGllclVwQ2hlY2tJbmplY3Rpb24oR3JhcGgmIGdyYXBoKQog
ewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgVGllci11cCBDaGVjayBJ
bmplY3Rpb24iKTsKICAgICByZXR1cm4gcnVuUGhhc2U8VGllclVwQ2hlY2tJbmplY3Rpb25QaGFz
ZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVD
aGVja0hvaXN0aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUyNiw3ICs1MjYsNiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZv
cm1UeXBlQ2hlY2tIb2lzdGluZyhHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24g
c2FtcGxpbmdSZWdpb24oIkRGRyBUeXBlIENoZWNrIEhvaXN0aW5nIFBoYXNlIik7CiAgICAgcmV0
dXJuIHJ1blBoYXNlPFR5cGVDaGVja0hvaXN0aW5nUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVbmlmaWNhdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VuaWZpY2F0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VuaWZp
Y2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw2IEBAIHB1YmxpYzoK
IAogYm9vbCBwZXJmb3JtVW5pZmljYXRpb24oR3JhcGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgVW5pZmljYXRpb24gUGhhc2UiKTsKICAgICByZXR1
cm4gcnVuUGhhc2U8VW5pZmljYXRpb25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFz
ZS5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw3ICszMjUs
NiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1WYXJhcmdzRm9yd2FyZGluZyhHcmFwaCYgZ3Jh
cGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBWYXJhcmdzIEZv
cndhcmRpbmcgUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8VmFyYXJnc0ZvcndhcmRpbmdQ
aGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zp
cnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxS
ZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMs
NiBAQCBwdWJsaWM6CiAKIGJvb2wgcGVyZm9ybVZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb24oR3Jh
cGgmIGdyYXBoKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgVmly
dHVhbCBSZWdpc3RlciBBbGxvY2F0aW9uIFBoYXNlIik7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFZp
cnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MSw3ICsxMzEsNiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1XYXRjaHBvaW50Q29sbGVjdGlv
bihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRG
RyBXYXRjaHBvaW50IENvbGxlY3Rpb24gUGhhc2UiKTsKICAgICByZXR1cm4gcnVuUGhhc2U8V2F0
Y2hwb2ludENvbGxlY3Rpb25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0NzUsNiArNjQ3NSwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21waWxl
UmVnRXhwRXhlYygpCiAgICAgeworICAgICAgICBib29sIHNhbXBsZSA9IGZhbHNlOworCisgICAg
ICAgIGlmIChzYW1wbGUpCisgICAgICAgICAgICBtX291dC5pbmNyZW1lbnRTdXBlclNhbXBsZXJD
b3VudCgpOworICAgICAgICAKICAgICAgICAgTFZhbHVlIGdsb2JhbE9iamVjdCA9IGxvd0NlbGwo
bV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDIo
KS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlKSB7CkBAIC02NDg2LDYgKzY0OTEsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvblJlZ0V4cEV4ZWNTdHJpbmcpLCBtX2NhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LAogICAgICAg
ICAgICAgICAgICAgICBiYXNlLCBhcmd1bWVudCk7CiAgICAgICAgICAgICAgICAgc2V0SlNWYWx1
ZShyZXN1bHQpOworICAgICAgICAgICAgICAgIGlmIChzYW1wbGUpCisgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmRlY3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC02NDk0LDYgKzY1MDEsOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uUmVnRXhwRXhlYyksIG1fY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGJhc2UsCiAgICAgICAg
ICAgICAgICAgYXJndW1lbnQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAg
ICAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAgICAgICAgICAgICBtX291dC5kZWNyZW1lbnRTdXBl
clNhbXBsZXJDb3VudCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IApAQCAtNjUwMyw2ICs2NTEyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEludDY0LCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMpLCBtX2NhbGxGcmFtZSwgZ2xv
YmFsT2JqZWN0LCBiYXNlLAogICAgICAgICAgICAgYXJndW1lbnQpOwogICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CisKKyAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAgICAgICAgIG1fb3V0LmRl
Y3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlUmVn
RXhwVGVzdCgpCkBAIC02NTU5LDYgKzY1NzEsMTEgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lk
IGNvbXBpbGVTdHJpbmdSZXBsYWNlKCkKICAgICB7CisgICAgICAgIGJvb2wgc2FtcGxlID0gZmFs
c2U7CisKKyAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAgICAgICAgIG1fb3V0LmluY3JlbWVudFN1
cGVyU2FtcGxlckNvdW50KCk7CisgICAgICAgIAogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlCiAgICAgICAgICAgICAmJiBtX25vZGUtPmNoaWxkMigp
LnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKICAgICAgICAgICAgICYmIG1fbm9kZS0+Y2hp
bGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewpAQCAtNjU3Myw2ICs2NTkwLDggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBzdHJpbmcsIHJlZ0V4
cCk7CiAKICAgICAgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoc2FtcGxlKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuZGVj
cmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTY1ODYsNiArNjYwNSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHN0cmluZywgcmVnRXhwLCByZXBs
YWNlKTsKIAogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgaWYg
KHNhbXBsZSkKKyAgICAgICAgICAgICAgICBtX291dC5kZWNyZW1lbnRTdXBlclNhbXBsZXJDb3Vu
dCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNjU5NSw2
ICs2NjE2LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDMoKSkpOwogCiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgaWYgKHNhbXBs
ZSkKKyAgICAgICAgICAgIG1fb3V0LmRlY3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCk7CiAgICAg
fQogCiAgICAgdm9pZCBjb21waWxlR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJl
dmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENv
bXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDggKzUzMiw2IEBAIHN0YXRpYyB2b2lk
IGNvbXBpbGVTdHViKAogCiBleHRlcm4gIkMiIHZvaWQqIGNvbXBpbGVGVExPU1JFeGl0KEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgZXhpdElEKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKCJGVEwgT1NSIEV4aXQgQ29tcGlsYXRpb24iKTsKLQogICAgIGlmIChzaG91bGRE
dW1wRGlzYXNzZW1ibHkoKSB8fCBPcHRpb25zOjp2ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6dmVy
Ym9zZUZUTE9TUkV4aXQoKSkKICAgICAgICAgZGF0YUxvZygiQ29tcGlsaW5nIE9TUiBleGl0IHdp
dGggZXhpdElEID0gIiwgZXhpdElELCAiXG4iKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPdXRwdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT3V0cHV0LmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBA
CiAKICNpbmNsdWRlICJCM01hdGhFeHRyYXMuaCIKICNpbmNsdWRlICJCM1N0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcy5oIgorI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEZUTCB7CiAKQEAgLTI5Niw2ICsyOTcsMjMgQEAgdm9pZCBPdXRwdXQ6OnN0
b3JlKExWYWx1ZSB2YWx1ZSwgVHlwZWRQbwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKK1R5cGVkUG9pbnRlciBPdXRwdXQ6OmFic29sdXRlKHZvaWQqIGFkZHJlc3MpCit7
CisgICAgcmV0dXJuIFR5cGVkUG9pbnRlcihtX2hlYXBzLT5hYnNvbHV0ZVthZGRyZXNzXSwgY29u
c3RJbnRQdHIoYWRkcmVzcykpOworfQorCit2b2lkIE91dHB1dDo6aW5jcmVtZW50U3VwZXJTYW1w
bGVyQ291bnQoKQoreworICAgIFR5cGVkUG9pbnRlciBjb3VudGVyID0gYWJzb2x1dGUoYml0d2lz
ZV9jYXN0PHZvaWQqPigmZ19zdXBlclNhbXBsZXJDb3VudCkpOworICAgIHN0b3JlMzIoYWRkKGxv
YWQzMihjb3VudGVyKSwgaW50MzJPbmUpLCBjb3VudGVyKTsKK30KKwordm9pZCBPdXRwdXQ6OmRl
Y3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCkKK3sKKyAgICBUeXBlZFBvaW50ZXIgY291bnRlciA9
IGFic29sdXRlKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmdfc3VwZXJTYW1wbGVyQ291bnQpKTsKKyAg
ICBzdG9yZTMyKHN1Yihsb2FkMzIoY291bnRlciksIGludDMyT25lKSwgY291bnRlcik7Cit9CisK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKIAogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lvbiAxOTgzNDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMDYsMTAgKzMwNiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGhlYXAuYmFzZUlu
ZGV4KCp0aGlzLCBiYXNlLCBpbmRleCwgaW5kZXhBc0NvbnN0YW50LCBvZmZzZXQpOwogICAgIH0K
IAotICAgIFR5cGVkUG9pbnRlciBhYnNvbHV0ZSh2b2lkKiBhZGRyZXNzKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIFR5cGVkUG9pbnRlcihtX2hlYXBzLT5hYnNvbHV0ZVthZGRyZXNzXSwgY29uc3RJ
bnRQdHIoYWRkcmVzcykpOwotICAgIH0KKyAgICBUeXBlZFBvaW50ZXIgYWJzb2x1dGUodm9pZCog
YWRkcmVzcyk7CiAKICAgICBMVmFsdWUgbG9hZDhTaWduRXh0MzIoTFZhbHVlIGJhc2UsIGNvbnN0
IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ4U2lnbkV4dDMyKGFkZHJlc3MoYmFz
ZSwgZmllbGQpKTsgfQogICAgIExWYWx1ZSBsb2FkOFplcm9FeHQzMihMVmFsdWUgYmFzZSwgY29u
c3QgQWJzdHJhY3RIZWFwJiBmaWVsZCkgeyByZXR1cm4gbG9hZDhaZXJvRXh0MzIoYWRkcmVzcyhi
YXNlLCBmaWVsZCkpOyB9CkBAIC00NTQsNiArNDUxLDkgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gVmFsdWVGcm9tQmxvY2sodXBzaWxvbiwgbV9ibG9jayk7CiAgICAgfQogCisgICAgdm9pZCBp
bmNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpOworICAgIHZvaWQgZGVjcmVtZW50U3VwZXJTYW1w
bGVyQ291bnQoKTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogI3ByYWdtYSBtYXJrIC0gU3RhdGVz
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAx
OTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIldlYWtTZXRJbmxpbmVzLmgiCiAjaW5j
bHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsVmVjdG9ySXRlcmF0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4K
QEAgLTUxNSw4ICs1MTYsNiBAQCB2b2lkIEhlYXA6OmNvbXBsZXRlQWxsREZHUGxhbnMoKQogCiB2
b2lkIEhlYXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUsIHZvaWQqIHN0YWNrT3JpZ2lu
LCB2b2lkKiBzdGFja1RvcCwgTWFjaGluZVRocmVhZHM6OlJlZ2lzdGVyU3RhdGUmIGNhbGxlZVNh
dmVkUmVnaXN0ZXJzKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJHYXJi
YWdlIENvbGxlY3Rpb246IE1hcmtpbmciKTsKLQogICAgIEdDUEhBU0UoTWFya1Jvb3RzKTsKICAg
ICBBU1NFUlQoaXNWYWxpZFRocmVhZFN0YXRlKG1fdm0pKTsKIApAQCAtMTA5MCw4ICsxMDg5LDYg
QEAgdm9pZCBIZWFwOjpjb2xsZWN0QW5kU3dlZXAoSGVhcE9wZXJhdGlvbgogCiAgICAgY29sbGVj
dChjb2xsZWN0aW9uVHlwZSk7CiAKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigi
R2FyYmFnZSBDb2xsZWN0aW9uOiBTd2VlcGluZyIpOwotCiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBk
ZWZlckdDKCp0aGlzKTsKICAgICBtX29iamVjdFNwYWNlLnN3ZWVwKCk7CiAgICAgbV9vYmplY3RT
cGFjZS5zaHJpbmsoKTsKQEAgLTExMjEsOCArMTExOCw2IEBAIE5FVkVSX0lOTElORSB2b2lkIEhl
YXA6OmNvbGxlY3RJbXBsKEhlYXAKICAgICAgICAgYmVmb3JlID0gY3VycmVudFRpbWVNUygpOwog
ICAgIH0KICAgICAKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiR2FyYmFnZSBD
b2xsZWN0aW9uIik7Ci0gICAgCiAgICAgaWYgKHZtKCktPnR5cGVQcm9maWxlcigpKSB7CiAgICAg
ICAgIERlZmVyR0NGb3JBV2hpbGUgYXdoaWxlKCp0aGlzKTsKICAgICAgICAgdm0oKS0+dHlwZVBy
b2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiR0MiKSk7CkBAIC0x
NjAyLDEwICsxNTk3LDcgQEAgcHVibGljOgogdm9pZCBIZWFwOjp6b21iaWZ5RGVhZE9iamVjdHMo
KQogewogICAgIC8vIFN3ZWVwIG5vdyBiZWNhdXNlIGRlc3RydWN0b3JzIHdpbGwgY3Jhc2ggb25j
ZSB3ZSdyZSB6b21iaWZpZWQuCi0gICAgewotICAgICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbigiR2FyYmFnZSBDb2xsZWN0aW9uOiBTd2VlcGluZyIpOwotICAgICAgICBtX29iamVj
dFNwYWNlLnpvbWJpZnlTd2VlcCgpOwotICAgIH0KKyAgICBtX29iamVjdFNwYWNlLnpvbWJpZnlT
d2VlcCgpOwogICAgIEhlYXBJdGVyYXRpb25TY29wZSBpdGVyYXRpb25TY29wZSgqdGhpcyk7CiAg
ICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoRGVhZENlbGw8Wm9tYmlmeT4oaXRlcmF0aW9uU2NvcGUp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAko
cmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw4ICs5NCw2IEBAIE1hcmtlZEJsb2NrOjpGcmVl
TGlzdCBNYXJrZWRCbG9jazo6c3BlY2kKICAgICBBU1NFUlQoYmxvY2tTdGF0ZSAhPSBBbGxvY2F0
ZWQgJiYgYmxvY2tTdGF0ZSAhPSBGcmVlTGlzdGVkKTsKICAgICBBU1NFUlQoISghY2FsbERlc3Ry
dWN0b3JzICYmIHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkpKTsKIAotICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKCghY2FsbERlc3RydWN0b3JzICYmIGJsb2NrU3RhdGUgIT0gTmV3KSA/
ICJDYWxsaW5nIGRlc3RydWN0b3JzIiA6ICJzd2VlcGluZyIpOwotICAgIAogICAgIC8vIFRoaXMg
cHJvZHVjZXMgYSBmcmVlIGxpc3QgdGhhdCBpcyBvcmRlcmVkIGluIHJldmVyc2UgdGhyb3VnaCB0
aGUgYmxvY2suCiAgICAgLy8gVGhpcyBpcyBmaW5lLCBzaW5jZSB0aGUgYWxsb2NhdGlvbiBjb2Rl
IG1ha2VzIG5vIGFzc3VtcHRpb25zIGFib3V0IHRoZQogICAgIC8vIG9yZGVyIG9mIHRoZSBmcmVl
IGxpc3QuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYx
LDYgQEAKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgog
I2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50Lmgi
CiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCkBAIC0yOTgsOCArMjk3LDcgQEAgdm9pZCBzZXR1
cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoQ2FsbEZyYQogfQogCiBJbnRlcnByZXRlcjo6SW50ZXJw
cmV0ZXIoVk0mIHZtKQotICAgIDogbV9zYW1wbGVFbnRyeURlcHRoKDApCi0gICAgLCBtX3ZtKHZt
KQorICAgIDogbV92bSh2bSkKICAgICAsIG1fc3RhY2sodm0pCiAgICAgLCBtX2Vycm9ySGFuZGxp
bmdNb2RlUmVlbnRyeSgwKQogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTMyMywxMCArMzIxLDYg
QEAgdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZSgpCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwogI2VuZGlmCi0KLSNpZiBFTkFCTEUoT1BDT0RFX1NB
TVBMSU5HKQotICAgIGVuYWJsZVNhbXBsZXIoKTsKLSNlbmRpZgogfQogCiAjaWZkZWYgTkRFQlVH
CkBAIC04MTQsMjUgKzgwOCw4IEBAIHN0YXRpYyBpbmxpbmUgSlNPYmplY3QqIGNoZWNrZWRSZXR1
cm4oSlMKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLWNsYXNzIFNhbXBsaW5nU2NvcGUg
ewotcHVibGljOgotICAgIFNhbXBsaW5nU2NvcGUoSW50ZXJwcmV0ZXIqIGludGVycHJldGVyKQot
ICAgICAgICA6IG1faW50ZXJwcmV0ZXIoaW50ZXJwcmV0ZXIpCi0gICAgewotICAgICAgICBpbnRl
cnByZXRlci0+c3RhcnRTYW1wbGluZygpOwotICAgIH0KLSAgICB+U2FtcGxpbmdTY29wZSgpCi0g
ICAgewotICAgICAgICBtX2ludGVycHJldGVyLT5zdG9wU2FtcGxpbmcoKTsKLSAgICB9Ci1wcml2
YXRlOgotICAgIEludGVycHJldGVyKiBtX2ludGVycHJldGVyOwotfTsKLQogSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlY3V0YWJsZSogcHJvZ3JhbSwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTT2JqZWN0KiB0aGlzT2JqKQogewotICAgIFNhbXBsaW5nU2NvcGUgc2FtcGxp
bmdTY29wZSh0aGlzKTsKLQogICAgIEpTU2NvcGUqIHNjb3BlID0gdGhpc09iai0+Z2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbFNjb3BlKCk7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOwogCkBAIC05
NzEsMTEgKzk0OCw3IEBAIGZhaWxlZEpTT05QOgogICAgICAgICBwcm9maWxlci0+d2lsbEV4ZWN1
dGUoY2FsbEZyYW1lLCBwcm9ncmFtLT5zb3VyY2VVUkwoKSwgcHJvZ3JhbS0+Zmlyc3RMaW5lKCks
IHByb2dyYW0tPnN0YXJ0Q29sdW1uKCkpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKLSAg
ICBKU1ZhbHVlIHJlc3VsdDsKLSAgICB7Ci0gICAgICAgIFNhbXBsaW5nVG9vbDo6Q2FsbFJlY29y
ZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQoKSk7Ci0gICAgICAgIHJlc3VsdCA9IHByb2dyYW0t
PmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7Ci0gICAg
fQorICAgIEpTVmFsdWUgcmVzdWx0ID0gcHJvZ3JhbS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5leGVj
dXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKIAogICAgIGlmIChMZWdhY3lQcm9maWxlciogcHJv
ZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKICAgICAgICAgcHJvZmlsZXItPmRpZEV4ZWN1
dGUoY2FsbEZyYW1lLCBwcm9ncmFtLT5zb3VyY2VVUkwoKSwgcHJvZ3JhbS0+Zmlyc3RMaW5lKCks
IHByb2dyYW0tPnN0YXJ0Q29sdW1uKCkpOwpAQCAtMTAzMyw4ICsxMDA2LDYgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAg
ICAgewotICAgICAgICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBs
ZXIuZ2V0KCksICFpc0pTQ2FsbCk7Ci0KICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKICAg
ICAgICAgaWYgKGlzSlNDYWxsKQogICAgICAgICAgICAgcmVzdWx0ID0gY2FsbERhdGEuanMuZnVu
Y3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5leGVjdXRlKCZ2bSwg
JnByb3RvQ2FsbEZyYW1lKTsKQEAgLTExMDMsOCArMTA3NCw2IEBAIEpTT2JqZWN0KiBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKIAogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIHsKLSAg
ICAgICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdldCgp
LCAhaXNKU0NvbnN0cnVjdCk7Ci0KICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZS4KICAgICAg
ICAgaWYgKGlzSlNDb25zdHJ1Y3QpCiAgICAgICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3REYXRh
LmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpLT5l
eGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKQEAgLTExNTMsNyArMTEyMiw2IEBAIENhbGxG
cmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoQ2FsbEZyYW1lQ2xvc3VyZSYgY2xvc3VyZSkgCiB7CiAgICAgVk0mIHZtID0gKmNs
b3N1cmUudm07Ci0gICAgU2FtcGxpbmdTY29wZSBzYW1wbGluZ1Njb3BlKHRoaXMpOwogICAgIAog
ICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZt
LmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwpAQCAtMTE2OSwxMSArMTEzNyw3IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICAgICAgcmV0dXJu
IHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjbG9zdXJlLm9sZENhbGxGcmFtZSk7
CiAKICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgotICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIHsK
LSAgICAgICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdl
dCgpKTsKLSAgICAgICAgcmVzdWx0ID0gY2xvc3VyZS5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVy
YXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1dGUoJnZtLCBjbG9zdXJlLnByb3RvQ2FsbEZyYW1l
KTsKLSAgICB9CisgICAgSlNWYWx1ZSByZXN1bHQgPSBjbG9zdXJlLmZ1bmN0aW9uRXhlY3V0YWJs
ZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+ZXhlY3V0ZSgmdm0sIGNsb3N1cmUucHJvdG9D
YWxsRnJhbWUpOwogCiAgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJs
ZWRQcm9maWxlcigpKQogICAgICAgICBwcm9maWxlci0+ZGlkRXhlY3V0ZShjbG9zdXJlLm9sZENh
bGxGcmFtZSwgY2xvc3VyZS5mdW5jdGlvbik7CkBAIC0xMTg0LDcgKzExNDgsNiBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFtZUNsCiBKU1ZhbHVlIEludGVycHJldGVyOjpl
eGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1
ZSB0aGlzVmFsdWUsIEpTU2NvcGUqIHNjb3BlKQogewogICAgIFZNJiB2bSA9ICpzY29wZS0+dm0o
KTsKLSAgICBTYW1wbGluZ1Njb3BlIHNhbXBsaW5nU2NvcGUodGhpcyk7CiAgICAgCiAgICAgQVNT
RVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOwogICAgIEFTU0VSVCghdm0uZXhj
ZXB0aW9uKCkpOwpAQCAtMTI4MCwxMSArMTI0Myw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgcHJvZmlsZXItPndpbGxFeGVjdXRlKGNhbGxGcmFt
ZSwgZXZhbC0+c291cmNlVVJMKCksIGV2YWwtPmZpcnN0TGluZSgpLCBldmFsLT5zdGFydENvbHVt
bigpKTsKIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0g
ICAgewotICAgICAgICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBs
ZXIuZ2V0KCkpOwotICAgICAgICByZXN1bHQgPSBldmFsLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4
ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwotICAgIH0KKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IGV2YWwtPmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7
CiAKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVy
KCkpCiAgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgZXZhbC0+c291cmNl
VVJMKCksIGV2YWwtPmZpcnN0TGluZSgpLCBldmFsLT5zdGFydENvbHVtbigpKTsKQEAgLTEyOTUs
NyArMTI1NCw2IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU01vZHVsZUVudmlyb25tZW50KiBzY29wZSkK
IHsKICAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7Ci0gICAgU2FtcGxpbmdTY29wZSBzYW1wbGlu
Z1Njb3BlKHRoaXMpOwogCiAgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZt
KCkpOwogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwpAQCAtMTMyOCwxMSArMTI4Niw3IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3IKICAgICAgICAgcHJvZmls
ZXItPndpbGxFeGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1
dGFibGUtPmZpcnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKIAogICAgIC8v
IEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgewotICAgICAgICBT
YW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOwotICAg
ICAgICByZXN1bHQgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZt
LCAmcHJvdG9DYWxsRnJhbWUpOwotICAgIH0KKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWN1dGFi
bGUtPmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CiAK
ICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkp
CiAgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291
cmNlVVJMKCksIGV4ZWN1dGFibGUtPmZpcnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVt
bigpKTsKQEAgLTEzNzIsNDAgKzEzMjYsNCBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRl
cjo6ZGVidWcoQ2FsCiAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKTsKIH0g
ICAgCiAKLXZvaWQgSW50ZXJwcmV0ZXI6OmVuYWJsZVNhbXBsZXIoKQotewotI2lmIEVOQUJMRShP
UENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFtX3NhbXBsZXIpIHsKLSAgICAgICAgbV9zYW1wbGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxTYW1wbGluZ1Rvb2w+KHRoaXMpOwotICAgICAgICBtX3NhbXBs
ZXItPnNldHVwKCk7Ci0gICAgfQotI2VuZGlmCi19Ci12b2lkIEludGVycHJldGVyOjpkdW1wU2Ft
cGxlRGF0YShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0jaWYgRU5BQkxFKE9QQ09ERV9TQU1QTElORykK
LSAgICBpZiAobV9zYW1wbGVyKQotICAgICAgICBtX3NhbXBsZXItPmR1bXAoZXhlYyk7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSNlbmRpZgotfQotdm9pZCBJbnRlcnByZXRlcjo6
c3RhcnRTYW1wbGluZygpCi17Ci0jaWYgRU5BQkxFKFNBTVBMSU5HX1RIUkVBRCkKLSAgICBpZiAo
IW1fc2FtcGxlRW50cnlEZXB0aCkKLSAgICAgICAgU2FtcGxpbmdUaHJlYWQ6OnN0YXJ0KCk7Ci0K
LSAgICBtX3NhbXBsZUVudHJ5RGVwdGgrKzsKLSNlbmRpZgotfQotdm9pZCBJbnRlcnByZXRlcjo6
c3RvcFNhbXBsaW5nKCkKLXsKLSNpZiBFTkFCTEUoU0FNUExJTkdfVEhSRUFEKQotICAgIG1fc2Ft
cGxlRW50cnlEZXB0aC0tOwotICAgIGlmICghbV9zYW1wbGVFbnRyeURlcHRoKQotICAgICAgICBT
YW1wbGluZ1RocmVhZDo6c3RvcCgpOwotI2VuZGlmCi19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJl
Z2lzdGVyOwogICAgIGNsYXNzIEpTU2NvcGU7Ci0gICAgY2xhc3MgU2FtcGxpbmdUb29sOwogICAg
IHN0cnVjdCBDYWxsRnJhbWVDbG9zdXJlOwogICAgIHN0cnVjdCBIYW5kbGVySW5mbzsKICAgICBz
dHJ1Y3QgSW5zdHJ1Y3Rpb247CkBAIC0yMjEsOCArMjIwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgdm9pZCBnZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwg
cHRyZGlmZl90JiBmaXJzdFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJn
Yyk7CiAgICAgICAgIAotICAgICAgICBTYW1wbGluZ1Rvb2wqIHNhbXBsZXIoKSB7IHJldHVybiBt
X3NhbXBsZXIuZ2V0KCk7IH0KLQogICAgICAgICBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHVu
d2luZChWTSYsIENhbGxGcmFtZSomLCBFeGNlcHRpb24qLCBVbndpbmRTdGFydCk7CiAgICAgICAg
IHZvaWQgbm90aWZ5RGVidWdnZXJPZkV4Y2VwdGlvblRvQmVUaHJvd24oQ2FsbEZyYW1lKiwgRXhj
ZXB0aW9uKik7CiAgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERl
YnVnSG9va0lEKTsKQEAgLTIzMywxMCArMjMwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsK
IAotICAgICAgICB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7Ci0gICAgICAg
IHZvaWQgc3RhcnRTYW1wbGluZygpOwotICAgICAgICB2b2lkIHN0b3BTYW1wbGluZygpOwotCiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcENhbGxGcmFtZShDYWxsRnJhbWUqKTsK
IAogICAgICAgICB2b2lkIGdldFN0YWNrVHJhY2UoVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRz
LCBzaXplX3QgbWF4U3RhY2tTaXplID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSk7CkBAIC0yNTQsMTAgKzI0Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAg
ICAgYm9vbCBpc0NhbGxCeXRlY29kZShPcGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNvZGUgPT0g
Z2V0T3Bjb2RlKG9wX2NhbGwpIHx8IG9wY29kZSA9PSBnZXRPcGNvZGUob3BfY29uc3RydWN0KSB8
fCBvcGNvZGUgPT0gZ2V0T3Bjb2RlKG9wX2NhbGxfZXZhbCkgfHwgb3Bjb2RlID09IGdldE9wY29k
ZShvcF90YWlsX2NhbGwpOyB9CiAKLSAgICAgICAgdm9pZCBlbmFibGVTYW1wbGVyKCk7Ci0gICAg
ICAgIGludCBtX3NhbXBsZUVudHJ5RGVwdGg7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTYW1w
bGluZ1Rvb2w+IG1fc2FtcGxlcjsKLQogICAgICAgICBWTSYgbV92bTsKICAgICAgICAgSlNTdGFj
ayBtX3N0YWNrOwogICAgICAgICBpbnQgbV9lcnJvckhhbmRsaW5nTW9kZVJlZW50cnk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZp
c2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw2ICsxNDgsMTYgQEAgQXNzZW1ibHlIZWxwZXJz
OjpKdW1wIEFzc2VtYmx5SGVscGVyczo6YgogICAgICAgICBUcnVzdGVkSW1tMzIoRmFzdFR5cGVk
QXJyYXkpKTsKIH0KIAordm9pZCBBc3NlbWJseUhlbHBlcnM6OmluY3JlbWVudFN1cGVyU2FtcGxl
ckNvdW50KCkKK3sKKyAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcyhi
aXR3aXNlX2Nhc3Q8Y29uc3Qgdm9pZCo+KCZnX3N1cGVyU2FtcGxlckNvdW50KSkpOworfQorCit2
b2lkIEFzc2VtYmx5SGVscGVyczo6ZGVjcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKQoreworICAg
IHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKGJpdHdpc2VfY2FzdDxjb25z
dCB2b2lkKj4oJmdfc3VwZXJTYW1wbGVyQ291bnQpKSk7Cit9CisgICAgCiB2b2lkIEFzc2VtYmx5
SGVscGVyczo6cHVyaWZ5TmFOKEZQUlJlZyBmcHIpCiB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgbm90TmFOID0gYnJhbmNoRG91YmxlKERvdWJsZUVxdWFsLCBmcHIsIGZwcik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE5
ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZv
clNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCiAjaW5j
bHVkZSAiUmVnaXN0ZXJTZXQuaCIKKyNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRl
ICJUeXBlb2ZUeXBlLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApAQCAtMTAwNiw2ICsxMDA3LDkgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGppdFJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigp
OworCisgICAgdm9pZCBpbmNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpOworICAgIHZvaWQgZGVj
cmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKICAgICAKICAgICB2b2lkIHB1cmlmeU5hTihGUFJS
ZWcpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxOTgzNDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJQQ1RvQ29kZU9yaWdpbk1hcC5oIgogI2luY2x1ZGUg
IlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCi0jaW5jbHVkZSAi
U2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU3Rh
Y2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUg
Ik9wY29kZS5oIgogI2luY2x1ZGUgIlBDVG9Db2RlT3JpZ2luTWFwLmgiCiAjaW5jbHVkZSAiUmVz
dWx0VHlwZS5oIgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlVudXNlZFBv
aW50ZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCi0jaW5jbHVkZSAiU2Ft
cGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCShyZXZpc2lvbiAxOTgzNDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUgIlNh
bXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJldmlzaW9uIDE5ODM0NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUgIlNhbXBs
aW5nVG9vbC5oIgogI2luY2x1ZGUgIlNldHVwVmFyYXJnc0ZyYW1lLmgiCiAjaW5jbHVkZSAiU3Rh
Y2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5o
IgogI2luY2x1ZGUgIlNldHVwVmFyYXJnc0ZyYW1lLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1l
bnQuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIlByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlJl
cGF0Y2guaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJTdXBlclNh
bXBsZXIuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUeXBlUHJv
ZmlsZXJMb2cuaCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIKQEAgLTEwMzQsNiArMTAzNSw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QKIAogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiBleGVjLCB2b2lk
KiByZWdleHBQdHIpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUo
ZmFsc2UpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgIFJlZ0V4cCogcmVnZXhwID0gc3RhdGljX2Nhc3Q8
UmVnRXhwKj4ocmVnZXhwUHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUg
IlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgPHd0
Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKLSNpbmNsdWRlICJTYW1wbGluZ1Rv
b2wuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1
bWVudHNUYWJsZS5oIgogI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw2IEBACiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXku
aCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKLSNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIK
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVh
a0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NTQsOCArMTY1
NCw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBDb25zdHJ1Y3Rv
cktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgVGhp
c1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwKICAgICBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBl
OjpOb25lKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJQYXJzaW5nIik7
Ci0KICAgICBBU1NFUlQoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAg
ICAgaWYgKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewogICAgICAgICBQ
YXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmlj
dE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0
aGlzVERaTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2
aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiSW5mZXJyZWRW
YWx1ZS5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNp
bmNsdWRlICJUeXBlU2V0LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzks
NyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKKyNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNs
dWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvZHRv
YS5oPgpAQCAtNjksNiArNzAsNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogI2lmbmRl
ZiBOREVCVUcKICAgICAgICAgRGlzYWxsb3dHQzo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCisgICAg
ICAgIGluaXRpYWxpemVTdXBlclNhbXBsZXIoKTsKICAgICAgICAgV1RGVGhyZWFkRGF0YSYgdGhy
ZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKICAgICAgICAgdGhyZWFkRGF0YS5zZXRTYXZlZExh
c3RTdGFja1RvcCh0aHJlYWREYXRhLnN0YWNrKCkub3JpZ2luKCkpOwogICAgIH0pOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTk4MzQ2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNDgsNiArMzQ4LDggQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAg
ICAgdihib29sLCBkdW1wTW9kdWxlUmVjb3JkLCBmYWxzZSwgbnVsbHB0cikgXAogICAgIHYoYm9v
bCwgZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSwgZmFsc2UsIG51bGxwdHIpIFwKICAgICB2KGJvb2ws
IGV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyLCBmYWxzZSwgImV4cG9zZSB0aGUgaW50ZXJuYWwg
bW9kdWxlIGxvYWRlciBvYmplY3QgdG8gdGhlIGdsb2JhbCBzcGFjZSBmb3IgZGVidWdnaW5nIikg
XAorICAgIFwKKyAgICB2KGJvb2wsIHVzZVN1cGVyU2FtcGxlciwgZmFsc2UsIG51bGxwdHIpCiAK
IGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAkocmV2
aXNpb24gMTk4MzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2Fj
aGVkUmVzdWx0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUmVn
RXhwQ2FjaGVkUmVzdWx0X2gKIAogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgorI2luY2x1ZGUg
IlN1cGVyU2FtcGxlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9u
IDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNB
cnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4ICs1Miw2IEBAIEFMV0FZU19JTkxJTkUgSlNB
cnJheSogY3JlYXRlUmVnRXhwTWF0Y2gKICAgICBWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTU3RyaW5nKiBpbnB1dCwgY29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlLAogICAg
IFJlZ0V4cCogcmVnRXhwLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTWF0Y2hSZXN1bHQmIHJlc3Vs
dCkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiY3JlYXRlUmVnRXhwTWF0
Y2hlc0FycmF5Iik7Ci0gICAgCiAgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRz
OwogICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2hJbmxpbmUodm0sIGlucHV0VmFsdWUs
IHN0YXJ0T2Zmc2V0LCBzdWJwYXR0ZXJuUmVzdWx0cyk7CiAgICAgaWYgKHBvc2l0aW9uID09IC0x
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcg
QEAKICNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlJlZ0V4cE1hdGNo
ZXNBcnJheS5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgorI2luY2x1ZGUgIlN1cGVyU2Ft
cGxlci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx1bmljb2RlL3Vjb25maWcu
aD4KICNpbmNsdWRlIDx1bmljb2RlL3Vub3JtLmg+CkBAIC00NDcsNiArNDQ4LDggQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogCiBzdGF0aWMgQUxXQVlTX0lOTElO
RSBFbmNvZGVkSlNWYWx1ZSByZW1vdmVVc2luZ1JlZ0V4cFNlYXJjaChFeGVjU3RhdGUqIGV4ZWMs
IEpTU3RyaW5nKiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgc291cmNlLCBSZWdFeHAqIHJlZ0V4cCkK
IHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAg
CiAgICAgc2l6ZV90IGxhc3RJbmRleCA9IDA7CiAgICAgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiA9
IDA7CiAKQEAgLTE0NjgsNyArMTQ3MSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKCJEb2luZyBzdWJzdHJpbmdpbmciKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1Zh
bHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOCwxNiAr
NTI4LDYgQEAgdm9pZCBWTTo6cmVzZXREYXRlQ2FjaGUoKQogICAgIGRhdGVJbnN0YW5jZUNhY2hl
LnJlc2V0KCk7CiB9CiAKLXZvaWQgVk06OnN0YXJ0U2FtcGxpbmcoKQotewotICAgIGludGVycHJl
dGVyLT5zdGFydFNhbXBsaW5nKCk7Ci19Ci0KLXZvaWQgVk06OnN0b3BTYW1wbGluZygpCi17Ci0g
ICAgaW50ZXJwcmV0ZXItPnN0b3BTYW1wbGluZygpOwotfQotCiB2b2lkIFZNOjp3aGVuSWRsZShz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY2FsbGJhY2spCiB7CiAgICAgaWYgKCFlbnRyeVNjb3BlKSB7
CkBAIC01NzUsMTQgKzU2NSw2IEBAIHZvaWQgVk06OmRlbGV0ZUFsbENvZGUoKQogICAgIH0pOwog
fQogCi12b2lkIFZNOjpkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgaW50
ZXJwcmV0ZXItPmR1bXBTYW1wbGVEYXRhKGV4ZWMpOwotI2lmIEVOQUJMRShBU1NFTUJMRVIpCi0g
ICAgRXhlY3V0YWJsZUFsbG9jYXRvcjo6ZHVtcFByb2ZpbGUoKTsKLSNlbmRpZgotfQotCiBTb3Vy
Y2VQcm92aWRlckNhY2hlKiBWTTo6YWRkU291cmNlUHJvdmlkZXJDYWNoZShTb3VyY2VQcm92aWRl
ciogc291cmNlUHJvdmlkZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBzb3VyY2VQcm92aWRl
ckNhY2hlTWFwLmFkZChzb3VyY2VQcm92aWRlciwgbnVsbHB0cik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE5ODM0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1Myw5ICs1NTMsNiBAQCBwdWJs
aWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc2V0RGF0ZUNhY2hlKCk7CiAKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHN0b3BTYW1wbGluZygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZHVtcFNhbXBsZURhdGEoRXhlY1N0YXRlKik7CiAgICAgUmVnRXhwQ2FjaGUqIHJlZ0V4cENhY2hl
KCkgeyByZXR1cm4gbV9yZWdFeHBDYWNoZTsgfQogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykK
ICAgICB2b2lkIGFkZFJlZ0V4cFRvVHJhY2UoUmVnRXhwKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE5ODM0NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJZYXJySW50ZXJwcmV0ZXIuaCIKIAorI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1
ZGUgIllhcnIuaCIKICNpbmNsdWRlICJZYXJyQ2Fub25pY2FsaXplLmgiCiAjaW5jbHVkZSA8d3Rm
L0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CkBAIC0yMDM0LDYgKzIwMzUsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tCiAKIHVuc2lnbmVkIGludGVycHJldChCeXRl
Y29kZVBhdHRlcm4qIGJ5dGVjb2RlLCBjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQqIG91dHB1dCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBs
ZXJTY29wZShmYWxzZSk7CiAgICAgaWYgKGlucHV0LmlzOEJpdCgpKQogICAgICAgICByZXR1cm4g
SW50ZXJwcmV0ZXI8TENoYXI+KGJ5dGVjb2RlLCBvdXRwdXQsIGlucHV0LmNoYXJhY3RlcnM4KCks
IGlucHV0Lmxlbmd0aCgpLCBzdGFydCkuaW50ZXJwcmV0KCk7CiAgICAgcmV0dXJuIEludGVycHJl
dGVyPFVDaGFyPihieXRlY29kZSwgb3V0cHV0LCBpbnB1dC5jaGFyYWN0ZXJzMTYoKSwgaW5wdXQu
bGVuZ3RoKCksIHN0YXJ0KS5pbnRlcnByZXQoKTsKQEAgLTIwNDEsMTEgKzIwNDMsMTMgQEAgdW5z
aWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiogYnl0ZQogCiB1bnNpZ25lZCBpbnRlcnBy
ZXQoQnl0ZWNvZGVQYXR0ZXJuKiBieXRlY29kZSwgY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25l
ZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCogb3V0cHV0KQogeworICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICByZXR1cm4gSW50ZXJw
cmV0ZXI8TENoYXI+KGJ5dGVjb2RlLCBvdXRwdXQsIGlucHV0LCBsZW5ndGgsIHN0YXJ0KS5pbnRl
cnByZXQoKTsKIH0KIAogdW5zaWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiogYnl0ZWNv
ZGUsIGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQqIG91dHB1dCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CiAgICAgcmV0dXJuIEludGVycHJldGVyPFVDaGFyPihieXRlY29kZSwgb3V0
cHV0LCBpbnB1dCwgbGVuZ3RoLCBzdGFydCkuaW50ZXJwcmV0KCk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIyIEBACisyMDE2LTAzLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CisKKyAgICAgICAgUmVwbGFjZSBhbGwgb2YgdGhlIHZhcmlvdXMgbm9uLXdvcmtpbmcgYW5kIG5v
bi1jb21waWxpbmcgc2FtcGxpbmcgcHJvZmlsZXIgaGFja3Mgd2l0aCBhIHNpbmdsZSBzdXBlciBo
YWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU1
NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIHJlcGxhY2VzIGFsbCBvZiBvdXIgdmFyaW91cyBhZCBob2MgcHJvZmlsaW5nIGhhY2tz
IHdpdGggYSBzaW5nbGUgYWQgaG9jIHByb2ZpbGluZyBoYWNrLgorICAgICAgICBUaGF0IG5lZWRz
IHRvIGJlIGFibGUgdG8gc2xlZXAgYSB0aHJlYWQsIHNvIEkgYWRkZWQgYSBwb3J0YWJsZSB3YXkg
dG8gZG8gaXQuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlbW92ZXMgYSBidW5jaCBvZiBFTkFCTEUg
ZmxhZ3MgZm9yIGFsbCBvZiB0aGUgb2xkIG5vbi13b3JraW5nIGhhY2tzLgorCisgICAgICAgICog
d3RmL0N1cnJlbnRUaW1lLmNwcDoKKyAgICAgICAgKFdURjo6Y3VycmVudENQVVRpbWUpOgorICAg
ICAgICAoV1RGOjpzbGVlcCk6CisgICAgICAgICogd3RmL0N1cnJlbnRUaW1lLmg6CisgICAgICAg
IChXVEY6OnNsZWVwTVMpOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDE2LTAzLTE3
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgU2lsZW5jZSBsZWFr
cyBpbiBQYXJraW5nTG90CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DdXJyZW50VGltZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ3VycmVudFRpbWUuY3BwCShyZXZpc2lvbiAxOTgz
NDYpCisrKyBTb3VyY2UvV1RGL3d0Zi9DdXJyZW50VGltZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDdXJyZW50VGlt
ZS5oIgogCisjaW5jbHVkZSAiQ29uZGl0aW9uLmgiCisjaW5jbHVkZSAiTG9jay5oIgorCiAjaWYg
T1MoREFSV0lOKQogI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgogI2luY2x1ZGUgPG1hY2gvbWFjaF90
aW1lLmg+CkBAIC0zMjcsNCArMzMwLDE3IEBAIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgY3Vy
cmVudENQVVRpbWUKICNlbmRpZgogfQogCit2b2lkIHNsZWVwKGRvdWJsZSB2YWx1ZSkKK3sKKyAg
ICAvLyBJdCdzIHZlcnkgY2hhbGxlbmdpbmcgdG8gZmluZCBwb3J0YWJsZSB3YXlzIG9mIHNsZWVw
aW5nIGZvciBsZXNzIHRoYW4gYSBzZWNvbmQuIE9uIFVOSVgsIHlvdSB3YW50IHRvCisgICAgLy8g
dXNlIHVzbGVlcCgpIGJ1dCBpdCdzIGhhcmQgdG8gI2luY2x1ZGUgaXQgaW4gYSBwb3J0YWJsZSB3
YXkgKHlvdSdkIHRoaW5rIGl0J3MgaW4gdW5pc3RkLmgsIGJ1dCB0aGVuCisgICAgLy8geW91J2Qg
YmUgd3Jvbmcgb24gc29tZSBPU1ggU0RLcykuIEFsc28sIHVzbGVlcCgpIHdvbid0IHNhdmUgeW91
IG9uIFdpbmRvd3MuIEhlbmNlLCBib3R0b21pbmcgb3V0IGluCisgICAgLy8gbG9jayBjb2RlLCB3
aGljaCBhbHJlYWR5IHNvbHZlcyB0aGUgc2xlZXBpbmcgcHJvYmxlbSwgaXMgcHJvYmFibHkgZm9y
IHRoZSBiZXN0LgorICAgIAorICAgIExvY2sgZmFrZUxvY2s7CisgICAgQ29uZGl0aW9uIGZha2VD
b25kaXRpb247CisgICAgTG9ja0hvbGRlciBmYWtlTG9ja2VyKGZha2VMb2NrKTsKKyAgICBmYWtl
Q29uZGl0aW9uLndhaXRVbnRpbE1vbm90b25pY0Nsb2NrU2Vjb25kcyhmYWtlTG9jaywgbW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCkgKyB2YWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdU
RgpJbmRleDogU291cmNlL1dURi93dGYvQ3VycmVudFRpbWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9DdXJyZW50VGltZS5oCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvV1RG
L3d0Zi9DdXJyZW50VGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMiArNjYsMjEgQEAgaW5s
aW5lIGRvdWJsZSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbQogLy8gdGhhbiBhIG1pbGxpc2Vj
b25kLgogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgY3VycmVu
dENQVVRpbWUoKTsKIAorV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2xlZXAoZG91YmxlKTsKKwor
aW5saW5lIHZvaWQgc2xlZXBNUyhkb3VibGUgdmFsdWUpCit7CisgICAgc2xlZXAodmFsdWUgLyAx
MDAwLjApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAordXNpbmcgV1RGOjpjdXJyZW50Q1BV
VGltZTsKIHVzaW5nIFdURjo6Y3VycmVudFRpbWU7CiB1c2luZyBXVEY6OmN1cnJlbnRUaW1lTVM7
CiB1c2luZyBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZTsKIHVzaW5nIFdURjo6bW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lTVM7Ci11c2luZyBXVEY6OmN1cnJlbnRDUFVUaW1lOwor
dXNpbmcgV1RGOjpzbGVlcDsKK3VzaW5nIFdURjo6c2xlZXBNUzsKIAogI2VuZGlmIC8vIEN1cnJl
bnRUaW1lX2gKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTk4MzQ2KQorKysgU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNjc3LDE5ICs2NzcsNiBAQAogI2Rl
ZmluZSBVU0VfU1lTVEVNX01BTExPQyAxCiAjZW5kaWYKIAotI2RlZmluZSBFTkFCTEVfREVCVUdf
V0lUSF9CUkVBS1BPSU5UIDAKLSNkZWZpbmUgRU5BQkxFX1NBTVBMSU5HX0NPVU5URVJTIDAKLSNk
ZWZpbmUgRU5BQkxFX1NBTVBMSU5HX0ZMQUdTIDAKLSNkZWZpbmUgRU5BQkxFX1NBTVBMSU5HX1JF
R0lPTlMgMAotI2RlZmluZSBFTkFCTEVfT1BDT0RFX1NBTVBMSU5HIDAKLSNkZWZpbmUgRU5BQkxF
X0NPREVCTE9DS19TQU1QTElORyAwCi0jaWYgRU5BQkxFKENPREVCTE9DS19TQU1QTElORykgJiYg
IUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0jZXJyb3IgIkNPREVCTE9DS19TQU1QTElORyByZXF1
aXJlcyBPUENPREVfU0FNUExJTkciCi0jZW5kaWYKLSNpZiBFTkFCTEUoT1BDT0RFX1NBTVBMSU5H
KSB8fCBFTkFCTEUoU0FNUExJTkdfRkxBR1MpIHx8IEVOQUJMRShTQU1QTElOR19SRUdJT05TKQot
I2RlZmluZSBFTkFCTEVfU0FNUExJTkdfVEhSRUFEIDEKLSNlbmRpZgotCiAjaWYgIWRlZmluZWQo
VVNFX0pTVkFMVUU2NCkgJiYgIWRlZmluZWQoVVNFX0pTVkFMVUUzMl82NCkKICNpZiAoQ1BVKFg4
Nl82NCkgJiYgKE9TKFVOSVgpIHx8IE9TKFdJTkRPV1MpKSkgXAogICAgIHx8IChDUFUoSUE2NCkg
JiYgIUNQVShJQTY0XzMyKSkgXApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0JKHJldmlzaW9u
IDE5ODM0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Np
b25NYW5hZ2VySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0
IDxNZWRpYVBsYXllci9NUFZvbHVtZVZpZXcuaD4KICNpbXBvcnQgPFVJS2l0L1VJQXBwbGljYXRp
b24uaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8d3RmL01haW5UaHJlYWQu
aD4KICNpbXBvcnQgPHd0Zi9SQU1TaXplLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCShyZXZpc2lvbiAxOTgzNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQAogI2ltcG9ydCA8d3RmL3RleHQvQXRv
bWljU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYv
SGFzaENvdW50ZWRTZXQuaD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3
dGYvV2Vha1B0ci5oPgogI2ltcG9ydCA8bWFwPgogCg==
</data>
<flag name="review"
          id="298789"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>