<?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>238408</bug_id>
          
          <creation_ts>2022-03-25 20:31:38 -0700</creation_ts>
          <short_desc>Prepare WebCore for making the String(const char*) constructor explicit</short_desc>
          <delta_ts>2022-04-01 19:56:49 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=238336</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=238475</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=238521</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>238693</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbarton</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jfernandez</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mkwst</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>rego</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>tommyw</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1855326</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-25 20:31:38 -0700</bug_when>
    <thetext>Prepare WebCore for making the String(const char*) constructor explicit.
Making this constructor explicit helps findings cases where a String is constructed from a literal without the &quot;&quot;_s suffix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855327</commentid>
    <comment_count>1</comment_count>
      <attachid>455822</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-25 21:14:16 -0700</bug_when>
    <thetext>Created attachment 455822
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855342</commentid>
    <comment_count>2</comment_count>
      <attachid>455828</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-25 22:53:05 -0700</bug_when>
    <thetext>Created attachment 455828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855346</commentid>
    <comment_count>3</comment_count>
      <attachid>455830</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-25 23:01:31 -0700</bug_when>
    <thetext>Created attachment 455830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855416</commentid>
    <comment_count>4</comment_count>
      <attachid>455855</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-26 13:54:44 -0700</bug_when>
    <thetext>Created attachment 455855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855654</commentid>
    <comment_count>5</comment_count>
      <attachid>455855</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-28 10:03:32 -0700</bug_when>
    <thetext>Comment on attachment 455855
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855701</commentid>
    <comment_count>6</comment_count>
      <attachid>455935</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-28 11:45:07 -0700</bug_when>
    <thetext>Created attachment 455935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855771</commentid>
    <comment_count>7</comment_count>
      <attachid>455935</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-28 14:20:25 -0700</bug_when>
    <thetext>Comment on attachment 455935
Patch

Clearing flags on attachment: 455935

Committed r291992 (248948@trunk): &lt;https://commits.webkit.org/248948@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855772</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-28 14:20:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855773</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-28 14:21:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/90945138&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855784</commentid>
    <comment_count>10</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2022-03-28 14:53:06 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855786</commentid>
    <comment_count>11</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2022-03-28 14:54:26 -0700</bug_when>
    <thetext>(In reply to Kate Cheney from comment #10)
&gt; Reopening to attach new patch.

Sorry, this was a messed up changelog issue. Ignore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855791</commentid>
    <comment_count>12</comment_count>
      <attachid>455935</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-28 15:05:02 -0700</bug_when>
    <thetext>Comment on attachment 455935
Patch

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

Glad that these are now explicit, but we are making too many temporary String objects!

&gt; Source/WebCore/PAL/pal/system/SleepDisabler.h:38
&gt; +    static std::unique_ptr&lt;SleepDisabler&gt; create(const String&amp;, Type);

Could this have been ASCIILiteral instead of String?

&gt; Source/WebCore/dom/Document.cpp:1496
&gt; +    return String { PAL::UTF8Encoding().domName() };

I think we can change encoding names to ASCII literals. I also think it’s a mistake to create a new string each time we need the name of UTF-8. This applies many more places.

&gt; Source/WebCore/html/MediaFragmentURIParser.cpp:137
&gt; -            name = name.utf8(StrictConversion).data();
&gt; +            name = String { name.utf8(StrictConversion).data() };

This looks like it was always broken. Converts the name to UTF-8 data and then treats that as Latin-1 and puts it in a WTF::String. Why would that be correct? Maybe this is using WTF::String in a really strange way.

&gt; Source/WebCore/html/MediaFragmentURIParser.cpp:141
&gt; -                value = value.utf8(StrictConversion).data();
&gt; +                value = String { value.utf8(StrictConversion).data() };

Ditto.

&gt; Source/WebCore/loader/CrossOriginPreflightResultCache.cpp:88
&gt; +    return m_methods.contains(method) || (m_methods.contains(&quot;*&quot;_s) &amp;&amp; storedCredentialsPolicy != StoredCredentialsPolicy::Use) || isOnAccessControlSimpleRequestMethodAllowlist(method);

Bad sign here that we are creating a String out of &quot;*&quot; here so we can compare everything in a vector against it. Not getting worse, but a bad idiom that we should fix. Here and below too. No reason to make a String just to compare with another String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855821</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-28 16:04:41 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; Comment on attachment 455935 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455935&amp;action=review
&gt; 
&gt; Glad that these are now explicit, but we are making too many temporary
&gt; String objects!
&gt; 
&gt; &gt; Source/WebCore/PAL/pal/system/SleepDisabler.h:38
&gt; &gt; +    static std::unique_ptr&lt;SleepDisabler&gt; create(const String&amp;, Type);
&gt; 
&gt; Could this have been ASCIILiteral instead of String?

I had tried that at first but internals.createSleepDisabler() allows tests to create a SleepDisabler with any String/reason currently.

&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:1496
&gt; &gt; +    return String { PAL::UTF8Encoding().domName() };
&gt; 
&gt; I think we can change encoding names to ASCII literals. I also think it’s a
&gt; mistake to create a new string each time we need the name of UTF-8. This
&gt; applies many more places.
&gt; 
&gt; &gt; Source/WebCore/html/MediaFragmentURIParser.cpp:137
&gt; &gt; -            name = name.utf8(StrictConversion).data();
&gt; &gt; +            name = String { name.utf8(StrictConversion).data() };
&gt; 
&gt; This looks like it was always broken. Converts the name to UTF-8 data and
&gt; then treats that as Latin-1 and puts it in a WTF::String. Why would that be
&gt; correct? Maybe this is using WTF::String in a really strange way.
&gt; 
&gt; &gt; Source/WebCore/html/MediaFragmentURIParser.cpp:141
&gt; &gt; -                value = value.utf8(StrictConversion).data();
&gt; &gt; +                value = String { value.utf8(StrictConversion).data() };
&gt; 
&gt; Ditto.

Yes, I had noticed that too but didn&apos;t want to cause behavior changes in such a large patch. I have just filed https://bugs.webkit.org/show_bug.cgi?id=238475 to remember to go back to it.

&gt; 
&gt; &gt; Source/WebCore/loader/CrossOriginPreflightResultCache.cpp:88
&gt; &gt; +    return m_methods.contains(method) || (m_methods.contains(&quot;*&quot;_s) &amp;&amp; storedCredentialsPolicy != StoredCredentialsPolicy::Use) || isOnAccessControlSimpleRequestMethodAllowlist(method);
&gt; 
&gt; Bad sign here that we are creating a String out of &quot;*&quot; here so we can
&gt; compare everything in a vector against it. Not getting worse, but a bad
&gt; idiom that we should fix. Here and below too. No reason to make a String
&gt; just to compare with another String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855825</commentid>
    <comment_count>14</comment_count>
      <attachid>455935</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-28 16:10:55 -0700</bug_when>
    <thetext>Comment on attachment 455935
Patch

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

&gt;&gt;&gt; Source/WebCore/PAL/pal/system/SleepDisabler.h:38
&gt;&gt;&gt; +    static std::unique_ptr&lt;SleepDisabler&gt; create(const String&amp;, Type);
&gt;&gt; 
&gt;&gt; Could this have been ASCIILiteral instead of String?
&gt; 
&gt; I had tried that at first but internals.createSleepDisabler() allows tests to create a SleepDisabler with any String/reason currently.

Seems sad to have this be less efficient just because of the test harness! Not critical, but likely easy to fix by having the IDL argument be an enum instead of an arbitrary string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856037</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-29 08:53:51 -0700</bug_when>
    <thetext>Wrongly reopened.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856045</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-29 09:31:58 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; Comment on attachment 455935 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455935&amp;action=review
&gt; 
&gt; Glad that these are now explicit, but we are making too many temporary
&gt; String objects!
&gt; 
&gt; &gt; Source/WebCore/PAL/pal/system/SleepDisabler.h:38
&gt; &gt; +    static std::unique_ptr&lt;SleepDisabler&gt; create(const String&amp;, Type);
&gt; 
&gt; Could this have been ASCIILiteral instead of String?
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:1496
&gt; &gt; +    return String { PAL::UTF8Encoding().domName() };
&gt; 
&gt; I think we can change encoding names to ASCII literals. I also think it’s a
&gt; mistake to create a new string each time we need the name of UTF-8. This
&gt; applies many more places.
&gt; 
&gt; &gt; Source/WebCore/html/MediaFragmentURIParser.cpp:137
&gt; &gt; -            name = name.utf8(StrictConversion).data();
&gt; &gt; +            name = String { name.utf8(StrictConversion).data() };
&gt; 
&gt; This looks like it was always broken. Converts the name to UTF-8 data and
&gt; then treats that as Latin-1 and puts it in a WTF::String. Why would that be
&gt; correct? Maybe this is using WTF::String in a really strange way.
&gt; 
&gt; &gt; Source/WebCore/html/MediaFragmentURIParser.cpp:141
&gt; &gt; -                value = value.utf8(StrictConversion).data();
&gt; &gt; +                value = String { value.utf8(StrictConversion).data() };
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/loader/CrossOriginPreflightResultCache.cpp:88
&gt; &gt; +    return m_methods.contains(method) || (m_methods.contains(&quot;*&quot;_s) &amp;&amp; storedCredentialsPolicy != StoredCredentialsPolicy::Use) || isOnAccessControlSimpleRequestMethodAllowlist(method);
&gt; 
&gt; Bad sign here that we are creating a String out of &quot;*&quot; here so we can
&gt; compare everything in a vector against it. Not getting worse, but a bad
&gt; idiom that we should fix. Here and below too. No reason to make a String
&gt; just to compare with another String.

Note that m_methods is not a Vector&lt;String&gt; but a HashSet&lt;String&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856062</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-29 10:00:29 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #16)
&gt; Note that m_methods is not a Vector&lt;String&gt; but a HashSet&lt;String&gt;.

Oh, then we can use the version of contains that takes an HashTranslator. Just need to make the translator to use in this kind of case and put it somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856123</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-29 12:07:24 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #17)
&gt; (In reply to Chris Dumez from comment #16)
&gt; &gt; Note that m_methods is not a Vector&lt;String&gt; but a HashSet&lt;String&gt;.
&gt; 
&gt; Oh, then we can use the version of contains that takes an HashTranslator.
&gt; Just need to make the translator to use in this kind of case and put it
&gt; somewhere.

Yes, I am looking into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856236</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-29 16:18:08 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #14)
&gt; Comment on attachment 455935 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455935&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/PAL/pal/system/SleepDisabler.h:38
&gt; &gt;&gt;&gt; +    static std::unique_ptr&lt;SleepDisabler&gt; create(const String&amp;, Type);
&gt; &gt;&gt; 
&gt; &gt;&gt; Could this have been ASCIILiteral instead of String?
&gt; &gt; 
&gt; &gt; I had tried that at first but internals.createSleepDisabler() allows tests to create a SleepDisabler with any String/reason currently.
&gt; 
&gt; Seems sad to have this be less efficient just because of the test harness!
&gt; Not critical, but likely easy to fix by having the IDL argument be an enum
&gt; instead of an arbitrary string.

I looked more into the SleepDisabler issue. It isn&apos;t just internals.createSleepDisabler() that needs a String at the moment. When we construct the SleepDisabler from the UIProcess, the reason from the WebContent process via IPC (as a String). Also, the GTK port seems to be using translation for the reason string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856272</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-29 19:26:31 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #17)
&gt; (In reply to Chris Dumez from comment #16)
&gt; &gt; Note that m_methods is not a Vector&lt;String&gt; but a HashSet&lt;String&gt;.
&gt; 
&gt; Oh, then we can use the version of contains that takes an HashTranslator.
&gt; Just need to make the translator to use in this kind of case and put it
&gt; somewhere.

Doing so in https://bugs.webkit.org/show_bug.cgi?id=238521.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455822</attachid>
            <date>2022-03-25 21:14:16 -0700</date>
            <delta_ts>2022-03-25 22:53:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238408-20220325211415.patch</filename>
            <type>text/plain</type>
            <size>446928</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxOTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ3ZjIwNGU5YmM0NTc0YzQyMjQ1NzE2
MWE1MGI2NTEwYzgzNmNiNWUuLmZjYWQ3OTMxMWYyZjQyYWE1MTM1NzJiMzYzY2VkOWRmYzBmNDFh
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYkNvcmUgZm9yIG1ha2luZyB0aGUgU3Ry
aW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJlcGFyZSBXZWJDb3JlIGZvciBtYWtpbmcg
dGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQuCisgICAgICAgIE1h
a2luZyB0aGlzIGNvbnN0cnVjdG9yIGV4cGxpY2l0IGhlbHBzIGZpbmRpbmdzIGNhc2VzIHdoZXJl
IGEgU3RyaW5nIGlzIGNvbnN0cnVjdGVkCisgICAgICAgIGZyb20gYSBsaXRlcmFsIHdpdGhvdXQg
dGhlICIiX3Mgc3VmZml4LgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAg
ICAgIChXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UpOgorCiAyMDIyLTAzLTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFN0cmluZ1ZpZXc6OnNwbGl0
KCkgaW5zdGVhZCBvZiBTdHJpbmc6OnNwbGl0KCkgaW4gbW9yZSBwbGFjZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA4NTllY2UzMWVmZDlmYzExMWJmMjA4ZjM0OGU1ZjBjMzdjOGZjZWJiLi44OTU2MTQyMDkxN2M2
YTY2YjlkNmM2YWE2ZTc2Mzg2YWIwMTliNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMyIEBA
CisyMDIyLTAzLTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
UHJlcGFyZSBXZWJDb3JlIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3Ry
dWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzODQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFByZXBhcmUgV2ViQ29yZSBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciop
IGNvbnN0cnVjdG9yIGV4cGxpY2l0LgorICAgICAgICBNYWtpbmcgdGhpcyBjb25zdHJ1Y3RvciBl
eHBsaWNpdCBoZWxwcyBmaW5kaW5ncyBjYXNlcyB3aGVyZSBhIFN0cmluZyBpcyBjb25zdHJ1Y3Rl
ZAorICAgICAgICBmcm9tIGEgbGl0ZXJhbCB3aXRob3V0IHRoZSAiIl9zIHN1ZmZpeC4KKworICAg
ICAgICAqIFNjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuY3BwLmVyYjoKKyAgICAg
ICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuY3BwOgorICAgICAg
ICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oOgorICAgICAgICAq
IGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVl
cnlFdmFsdWF0b3I6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcyk6CisgICAgICAgICogZG9tL0Jyb2Fk
Y2FzdENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbDo6cG9z
dE1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bm9ybWFsaXplVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJRU9wRnJvbURyYWdPcCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpjb21wYXRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjaGFyYWN0
ZXJTZXRXaXRoVVRGOEZhbGxiYWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpwcm9jZXNzTWV0YUh0dHBFcXVpdik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0
RG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpleGVjQ29tbWFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cXVlcnlDb21tYW5kRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6cXVlcnlDb21tYW5kSW5kZXRlcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpxdWVyeUNvbW1hbmRTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnF1ZXJ5Q29tbWFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVS
ZXNpemVPYnNlcnZhdGlvbnMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnNldE91dGVySFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjphbmltYXRlKToKKyAgICAgICAgKiBkb20vSW1hZ2VPdmVybGF5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlT3ZlcmxheTo6dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdCk6
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd1Ry
ZWVGb3JUaGlzQWNyb3NzRnJhbWUgY29uc3QpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpj
aGVja1N0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp2aWV3cG9ydEVycm9yTWVzc2FnZVRlbXBsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OnZpZXdwb3J0RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnRvZ2dsZUJvbGQpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjp0b2dnbGVVbmRlcmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU3R5bGVQcmVzZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVUb2dnbGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHREZWNvcmF0aW9uQ2hhbmdlRm9yVG9nZ2xpbmcp
OgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBl
ZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRl
eHRDb21tYW5kOjppbnNlcnRUYWIpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmFkZFNwYWNlc0ZvclNtYXJ0UmVwbGFj
ZSk6CisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6b2JzZXJ2ZVBhcmFn
cmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWtBbmROb3RpZnlBY2Nlc3NpYmls
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNl
cGFyYXRvckFuZE5vdGlmeUFjY2Vzc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5n
Q29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50QW5kTm90aWZ5
QWNjZXNzaWJpbGl0eSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KToKKyAgICAgICAgKiBm
aWxlYXBpL0Jsb2JVUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlVSTDo6Y3JlYXRlSW50
ZXJuYWxVUkwpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlUmVhZGVyTG9hZGVyOjpjb252ZXJ0VG9UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVSZWFkZXJMb2FkZXI6OmNvbnZlcnRUb0RhdGFVUkwpOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpC
YWNrRm9yd2FyZENhY2hlKToKKyAgICAgICAgKiBodG1sL0VtYWlsSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKiBodG1sL0VudGVyS2V5SGludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1
dGVWYWx1ZUZvckVudGVyS2V5SGludCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6
Y3JlYXRlQmFzaWNEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2spOgor
ICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dDo6YmVzdEZpdFNvdXJjZUZyb21QaWN0dXJlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW1hZ2VFbGVtZW50OjpldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5RGVwZW5kZW5jaWVzKToK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6c2hvd1BpY2tlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNsZWVwRGlzYWJs
aW5nKToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKToKKyAgICAgICAg
KiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpj
cmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyb3BwZWRTb3VyY2VSZWN0YW5nbGVX
aXRoRm9ybWF0dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlRnJv
bUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAg
KiBodG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VGcmFnbWVudHMpOgorICAgICAgICAqIGh0bWwvUERG
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OnNlbmRQREZBcnJh
eUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6OkFOR0xFSW5zdGFuY2Vk
QXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQzo6RVhUVGV4dHVy
ZUNvbXByZXNzaW9uUkdUQyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpp
bml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMxOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JH
Qi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6
OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZWJ1
Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TERlcHRoVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6
V2ViR0xEZXB0aFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZXB0aFRleHR1cmU6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0dXBGbGFncyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBY3RpdmVVbmlm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZEV4
dGVuc2lvblN1cHBvcnRlZEZvcm1hdHNBbmRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dEltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWN5Y2xlQ29u
dGV4dCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlh
bGl6ZUZvck51bWJlclR5cGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjppbml0aWF0
b3JGb3IpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdT
Y2FubmVyOjpwcm9jZXNzQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJl
bG9hZFNjYW5uZXIuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2Fk
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlByZWxvYWRSZXF1ZXN0OjpQcmVsb2FkUmVxdWVzdCk6
CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrQ3VlOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVHZW5lcmljQm94
RWxlbWVudDo6YXBwbHlDU1NQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGllcyk6
CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVlRUUGFyc2VyOjpXZWJWVFRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRU
VHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4pOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRDb21wdXRlZFByb3BlcnRp
ZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJs
YXk6OnNldEdyaWRPdmVybGF5Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JP
dmVybGF5OjpjbGVhckdyaWRPdmVybGF5Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JPdmVybGF5OjpzZXRGbGV4T3ZlcmxheUZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheTo6Y2xlYXJGbGV4T3ZlcmxheUZvck5vZGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclN0eWxlOjpidWlsZE9iamVjdEZvclN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OnNlbGVjdG9yc0Zyb21Tb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQ6OnJlc29sdmVBbmltYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OmdldEZvbnREYXRhRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjphZGRSdWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50Ojpy
ZXNvbHZlQ29udGV4dCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0U3VwcG9y
dGVkRXZlbnROYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2hv
d0dyaWRPdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzaG93
RmxleE92ZXJsYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpzZXRFdmVudEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmJyZWFrT25VUkxJZk5lZWRlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpleGVjdXRlU1FMKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6RXhlY3V0YWJsZVdpdGhEYXRhYmFzZTo6c3RhcnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yTGF5ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVzb2x2
ZVdlYlNvY2tldCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb29raWVPYmplY3QpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEluc2VydERPTU5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVE
T01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50OjpidWlsZFBh
dXNlRGF0YUZvckRPTUJyZWFrcG9pbnQpOgorICAgICAgICAqIGxheW91dC9WZXJpZmljYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94
SW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OmNhblVzZUZvckxpbmVMYXlvdXRXaXRoUmVhc29uKToKKyAgICAgICAgKiBsb2FkZXIv
Q29udGVudEZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6dXJsU2No
ZW1lKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6YWxsb3dz
Q3Jvc3NPcmlnaW5NZXRob2QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OnZhbGlkYXRlQ3Jvc3NPcmlnaW5IZWFkZXJzIGNvbnN0
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlTG9hZEVtcHR5KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2hlY2tVUkxTY2hlbWVBc0NPUlNFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3Qp
OgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdWJtaXNz
aW9uOjpwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFu
ZEFkZEV4dHJhRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUG9z
dFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnRE
b2N1bWVudEl0ZW0pOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZWplY3RQcm9taXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRl
cjo6cmVqZWN0RGVjb2RlUHJvbWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpkZWNvZGUp
OgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9NaXhl
ZENvbnRlbnRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ1dhcm5pbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuRGlzcGxheUluc2VjdXJlQ29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpNaXhlZENvbnRlbnRDaGVja2VyOjpjYW5SdW5JbnNl
Y3VyZUNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNlbmRQaW5nKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVGb250SGFzaFNl
dCk6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVDYW52YXNBY3Rpdml0eVJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6ZGVjb2RlSGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2ViQ29yZTo6
ZGVjb2RlRm9udEhhc2hTZXQpOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlQ2FudmFzQWN0aXZp
dHlSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3RyaW5n
IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCk6CisgICAgICAgICogbG9hZGVyL1NlcnZlclRpbWluZ1Bh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2ZXJUaW1pbmdQYXJzZXI6OnBhcnNlU2Vy
dmVyVGltaW5nKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KToKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRDU1NTdHlsZVNoZWV0OjpDYWNoZWRDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmRpZEFkZENsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRDU1NTdHlsZVNoZWV0OjplbmNvZGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
Ojpsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OkNhY2hlZFNWR0RvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZyBjb25zdCk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0
OjplbmNvZGluZyBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6Q2FjaGVk
WFNMU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0Ojpl
bmNvZGluZyBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpNZW1vcnlDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlDYWNoZTo6b3JpZ2luc1dpdGhDYWNoZSBjb25zdCk6CisgICAgICAgICog
bWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydE1hdGhT
aXplSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6
OmNhcHRpb25zVGV4dEVkZ2VDU1MgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cHJpbnQpOgorICAgICAgICAqIHBhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJv
bGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6
ZXh0ZW5kKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6OnByaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWxlcnQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpjb25maXJtRm9yQmluZGluZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwcm9tcHQpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
V2luZG93OjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnQpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRT
b3VyY2U6OmNvbm5lY3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlUmVnRXhwRm9yTGFiZWxzKToKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoTGFi
ZWxzQWdhaW5zdFN0cmluZyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGp1c3RNZWRpYVR5cGVGb3JQcmludGluZyk6CisgICAg
ICAgICogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZVJvb3RNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6
OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Mb2dnZWRJblN0YXR1cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMb2dnZWRJblN0YXR1czo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRv
ckJhc2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9RdWlya3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVp
cmsgY29uc3QpOgorICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VEaWFsb2dGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpib29sRmVh
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpmbG9hdEZlYXR1cmUpOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zb2xl
TWVzc2FnZUZvclZpb2xhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmFsbG93RXZhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3k6OnJlcG9ydEludmFsaWRQbHVnaW5UeXBlcyBjb25zdCk6CisgICAgICAgICogcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzaG91bGRSZXBvcnRT
YW1wbGUgY29uc3QpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzLmNwcDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lcy5oOgorICAgICAgICAqIHBsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lz
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbEJ1aWx0aW5TY2hlbWVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYTWVu
dUxpc3RQb3B1cEFjdGlvblZlcmIpOgorICAgICAgICAoV2ViQ29yZTo6QVhNZW51TGlzdEFjdGlv
blZlcmIpOgorICAgICAgICAoV2ViQ29yZTo6QVhMaXN0SXRlbUFjdGlvblZlcmIpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NsZWVwRGlzYWJsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xlZXBE
aXNhYmxlcjo6U2xlZXBEaXNhYmxlcik6CisgICAgICAgICogcGxhdGZvcm0vU2xlZXBEaXNhYmxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRGF0YWJhc2U6OkhSVEZEYXRhYmFzZSk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Q
cml2YXRlOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRpb1ZpZGVvVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VMaWNlbnNlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlTGljZW5zZVJlbGVhc2VBY2tub3dsZWRnZW1lbnRGb3JtYXQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZGVzY3JpcHRp
b24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6dG9KU09OU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0aWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVjRnJvbUZvcm1hdERlc2NyaXB0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVZpZGVvSW5mb0Zyb21WUDlIZWFkZXJQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlVmlkZW9JbmZvRnJvbVZQOEhlYWRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6Y29kZWMgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
RUJsZW5kOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6Omhhc2hTdHJpbmdXaXRoU2FsdCk6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9SVENOb3RpZmllcnNNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURhdGFDaGFu
bmVsTm90aWZpZXI6OmZpcmUpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyc0Nv
bnRyb2xsZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcnNDb250cm9sbGVy
TW9jazo6bW91c2VFbnRlcmVkQ29udGVudEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyc0NvbnRyb2xsZXJNb2NrOjptb3VzZU1vdmVkSW5Db250ZW50QXJlYSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJzQ29udHJvbGxlck1vY2s6Om1vdXNlRXhpdGVkQ29udGVudEFyZWEp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWltZVR5cGVDYWNoZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9y
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFVUkxEZWNvZGVyOjpEZWNvZGVUYXNrOjpwcm9jZXNzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlU3RydWN0dXJlZEZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVFRQ
SGVhZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VB
Y2Nlc3NRdWlya3MpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OmNoYXJzZXQgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmZpbHRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2luZ1Byb3h5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5l
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2NrZXRT
dHJlYW1IYW5kbGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmFkZENPTk5FQ1RDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6
YXV0aG9yaXplckZ1bmN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVu
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6cmVuZGVyTmFtZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvdW50ZXI6OnJl
bmRlck5hbWUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OnJlbmRlck5hbWUgY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6cmVuZGVyTmFt
ZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZyYWdtZW50ZWRGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1l
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZW5kZXJOYW1lIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJIVE1MQ2FudmFzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpyZW5kZXJO
YW1lIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0ZVByaW1hcnlHcmFwaGljc0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6ZW5zdXJlQ2xpcHBpbmdTdGFja0xheWVycyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURlc2NlbmRhbnRD
bGlwcGluZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZU1hc2tpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZUNoaWxkQ2xpcHBpbmdTdHJhdGVneSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVNjcm9sbGluZ0xheWVycyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTWVkaWEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTW9kZWwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uRmxvdzo6cmVuZGVyTmFtZSBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6cmVuZGVyTmFtZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpyZW5kZXJOYW1lIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6b3V0cHV0UmVuZGVyT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclByb2dy
ZXNzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3RlLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxp
Y2EuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJSdWJ5QmFzZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5UnVu
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
YWJsZUNvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpyZW5kZXJOYW1l
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFRhZ05hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWaWRlby5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmg6CisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxQYWRkZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
b3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1No
YXBlT3V0c2lkZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tTaGFwZUltYWdlT3Jp
Z2luKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSZWN0Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSb290Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9M
ZWdhY3lSZW5kZXJTVkdTaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Q29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFya2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVJhZGlhbEdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQ
YXRoLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5l
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHQ29udGFpbmVyTGF5b3V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0NvbnRhaW5lckxheW91dDo6dmVyaWZ5TGF5b3V0TG9jYXRpb25D
b25zaXN0ZW5jeSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRTdHJlYW1TZXBhcmF0b3I6OlRleHRTdHJlYW1T
ZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdGaWxsUGFpbnRpbmdSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVNWR1N0cm9rZVBhaW50aW5nUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6d3JpdGVTdGFuZGFyZFByZWZpeCk6CisgICAgICAgICogc3ZnL0xp
bmVhckdyYWRpZW50QXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZWFyR3JhZGll
bnRBdHRyaWJ1dGVzOjpMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHN2Zy9S
YWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlhbEdyYWRp
ZW50QXR0cmlidXRlczo6UmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcv
U1ZHRml0VG9WaWV3Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpdFRvVmlld0JveDo6
cGFyc2VWaWV3Qm94R2VuZXJpYyk6CisgICAgICAgICogc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHZW9tZXRyeUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZVZhbGlkaXR5VG9Ub1N0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpyZXNwb25zZVNvdXJjZVRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjplbGVtZW50QnVmZmVyaW5nUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6Y3JlYXRlU2xlZXBEaXNhYmxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmxvYWRBcnR3b3JrSW1hZ2UpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzTWFwTGlr
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHNNYXBMaWtlOjpJbnRlcm5hbHNNYXBM
aWtlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBvc2l0aW9u
U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpwbGF5YmFja1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnRyYWNrSWRlbnRpZmllckNoYW5nZWQpOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmg6CisgICAgICAg
ICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpsYXllclRyZWVBc1RleHQpOgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpu
b3RpZnlFcnJvcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRk
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjplbnN1cmVWYWxpZFJlY29yZHNUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVWaWFD
YWNoZVRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmtlclR5cGVUb1N0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OmNyZWF0
ZSk6CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgor
ICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnVzZXJBZ2VudCBjb25zdCk6CisgICAgICAgICogeG1s
L1hNTEVycm9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxFcnJvcnM6OmhhbmRsZUVycm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEVycm9yczo6YXBwZW5kRXJyb3JNZXNzYWdlKToKKyAg
ICAgICAgKiB4bWwvWE1MRXJyb3JzLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VDaGFyc2V0SW5NZWRpYVR5cGVJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0VGltZW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVEZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKiB4bWwvWFBhdGhQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlBhcnNlcjo6bmV4dFRva2VuSW50ZXJuYWwp
OgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhT
TFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvRnJhZ21lbnQpOgorICAgICAgICAqIHhtbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpwYXJz
ZUVycm9yRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OnJlc3VsdE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNz
b3I6OnRyYW5zZm9ybVRvU3RyaW5nKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGVM
ZWFmVGV4dE5vZGUpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GdW5jKToKKwogMjAyMi0wMy0yNSAgTmlr
b2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNv
cnJlY3QgaGFuZGxpbmcgb2YgTmFOIGluc2lkZSBjYWxjKCkgZm9yIHRvcC1sZXZlbCBjYWxjdWxh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggOWExOGZjNmRhZTU1ZDdiZTdmMmY4MzY0Mjk2MzFj
Y2Y1ODRmOTljYy4uZjUwOWNlOGNhMGVjMjA5ZWZlYzk5MDljOGVhMzc0MTcxYTEyZDRjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjItMDMtMjUgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYkNvcmUgZm9yIG1ha2lu
ZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJlcGFyZSBXZWJDb3JlIGZv
ciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQuCisg
ICAgICAgIE1ha2luZyB0aGlzIGNvbnN0cnVjdG9yIGV4cGxpY2l0IGhlbHBzIGZpbmRpbmdzIGNh
c2VzIHdoZXJlIGEgU3RyaW5nIGlzIGNvbnN0cnVjdGVkCisgICAgICAgIGZyb20gYSBsaXRlcmFs
IHdpdGhvdXQgdGhlICIiX3Mgc3VmZml4LgorCisgICAgICAgICogcGFsL0xvZ2dpbmcuY3BwOgor
ICAgICAgICAoUEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKToKKyAgICAgICAgKiBwYWwvTG9n
Z2luZy5oOgorICAgICAgICAqIHBhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5jcHA6CisgICAgICAg
IChQQUw6OlNsZWVwRGlzYWJsZXI6OmNyZWF0ZSk6CisgICAgICAgIChQQUw6OlNsZWVwRGlzYWJs
ZXI6OlNsZWVwRGlzYWJsZXIpOgorICAgICAgICAqIHBhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5o
OgorICAgICAgICAqIHBhbC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmNwcDoKKyAg
ICAgICAgKFBBTDo6U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKToKKyAgICAgICAgKFBBTDo6U2xlZXBE
aXNhYmxlckNvY29hOjpTbGVlcERpc2FibGVyQ29jb2EpOgorICAgICAgICAqIHBhbC9zeXN0ZW0v
Y29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmg6CisgICAgICAgICogcGFsL3N5c3RlbS9nbGliL1Ns
ZWVwRGlzYWJsZXJHTGliLmNwcDoKKyAgICAgICAgKFBBTDo6U2xlZXBEaXNhYmxlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFBBTDo6U2xlZXBEaXNhYmxlckdMaWI6OlNsZWVwRGlzYWJsZXJHTGliKToK
KyAgICAgICAgKFBBTDo6U2xlZXBEaXNhYmxlckdMaWI6OmFjcXVpcmVJbmhpYml0b3IpOgorICAg
ICAgICAqIHBhbC9zeXN0ZW0vZ2xpYi9TbGVlcERpc2FibGVyR0xpYi5oOgorCiAyMDIyLTAzLTI0
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0Nv
Y29hXSBSRUdSRVNTSU9OKHIyODEyOTEpOiBXaGVuIGFjY2Vzc2liaWxpdHkgYm9sZCBpcyBlbmFi
bGVkLCBmb250LWZhbWlseTpzeXN0ZW0tdWkgaXMgc3VwcG9zZWQgdG8gYmUgYm9sZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA2ZWRkMTJmZDgwOTUxYjk4OWIzMTY4M2JkYzRjMWEyN2YyMTRlOGZjLi40OGI4ZDM0Mjg5
Yjk4M2ZiOTdkNDg2MTlmOWEzOWU3OWNhM2ZlYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDIyLTAzLTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
UHJlcGFyZSBXZWJDb3JlIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3Ry
dWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzODQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFByZXBhcmUgV2ViQ29yZSBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciop
IGNvbnN0cnVjdG9yIGV4cGxpY2l0LgorICAgICAgICBNYWtpbmcgdGhpcyBjb25zdHJ1Y3RvciBl
eHBsaWNpdCBoZWxwcyBmaW5kaW5ncyBjYXNlcyB3aGVyZSBhIFN0cmluZyBpcyBjb25zdHJ1Y3Rl
ZAorICAgICAgICBmcm9tIGEgbGl0ZXJhbCB3aXRob3V0IHRoZSAiIl9zIHN1ZmZpeC4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmRpZENyZWF0ZVNsZWVwRGlzYWJsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVX
ZWJQcm9jZXNzKToKKwogMjAyMi0wMy0yNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBUZW1wb3JhcmlseSBkaXNhYmxlIGFzc2VydGlvbiBpbiBNZXNz
YWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4
IDU5NmJiNTAzYzY2ZGIwNDI4MThjZmRiNGE1MWU4YzJhZWViOWM1YjguLjEwZmVjZDg5NjBmOWYy
NTE2YjEyY2UxMDU5MDUyMmE3YjA2ZjlmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAt
MzcxLDYgKzM3MSw3IEBAIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lCiB0ZW1wbGF0ZTxzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBj
b25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBiKSB7IHJldHVybiBiICE9IGE7IH0K
IAogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpOworYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYsIEFTQ0lJTGl0
ZXJhbCk7CiBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiwgY29uc3Qg
Y2hhciopOwogCiB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRl
cnMpW2xlbmd0aF0pOwpAQCAtNTk4LDYgKzU5OSwxMSBAQCBpbmxpbmUgYm9vbCBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgYSwgY29uc3QgY2hhciogYikKICAgICByZXR1cm4g
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhLmltcGwoKSwgYik7CiB9CiAKK2lubGluZSBib29sIGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBhLCBBU0NJSUxpdGVyYWwgYikKK3sK
KyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhLmltcGwoKSwgYi5jaGFyYWN0ZXJz
KCkpOworfQorCiB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGlubGluZSBib29sIHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNo
YXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKQogewogICAgIHJldHVybiBzdGFydHNXaXRo
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCksIGxvd2VyY2FzZUxldHRlcnMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnaW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5jcHAKaW5kZXggMDBiN2VkODQ1OGI3ZjNlYTg1NGMx
ZWJhYWJjNmEzNDY0NmU4MGJjYS4uMjZjM2M2OGIwMTcyNmQ0YWM3MjM0ZGNjY2ZiNGFjNDkwMzM5
NDRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuY3BwCkBAIC0zNSwxMSArMzUsMTEgQEAK
IAogbmFtZXNwYWNlIFBBTCB7CiAKLXZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBT
dHJpbmcmIG5vdGlmeUlELCBGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIHJlZ2lz
dGVyTm90aWZ5Q2FsbGJhY2soQVNDSUlMaXRlcmFsIG5vdGlmeUlELCBGdW5jdGlvbjx2b2lkKCk+
JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IHRva2VuOwotICAg
IG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaChub3RpZnlJRC51dGY4KCkuZGF0YSgpLCAmdG9rZW4s
IGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oaW50KSB7CisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKG5vdGlm
eUlELmNoYXJhY3RlcnMoKSwgJnRva2VuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtl
QmxvY2tQdHIoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGludCkgewogICAgICAgICBj
YWxsYmFjaygpOwogICAgIH0pLmdldCgpKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5o
CmluZGV4IDMwYThlNWUxMzFkNmIzOGQ0YThlZDYzZWI1ZGM5ZDU0ZDM5ODg0YjMuLjkxYjVlNWI1
N2UyZGJlNWQyYzYwYWU4ZWE0YjczZWViMjViMWQ0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2lu
Zy5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBQQUwgewogCi1QQUxfRVhQT1JUIHZv
aWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKCk+
JiYpOworUEFMX0VYUE9SVCB2b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soQVNDSUlMaXRlcmFs
LCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiB9IC8vIG5hbWVzcGFjZSBQQUwKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9TbGVlcERpc2FibGVyLmNwcAppbmRleCA0NmRiNThm
NTY0MDJlYTgyNzgyNjQxMWU5M2Q5MzBlZjhmZWViNDRiLi44NGIzODg4MDY2ZGQxYmUxMDdlYTRh
Zjc5MDA1NzhkNWNiYmRiMjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5
c3RlbS9TbGVlcERpc2FibGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3Rl
bS9TbGVlcERpc2FibGVyLmNwcApAQCAtMjYsMTYgKzI2LDE4IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU2xlZXBEaXNhYmxlci5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKIG5hbWVzcGFjZSBQQUwgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAh
VVNFKEdMSUIpCi1zdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gU2xlZXBEaXNhYmxlcjo6
Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNvbiwgVHlwZSB0eXBlKQorc3RkOjp1bmlxdWVfcHRyPFNs
ZWVwRGlzYWJsZXI+IFNsZWVwRGlzYWJsZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHJlYXNvbiwg
VHlwZSB0eXBlKQogewogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4o
bmV3IFNsZWVwRGlzYWJsZXIocmVhc29uLCB0eXBlKSk7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JN
KENPQ09BKSAmJiAhVVNFKEdMSUIpCiAKLVNsZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIoY29u
c3QgY2hhciosIFR5cGUgdHlwZSkKK1NsZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIoY29uc3Qg
U3RyaW5nJiwgVHlwZSB0eXBlKQogICAgIDogbV90eXBlKHR5cGUpCiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9TbGVlcERpc2FibGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9TbGVlcERpc2FibGVyLmgKaW5kZXggZGMwOWU5NDk5NGE4
ZDQ0NTZlNTIzMTdkMDFkN2RjY2FjMDMxZWJiYS4uNmI5ZjRlMjc1ODg4YTI4NzExZTZkOTExNDk3
YzdhNzcxNDA4MjUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0v
U2xlZXBEaXNhYmxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL1NsZWVw
RGlzYWJsZXIuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBQQUwgewogCiBjbGFzcyBTbGVlcERpc2FibGVy
IHsKQEAgLTMzLDEzICszNSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIFN5c3RlbSwKICAgICAgICAg
RGlzcGxheSwKICAgICB9OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxl
cj4gY3JlYXRlKGNvbnN0IGNoYXIqLCBUeXBlKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFNsZWVwRGlzYWJsZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmLCBUeXBlKTsKICAgICBQQUxfRVhQ
T1JUIHZpcnR1YWwgflNsZWVwRGlzYWJsZXIoKTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUEFMX0VYUE9SVCBTbGVlcERpc2Fi
bGVyKGNvbnN0IGNoYXIqLCBUeXBlKTsKKyAgICBQQUxfRVhQT1JUIFNsZWVwRGlzYWJsZXIoY29u
c3QgU3RyaW5nJiwgVHlwZSk7CiAgICAgVHlwZSBtX3R5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9jb2NvYS9TbGVlcERpc2FibGVyQ29jb2EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29h
LmNwcAppbmRleCBlMWMwZDIwMDkwZDM2YTY3Y2U5YjUxMGEwYmYwMTAwYjk5MTc4NDg4Li5kOTBm
MGQ2YTRmYTMxODA3MWJlMDk4M2E3YTAwM2I1NDE4M2RlOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9jb2NvYS9TbGVlcERpc2FibGVyQ29jb2EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5j
cHAKQEAgLTMwLDE4ICszMCwxOSBAQAogCiAjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1BNTGli
U1BJLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgUEFMIHsKIAotc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlz
YWJsZXI+IFNsZWVwRGlzYWJsZXI6OmNyZWF0ZShjb25zdCBjaGFyKiByZWFzb24sIFR5cGUgdHlw
ZSkKK3N0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPiBTbGVlcERpc2FibGVyOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiByZWFzb24sIFR5cGUgdHlwZSkKIHsKICAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPFNsZWVwRGlzYWJsZXI+KG5ldyBTbGVlcERpc2FibGVyQ29jb2EocmVhc29uLCB0eXBl
KSk7CiB9CiAKLVNsZWVwRGlzYWJsZXJDb2NvYTo6U2xlZXBEaXNhYmxlckNvY29hKGNvbnN0IGNo
YXIqIHJlYXNvbiwgVHlwZSB0eXBlKQorU2xlZXBEaXNhYmxlckNvY29hOjpTbGVlcERpc2FibGVy
Q29jb2EoY29uc3QgU3RyaW5nJiByZWFzb24sIFR5cGUgdHlwZSkKICAgICA6IFNsZWVwRGlzYWJs
ZXIocmVhc29uLCB0eXBlKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVhc29uQ0Yg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
cmVhc29uLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKKyAgICBhdXRvIHJlYXNvbkNGID0gcmVh
c29uLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICBDRlN0cmluZ1JlZiBhc3NlcnRpb25UeXBlOwog
ICAgIHN3aXRjaCAodHlwZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
eXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3N5c3RlbS9jb2NvYS9TbGVlcERpc2FibGVyQ29jb2EuaAppbmRleCBhODFhN2U3ODdiMTMxMDJl
YTMxMTlhNGY1YTg5YzA3MzkzYTU5M2VhLi4wMGMyNGZiNTQ1NjEzNzVjYTcyODA1YWU3MWVhOWE3
YzdjYzJmODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9jb2Nv
YS9TbGVlcERpc2FibGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3Rl
bS9jb2NvYS9TbGVlcERpc2FibGVyQ29jb2EuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
UEFMIHsKIAogY2xhc3MgU2xlZXBEaXNhYmxlckNvY29hIDogcHVibGljIFNsZWVwRGlzYWJsZXIg
ewogcHVibGljOgotICAgIGV4cGxpY2l0IFNsZWVwRGlzYWJsZXJDb2NvYShjb25zdCBjaGFyKiwg
VHlwZSk7CisgICAgZXhwbGljaXQgU2xlZXBEaXNhYmxlckNvY29hKGNvbnN0IFN0cmluZyYsIFR5
cGUpOwogICAgIHZpcnR1YWwgflNsZWVwRGlzYWJsZXJDb2NvYSgpOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vZ2xpYi9TbGVlcERpc2FibGVy
R0xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9nbGliL1NsZWVwRGlzYWJs
ZXJHTGliLmNwcAppbmRleCA5MTUxY2RkOWI4ODMzMWRkZTRlZTJkZDMzNTk0ODE0MmY2MGYzOTYw
Li5kOGMyNDEwODM2MzVkMGY0MmM3NDdlMjQyMmQ5MWYwZWY3OTRhNjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGli
LmNwcApAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5hbWVzcGFjZSBQQUwgewogCi1zdGQ6OnVuaXF1
ZV9wdHI8U2xlZXBEaXNhYmxlcj4gU2xlZXBEaXNhYmxlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIHJl
YXNvbiwgVHlwZSB0eXBlKQorc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+IFNsZWVwRGlz
YWJsZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHJlYXNvbiwgVHlwZSB0eXBlKQogewogICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4obmV3IFNsZWVwRGlzYWJsZXJHTGli
KHJlYXNvbiwgdHlwZSkpOwogfQogCi1TbGVlcERpc2FibGVyR0xpYjo6U2xlZXBEaXNhYmxlckdM
aWIoY29uc3QgY2hhciogcmVhc29uLCBUeXBlIHR5cGUpCitTbGVlcERpc2FibGVyR0xpYjo6U2xl
ZXBEaXNhYmxlckdMaWIoY29uc3QgU3RyaW5nJiByZWFzb24sIFR5cGUgdHlwZSkKICAgICA6IFNs
ZWVwRGlzYWJsZXIocmVhc29uLCB0eXBlKQogICAgICwgbV9jYW5jZWxsYWJsZShhZG9wdEdSZWYo
Z19jYW5jZWxsYWJsZV9uZXcoKSkpCiAgICAgLCBtX3JlYXNvbihyZWFzb24pCkBAIC04OSwxMCAr
ODksMTAgQEAgdm9pZCBTbGVlcERpc2FibGVyR0xpYjo6YWNxdWlyZUluaGliaXRvcigpCiAgICAg
aWYgKHNob3VsZFVzZVBvcnRhbCgpKSB7CiAgICAgICAgIEdWYXJpYW50QnVpbGRlciBidWlsZGVy
OwogICAgICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQ
RV9WQVJESUNUKTsKLSAgICAgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2
fSIsICJyZWFzb24iLCBnX3ZhcmlhbnRfbmV3X3N0cmluZyhtX3JlYXNvbi5kYXRhKCkpKTsKKyAg
ICAgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2fSIsICJyZWFzb24iLCBn
X3ZhcmlhbnRfbmV3X3N0cmluZyhtX3JlYXNvbi51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIHBh
cmFtZXRlcnMgPSBnX3ZhcmlhbnRfbmV3KCIoc3VAYXtzdn0pIiwgIiIgLyogbm8gd2luZG93ICov
LCA4IC8qIGlkbGUgKi8sIGdfdmFyaWFudF9idWlsZGVyX2VuZCgmYnVpbGRlcikpOwogICAgIH0g
ZWxzZQotICAgICAgICBwYXJhbWV0ZXJzID0gZ192YXJpYW50X25ldygiKHNzKSIsIGdfZ2V0X3By
Z25hbWUoKSwgbV9yZWFzb24uZGF0YSgpKTsKKyAgICAgICAgcGFyYW1ldGVycyA9IGdfdmFyaWFu
dF9uZXcoIihzcykiLCBnX2dldF9wcmduYW1lKCksIG1fcmVhc29uLnV0ZjgoKS5kYXRhKCkpOwog
CiAgICAgZ19kYnVzX3Byb3h5X2NhbGwobV9zY3JlZW5TYXZlclByb3h5LmdldCgpLCAiSW5oaWJp
dCIsIHBhcmFtZXRlcnMsIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsIC0xLCBtX2NhbmNlbGxhYmxl
LmdldCgpLCBbXShHT2JqZWN0KiBwcm94eSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVy
IHVzZXJEYXRhKSB7CiAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL2dsaWIvU2xlZXBEaXNhYmxlckdM
aWIuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL2dsaWIvU2xlZXBEaXNhYmxlckdM
aWIuaAppbmRleCA4ZGJmOTU3OTRjMTk5NjEwNTkyYzg3ZDFmYWE3NDkyZTgxYjU2YjE5Li4yNjQ0
MmM3OTUzZjJjMWVlMjM5NTQ2N2E0NWE0NDYxZWRhNTg2Mzk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vZ2xpYi9TbGVlcERpc2FibGVyR0xpYi5oCkBAIC0z
Nyw3ICszNyw3IEBAIG5hbWVzcGFjZSBQQUwgewogCiBjbGFzcyBTbGVlcERpc2FibGVyR0xpYiBm
aW5hbCA6IHB1YmxpYyBTbGVlcERpc2FibGVyIHsKIHB1YmxpYzoKLSAgICBTbGVlcERpc2FibGVy
R0xpYihjb25zdCBjaGFyKiwgVHlwZSk7CisgICAgU2xlZXBEaXNhYmxlckdMaWIoY29uc3QgU3Ry
aW5nJiwgVHlwZSk7CiAgICAgdmlydHVhbCB+U2xlZXBEaXNhYmxlckdMaWIoKTsKIAogcHJpdmF0
ZToKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3NjcmVlblNhdmVy
Q29va2llIHsgMCB9OwogICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gbV9pbmhpYml0UG9ydGFsUmVx
dWVzdE9iamVjdFBhdGg7CiAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IG1fY2FuY2VsbGFibGU7
Ci0gICAgQ1N0cmluZyBtX3JlYXNvbjsKKyAgICBTdHJpbmcgbV9yZWFzb247CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGlu
Z3NUZW1wbGF0ZXMvU2V0dGluZ3MuY3BwLmVyYiBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0
dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuY3BwLmVyYgppbmRleCA3ZTkxZDM1YzM5YmU0NjIwYjcz
NGRjNjc0ZjJiMWFmNjE3YmY4MzVkLi5hMTU3NTljMDNjYmI1YmU5ZWVhYjlkNjZjNGJkZTFmMzZm
YzRiNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxh
dGVzL1NldHRpbmdzLmNwcC5lcmIKKysrIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5n
c1RlbXBsYXRlcy9TZXR0aW5ncy5jcHAuZXJiCkBAIC0zOCw3ICszOCwxMSBAQAogI2lmIDwlPSBA
c2V0dGluZy5jb25kaXRpb24gJT4KIDwlLSAgIGVuZCAtJT4KIDwlLSAgIGlmIEBzZXR0aW5nLmRl
ZmF1bHRWYWx1ZXMuc2l6ZSgpID09IDEgLSU+Cis8JS0gICAgIGlmIEBzZXR0aW5nLnR5cGUgPT0g
IlN0cmluZyIgYW5kIEBzZXR0aW5nLmRlZmF1bHRWYWx1ZXNbJ2RlZmF1bHQnXVstMV0gPT0gIlwi
IiAtJT4KKyNkZWZpbmUgU0VUVElOR19ERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHNldHRpbmcubmFt
ZSAlPiA8JT0gQHNldHRpbmcuZGVmYXVsdFZhbHVlc1snZGVmYXVsdCddICU+X3MKKzwlLSAgICAg
ZWxzZSAtJT4KICNkZWZpbmUgU0VUVElOR19ERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHNldHRpbmcu
bmFtZSAlPiA8JT0gQHNldHRpbmcuZGVmYXVsdFZhbHVlc1snZGVmYXVsdCddICU+Cis8JS0gICAg
IGVuZCAtJT4KIDwlLSAgIGVsc2UgLSU+CiA8JS0gICAgIEBzZXR0aW5nLmRlZmF1bHRWYWx1ZXMu
ZWFjaF93aXRoX2luZGV4IGRvIHwoa2V5LCB2YWx1ZSksIGluZGV4fCAtJT4KIDwlLSAgICAgICBp
ZiBpbmRleCA9PSAwIC0lPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5jcHAKaW5kZXggNjQ5YmQ3MGY2NTEwNDUz
OGRjMTg4ZjQ0OGNlMTRmNmFlNDA4NGFmYS4uNGYyMTE2NTc2ZGE1OWMxZGEyMTIxYjIwY2U5MDdi
NzY3OWM2NjY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbkVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuY3BwCkBAIC0zNCw3ICszNCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgewogCi1jb25zdCBj
aGFyKiBXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbiA9ICJXZWJLaXRDb250ZW50QmxvY2tlckRv
bWFpbiI7CitBU0NJSUxpdGVyYWwgV2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4gPSAiV2ViS2l0
Q29udGVudEJsb2NrZXJEb21haW4iX3M7CiAKIGNvbnN0IHN0ZDo6ZXJyb3JfY2F0ZWdvcnkmIGNv
bnRlbnRFeHRlbnNpb25FcnJvckNhdGVnb3J5KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmgKaW5kZXggYTI0
NWQ5M2U1MDI0ZDIzOWU2M2Q0Y2Q2MmNjYjE4ZTZkMTU5OTczMi4uZThhZDM1MzlkYjhlNWI3YjE4
NzljYTk2NGUxNjFkMTFhYmM1YjYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmgKQEAgLTg0LDcgKzg0LDcg
QEAgZW51bSBjbGFzcyBDb250ZW50RXh0ZW5zaW9uRXJyb3IgewogICAgIEVycm9yV3JpdGluZ1Nl
cmlhbGl6ZWRORkEsCiB9OwogCi1leHRlcm4gY29uc3QgY2hhciogV2ViS2l0Q29udGVudEJsb2Nr
ZXJEb21haW47CitleHRlcm4gQVNDSUlMaXRlcmFsIFdlYktpdENvbnRlbnRCbG9ja2VyRG9tYWlu
OwogICAgIAogV0VCQ09SRV9FWFBPUlQgY29uc3Qgc3RkOjplcnJvcl9jYXRlZ29yeSYgY29udGVu
dEV4dGVuc2lvbkVycm9yQ2F0ZWdvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVl
cnlFdmFsdWF0b3IuY3BwCmluZGV4IGQ5OTQ4NjMwMjMxOGM3NmY5NjgzYmEyMWM5MWJiYjIwYTBh
MzQ0NzguLjZjODdlNGY4OTQxYWJjOGRhOTgyOTgzM2E5Mjc1OTc1ZGRjMmM5NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTk1Myw3ICs5NTMsNyBA
QCBib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcyhEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZwogewogICAgIEFTU0VSVChkb2N1bWVudC5yZW5kZXJW
aWV3KCkpOwogICAgIGF1dG8gbWVkaWFRdWVyaWVzID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKGF0
dHJpYnV0ZVZhbHVlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwotICAgIHJl
dHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIsIGRvY3VtZW50LCAmZG9jdW1lbnQu
cmVuZGVyVmlldygpLT5zdHlsZSgpIH0uZXZhbHVhdGUobWVkaWFRdWVyaWVzLmdldCgpKTsKKyAg
ICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iX3MsIGRvY3VtZW50LCAmZG9j
dW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIH0uZXZhbHVhdGUobWVkaWFRdWVyaWVzLmdldCgp
KTsKIH0KIAogfSAvLyBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQnJv
YWRjYXN0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5j
cHAKaW5kZXggYjg0Yjc0ZTk2MmIxODg1MzYxOThiM2IxYmZlMmMyODA2ZjY4NWRhNS4uY2ZjOWFi
OGQzYWZkYzA2NDc4MTlhMzc2NzljZTYxNzhkMjJkM2QzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9C
cm9hZGNhc3RDaGFubmVsLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IEJyb2FkY2FzdENoYW5uZWw6OnBvc3RNZXNzYWdlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAobV9pc0Nsb3NlZCkKLSAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiVGhpcyBCcm9hZGNhc3RD
aGFubmVsIGlzIGNsb3NlZCIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAiVGhpcyBCcm9hZGNhc3RDaGFubmVsIGlzIGNsb3NlZCJfcyB9OwogCiAgICAg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOwogICAgIGF1dG8gbWVzc2FnZURhdGEg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1lc3NhZ2UsIHsg
fSwgcG9ydHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCA4NmFiODg5YmMw
ZWExNWE1NDczNTdmYjY0ZGZmOWYxMGI4NjJkYzU0Li5hY2FmMDhjYmQxNTg1ODkzZDI2OGFmOWNj
YmVhYjM0NmMwMGE5MzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5z
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMTI3
LDExICsxMjcsMTEgQEAgc3RhdGljIFN0cmluZyBub3JtYWxpemVUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKIAogICAgIFN0cmluZyBsb3dlcmNhc2VUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVE1MU3BhY2VzKHR5cGUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAgICAgaWYgKGxv
d2VyY2FzZVR5cGUgPT0gInRleHQiIHx8IGxvd2VyY2FzZVR5cGUuc3RhcnRzV2l0aCgidGV4dC9w
bGFpbjsiKSkKLSAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIjsKKyAgICAgICAgcmV0dXJuICJ0
ZXh0L3BsYWluIl9zOwogICAgIGlmIChsb3dlcmNhc2VUeXBlID09ICJ1cmwiIHx8IGxvd2VyY2Fz
ZVR5cGUuc3RhcnRzV2l0aCgidGV4dC91cmktbGlzdDsiKSkKLSAgICAgICAgcmV0dXJuICJ0ZXh0
L3VyaS1saXN0IjsKKyAgICAgICAgcmV0dXJuICJ0ZXh0L3VyaS1saXN0Il9zOwogICAgIGlmIChs
b3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvaHRtbDsiKSkKLSAgICAgICAgcmV0dXJuICJ0
ZXh0L2h0bWwiOworICAgICAgICByZXR1cm4gInRleHQvaHRtbCJfczsKIAogICAgIHJldHVybiBs
b3dlcmNhc2VUeXBlOwogfQpAQCAtNjMxLDI1ICs2MzEsMjUgQEAgc3RhdGljIE9wdGlvblNldDxE
cmFnT3BlcmF0aW9uPiBkcmFnT3BGcm9tSUVPcChjb25zdCBTdHJpbmcmIG9wZXJhdGlvbikKICAg
ICByZXR1cm4geyBEcmFnT3BlcmF0aW9uOjpQcml2YXRlIH07IC8vIFJlYWxseSBhIG1hcmtlciBm
b3IgIm5vIGNvbnZlcnNpb24iLgogfQogCi1zdGF0aWMgY29uc3QgY2hhciogSUVPcEZyb21EcmFn
T3AoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2spCitzdGF0aWMgQVNDSUlM
aXRlcmFsIElFT3BGcm9tRHJhZ09wKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25N
YXNrKQogewogICAgIGJvb2wgaXNHZW5lcmljTW92ZSA9IG9wZXJhdGlvbk1hc2suY29udGFpbnNB
bnkoeyBEcmFnT3BlcmF0aW9uOjpHZW5lcmljLCBEcmFnT3BlcmF0aW9uOjpNb3ZlIH0pOwogCiAg
ICAgaWYgKChpc0dlbmVyaWNNb3ZlICYmIG9wZXJhdGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFn
T3BlcmF0aW9uOjpDb3B5LCBEcmFnT3BlcmF0aW9uOjpMaW5rIH0pKSB8fCBvcGVyYXRpb25NYXNr
LmNvbnRhaW5zQWxsKHsgRHJhZ09wZXJhdGlvbjo6Q29weSwgRHJhZ09wZXJhdGlvbjo6TGluaywg
RHJhZ09wZXJhdGlvbjo6R2VuZXJpYywgRHJhZ09wZXJhdGlvbjo6UHJpdmF0ZSwgRHJhZ09wZXJh
dGlvbjo6TW92ZSwgRHJhZ09wZXJhdGlvbjo6RGVsZXRlIH0pKQotICAgICAgICByZXR1cm4gImFs
bCI7CisgICAgICAgIHJldHVybiAiYWxsIl9zOwogICAgIGlmIChpc0dlbmVyaWNNb3ZlICYmIG9w
ZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbjo6Q29weSkpCi0gICAgICAgIHJldHVy
biAiY29weU1vdmUiOworICAgICAgICByZXR1cm4gImNvcHlNb3ZlIl9zOwogICAgIGlmIChpc0dl
bmVyaWNNb3ZlICYmIG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbjo6TGluaykp
Ci0gICAgICAgIHJldHVybiAibGlua01vdmUiOworICAgICAgICByZXR1cm4gImxpbmtNb3ZlIl9z
OwogICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zQWxsKHsgRHJhZ09wZXJhdGlvbjo6Q29w
eSwgRHJhZ09wZXJhdGlvbjo6TGluayB9KSkKLSAgICAgICAgcmV0dXJuICJjb3B5TGluayI7Cisg
ICAgICAgIHJldHVybiAiY29weUxpbmsiX3M7CiAgICAgaWYgKGlzR2VuZXJpY01vdmUpCi0gICAg
ICAgIHJldHVybiAibW92ZSI7CisgICAgICAgIHJldHVybiAibW92ZSJfczsKICAgICBpZiAob3Bl
cmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uOjpDb3B5KSkKLSAgICAgICAgcmV0dXJu
ICJjb3B5IjsKKyAgICAgICAgcmV0dXJuICJjb3B5Il9zOwogICAgIGlmIChvcGVyYXRpb25NYXNr
LmNvbnRhaW5zKERyYWdPcGVyYXRpb246OkxpbmspKQotICAgICAgICByZXR1cm4gImxpbmsiOwot
ICAgIHJldHVybiAibm9uZSI7CisgICAgICAgIHJldHVybiAibGluayJfczsKKyAgICByZXR1cm4g
Im5vbmUiX3M7CiB9CiAKIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBEYXRhVHJhbnNmZXI6OnNv
dXJjZU9wZXJhdGlvbk1hc2soKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZmRj
Y2Y3Nzc4YWU3OGViNGEzMTRjMzY0NzYxNWMyM2Y3ZmNhYTZjNS4uNmQ5OTk2ZjYzYmE3MjZhZWNm
YmIzMWM2NDZlM2IyODlhZWIzMWEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC05MzEs
NyArOTMxLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1lbnRD
b21wYXRpYmlsaXR5TW9kZSBtb2RlKQogCiBTdHJpbmcgRG9jdW1lbnQ6OmNvbXBhdE1vZGUoKSBj
b25zdAogewotICAgIHJldHVybiBpblF1aXJrc01vZGUoKSA/ICJCYWNrQ29tcGF0IiA6ICJDU1Mx
Q29tcGF0IjsKKyAgICByZXR1cm4gaW5RdWlya3NNb2RlKCkgPyAiQmFja0NvbXBhdCJfcyA6ICJD
U1MxQ29tcGF0Il9zOwogfQogCiBjb25zdCBDb2xvciYgRG9jdW1lbnQ6OnRoZW1lQ29sb3IoKQpA
QCAtMTQ5Myw3ICsxNDkzLDcgQEAgU3RyaW5nIERvY3VtZW50OjpjaGFyYWN0ZXJTZXRXaXRoVVRG
OEZhbGxiYWNrKCkgY29uc3QKICAgICBBdG9tU3RyaW5nIG5hbWUgPSBlbmNvZGluZygpOwogICAg
IGlmICghbmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG5hbWU7Ci0gICAgcmV0dXJuIFBB
TDo6VVRGOEVuY29kaW5nKCkuZG9tTmFtZSgpOworICAgIHJldHVybiBTdHJpbmcgeyBQQUw6OlVU
RjhFbmNvZGluZygpLmRvbU5hbWUoKSB9OwogfQogCiBTdHJpbmcgRG9jdW1lbnQ6OmRlZmF1bHRD
aGFyc2V0Rm9yTGVnYWN5QmluZGluZ3MoKSBjb25zdApAQCAtMzgxOSwxOSArMzgxOSwxOSBAQCB2
b2lkIERvY3VtZW50Ojpwcm9jZXNzTWV0YUh0dHBFcXVpdihjb25zdCBTdHJpbmcmIGVxdWl2LCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQsCiAKICAgICBIdHRwRXF1aXZQb2xpY3kgcG9saWN5ID0gaHR0
cEVxdWl2UG9saWN5KCk7CiAgICAgaWYgKHBvbGljeSAhPSBIdHRwRXF1aXZQb2xpY3k6OkVuYWJs
ZWQpIHsKLSAgICAgICAgU3RyaW5nIHJlYXNvbjsKKyAgICAgICAgQVNDSUlMaXRlcmFsIHJlYXNv
biA9ICIiX3M7CiAgICAgICAgIHN3aXRjaCAocG9saWN5KSB7CiAgICAgICAgIGNhc2UgSHR0cEVx
dWl2UG9saWN5OjpFbmFibGVkOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBIdHRwRXF1aXZQb2xpY3k6OkRpc2FibGVk
QnlTZXR0aW5nczoKLSAgICAgICAgICAgIHJlYXNvbiA9ICJieSB0aGUgZW1iZWRkZXIuIjsKKyAg
ICAgICAgICAgIHJlYXNvbiA9ICJieSB0aGUgZW1iZWRkZXIuIl9zOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgSHR0cEVxdWl2UG9saWN5OjpEaXNhYmxlZEJ5Q29udGVudERpc3Bv
c2l0aW9uQXR0YWNobWVudFNhbmRib3g6Ci0gICAgICAgICAgICByZWFzb24gPSAiZm9yIGRvY3Vt
ZW50cyB3aXRoIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQuIjsKKyAgICAgICAgICAg
IHJlYXNvbiA9ICJmb3IgZG9jdW1lbnRzIHdpdGggQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNo
bWVudC4iX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBTdHJpbmcg
bWVzc2FnZSA9ICJodHRwLWVxdWl2ICciICsgZXF1aXYgKyAiJyBpcyBkaXNhYmxlZCAiICsgcmVh
c29uOworICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoImh0dHAtZXF1aXYgJyIs
IGVxdWl2LCAiJyBpcyBkaXNhYmxlZCAiLCByZWFzb24pOwogICAgICAgICBhZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2Fn
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01NDAzLDEwICs1NDAzLDEwIEBAIFN0cmlu
ZyBEb2N1bWVudDo6ZG9tYWluKCkgY29uc3QKIEV4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50Ojpz
ZXREb21haW4oY29uc3QgU3RyaW5nJiBuZXdEb21haW4pCiB7CiAgICAgaWYgKCFmcmFtZSgpKQot
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIkEgYnJvd3NpbmcgY29u
dGV4dCBpcyByZXF1aXJlZCB0byBzZXQgYSBkb21haW4uIiB9OworICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIkEgYnJvd3NpbmcgY29udGV4dCBpcyByZXF1aXJlZCB0
byBzZXQgYSBkb21haW4uIl9zIH07CiAKICAgICBpZiAoaXNTYW5kYm94ZWQoU2FuZGJveERvY3Vt
ZW50RG9tYWluKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJB
c3NpZ25tZW50IGlzIGZvcmJpZGRlbiBmb3Igc2FuZGJveGVkIGlmcmFtZXMuIiB9OworICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIkFzc2lnbm1lbnQgaXMgZm9yYmlk
ZGVuIGZvciBzYW5kYm94ZWQgaWZyYW1lcy4iX3MgfTsKIAogICAgIGlmIChMZWdhY3lTY2hlbWVS
ZWdpc3RyeTo6aXNEb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKHNlY3VyaXR5
T3JpZ2luKCkucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0
eUVycm9yIH07CkBAIC01NDE1LDEwICs1NDE1LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERvY3Vt
ZW50OjpzZXREb21haW4oY29uc3QgU3RyaW5nJiBuZXdEb21haW4pCiAKICAgICBjb25zdCBTdHJp
bmcmIGVmZmVjdGl2ZURvbWFpbiA9IGRvbWFpbigpOwogICAgIGlmIChlZmZlY3RpdmVEb21haW4u
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlRo
ZSBkb2N1bWVudCBoYXMgYSBudWxsIGVmZmVjdGl2ZURvbWFpbi4iIH07CisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiVGhlIGRvY3VtZW50IGhhcyBhIG51bGwgZWZm
ZWN0aXZlRG9tYWluLiJfcyB9OwogCiAgICAgaWYgKCFzZWN1cml0eU9yaWdpbigpLmlzTWF0Y2hp
bmdSZWdpc3RyYWJsZURvbWFpblN1ZmZpeChuZXdEb21haW4sIHNldHRpbmdzKCkudHJlYXRJUEFk
ZHJlc3NBc0RvbWFpbigpKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJy
b3IsICJBdHRlbXB0ZWQgdG8gdXNlIGEgbm9uLXJlZ2lzdHJhYmxlIGRvbWFpbi4iIH07CisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiQXR0ZW1wdGVkIHRvIHVzZSBh
IG5vbi1yZWdpc3RyYWJsZSBkb21haW4uIl9zIH07CiAKICAgICBzZWN1cml0eU9yaWdpbigpLnNl
dERvbWFpbkZyb21ET00obmV3RG9tYWluKTsKICAgICByZXR1cm4geyB9OwpAQCAtNTg3Nyw3ICs1
ODc3LDcgQEAgc3RhdGljIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kKERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgYm8KIEV4Y2VwdGlvbk9yPGJvb2w+IERvY3Vt
ZW50OjpleGVjQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBib29sIHVzZXJJbnRl
cmZhY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpc0hUTUxE
b2N1bWVudCgpICYmICFpc1hIVE1MRG9jdW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciwgImV4ZWNDb21tYW5kIGlzIG9ubHkgc3VwcG9ydGVkIG9u
IEhUTUwgZG9jdW1lbnRzLiIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAiZXhlY0NvbW1hbmQgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBkb2N1bWVu
dHMuIl9zIH07CiAKICAgICBFdmVudFF1ZXVlU2NvcGUgZXZlbnRRdWV1ZVNjb3BlOwogICAgIHJl
dHVybiBjb21tYW5kKHRoaXMsIGNvbW1hbmROYW1lLCB1c2VySW50ZXJmYWNlKS5leGVjdXRlKHZh
bHVlKTsKQEAgLTU4ODYsMzUgKzU4ODYsMzUgQEAgRXhjZXB0aW9uT3I8Ym9vbD4gRG9jdW1lbnQ6
OmV4ZWNDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgdXNlckludGUKIEV4
Y2VwdGlvbk9yPGJvb2w+IERvY3VtZW50OjpxdWVyeUNvbW1hbmRFbmFibGVkKGNvbnN0IFN0cmlu
ZyYgY29tbWFuZE5hbWUpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpc0hUTUxEb2N1bWVudCgpICYm
ICFpc1hIVE1MRG9jdW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgInF1ZXJ5Q29tbWFuZEVuYWJsZWQgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRN
TCBkb2N1bWVudHMuIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJxdWVyeUNvbW1hbmRFbmFibGVkIGlzIG9ubHkgc3VwcG9ydGVkIG9uIEhUTUwgZG9j
dW1lbnRzLiJfcyB9OwogICAgIHJldHVybiBjb21tYW5kKHRoaXMsIGNvbW1hbmROYW1lKS5pc0Vu
YWJsZWQoKTsKIH0KIAogRXhjZXB0aW9uT3I8Ym9vbD4gRG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZElu
ZGV0ZXJtKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFp
c0hUTUxEb2N1bWVudCgpICYmICFpc1hIVE1MRG9jdW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgInF1ZXJ5Q29tbWFuZEluZGV0ZXJtIGlzIG9u
bHkgc3VwcG9ydGVkIG9uIEhUTUwgZG9jdW1lbnRzLiIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAicXVlcnlDb21tYW5kSW5kZXRlcm0gaXMgb25seSBz
dXBwb3J0ZWQgb24gSFRNTCBkb2N1bWVudHMuIl9zIH07CiAgICAgcmV0dXJuIGNvbW1hbmQodGhp
cywgY29tbWFuZE5hbWUpLnN0YXRlKCkgPT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAK
IEV4Y2VwdGlvbk9yPGJvb2w+IERvY3VtZW50OjpxdWVyeUNvbW1hbmRTdGF0ZShjb25zdCBTdHJp
bmcmIGNvbW1hbmROYW1lKQogewogICAgIGlmIChVTkxJS0VMWSghaXNIVE1MRG9jdW1lbnQoKSAm
JiAhaXNYSFRNTERvY3VtZW50KCkpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IsICJxdWVyeUNvbW1hbmRTdGF0ZSBpcyBvbmx5IHN1cHBvcnRlZCBvbiBIVE1M
IGRvY3VtZW50cy4iIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciwgInF1ZXJ5Q29tbWFuZFN0YXRlIGlzIG9ubHkgc3VwcG9ydGVkIG9uIEhUTUwgZG9jdW1l
bnRzLiJfcyB9OwogICAgIHJldHVybiBjb21tYW5kKHRoaXMsIGNvbW1hbmROYW1lKS5zdGF0ZSgp
ID09IFRyaVN0YXRlOjpUcnVlOwogfQogCiBFeGNlcHRpb25Pcjxib29sPiBEb2N1bWVudDo6cXVl
cnlDb21tYW5kU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUpCiB7CiAgICAgaWYg
KFVOTElLRUxZKCFpc0hUTUxEb2N1bWVudCgpICYmICFpc1hIVE1MRG9jdW1lbnQoKSkpCi0gICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgInF1ZXJ5Q29tbWFuZFN1
cHBvcnRlZCBpcyBvbmx5IHN1cHBvcnRlZCBvbiBIVE1MIGRvY3VtZW50cy4iIH07CisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgInF1ZXJ5Q29tbWFuZFN1cHBv
cnRlZCBpcyBvbmx5IHN1cHBvcnRlZCBvbiBIVE1MIGRvY3VtZW50cy4iX3MgfTsKICAgICByZXR1
cm4gY29tbWFuZCh0aGlzLCBjb21tYW5kTmFtZSkuaXNTdXBwb3J0ZWQoKTsKIH0KIAogRXhjZXB0
aW9uT3I8U3RyaW5nPiBEb2N1bWVudDo6cXVlcnlDb21tYW5kVmFsdWUoY29uc3QgU3RyaW5nJiBj
b21tYW5kTmFtZSkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWlzSFRNTERvY3VtZW50KCkgJiYgIWlz
WEhUTUxEb2N1bWVudCgpKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yLCAicXVlcnlDb21tYW5kVmFsdWUgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBkb2N1
bWVudHMuIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJxdWVyeUNvbW1hbmRWYWx1ZSBpcyBvbmx5IHN1cHBvcnRlZCBvbiBIVE1MIGRvY3VtZW50cy4i
X3MgfTsKICAgICByZXR1cm4gY29tbWFuZCh0aGlzLCBjb21tYW5kTmFtZSkudmFsdWUoKTsKIH0K
IApAQCAtODI1OSw3ICs4MjU5LDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlUmVzaXplT2JzZXJ2
YXRpb25zKFBhZ2UmIHBhZ2UpCiAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSAwOwogICAgICAgICB1
bnNpZ25lZCBjb2x1bW4gPSAwOwogICAgICAgICBnZXRQYXJzZXJMb2NhdGlvbih1cmwsIGxpbmUs
IGNvbHVtbik7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigiUmVzaXplT2JzZXJ2ZXIgbG9vcCBj
b21wbGV0ZWQgd2l0aCB1bmRlbGl2ZXJlZCBub3RpZmljYXRpb25zLiIsIGxpbmUsIGNvbHVtbiwg
dXJsLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCJSZXNpemVP
YnNlcnZlciBsb29wIGNvbXBsZXRlZCB3aXRoIHVuZGVsaXZlcmVkIG5vdGlmaWNhdGlvbnMuIl9z
LCBsaW5lLCBjb2x1bW4sIHVybCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIC8vIFN0YXJ0
aW5nIGEgbmV3IHNjaGVkdWxlIHRoZSBuZXh0IHJvdW5kIG9mIG5vdGlmeS4KICAgICAgICAgc2No
ZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6UmVzaXplT2JzZXJ2YXRp
b25zKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjk5N2JmZDBmZGI5ZmVlZjQ0
M2Y4YjNjY2E0ZDIwZTYxYzBiN2M5Yy4uNGIwMmEyNjg2NmZjZmVjODg0ZDMwMjg4MzRiNDExMDQ4
YmRjMmMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMzI4NSw4ICszMjg1LDggQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gRWxlbWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCkK
ICAgICBSZWZQdHIgcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOwogICAgIGlmIChVTkxJS0VMWSgh
cGFyZW50KSkgewogICAgICAgICBpZiAoIXBhcmVudE5vZGUoKSkKLSAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciwgIkNhbm5vdCBzZXQgb3V0
ZXJIVE1MIG9uIGVsZW1lbnQgYmVjYXVzZSBpdCBkb2Vzbid0IGhhdmUgYSBwYXJlbnQiIH07Ci0g
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciwgIkNh
bm5vdCBzZXQgb3V0ZXJIVE1MIG9uIGVsZW1lbnQgYmVjYXVzZSBpdHMgcGFyZW50IGlzIG5vdCBh
biBFbGVtZW50IiB9OworICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0
aW9uQWxsb3dlZEVycm9yLCAiQ2Fubm90IHNldCBvdXRlckhUTUwgb24gZWxlbWVudCBiZWNhdXNl
IGl0IGRvZXNuJ3QgaGF2ZSBhIHBhcmVudCJfcyB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IsICJDYW5ub3Qgc2V0IG91dGVySFRNTCBvbiBl
bGVtZW50IGJlY2F1c2UgaXRzIHBhcmVudCBpcyBub3QgYW4gRWxlbWVudCJfcyB9OwogICAgIH0K
IAogICAgIFJlZlB0cjxOb2RlPiBwcmV2ID0gcHJldmlvdXNTaWJsaW5nKCk7CkBAIC00Njk3LDcg
KzQ2OTcsNyBAQCBFbGVtZW50KiBFbGVtZW50OjpmaW5kQW5jaG9yRWxlbWVudEZvckxpbmsoU3Ry
aW5nJiBvdXRBbmNob3JOYW1lKQogCiBFeGNlcHRpb25PcjxSZWY8V2ViQW5pbWF0aW9uPj4gRWxl
bWVudDo6YW5pbWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiYmIGtleWZyYW1lcywgc3RkOjpvcHRpb25hbDxzdGQ6
OnZhcmlhbnQ8ZG91YmxlLCBLZXlmcmFtZUFuaW1hdGlvbk9wdGlvbnM+PiYmIG9wdGlvbnMpCiB7
Ci0gICAgU3RyaW5nIGlkID0gIiI7CisgICAgU3RyaW5nIGlkID0gZW1wdHlTdHJpbmcoKTsKICAg
ICBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxBbmltYXRpb25UaW1lbGluZT4+IHRpbWVsaW5lOwogICAg
IHN0ZDo6dmFyaWFudDxGcmFtZXNQZXJTZWNvbmQsIEFuaW1hdGlvbkZyYW1lUmF0ZVByZXNldD4g
ZnJhbWVSYXRlID0gQW5pbWF0aW9uRnJhbWVSYXRlUHJlc2V0OjpBdXRvOwogICAgIHN0ZDo6b3B0
aW9uYWw8c3RkOjp2YXJpYW50PGRvdWJsZSwgS2V5ZnJhbWVFZmZlY3RPcHRpb25zPj4ga2V5ZnJh
bWVFZmZlY3RPcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3Zl
cmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNwcAppbmRleCA4OGI5
Njg1M2NlMTc5YjlmZmRjYTU0NjYzMmJkM2E2Njk0YjFmNTc3Li4wNTdmMjBmOGJjNTlkMzIzYTRk
MmMxZjE1YjU3NThlZDk3NjQ2MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW1h
Z2VPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNwcApA
QCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQgdXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChI
VE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uCiAKICAgICAgICAgICAg
IEZsb2F0U2l6ZSB0YXJnZXRTaXplIHsgaG9yaXpvbnRhbEV4dGVudCAtIGhvcml6b250YWxPZmZz
ZXQsIGxpbmVCb3VuZHMuc2l6ZS5oZWlnaHQoKSB9OwogICAgICAgICAgICAgaWYgKHRhcmdldFNp
emUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgdGV4dENvbnRhaW5lci0+c2V0SW5saW5l
U3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSwgInNjYWxlKDAsIDApIik7CisgICAg
ICAgICAgICAgICAgdGV4dENvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVRyYW5zZm9ybSwgInNjYWxlKDAsIDApIl9zKTsKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KIApAQCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQgdXBkYXRlV2l0aFRl
eHRSZWNvZ25pdGlvblJlc3VsdChIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29n
bml0aW9uCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChzaXplQmVmb3JlVHJhbnNm
b3JtLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIHRleHRDb250YWluZXItPnNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0sICJzY2FsZSgwLCAwKSIpOworICAg
ICAgICAgICAgICAgIHRleHRDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlUcmFuc2Zvcm0sICJzY2FsZSgwLCAwKSJfcyk7CiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBiMWFmNDVmN2VjMmYxMGQy
ZTBkMjRjYzgwYzU3MGE2MWMzZGQ5MWM2Li5kMmUyN2Q4NDkwMWQ1NTk5Mjk0NThjNDY3ZDkxZjdm
NjRhN2I4MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xOTMwLDcgKzE5MzAsNyBAQCB2b2lkIE5v
ZGU6OnNob3dUcmVlRm9yVGhpc0Fjcm9zc0ZyYW1lKCkgY29uc3QKICAgICBOb2RlKiByb290Tm9k
ZSA9IGNvbnN0X2Nhc3Q8Tm9kZSo+KHRoaXMpOwogICAgIHdoaWxlIChwYXJlbnRPclNoYWRvd0hv
c3RPckZyYW1lT3duZXIocm9vdE5vZGUpKQogICAgICAgICByb290Tm9kZSA9IHBhcmVudE9yU2hh
ZG93SG9zdE9yRnJhbWVPd25lcihyb290Tm9kZSk7Ci0gICAgc2hvd1N1YlRyZWVBY3Jvc3NGcmFt
ZShyb290Tm9kZSwgdGhpcywgIiIpOworICAgIHNob3dTdWJUcmVlQWNyb3NzRnJhbWUocm9vdE5v
ZGUsIHRoaXMsIGVtcHR5U3RyaW5nKCkpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFRSRUVfREVC
VUdHSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcApp
bmRleCAxOGQ4NzcyYmVlYTRiMzY4YmVmNDM5YzllZjU5OGEwMWNjNmY5NzM3Li4wMWE2MjQwZDRj
MzI5NGIxMmY4MTBiZDZkMWQzMmU0MjljMDkzZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFByb2Nlc3Np
bmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KCkKICAgICAgICAgYXV0byBhdHRyaWJ1dGVz
ID0gcGFyc2VBdHRyaWJ1dGVzKGRhdGEoKSk7CiAgICAgICAgIGlmICghYXR0cmlidXRlcykKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgU3RyaW5nIHR5cGUgPSBhdHRyaWJ1dGVzLT5nZXQo
InR5cGUiKTsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSBhdHRyaWJ1dGVzLT5nZXQoInR5cGUiX3Mp
OwogCiAgICAgICAgIG1faXNDU1MgPSB0eXBlLmlzRW1wdHkoKSB8fCB0eXBlID09ICJ0ZXh0L2Nz
cyI7CiAjaWYgRU5BQkxFKFhTTFQpCkBAIC0xMDMsMTEgKzEwMywxMSBAQCB2b2lkIFByb2Nlc3Np
bmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KCkKICNlbmRpZgogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIFN0cmluZyBocmVmID0gYXR0cmlidXRlcy0+Z2V0KCJocmVmIik7Ci0g
ICAgICAgIFN0cmluZyBhbHRlcm5hdGUgPSBhdHRyaWJ1dGVzLT5nZXQoImFsdGVybmF0ZSIpOwor
ICAgICAgICBTdHJpbmcgaHJlZiA9IGF0dHJpYnV0ZXMtPmdldCgiaHJlZiJfcyk7CisgICAgICAg
IFN0cmluZyBhbHRlcm5hdGUgPSBhdHRyaWJ1dGVzLT5nZXQoImFsdGVybmF0ZSJfcyk7CiAgICAg
ICAgIG1fYWx0ZXJuYXRlID0gYWx0ZXJuYXRlID09ICJ5ZXMiOwotICAgICAgICBtX3RpdGxlID0g
YXR0cmlidXRlcy0+Z2V0KCJ0aXRsZSIpOwotICAgICAgICBtX21lZGlhID0gYXR0cmlidXRlcy0+
Z2V0KCJtZWRpYSIpOworICAgICAgICBtX3RpdGxlID0gYXR0cmlidXRlcy0+Z2V0KCJ0aXRsZSJf
cyk7CisgICAgICAgIG1fbWVkaWEgPSBhdHRyaWJ1dGVzLT5nZXQoIm1lZGlhIl9zKTsKIAogICAg
ICAgICBpZiAobV9hbHRlcm5hdGUgJiYgbV90aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNo
ZWNrU3R5bGVTaGVldCgpCiAgICAgICAgICAgICB9IGVsc2UKICNlbmRpZgogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIFN0cmluZyBjaGFyc2V0ID0gYXR0cmlidXRlcy0+Z2V0KCJjaGFy
c2V0Iik7CisgICAgICAgICAgICAgICAgU3RyaW5nIGNoYXJzZXQgPSBhdHRyaWJ1dGVzLT5nZXQo
ImNoYXJzZXQiX3MpOwogICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZiksIENhY2hlZFJlc291cmNlTG9hZGVyOjpk
ZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIHN0ZDo6bnVsbG9wdCwgY2hhcnNldC5pc0Vt
cHR5KCkgPyBkb2N1bWVudCgpLmNoYXJzZXQoKSA6IFdURk1vdmUoY2hhcnNldCkpOwogCiAgICAg
ICAgICAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxs
cHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IGQ0NjNk
ZTAzYTQyZGUxNDhhYjZlYjc3NTQwNjdlZjdlZDU2NGJhN2QuLjgzNjA2YTdhZjUwNGZmMDYzYmMx
ODJkZjg0ZmE2ODIxMTYyZWNjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3
cG9ydEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1l
bnRzLmNwcApAQCAtMzk2LDEzICszOTYsMTMgQEAgc3RhdGljIFZpZXdwb3J0Rml0IHBhcnNlVmll
d3BvcnRGaXRWYWx1ZShTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSwgY29uc3QKICAg
ICByZXR1cm4gVmlld3BvcnRGaXQ6OkF1dG87CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiB2aWV3
cG9ydEVycm9yTWVzc2FnZVRlbXBsYXRlKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSkKK3N0
YXRpYyBBU0NJSUxpdGVyYWwgdmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShWaWV3cG9ydEVy
cm9yQ29kZSBlcnJvckNvZGUpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVycm9y
c1tdID0gewotICAgICAgICAiVmlld3BvcnQgYXJndW1lbnQga2V5IFwiJXJlcGxhY2VtZW50MVwi
IG5vdCByZWNvZ25pemVkIGFuZCBpZ25vcmVkLiIsCi0gICAgICAgICJWaWV3cG9ydCBhcmd1bWVu
dCB2YWx1ZSBcIiVyZXBsYWNlbWVudDFcIiBmb3Iga2V5IFwiJXJlcGxhY2VtZW50MlwiIGlzIGlu
dmFsaWQsIGFuZCBoYXMgYmVlbiBpZ25vcmVkLiIsCi0gICAgICAgICJWaWV3cG9ydCBhcmd1bWVu
dCB2YWx1ZSBcIiVyZXBsYWNlbWVudDFcIiBmb3Iga2V5IFwiJXJlcGxhY2VtZW50MlwiIHdhcyB0
cnVuY2F0ZWQgdG8gaXRzIG51bWVyaWMgcHJlZml4LiIsCi0gICAgICAgICJWaWV3cG9ydCBtYXhp
bXVtLXNjYWxlIGNhbm5vdCBiZSBsYXJnZXIgdGhhbiAxMC4wLiBUaGUgbWF4aW11bS1zY2FsZSB3
aWxsIGJlIHNldCB0byAxMC4wLiIKKyAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBl
cnJvcnNbXSA9IHsKKyAgICAgICAgIlZpZXdwb3J0IGFyZ3VtZW50IGtleSBcIiVyZXBsYWNlbWVu
dDFcIiBub3QgcmVjb2duaXplZCBhbmQgaWdub3JlZC4iX3MsCisgICAgICAgICJWaWV3cG9ydCBh
cmd1bWVudCB2YWx1ZSBcIiVyZXBsYWNlbWVudDFcIiBmb3Iga2V5IFwiJXJlcGxhY2VtZW50Mlwi
IGlzIGludmFsaWQsIGFuZCBoYXMgYmVlbiBpZ25vcmVkLiJfcywKKyAgICAgICAgIlZpZXdwb3J0
IGFyZ3VtZW50IHZhbHVlIFwiJXJlcGxhY2VtZW50MVwiIGZvciBrZXkgXCIlcmVwbGFjZW1lbnQy
XCIgd2FzIHRydW5jYXRlZCB0byBpdHMgbnVtZXJpYyBwcmVmaXguIl9zLAorICAgICAgICAiVmll
d3BvcnQgbWF4aW11bS1zY2FsZSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gMTAuMC4gVGhlIG1heGlt
dW0tc2NhbGUgd2lsbCBiZSBzZXQgdG8gMTAuMC4iX3MKICAgICB9OwogCiAgICAgcmV0dXJuIGVy
cm9yc1tlcnJvckNvZGVdOwpAQCAtNDMzLDcgKzQzMyw3IEBAIHN0YXRpYyBTdHJpbmcgdmlld3Bv
cnRFcnJvck1lc3NhZ2UoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBTdHJpbmdWaWV3IHJl
cGxhCiAgICAgICAgIG1lc3NhZ2UucmVwbGFjZSgiJXJlcGxhY2VtZW50MiIsIHJlcGxhY2VtZW50
Mi50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOwogCiAgICAgaWYgKChlcnJvckNvZGUgPT0gVW5y
ZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3IgfHwgZXJyb3JDb2RlID09IFRydW5j
YXRlZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yKSAmJiByZXBsYWNlbWVudDEuY29udGFpbnMo
JzsnKSkKLSAgICAgICAgbWVzc2FnZS5hcHBlbmQoIiBOb3RlIHRoYXQgJzsnIGlzIG5vdCBhIHNl
cGFyYXRvciBpbiB2aWV3cG9ydCB2YWx1ZXMuIFRoZSBsaXN0IHNob3VsZCBiZSBjb21tYS1zZXBh
cmF0ZWQuIik7CisgICAgICAgIG1lc3NhZ2UuYXBwZW5kKCIgTm90ZSB0aGF0ICc7JyBpcyBub3Qg
YSBzZXBhcmF0b3IgaW4gdmlld3BvcnQgdmFsdWVzLiBUaGUgbGlzdCBzaG91bGQgYmUgY29tbWEt
c2VwYXJhdGVkLiJfcyk7CiAKICAgICByZXR1cm4gbWVzc2FnZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCBjYzk1ZDUyMWZkODMwM2Q5NTVjZWJhY2RhNDExNzcwNjMzZjAxMWM0
Li4wMTgwODZkM2NjYjBiMmIwYmIzMjgyMzQ3Y2M4YmMzYWM2NzQ3ZmYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC0xOTAzLDEyICsxOTAzLDEyIEBAIHZvaWQgRWRpdG9yOjpkaWRX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpCiAKIHZvaWQgRWRpdG9yOjp0b2dnbGVCb2xkKCkK
IHsKLSAgICBjb21tYW5kKCJUb2dnbGVCb2xkIikuZXhlY3V0ZSgpOworICAgIGNvbW1hbmQoIlRv
Z2dsZUJvbGQiX3MpLmV4ZWN1dGUoKTsKIH0KIAogdm9pZCBFZGl0b3I6OnRvZ2dsZVVuZGVybGlu
ZSgpCiB7Ci0gICAgY29tbWFuZCgiVG9nZ2xlVW5kZXJsaW5lIikuZXhlY3V0ZSgpOworICAgIGNv
bW1hbmQoIlRvZ2dsZVVuZGVybGluZSJfcykuZXhlY3V0ZSgpOwogfQogCiB2b2lkIEVkaXRvcjo6
c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC0x
OTI1LDcgKzE5MjUsNyBAQCB2b2lkIEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3Jp
dGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
YXV0byYgZm9jdXNlZEZvcm1FbGVtZW50ID0gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ+KCpmb2N1c2VkRWxlbWVudCk7Ci0gICAgICAgIGF1dG8gZGlyZWN0aW9uVmFsdWUgPSBk
aXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVjdGlvbjo6TGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwi
OworICAgICAgICBhdXRvIGRpcmVjdGlvblZhbHVlID0gZGlyZWN0aW9uID09IFdyaXRpbmdEaXJl
Y3Rpb246OkxlZnRUb1JpZ2h0ID8gImx0ciJfcyA6ICJydGwiX3M7CiAgICAgICAgIGF1dG8gd3Jp
dGluZ0RpcmVjdGlvbklucHV0VHlwZU5hbWUgPSBpbnB1dFR5cGVOYW1lRm9yRWRpdGluZ0FjdGlv
bihFZGl0QWN0aW9uOjpTZXRCbG9ja1dyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBpZiAoIWRp
c3BhdGNoQmVmb3JlSW5wdXRFdmVudChmb2N1c2VkRm9ybUVsZW1lbnQsIHdyaXRpbmdEaXJlY3Rp
b25JbnB1dFR5cGVOYW1lLCBkaXJlY3Rpb25WYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xOTM3LDcgKzE5MzcsNyBAQCB2b2lkIEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24o
V3JpdGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgfQogCiAgICAgYXV0byBzdHlsZSA9IE11
dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OkxlZnRU
b1JpZ2h0ID8gImx0ciIgOiBkaXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRUb0xl
ZnQgPyAicnRsIiA6ICJpbmhlcml0IiwgZmFsc2UpOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OkxlZnRU
b1JpZ2h0ID8gImx0ciJfcyA6IGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9uOjpSaWdodFRv
TGVmdCA/ICJydGwiX3MgOiAiaW5oZXJpdCJfcywgZmFsc2UpOwogICAgIGFwcGx5UGFyYWdyYXBo
U3R5bGVUb1NlbGVjdGlvbihzdHlsZS5wdHIoKSwgRWRpdEFjdGlvbjo6U2V0QmxvY2tXcml0aW5n
RGlyZWN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAK
aW5kZXggNjFhMWVhNmI5NzU3YzdiYjc1NWY5NDJkZWFjODgwMTE1ZTdkNGRhYy4uYjAzZjkzZDkw
YzM3MmExMDg2NGRiZDUzMmRiMDliZDJkM2U0Y2ZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RhdGljIGJvb2wgYXBwbHlD
b21tYW5kVG9GcmFtZShGcmFtZSYgZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBF
ZGl0QWMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIGlzU3R5bGVQcmVzZW50
KEVkaXRvciYgZWRpdG9yLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqIG9u
VmFsdWUpCitzdGF0aWMgYm9vbCBpc1N0eWxlUHJlc2VudChFZGl0b3ImIGVkaXRvciwgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlELCBBU0NJSUxpdGVyYWwgb25WYWx1ZSkKIHsKICAgICAvLyBTdHls
ZSBpcyBjb25zaWRlcmVkIHByZXNlbnQgd2hlbgogICAgIC8vIE1hYzogcHJlc2VudCBhdCB0aGUg
YmVnaW5uaW5nIG9mIHNlbGVjdGlvbgpAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBib29sIGV4
ZWN1dGVBcHBseVN0eWxlKEZyYW1lJiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2Us
IEVkaXRBY3RpCiAgICAgcmV0dXJuIGFwcGx5Q29tbWFuZFRvRnJhbWUoZnJhbWUsIHNvdXJjZSwg
YWN0aW9uLCBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwcm9wZXJ0eUlELCBwcm9wZXJ0eVZhbHVlKSk7
CiB9CiAKLXN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHlsZShGcmFtZSYgZnJhbWUsIEVkaXRv
ckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eUlELCBjb25zdCBjaGFyKiBvZmZWYWx1ZSwgY29uc3QgY2hhciogb25WYWx1ZSkKK3N0
YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHlsZShGcmFtZSYgZnJhbWUsIEVkaXRvckNvbW1hbmRT
b3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
LCBBU0NJSUxpdGVyYWwgb2ZmVmFsdWUsIEFTQ0lJTGl0ZXJhbCBvblZhbHVlKQogewogICAgIGJv
b2wgc3R5bGVJc1ByZXNlbnQgPSBpc1N0eWxlUHJlc2VudChmcmFtZS5lZGl0b3IoKSwgcHJvcGVy
dHlJRCwgb25WYWx1ZSk7CiAgICAgcmV0dXJuIGFwcGx5Q29tbWFuZFRvRnJhbWUoZnJhbWUsIHNv
dXJjZSwgYWN0aW9uLCBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwcm9wZXJ0eUlELCBzdHlsZUlzUHJl
c2VudCA/IG9mZlZhbHVlIDogb25WYWx1ZSkpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBi
b29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoRnJhbWUmIGZyYW1lLCBUZXh0R3JhbnVs
YXJpdHkgZ3JhbnVsYXJpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBUcmlTdGF0ZSBz
dGF0ZVN0eWxlKEZyYW1lJiBmcmFtZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBj
aGFyKiBkZXNpcmVkVmFsdWUpCitzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdHlsZShGcmFtZSYgZnJh
bWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgQVNDSUlMaXRlcmFsIGRlc2lyZWRWYWx1ZSkK
IHsKICAgICBpZiAoZnJhbWUuZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRUb2dnbGVTdHlsZUJh
c2VkT25TdGFydE9mU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5z
ZWxlY3Rpb25TdGFydEhhc1N0eWxlKHByb3BlcnR5SUQsIGRlc2lyZWRWYWx1ZSkgPyBUcmlTdGF0
ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKQEAgLTEwODUsNyArMTA4NSw3IEBAIHN0YXRpYyBi
b29sIGV4ZWN1dGVTZXRNYXJrKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBUZXh0RGVjb3Jh
dGlvbkNoYW5nZSB0ZXh0RGVjb3JhdGlvbkNoYW5nZUZvclRvZ2dsaW5nKEVkaXRvciYgZWRpdG9y
LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqIG9uVmFsdWUpCitzdGF0aWMg
VGV4dERlY29yYXRpb25DaGFuZ2UgdGV4dERlY29yYXRpb25DaGFuZ2VGb3JUb2dnbGluZyhFZGl0
b3ImIGVkaXRvciwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBBU0NJSUxpdGVyYWwgb25WYWx1
ZSkKIHsKICAgICByZXR1cm4gaXNTdHlsZVByZXNlbnQoZWRpdG9yLCBwcm9wZXJ0eUlELCBvblZh
bHVlKSA/IFRleHREZWNvcmF0aW9uQ2hhbmdlOjpSZW1vdmUgOiBUZXh0RGVjb3JhdGlvbkNoYW5n
ZTo6QWRkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5l
QnJlYWtDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFr
Q29tbWFuZC5jcHAKaW5kZXggNTk2N2Q0NGNmOWYwNzRlMDUwODBjNmRlZWY3YjEzZDcyYzVhYmJl
Ni4uM2UzMzczYWMzZjZmZDMxYTBhYzA0ZDQ2MWRhOGM2NzEzOWEwMDA2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCkBAIC04OCw3
ICs4OCw3IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgaWYg
KHNob3VsZFVzZUJyZWFrRWxlbWVudChwb3NpdGlvbikpCiAgICAgICAgIG5vZGVUb0luc2VydCA9
IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICBlbHNlCi0gICAgICAgIG5v
ZGVUb0luc2VydCA9IGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUoIlxuIik7CisgICAgICAgIG5v
ZGVUb0luc2VydCA9IGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUoIlxuIl9zKTsKICAgICAKICAg
ICAvLyBGSVhNRTogTmVlZCB0byBtZXJnZSB0ZXh0IG5vZGVzIHdoZW4gaW5zZXJ0aW5nIGp1c3Qg
YWZ0ZXIgb3IgYmVmb3JlIHRleHQuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0VGV4dENvbW1hbmQuY3BwCmluZGV4IDYxYTc3ZjUxMGZmMjJmN2VhYzhlY2VlOGZiM2E0MzIz
NzA5M2JlNzkuLjcxZmNhMjM1ZWFlZWI1ZGUzZmM0YWRjZDMxNjkxMzE5MWI4ZmVjNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCkBAIC0yNDgsNyAr
MjQ4LDcgQEAgUG9zaXRpb24gSW5zZXJ0VGV4dENvbW1hbmQ6Omluc2VydFRhYihjb25zdCBQb3Np
dGlvbiYgcG9zKQogICAgIC8vIGtlZXAgdGFicyBjb2FsZXNjZWQgaW4gdGFiIHNwYW4KICAgICBp
ZiAoaXNUYWJTcGFuVGV4dE5vZGUobm9kZSkpIHsKICAgICAgICAgUmVmPFRleHQ+IHRleHROb2Rl
ID0gZG93bmNhc3Q8VGV4dD4oKm5vZGUpOwotICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUodGV4
dE5vZGUsIG9mZnNldCwgIlx0Iik7CisgICAgICAgIGluc2VydFRleHRJbnRvTm9kZSh0ZXh0Tm9k
ZSwgb2Zmc2V0LCAiXHQiX3MpOwogICAgICAgICByZXR1cm4gUG9zaXRpb24odGV4dE5vZGUucHRy
KCksIG9mZnNldCArIDEpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggZmMzNmI2MzRmYzBmMjk4N2E4
Mjc4N2E3NjljYmIzN2Y1MGQxMzA2Ni4uMzBiYTNmMzgyZDM4MmE3MzUxNjJhMTczNjQwNTUyOWI2
OTk1YzlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKQEAgLTcxNiw5ICs3MTYsOSBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKEluc2Vy
dAogCiAgICAgICAgICAgICAvLyBNdXRhdGUgdXNpbmcgdGhlIENTU09NIHdyYXBwZXIgc28gd2Ug
Z2V0IHRoZSBzYW1lIGV2ZW50IGJlaGF2aW9yIGFzIGEgc2NyaXB0LgogICAgICAgICAgICAgaWYg
KGlzQmxvY2soZWxlbWVudCkpCi0gICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgp
LnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlEaXNwbGF5LCAiaW5saW5lIiwgZmFsc2Up
OworICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS5zZXRQcm9wZXJ0eUludGVy
bmFsKENTU1Byb3BlcnR5RGlzcGxheSwgImlubGluZSJfcywgZmFsc2UpOwogICAgICAgICAgICAg
aWYgKGVsZW1lbnQtPnJlbmRlcmVyKCkgJiYgZWxlbWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKS5p
c0Zsb2F0aW5nKCkpCi0gICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNldFBy
b3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgIm5vbmUiLCBmYWxzZSk7CisgICAgICAg
ICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJv
cGVydHlGbG9hdCwgIm5vbmUiX3MsIGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE1
OTQsMTEgKzE1OTQsMTEgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6YWRkU3BhY2Vz
Rm9yU21hcnRSZXBsYWNlKCkKICAgICBpZiAobmVlZHNUcmFpbGluZ1NwYWNlICYmIGVuZE5vZGUp
IHsKICAgICAgICAgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UgPSAhZW5kTm9kZS0+cmVuZGVyZXIo
KSB8fCBlbmROb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpOwog
ICAgICAgICBpZiAoaXM8VGV4dD4oKmVuZE5vZGUpKSB7Ci0gICAgICAgICAgICBpbnNlcnRUZXh0
SW50b05vZGUoZG93bmNhc3Q8VGV4dD4oKmVuZE5vZGUpLCBlbmRPZmZzZXQsIGNvbGxhcHNlV2hp
dGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIgIik7CisgICAgICAgICAgICBp
bnNlcnRUZXh0SW50b05vZGUoZG93bmNhc3Q8VGV4dD4oKmVuZE5vZGUpLCBlbmRPZmZzZXQsIGNv
bGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIgIl9zKTsKICAg
ICAgICAgICAgIGlmIChtX2VuZE9mSW5zZXJ0ZWRDb250ZW50LmNvbnRhaW5lck5vZGUoKSA9PSBl
bmROb2RlKQogICAgICAgICAgICAgICAgIG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQubW92ZVRvT2Zm
c2V0KG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgKyAxKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gbm9kZSA9IGRvY3VtZW50KCkuY3Jl
YXRlRWRpdGluZ1RleHROb2RlKGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VT
dHJpbmcoKSA6ICIgIik7CisgICAgICAgICAgICBhdXRvIG5vZGUgPSBkb2N1bWVudCgpLmNyZWF0
ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3Ry
aW5nKCkgOiAiICJfcyk7CiAgICAgICAgICAgICBpbnNlcnROb2RlQWZ0ZXIobm9kZS5jb3B5UmVm
KCksICplbmROb2RlKTsKICAgICAgICAgICAgIHVwZGF0ZU5vZGVzSW5zZXJ0ZWQobm9kZS5wdHIo
KSk7CiAgICAgICAgIH0KQEAgLTE2MTgsMTEgKzE2MTgsMTEgQEAgdm9pZCBSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6YWRkU3BhY2VzRm9yU21hcnRSZXBsYWNlKCkKICAgICBpZiAobmVlZHNMZWFk
aW5nU3BhY2UgJiYgc3RhcnROb2RlKSB7CiAgICAgICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNl
ID0gIXN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSB8fCBzdGFydE5vZGUtPnJlbmRlcmVyKCktPnN0eWxl
KCkuY29sbGFwc2VXaGl0ZVNwYWNlKCk7CiAgICAgICAgIGlmIChpczxUZXh0Pigqc3RhcnROb2Rl
KSkgewotICAgICAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKGRvd25jYXN0PFRleHQ+KCpzdGFy
dE5vZGUpLCBzdGFydE9mZnNldCwgY29sbGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFj
ZVN0cmluZygpIDogIiAiKTsKKyAgICAgICAgICAgIGluc2VydFRleHRJbnRvTm9kZShkb3duY2Fz
dDxUZXh0Pigqc3RhcnROb2RlKSwgc3RhcnRPZmZzZXQsIGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5v
bkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIgIl9zKTsKICAgICAgICAgICAgIGlmIChtX2VuZE9m
SW5zZXJ0ZWRDb250ZW50LmNvbnRhaW5lck5vZGUoKSA9PSBzdGFydE5vZGUgJiYgbV9lbmRPZklu
c2VydGVkQ29udGVudC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkKICAgICAgICAgICAgICAgICBt
X2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm1vdmVUb09mZnNldChtX2VuZE9mSW5zZXJ0ZWRDb250ZW50
Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpICsgMSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBhdXRvIG5vZGUgPSBkb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBz
ZVdoaXRlU3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICIpOworICAgICAgICAg
ICAgYXV0byBub2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoY29sbGFwc2VX
aGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIDogIiAiX3MpOwogICAgICAgICAg
ICAgLy8gRG9uJ3QgdXBkYXRlTm9kZXNJbnNlcnRlZC4gRG9pbmcgc28gd291bGQgc2V0IG1fZW5k
T2ZJbnNlcnRlZENvbnRlbnQgdG8gYmUgdGhlIG5vZGUgY29udGFpbmluZyB0aGUgbGVhZGluZyBz
cGFjZSwKICAgICAgICAgICAgIC8vIGJ1dCBtX2VuZE9mSW5zZXJ0ZWRDb250ZW50IGlzIHN1cHBv
c2VkIHRvIG1hcmsgdGhlIGVuZCBvZiBwYXN0ZWQgY29udGVudC4KICAgICAgICAgICAgIGluc2Vy
dE5vZGVCZWZvcmUobm9kZSwgKnN0YXJ0Tm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGM1YjJiMmQ1OTVi
Nzc3MjQ5MGZhOGY2MDMzNDMzMTgzZTJhOThlZTAuLjAxYzZlZWFlOTE2ZWE1YWEyMzQyM2VmMzEy
M2ExN2MwZGRiMjZmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6b2JzZXJ2ZVBhcmFncmFwaHMoY29uc3QgUG9zaXRpb24m
IHN0YXJ0LCBjb25zdAogCiAgICAgICAgIGlmIChjb250ZW50LmlzUmVwbGFjZWRDb250ZW50KSB7
CiAgICAgICAgICAgICBpZiAoIXVuaXRzSW5DdXJyZW50UGFyYWdyYXBoLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgICAgICB1bml0c0luQ3VycmVudFBhcmFncmFwaC5hcHBlbmQoTWFuaXB1bGF0aW9u
VW5pdCB7ICpjb250ZW50Tm9kZSwgeyBNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlm
aWVyLmdlbmVyYXRlKCksICJbXSIsIHRva2VuSW5mbyhjb250ZW50Lm5vZGUuZ2V0KCkpLCB0cnVl
IH0gfSB9KTsKKyAgICAgICAgICAgICAgICB1bml0c0luQ3VycmVudFBhcmFncmFwaC5hcHBlbmQo
TWFuaXB1bGF0aW9uVW5pdCB7ICpjb250ZW50Tm9kZSwgeyBNYW5pcHVsYXRpb25Ub2tlbiB7IG1f
dG9rZW5JZGVudGlmaWVyLmdlbmVyYXRlKCksICJbXSJfcywgdG9rZW5JbmZvKGNvbnRlbnQubm9k
ZS5nZXQoKSksIHRydWUgfSB9IH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKaW5kZXggMjI3MmViYjMw
ZGU3OTIxNjM2NmZiMTE5MzY1ODFiOTI1OGJkY2ExZS4uOWU3YzBhYzRhNGFkOTA1NGRmM2U0MjE3
MDgwZjQyOTE1YjNhMTgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBp
bmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQu
Y3BwCkBAIC01NTcsNyArNTU3LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJl
YWtBbmROb3RpZnlBY2Nlc3NpYmlsaXR5KCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5UmVwbGFjZWRU
ZXh0IHJlcGxhY2VkVGV4dChkb2N1bWVudCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAg
ICBpbnNlcnRMaW5lQnJlYWsoKTsKLSAgICByZXBsYWNlZFRleHQucG9zdFRleHRTdGF0ZUNoYW5n
ZU5vdGlmaWNhdGlvbihkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpLCBBWFRleHRF
ZGl0VHlwZVR5cGluZywgIlxuIiwgZG9jdW1lbnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7
CisgICAgcmVwbGFjZWRUZXh0LnBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oZG9jdW1l
bnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSwgQVhUZXh0RWRpdFR5cGVUeXBpbmcsICJcbiJf
cywgZG9jdW1lbnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CiAgICAgY29tcG9zaXRpb24o
KS0+c2V0UmFuZ2VEZWxldGVkQnlVbmFwcGx5KHJlcGxhY2VkVGV4dC5yZXBsYWNlZFJhbmdlKCkp
OwogfQogCkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3JBbmROb3RpZnlBY2Nlc3NpYmlsaXR5KCkKIHsKICAgICBBY2Nlc3NpYmls
aXR5UmVwbGFjZWRUZXh0IHJlcGxhY2VkVGV4dChkb2N1bWVudCgpLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpKTsKICAgICBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IoKTsKLSAgICByZXBsYWNlZFRl
eHQucG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihkb2N1bWVudCgpLmV4aXN0aW5nQVhP
YmplY3RDYWNoZSgpLCBBWFRleHRFZGl0VHlwZVR5cGluZywgIlxuIiwgZG9jdW1lbnQoKS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKSk7CisgICAgcmVwbGFjZWRUZXh0LnBvc3RUZXh0U3RhdGVDaGFu
Z2VOb3RpZmljYXRpb24oZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSwgQVhUZXh0
RWRpdFR5cGVUeXBpbmcsICJcbiJfcywgZG9jdW1lbnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KSk7CiAgICAgY29tcG9zaXRpb24oKS0+c2V0UmFuZ2VEZWxldGVkQnlVbmFwcGx5KHJlcGxhY2Vk
VGV4dC5yZXBsYWNlZFJhbmdlKCkpOwogfQogCkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBUeXBp
bmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnRBbmROb3Rp
ZnlBY2Nlc3NpYmlsaXQKIHsKICAgICBBY2Nlc3NpYmlsaXR5UmVwbGFjZWRUZXh0IHJlcGxhY2Vk
VGV4dChkb2N1bWVudCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAgICBpbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoKTsKLSAgICByZXBsYWNlZFRleHQucG9zdFRl
eHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNo
ZSgpLCBBWFRleHRFZGl0VHlwZVR5cGluZywgIlxuIiwgZG9jdW1lbnQoKS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKSk7CisgICAgcmVwbGFjZWRUZXh0LnBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmlj
YXRpb24oZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSwgQVhUZXh0RWRpdFR5cGVU
eXBpbmcsICJcbiJfcywgZG9jdW1lbnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CiAgICAg
Y29tcG9zaXRpb24oKS0+c2V0UmFuZ2VEZWxldGVkQnlVbmFwcGx5KHJlcGxhY2VkVGV4dC5yZXBs
YWNlZFJhbmdlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMjBiM2Zj
ZjhkZGY5NTQ0MzQ5YjE4NjRlZjlkOWJmMGZiNGFlZTY0Ni4uMmQ4ZjhiMzM1OTMwZDA3ZGQzMzI2
YjgxMDY1ZjJkNGZkODM1YWNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTk2
LDEyICsxOTYsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6
aW5nV2ViQ29udGVudCgpCiAgICAgZnJhbWUuaW5pdCgpOwogCiAgICAgRnJhbWVMb2FkZXImIGxv
YWRlciA9IGZyYW1lLmxvYWRlcigpOwotICAgIHN0YXRpYyBjaGFyIG1hcmt1cFtdID0gIjwhRE9D
VFlQRSBodG1sPjxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+IjsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEFTQ0lJTGl0ZXJhbCBtYXJrdXAgPSAiPCFET0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+PC9i
b2R5PjwvaHRtbD4iX3M7CiAgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigp
KTsKICAgICBhdXRvJiB3cml0ZXIgPSBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3Jp
dGVyKCk7Ci0gICAgd3JpdGVyLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKKyAgICB3cml0ZXIu
c2V0TUlNRVR5cGUoInRleHQvaHRtbCJfcyk7CiAgICAgd3JpdGVyLmJlZ2luKCk7Ci0gICAgd3Jp
dGVyLmluc2VydERhdGFTeW5jaHJvbm91c2x5KFN0cmluZyhtYXJrdXApKTsKKyAgICB3cml0ZXIu
aW5zZXJ0RGF0YVN5bmNocm9ub3VzbHkobWFya3VwKTsKICAgICB3cml0ZXIuZW5kKCk7CiAgICAg
UkVMRUFTRV9BU1NFUlQocGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+Ym9keSgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKaW5kZXggM2UxZWYzZmIzNjJiYWZjNDMwNjFlMThj
YzBjMTNlZDk1ZGU2OWZhZC4uNDQ1ODkxMmJhMDhjNjU2MTc3NmUzMmM3NzE0Y2QzZTg5NzVkZWEw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFVSTCBC
bG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQog
CiBVUkwgQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKQogewotICAgIHJldHVybiBjcmVhdGVC
bG9iVVJMKCJibG9iaW50ZXJuYWw6Ly8iKTsKKyAgICByZXR1cm4gY3JlYXRlQmxvYlVSTCgiYmxv
YmludGVybmFsOi8vIl9zKTsKIH0KIAogc3RhdGljIGNvbnN0IERvY3VtZW50KiBibG9iT3duZXIo
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIGJsb2JPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCAyZmU1YWYxZjk4ZDM2ZGRjODlmMzljY2MxN2Q3
YjcwZWM5MzM5ZThiLi5hY2Y0ZmY5YjE4OGZmNmJlNjI4NDEyNWQzODkxMDY1ODRhYzkyNDIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAgLTkzLDcg
KzkzLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb24KIAogICAgIC8vIENvbnN0cnVjdCBhbmQg
bG9hZCB0aGUgcmVxdWVzdC4KICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybEZvclJl
YWRpbmcpOwotICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgcmVxdWVzdC5z
ZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogCiAgICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgb3B0
aW9uczsKICAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gU2VuZENhbGxiYWNrUG9saWN5
OjpTZW5kQ2FsbGJhY2tzOwpAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRl
cjo6Y29udmVydFRvVGV4dCgpCiAgICAgLy8gcHJvdmlkZWQgZW5jb2RpbmcuICAgICAKICAgICAv
LyBGSVhNRTogY29uc2lkZXIgc3VwcG9ydGluZyBpbmNyZW1lbnRhbCBkZWNvZGluZyB0byBpbXBy
b3ZlIHRoZSBwZXJmLgogICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICBtX2RlY29kZXIgPSBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCBtX2VuY29kaW5nLmlzVmFs
aWQoKSA/IG1fZW5jb2RpbmcgOiBQQUw6OlVURjhFbmNvZGluZygpKTsKKyAgICAgICAgbV9kZWNv
ZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCBtX2VuY29k
aW5nLmlzVmFsaWQoKSA/IG1fZW5jb2RpbmcgOiBQQUw6OlVURjhFbmNvZGluZygpKTsKICAgICBp
ZiAoaXNDb21wbGV0ZWQoKSkKICAgICAgICAgbV9zdHJpbmdSZXN1bHQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX3Jhd0RhdGEtPmRhdGEoKSks
IG1fYnl0ZXNMb2FkZWQpOwogICAgIGVsc2UKQEAgLTM1NCw3ICszNTQsNyBAQCB2b2lkIEZpbGVS
ZWFkZXJMb2FkZXI6OmNvbnZlcnRUb0RhdGFVUkwoKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9zdHJpbmdSZXN1bHQgPSBtYWtlU3RyaW5nKCJkYXRhOiIsIG1fZGF0YVR5cGUuaXNF
bXB0eSgpID8gImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgOiBtX2RhdGFUeXBlLCAiO2Jhc2U2
NCwiLCBiYXNlNjRFbmNvZGVkKG1fcmF3RGF0YS0+ZGF0YSgpLCBtX2J5dGVzTG9hZGVkKSk7Cisg
ICAgbV9zdHJpbmdSZXN1bHQgPSBtYWtlU3RyaW5nKCJkYXRhOiIsIG1fZGF0YVR5cGUuaXNFbXB0
eSgpID8gImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJfcyA6IG1fZGF0YVR5cGUsICI7YmFzZTY0
LCIsIGJhc2U2NEVuY29kZWQobV9yYXdEYXRhLT5kYXRhKCksIG1fYnl0ZXNMb2FkZWQpKTsKIH0K
IAogYm9vbCBGaWxlUmVhZGVyTG9hZGVyOjppc0NvbXBsZXRlZCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcAppbmRleCA2ZDFhOTg5NWI0ODc1ZmQw
MDZmZDUyNjE0NWEwZGRiMjk3OGNhNzdlLi4wOWFlN2Q5NjMyZTEzMmI4Y2M0MzNlZjdkYWYyMDkx
MTNhODcyN2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJk
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5j
cHAKQEAgLTI4NSw3ICsyODUsNyBAQCBCYWNrRm9yd2FyZENhY2hlOjpCYWNrRm9yd2FyZENhY2hl
KCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgUEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNr
KCJjb20uYXBwbGUuV2ViS2l0LnNob3dCYWNrRm9yd2FyZENhY2hlIiwgW10geworICAgICAgICBQ
QUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd0JhY2tGb3J3
YXJkQ2FjaGUiX3MsIFtdIHsKICAgICAgICAgICAgIEJhY2tGb3J3YXJkQ2FjaGU6OnNpbmdsZXRv
bigpLmR1bXAoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJ
bnB1dFR5cGUuY3BwCmluZGV4IDc5NjY1NzA4YzUxNTIxMjA0NTcyNjZkOGE5NWVkNDcxNzA2YzNm
ODYuLjUwODQ1ZGM3NzRjYTI4MDI0NzBmOGU0MDA4NWUzNGU0NTM5MjJkOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIC8vIEZyb20gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdmFsaWQt
ZS1tYWlsLWFkZHJlc3MuCi1zdGF0aWMgY29uc3QgY2hhciBlbWFpbFBhdHRlcm5bXSA9ICJeW2Et
ekEtWjAtOS4hIyQlJicqK1xcLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTkt
XXswLDYxfVthLXpBLVowLTldKT8oPzpcXC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYx
fVthLXpBLVowLTldKT8pKiQiOworc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgZW1haWxQ
YXR0ZXJuID0gIl5bYS16QS1aMC05LiEjJCUmJyorXFwvPT9eX2B7fH1+LV0rQFthLXpBLVowLTld
KD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcLlthLXpBLVowLTldKD86W2Et
ekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJCJfczsKIAogc3RhdGljIGJvb2wgaXNWYWxp
ZEVtYWlsQWRkcmVzcyhjb25zdCBTdHJpbmcmIGFkZHJlc3MpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0VudGVyS2V5SGludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Vu
dGVyS2V5SGludC5jcHAKaW5kZXggZGRiYzQ5MjY0OTYxZjA0YTk2YTE4MDcyODdhOTk5MDk4ZWY4
MjU0Ni4uOTcwMzgxNGM4NGY0NjljZDRmYjEzNjVlMTEzZDY3MzJhMGVlNjk5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbnRlcktleUhpbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRW50ZXJLZXlIaW50LmNwcApAQCAtNTMsMTkgKzUzLDE5IEBAIFN0cmluZyBhdHRy
aWJ1dGVWYWx1ZUZvckVudGVyS2V5SGludChFbnRlcktleUhpbnQgaGludCkKICAgICBjYXNlIEVu
dGVyS2V5SGludDo6VW5zcGVjaWZpZWQ6CiAgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKICAg
ICBjYXNlIEVudGVyS2V5SGludDo6RW50ZXI6Ci0gICAgICAgIHJldHVybiAiZW50ZXIiOworICAg
ICAgICByZXR1cm4gImVudGVyIl9zOwogICAgIGNhc2UgRW50ZXJLZXlIaW50OjpEb25lOgotICAg
ICAgICByZXR1cm4gImRvbmUiOworICAgICAgICByZXR1cm4gImRvbmUiX3M7CiAgICAgY2FzZSBF
bnRlcktleUhpbnQ6OkdvOgotICAgICAgICByZXR1cm4gImdvIjsKKyAgICAgICAgcmV0dXJuICJn
byJfczsKICAgICBjYXNlIEVudGVyS2V5SGludDo6TmV4dDoKLSAgICAgICAgcmV0dXJuICJuZXh0
IjsKKyAgICAgICAgcmV0dXJuICJuZXh0Il9zOwogICAgIGNhc2UgRW50ZXJLZXlIaW50OjpQcmV2
aW91czoKLSAgICAgICAgcmV0dXJuICJwcmV2aW91cyI7CisgICAgICAgIHJldHVybiAicHJldmlv
dXMiX3M7CiAgICAgY2FzZSBFbnRlcktleUhpbnQ6OlNlYXJjaDoKLSAgICAgICAgcmV0dXJuICJz
ZWFyY2giOworICAgICAgICByZXR1cm4gInNlYXJjaCJfczsKICAgICBjYXNlIEVudGVyS2V5SGlu
dDo6U2VuZDoKLSAgICAgICAgcmV0dXJuICJzZW5kIjsKKyAgICAgICAgcmV0dXJuICJzZW5kIl9z
OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbEF0b20o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXgg
ODQ0Y2Y2MDUyMWZiNjQxNTRjNWNmOTVlMGM1NTQ5ODM3YzRmYmUyYS4uN2MyMmRkNTcxZjZiYzMy
YjIzZmJiYjVjYjAxOWZmYjljNzczMWM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBE
aXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIEZUUERpcmVjdG9y
eURvY3VtZW50UGFyc2VyOjpjcmVhdGVCYXNpY0RvY3VtZW50KCkKIAogICAgIGJvZHlFbGVtZW50
LT5hcHBlbmRDaGlsZCgqbV90YWJsZUVsZW1lbnQpOwogCi0gICAgZG9jdW1lbnQucHJvY2Vzc1Zp
ZXdwb3J0KCJ3aWR0aD1kZXZpY2Utd2lkdGgiLCBWaWV3cG9ydEFyZ3VtZW50czo6Vmlld3BvcnRN
ZXRhKTsKKyAgICBkb2N1bWVudC5wcm9jZXNzVmlld3BvcnQoIndpZHRoPWRldmljZS13aWR0aCJf
cywgVmlld3BvcnRBcmd1bWVudHM6OlZpZXdwb3J0TWV0YSk7CiB9CiAKIHZvaWQgRlRQRGlyZWN0
b3J5RG9jdW1lbnRQYXJzZXI6OmFwcGVuZChSZWZQdHI8U3RyaW5nSW1wbD4mJiBpbnB1dFNvdXJj
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggMjJmYzk5
NTlhNzJmMjExMGVmYjFhNTk5NTFjMDhhYWI2NzUxOTViZS4uYzk5ZTk3NjZiNDgyOTlmOTQ1MWY0
MzhiNDUzMGRmZDU1OGE4NTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAKQEAgLTU4Miw3ICs1ODIsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpoYW5k
bGVDbGljayhFdmVudCYgZXZlbnQpCiAgICAgICAgIGlmIChpc1NhbWVPcmlnaW4pCiAgICAgICAg
ICAgICBkb3dubG9hZEF0dHJpYnV0ZSA9IFJlc291cmNlUmVzcG9uc2U6OnNhbml0aXplU3VnZ2Vz
dGVkRmlsZW5hbWUoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkb3dubG9hZEF0dHIp
KTsKICAgICAgICAgZWxzZSBpZiAoaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihk
b3dubG9hZEF0dHIpKQotICAgICAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiVGhlIGRvd25s
b2FkIGF0dHJpYnV0ZSBvbiBhbmNob3Igd2FzIGlnbm9yZWQgYmVjYXVzZSBpdHMgaHJlZiBVUkwg
aGFzIGEgZGlmZmVyZW50IHNlY3VyaXR5IG9yaWdpbi4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50
KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZl
bDo6V2FybmluZywgIlRoZSBkb3dubG9hZCBhdHRyaWJ1dGUgb24gYW5jaG9yIHdhcyBpZ25vcmVk
IGJlY2F1c2UgaXRzIGhyZWYgVVJMIGhhcyBhIGRpZmZlcmVudCBzZWN1cml0eSBvcmlnaW4uIl9z
KTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVFbGVtZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnRCYXNlLmNwcAppbmRleCA3YzU3NDE1N2ExODU1ZDk5NTY2MGNiYWE0Yjg2ZDVhY2Y4YTIzYjBh
Li4zNDYyNmIwMmFjNTM0MmQ4ZjFjZTg1ZmVmMDI1YjdiNjg3Y2JmYTcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApAQCAtMTE0LDcgKzExNCw3IEBA
IHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TCiAgICAgICAgICAgICBpZiAoIXNyY1ZhbHVlLmlzTnVs
bCgpKQogICAgICAgICAgICAgICAgIHNldExvY2F0aW9uKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyhzcmNWYWx1ZSkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNldExv
Y2F0aW9uKCJhYm91dDpzcmNkb2MiKTsKKyAgICAgICAgICAgIHNldExvY2F0aW9uKCJhYm91dDpz
cmNkb2MiX3MpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBzcmNBdHRyICYmICFoYXNBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY2RvY0F0dHIpKQogICAgICAgICBzZXRMb2NhdGlv
bihzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModmFsdWUpKTsKICAgICBlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCA3OThmZTg2YmM0ZjMy
MDI2NzFjZDJkNzE0NjYwMDBiNmViYWJiNmJmLi5kZmY0NmEzZjEyNjAxNzVjOGQzYWY0NTk4ODg2
NWEwMWRjZTM0NGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
QEAgLTIxMiw3ICsyMTIsNyBAQCBJbWFnZUNhbmRpZGF0ZSBIVE1MSW1hZ2VFbGVtZW50OjpiZXN0
Rml0U291cmNlRnJvbVBpY3R1cmVFbGVtZW50KCkKICAgICAgICAgfQogCiAgICAgICAgIFJlZlB0
ciBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpOwotICAgICAg
ICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIGV2YWx1YXRvciB7IGRvY3VtZW50KCkucHJpbnRpbmcoKSA/
ICJwcmludCIgOiAic2NyZWVuIiwgZG9jdW1lbnQoKSwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1l
bnRFbGVtZW50LT5jb21wdXRlZFN0eWxlKCkgOiBudWxscHRyIH07CisgICAgICAgIE1lZGlhUXVl
cnlFdmFsdWF0b3IgZXZhbHVhdG9yIHsgZG9jdW1lbnQoKS5wcmludGluZygpID8gInByaW50Il9z
IDogInNjcmVlbiJfcywgZG9jdW1lbnQoKSwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVt
ZW50LT5jb21wdXRlZFN0eWxlKCkgOiBudWxscHRyIH07CiAgICAgICAgIGF1dG8qIHF1ZXJpZXMg
PSBzb3VyY2UucGFyc2VkTWVkaWFBdHRyaWJ1dGUoZG9jdW1lbnQoKSk7CiAgICAgICAgIExPRyhN
ZWRpYVF1ZXJpZXMsICJIVE1MSW1hZ2VFbGVtZW50ICVwIGJlc3RGaXRTb3VyY2VGcm9tUGljdHVy
ZUVsZW1lbnQgZXZhbHVhdGluZyBtZWRpYSBxdWVyaWVzIiwgdGhpcyk7CiAKQEAgLTIzNiw3ICsy
MzYsNyBAQCBJbWFnZUNhbmRpZGF0ZSBIVE1MSW1hZ2VFbGVtZW50OjpiZXN0Rml0U291cmNlRnJv
bVBpY3R1cmVFbGVtZW50KCkKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6ZXZhbHVhdGVEeW5hbWlj
TWVkaWFRdWVyeURlcGVuZGVuY2llcygpCiB7CiAgICAgUmVmUHRyIGRvY3VtZW50RWxlbWVudCA9
IGRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgTWVkaWFRdWVyeUV2YWx1YXRvciBl
dmFsdWF0b3IgeyBkb2N1bWVudCgpLnByaW50aW5nKCkgPyAicHJpbnQiIDogInNjcmVlbiIsIGRv
Y3VtZW50KCksIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC0+Y29tcHV0ZWRTdHls
ZSgpIDogbnVsbHB0ciB9OworICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgZXZhbHVhdG9yIHsgZG9j
dW1lbnQoKS5wcmludGluZygpID8gInByaW50Il9zIDogInNjcmVlbiJfcywgZG9jdW1lbnQoKSwg
ZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0eWxlKCkgOiBudWxs
cHRyIH07CiAKICAgICBpZiAoIWV2YWx1YXRvci5ldmFsdWF0ZUZvckNoYW5nZXMobV9tZWRpYVF1
ZXJ5RHluYW1pY1Jlc3VsdHMpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA5YTA4NzQxYjFjNDBkYTY5OGZhNjhjOGE3MzA4Mzg2
ZDg1NWQyODRkLi45ZmVmYmFiZDYxYTM2Mzk3YjVmN2I1Y2VmZDcyMjEzMGZiNTk5MTkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTEyOTQsMTIgKzEyOTQs
MTIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTElucHV0RWxlbWVudDo6c2hvd1BpY2tlcigpCiAg
ICAgaWYgKCFtX2lucHV0VHlwZS0+YWxsb3dzU2hvd1BpY2tlckFjcm9zc0ZyYW1lcygpKSB7CiAg
ICAgICAgIEZyYW1lJiB0b3BGcmFtZSA9IGZyYW1lLT50cmVlKCkudG9wKCk7CiAgICAgICAgIGlm
ICghZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuaXNTYW1lT3JpZ2luQXModG9w
RnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCi0gICAgICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIklucHV0IHNob3dQaWNrZXIoKSBjYWxsZWQgZnJv
bSBjcm9zcy1vcmlnaW4gaWZyYW1lLiIgfTsKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBTZWN1cml0eUVycm9yLCAiSW5wdXQgc2hvd1BpY2tlcigpIGNhbGxlZCBmcm9tIGNyb3NzLW9y
aWdpbiBpZnJhbWUuIl9zIH07CiAgICAgfQogCiAgICAgYXV0byogd2luZG93ID0gZnJhbWUtPndp
bmRvdygpOwogICAgIGlmICghd2luZG93IHx8ICF3aW5kb3ctPmhhc1RyYW5zaWVudEFjdGl2YXRp
b24oKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIklucHV0
IHNob3dQaWNrZXIoKSByZXF1aXJlcyBhIHVzZXIgZ2VzdHVyZS4iIH07CisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOb3RBbGxvd2VkRXJyb3IsICJJbnB1dCBzaG93UGlja2VyKCkgcmVxdWly
ZXMgYSB1c2VyIGdlc3R1cmUuIl9zIH07CiAKICAgICBtX2lucHV0VHlwZS0+c2hvd1BpY2tlcigp
OwogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAppbmRleCBkMzczMmI4MThjYjI2MWUyNWRjYTMyN2MzMDk5MGI2ZTQ3ODdkZDU2Li4yZjJlNDA0
NTM0NTIxNzJhMTIxNmQwMDBjMmJiNmFjY2UzYzBmNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM2ODIsNyArMzY4Miw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cGxheShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogCiAgICAg
aWYgKG1fZXJyb3IgJiYgbV9lcnJvci0+Y29kZSgpID09IE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9T
UkNfTk9UX1NVUFBPUlRFRCkgewogICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInJl
amVjdGluZyBwcm9taXNlIGJlY2F1c2Ugb2YgZXJyb3IiKTsKLSAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoTm90U3VwcG9ydGVkRXJyb3IsICJUaGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuIik7
CisgICAgICAgIHByb21pc2UucmVqZWN0KE5vdFN1cHBvcnRlZEVycm9yLCAiVGhlIG9wZXJhdGlv
biBpcyBub3Qgc3VwcG9ydGVkLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ4
OTQsNyArNDg5NCw3IEBAIFVSTCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hp
bGQoQ29udGVudFR5cGUqIGNvbnRlbnRUeXBlLCBTdHJpbmcqIGtlCiAgICAgICAgICAgICAgICAg
SU5GT19MT0coTE9HSURFTlRJRklFUiwgIidtZWRpYScgaXMgIiwgc291cmNlLT5hdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKG1lZGlhQXR0cikpOwogICAgICAgICAgICAgYXV0byogcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgICAgICAgICAgTE9HKE1lZGlhUXVlcmllcywg
IkhUTUxNZWRpYUVsZW1lbnQgJXAgc2VsZWN0TmV4dFNvdXJjZUNoaWxkIGV2YWx1YXRpbmcgbWVk
aWEgcXVlcmllcyIsIHRoaXMpOwotICAgICAgICAgICAgaWYgKCFNZWRpYVF1ZXJ5RXZhbHVhdG9y
IHsgInNjcmVlbiIsIGRvY3VtZW50KCksIHJlbmRlcmVyID8gJnJlbmRlcmVyLT5zdHlsZSgpIDog
bnVsbHB0ciB9LmV2YWx1YXRlKCptZWRpYSkpCisgICAgICAgICAgICBpZiAoIU1lZGlhUXVlcnlF
dmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCgpLCByZW5kZXJlciA/ICZyZW5kZXJlci0+
c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZSgqbWVkaWEpKQogICAgICAgICAgICAgICAgIGdv
dG8gQ2hlY2tBZ2FpbjsKICAgICAgICAgfQogCkBAIC03MTU4LDcgKzcxNTgsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNsZWVwRGlzYWJsaW5nKCkKICAgICBlbHNlIGlmIChzaG91
bGREaXNhYmxlU2xlZXAgIT0gU2xlZXBUeXBlOjpOb25lKSB7CiAgICAgICAgIGF1dG8gdHlwZSA9
IHNob3VsZERpc2FibGVTbGVlcCA9PSBTbGVlcFR5cGU6OkRpc3BsYXkgPyBQQUw6OlNsZWVwRGlz
YWJsZXI6OlR5cGU6OkRpc3BsYXkgOiBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5cGU6OlN5c3RlbTsK
ICAgICAgICAgaWYgKCFtX3NsZWVwRGlzYWJsZXIgfHwgbV9zbGVlcERpc2FibGVyLT50eXBlKCkg
IT0gdHlwZSkKLSAgICAgICAgICAgIG1fc2xlZXBEaXNhYmxlciA9IG1ha2VVbmlxdWU8U2xlZXBE
aXNhYmxlcj4oImNvbS5hcHBsZS5XZWJDb3JlOiBIVE1MTWVkaWFFbGVtZW50IHBsYXliYWNrIiwg
dHlwZSk7CisgICAgICAgICAgICBtX3NsZWVwRGlzYWJsZXIgPSBtYWtlVW5pcXVlPFNsZWVwRGlz
YWJsZXI+KCJjb20uYXBwbGUuV2ViQ29yZTogSFRNTE1lZGlhRWxlbWVudCBwbGF5YmFjayJfcywg
dHlwZSk7CiAgICAgfQogCiAgICAgaWYgKG1fcGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBkYzFiODczZTk3Mjg4NzMzYThmNjU1ZDdiNWMxMmQ4
OWQ2OWNkZTIyLi4zNzNkNDM1NWI2MjRmZTc4ZmEzMTU5MzkzNzBmZTliM2Q3ODhhMzA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMTgyLDcgKzE4Miw3
IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxTCiAgICAgLy8gZWxzZSBvdXIgSmF2YSBwbHVnaW4g
d2lsbCBtaXNpbnRlcnByZXQgaXQuIFs0MDA0NTMxXQogICAgIFN0cmluZyBjb2RlYmFzZTsKICAg
ICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUoc2VydmljZVR5cGUp
KSB7Ci0gICAgICAgIGNvZGViYXNlID0gImNvZGViYXNlIjsKKyAgICAgICAgY29kZWJhc2UgPSAi
Y29kZWJhc2UiX3M7CiAgICAgICAgIHVuaXF1ZVBhcmFtTmFtZXMuYWRkKGNvZGViYXNlLmltcGwo
KSk7IC8vIHByZXRlbmQgd2UgZm91bmQgaXQgaW4gYSBQQVJBTSBhbHJlYWR5CiAgICAgfQogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAppbmRleCA1OWJmYzZlMGYxZTU5MDQzZGNj
NWJiZGEyZDIyYWFlMzY1YTYxMzE0Li5hY2NlYWE1M2JjYmNmMzgzN2JkNGI5OTJkNmUyYWE1NDc5
NDI5MDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcApAQCAtMTIyLDcgKzEyMiw3
IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICAvLyAxLiBJZiBlaXRoZXIgdGhlIHN3IG9y
IHNoIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkIGJ1dCB6ZXJvLCByZXR1cm4gYSBwcm9taXNlCiAg
ICAgLy8gICAgcmVqZWN0ZWQgd2l0aCBhbiAiUmFuZ2VFcnJvciIgRE9NRXhjZXB0aW9uIGFuZCBh
Ym9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAoIXN3IHx8ICFzaCkgewotICAgICAgICBwcm9taXNl
LnJlamVjdChSYW5nZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCB3aXRoIGEgd2lk
dGggb3IgaGVpZ2h0IG9mIDAiKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoUmFuZ2VFcnJvciwg
IkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgd2l0aCBhIHdpZHRoIG9yIGhlaWdodCBvZiAwIl9z
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyBF
eGNlcHRpb25PcjxJbnRSZWN0PiBjcm9wcGVkU291cmNlUmVjdGFuZ2xlV2l0aEZvcm1hdHRpbmco
SW50U2l6ZSBpbnB1dFNpCiAgICAgLy8gICAgdGhhbiBvciBlcXVhbCB0byAwLCB0aGVuIHJldHVy
biBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCAiSW52YWxpZFN0YXRlRXJyb3IiCiAgICAgLy8gICAg
RE9NRXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAoKG9wdGlvbnMucmVz
aXplV2lkdGggJiYgb3B0aW9ucy5yZXNpemVXaWR0aC52YWx1ZSgpIDw9IDApIHx8IChvcHRpb25z
LnJlc2l6ZUhlaWdodCAmJiBvcHRpb25zLnJlc2l6ZUhlaWdodC52YWx1ZSgpIDw9IDApKQotICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJJbnZhbGlkIHJlc2l6
ZSBkaW1lbnNpb25zIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJJbnZhbGlkIHJlc2l6ZSBkaW1lbnNpb25zIl9zIH07CiAKICAgICAvLyAzLiBJZiBz
eCwgc3ksIHN3IGFuZCBzaCBhcmUgc3BlY2lmaWVkLCBsZXQgc291cmNlUmVjdGFuZ2xlIGJlIGEg
cmVjdGFuZ2xlIHdob3NlCiAgICAgLy8gICAgY29ybmVycyBhcmUgdGhlIGZvdXIgcG9pbnRzIChz
eCwgc3kpLCAoc3grc3csIHN5KSwoc3grc3csIHN5K3NoKSwgKHN4LHN5K3NoKS4KQEAgLTMxNCw3
ICszMTQsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAKICAgICBhdXRvKiBjYWNoZWRJbWFn
ZSA9IGltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8
ICFpbWFnZUVsZW1lbnQtPmNvbXBsZXRlKCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52
YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIHRoYXQgaXMgbm90IGNv
bXBsZXRlbHkgYXZhaWxhYmxlIik7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0
ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCB0aGF0IGlzIG5vdCBjb21wbGV0ZWx5
IGF2YWlsYWJsZSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMyNSw3ICszMjUs
NyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IGNhY2hl
ZEltYWdlLT5pbWFnZVNpemVGb3JSZW5kZXJlcihpbWFnZUVsZW1lbnQtPnJlbmRlcmVyKCksIDEu
MGYpOwogICAgIGlmICgoIWltYWdlU2l6ZS53aWR0aCgpIHx8ICFpbWFnZVNpemUuaGVpZ2h0KCkp
ICYmICghb3B0aW9ucy5yZXNpemVXaWR0aCB8fCAhb3B0aW9ucy5yZXNpemVIZWlnaHQpKSB7Ci0g
ICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJ
bWFnZUJpdG1hcCBmcm9tIGEgc291cmNlIHdpdGggbm8gaW50cmluc2ljIHNpemUgd2l0aG91dCBw
cm92aWRpbmcgcmVzaXplIGRpbWVuc2lvbnMiKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52
YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gYSBzb3VyY2Ug
d2l0aCBubyBpbnRyaW5zaWMgc2l6ZSB3aXRob3V0IHByb3ZpZGluZyByZXNpemUgZGltZW5zaW9u
cyJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lk
IEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgLy8gd2lkdGggYW5kIGhlaWdodCBmb3IgdGhlIGltYWdl
LgogCiAgICAgaWYgKCFyZWN0ICYmICghaW1hZ2VTaXplLndpZHRoKCkgfHwgIWltYWdlU2l6ZS5o
ZWlnaHQoKSkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJD
YW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gYSBzb3VyY2Ugd2l0aCBubyBpbnRyaW5zaWMg
c2l6ZSB3aXRob3V0IHByb3ZpZGluZyBkaW1lbnNpb25zIik7CisgICAgICAgIHByb21pc2UucmVq
ZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGEg
c291cmNlIHdpdGggbm8gaW50cmluc2ljIHNpemUgd2l0aG91dCBwcm92aWRpbmcgZGltZW5zaW9u
cyJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lk
IEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsCiAKICAgICBhdXRvIGltYWdlRm9yUmVuZGVyZXIgPSBjYWNoZWRJ
bWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZUVsZW1lbnQtPnJlbmRlcmVyKCkpOwogICAgIGlm
ICghaW1hZ2VGb3JSZW5kZXJlcikgewotICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3Rh
dGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBpbWFnZSB0aGF0IGNhbid0
IGJlIHJlbmRlcmVkIik7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9y
LCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGltYWdlIHRoYXQgY2FuJ3QgYmUgcmVu
ZGVyZWQiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MjMsNyArNDIzLDcgQEAg
dm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIC8vICAgIERPTUV4Y2VwdGlvbiBhbmQgYWJvcnQg
dGhlc2Ugc3RlcHMuCiAgICAgYXV0byBzaXplID0gY2FudmFzLnNpemUoKTsKICAgICBpZiAoIXNp
emUud2lkdGgoKSB8fCAhc2l6ZS5oZWlnaHQoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdChJ
bnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBhIGNhbnZh
cyB0aGF0IGhhcyB6ZXJvIHdpZHRoIG9yIGhlaWdodCIpOworICAgICAgICBwcm9taXNlLnJlamVj
dChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBhIGNh
bnZhcyB0aGF0IGhhcyB6ZXJvIHdpZHRoIG9yIGhlaWdodCJfcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9t
aXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAKICAg
ICBhdXRvIGltYWdlRm9yUmVuZGVyID0gY2FudmFzLmNvcGllZEltYWdlKCk7CiAgICAgaWYgKCFp
bWFnZUZvclJlbmRlcikgewotICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJv
ciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBjYW52YXMgdGhhdCBjYW4ndCBiZSBy
ZW5kZXJlZCIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNh
bm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBjYW52YXMgdGhhdCBjYW4ndCBiZSByZW5kZXJl
ZCJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ4MywxNCArNDgzLDE0IEBAIHZv
aWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICAvLyAgICBvciByZXR1cm5zIGJhZCwgdGhlbiByZXR1
cm4gcCByZWplY3RlZCB3aXRoIGFuICJJbnZhbGlkU3RhdGVFcnJvciIKICAgICAvLyAgICBET01F
eGNlcHRpb24uCiAgICAgaWYgKHZpZGVvLT5yZWFkeVN0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVu
dDo6SEFWRV9OT1RISU5HIHx8IHZpZGVvLT5yZWFkeVN0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVu
dDo6SEFWRV9NRVRBREFUQSkgewotICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVF
cnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgYmVmb3JlIHRoZSBIVE1MVmlkZW9FbGVt
ZW50IGhhcyBkYXRhIik7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9y
LCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBiZWZvcmUgdGhlIEhUTUxWaWRlb0VsZW1lbnQg
aGFzIGRhdGEiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gNi4xLiBJZiBp
bWFnZSdzIG5ldHdvcmtTdGF0ZSBhdHRyaWJ1dGUgaXMgTkVUV09SS19FTVBUWSwgdGhlbiByZXR1
cm4gcAogICAgIC8vICAgICAgcmVqZWN0ZWQgd2l0aCBhbiAiSW52YWxpZFN0YXRlRXJyb3IiIERP
TUV4Y2VwdGlvbi4KICAgICBpZiAodmlkZW8tPm5ldHdvcmtTdGF0ZSgpID09IEhUTUxNZWRpYUVs
ZW1lbnQ6Ok5FVFdPUktfRU1QVFkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0
YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGJlZm9yZSB0aGUgSFRNTFZpZGVv
RWxlbWVudCBoYXMgZGF0YSIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVF
cnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgYmVmb3JlIHRoZSBIVE1MVmlkZW9FbGVt
ZW50IGhhcyBkYXRhIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTU2LDcgKzU1
Niw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICNpZiBFTkFCTEUoQ1NTX1RZUEVEX09NKQog
dm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
UmVmUHRyPENTU1N0eWxlSW1hZ2VWYWx1ZT4mLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgc3RkOjpv
cHRpb25hbDxJbnRSZWN0PiwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewotICAg
IHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiTm90IGltcGxlbWVudGVkIik7Cisg
ICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3Mp
OwogfQogI2VuZGlmCiAKQEAgLTU2NSw3ICs1NjUsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVh
dGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
CiAgICAgLy8gMi4gSWYgaW1hZ2UncyBbW0RldGFjaGVkXV0gaW50ZXJuYWwgc2xvdCB2YWx1ZSBp
cyB0cnVlLCByZXR1cm4gYSBwcm9taXNlCiAgICAgLy8gICAgcmVqZWN0ZWQgd2l0aCBhbiAiSW52
YWxpZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAg
aWYgKGV4aXN0aW5nSW1hZ2VCaXRtYXAtPmlzRGV0YWNoZWQoKSB8fCAhZXhpc3RpbmdJbWFnZUJp
dG1hcC0+YnVmZmVyKCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJy
b3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gYSBkZXRhY2hlZCBJbWFnZUJpdG1h
cCIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBj
cmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBhIGRldGFjaGVkIEltYWdlQml0bWFwIl9zKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzIyLDcgKzcyMiw3IEBAIHByaXZhdGU6CiAgICAgICAg
IH0pOwogCiAgICAgICAgIGlmICghbV9hcnJheUJ1ZmZlclRvUHJvY2VzcykgewotICAgICAgICAg
ICAgbV9wcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkFuIGVycm9yIG9jY3VyZWQg
cmVhZGluZyB0aGUgQmxvYiBhcmd1bWVudCB0byBjcmVhdGVJbWFnZUJpdG1hcCIpOworICAgICAg
ICAgICAgbV9wcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkFuIGVycm9yIG9jY3Vy
ZWQgcmVhZGluZyB0aGUgQmxvYiBhcmd1bWVudCB0byBjcmVhdGVJbWFnZUJpdG1hcCJfcyk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNzQxLDcgKzc0MSw3IEBAIHByaXZh
dGU6CiB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1
ZmZlciwgU3RyaW5nIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBj
b25zdCBVUkwmIHNvdXJjZVVSTCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgc3RkOjpv
cHRpb25hbDxJbnRSZWN0PiByZWN0LCBQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBpZiAoIWFy
cmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxp
ZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIGFuIEltYWdlQml0bWFwIGZyb20gYW4gZW1wdHkg
YnVmZmVyIik7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fu
bm90IGNyZWF0ZSBhbiBJbWFnZUJpdG1hcCBmcm9tIGFuIGVtcHR5IGJ1ZmZlciJfcyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc1MCw3ICs3NTAsNyBAQCB2b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleAogICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKG9ic2VydmVyLnB0
cigpKTsKICAgICBhdXRvIHJlc3VsdCA9IGltYWdlLT5zZXREYXRhKHNoYXJlZEJ1ZmZlci5jb3B5
UmVmKCksIHRydWUpOwogICAgIGlmIChyZXN1bHQgIT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBs
ZXRlIHx8IGltYWdlLT5pc051bGwoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlk
U3RhdGVFcnJvciwgIkNhbm5vdCBkZWNvZGUgdGhlIGRhdGEgaW4gdGhlIGFyZ3VtZW50IHRvIGNy
ZWF0ZUltYWdlQml0bWFwIik7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVy
cm9yLCAiQ2Fubm90IGRlY29kZSB0aGUgZGF0YSBpbiB0aGUgYXJndW1lbnQgdG8gY3JlYXRlSW1h
Z2VCaXRtYXAiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03NjMsNyArNzYzLDcg
QEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRT
aXplRm9yU291cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZS5yZXR1cm5WYWx1ZSgpLCBvcHRp
b25zKTsKICAgICBhdXRvIGJpdG1hcERhdGEgPSBjcmVhdGVJbWFnZUJ1ZmZlcihzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlLCBpbWFnZS0+Y29s
b3JTcGFjZSgpKTsKICAgICBpZiAoIWJpdG1hcERhdGEpIHsKLSAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBmcm9t
IHRoZSBhcmd1bWVudCB0byBjcmVhdGVJbWFnZUJpdG1hcCIpOworICAgICAgICBwcm9taXNlLnJl
amVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGZy
b20gdGhlIGFyZ3VtZW50IHRvIGNyZWF0ZUltYWdlQml0bWFwIl9zKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNzkyLDcgKzc5Miw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVBy
b21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAg
ICAvLyA2LjIuIElmIElzRGV0YWNoZWRCdWZmZXIoYnVmZmVyKSBpcyB0cnVlLCB0aGVuIHJldHVy
biBwIHJlamVjdGVkIHdpdGggYW4KICAgICAvLyAgICAgICJJbnZhbGlkU3RhdGVFcnJvciIgRE9N
RXhjZXB0aW9uLgogICAgIGlmIChpbWFnZURhdGEtPmRhdGEoKS5pc0RldGFjaGVkKCkpIHsKLSAg
ICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJJbWFnZURhdGEncyB2aWV3
ZWQgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIik7CisgICAgICAgIHByb21pc2UucmVqZWN0KElu
dmFsaWRTdGF0ZUVycm9yLCAiSW1hZ2VEYXRhJ3Mgdmlld2VkIGJ1ZmZlciBoYXMgYmVlbiBkZXRh
Y2hlZCJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwCmluZGV4IDRkMTBmYjA1NzcyNDYyODU3Njg4NTAzZDY2NDc2OTdmMGNiMDRi
YTEuLjIwNmM2NmI3YmExOTdiYjYzMjM0NDk1MTk2MTJjNmQ2OTk2M2QyMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSW1hZ2VE
b2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIGF1dG8gYm9keSA9IEhUTUxC
b2R5RWxlbWVudDo6Y3JlYXRlKCp0aGlzKTsKICAgICBib2R5LT5zZXRBdHRyaWJ1dGUoc3R5bGVB
dHRyLCAibWFyZ2luOiAwcHgiKTsKICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1F
VHlwZShkb2N1bWVudCgpLmxvYWRlcigpLT5yZXNwb25zZU1JTUVUeXBlKCkpKQotICAgICAgICBi
b2R5LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAi
d2hpdGUiKTsKKyAgICAgICAgYm9keS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvciwgIndoaXRlIl9zKTsKICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hp
bGQoYm9keSk7CiAgICAgCiAgICAgYXV0byBpbWFnZUVsZW1lbnQgPSBJbWFnZURvY3VtZW50RWxl
bWVudDo6Y3JlYXRlKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFGcmFnbWVudFVSSVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21l
bnRVUklQYXJzZXIuY3BwCmluZGV4IDY0NGVmN2I3NTI2NzZiNTkzZWM5Nzc4Nzg4MWVmYjRmYzcx
MDEzYjkuLjA2NWE3MGRlMmRhMzdjZjczZTYwNTNmOTcyNWYzODI4YjgwMjEwMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcApAQCAtMTM0LDEx
ICsxMzQsMTEgQEAgdm9pZCBNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpwYXJzZUZyYWdtZW50cygp
CiAgICAgICAgIC8vICAgICBuYW1lIG9yIHZhbHVlIGFyZSBub3QgdmFsaWQgVVRGLTggc3RyaW5n
cywgdGhlbiByZW1vdmUgdGhlIG5hbWUtdmFsdWUgcGFpciBmcm9tIHRoZSBsaXN0LgogICAgICAg
ICBib29sIHZhbGlkVVRGOCA9IGZhbHNlOwogICAgICAgICBpZiAoIW5hbWUuaXNFbXB0eSgpICYm
ICF2YWx1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG5hbWUgPSBuYW1lLnV0ZjgoU3RyaWN0
Q29udmVyc2lvbikuZGF0YSgpOworICAgICAgICAgICAgbmFtZSA9IFN0cmluZyB7IG5hbWUudXRm
OChTdHJpY3RDb252ZXJzaW9uKS5kYXRhKCkgfTsKICAgICAgICAgICAgIHZhbGlkVVRGOCA9ICFu
YW1lLmlzRW1wdHkoKTsKIAogICAgICAgICAgICAgaWYgKHZhbGlkVVRGOCkgewotICAgICAgICAg
ICAgICAgIHZhbHVlID0gdmFsdWUudXRmOChTdHJpY3RDb252ZXJzaW9uKS5kYXRhKCk7CisgICAg
ICAgICAgICAgICAgdmFsdWUgPSBTdHJpbmcgeyB2YWx1ZS51dGY4KFN0cmljdENvbnZlcnNpb24p
LmRhdGEoKSB9OwogICAgICAgICAgICAgICAgIHZhbGlkVVRGOCA9ICF2YWx1ZS5pc0VtcHR5KCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUERGRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5jcHAK
aW5kZXggNTk2YTY1MTgzZjFmZjc3NzU4NmE2YTY2N2MzNTRlZjRlN2I0YjhlMC4uNGUxOTQ2MTZl
Y2UyNTNjOTQxMjRjZmJlNzI0NThhYmJiZDg1M2IwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9QREZEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1
bWVudC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFBERkRvY3VtZW50OjpzZW5kUERGQXJy
YXlCdWZmZXIoKQogCiAgICAgYXV0byogZnJhbWUgPSBtX2lmcmFtZS0+Y29udGVudEZyYW1lKCk7
CiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzY2NjggLSBVc2UgcG9zdE1lc3NhZ2UKLSAgICBhdXRvIG9wZW5GdW5jdGlvbiA9IGZyYW1lLT5z
Y3JpcHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oIlBERkpTQ29udGVudFNjcmlw
dC5vcGVuIikuZ2V0T2JqZWN0KCk7CisgICAgYXV0byBvcGVuRnVuY3Rpb24gPSBmcmFtZS0+c2Ny
aXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKCJQREZKU0NvbnRlbnRTY3JpcHQu
b3BlbiJfcykuZ2V0T2JqZWN0KCk7CiAKICAgICBhdXRvIGdsb2JhbE9iamVjdCA9IHRoaXMtPmds
b2JhbE9iamVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCmlu
ZGV4IDg3NTM3ZTJiYjkzZTRiNjk5OTc3MDBhZmZjMTg3ZjZjZjViYmVhYjUuLjRlNjhlZDUxM2Nh
MzgxN2E3MTA2Nzc3NjI3MzdiYWIzZDYwNTc1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAg
QU5HTEVJbnN0YW5jZWRBcnJheXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewog
I2lmIFVTRShBTkdMRSkKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2lu
c3RhbmNlZF9hcnJheXMiX3MpOwogI2VuZGlmCiB9CiAKQEAgLTUyLDcgKzUyLDcgQEAgV2ViR0xF
eHRlbnNpb246OkV4dGVuc2lvbk5hbWUgQU5HTEVJbnN0YW5jZWRBcnJheXM6OmdldE5hbWUoKSBj
b25zdAogYm9vbCBBTkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4
dEdMJiBjb250ZXh0KQogewogI2lmIFVTRShBTkdMRSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShXUEUpCi0gICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xF
X2luc3RhbmNlZF9hcnJheXMiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyJfcyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3BwCmluZGV4IDQ2Yzk2
MGYxOTE2NGE3NWY2ODdjYTkyNmQ0ZjVmNjExODMwMjVhYmIuLjM0YWIxMGY3ZTRhY2IxYWU1Mzhk
NjA3N2YyNDU5ZGNlMWE5MWU5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3BwCkBAIC0zNyw3ICszNyw3IEBA
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKTsK
IEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNv
bnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNp
b25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIik7CisgICAgY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4
dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKTsKIAogICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCk7
CiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDZkMGE4
NzI4NWE4MDYxYzUwZTY2OTE2ZDUyMTQ0YmVjNWY0NDZlYmUuLjI0MjI4ZDNiZTYwNzVlN2RmNTgx
MDg5YjEyZjMxMDI5ZjExMDBjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yMzksMTAgKzIzOSwxMCBAQCB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMo
KQogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9u
cygpCiB7CiAgICAgLy8gRklYTUU6IHRoZXNlIGFyZSBpbiB0aGUgV2ViR0wgMi4wIGNvcmUgQVBJ
IGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4KLSAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOwotICAgIG1fY29udGV4dC0+ZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOwotICAgIG1fY29udGV4
dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpOwot
ICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgi
KTsKKyAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19zdGFuZGFy
ZF9kZXJpdmF0aXZlcyJfcyk7CisgICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9FWFRfZHJhd19idWZmZXJzIl9zKTsKKyAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOworICAgIG1fY29udGV4dC0+
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiX3MpOwogfQogCiBib29s
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlQnVmZmVyVGFyZ2V0KGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcAppbmRleCBiYzNl
YmUyZDVlNzUzYjE4OWNhNTcyYTU0YTkxZDYyZjkxOWRhMmE4Li4xN2E3YjI0ZGZmMTA2NmMzOTYx
Yzk5ZjgzYjg0MTEyNWViMmRmM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApAQCAtMzgsNyArMzgsNyBA
QCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyk7
CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihj
b250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCgiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FNRF9jb21w
cmVzc2VkX0FUQ190ZXh0dXJlIl9zKTsKIAogICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfQVRDX1JHQl9BTUQpOwogICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNP
TVBSRVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQSEFfQU1EKTsKQEAgLTU0LDcgKzU0LDcgQEAg
V2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6
Z2V0TmFtZSgpIGNvbnN0CiAKIGJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9y
dGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LnN1
cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZSIpOworICAgIHJl
dHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4
dHVyZSJfcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHAKaW5k
ZXggOTE1ZGIyYWUzZTQzZmRiNzk2ZjA2NTEwZDQzNzA3OTY2YjlmMzQ5YS4uMTU2NWMxMTI3YjVi
MzA5MjIxYjA0NDU3Y2IwYmVkZDdkOTc5MGYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRl
bnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiKTsKKyAg
ICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0FOR0xFX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiX3MpOwogCiAgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SMTFfRUFD
KTsKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDKTsKQEAgLTYxLDcgKzYxLDcgQEAgV2ViR0xF
eHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6Z2V0TmFt
ZSgpIGNvbnN0CiAKIGJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKEdy
YXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRz
RXh0ZW5zaW9uKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CisgICAgcmV0dXJu
IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2NvbXByZXNzZWRfdGV4dHVyZV9l
dGMiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHAKaW5k
ZXggYWQxYmYyZmM5ODI0OGJmMTc3MGEzYjYxOTBiMTcwOTJmNjA4MDliNy4uOGUxZjVlYmQ2N2Q5
YTgxYzY4YWU0ZGZlOTczNWU5ZjI2ODNlMDk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcApAQCAtMzgs
NyArMzgsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzEpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OldlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMxKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJH
TEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1
cmUiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIl9zKTsKIAogICAgIGNv
bnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkVUQzFf
UkdCOF9PRVMpOwogfQpAQCAtNTIsNyArNTIsNyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9u
TmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJvb2wg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYg
Y29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VT
X2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiX3MpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcAppbmRleCA1YTg0
OTllOWU0Y2ZjYjkxODlhY2Y0ZjhiZjc3MGM4ZTk1NGI0NGU3Li40N2E0YjRlZWRjNzdhMjJiZWI3
ZjI5NzcxNzhiNTY0MjBlYmRmMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQ
VlJUQyk7CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xF
eHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIik7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVk
KCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyJfcyk7CiAKICAgICBjb250ZXh0LmFk
ZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JH
Ql9QVlJUQ180QlBQVjFfSU1HKTsKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HKTsK
QEAgLTU2LDcgKzU2LDcgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDOjpnZXROYW1lKCkgY29uc3QKIAogYm9vbCBXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsK
LSAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX3RleHR1cmVfY29t
cHJlc3Npb25fcHZydGMiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigi
R0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKaW5kZXggZmE3MDgxMWU3NTM3MGU3MjhkZTQ3Y2Ri
MTBhOTE4NmEzYTUwMjA5Yy4uMmY5OGJiMjFmMjU0NGIzN2VjMTk5NDhjNWRlM2E2ZjRiMjk3OGY0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmNwcApAQCAtNDAsOSArNDAsOSBAQCBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKICAgICBhdXRvKiBnY2ds
ID0gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpOwotICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKTsKLSAgICBnY2dsLT5l
bnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMi
KTsKLSAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV90ZXh0dXJlX2Nv
bXByZXNzaW9uX2R4dDUiKTsKKyAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIl9zKTsKKyAgICBnY2dsLT5lbnN1cmVFeHRlbnNp
b25FbmFibGVkKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiX3MpOworICAgIGdj
Z2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25f
ZHh0NSJfcyk7CiAKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBo
aWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUKTsKICAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQxX0VYVCk7CkBAIC02MCwxMiArNjAsMTIgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OmdldE5hbWUoKSBjb25z
dAogYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMJiBjb250ZXh0KQogewogI2lmIFVTRShBTkdMRSkKLSAgICByZXR1cm4gY29udGV4dC5z
dXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpCi0gICAg
ICAgICYmIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0MyIpCi0gICAgICAgICYmIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FO
R0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIl9zKQorICAgICAg
ICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNz
aW9uX2R4dDMiX3MpCisgICAgICAgICYmIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FO
R0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSJfcyk7CiAjZWxzZQotICAgIHJldHVybiBjb250
ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIikK
LSAgICAgICAgfHwgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fZHh0MSIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIl9zKQorICAgICAgICB8fCBjb250ZXh0LnN1
cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIl9zKTsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcAppbmRleCBmNjVmNDJhZTIyYWM3MzEy
ZTEyODRkZjFjYzIxZjRlNjYwMWY2NjM5Li40NTZjMjA0YWJlYzI0ZjQ3N2EwMGE0YmUzYzU0YWY4
NjQ2ODRiNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JH
Qik7CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OldlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDc1JHQihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2Vi
R0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNf
c3JnYiIpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiIl9zKTsKICAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01Q
UkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVCk7CiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENf
RFhUMV9FWFQpOwogICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUKTsKQEAgLTU0
LDcgKzU0LDcgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVENzUkdCOjpnZXROYW1lKCkgY29uc3QKIAogYm9vbCBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsK
LSAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fczN0Y19zcmdiIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNp
b24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYiJfcyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVidWdTaGFkZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RGVidWdTaGFkZXJzLmNwcAppbmRleCBhNjlkYTI5MDM4NDE2MTYwODc5ZDc4YjhiZmNhZTA3ZDBk
NDU3NWE5Li4zYzk0ZTI5NTdjYzU5ZGMzMDFjNzcyMzk5YWM5MmIwMDFmNzBiOTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCkBAIC00
MCw3ICs0MCw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTERlYnVnU2hhZGVy
cyk7CiBXZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0g
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJH
TF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RyYW5zbGF0ZWRf
c2hhZGVyX3NvdXJjZSJfcyk7CiB9CiAKIFdlYkdMRGVidWdTaGFkZXJzOjp+V2ViR0xEZWJ1Z1No
YWRlcnMoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTERlcHRoVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TERlcHRoVGV4dHVyZS5jcHAKaW5kZXggOTE1NjNiY2FlMmYxMTg5MTI0Y2Y1YzhmMzZmZjMyYTkz
ZjU1ODBhMC4uZThhMjg0OTlmMjlkYjI3Mzc0ODRiODBmZWY2YmM3Yzg3ZGM2ZTk0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcApAQCAt
MzksOCArMzksOCBAQCBXZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRl
eHQpCiB7CiAgICAgYXV0byogZ2NnbCA9IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKLSAg
ICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpOwot
ICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7
CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2RlcHRoX3RleHR1cmUi
X3MpOworICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FSQl9kZXB0aF90ZXh0
dXJlIl9zKTsKIH0KIAogV2ViR0xEZXB0aFRleHR1cmU6On5XZWJHTERlcHRoVGV4dHVyZSgpID0g
ZGVmYXVsdDsKQEAgLTUyLDggKzUyLDggQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUg
V2ViR0xEZXB0aFRleHR1cmU6OmdldE5hbWUoKSBjb25zdAogCiBib29sIFdlYkdMRGVwdGhUZXh0
dXJlOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJu
IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19kZXB0aF90ZXh0dXJlIikKLSAgICAg
ICAgfHwgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsK
KyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2RlcHRoX3RleHR1
cmUiX3MpCisgICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9kZXB0
aF90ZXh0dXJlIl9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAppbmRleCAwNjcwYTQ3NjQy
YmZiZmVjYmRlZjU2Mzc4YTJiZWI1YjE4Yzk1Y2JjLi45YjE0ZDhmMjhjYjVkNzU0ZTIxMjY3Nzg2
NmU2YzY4OGQ5MTk1YWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTERyYXdCdWZmZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TERyYXdCdWZmZXJzLmNwcApAQCAtMzcsNyArMzcsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoV2ViR0xEcmF3QnVmZmVycyk7CiBXZWJHTERyYXdCdWZmZXJzOjpXZWJHTERyYXdCdWZm
ZXJzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVu
c2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOworICAgIGNvbnRleHQuZ3Jh
cGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVm
ZmVycyJfcyk7CiB9CiAKIFdlYkdMRHJhd0J1ZmZlcnM6On5XZWJHTERyYXdCdWZmZXJzKCkgPSBk
ZWZhdWx0OwpAQCAtNTAsOSArNTAsOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBX
ZWJHTERyYXdCdWZmZXJzOjpnZXROYW1lKCkgY29uc3QKIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6
c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7CiAjaWYgVVNF
KEFOR0xFKQotICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPnN1cHBvcnRz
RXh0ZW5zaW9uKCJHTF9FWFRfZHJhd19idWZmZXJzIik7CisgICAgcmV0dXJuIGNvbnRleHQuZ3Jh
cGhpY3NDb250ZXh0R0woKS0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9kcmF3X2J1ZmZlcnMi
X3MpOwogI2Vsc2UKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfRVhUX2RyYXdfYnVmZmVycyIpCisgICAgcmV0dXJuIGNvbnRleHQu
Z3JhcGhpY3NDb250ZXh0R0woKS0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9kcmF3X2J1ZmZl
cnMiX3MpCiAgICAgICAgICYmIHNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKGNvbnRleHQpOwog
I2VuZGlmCiB9CkBAIC0xMDYsMTAgKzEwNiwxMCBAQCBib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnNh
dGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIHdlYgog
ICAgIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZG
RVIsIGZibyk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls0XSA9IHsgMCwgMCwg
MCwgMCB9OyAvLyB0ZXh0dXJlcyBhcmUgcmVxdWlyZWQgdG8gYmUgaW5pdGlhbGl6ZWQgZm9yIG90
aGVyIHBvcnRzLgotICAgIGJvb2wgc3VwcG9ydHNEZXB0aCA9IGNvbnRleHQtPnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGNvbnRleHQtPnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOwotICAgIGJvb2wgc3VwcG9ydHNE
ZXB0aFN0ZW5jaWwgPSAoY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9wYWNrZWRf
ZGVwdGhfc3RlbmNpbCIpCi0gICAgICAgIHx8IGNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSk7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoID0g
Y29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19kZXB0aF90ZXh0dXJlIl9zKQorICAg
ICAgICB8fCBjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX2RlcHRoX3RleHR1cmUi
X3MpOworICAgIGJvb2wgc3VwcG9ydHNEZXB0aFN0ZW5jaWwgPSAoY29udGV4dC0+c3VwcG9ydHNF
eHRlbnNpb24oIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykKKyAgICAgICAgfHwgY29u
dGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykp
OwogICAgIFBsYXRmb3JtR0xPYmplY3QgZGVwdGhTdGVuY2lsID0gMDsKICAgICBpZiAoc3VwcG9y
dHNEZXB0aFN0ZW5jaWwpIHsKICAgICAgICAgZGVwdGhTdGVuY2lsID0gY29udGV4dC0+Y3JlYXRl
VGV4dHVyZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBlNjlmOTYxYzdjYjJhMWJmYzIzZGNjYjk4
NGMzMzNkZWI0YTE0YzQzLi44YWNmYzA3M2NmZjU0Njk5YjI3NThjYzU3Y2M4NTQxYjU2YjZhMTBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcApAQCAtODU1LDcgKzg1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVh
dGUoQ2FuCiAgICAgICAgIC8vIHBhcnRpY3VsYXIsIGlmIFdlYkdMIGNvbnRleHRzIHdlcmUgbG9z
dCBvbmUgb3IgbW9yZSB0aW1lcyB2aWEgdGhlIEdMX0FSQl9yb2J1c3RuZXNzIGV4dGVuc2lvbi4K
ICAgICAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuYWxsb3dXZWJHTChmcmFtZS0+
c2V0dGluZ3MoKS53ZWJHTEVuYWJsZWQoKSkpIHsKICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQt
PmRpc3BhdGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Vi
Z2xjb250ZXh0Y3JlYXRpb25lcnJvckV2ZW50LAotICAgICAgICAgICAgICAgIEV2ZW50OjpDYW5C
dWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsICJXZWIgcGFnZSB3YXMgbm90IGFs
bG93ZWQgdG8gY3JlYXRlIGEgV2ViR0wgY29udGV4dC4iKSk7CisgICAgICAgICAgICAgICAgRXZl
bnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgIldlYiBwYWdlIHdh
cyBub3QgYWxsb3dlZCB0byBjcmVhdGUgYSBXZWJHTCBjb250ZXh0LiJfcykpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIApAQCAtOTI0LDcgKzkyNCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjcmVhdGUoQ2FuCiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIGlmIChjYW52
YXNFbGVtZW50KSB7CiAgICAgICAgICAgICBjYW52YXNFbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdl
YkdMQ29udGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNyZWF0aW9u
ZXJyb3JFdmVudCwKLSAgICAgICAgICAgICAgICBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6WWVzLCAiQ291bGQgbm90IGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIikp
OworICAgICAgICAgICAgICAgIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpZZXMsICJDb3VsZCBub3QgY3JlYXRlIGEgV2ViR0wgY29udGV4dC4iX3MpKTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMTQzLDE3ICsxMTQzLDE3
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0dXBGbGFncygpCiAgICAgLy8g
dHVybmluZyBpdCBvZmYgY2F1c2VzIHByb2JsZW1zLgogICAgIG1faXNHTEVTMkNvbXBsaWFudCA9
IG1fY29udGV4dC0+aXNHTEVTMkNvbXBsaWFudCgpOwogICAgIGlmIChtX2lzR0xFUzJDb21wbGlh
bnQpIHsKLSAgICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2NvbnRleHQtPmlzRXh0ZW5z
aW9uRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfbnBvdCIpOwotICAgICAgICBtX2lzRGVwdGhTdGVu
Y2lsU3VwcG9ydGVkID0gbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbCIpIHx8IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9B
TkdMRV9kZXB0aF90ZXh0dXJlIik7CisgICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9j
b250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0dXJlX25wb3QiX3MpOworICAg
ICAgICBtX2lzRGVwdGhTdGVuY2lsU3VwcG9ydGVkID0gbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVu
YWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykgfHwgbV9jb250ZXh0LT5pc0V4
dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRoX3RleHR1cmUiX3MpOwogICAgIH0gZWxzZSB7
CiAjaWYgVVNFKEFOR0xFKQogICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gdHJ1ZTsKICNl
bHNlCi0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5pc0V4dGVuc2lv
bkVuYWJsZWQoIkdMX0FSQl90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28iKTsKKyAgICAgICAgbV9p
c0dMRVMyTlBPVFN0cmljdCA9ICFtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQVJC
X3RleHR1cmVfbm9uX3Bvd2VyX29mX3R3byJfcyk7CiAjZW5kaWYKLSAgICAgICAgbV9pc0RlcHRo
U3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRf
cGFja2VkX2RlcHRoX3N0ZW5jaWwiKSB8fCBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfQU5HTEVfZGVwdGhfdGV4dHVyZSIpOworICAgICAgICBtX2lzRGVwdGhTdGVuY2lsU3VwcG9y
dGVkID0gbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9wYWNrZWRfZGVwdGhf
c3RlbmNpbCJfcykgfHwgbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2Rl
cHRoX3RleHR1cmUiX3MpOwogICAgIH0KLSAgICBtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCA9
IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfcm9idXN0bmVzcyIpOworICAg
IG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkID0gbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJs
ZWQoIkdMX0VYVF9yb2J1c3RuZXNzIl9zKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjphZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQ0dMZW51bSBmb3JtYXQpCkBAIC0z
MDY3LDcgKzMwNjcsNyBAQCBSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRBY3RpdmVVbmlmb3JtKFdlYkdMUHJvZ3JhbQogICAgIC8vIEZJWE1FOiBE
byB3ZSBzdGlsbCBuZWVkIHRoaXMgZm9yIHRoZSBBTkdMRSBiYWNrZW5kPwogICAgIGlmICghaXNH
TEVTMkNvbXBsaWFudCgpKQogICAgICAgICBpZiAoaW5mby5zaXplID4gMSAmJiAhaW5mby5uYW1l
LmVuZHNXaXRoKCJbMF0iKSkKLSAgICAgICAgICAgIGluZm8ubmFtZS5hcHBlbmQoIlswXSIpOwor
ICAgICAgICAgICAgaW5mby5uYW1lLmFwcGVuZCgiWzBdIl9zKTsKIAogICAgIExPRyhXZWJHTCwg
IlJldHVybmluZyBhY3RpdmUgdW5pZm9ybSAlZDogJXMiLCBpbmRleCwgaW5mby5uYW1lLnV0Zjgo
KS5kYXRhKCkpOwogCkBAIC01NjE3LDE3ICs1NjE3LDE3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5jUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlv
bk5hCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWRkRXh0ZW5zaW9uU3VwcG9y
dGVkRm9ybWF0c0FuZFR5cGVzKCkKIHsKLSAgICBpZiAoIW1fYXJlT0VTVGV4dHVyZUZsb2F0Rm9y
bWF0c0FuZFR5cGVzQWRkZWQgJiYgZXh0ZW5zaW9uSXNFbmFibGVkKCJPRVNfdGV4dHVyZV9mbG9h
dCIpKSB7CisgICAgaWYgKCFtX2FyZU9FU1RleHR1cmVGbG9hdEZvcm1hdHNBbmRUeXBlc0FkZGVk
ICYmIGV4dGVuc2lvbklzRW5hYmxlZCgiT0VTX3RleHR1cmVfZmxvYXQiX3MpKSB7CiAgICAgICAg
IEFERF9WQUxVRVNfVE9fU0VUKG1fc3VwcG9ydGVkVGV4SW1hZ2VTb3VyY2VUeXBlcywgU3VwcG9y
dGVkVHlwZXNPRVNUZXh0dXJlRmxvYXQpOwogICAgICAgICBtX2FyZU9FU1RleHR1cmVGbG9hdEZv
cm1hdHNBbmRUeXBlc0FkZGVkID0gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoIW1fYXJlT0VTVGV4
dHVyZUhhbGZGbG9hdEZvcm1hdHNBbmRUeXBlc0FkZGVkICYmIGV4dGVuc2lvbklzRW5hYmxlZCgi
T0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKSB7CisgICAgaWYgKCFtX2FyZU9FU1RleHR1cmVIYWxm
RmxvYXRGb3JtYXRzQW5kVHlwZXNBZGRlZCAmJiBleHRlbnNpb25Jc0VuYWJsZWQoIk9FU190ZXh0
dXJlX2hhbGZfZmxvYXQiX3MpKSB7CiAgICAgICAgIEFERF9WQUxVRVNfVE9fU0VUKG1fc3VwcG9y
dGVkVGV4SW1hZ2VTb3VyY2VUeXBlcywgU3VwcG9ydGVkVHlwZXNPRVNUZXh0dXJlSGFsZkZsb2F0
KTsKICAgICAgICAgbV9hcmVPRVNUZXh0dXJlSGFsZkZsb2F0Rm9ybWF0c0FuZFR5cGVzQWRkZWQg
PSB0cnVlOwogICAgIH0KIAotICAgIGlmICghbV9hcmVFWFRzUkdCRm9ybWF0c0FuZFR5cGVzQWRk
ZWQgJiYgZXh0ZW5zaW9uSXNFbmFibGVkKCJFWFRfc1JHQiIpKSB7CisgICAgaWYgKCFtX2FyZUVY
VHNSR0JGb3JtYXRzQW5kVHlwZXNBZGRlZCAmJiBleHRlbnNpb25Jc0VuYWJsZWQoIkVYVF9zUkdC
Il9zKSkgewogICAgICAgICBBRERfVkFMVUVTX1RPX1NFVChtX3N1cHBvcnRlZFRleEltYWdlU291
cmNlSW50ZXJuYWxGb3JtYXRzLCBTdXBwb3J0ZWRJbnRlcm5hbEZvcm1hdHNFWFRzUkdCKTsKICAg
ICAgICAgQUREX1ZBTFVFU19UT19TRVQobV9zdXBwb3J0ZWRUZXhJbWFnZVNvdXJjZUZvcm1hdHMs
IFN1cHBvcnRlZEZvcm1hdHNFWFRzUkdCKTsKICAgICAgICAgbV9hcmVFWFRzUkdCRm9ybWF0c0Fu
ZFR5cGVzQWRkZWQgPSB0cnVlOwpAQCAtNjQ1Miw3ICs2NDUyLDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dEltcGwoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6TG9zdEMKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47CiAgICAg
aWYgKG1vZGUgPT0gUmVhbExvc3RDb250ZXh0KQotICAgICAgICBwcmludFRvQ29uc29sZShNZXNz
YWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6IGNvbnRleHQgbG9zdC4iKTsKKyAgICAgICAgcHJpbnRU
b0NvbnNvbGUoTWVzc2FnZUxldmVsOjpFcnJvciwgIldlYkdMOiBjb250ZXh0IGxvc3QuIl9zKTsK
IAogICAgIG1fY29udGV4dExvc3RTdGF0ZSA9IENvbnRleHRMb3N0U3RhdGUgeyBtb2RlIH07CiAg
ICAgbV9jb250ZXh0TG9zdFN0YXRlLT5lcnJvcnMuYWRkKEdyYXBoaWNzQ29udGV4dEdMOjpDT05U
RVhUX0xPU1RfV0VCR0wpOwpAQCAtNzMyOCw3ICs3MzI4LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpwcmludFRvQ29uc29sZShNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0
cmluZyYKIAogICAgIC0tbV9udW1HTEVycm9yc1RvQ29uc29sZUFsbG93ZWQ7CiAgICAgaWYgKCFt
X251bUdMRXJyb3JzVG9Db25zb2xlQWxsb3dlZCkKLSAgICAgICAgcHJpbnRUb0NvbnNvbGUoTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCAiV2ViR0w6IHRvbyBtYW55IGVycm9ycywgbm8gbW9yZSBlcnJv
cnMgd2lsbCBiZSByZXBvcnRlZCB0byB0aGUgY29uc29sZSBmb3IgdGhpcyBjb250ZXh0LiIpOwor
ICAgICAgICBwcmludFRvQ29uc29sZShNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJXZWJHTDogdG9v
IG1hbnkgZXJyb3JzLCBubyBtb3JlIGVycm9ycyB3aWxsIGJlIHJlcG9ydGVkIHRvIHRoZSBjb25z
b2xlIGZvciB0aGlzIGNvbnRleHQuIl9zKTsKIH0KIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2YWxpZGF0ZUZyYW1lYnVmZmVyVGFyZ2V0KEdDR0xlbnVtIHRhcmdldCkKQEAgLTc3
NzgsNyArNzc3OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0
b3JlQ29udGV4dCgpCiAgICAgICAgIGlmIChtX2NvbnRleHRMb3N0U3RhdGUtPm1vZGUgPT0gUmVh
bExvc3RDb250ZXh0KQogICAgICAgICAgICAgbV9yZXN0b3JlVGltZXIuc3RhcnRPbmVTaG90KHNl
Y29uZHNCZXR3ZWVuUmVzdG9yZUF0dGVtcHRzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
cHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpFcnJvciwgIldlYkdMOiBlcnJvciByZXN0b3Jp
bmcgbG9zdCBjb250ZXh0LiIpOworICAgICAgICAgICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxl
dmVsOjpFcnJvciwgIldlYkdMOiBlcnJvciByZXN0b3JpbmcgbG9zdCBjb250ZXh0LiJfcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgxNDMsNyArODE0Myw3IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Zm9yY2VDb250ZXh0TG9zdCgpCiAKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6cmVjeWNsZUNvbnRleHQoKQogewotICAgIHByaW50VG9Db25zb2xl
KE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJUaGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIFdlYkdMIGNv
bnRleHRzIG9uIHRoaXMgcGFnZSwgdGhlIG9sZGVzdCBjb250ZXh0IHdpbGwgYmUgbG9zdC4iKTsK
KyAgICBwcmludFRvQ29uc29sZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiVGhlcmUgYXJlIHRvbyBt
YW55IGFjdGl2ZSBXZWJHTCBjb250ZXh0cyBvbiB0aGlzIHBhZ2UsIHRoZSBvbGRlc3QgY29udGV4
dCB3aWxsIGJlIGxvc3QuIl9zKTsKICAgICAvLyBVc2luZyBTeW50aGV0aWNMb3N0Q29udGV4dCBt
ZWFucyB0aGUgZGV2ZWxvcGVyIHdvbid0IGJlIGFibGUgdG8gZm9yY2UgdGhlIHJlc3RvcmF0aW9u
CiAgICAgLy8gb2YgdGhlIGNvbnRleHQgYnkgY2FsbGluZyBwcmV2ZW50RGVmYXVsdCgpIGluIGEg
IndlYmdsY29udGV4dGxvc3QiIGV2ZW50IGhhbmRsZXIuCiAgICAgZm9yY2VMb3N0Q29udGV4dChT
eW50aGV0aWNMb3N0Q29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9D
U1NQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggZjllZWZjNTMyYTU0OGZlNTNiMzY3M2FmYzIwZjI2
OTE2NTAyZTVmMy4uYTg1NDg1MjA5MTE4ZGQzMzE5NmIzM2FkNDAyYWI3NzY2ZWNkNDcwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcApA
QCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKCkKICAg
ICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpICYmIGhhc1ZhbGlkSW1wb3J0Q29uZGl0aW9ucyhjb25k
aXRpb25zKSkgewogICAgICAgICAgICAgVVJMIGJhc2VFbGVtZW50VVJMOyAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgcGFzc2VkIGluIGZyb20gdGhlIEhUTUxQcmVsb2FkU2Nhbm5lciB2aWEgc2Nh
bigpOiB3aXRob3V0IGl0IHdlIHdpbGwgZ2V0IHJlbGF0aXZlIFVSTHMgd3JvbmcuCiAgICAgICAg
ICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgaW5jbHVkaW5nIHRoZSBjaGFyc2V0IGluIHRo
ZSBwcmVsb2FkIHJlcXVlc3Q/Ci0gICAgICAgICAgICBtX3JlcXVlc3RzLT5hcHBlbmQobWFrZVVu
aXF1ZTxQcmVsb2FkUmVxdWVzdD4oImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkwsIENhY2hlZFJl
c291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJlcXVlc3Q6Ok1v
ZHVsZVNjcmlwdDo6Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZykpOworICAgICAgICAg
ICAgbV9yZXF1ZXN0cy0+YXBwZW5kKG1ha2VVbmlxdWU8UHJlbG9hZFJlcXVlc3Q+KCJjc3MiX3Ms
IHVybCwgYmFzZUVsZW1lbnRVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0
LCBTdHJpbmcoKSwgUHJlbG9hZFJlcXVlc3Q6Ok1vZHVsZVNjcmlwdDo6Tm8sIFJlZmVycmVyUG9s
aWN5OjpFbXB0eVN0cmluZykpOwogICAgICAgICB9CiAgICAgICAgIG1fc3RhdGUgPSBJbml0aWFs
OwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocnVsZSwgImNo
YXJzZXQiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5jcHAKaW5kZXggOWQ2YTZjY2FkZTBiNGQ1ZWE0MDAyYjUyMmNmZmJkNDEzZjA1NmUxZS4uNjFj
NmE3YjM0YTk1NDRjODNkOWQ3ZWY1MDEwYzQ3ZmI2OTI3ZGFiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAg
U3RyaW5nIHNlcmlhbGl6ZUZvck51bWJlclR5cGUoY29uc3QgRGVjaW1hbCYgbnVtYmVyKQogewog
ICAgIGlmIChudW1iZXIuaXNaZXJvKCkpIHsKICAgICAgICAgLy8gRGVjaW1hbDo6dG9TdHJpbmcg
YXBwZW5kcyBleHBvbmVudCwgZS5nLiAiMGUtMTgiCi0gICAgICAgIHJldHVybiBudW1iZXIuaXNO
ZWdhdGl2ZSgpID8gIi0wIiA6ICIwIjsKKyAgICAgICAgcmV0dXJuIG51bWJlci5pc05lZ2F0aXZl
KCkgPyAiLTAiX3MgOiAiMCJfczsKICAgICB9CiAgICAgcmV0dXJuIG51bWJlci50b1N0cmluZygp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5l
ci5jcHAKaW5kZXggMjg5NjI4YWVhODk1YmIyOGNkMDYzMjY1YjVlNDViNjUzYTUwNThmNS4uMGEy
NzFlZmVkYmM2ZWQ0MmZiMzQ1ZmFmZWJiZGVjYjdiNjFjYTc5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC03Nyw3ICs3Nyw3
IEBAIFRva2VuUHJlbG9hZFNjYW5uZXI6OlRhZ0lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnRhZ0lk
Rm9yKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlCiAgICAgcmV0dXJuIFRhZ0lkOjpVbmtub3duOwog
fQogCi1TdHJpbmcgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6aW5pdGlhdG9yRm9yKFRhZ0lkIHRhZ0lk
KQorQVNDSUlMaXRlcmFsIFRva2VuUHJlbG9hZFNjYW5uZXI6OmluaXRpYXRvckZvcihUYWdJZCB0
YWdJZCkKIHsKICAgICBzd2l0Y2ggKHRhZ0lkKSB7CiAgICAgY2FzZSBUYWdJZDo6U291cmNlOgpA
QCAtMjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYXV0byBtZWRpYVNl
dCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShhdHRyaWJ1dGVWYWx1ZSwgTWVkaWFRdWVyeVBhcnNl
ckNvbnRleHQobV9kb2N1bWVudCkpOwogICAgICAgICAgICAgICAgIFJlZlB0ciBkb2N1bWVudEVs
ZW1lbnQgPSBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOwogICAgICAgICAgICAgICAgIExP
RyhNZWRpYVF1ZXJpZXMsICJIVE1MUHJlbG9hZFNjYW5uZXIgJXAgcHJvY2Vzc0F0dHJpYnV0ZSBl
dmFsdWF0aW5nIG1lZGlhIHF1ZXJpZXMiLCB0aGlzKTsKLSAgICAgICAgICAgICAgICBtX21lZGlh
TWF0Y2hlZCA9IE1lZGlhUXVlcnlFdmFsdWF0b3IgeyBtX2RvY3VtZW50LnByaW50aW5nKCkgPyAi
cHJpbnQiIDogInNjcmVlbiIsIG1fZG9jdW1lbnQsIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50
RWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhU2V0Lmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBtX21lZGlhTWF0Y2hlZCA9IE1lZGlhUXVlcnlFdmFsdWF0
b3IgeyBtX2RvY3VtZW50LnByaW50aW5nKCkgPyAicHJpbnQiX3MgOiAic2NyZWVuIl9zLCBtX2Rv
Y3VtZW50LCBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPmNvbXB1dGVkU3R5bGUo
KSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVNldC5nZXQoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgdHlwZUF0dHIpICYmIG1fdHlwZUF0
dHJpYnV0ZS5pc051bGwoKSkgewogICAgICAgICAgICAgICAgIC8vIHdoZW4gbXVsdGlwbGUgdHlw
ZSBhdHRyaWJ1dGVzIHByZXNlbnQ6IGZpcnN0IHZhbHVlIHdpbnMsIGlnbm9yZSBzdWJzZXF1ZW50
ICh0byBtYXRjaCBJbWFnZUVsZW1lbnQgcGFyc2VyIGFuZCBCbGluayBiZWhhdmlvdXJzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaAppbmRleCAz
OWM3MDQ4Y2IxOGUyNGU0ZmVjM2FmZTYyYjRkOWY1NzVjYzBmMzQ4Li41NzYxMWJkNmZjYTE5MjRi
NDRmNWI4YzEyZTg0YmVhMzIyMDExYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogCiAg
ICAgc3RhdGljIFRhZ0lkIHRhZ0lkRm9yKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlY3RvciYpOwog
Ci0gICAgc3RhdGljIFN0cmluZyBpbml0aWF0b3JGb3IoVGFnSWQpOworICAgIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgaW5pdGlhdG9yRm9yKFRhZ0lkKTsKIAogICAgIHZvaWQgdXBkYXRlUHJlZGljdGVk
QmFzZVVSTChjb25zdCBIVE1MVG9rZW4mLCBib29sIHNob3VsZFJlc3RyaWN0QmFzZVVSTFNjaGVt
ZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3Vy
Y2VQcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVBy
ZWxvYWRlci5oCmluZGV4IDljNDQ2MTg5MTM2YjFjNTE4ZDhlZDljMTdkOTc1NjhkYmZlMzFlNzMu
LjhkYWY5MzQzYWMwYjg1YWU2ZTFmNjFmZDM0MmU0Mjk1YmRjYmRiZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzLAogICAgICAgICBObywKICAgICB9OwotICAg
IFByZWxvYWRSZXF1ZXN0KGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJl
c291cmNlVVJMLCBjb25zdCBVUkwmIGJhc2VVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291
cmNlVHlwZSwgY29uc3QgU3RyaW5nJiBtZWRpYUF0dHJpYnV0ZSwgTW9kdWxlU2NyaXB0IG1vZHVs
ZVNjcmlwdCwgY29uc3QgUmVmZXJyZXJQb2xpY3kmIHJlZmVycmVyUG9saWN5KQorICAgIFByZWxv
YWRSZXF1ZXN0KEFTQ0lJTGl0ZXJhbCBpbml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VV
UkwsIGNvbnN0IFVSTCYgYmFzZVVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VUeXBl
LCBjb25zdCBTdHJpbmcmIG1lZGlhQXR0cmlidXRlLCBNb2R1bGVTY3JpcHQgbW9kdWxlU2NyaXB0
LCBjb25zdCBSZWZlcnJlclBvbGljeSYgcmVmZXJyZXJQb2xpY3kpCiAgICAgICAgIDogbV9pbml0
aWF0b3IoaW5pdGlhdG9yKQogICAgICAgICAsIG1fcmVzb3VyY2VVUkwocmVzb3VyY2VVUkwpCiAg
ICAgICAgICwgbV9iYXNlVVJMKGJhc2VVUkwuaXNvbGF0ZWRDb3B5KCkpCkBAIC02MSw3ICs2MSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVVJMIGNvbXBsZXRlVVJMKERvY3VtZW50Jik7CiAK
LSAgICBTdHJpbmcgbV9pbml0aWF0b3I7CisgICAgQVNDSUlMaXRlcmFsIG1faW5pdGlhdG9yOwog
ICAgIFN0cmluZyBtX3Jlc291cmNlVVJMOwogICAgIFVSTCBtX2Jhc2VVUkw7CiAgICAgU3RyaW5n
IG1fY2hhcnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApp
bmRleCAxOWZjODVjZDg5N2E3Y2VhZGI0MWQ1MDI1YTc5YWI5Mjg3N2RmMTZhLi5iY2Y4ZTE3MmE2
NzMyMGY2Njg4MTIwNzQ3OWRmN2E4MGFiYWMxN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgc3RhdGljIHZvaWQgcmVt
b3ZlUHNldWRvQXR0cmlidXRlcyhOb2RlJiBub2RlKQogRXhjZXB0aW9uT3I8UmVmPFRleHRUcmFj
a0N1ZT4+IFRleHRUcmFja0N1ZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgZG91YmxlIHN0
YXJ0LCBkb3VibGUgZW5kLCBEb2N1bWVudEZyYWdtZW50JiBjdWVGcmFnbWVudCkKIHsKICAgICBp
ZiAoIWN1ZUZyYWdtZW50LmZpcnN0Q2hpbGQoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWROb2RlVHlwZUVycm9yLCAiRW1wdHkgY3VlIGZyYWdtZW50IiB9OworICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE5vZGVUeXBlRXJyb3IsICJFbXB0eSBjdWUgZnJhZ21l
bnQiX3MgfTsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IGN1ZUZyYWdtZW50LmZpcnN0Q2hpbGQo
KTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgYXV0byByZXN1
bHQgPSBjaGVja0ZvckludmFsaWROb2RlVHlwZXMoKm5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKaW5kZXggNWU1OGM3OTc0YzM5
MWI4ZmQ1YWFlMzA1ZjU0ZDkxYWU5Y2QwNmMxNi4uNGVkMGZjYTQ1OWZjZjIwMzY2NTIzNTNlZWFl
NTI0NzUyMjYwN2ZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWVHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZUdlbmVyaWMuY3BwCkBAIC0xMjIsMTAgKzEyMiwxMCBAQCB2b2lkIFRleHRUcmFja0N1
ZUdlbmVyaWNCb3hFbGVtZW50OjphcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYgdmlk
ZW9TaXplKQogICAgICAgICBtYXhTaXplID0gMTAwLjAgLSB0ZXh0UG9zaXRpb247CiAKICAgICBp
ZiAoY3VlLT5nZXRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVlRUQ3VlOjpIb3Jpem9udGFsKSB7Ci0g
ICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNaW5XaWR0aCwgIm1pbi1j
b250ZW50Iik7CisgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNaW5X
aWR0aCwgIm1pbi1jb250ZW50Il9zKTsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eU1heFdpZHRoLCBtYXhTaXplLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0Up
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlNaW5IZWlnaHQsICJtaW4tY29udGVudCIpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5TWluSGVpZ2h0LCAibWluLWNvbnRlbnQiX3MpOwogICAgICAgICBzZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBtYXhTaXplLCBDU1NVbml0
VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuY3BwCmluZGV4IDAwODhiZmFlMDkzNGM5YjRhY2YwZDA0MmUxOTIwMzU0NDUyMGMwMGQuLmZj
YjFkODQ0ODliYTJhZjEwNzYxNzBlYzM4YmJlYzI0NGNmNDhlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTIxOCwxNCArMjE4LDE0IEBAIHZvaWQgVlRUQ3VlQm94Ojph
cHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplKQogICAgIGlmIChjdWUt
PnZlcnRpY2FsKCkgPT0gaG9yaXpvbnRhbEtleXdvcmQoKSkgewogICAgICAgICBzZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIG5ld0N1ZVNpemUsIENTU1VuaXRUeXBlOjpD
U1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlIZWlnaHQsIENTU1ZhbHVlQXV0byk7Ci0gICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlNaW5XaWR0aCwgIm1pbi1jb250ZW50Iik7CisgICAgICAgIHNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNaW5XaWR0aCwgIm1pbi1jb250ZW50Il9zKTsKICAgICAg
ICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heFdpZHRoLCBtYXhTaXplLCBD
U1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBD
U1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxp
ZXIgIT0gMS4wICYmIHBvc2l0aW9uLmZpcnN0KQogICAgICAgICAgICAgc2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHN0YXRpY19jYXN0PGRvdWJsZT4oKnBvc2l0aW9uLmZp
cnN0IC0gKG5ld0N1ZVNpemUgLSBjdWUtPmdldENTU1NpemUoKSkgLyAyKSwgQ1NTVW5pdFR5cGU6
OkNTU19QRVJDRU5UQUdFKTsKICAgICB9IGVsc2UgewogICAgICAgICBzZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIENTU1ZhbHVlQXV0byk7CiAgICAgICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIG5ld0N1ZVNpemUsIENTU1VuaXRUeXBl
OjpDU1NfUEVSQ0VOVEFHRSk7Ci0gICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlNaW5IZWlnaHQsICJtaW4tY29udGVudCIpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5TWluSGVpZ2h0LCAibWluLWNvbnRlbnQiX3MpOwogICAgICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBtYXhTaXplLCBDU1NV
bml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBDU1NW
YWx1ZU1pZGRsZSB8fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxpZXIg
IT0gMS4wICYmIHBvc2l0aW9uLnNlY29uZCkKICAgICAgICAgICAgIHNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlUb3AsIHN0YXRpY19jYXN0PGRvdWJsZT4oKnBvc2l0aW9uLnNlY29u
ZCAtIChuZXdDdWVTaXplIC0gY3VlLT5nZXRDU1NTaXplKCkpIC8gMiksIENTU1VuaXRUeXBlOjpD
U1NfUEVSQ0VOVEFHRSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5j
cHAKaW5kZXggMDY5MTI3M2E0YTA4MzBhZDdmZTMxNGM4NTY3YmQ0ZmZiYWVmYTJiMC4uOWY1ZGE1
MWJlNzhmZGFhNjFiN2U1MDk1ODM0NWRmNDNiNWYwYmQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtOTIsNyArOTIsNyBAQCBib29sIFdlYlZUVFBh
cnNlcjo6cGFyc2VGbG9hdFBlcmNlbnRhZ2VWYWx1ZVBhaXIoVlRUU2Nhbm5lciYgdmFsdWVTY2Fu
bmVyLCBjaGFyCiAKIFdlYlZUVFBhcnNlcjo6V2ViVlRUUGFyc2VyKFdlYlZUVFBhcnNlckNsaWVu
dCYgY2xpZW50LCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50
KQotICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFp
biIsIFBBTDo6VVRGOEVuY29kaW5nKCkpKQorICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiJfcywgUEFMOjpVVEY4RW5jb2RpbmcoKSkpCiAgICAg
LCBtX2NsaWVudChjbGllbnQpCiB7CiB9CkBAIC03MDgsNyArNzA4LDcgQEAgdm9pZCBXZWJWVFRU
cmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbihEb2N1bWVudCYgZG9jdW1lbnQpCiAg
ICAgICAgIFN0cmluZyBjaGFyYWN0ZXJzU3RyaW5nID0gbV90b2tlbi5jaGFyYWN0ZXJzKCk7CiAg
ICAgICAgIE1lZGlhVGltZSBwYXJzZWRUaW1lU3RhbXA7CiAgICAgICAgIGlmIChXZWJWVFRQYXJz
ZXI6OmNvbGxlY3RUaW1lU3RhbXAoY2hhcmFjdGVyc1N0cmluZywgcGFyc2VkVGltZVN0YW1wKSkK
LSAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPnBhcnNlckFwcGVuZENoaWxkKFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjo6Y3JlYXRlKGRvY3VtZW50LCAidGltZXN0YW1wIiwgY2hhcmFjdGVyc1N0cmlu
ZykpOworICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQoUHJvY2Vz
c2luZ0luc3RydWN0aW9uOjpjcmVhdGUoZG9jdW1lbnQsICJ0aW1lc3RhbXAiX3MsIGNoYXJhY3Rl
cnNTdHJpbmcpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDMwOTNmOWM5MjAzMTI0OWRhOWNjOTRjMzJkZTg5MTVj
MmNiNzk1OTAuLjZhYTYxMjZkZDdjYWM2ODAxMTdiMjc3YjQ0YTZjMTg2ZWMzNzA1MzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xOTksOSArMTk5LDkgQEAgRXhjZXB0aW9uT3I8
c3RkOjpvcHRpb25hbDxJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OkNvbXB1dGVk
UHJvcGVydGllcz4KICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZhbnRBdHRyVmFsdWUgPSBh
eE9iamVjdC0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7CiAgICAgICAgICAgICBpZiAoIWFyaWFSZWxl
dmFudEF0dHJWYWx1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5n
PiBsaXZlUmVnaW9uUmVsZXZhbnQ7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFu
dEFkZGl0aW9ucyA9ICJhZGRpdGlvbnMiOwotICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVs
ZXZhbnRSZW1vdmFscyA9ICJyZW1vdmFscyI7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFS
ZWxldmFudFRleHQgPSAidGV4dCI7CisgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFu
dEFkZGl0aW9ucyA9ICJhZGRpdGlvbnMiX3M7CisgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFS
ZWxldmFudFJlbW92YWxzID0gInJlbW92YWxzIl9zOworICAgICAgICAgICAgICAgIFN0cmluZyBh
cmlhUmVsZXZhbnRUZXh0ID0gInRleHQiX3M7CiAKICAgICAgICAgICAgICAgICBjb25zdCBhdXRv
JiB2YWx1ZXMgPSBTcGFjZVNwbGl0U3RyaW5nKGFyaWFSZWxldmFudEF0dHJWYWx1ZSwgdHJ1ZSk7
CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5jb250YWlucygiYWxsIikpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKaW5kZXggYmJjYzc5YWJjMzg2
OTVlYzA5YTQwYjgyNTE2ZWM5YTk2NGVjNjZiZC4uNGRmZGU2NjNlOGJiODMzMjlmNTYyMDUxMzM0
OTVhN2FiYjMyYmNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhcy5jcHAKQEAgLTExMDAsNyArMTEwMCw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4
Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFyaWFudCBkYXRhKQogICAgICAgICAgICAgICAgIGlmIChp
bWFnZSAmJiBpbWFnZSAhPSAmSW1hZ2U6Om51bGxJbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCks
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwotICAg
ICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2Uv
cG5nIik7CisgICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRh
VVJMKCJpbWFnZS9wbmciX3MpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApA
QCAtMTExNSw3ICsxMTE1LDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1
cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgICAgIGlmIChpbWFnZUJ1ZmZlcikg
ewogICAgICAgICAgICAgICAgIHZpZGVvRWxlbWVudC0+cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoaW1hZ2VCdWZmZXItPmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgsIHZp
ZGVvSGVpZ2h0KSk7Ci0gICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0Rh
dGFVUkwoImltYWdlL3BuZyIpOworICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZl
ci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpbmRleCA9IGluZGV4Rm9yRGF0YShkYXRhVVJMKTsKQEAgLTExMzQsNyArMTEzNCw3IEBAIGlu
dCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFyaWFudCBkYXRh
KQogICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxDYW52YXNQYXR0ZXJuPiYgY2FudmFzUGF0dGVy
bikgeyBpdGVtID0gYnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4oKmNhbnZhc1BhdHRlcm4pOyB9
LAogICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxJbWFnZURhdGE+JiBpbWFnZURhdGEpIHsgaXRl
bSA9IGJ1aWxkQXJyYXlGb3JJbWFnZURhdGEoKmltYWdlRGF0YSk7IH0sCiAgICAgICAgIFsmXSAo
UmVmUHRyPEltYWdlQml0bWFwPiYgaW1hZ2VCaXRtYXApIHsKLSAgICAgICAgICAgIGluZGV4ID0g
aW5kZXhGb3JEYXRhKGltYWdlQml0bWFwLT5idWZmZXIoKS0+dG9EYXRhVVJMKCJpbWFnZS9wbmci
KSk7CisgICAgICAgICAgICBpbmRleCA9IGluZGV4Rm9yRGF0YShpbWFnZUJpdG1hcC0+YnVmZmVy
KCktPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zKSk7CiAgICAgICAgIH0sCiAgICAgICAgIFsmXSAo
Y29uc3QgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mIHNjcmlwdENhbGxTdGFjaykgewogICAgICAg
ICAgICAgYXV0byBhcnJheSA9IEpTT046OkFycmF5T2Y8ZG91YmxlPjo6Y3JlYXRlKCk7CkBAIC0x
MTUxLDcgKzExNTEsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGlj
YXRlRGF0YVZhcmlhbnQgZGF0YSkKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2Ug
IT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKICAgICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQo
KS5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KDAsIDApKTsKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAgICAg
ICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5n
Il9zKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTEzOTAsNyArMTM5
MCw3IEBAIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpi
dWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybihjb25zCiAgICAgICAgIHJlcGVhdCA9ICJuby1yZXBl
YXQiX3M7CiAKICAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNy
ZWF0ZSgpOwotICAgIGFycmF5LT5hZGRJdGVtKGluZGV4Rm9yRGF0YShpbWFnZUJ1ZmZlci0+dG9E
YXRhVVJMKCJpbWFnZS9wbmciKSkpOworICAgIGFycmF5LT5hZGRJdGVtKGluZGV4Rm9yRGF0YShp
bWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MpKSk7CiAgICAgYXJyYXktPmFkZEl0
ZW0oaW5kZXhGb3JEYXRhKHJlcGVhdCkpOwogICAgIHJldHVybiBhcnJheTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmNwcAppbmRleCBiNThlNzNlNzA0ZjQzNDFjNTM3NTk2MjI5MTZkYzdjMWQ5ZWJlNDI0Li45
MGNlNWU3Y2I5NmRmNjI1YjA3YjQyM2JmOTVkZDhiN2Y3NmZjMzI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwCkBAIC02Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAotc3RhdGljIGNvbnN0IGNoYXIqIGluc3BlY3RvckF0dGFjaGVkSGVp
Z2h0U2V0dGluZyA9ICJpbnNwZWN0b3JBdHRhY2hlZEhlaWdodCI7CitzdGF0aWMgY29uc3RleHBy
IEFTQ0lJTGl0ZXJhbCBpbnNwZWN0b3JBdHRhY2hlZEhlaWdodFNldHRpbmcgPSAiaW5zcGVjdG9y
QXR0YWNoZWRIZWlnaHQiX3M7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdEF0dGFjaGVk
SGVpZ2h0ID0gMzAwOwogc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1BdHRhY2hlZEhlaWdodCA9
IDI1MC4wZjsKIHN0YXRpYyBjb25zdCBmbG9hdCBtYXhpbXVtQXR0YWNoZWRIZWlnaHRSYXRpbyA9
IDAuNzVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmNwcAppbmRleCBhODA5OWM4MWNjZTYyMmM2MTM0M2ZlYmYyOTIwNmQ2NGJhMTJlNjdk
Li5lOTIwYWQxNjljNzQxZGEzZjNjYzI1ZWEzMTI4YTQzNGJkMThmZWQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtMTEx
LDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBn
ZXN0dXJlSW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgZHluYW1pY0Rvd25jYXN0PERv
Y3VtZW50PihleGVjdXRpb25Db250ZXh0KG1fZnJvbnRlbmRBcGlPYmplY3QuZ2xvYmFsT2JqZWN0
KCkpKSk7CiAgICAgICAgICAgICBpbnQgaXRlbU51bWJlciA9IGFjdGlvbiAtIENvbnRleHRNZW51
SXRlbUJhc2VDdXN0b21UYWc7CiAKLSAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihtX2Zyb250ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CisgICAg
ICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9mcm9udGVu
ZEFwaU9iamVjdCwgImNvbnRleHRNZW51SXRlbVNlbGVjdGVkIl9zLCBXZWJDb3JlOjpmdW5jdGlv
bkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgICAgICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChpdGVtTnVtYmVyKTsKICAgICAgICAgICAgIGZ1bmN0aW9uLmNhbGwoKTsKICAgICAg
ICAgfQpAQCAtMTIwLDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250ZXh0TWVudUNs
ZWFyZWQoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1fZnJvbnRlbmRIb3N0KSB7Ci0g
ICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9mcm9u
dGVuZEFwaU9iamVjdCwgImNvbnRleHRNZW51Q2xlYXJlZCIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2Fs
bEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2Zyb250ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVDbGVh
cmVkIl9zLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAg
ICAgICAgICBmdW5jdGlvbi5jYWxsKCk7CiAKICAgICAgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5t
X21lbnVQcm92aWRlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggNGY2M2FkY2U5MzkxNmRiMjMyMGU5Njc4YWFiZmUwZjNj
ZDk5NzYyYi4uNzcxMGExYjVkODJiNGVjYmM2YjhmZTYyODRjZDc2ZTQ0OTg3M2ZjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtNjEzLDcg
KzYxMyw3IEBAIEVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yT3ZlcmxheTo6c2V0R3JpZE92
ZXJsYXlGb3JOb2RlKE5vZGUmIG5vZGUsIGNvbnN0IEluCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IG5vZGUucmVuZGVyZXIoKTsKICAgICBpZiAoIWlzPFJlbmRlckdyaWQ+KHJlbmRl
cmVyKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb2RlIGRvZXMgbm90IGluaXRp
YXRlIGEgZ3JpZCBjb250ZXh0Iik7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm9k
ZSBkb2VzIG5vdCBpbml0aWF0ZSBhIGdyaWQgY29udGV4dCJfcyk7CiAKICAgICByZW1vdmVHcmlk
T3ZlcmxheUZvck5vZGUobm9kZSk7CiAKQEAgLTYyNyw3ICs2MjcsNyBAQCBFcnJvclN0cmluZ09y
PHZvaWQ+IEluc3BlY3Rvck92ZXJsYXk6OnNldEdyaWRPdmVybGF5Rm9yTm9kZShOb2RlJiBub2Rl
LCBjb25zdCBJbgogRXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JPdmVybGF5OjpjbGVhckdy
aWRPdmVybGF5Rm9yTm9kZShOb2RlJiBub2RlKQogewogICAgIGlmICghcmVtb3ZlR3JpZE92ZXJs
YXlGb3JOb2RlKG5vZGUpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vIGdyaWQg
b3ZlcmxheSBleGlzdHMgZm9yIHRoZSBub2RlLCBzbyBjYW5ub3QgY2xlYXIuIik7CisgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm8gZ3JpZCBvdmVybGF5IGV4aXN0cyBmb3IgdGhlIG5v
ZGUsIHNvIGNhbm5vdCBjbGVhci4iX3MpOwogCiAgICAgdXBkYXRlKCk7CiAKQEAgLTY1Miw3ICs2
NTIsNyBAQCBib29sIEluc3BlY3Rvck92ZXJsYXk6OnJlbW92ZUZsZXhPdmVybGF5Rm9yTm9kZShO
b2RlJiBub2RlKQogRXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JPdmVybGF5OjpzZXRGbGV4
T3ZlcmxheUZvck5vZGUoTm9kZSYgbm9kZSwgY29uc3QgSW5zcGVjdG9yT3ZlcmxheTo6RmxleDo6
Q29uZmlnJiBmbGV4T3ZlcmxheUNvbmZpZykKIHsKICAgICBpZiAoIWlzPFJlbmRlckZsZXhpYmxl
Qm94Pihub2RlLnJlbmRlcmVyKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5v
ZGUgZG9lcyBub3QgaW5pdGlhdGUgYSBmbGV4IGNvbnRleHQiKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKCJOb2RlIGRvZXMgbm90IGluaXRpYXRlIGEgZmxleCBjb250ZXh0Il9zKTsK
IAogICAgIHJlbW92ZUZsZXhPdmVybGF5Rm9yTm9kZShub2RlKTsKIApAQCAtNjY2LDcgKzY2Niw3
IEBAIEVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yT3ZlcmxheTo6c2V0RmxleE92ZXJsYXlG
b3JOb2RlKE5vZGUmIG5vZGUsIGNvbnN0IEluCiBFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
ck92ZXJsYXk6OmNsZWFyRmxleE92ZXJsYXlGb3JOb2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgaWYg
KCFyZW1vdmVGbGV4T3ZlcmxheUZvck5vZGUobm9kZSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCgiTm8gZmxleCBvdmVybGF5IGV4aXN0cyBmb3IgdGhlIG5vZGUsIHNvIGNhbm5vdCBj
bGVhci4iKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJObyBmbGV4IG92ZXJsYXkg
ZXhpc3RzIGZvciB0aGUgbm9kZSwgc28gY2Fubm90IGNsZWFyLiJfcyk7CiAKICAgICB1cGRhdGUo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwCmluZGV4IDBhMGRjMTRiOTEyNTAyMmIzYjRiYTYwNWQ2NzgwZTU2MDA0NzBlNWIuLjc3MGFk
YTRjZGE3ZGE5YTE3OGY5OThiOWFmOWExNzcxOWI3MmNjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTU1NCw4ICs1NTQsOCBA
QCBSZWY8UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpidWlsZE9iamVj
dEZvclN0eWxlKCkgY29uc3QKICAgICBpZiAoYXV0byBzdHlsZUlkID0gbV9zdHlsZUlkLmFzUHJv
dG9jb2xWYWx1ZTxQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZUlkPigpKQogICAgICAgICByZXN1bHQt
PnNldFN0eWxlSWQoc3R5bGVJZC5yZWxlYXNlTm9uTnVsbCgpKTsKIAotICAgIHJlc3VsdC0+c2V0
V2lkdGgobV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZSgid2lkdGgiKSk7Ci0gICAgcmVzdWx0LT5z
ZXRIZWlnaHQobV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZSgiaGVpZ2h0IikpOworICAgIHJlc3Vs
dC0+c2V0V2lkdGgobV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZSgid2lkdGgiX3MpKTsKKyAgICBy
ZXN1bHQtPnNldEhlaWdodChtX3N0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKCJoZWlnaHQiX3MpKTsK
IAogICAgIGlmIChhdXRvIHNvdXJjZURhdGEgPSBleHRyYWN0U291cmNlRGF0YSgpKSB7CiAgICAg
ICAgIGlmIChhdXRvIHJhbmdlID0gYnVpbGRTb3VyY2VSYW5nZU9iamVjdChzb3VyY2VEYXRhLT5y
dWxlQm9keVJhbmdlLCBtX3BhcmVudFN0eWxlU2hlZXQtPmxpbmVFbmRpbmdzKCkpKQpAQCAtNjg2
LDcgKzY4Niw3IEBAIFJlZjxQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6
OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdAogCiAgICAgICAgIC8vIERlZmF1bHQgInByaW9y
aXR5IiA9PSAiIi4KICAgICAgICAgaWYgKHByb3BlcnR5RW50cnkuaW1wb3J0YW50KQotICAgICAg
ICAgICAgcHJvcGVydHktPnNldFByaW9yaXR5KCJpbXBvcnRhbnQiKTsKKyAgICAgICAgICAgIHBy
b3BlcnR5LT5zZXRQcmlvcml0eSgiaW1wb3J0YW50Il9zKTsKIAogICAgICAgICBpZiAoaXQtPmhh
c1NvdXJjZSkgewogICAgICAgICAgICAgLy8gVGhlIHByb3BlcnR5IHJhbmdlIGlzIHJlbGF0aXZl
IHRvIHRoZSBzdHlsZSBib2R5IHN0YXJ0LgpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgc3RhdGljIFJl
ZjxQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4gYnVpbGRPYmplY3RGb3JTZWxlY3RvckhlbHBl
cihjb25zdCBTdHJpbmcKIAogc3RhdGljIFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpDU1M6
OkNTU1NlbGVjdG9yPj4gc2VsZWN0b3JzRnJvbVNvdXJjZShjb25zdCBDU1NSdWxlU291cmNlRGF0
YSogc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBzaGVldFRleHQsIGNvbnN0IFZlY3Rvcjxjb25z
dCBDU1NTZWxlY3Rvcio+IHNlbGVjdG9ycykKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4gY29tbWVudCgiL1xcKlteXSo/XFwqLyIsIEpT
Qzo6WWFycjo6VGV4dENhc2VTZW5zaXRpdmUsIEpTQzo6WWFycjo6TXVsdGlsaW5lRW5hYmxlZCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24+
IGNvbW1lbnQoIi9cXCpbXl0qP1xcKi8iX3MsIEpTQzo6WWFycjo6VGV4dENhc2VTZW5zaXRpdmUs
IEpTQzo6WWFycjo6TXVsdGlsaW5lRW5hYmxlZCk7CiAKICAgICBhdXRvIHJlc3VsdCA9IEpTT046
OkFycmF5T2Y8UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+OjpjcmVhdGUoKTsKICAgICB1bnNp
Z25lZCBzZWxlY3RvckluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5jcHAKaW5kZXggMGJiY2M1
MWE5Mzc0ODk4ODU1ZWE5MmY4YjNjYTdiMDUxMTU5NDdjNi4uYTJjMWI5MjQwOTYxZmVhZTMyMTM5
NjU5YjkzZTZhYmNkYjFjZjljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5jcHAKQEAgLTMzMyw3ICsz
MzMsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4+IEluc3BlY3RvckFuaW1hdGlvbgogCiAgICAgYXV0byBvYmplY3QgPSBpbmpl
Y3RlZFNjcmlwdC53cmFwT2JqZWN0KHZhbHVlLCBvYmplY3RHcm91cCk7CiAgICAgaWYgKCFvYmpl
Y3QpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IHVuYWJs
ZSB0byBjYXN0IEFuaW1hdGlvbiIpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIklu
dGVybmFsIGVycm9yOiB1bmFibGUgdG8gY2FzdCBBbmltYXRpb24iX3MpOwogCiAgICAgcmV0dXJu
IG9iamVjdC5yZWxlYXNlTm9uTnVsbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAxNTkxMjAyNmQyYzE1
MWY0MTk0OTQ0YTlmMGZhZGExODk4MDRmZmUzLi4yZWI5YjczY2JlZTdiZDdmMDQ2MGY0MzRmZjZh
ZmJlNTBhODFlMjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNjA1LDcgKzYwNSw3IEBAIFByb3RvY29sOjpF
cnJvclN0cmluZ09yPFJlZjxQcm90b2NvbDo6Q1NTOjpGb250Pj4gSW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldEZvbnREYXRhCiAgICAgCiAgICAgYXV0byogY29tcHV0ZWRTdHlsZSA9IG5vZGUtPmNvbXB1
dGVkU3R5bGUoKTsKICAgICBpZiAoIWNvbXB1dGVkU3R5bGUpCi0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCgiTm8gY29tcHV0ZWQgc3R5bGUgZm9yIG5vZGUuIik7CisgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZCgiTm8gY29tcHV0ZWQgc3R5bGUgZm9yIG5vZGUuIl9zKTsKICAgICAK
ICAgICByZXR1cm4gYnVpbGRPYmplY3RGb3JGb250KGNvbXB1dGVkU3R5bGUtPmZvbnRDYXNjYWRl
KCkucHJpbWFyeUZvbnQoKSk7CiB9CkBAIC02NjUsNyArNjY1LDcgQEAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8UmVmPFByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5Pj4gSW5zcGVjdG9y
Q1NTQWdlbnQKIAogICAgIGF1dG8gc3R5bGVTaGVldCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1
aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgpOwogICAgIGlmICghc3R5bGVTaGVldCkKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRlcm5hbCBlcnJvcjogbWlzc2luZyBzdHlsZSBzaGVl
dCIpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludGVybmFsIGVycm9yOiBtaXNz
aW5nIHN0eWxlIHNoZWV0Il9zKTsKIAogICAgIHJldHVybiBzdHlsZVNoZWV0LnJlbGVhc2VOb25O
dWxsKCk7CiB9CkBAIC03NDcsNyArNzQ3LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVm
PFByb3RvY29sOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVMKIAog
ICAgIGF1dG8gcnVsZSA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yUnVsZShp
bnNwZWN0b3JTdHlsZVNoZWV0LT5ydWxlRm9ySWQoY29tcG91bmRJZCkpOwogICAgIGlmICghcnVs
ZSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRlcm5hbCBlcnJvcjogbWlzc2lu
ZyBzdHlsZSBzaGVldCIpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludGVybmFs
IGVycm9yOiBtaXNzaW5nIHN0eWxlIHNoZWV0Il9zKTsKIAogICAgIHJldHVybiBydWxlLnJlbGVh
c2VOb25OdWxsKCk7CiB9CkBAIC04MzYsNyArODM2LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8UmVmPFByb3RvY29sOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVs
ZSgKIAogICAgIGF1dG8gcnVsZSA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9y
UnVsZShpbnNwZWN0b3JTdHlsZVNoZWV0LT5ydWxlRm9ySWQocmF3QWN0aW9uLm5ld1J1bGVJZCgp
KSk7CiAgICAgaWYgKCFydWxlKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludGVy
bmFsIGVycm9yOiBtaXNzaW5nIHN0eWxlIHNoZWV0Iik7CisgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IG1pc3Npbmcgc3R5bGUgc2hlZXQiX3MpOwogCiAgICAg
cmV0dXJuIHJ1bGUucmVsZWFzZU5vbk51bGwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggMWMx
NjY4ZDk5YzdhZGFjYjBlMGYwYjUwOGMyMWVjZmU2MTE5NzA0Yi4uZjVkMDAyOWQxZDBlOWYyOTYw
OTNjMzkwN2Y2NjU3MjYxMmQ2NzE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTI0Miw3ICsyNDIs
NyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4+IEluc3BlY3RvckNhbnZhc0FnZQogCiAgICAgYXV0byByZXN1bHQgPSBpbmplY3Rl
ZFNjcmlwdC53cmFwT2JqZWN0KHZhbHVlLCBvYmplY3RHcm91cCk7CiAgICAgaWYgKCFyZXN1bHQp
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IHVuYWJsZSB0
byBjYXN0IENvbnRleHQiKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRlcm5h
bCBlcnJvcjogdW5hYmxlIHRvIGNhc3QgQ29udGV4dCJfcyk7CiAKICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2VOb25OdWxsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDYwOGYyZWI2NWY0MGU2YzE5Y2Fj
M2YxZGYwZTM1YzY4OWFiMWYxMDIuLmYwNDY2ODgwZTg4YmIwMTNlNDE4MTc1YTA3YTA1ODIxZmZk
YmVmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCkBAIC05NTQsNyArOTU0LDcgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8UmVmPEpTT046OkFycmF5T2Y8U3RyaW5nPj4+IEluc3BlY3RvckRPTUFnZW50OjpnZXRT
dXBwb3IKIHsKICAgICBhdXRvIGV2ZW50TmFtZXMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNy
ZWF0ZSgpOwogCi0jZGVmaW5lIERPTV9FVkVOVF9OQU1FU19BREQobmFtZSkgZXZlbnROYW1lcy0+
YWRkSXRlbSgjbmFtZSk7CisjZGVmaW5lIERPTV9FVkVOVF9OQU1FU19BREQobmFtZSkgZXZlbnRO
YW1lcy0+YWRkSXRlbSgjbmFtZSIiX3MpOwogICAgIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSChE
T01fRVZFTlRfTkFNRVNfQUREKQogI3VuZGVmIERPTV9FVkVOVF9OQU1FU19BREQKIApAQCAtMTUy
OSw3ICsxNTI5LDcgQEAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJ
bnNwZWN0b3JET01BZ2VudDo6c2hvd0dyaWRPdmVybGF5KEluc3AKIAogICAgIGF1dG8gcGFyc2Vk
Q29sb3IgPSBwYXJzZUNvbG9yKFdURk1vdmUoZ3JpZENvbG9yKSk7CiAgICAgaWYgKCFwYXJzZWRD
b2xvcikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnZhbGlkIGNvbG9yIGNvdWxk
IG5vdCBiZSBwYXJzZWQuIik7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW52YWxp
ZCBjb2xvciBjb3VsZCBub3QgYmUgcGFyc2VkLiJfcyk7CiAKICAgICBJbnNwZWN0b3JPdmVybGF5
OjpHcmlkOjpDb25maWcgY29uZmlnOwogICAgIGNvbmZpZy5ncmlkQ29sb3IgPSAqcGFyc2VkQ29s
b3I7CkBAIC0xNTY5LDcgKzE1NjksNyBAQCBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpzaG93RmxleE92ZXJsYXkoSW5zcAogCiAgICAg
YXV0byBwYXJzZWRDb2xvciA9IHBhcnNlQ29sb3IoV1RGTW92ZShmbGV4Q29sb3IpKTsKICAgICBp
ZiAoIXBhcnNlZENvbG9yKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludmFsaWQg
Y29sb3IgY291bGQgbm90IGJlIHBhcnNlZC4iKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKCJJbnZhbGlkIGNvbG9yIGNvdWxkIG5vdCBiZSBwYXJzZWQuIl9zKTsKIAogICAgIEluc3Bl
Y3Rvck92ZXJsYXk6OkZsZXg6OkNvbmZpZyBjb25maWc7CiAgICAgY29uZmlnLmZsZXhDb2xvciA9
ICpwYXJzZWRDb2xvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDgwMjZlMmNlZDBi
MmQyMWIyMTNlNGRiNDllODUxM2RkNDMzMTQ5MzUuLjVhMDIwNzVlMWZhMDM3ZWRhODFjMjdhMzJm
MDliMDVkZGQ3MjE0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMTcyLDcgKzE3
Miw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OnNldEV2ZW50QnJlYWtwb2ludChQcm90CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb3Qgc3VwcG9ydGVkIik7Cisg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb3Qgc3VwcG9ydGVkIl9zKTsKIH0KIAogUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3Zl
RXZlbnRCcmVha3BvaW50KFByb3RvY29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlw
ZSBicmVha3BvaW50VHlwZSwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpCkBAIC0yMTUsNyArMjE1
LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6cmVtb3ZlRXZlbnRCcmVha3BvaW50KFAKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQiKTsKKyAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQiX3MpOwogfQogCiB2b2lkIElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBFdmVudCYgZXZlbnQsIGNvbnN0IFJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcikKQEAgLTQxMCw4ICs0
MTAsOCBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmJyZWFrT25VUkxJZk5lZWRl
ZChjb25zdCBTdHJpbmcmIHVybCwgVVJMQnJlYWtwbwogICAgIH0KIAogICAgIFJlZjxKU09OOjpP
YmplY3Q+IGV2ZW50RGF0YSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZXZlbnREYXRh
LT5zZXRTdHJpbmcoImJyZWFrcG9pbnRVUkwiLCBicmVha3BvaW50VVJMKTsKLSAgICBldmVudERh
dGEtPnNldFN0cmluZygidXJsIiwgdXJsKTsKKyAgICBldmVudERhdGEtPnNldFN0cmluZygiYnJl
YWtwb2ludFVSTCJfcywgYnJlYWtwb2ludFVSTCk7CisgICAgZXZlbnREYXRhLT5zZXRTdHJpbmco
InVybCJfcywgdXJsKTsKICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShicmVha1Jl
YXNvbiwgV1RGTW92ZShldmVudERhdGEpLCBXVEZNb3ZlKGJyZWFrcG9pbnQpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDEzZmMwYjgxZWY4NzZiNTllOTE4ZjE5ZGQ5ODY5OWM0
NWZmNjMwMjAuLmM0NmY5YWJhNjIyOGY2YzcwNjhiYTUwYzczYzMyMzY4ZTZjMTljMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTE5NywxMyArMTk3LDEzIEBAIFJlZlB0cjxTdG9yYWdl
QXJlYT4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEoUHJvdG9jb2w6
OkVycm9yU3RyCiB7CiAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IHN0b3JhZ2VJZC0+Z2V0U3Ry
aW5nKFByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ6OnNlY3VyaXR5T3JpZ2luS2V5KTsK
ICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Np
bmcgc2VjdXJpdHlPcmlnaW4gaW4gZ2l2ZW4gc3RvcmFnZUlkIjsKKyAgICAgICAgZXJyb3JTdHJp
bmcgPSAiTWlzc2luZyBzZWN1cml0eU9yaWdpbiBpbiBnaXZlbiBzdG9yYWdlSWQiX3M7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGF1dG8gaXNMb2NhbFN0b3JhZ2UgPSBz
dG9yYWdlSWQtPmdldEJvb2xlYW4oUHJvdG9jb2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6aXNM
b2NhbFN0b3JhZ2VLZXkpOwogICAgIGlmICghaXNMb2NhbFN0b3JhZ2UpIHsKLSAgICAgICAgZXJy
b3JTdHJpbmcgPSAiTWlzc2luZyBpc0xvY2FsU3RvcmFnZSBpbiBnaXZlbiBzdG9yYWdlSWQiOwor
ICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIGlzTG9jYWxTdG9yYWdlIGluIGdpdmVuIHN0
b3JhZ2VJZCJfczsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmNwcAppbmRleCBmMGYzYzc2ZDg0ZjI1NTc4OGEyZWI1OWYwNTQyMGI5ZDlhMjcyMTYxLi5h
Y2FmMTZjZDk0NWYyOGFkZTQzNTdkY2RmMGNmMzJkZTBmODYzNDcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5jcHAKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmV4
ZWN1dGVTUUwoY29uc3QgUHJvdG9jb2w6OkRhdGFiYXNlOjpEYXRhYmFzZUlkJiBkYQogCiAgICAg
YXV0byogZGF0YWJhc2UgPSBkYXRhYmFzZUZvcklkKGRhdGFiYXNlSWQpOwogICAgIGlmICghZGF0
YWJhc2UpIHsKLSAgICAgICAgcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiTWlzc2luZyBk
YXRhYmFzZSBmb3IgZ2l2ZW4gZGF0YWJhc2VJZCIpOworICAgICAgICByZXF1ZXN0Q2FsbGJhY2st
PnNlbmRGYWlsdXJlKCJNaXNzaW5nIGRhdGFiYXNlIGZvciBnaXZlbiBkYXRhYmFzZUlkIl9zKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA1ZDUx
MmU3OGUyMDAzMjg4ZDAxNTMxMzY4N2U2ODM4OTkwOGI3M2U3Li44NzY5OTIwNDI3OTA4ZjRjMzRh
NjBjZGFmMTU5OGNjYzJlYjgzMzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtMTAzLDcg
KzEwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBFdmVudCYgZXZlbnQpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudHlw
ZSgpICE9IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQpIHsKLSAgICAgICAgICAgIG1fZXhlY3V0
YWJsZVdpdGhEYXRhYmFzZS0+cmVxdWVzdENhbGxiYWNrKCkuc2VuZEZhaWx1cmUoIlVuZXhwZWN0
ZWQgZXZlbnQgdHlwZS4iKTsKKyAgICAgICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+
cmVxdWVzdENhbGxiYWNrKCkuc2VuZEZhaWx1cmUoIlVuZXhwZWN0ZWQgZXZlbnQgdHlwZS4iX3Mp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExMSwxMyArMTExLDEzIEBA
IHB1YmxpYzoKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IHJlcXVlc3QucmVzdWx0KCk7CiAgICAg
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIG1fZXhlY3V0YWJs
ZVdpdGhEYXRhYmFzZS0+cmVxdWVzdENhbGxiYWNrKCkuc2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBn
ZXQgcmVzdWx0IGluIGNhbGxiYWNrLiIpOworICAgICAgICAgICAgbV9leGVjdXRhYmxlV2l0aERh
dGFiYXNlLT5yZXF1ZXN0Q2FsbGJhY2soKS5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCByZXN1
bHQgaW4gY2FsbGJhY2suIl9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIGF1dG8gcmVzdWx0VmFsdWUgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiAg
ICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8SURCRGF0YWJhc2U+Pihy
ZXN1bHRWYWx1ZSkpIHsKLSAgICAgICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+cmVx
dWVzdENhbGxiYWNrKCkuc2VuZEZhaWx1cmUoIlVuZXhwZWN0ZWQgcmVzdWx0IHR5cGUuIik7Cisg
ICAgICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2UtPnJlcXVlc3RDYWxsYmFjaygpLnNl
bmRGYWlsdXJlKCJVbmV4cGVjdGVkIHJlc3VsdCB0eXBlLiJfcyk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtMTM2LDEzICsxMzYsMTMgQEAgcHJpdmF0ZToKIHZvaWQgRXhl
Y3V0YWJsZVdpdGhEYXRhYmFzZTo6c3RhcnQoSURCRmFjdG9yeSogaWRiRmFjdG9yeSwgU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKICAgICBpZiAoIWNvbnRl
eHQoKSkgewotICAgICAgICByZXF1ZXN0Q2FsbGJhY2soKS5zZW5kRmFpbHVyZSgiQ291bGQgbm90
IG9wZW4gZGF0YWJhc2UuIik7CisgICAgICAgIHJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJl
KCJDb3VsZCBub3Qgb3BlbiBkYXRhYmFzZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgYXV0byByZXN1bHQgPSBpZGJGYWN0b3J5LT5vcGVuKCpjb250ZXh0KCksIGRhdGFiYXNl
TmFtZSwgc3RkOjpudWxsb3B0KTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0g
ICAgICAgIHJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qgb3BlbiBkYXRh
YmFzZS4iKTsKKyAgICAgICAgcmVxdWVzdENhbGxiYWNrKCkuc2VuZEZhaWx1cmUoIkNvdWxkIG5v
dCBvcGVuIGRhdGFiYXNlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM0OSw3
ICszNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBFdmVudCYgZXZlbnQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBp
ZiAoZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQpIHsKLSAgICAgICAg
ICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiVW5leHBlY3RlZCBldmVudCB0eXBl
LiIpOworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJVbmV4cGVj
dGVkIGV2ZW50IHR5cGUuIl9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC0zNTcsNyArMzU3LDcgQEAgcHVibGljOgogCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gcmVxdWVz
dC5yZXN1bHQoKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAg
ICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0IHJlc3Vs
dCBpbiBjYWxsYmFjay4iKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFp
bHVyZSgiQ291bGQgbm90IGdldCByZXN1bHQgaW4gY2FsbGJhY2suIl9zKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTM3MSw3ICszNzEsNyBAQCBwdWJsaWM6
CiAKICAgICAgICAgaWYgKG1fc2tpcENvdW50KSB7CiAgICAgICAgICAgICBpZiAoY3Vyc29yLT5h
ZHZhbmNlKG1fc2tpcENvdW50KS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBtX3Jl
cXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBhZHZhbmNlIGN1cnNvci4iKTsK
KyAgICAgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5v
dCBhZHZhbmNlIGN1cnNvci4iX3MpOwogICAgICAgICAgICAgbV9za2lwQ291bnQgPSAwOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zODMsNyArMzgzLDcgQEAgcHVibGljOgog
CiAgICAgICAgIC8vIENvbnRpbnVlIGN1cnNvciBiZWZvcmUgbWFraW5nIGluamVjdGVkIHNjcmlw
dCBjYWxscywgb3RoZXJ3aXNlIHRyYW5zYWN0aW9uIG1pZ2h0IGJlIGZpbmlzaGVkLgogICAgICAg
ICBpZiAoY3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKG51bGxwdHIpLmhhc0V4Y2VwdGlvbigpKSB7
Ci0gICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBj
b250aW51ZSBjdXJzb3IuIik7CisgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZh
aWx1cmUoIkNvdWxkIG5vdCBjb250aW51ZSBjdXJzb3IuIl9zKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC00NDksMTMgKzQ0OSwxMyBAQCBwdWJsaWM6CiAKICAgICAgICAg
YXV0byBpZGJUcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uRm9yRGF0YWJhc2UoJmRhdGFiYXNlLCBt
X29iamVjdFN0b3JlTmFtZSk7CiAgICAgICAgIGlmICghaWRiVHJhbnNhY3Rpb24pIHsKLSAgICAg
ICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCB0cmFu
c2FjdGlvbiIpOworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJD
b3VsZCBub3QgZ2V0IHRyYW5zYWN0aW9uIl9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCiAgICAgICAgIGF1dG8gaWRiT2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZUZvclRyYW5z
YWN0aW9uKGlkYlRyYW5zYWN0aW9uLmdldCgpLCBtX29iamVjdFN0b3JlTmFtZSk7CiAgICAgICAg
IGlmICghaWRiT2JqZWN0U3RvcmUpIHsKLSAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5z
ZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCBvYmplY3Qgc3RvcmUiKTsKKyAgICAgICAgICAgIG1f
cmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCBvYmplY3Qgc3RvcmUi
X3MpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQ2NCw3ICs0NjQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGlmICghbV9pbmRleE5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBhdXRvIGlkYkluZGV4ID0gaW5kZXhGb3JPYmplY3RTdG9yZShpZGJPYmplY3RTdG9yZS5n
ZXQoKSwgbV9pbmRleE5hbWUpOwogICAgICAgICAgICAgaWYgKCFpZGJJbmRleCkgewotICAgICAg
ICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCBp
bmRleCIpOworICAgICAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgi
Q291bGQgbm90IGdldCBpbmRleCJfcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogCkBAIC00NzgsNyArNDc4LDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKCFpZGJSZXF1ZXN0KSB7Ci0gICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2Vu
ZEZhaWx1cmUoIkNvdWxkIG5vdCBvcGVuIGN1cnNvciB0byBwb3B1bGF0ZSBkYXRhYmFzZSBkYXRh
Iik7CisgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5v
dCBvcGVuIGN1cnNvciB0byBwb3B1bGF0ZSBkYXRhYmFzZSBkYXRhIl9zKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC02NTMsNyArNjUzLDcgQEAgcHVibGljOgogICAgICAg
ICBpZiAoIW1fcmVxdWVzdENhbGxiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBpZiAoZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50
KSB7Ci0gICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIlVuZXhwZWN0
ZWQgZXZlbnQgdHlwZS4iKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFp
bHVyZSgiVW5leHBlY3RlZCBldmVudCB0eXBlLiJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtNjkwLDEzICs2OTAsMTMgQEAgcHVibGljOgogCiAgICAgICAgIGF1dG8g
aWRiVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbkZvckRhdGFiYXNlKCZkYXRhYmFzZSwgbV9vYmpl
Y3RTdG9yZU5hbWUsIElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZHdyaXRlKTsKICAgICAgICAgaWYg
KCFpZGJUcmFuc2FjdGlvbikgewotICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRG
YWlsdXJlKCJDb3VsZCBub3QgZ2V0IHRyYW5zYWN0aW9uIik7CisgICAgICAgICAgICBtX3JlcXVl
c3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgdHJhbnNhY3Rpb24iX3MpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBpZGJPYmplY3RT
dG9yZSA9IG9iamVjdFN0b3JlRm9yVHJhbnNhY3Rpb24oaWRiVHJhbnNhY3Rpb24uZ2V0KCksIG1f
b2JqZWN0U3RvcmVOYW1lKTsKICAgICAgICAgaWYgKCFpZGJPYmplY3RTdG9yZSkgewotICAgICAg
ICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0IG9iamVj
dCBzdG9yZSIpOworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJD
b3VsZCBub3QgZ2V0IG9iamVjdCBzdG9yZSJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAppbmRleCA0YTZmNjMyYjZmOTcxMTQyYzQwMGM0
ZGI4MDUzYjRkMGYxOTQ2ODU5Li4zNDRmNmZlNTAwZWQ1ZWNjYjg1ZDZiN2Q0NjU1NzE2MDIzOGMz
NWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtMTkyLDkgKzE5Miw5IEBAIFJlZjxQcm90
b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2Jq
ZWN0Rm9yTGF5ZXIoUmVuCiAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRJc0dlbmVyYXRlZENvbnRl
bnQodHJ1ZSk7CiAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9FbGVtZW50SWQoYmluZFBz
ZXVkb0VsZW1lbnQoZG93bmNhc3Q8UHNldWRvRWxlbWVudD4ocmVuZGVyZXItPm5vZGUoKSkpKTsK
ICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc0JlZm9yZUNvbnRlbnQoKSkKLSAgICAgICAgICAgIGxh
eWVyT2JqZWN0LT5zZXRQc2V1ZG9FbGVtZW50KCJiZWZvcmUiKTsKKyAgICAgICAgICAgIGxheWVy
T2JqZWN0LT5zZXRQc2V1ZG9FbGVtZW50KCJiZWZvcmUiX3MpOwogICAgICAgICBlbHNlIGlmIChy
ZW5kZXJlci0+aXNBZnRlckNvbnRlbnQoKSkKLSAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQ
c2V1ZG9FbGVtZW50KCJhZnRlciIpOworICAgICAgICAgICAgbGF5ZXJPYmplY3QtPnNldFBzZXVk
b0VsZW1lbnQoImFmdGVyIl9zKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogUmVuZGVyVmlldyBp
cyBub3cgcmVhbGx5IGFub255bW91cyBidXQgZG9uJ3QgdGVsbCBhYm91dCBpdCB0byB0aGUgZnJv
bnRlbmQgYmVmb3JlIG1ha2luZyBzdXJlIGl0IGNhbiBoYW5kbGUgaXQuCkBAIC0yMDIsOSArMjAy
LDkgQEAgUmVmPFByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVB
Z2VudDo6YnVpbGRPYmplY3RGb3JMYXllcihSZW4KICAgICAgICAgbGF5ZXJPYmplY3QtPnNldElz
QW5vbnltb3VzKHRydWUpOwogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5k
ZXJlci0+c3R5bGUoKTsKICAgICAgICAgaWYgKHN0eWxlLnN0eWxlVHlwZSgpID09IFBzZXVkb0lk
OjpGaXJzdExldHRlcikKLSAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9FbGVtZW50
KCJmaXJzdC1sZXR0ZXIiKTsKKyAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9FbGVt
ZW50KCJmaXJzdC1sZXR0ZXIiX3MpOwogICAgICAgICBlbHNlIGlmIChzdHlsZS5zdHlsZVR5cGUo
KSA9PSBQc2V1ZG9JZDo6Rmlyc3RMaW5lKQotICAgICAgICAgICAgbGF5ZXJPYmplY3QtPnNldFBz
ZXVkb0VsZW1lbnQoImZpcnN0LWxpbmUiKTsKKyAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQ
c2V1ZG9FbGVtZW50KCJmaXJzdC1saW5lIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbGF5ZXJP
YmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNmU1YTVmYzg5Y2NlZjA1YjczY2VkYTI1N2Q2
YzU5Y2IwZTgyODYxYy4uZDgxMjk0YzQ1YWNkYjA4MWQxZDFmYTI0ZGNlZDI4OWY5ZWM3NjZlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTAzMiw3ICsxMDMyLDcgQEAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiBJbnNwZWN0b3JO
ZXR3b3JrQWcKIAogICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTY4NDc1PiBX
ZWIgSW5zcGVjdG9yOiBDb3JyZWN0bHkgZGlzcGxheSBpZnJhbWUncyBhbmQgd29ya2VyJ3MgV2Vi
U29ja2V0cwogICAgIGlmICghaXM8RG9jdW1lbnQ+KHdlYlNvY2tldC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb3Qgc3VwcG9ydGVk
Iik7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCJfcyk7CiAK
ICAgICBhdXRvKiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUo
KTsKQEAgLTEwNDUsNyArMTA0NSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4gSW5zcGVjdG9yTmV0d29ya0FnCiAKICAgICBh
dXRvIG9iamVjdCA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3Qod2ViU29ja2V0QXNTY3JpcHRW
YWx1ZShnbG9iYWxPYmplY3QsIHdlYlNvY2tldCksIG9iamVjdEdyb3VwKTsKICAgICBpZiAoIW9i
amVjdCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRlcm5hbCBlcnJvcjogdW5h
YmxlIHRvIGNhc3QgV2ViU29ja2V0Iik7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgi
SW50ZXJuYWwgZXJyb3I6IHVuYWJsZSB0byBjYXN0IFdlYlNvY2tldCJfcyk7CiAKICAgICByZXR1
cm4gb2JqZWN0LnJlbGVhc2VOb25OdWxsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggZDFiMjY5Zjhm
YTdkNjVhYTQ4NDIwNWZkNTAyOGQ4OTQ1N2UzYWYxNy4uYWYzNWUwYTk1ZWE4MTQ5YWE1NDkzMmIw
OWZhZGRiZWFiNTIwMDRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNTcwLDMxICs1NzAsMzEgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJy
b3JTdHJpbmcmIGVycm9yU3RyaW4KIAogICAgIGNvb2tpZS5uYW1lID0gY29va2llT2JqZWN0LT5n
ZXRTdHJpbmcoUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6bmFtZUtleSk7CiAgICAgaWYgKCFjb29r
aWUubmFtZSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkg
bmFtZSBpbiBnaXZlbiBjb29raWUiOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZh
bHVlIGZvciBrZXkgbmFtZSBpbiBnaXZlbiBjb29raWUiX3M7CiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgY29va2llLnZhbHVlID0gY29va2llT2JqZWN0LT5nZXRT
dHJpbmcoUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6dmFsdWVLZXkpOwogICAgIGlmICghY29va2ll
LnZhbHVlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSB2
YWx1ZSBpbiBnaXZlbiBjb29raWUiOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZh
bHVlIGZvciBrZXkgdmFsdWUgaW4gZ2l2ZW4gY29va2llIl9zOwogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIGNvb2tpZS5kb21haW4gPSBjb29raWVPYmplY3QtPmdl
dFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2llOjpkb21haW5LZXkpOwogICAgIGlmICghY29v
a2llLmRvbWFpbikgewotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBr
ZXkgZG9tYWluIGluIGdpdmVuIGNvb2tpZSI7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFs
aWQgdmFsdWUgZm9yIGtleSBkb21haW4gaW4gZ2l2ZW4gY29va2llIl9zOwogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGNvb2tpZS5wYXRoID0gY29va2llT2JqZWN0
LT5nZXRTdHJpbmcoUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6cGF0aEtleSk7CiAgICAgaWYgKCFj
b29raWUucGF0aCkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBr
ZXkgcGF0aCBpbiBnaXZlbiBjb29raWUiOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlk
IHZhbHVlIGZvciBrZXkgcGF0aCBpbiBnaXZlbiBjb29raWUiX3M7CiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0byBodHRwT25seSA9IGNvb2tpZU9iamVjdC0+
Z2V0Qm9vbGVhbihQcm90b2NvbDo6UGFnZTo6Q29va2llOjpodHRwT25seUtleSk7CiAgICAgaWYg
KCFodHRwT25seSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBr
ZXkgaHR0cE9ubHkgaW4gZ2l2ZW4gY29va2llIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52
YWxpZCB2YWx1ZSBmb3Iga2V5IGh0dHBPbmx5IGluIGdpdmVuIGNvb2tpZSJfczsKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKQEAgLTYwMiw3ICs2MDIsNyBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0
cmluZyYgZXJyb3JTdHJpbgogCiAgICAgYXV0byBzZWN1cmUgPSBjb29raWVPYmplY3QtPmdldEJv
b2xlYW4oUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6c2VjdXJlS2V5KTsKICAgICBpZiAoIXNlY3Vy
ZSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgc2VjdXJl
IGluIGdpdmVuIGNvb2tpZSI7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUg
Zm9yIGtleSBzZWN1cmUgaW4gZ2l2ZW4gY29va2llIl9zOwogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIApAQCAtNjExLDcgKzYxMSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PENvb2tpZT4gcGFyc2VDb29raWVPYmplY3QoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0
cmluCiAgICAgYXV0byBzZXNzaW9uID0gY29va2llT2JqZWN0LT5nZXRCb29sZWFuKFByb3RvY29s
OjpQYWdlOjpDb29raWU6OnNlc3Npb25LZXkpOwogICAgIGNvb2tpZS5leHBpcmVzID0gY29va2ll
T2JqZWN0LT5nZXREb3VibGUoUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6ZXhwaXJlc0tleSk7CiAg
ICAgaWYgKCFzZXNzaW9uICYmICFjb29raWUuZXhwaXJlcykgewotICAgICAgICBlcnJvclN0cmlu
ZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgZXhwaXJlcyBpbiBnaXZlbiBjb29raWUiOworICAg
ICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgZXhwaXJlcyBpbiBnaXZl
biBjb29raWUiX3M7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCkBAIC02
MTksMTMgKzYxOSwxMyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2ll
T2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogCiAgICAgYXV0byBzYW1l
U2l0ZVN0cmluZyA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29r
aWU6OnNhbWVTaXRlS2V5KTsKICAgICBpZiAoIXNhbWVTaXRlU3RyaW5nKSB7Ci0gICAgICAgIGVy
cm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBzYW1lU2l0ZSBpbiBnaXZlbiBjb29r
aWUiOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgc2FtZVNp
dGUgaW4gZ2l2ZW4gY29va2llIl9zOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIGF1dG8gc2FtZVNpdGUgPSBQcm90b2NvbDo6SGVscGVyczo6cGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPFByb3RvY29sOjpQYWdlOjpDb29raWVTYW1lU2l0ZVBvbGljeT4oc2FtZVNp
dGVTdHJpbmcpOwogICAgIGlmICghc2FtZVNpdGUpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAi
SW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNhbWVTaXRlIGluIGdpdmVuIGNvb2tpZSI7CisgICAgICAg
IGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBzYW1lU2l0ZSBpbiBnaXZlbiBj
b29raWUiX3M7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01E
ZWJ1Z2dlckFnZW50LmNwcAppbmRleCBkYWQ1MDQxODg2NGU5NWVjMjEzMzAyMDNlNmQzOWZhY2Zh
YjA1ZTFjLi42MjYwZWE3ODZjMTg4NTVhODg0OTZiYTI4OWE2Y2VkN2MwOWEyYzNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
RE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBQYWdlRE9NRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludChQcm90
b2NvbDo6RAogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCIpOworICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZCgiTm90IHN1cHBvcnRlZCJfcyk7CiB9CiAKIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IFBhZ2VET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KFByb3RvY29sOjpET006
Ok5vZGVJZCBub2RlSWQsIFByb3RvY29sOjpET01EZWJ1Z2dlcjo6RE9NQnJlYWtwb2ludFR5cGUg
dHlwZSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBQ
YWdlRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludChQcm90b2NvbAogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgi
Tm90IHN1cHBvcnRlZCIpOworICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRl
ZCJfcyk7CiB9CiAKIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRl
ZCgpCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbElu
c2VydERPTU5vZGUoTm9kZSYgcGFyZW50KQogICAgIEFTU0VSVChjbG9zZXN0QnJlYWtwb2ludE93
bmVyKTsKIAogICAgIGF1dG8gcGF1c2VEYXRhID0gYnVpbGRQYXVzZURhdGFGb3JET01CcmVha3Bv
aW50KFByb3RvY29sOjpET01EZWJ1Z2dlcjo6RE9NQnJlYWtwb2ludFR5cGU6OlN1YnRyZWVNb2Rp
ZmllZCwgKmNsb3Nlc3RCcmVha3BvaW50T3duZXIpOwotICAgIHBhdXNlRGF0YS0+c2V0Qm9vbGVh
bigiaW5zZXJ0aW9uIiwgdHJ1ZSk7CisgICAgcGF1c2VEYXRhLT5zZXRCb29sZWFuKCJpbnNlcnRp
b24iX3MsIHRydWUpOwogICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEzNDk5
PiBXZWIgSW5zcGVjdG9yOiBhbGxvdyBET00gbm9kZXMgdG8gYmUgaW5zdHJ1bWVudGVkIGF0IGFu
eSBwb2ludCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBtYWluIGRvY3VtZW50IGhhcyBhbHNv
IGJlZW4gaW5zdHJ1bWVudGVkCiAgICAgLy8gSW5jbHVkZSB0aGUgbmV3IGNoaWxkIG5vZGUgSUQg
c28gdGhlIGZyb250ZW5kIGNhbiBzaG93IHRoZSBub2RlIHRoYXQncyBhYm91dCB0byBiZSBpbnNl
cnRlZC4KICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGTW92ZShwYXVzZURhdGEpLCBX
VEZNb3ZlKGNsb3Nlc3RCcmVha3BvaW50KSk7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBQYWdl
RE9NRGVidWdnZXJBZ2VudDo6d2lsbFJlbW92ZURPTU5vZGUoTm9kZSYgbm9kZSkKICAgICBpZiAo
YXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50
KCkpIHsKICAgICAgICAgaWYgKCZub2RlICE9IGNsb3Nlc3RCcmVha3BvaW50T3duZXIpIHsKICAg
ICAgICAgICAgIGlmIChhdXRvIHRhcmdldE5vZGVJZCA9IGRvbUFnZW50LT5wdXNoTm9kZVRvRnJv
bnRlbmQoJm5vZGUpKQotICAgICAgICAgICAgICAgIHBhdXNlRGF0YS0+c2V0SW50ZWdlcigidGFy
Z2V0Tm9kZUlkIiwgdGFyZ2V0Tm9kZUlkKTsKKyAgICAgICAgICAgICAgICBwYXVzZURhdGEtPnNl
dEludGVnZXIoInRhcmdldE5vZGVJZCJfcywgdGFyZ2V0Tm9kZUlkKTsKICAgICAgICAgfQogICAg
IH0KICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGTW92ZShwYXVzZURhdGEpLCBXVEZN
b3ZlKGNsb3Nlc3RCcmVha3BvaW50KSk7CkBAIC0zNTAsMTAgKzM1MCwxMCBAQCBSZWY8SlNPTjo6
T2JqZWN0PiBQYWdlRE9NRGVidWdnZXJBZ2VudDo6YnVpbGRQYXVzZURhdGFGb3JET01CcmVha3Bv
aW50KFByb3RvY29sOgogICAgIEFTU0VSVChtX2RvbVN1YnRyZWVNb2RpZmllZEJyZWFrcG9pbnRz
LmNvbnRhaW5zKCZicmVha3BvaW50T3duZXIpIHx8IG1fZG9tQXR0cmlidXRlTW9kaWZpZWRCcmVh
a3BvaW50cy5jb250YWlucygmYnJlYWtwb2ludE93bmVyKSB8fCBtX2RvbU5vZGVSZW1vdmVkQnJl
YWtwb2ludHMuY29udGFpbnMoJmJyZWFrcG9pbnRPd25lcikpOwogCiAgICAgYXV0byBwYXVzZURh
dGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHBhdXNlRGF0YS0+c2V0U3RyaW5nKCJ0
eXBlIiwgUHJvdG9jb2w6OkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKGJyZWFrcG9pbnRU
eXBlKSk7CisgICAgcGF1c2VEYXRhLT5zZXRTdHJpbmcoInR5cGUiX3MsIFByb3RvY29sOjpIZWxw
ZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShicmVha3BvaW50VHlwZSkpOwogICAgIGlmIChhdXRv
KiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkg
ewogICAgICAgICBpZiAoYXV0byBicmVha3BvaW50T3duZXJOb2RlSWQgPSBkb21BZ2VudC0+cHVz
aE5vZGVUb0Zyb250ZW5kKCZicmVha3BvaW50T3duZXIpKQotICAgICAgICAgICAgcGF1c2VEYXRh
LT5zZXRJbnRlZ2VyKCJub2RlSWQiLCBicmVha3BvaW50T3duZXJOb2RlSWQpOworICAgICAgICAg
ICAgcGF1c2VEYXRhLT5zZXRJbnRlZ2VyKCJub2RlSWQiX3MsIGJyZWFrcG9pbnRPd25lck5vZGVJ
ZCk7CiAgICAgfQogICAgIHJldHVybiBwYXVzZURhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9W
ZXJpZmljYXRpb24uY3BwCmluZGV4IDUzMWQyNGM0M2VmYjE0YTI3ODY0ZmY1Zjk2MGUyMTA5OTBj
NWRjMmUuLmU2OWRkMTIwNTA2NDI2MTFkOWI1MmJmOTYwOWU3YThkODExNjljYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCkBAIC0xNjcsMTQgKzE2NywxNCBAQCBzdGF0
aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChU
ZXh0U3RyZWFtJiBzdHJlYW0sCiBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94
SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSwgY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgQm94JiBsYXlv
dXRCb3gpCiB7CiAgICAgYm9vbCBmaXJzdE1pc21hdGNoaW5nUmVjdCA9IHRydWU7Ci0gICAgYXV0
byBvdXRwdXRSZWN0ID0gWyZdIChjb25zdCBTdHJpbmcmIHByZWZpeCwgY29uc3QgTGF5b3V0UmVj
dCYgcmVuZGVyZXJSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXlvdXRSZWN0KSB7CisgICAgYXV0
byBvdXRwdXRSZWN0ID0gWyZdIChBU0NJSUxpdGVyYWwgcHJlZml4LCBjb25zdCBMYXlvdXRSZWN0
JiByZW5kZXJlclJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxheW91dFJlY3QpIHsKICAgICAgICAg
aWYgKGZpcnN0TWlzbWF0Y2hpbmdSZWN0KSB7Ci0gICAgICAgICAgICBzdHJlYW0gPDwgKHJlbmRl
cmVyLmVsZW1lbnQoKSA/IHJlbmRlcmVyLmVsZW1lbnQoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0
YSgpIDogIiIpIDw8ICIgIiA8PCByZW5kZXJlci5yZW5kZXJOYW1lKCkgPDwgIigiIDw8ICZyZW5k
ZXJlciA8PCAiKSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIjsKKyAgICAgICAgICAg
IHN0cmVhbSA8PCAocmVuZGVyZXIuZWxlbWVudCgpID8gcmVuZGVyZXIuZWxlbWVudCgpLT5ub2Rl
TmFtZSgpLnV0ZjgoKS5kYXRhKCkgOiAiIikgPDwgIiAiIDw8IHJlbmRlcmVyLnJlbmRlck5hbWUo
KS5jaGFyYWN0ZXJzKCkgPDwgIigiIDw8ICZyZW5kZXJlciA8PCAiKSBsYXlvdXRCb3goIiA8PCAm
bGF5b3V0Qm94IDw8ICIpIjsKICAgICAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOwogICAgICAg
ICAgICAgZmlyc3RNaXNtYXRjaGluZ1JlY3QgPSBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAg
IHN0cmVhbSAgPDwgcHJlZml4LnV0ZjgoKS5kYXRhKCkgPDwgIlx0cmVuZGVyZXItPigiIDw8IHJl
bmRlcmVyUmVjdC54KCkgPDwgIiwiIDw8IHJlbmRlcmVyUmVjdC55KCkgPDwgIikgKCIgPDwgcmVu
ZGVyZXJSZWN0LndpZHRoKCkgPDwgIngiIDw8IHJlbmRlcmVyUmVjdC5oZWlnaHQoKSA8PCAiKSIK
KyAgICAgICAgc3RyZWFtICA8PCBwcmVmaXguY2hhcmFjdGVycygpIDw8ICJcdHJlbmRlcmVyLT4o
IiA8PCByZW5kZXJlclJlY3QueCgpIDw8ICIsIiA8PCByZW5kZXJlclJlY3QueSgpIDw8ICIpICgi
IDw8IHJlbmRlcmVyUmVjdC53aWR0aCgpIDw8ICJ4IiA8PCByZW5kZXJlclJlY3QuaGVpZ2h0KCkg
PDwgIikiCiAgICAgICAgICAgICA8PCAiXHRsYXlvdXQtPigiIDw8IGxheW91dFJlY3QueCgpIDw8
ICIsIiA8PCBsYXlvdXRSZWN0LnkoKSA8PCAiKSAoIiA8PCBsYXlvdXRSZWN0LndpZHRoKCkgPDwg
IngiIDw8IGxheW91dFJlY3QuaGVpZ2h0KCkgPDwgIikiOyAKICAgICAgICAgc3RyZWFtLm5leHRM
aW5lKCk7CiAgICAgfTsKQEAgLTIzNywxOSArMjM3LDE5IEBAIHN0YXRpYyBib29sIG91dHB1dE1p
c21hdGNoaW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwg
Y29uCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmICghYXJlRXNzZW50
aWFsbHlFcXVhbChmcmFtZVJlY3QsIEJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGJveEdlb21l
dHJ5KSkpIHsKLSAgICAgICAgb3V0cHV0UmVjdCgiZnJhbWVCb3giLCByZW5kZXJlci5mcmFtZVJl
Y3QoKSwgQm94R2VvbWV0cnk6OmJvcmRlckJveFJlY3QoYm94R2VvbWV0cnkpKTsKKyAgICAgICAg
b3V0cHV0UmVjdCgiZnJhbWVCb3giX3MsIHJlbmRlcmVyLmZyYW1lUmVjdCgpLCBCb3hHZW9tZXRy
eTo6Ym9yZGVyQm94UmVjdChib3hHZW9tZXRyeSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKICAgICBpZiAoIWFyZUVzc2VudGlhbGx5RXF1YWwocmVuZGVyZXIuYm9yZGVyQm94UmVj
dCgpLCBib3hHZW9tZXRyeS5ib3JkZXJCb3goKSkpIHsKLSAgICAgICAgb3V0cHV0UmVjdCgiYm9y
ZGVyQm94IiwgcmVuZGVyZXIuYm9yZGVyQm94UmVjdCgpLCBib3hHZW9tZXRyeS5ib3JkZXJCb3go
KSk7CisgICAgICAgIG91dHB1dFJlY3QoImJvcmRlckJveCJfcywgcmVuZGVyZXIuYm9yZGVyQm94
UmVjdCgpLCBib3hHZW9tZXRyeS5ib3JkZXJCb3goKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAogICAgIC8vIFdoZW4gdGhlIHRhYmxlIHJvdyBib3JkZXIgb3ZlcmZsb3dzIHRoZSBy
b3csIHBhZGRpbmcgYm94IGJlY29tZXMgbmVnYXRpdmUgYW5kIGNvbnRlbnQgYm94IGlzIGluY29y
cmVjdC4KICAgICBhdXRvIHNob3VsZENoZWNrUGFkZGluZ0FuZENvbnRlbnRCb3ggPSAhaXM8UmVu
ZGVyVGFibGVSb3c+KHJlbmRlcmVyKSB8fCByZW5kZXJlci5wYWRkaW5nQm94UmVjdCgpLndpZHRo
KCkgPj0gMDsKICAgICBpZiAoc2hvdWxkQ2hlY2tQYWRkaW5nQW5kQ29udGVudEJveCAmJiAhYXJl
RXNzZW50aWFsbHlFcXVhbChyZW5kZXJlci5wYWRkaW5nQm94UmVjdCgpLCBib3hHZW9tZXRyeS5w
YWRkaW5nQm94KCkpKSB7Ci0gICAgICAgIG91dHB1dFJlY3QoInBhZGRpbmdCb3giLCByZW5kZXJl
ci5wYWRkaW5nQm94UmVjdCgpLCBib3hHZW9tZXRyeS5wYWRkaW5nQm94KCkpOworICAgICAgICBv
dXRwdXRSZWN0KCJwYWRkaW5nQm94Il9zLCByZW5kZXJlci5wYWRkaW5nQm94UmVjdCgpLCBib3hH
ZW9tZXRyeS5wYWRkaW5nQm94KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAg
LTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94SW5m
b3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbgogICAgICAgICByZXR1cm4g
IWlzPFJlbmRlclRhYmxlPihyZW5kZXJlcikgfHwgIWRvd25jYXN0PFJlbmRlclRhYmxlPihyZW5k
ZXJlcikuY29sbGFwc2VCb3JkZXJzKCk7CiAgICAgfSgpOwogICAgIGlmIChzaG91bGRDaGVja0Nv
bnRlbnRCb3ggJiYgIWFyZUVzc2VudGlhbGx5RXF1YWwocmVuZGVyZXIuY29udGVudEJveFJlY3Qo
KSwgYm94R2VvbWV0cnkuY29udGVudEJveCgpKSkgewotICAgICAgICBvdXRwdXRSZWN0KCJjb250
ZW50Qm94IiwgcmVuZGVyZXIuY29udGVudEJveFJlY3QoKSwgYm94R2VvbWV0cnkuY29udGVudEJv
eCgpKTsKKyAgICAgICAgb3V0cHV0UmVjdCgiY29udGVudEJveCJfcywgcmVuZGVyZXIuY29udGVu
dEJveFJlY3QoKSwgYm94R2VvbWV0cnkuY29udGVudEJveCgpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCkBAIC0yNzYsNyArMjc2LDcgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0
Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb24K
ICAgICAgICAgICAgICYmIGJveEdlb21ldHJ5Lm1hcmdpbkVuZCgpID09IHJlbmRlcmVyLm1hcmdp
bkVuZCgpOwogCiAgICAgICAgIGlmICghbWFyZ2luc01hdGNoKSB7Ci0gICAgICAgICAgICBvdXRw
dXRSZWN0KCJtYXJnaW5Cb3giLCByZW5kZXJlci5tYXJnaW5Cb3hSZWN0KCksIHJlbmRlckJveExp
a2VNYXJnaW5Cb3goYm94R2VvbWV0cnkpKTsKKyAgICAgICAgICAgIG91dHB1dFJlY3QoIm1hcmdp
bkJveCJfcywgcmVuZGVyZXIubWFyZ2luQm94UmVjdCgpLCByZW5kZXJCb3hMaWtlTWFyZ2luQm94
KGJveEdlb21ldHJ5KSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkNvdmVyYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAppbmRleCA3NjJjOWRlOWIwNDcyMDM0ZTY2
NTcyZmYyMGY3YThkODMzNzM3ZTVjLi4yMzFkMzZiYzBhMzcxZDQ5NjU1N2NiYjUyZDBlNzMxODEw
OGM2MGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCkBAIC01NTMsOCArNTUzLDgg
QEAgT3B0aW9uU2V0PEF2b2lkYW5jZVJlYXNvbj4gY2FuVXNlRm9yTGluZUxheW91dFdpdGhSZWFz
b24oY29uc3QgUmVuZGVyQmxvY2tGbG93JgogI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsK
LSAgICAgICAgUEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNo
b3dNb2Rlcm5MaW5lTGF5b3V0Q292ZXJhZ2UiLCBGdW5jdGlvbjx2b2lkKCk+IHsgcHJpbnRNb2Rl
cm5MaW5lTGF5b3V0Q292ZXJhZ2UgfSk7Ci0gICAgICAgIFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxs
YmFjaygiY29tLmFwcGxlLldlYktpdC5zaG93TW9kZXJuTGluZUxheW91dFJlYXNvbnMiLCBGdW5j
dGlvbjx2b2lkKCk+IHsgcHJpbnRNb2Rlcm5MaW5lTGF5b3V0QmxvY2tMaXN0IH0pOworICAgICAg
ICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd01vZGVy
bkxpbmVMYXlvdXRDb3ZlcmFnZSJfcywgRnVuY3Rpb248dm9pZCgpPiB7IHByaW50TW9kZXJuTGlu
ZUxheW91dENvdmVyYWdlIH0pOworICAgICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2so
ImNvbS5hcHBsZS5XZWJLaXQuc2hvd01vZGVybkxpbmVMYXlvdXRSZWFzb25zIl9zLCBGdW5jdGlv
bjx2b2lkKCk+IHsgcHJpbnRNb2Rlcm5MaW5lTGF5b3V0QmxvY2tMaXN0IH0pOwogICAgIH0pOwog
I2VuZGlmCiAgICAgT3B0aW9uU2V0PEF2b2lkYW5jZVJlYXNvbj4gcmVhc29uczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCmluZGV4IDExODRiN2MzOTYxZjY0OGRkZWJkNmQ0ZGJk
ZGE0NmEzZjFlNDYyNTQuLjE3YzQ0M2Y3Nzk4ZDA0MTMzODJiMWY2ZDJiMjljZWY5ZDllMTQyMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaApAQCAtNTMsNyArNTMsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50
RmlsdGVyPiBjcmVhdGUoQ29udGVudEZpbHRlckNsaWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IH5Db250ZW50RmlsdGVyKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciogdXJsU2NoZW1lKCkg
eyByZXR1cm4gIngtYXBwbGUtY29udGVudC1maWx0ZXIiOyB9CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBBU0NJSUxpdGVyYWwgdXJsU2NoZW1lKCkgeyByZXR1cm4gIngtYXBwbGUtY29udGVudC1maWx0
ZXIiX3M7IH0KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZpbHRlcmluZ01haW5SZXNvdXJj
ZShjb25zdCBVUkwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbC5jcHAKaW5kZXggZDljYTZmY2Q5NDU2OTk4ZjU4YzYyNDU3ZDIxNjYyMjUy
NjUyYTczYi4uOTIyM2UwNDQwZmEzYTFjMDhmMmZlNmVkNjQ2Nzc4MzNmNzIxZTI2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAK
QEAgLTg3LDcgKzg3LDcgQEAgUmVzb3VyY2VSZXF1ZXN0IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVm
bGlnaHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKICAgICBzdGF0aWMgY29u
c3QgZG91YmxlIHBsYXRmb3JtRGVmYXVsdFRpbWVvdXQgPSAwOwogICAgIHByZWZsaWdodFJlcXVl
c3Quc2V0VGltZW91dEludGVydmFsKHBsYXRmb3JtRGVmYXVsdFRpbWVvdXQpOwogICAgIHVwZGF0
ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKHByZWZsaWdodFJlcXVlc3QsIHNlY3VyaXR5T3JpZ2lu
LCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UpOwotICAgIHByZWZsaWdodFJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiT1BUSU9OUyIpOworICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiT1BUSU9OUyJfcyk7CiAgICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRIVFRQSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xSZXF1ZXN0TWV0aG9kLCByZXF1ZXN0
Lmh0dHBNZXRob2QoKSk7CiAgICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRQcmlvcml0eShyZXF1ZXN0
LnByaW9yaXR5KCkpOwogICAgIHByZWZsaWdodFJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tp
ZXMocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAppbmRl
eCBjNGY4Y2FiNmVlM2ExZmRiOTI2YmNlYzk4YTMxMzJiZTUzZjdmMzUzLi5lZjRkNThjYTczMDVk
YTY3ODU1NjE1N2E0Njk0YWEwZjk0NDFmNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCkBAIC04NSwx
MiArODUsMTIgQEAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGVJdGVtOjp2YWxpZGF0ZU1ldGhvZEFuZEhlYWQKIAogYm9vbCBDcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6YWxsb3dzQ3Jvc3NPcmlnaW5NZXRob2QoY29uc3QgU3Ry
aW5nJiBtZXRob2QsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5KSBjb25zdAogewotICAgIHJldHVybiBtX21ldGhvZHMuY29udGFpbnMobWV0aG9kKSB8fCAo
bV9tZXRob2RzLmNvbnRhaW5zKCIqIikgJiYgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgIT0gU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSkgfHwgaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1
ZXN0TWV0aG9kQWxsb3dsaXN0KG1ldGhvZCk7CisgICAgcmV0dXJuIG1fbWV0aG9kcy5jb250YWlu
cyhtZXRob2QpIHx8IChtX21ldGhvZHMuY29udGFpbnMoIioiX3MpICYmIHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5ICE9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpIHx8IGlzT25BY2Nlc3ND
b250cm9sU2ltcGxlUmVxdWVzdE1ldGhvZEFsbG93bGlzdChtZXRob2QpOwogfQogCiBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OnZhbGlk
YXRlQ3Jvc3NPcmlnaW5IZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJz
LCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgY29uc3QK
IHsKLSAgICBib29sIHZhbGlkV2lsZGNhcmQgPSBtX2hlYWRlcnMuY29udGFpbnMoIioiKSAmJiBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSAhPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOwor
ICAgIGJvb2wgdmFsaWRXaWxkY2FyZCA9IG1faGVhZGVycy5jb250YWlucygiKiJfcykgJiYgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgIT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGhlYWRlciA6IHJlcXVlc3RIZWFkZXJzKSB7CiAgICAgICAgIGlm
IChoZWFkZXIua2V5QXNIVFRQSGVhZGVyTmFtZSAmJiBpc0Nyb3NzT3JpZ2luU2FmZVJlcXVlc3RI
ZWFkZXIoaGVhZGVyLmtleUFzSFRUUEhlYWRlck5hbWUudmFsdWUoKSwgaGVhZGVyLnZhbHVlKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKaW5kZXggMjhkZTczMzc0MzRiZWM4OThlMTY1MWRhYzQyZDk3NzM3NDkwODRlZS4uODc4
NmM1MjU5Yjg5ODAxMjgzNTc0NDUyMGZlZjU5YmFjMDY0Zjk1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yMDA0LDcgKzIwMDQsNyBAQCBib29sIERvY3Vt
ZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSgpCiAgICAgICAgICAgICBmcmFtZUxvYWRlcigpLT5j
bGllbnQoKS5kaXNwYXRjaERpZENoYW5nZVByb3Zpc2lvbmFsVVJMKCk7CiAgICAgfQogCi0gICAg
U3RyaW5nIG1pbWVUeXBlID0gc2hvdWxkTG9hZEVtcHR5ID8gInRleHQvaHRtbCIgOiBmcmFtZUxv
YWRlcigpLT5jbGllbnQoKS5nZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShtX3JlcXVlc3Qu
dXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworICAgIFN0cmluZyBt
aW1lVHlwZSA9IHNob3VsZExvYWRFbXB0eSA/ICJ0ZXh0L2h0bWwiX3MgOiBmcmFtZUxvYWRlcigp
LT5jbGllbnQoKS5nZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShtX3JlcXVlc3QudXJsKCku
cHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOwogICAgIG1fcmVzcG9uc2UgPSBS
ZXNvdXJjZVJlc3BvbnNlKG1fcmVxdWVzdC51cmwoKSwgbWltZVR5cGUsIDAsICJVVEYtOCJfcyk7
CiAKICAgICBpZiAoIWZyYW1lTG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLmlzRGlzcGxheWluZ0lu
aXRpYWxFbXB0eURvY3VtZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggN2JjMmI3NzcxMGVjODAxNWY5NjA0NTFk
ZGVjNTA3ZjRlMGJhMGU0Ny4uMTM0NDYyODliNWZmZmJmMDQyMTBjMWYyMzAxZTljMjY3ZGJlZTRk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIFRocmVhZGFibAogCiAg
ICAgaWYgKGRvY3VtZW50LnNldHRpbmdzKCkuZGlzYWxsb3dTeW5jWEhSRHVyaW5nUGFnZURpc21p
c3NhbEVuYWJsZWQoKSAmJiAhbV9hc3luYyAmJiAoIWRvY3VtZW50LnBhZ2UoKSB8fCAhZG9jdW1l
bnQucGFnZSgpLT5hcmVTeW5jaHJvbm91c0xvYWRzQWxsb3dlZCgpKSkgewogICAgICAgICBkb2N1
bWVudC5kaWRSZWplY3RTeW5jWEhSRHVyaW5nUGFnZURpc21pc3NhbCgpOwotICAgICAgICBsb2dF
cnJvckFuZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBy
ZXF1ZXN0LnVybCgpLCAiU3luY2hyb25vdXMgbG9hZHMgYXJlIG5vdCBhbGxvd2VkIGF0IHRoaXMg
dGltZSIpKTsKKyAgICAgICAgbG9nRXJyb3JBbmRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21h
aW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC51cmwoKSwgIlN5bmNocm9ub3VzIGxvYWRzIGFy
ZSBub3QgYWxsb3dlZCBhdCB0aGlzIHRpbWUiX3MpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTc5LDcgKzE3OSw3IEBAIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgVGhyZWFkYWJsCiAgICAgfQogCiAg
ICAgaWYgKG1fb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbikg
ewotICAgICAgICBsb2dFcnJvckFuZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktp
dEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBu
b3QgYWxsb3dlZCB3aGVuIHVzaW5nIHNhbWUtb3JpZ2luIGZldGNoIG1vZGUuIikpOworICAgICAg
ICBsb2dFcnJvckFuZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFs
LCAwLCByZXF1ZXN0LnVybCgpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBub3QgYWxsb3dl
ZCB3aGVuIHVzaW5nIHNhbWUtb3JpZ2luIGZldGNoIG1vZGUuIl9zKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTE5MCw3ICsxOTAsNyBAQCBib29sIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6Y2hlY2tVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFVSTCYgdXJsKQogewogICAg
IC8vIENyb3NzLW9yaWdpbiByZXF1ZXN0cyBhcmUgb25seSBhbGxvd2VkIGZvciBIVFRQIGFuZCBy
ZWdpc3RlcmVkIHNjaGVtZXMuIFdlIHdvdWxkIGNhdGNoIHRoaXMgd2hlbiBjaGVja2luZyByZXNw
b25zZSBoZWFkZXJzIGxhdGVyLCBidXQgdGhlcmUgaXMgbm8gcmVhc29uIHRvIHNlbmQgYSByZXF1
ZXN0IHRoYXQncyBndWFyYW50ZWVkIHRvIGJlIGRlbmllZC4KICAgICBpZiAoIUxlZ2FjeVNjaGVt
ZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQodXJsLnByb3RvY29s
KCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkgewotICAgICAgICBsb2dFcnJvckFuZEZhaWwo
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJDcm9zcyBv
cmlnaW4gcmVxdWVzdHMgYXJlIG9ubHkgc3VwcG9ydGVkIGZvciBIVFRQLiIsIFJlc291cmNlRXJy
b3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpKTsKKyAgICAgICAgbG9nRXJyb3JBbmRGYWlsKFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCAiQ3Jvc3Mgb3JpZ2lu
IHJlcXVlc3RzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgSFRUUC4iX3MsIFJlc291cmNlRXJyb3I6
OlR5cGU6OkFjY2Vzc0NvbnRyb2wpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6Y2FuY2VsKCkKICAgICAvLyBDYW5jZWwgY2FuIHJlLWVudGVyIGFuZCBtX3Jlc291
cmNlIG1pZ2h0IGJlIG51bGwgaGVyZSBhcyBhIHJlc3VsdC4KICAgICBpZiAobV9jbGllbnQgJiYg
bV9yZXNvdXJjZSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBlcnJvciBpcyBzZW50IHRvIHRo
ZSBjbGllbnQgaW4gZGlkRmFpbCgpLCBzbyBpdCBzaG91bGQgbm90IGJlIGFuIGludGVybmFsIG9u
ZS4gVXNlIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxsZWRFcnJvcigpIGluc3RlYWQuCi0gICAg
ICAgIFJlc291cmNlRXJyb3IgZXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbV9y
ZXNvdXJjZS0+dXJsKCksICJMb2FkIGNhbmNlbGxlZCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OkNh
bmNlbGxhdGlvbik7CisgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IoZXJyb3JEb21haW5XZWJL
aXRJbnRlcm5hbCwgMCwgbV9yZXNvdXJjZS0+dXJsKCksICJMb2FkIGNhbmNlbGxlZCJfcywgUmVz
b3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsKICAgICAgICAgbV9jbGllbnQtPmRpZEZh
aWwoZXJyb3IpOwogICAgIH0KICAgICBjbGVhclJlc291cmNlKCk7CkBAIC02MzEsNyArNjMxLDcg
QEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICB9CiAKICAgICBpZiAocmVzcG9uc2UuY29u
dGFpbnNJbnZhbGlkSFRUUEhlYWRlcnMoKSkgewotICAgICAgICBkaWRGYWlsKGlkZW50aWZpZXIs
IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC51cmwo
KSwgIlJlc3BvbnNlIGNvbnRhaW5lZCBpbnZhbGlkIEhUVFAgaGVhZGVycyIsIFJlc291cmNlRXJy
b3I6OlR5cGU6OkdlbmVyYWwpKTsKKyAgICAgICAgZGlkRmFpbChpZGVudGlmaWVyLCBSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QudXJsKCksICJSZXNw
b25zZSBjb250YWluZWQgaW52YWxpZCBIVFRQIGhlYWRlcnMiX3MsIFJlc291cmNlRXJyb3I6OlR5
cGU6OkdlbmVyYWwpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggY2VlODJhM2YwNzEzYWM0MDJlNTJlZmFkOGI1
YTBmODVhMzQ4ZTg0MS4uZTY0ZDliYmE4ZjE0MTIzODRlMDA2OTAxMGEyOWNjY2YxOTk5MWExMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCkBAIC0yMDMsNyArMjAz
LDcgQEAgUmVmPEZvcm1TdWJtaXNzaW9uPiBGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKEhUTUxGb3Jt
RWxlbWVudCYgZm9ybSwgSFRNTEZvcm1Db250cm8KICAgICBpZiAoY29waWVkQXR0cmlidXRlcy5t
ZXRob2QoKSA9PSBNZXRob2Q6OlBvc3QpIHsKICAgICAgICAgaXNNdWx0aVBhcnRGb3JtID0gY29w
aWVkQXR0cmlidXRlcy5pc011bHRpUGFydEZvcm0oKTsKICAgICAgICAgaWYgKGlzTXVsdGlQYXJ0
Rm9ybSAmJiBpc01haWx0b0Zvcm0pIHsKLSAgICAgICAgICAgIGVuY29kaW5nVHlwZSA9ICJhcHBs
aWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiOworICAgICAgICAgICAgZW5jb2RpbmdUeXBl
ID0gImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJfczsKICAgICAgICAgICAgIGlz
TXVsdGlQYXJ0Rm9ybSA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMjIxLDcgKzIyMSw3
IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1MRm9ybUVs
ZW1lbnQmIGZvcm0sIEhUTUxGb3JtQ29udHJvCiAKICAgICBpZiAoaXNNdWx0aVBhcnRGb3JtKSB7
CiAgICAgICAgIGZvcm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZU11bHRpUGFydChkb21Gb3JtRGF0
YSk7Ci0gICAgICAgIGJvdW5kYXJ5ID0gZm9ybURhdGEtPmJvdW5kYXJ5KCkuZGF0YSgpOworICAg
ICAgICBib3VuZGFyeSA9IFN0cmluZyB7IGZvcm1EYXRhLT5ib3VuZGFyeSgpLmRhdGEoKSB9Owog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGZvcm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZShkb21Gb3Jt
RGF0YSwgYXR0cmlidXRlcy5tZXRob2QoKSA9PSBNZXRob2Q6OkdldCA/IEZvcm1EYXRhOjpGb3Jt
VVJMRW5jb2RlZCA6IEZvcm1EYXRhOjpwYXJzZUVuY29kaW5nVHlwZShlbmNvZGluZ1R5cGUpKTsK
ICAgICAgICAgaWYgKGNvcGllZEF0dHJpYnV0ZXMubWV0aG9kKCkgPT0gTWV0aG9kOjpQb3N0ICYm
IGlzTWFpbHRvRm9ybSkgewpAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgRm9ybVN1Ym1pc3Npb246
OnBvcHVsYXRlRnJhbWVMb2FkUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZVJlcXVlc3Qp
CiAgICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQUmVmZXJyZXIo
bV9yZWZlcnJlcik7CiAKICAgICBpZiAobV9tZXRob2QgPT0gTWV0aG9kOjpQb3N0KSB7Ci0gICAg
ICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKCJQT1NUIik7
CisgICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKCJQ
T1NUIl9zKTsKICAgICAgICAgZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBC
b2R5KG1fZm9ybURhdGEuY29weVJlZigpKTsKIAogICAgICAgICAvLyBjb25zdHJ1Y3Qgc29tZSB1
c2VyIGhlYWRlcnMgaWYgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCA5NmU2MmJhNTk1ZDNjMTMyMDYzYjVhNGE5YmUxNjZhMDQzZDFjMTE5Li45ZWQ4MDZi
NGMzY2IxODI2YTc0MzJhNmQ2OGZiNjNmZjA3NTI5YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTI5NzEsNyArMjk3MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnVw
ZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZpZWxkcyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIElz
TWFpCiAgICAgLy8gT25seSBzZXQgZmFsbGJhY2sgYXJyYXkgaWYgaXQncyBzdGlsbCBlbXB0eSAo
bGF0ZXIgYXR0ZW1wdHMgbWF5IGJlIGluY29ycmVjdCwgc2VlIGJ1ZyAxMTc4MTgpLgogICAgIGlm
IChyZXF1ZXN0LnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5
KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEFsd2F5cyB0cnkgVVRGLTguIElmIHRoYXQgZmFp
bHMsIHRyeSBmcmFtZSBlbmNvZGluZyAoaWYgYW55KSBhbmQgdGhlbiB0aGUgZGVmYXVsdC4KLSAg
ICAgICAgcmVxdWVzdC5zZXRSZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJh
Y2tBcnJheSgiVVRGLTgiLCBtX2ZyYW1lLmRvY3VtZW50KCktPmVuY29kaW5nKCksIG1fZnJhbWUu
c2V0dGluZ3MoKS5kZWZhdWx0VGV4dEVuY29kaW5nTmFtZSgpKTsKKyAgICAgICAgcmVxdWVzdC5z
ZXRSZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgiVVRGLTgi
X3MsIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgbV9mcmFtZS5zZXR0aW5ncygpLmRl
ZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgIH0KIAogICAgIGlmIChzaG91bGRVcGRhdGUg
PT0gU2hvdWxkVXBkYXRlQXBwSW5pdGlhdGVkVmFsdWU6OlllcyAmJiBtX2ZyYW1lLm1haW5GcmFt
ZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCkBAIC0zMDYxLDcgKzMwNjEsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3Qs
IGNvbnN0IFN0cmluZyYgcmVmZQogICAgIGlmICghcmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAg
ICB3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAg
d29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQT3JpZ2luKG9yaWdpbik7Ci0gICAgd29ya2lu
Z1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CisgICAgd29ya2luZ1Jlc291
cmNlUmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIl9zKTsKICAgICB3b3JraW5nUmVzb3VyY2VS
ZXF1ZXN0LnNldEhUVFBCb2R5KGluUmVxdWVzdC5odHRwQm9keSgpKTsKICAgICB3b3JraW5nUmVz
b3VyY2VSZXF1ZXN0LnNldEhUVFBDb250ZW50VHlwZShjb250ZW50VHlwZSk7CiAgICAgdXBkYXRl
UmVxdWVzdEFuZEFkZEV4dHJhRmllbGRzKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIElzTWFpblJl
c291cmNlOjpZZXMsIGxvYWRUeXBlLCBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZTo6WWVz
LCBGcmFtZUxvYWRlcjo6SXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvbkxvYWQ6Ok5vLCAmcmVxdWVz
dC5yZXF1ZXN0ZXIoKSk7CkBAIC0zODE4LDcgKzM4MTgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjps
b2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5SXRlbSog
ZnJvbQogICAgIC8vIElmIHRoaXMgd2FzIGEgcmVwb3N0IHRoYXQgZmFpbGVkIHRoZSBwYWdlIGNh
Y2hlLCB3ZSBtaWdodCB0cnkgdG8gcmVwb3N0IHRoZSBmb3JtLgogICAgIE5hdmlnYXRpb25BY3Rp
b24gYWN0aW9uOwogICAgIGlmIChmb3JtRGF0YSkgewotICAgICAgICByZXF1ZXN0LnNldEhUVFBN
ZXRob2QoIlBPU1QiKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIl9zKTsK
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAg
IHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKGl0ZW0uZm9ybUNvbnRlbnRUeXBlKCkpOwogICAg
ICAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJp
bmcoaXRlbS5yZWZlcnJlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmlu
ZGV4IGMzY2I2ZDQ4MjkwYjIxYWJhMTg2NWVkY2FkNDUzZWRkNmE3NzMzNDUuLmNiMzM2ZjhjYjAx
Y2FiZDUzYWEyNzk4Y2U2ODA4OTg3Y2Y2NjA5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9JbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdl
TG9hZGVyLmNwcApAQCAtMzI4LDcgKzMyOCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNvbHZl
UHJvbWlzZXMoVmVjdG9yPFJlZlB0cjxEZWZlcnJlZFByb21pc2U+PiYgcHJvbWlzZXMpCiAgICAg
ICAgIHByb21pc2UtPnJlc29sdmUoKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHJlamVjdFBy
b21pc2VzKFZlY3RvcjxSZWZQdHI8RGVmZXJyZWRQcm9taXNlPj4mIHByb21pc2VzLCBjb25zdCBj
aGFyKiBtZXNzYWdlKQorc3RhdGljIGlubGluZSB2b2lkIHJlamVjdFByb21pc2VzKFZlY3RvcjxS
ZWZQdHI8RGVmZXJyZWRQcm9taXNlPj4mIHByb21pc2VzLCBBU0NJSUxpdGVyYWwgbWVzc2FnZSkK
IHsKICAgICBBU1NFUlQoIXByb21pc2VzLmlzRW1wdHkoKSk7CiAgICAgYXV0byBwcm9taXNlc1Rv
QmVSZWplY3RlZCA9IHN0ZDo6ZXhjaGFuZ2UocHJvbWlzZXMsIHsgfSk7CkBAIC0zNDEsNyArMzQx
LDcgQEAgaW5saW5lIHZvaWQgSW1hZ2VMb2FkZXI6OnJlc29sdmVEZWNvZGVQcm9taXNlcygpCiAg
ICAgcmVzb2x2ZVByb21pc2VzKG1fZGVjb2RpbmdQcm9taXNlcyk7CiB9CiAKLWlubGluZSB2b2lk
IEltYWdlTG9hZGVyOjpyZWplY3REZWNvZGVQcm9taXNlcyhjb25zdCBjaGFyKiBtZXNzYWdlKQor
aW5saW5lIHZvaWQgSW1hZ2VMb2FkZXI6OnJlamVjdERlY29kZVByb21pc2VzKEFTQ0lJTGl0ZXJh
bCBtZXNzYWdlKQogewogICAgIHJlamVjdFByb21pc2VzKG1fZGVjb2RpbmdQcm9taXNlcywgbWVz
c2FnZSk7CiB9CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHIKICAg
ICAgICAgZWxlbWVudCgpLmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOwogCiAgICAgICAgIGlm
IChoYXNQZW5kaW5nRGVjb2RlUHJvbWlzZXMoKSkKLSAgICAgICAgICAgIHJlamVjdERlY29kZVBy
b21pc2VzKCJBY2Nlc3MgY29udHJvbCBlcnJvci4iKTsKKyAgICAgICAgICAgIHJlamVjdERlY29k
ZVByb21pc2VzKCJBY2Nlc3MgY29udHJvbCBlcnJvci4iX3MpOwogICAgICAgICAKICAgICAgICAg
QVNTRVJUKCFtX2hhc1BlbmRpbmdMb2FkRXZlbnQpOwogCkBAIC0zODcsNyArMzg3LDcgQEAgdm9p
ZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHIKIAogICAgIGlmIChtX2ltYWdlLT53YXNDYW5jZWxlZCgpKSB7
CiAgICAgICAgIGlmIChoYXNQZW5kaW5nRGVjb2RlUHJvbWlzZXMoKSkKLSAgICAgICAgICAgIHJl
amVjdERlY29kZVByb21pc2VzKCJMb2FkaW5nIHdhcyBjYW5jZWxlZC4iKTsKKyAgICAgICAgICAg
IHJlamVjdERlY29kZVByb21pc2VzKCJMb2FkaW5nIHdhcyBjYW5jZWxlZC4iX3MpOwogICAgICAg
ICBtX2hhc1BlbmRpbmdMb2FkRXZlbnQgPSBmYWxzZTsKICAgICAgICAgLy8gT25seSBjb25zaWRl
ciB1cGRhdGluZyB0aGUgcHJvdGVjdGlvbiByZWYtY291bnQgb2YgdGhlIEVsZW1lbnQgaW1tZWRp
YXRlbHkgYmVmb3JlIHJldHVybmluZwogICAgICAgICAvLyBmcm9tIHRoaXMgZnVuY3Rpb24gYXMg
ZG9pbmcgc28gbWlnaHQgcmVzdWx0IGluIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGlzIEltYWdlTG9h
ZGVyLgpAQCAtNDY0LDEzICs0NjQsMTMgQEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGVjb2RlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICBtX2RlY29kaW5nUHJvbWlzZXMuYXBwZW5k
KFdURk1vdmUocHJvbWlzZSkpOwogCiAgICAgaWYgKCFlbGVtZW50KCkuZG9jdW1lbnQoKS5kb21X
aW5kb3coKSkgewotICAgICAgICByZWplY3REZWNvZGVQcm9taXNlcygiSW5hY3RpdmUgZG9jdW1l
bnQuIik7CisgICAgICAgIHJlamVjdERlY29kZVByb21pc2VzKCJJbmFjdGl2ZSBkb2N1bWVudC4i
X3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgQXRvbVN0cmluZyBhdHRyID0gZWxl
bWVudCgpLmltYWdlU291cmNlVVJMKCk7CiAgICAgaWYgKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyhhdHRyKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVqZWN0RGVjb2RlUHJvbWlz
ZXMoIk1pc3Npbmcgc291cmNlIFVSTC4iKTsKKyAgICAgICAgcmVqZWN0RGVjb2RlUHJvbWlzZXMo
Ik1pc3Npbmcgc291cmNlIFVSTC4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00
ODMsMTIgKzQ4MywxMiBAQCB2b2lkIEltYWdlTG9hZGVyOjpkZWNvZGUoKQogICAgIEFTU0VSVCho
YXNQZW5kaW5nRGVjb2RlUHJvbWlzZXMoKSk7CiAgICAgCiAgICAgaWYgKCFlbGVtZW50KCkuZG9j
dW1lbnQoKS5kb21XaW5kb3coKSkgewotICAgICAgICByZWplY3REZWNvZGVQcm9taXNlcygiSW5h
Y3RpdmUgZG9jdW1lbnQuIik7CisgICAgICAgIHJlamVjdERlY29kZVByb21pc2VzKCJJbmFjdGl2
ZSBkb2N1bWVudC4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFtX2lt
YWdlIHx8ICFtX2ltYWdlLT5pbWFnZSgpIHx8IG1faW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkgewot
ICAgICAgICByZWplY3REZWNvZGVQcm9taXNlcygiTG9hZGluZyBlcnJvci4iKTsKKyAgICAgICAg
cmVqZWN0RGVjb2RlUHJvbWlzZXMoIkxvYWRpbmcgZXJyb3IuIl9zKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAppbmRleCBhYWExNDE0OTg4
ZWRjODY4MzU2MmNlN2M2MDAyMTRmZWU5M2Y1MTY3Li4xNTg3ZGFmYWQxOWQ2ZTM0N2E0MzA2MTJl
OTUwNjE4N2VlN2MzYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaApAQCAtMTEz
LDcgKzExMyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGhhc1BlbmRpbmdEZWNvZGVQcm9taXNl
cygpIGNvbnN0IHsgcmV0dXJuICFtX2RlY29kaW5nUHJvbWlzZXMuaXNFbXB0eSgpOyB9CiAgICAg
dm9pZCByZXNvbHZlRGVjb2RlUHJvbWlzZXMoKTsKLSAgICB2b2lkIHJlamVjdERlY29kZVByb21p
c2VzKGNvbnN0IGNoYXIqIG1lc3NhZ2UpOworICAgIHZvaWQgcmVqZWN0RGVjb2RlUHJvbWlzZXMo
QVNDSUlMaXRlcmFsIG1lc3NhZ2UpOwogICAgIHZvaWQgZGVjb2RlKCk7CiAgICAgCiAgICAgdm9p
ZCB0aW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRD
b250ZW50Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hl
Y2tlci5jcHAKaW5kZXggMjE5MGQ5N2I4ZDhhMWRkZTIxYjM3YWIyODQyMTFhYmI1MTVjOTRmMC4u
ZjRjNWEyNWZhMmFjYjgxNThmZWIyYmU4Yjg4MzY1YzFjNTVkMzdjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcApAQCAtNTIsMTAgKzUyLDEwIEBA
IGJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6aXNNaXhlZENvbnRlbnQoU2VjdXJpdHlPcmlnaW4m
IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBVCiAgICAgcmV0dXJuICFTZWN1cml0eU9yaWdpbjo6aXNT
ZWN1cmUodXJsKTsKIH0KIAotc3RhdGljIHZvaWQgbG9nV2FybmluZyhjb25zdCBGcmFtZSYgZnJh
bWUsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFVSTCYgdGFyZ2V0
KQorc3RhdGljIHZvaWQgbG9nV2FybmluZyhjb25zdCBGcmFtZSYgZnJhbWUsIGJvb2wgYWxsb3dl
ZCwgQVNDSUlMaXRlcmFsIGFjdGlvbiwgY29uc3QgVVJMJiB0YXJnZXQpCiB7CiAgICAgY29uc3Qg
Y2hhciogZXJyb3JTdHJpbmcgPSBhbGxvd2VkID8gIiB3YXMgYWxsb3dlZCB0byAiIDogIiB3YXMg
bm90IGFsbG93ZWQgdG8gIjsKLSAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKChhbGxvd2Vk
ID8gU3RyaW5nKCkgOiAiW2Jsb2NrZWRdICIpLCAiVGhlIHBhZ2UgYXQgIiwgZnJhbWUuZG9jdW1l
bnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksIGVycm9yU3RyaW5n
LCBhY3Rpb24sICIgaW5zZWN1cmUgY29udGVudCBmcm9tICIsIHRhcmdldC5zdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgoKSwgIi5cbiIpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJp
bmcoKGFsbG93ZWQgPyAiIiA6ICJbYmxvY2tlZF0gIiksICJUaGUgcGFnZSBhdCAiLCBmcmFtZS5k
b2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgZXJyb3JT
dHJpbmcsIGFjdGlvbiwgIiBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdGFyZ2V0LnN0cmluZ0Nl
bnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiLlxuIik7CiAgICAgZnJhbWUuZG9jdW1lbnQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgbWVzc2FnZSk7CiB9CiAKQEAgLTcyLDcgKzcyLDcgQEAgYm9vbCBNaXhlZENvbnRl
bnRDaGVja2VyOjpjYW5EaXNwbGF5SW5zZWN1cmVDb250ZW50KEZyYW1lJiBmcmFtZSwgU2VjdXJp
dHlPcmlnaW4KICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBib29sIGFsbG93ZWQgPSAhaXNT
dHJpY3RNb2RlICYmIChmcmFtZS5zZXR0aW5ncygpLmFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250
ZW50KCkgfHwgdHlwZSA9PSBDb250ZW50VHlwZTo6QWN0aXZlQ2FuV2FybikgJiYgIWZyYW1lLmRv
Y3VtZW50KCktPmdlb2xvY2F0aW9uQWNjZXNzZWQoKTsKLSAgICBsb2dXYXJuaW5nKGZyYW1lLCBh
bGxvd2VkLCAiZGlzcGxheSIsIHVybCk7CisgICAgbG9nV2FybmluZyhmcmFtZSwgYWxsb3dlZCwg
ImRpc3BsYXkiX3MsIHVybCk7CiAKICAgICBpZiAoYWxsb3dlZCkgewogICAgICAgICBmcmFtZS5k
b2N1bWVudCgpLT5zZXRGb3VuZE1peGVkQ29udGVudChTZWN1cml0eUNvbnRleHQ6Ok1peGVkQ29u
dGVudFR5cGU6OkluYWN0aXZlKTsKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBNaXhlZENvbnRlbnRD
aGVja2VyOjpjYW5SdW5JbnNlY3VyZUNvbnRlbnQoRnJhbWUmIGZyYW1lLCBTZWN1cml0eU9yaWdp
biYgc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBhbGxvd2VkID0gIWZyYW1l
LmRvY3VtZW50KCktPmlzU3RyaWN0TWl4ZWRDb250ZW50TW9kZSgpICYmIGZyYW1lLnNldHRpbmdz
KCkuYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoKSAmJiAhZnJhbWUuZG9jdW1lbnQoKS0+
Z2VvbG9jYXRpb25BY2Nlc3NlZCgpICYmICFmcmFtZS5kb2N1bWVudCgpLT5zZWN1cmVDb29raWVz
QWNjZXNzZWQoKTsKLSAgICBsb2dXYXJuaW5nKGZyYW1lLCBhbGxvd2VkLCAicnVuIiwgdXJsKTsK
KyAgICBsb2dXYXJuaW5nKGZyYW1lLCBhbGxvd2VkLCAicnVuIl9zLCB1cmwpOwogCiAgICAgaWYg
KGFsbG93ZWQpIHsKICAgICAgICAgZnJhbWUuZG9jdW1lbnQoKS0+c2V0Rm91bmRNaXhlZENvbnRl
bnQoU2VjdXJpdHlDb250ZXh0OjpNaXhlZENvbnRlbnRUeXBlOjpBY3RpdmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IDY2ZTdhMzkzZjM0Y2UzNzJlYzMwZmZjYjU0Njgw
NzdlMTIzODE4Y2YuLjBlMmEzZDNkMmMwYTRmNDVlYTdhOTM4OTBmZDJhODc4ODI5ZTAxNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTEzNCw4ICsxMzQsOCBAQCB2b2lk
IFBpbmdMb2FkZXI6OnNlbmRQaW5nKEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiBwaW5nVVJMLCBj
b25zdCBVUkwmIGRlc3RpbmF0aQogICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50
KCk7CiAgICAgZG9jdW1lbnQuY29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3Vy
ZVJlcXVlc3RJZk5lZWRlZChyZXF1ZXN0LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJl
UmVxdWVzdFR5cGU6OkxvYWQpOwogCi0gICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7
Ci0gICAgcmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoInRleHQvcGluZyIpOworICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiUE9TVCJfcyk7CisgICAgcmVxdWVzdC5zZXRIVFRQQ29udGVudFR5
cGUoInRleHQvcGluZyJfcyk7CiAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShGb3JtRGF0YTo6Y3Jl
YXRlKCJQSU5HIikpOwogICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJO
YW1lOjpDYWNoZUNvbnRyb2wsIEhUVFBIZWFkZXJWYWx1ZXM6Om1heEFnZTAoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAppbmRleCBl
NTU1YjI3OTdkOGM1Y2Y3Mjk4ZTc3MDk5NWQ2YmZkMDBkYWIzNzkzLi40NmI1YzllMjNkNTI1YmVk
MWNmNzI2ODA5Mzk1NmU0NTdhYTAwNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCkBAIC03MiwxNSArNzIsMTUgQEAgc3RhdGljIHZv
aWQgZW5jb2RlSGFzaFNldChLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsICBjb25zdCBTdHIKIAogc3RhdGljIHZvaWQgZW5jb2RlRm9udEhhc2hTZXQoS2V5ZWRFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBIYXNoU2V0PFN0cmluZz4m
IGhhc2hTZXQpCiB7Ci0gICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCBsYWJlbCwgImZvbnQiLCBo
YXNoU2V0KTsKKyAgICBlbmNvZGVIYXNoU2V0KGVuY29kZXIsIGxhYmVsLCAiZm9udCJfcywgaGFz
aFNldCk7CiB9CiAgICAgCiBzdGF0aWMgdm9pZCBlbmNvZGVDYW52YXNBY3Rpdml0eVJlY29yZChL
ZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IENhbnZhc0Fj
dGl2aXR5UmVjb3JkJiBjYW52YXNBY3Rpdml0eVJlY29yZCkKIHsKICAgICBlbmNvZGVyLmVuY29k
ZU9iamVjdChsYWJlbCwgY2FudmFzQWN0aXZpdHlSZWNvcmQsIFtdIChLZXllZEVuY29kZXImIGVu
Y29kZXJJbm5lciwgY29uc3QgQ2FudmFzQWN0aXZpdHlSZWNvcmQmIGNhbnZhc0FjdGl2aXR5UmVj
b3JkKSB7Ci0gICAgICAgIGVuY29kZXJJbm5lci5lbmNvZGVCb29sKCJ3YXNEYXRhUmVhZCIsIGNh
bnZhc0FjdGl2aXR5UmVjb3JkLndhc0RhdGFSZWFkKTsKLSAgICAgICAgZW5jb2RlcklubmVyLmVu
Y29kZU9iamVjdHMoInRleHRXcml0dGVuIiwgY2FudmFzQWN0aXZpdHlSZWNvcmQudGV4dFdyaXR0
ZW4uYmVnaW4oKSwgY2FudmFzQWN0aXZpdHlSZWNvcmQudGV4dFdyaXR0ZW4uZW5kKCksIFtdIChL
ZXllZEVuY29kZXImIGVuY29kZXJJbm5lcjIsIGNvbnN0IFN0cmluZyYgdGV4dCkgewotICAgICAg
ICAgICAgZW5jb2RlcklubmVyMi5lbmNvZGVTdHJpbmcoInRleHQiLCB0ZXh0KTsKKyAgICAgICAg
ZW5jb2RlcklubmVyLmVuY29kZUJvb2woIndhc0RhdGFSZWFkIl9zLCBjYW52YXNBY3Rpdml0eVJl
Y29yZC53YXNEYXRhUmVhZCk7CisgICAgICAgIGVuY29kZXJJbm5lci5lbmNvZGVPYmplY3RzKCJ0
ZXh0V3JpdHRlbiJfcywgY2FudmFzQWN0aXZpdHlSZWNvcmQudGV4dFdyaXR0ZW4uYmVnaW4oKSwg
Y2FudmFzQWN0aXZpdHlSZWNvcmQudGV4dFdyaXR0ZW4uZW5kKCksIFtdIChLZXllZEVuY29kZXIm
IGVuY29kZXJJbm5lcjIsIGNvbnN0IFN0cmluZyYgdGV4dCkgeworICAgICAgICAgICAgZW5jb2Rl
cklubmVyMi5lbmNvZGVTdHJpbmcoInRleHQiX3MsIHRleHQpOwogICAgICAgICB9KTsKICAgICB9
KTsKIH0KQEAgLTEwMyw5ICsxMDMsOSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmVu
Y29kZShLZXllZEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgLy8gVG9wIGZyYW1lIHN0YXRz
CiAgICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJf
cywgImRvbWFpbiJfcywgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyk7CiAgICAgZW5jb2RlSGFz
aFNldChlbmNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLCAiZG9tYWluIl9z
LCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOwotICAgIGVuY29kZUhhc2hTZXQoZW5jb2Rl
ciwgInRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSJfcywgImRvbWFpbiIsIHRvcEZyYW1lTGlu
a0RlY29yYXRpb25zRnJvbSk7CisgICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCAidG9wRnJhbWVM
aW5rRGVjb3JhdGlvbnNGcm9tIl9zLCAiZG9tYWluIl9zLCB0b3BGcmFtZUxpbmtEZWNvcmF0aW9u
c0Zyb20pOwogICAgIGVuY29kZXIuZW5jb2RlQm9vbCgiZ290TGlua0RlY29yYXRpb25Gcm9tUHJl
dmFsZW50UmVzb3VyY2UiX3MsIGdvdExpbmtEZWNvcmF0aW9uRnJvbVByZXZhbGVudFJlc291cmNl
KTsKLSAgICBlbmNvZGVIYXNoU2V0KGVuY29kZXIsICJ0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlT
Y3JpcHRzIl9zLCAiZG9tYWluIiwgdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyk7Cisg
ICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCAidG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0
cyJfcywgImRvbWFpbiJfcywgdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyk7CiAKICAg
ICAvLyBTdWJmcmFtZSBzdGF0cwogICAgIGVuY29kZUhhc2hTZXQoZW5jb2RlciwgInN1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsICJkb21haW4iX3MsIHN1YmZyYW1lVW5kZXJUb3BGcmFt
ZURvbWFpbnMpOwpAQCAtMTI0LDEyICsxMjQsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjplbmNvZGUoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIuZW5j
b2RlVUludDMyKCJ0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJ
Il9zLCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJKTsKIAog
I2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAgZW5jb2RlRm9udEhhc2hTZXQoZW5j
b2RlciwgImZvbnRzRmFpbGVkVG9Mb2FkIiwgZm9udHNGYWlsZWRUb0xvYWQpOwotICAgIGVuY29k
ZUZvbnRIYXNoU2V0KGVuY29kZXIsICJmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCIsIGZvbnRzU3Vj
Y2Vzc2Z1bGx5TG9hZGVkKTsKLSAgICBlbmNvZGVIYXNoU2V0KGVuY29kZXIsICJ0b3BGcmFtZVJl
Z2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzIiwgImRvbWFpbiIsIHRvcEZyYW1l
UmVnaXN0cmFibGVEb21haW5zV2hpY2hBY2Nlc3NlZFdlYkFQSXMpOwotICAgIGVuY29kZUNhbnZh
c0FjdGl2aXR5UmVjb3JkKGVuY29kZXIsICJjYW52YXNBY3Rpdml0eVJlY29yZCIsIGNhbnZhc0Fj
dGl2aXR5UmVjb3JkKTsKLSAgICBlbmNvZGVPcHRpb25TZXQoZW5jb2RlciwgIm5hdmlnYXRvckZ1
bmN0aW9uc0FjY2Vzc2VkQml0TWFzayIsIG5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkKTsKLSAg
ICBlbmNvZGVPcHRpb25TZXQoZW5jb2RlciwgInNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkQml0TWFz
ayIsIHNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkKTsKKyAgICBlbmNvZGVGb250SGFzaFNldChlbmNv
ZGVyLCAiZm9udHNGYWlsZWRUb0xvYWQiX3MsIGZvbnRzRmFpbGVkVG9Mb2FkKTsKKyAgICBlbmNv
ZGVGb250SGFzaFNldChlbmNvZGVyLCAiZm9udHNTdWNjZXNzZnVsbHlMb2FkZWQiX3MsIGZvbnRz
U3VjY2Vzc2Z1bGx5TG9hZGVkKTsKKyAgICBlbmNvZGVIYXNoU2V0KGVuY29kZXIsICJ0b3BGcmFt
ZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzIl9zLCAiZG9tYWluIl9zLCB0
b3BGcmFtZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzKTsKKyAgICBlbmNv
ZGVDYW52YXNBY3Rpdml0eVJlY29yZChlbmNvZGVyLCAiY2FudmFzQWN0aXZpdHlSZWNvcmQiX3Ms
IGNhbnZhc0FjdGl2aXR5UmVjb3JkKTsKKyAgICBlbmNvZGVPcHRpb25TZXQoZW5jb2RlciwgIm5h
dmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkQml0TWFzayJfcywgbmF2aWdhdG9yRnVuY3Rpb25zQWNj
ZXNzZWQpOworICAgIGVuY29kZU9wdGlvblNldChlbmNvZGVyLCAic2NyZWVuRnVuY3Rpb25zQWNj
ZXNzZWRCaXRNYXNrIl9zLCBzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZCk7CiAjZW5kaWYKIH0KIApA
QCAtMTM4LDExICsxMzgsMTEgQEAgc3RhdGljIHZvaWQgZGVjb2RlSGFzaENvdW50ZWRTZXQoS2V5
ZWREZWNvZGVyJiBkZWNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBIYXMKICAgICBWZWN0b3I8
U3RyaW5nPiBpZ25vcmVkOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnVzZWQtcmVzdWx0IikK
ICAgICBkZWNvZGVyLmRlY29kZU9iamVjdHMobGFiZWwsIGlnbm9yZWQsIFsmaGFzaENvdW50ZWRT
ZXRdKEtleWVkRGVjb2RlciYgZGVjb2RlcklubmVyLCBTdHJpbmcmIGRvbWFpbikgewotICAgICAg
ICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVTdHJpbmcoIm9yaWdpbiIsIGRvbWFpbikpCisgICAg
ICAgIGlmICghZGVjb2RlcklubmVyLmRlY29kZVN0cmluZygib3JpZ2luIl9zLCBkb21haW4pKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgY291
bnQ7Ci0gICAgICAgIGlmICghZGVjb2RlcklubmVyLmRlY29kZVVJbnQzMigiY291bnQiLCBjb3Vu
dCkpCisgICAgICAgIGlmICghZGVjb2RlcklubmVyLmRlY29kZVVJbnQzMigiY291bnQiX3MsIGNv
dW50KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBoYXNoQ291bnRlZFNl
dC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURv
bWFpblN0cmluZyhkb21haW4pLCBjb3VudCk7CkBAIC0xOTAsMTggKzE5MCwxOCBAQCBJR05PUkVf
V0FSTklOR1NfRU5ECiAKIHN0YXRpYyB2b2lkIGRlY29kZUZvbnRIYXNoU2V0KEtleWVkRGVjb2Rl
ciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgSGFzaFNldDxTdHJpbmc+JiBoYXNoU2V0
KQogewotICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgbGFiZWwsICJmb250IiwgaGFzaFNldCk7
CisgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCBsYWJlbCwgImZvbnQiX3MsIGhhc2hTZXQpOwog
fQogICAgIAogc3RhdGljIHZvaWQgZGVjb2RlQ2FudmFzQWN0aXZpdHlSZWNvcmQoS2V5ZWREZWNv
ZGVyJiBkZWNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBDYW52YXNBY3Rpdml0eVJlY29yZCYg
Y2FudmFzQWN0aXZpdHlSZWNvcmQpCiB7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVudXNlZC1y
ZXN1bHQiKQogICAgIGRlY29kZXIuZGVjb2RlT2JqZWN0KGxhYmVsLCBjYW52YXNBY3Rpdml0eVJl
Y29yZCwgW10gKEtleWVkRGVjb2RlciYgZGVjb2RlcklubmVyLCBDYW52YXNBY3Rpdml0eVJlY29y
ZCYgY2FudmFzQWN0aXZpdHlSZWNvcmQpIHsKLSAgICAgICAgaWYgKCFkZWNvZGVySW5uZXIuZGVj
b2RlQm9vbCgid2FzRGF0YVJlYWQiLCBjYW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCkp
CisgICAgICAgIGlmICghZGVjb2RlcklubmVyLmRlY29kZUJvb2woIndhc0RhdGFSZWFkIl9zLCBj
YW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGlnbm9yZTsKLSAgICAgICAgZGVjb2RlcklubmVy
LmRlY29kZU9iamVjdHMoInRleHRXcml0dGVuIiwgaWdub3JlLCBbJmNhbnZhc0FjdGl2aXR5UmVj
b3JkXSAoS2V5ZWREZWNvZGVyJiBkZWNvZGVySW5uZXIyLCBTdHJpbmcmIHRleHQpIHsKLSAgICAg
ICAgICAgIGlmICghZGVjb2RlcklubmVyMi5kZWNvZGVTdHJpbmcoInRleHQiLCB0ZXh0KSkKKyAg
ICAgICAgZGVjb2RlcklubmVyLmRlY29kZU9iamVjdHMoInRleHRXcml0dGVuIl9zLCBpZ25vcmUs
IFsmY2FudmFzQWN0aXZpdHlSZWNvcmRdIChLZXllZERlY29kZXImIGRlY29kZXJJbm5lcjIsIFN0
cmluZyYgdGV4dCkgeworICAgICAgICAgICAgaWYgKCFkZWNvZGVySW5uZXIyLmRlY29kZVN0cmlu
ZygidGV4dCJfcywgdGV4dCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgY2FudmFzQWN0aXZpdHlSZWNvcmQudGV4dFdyaXR0ZW4uYWRkKHRleHQpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMTYsODEgKzIxNiw4MSBAQCBib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIsIHVuc2lnbmVkIG1vZGVs
VmVyc2lvbgogewogICAgIFN0cmluZyByZWdpc3RyYWJsZURvbWFpbkFzU3RyaW5nOwogICAgIGlm
IChtb2RlbFZlcnNpb24gPj0gMTUpIHsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVN0cmlu
ZygiUHJldmFsZW50UmVzb3VyY2VEb21haW4iLCByZWdpc3RyYWJsZURvbWFpbkFzU3RyaW5nKSkK
KyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVN0cmluZygiUHJldmFsZW50UmVzb3VyY2VEb21h
aW4iX3MsIHJlZ2lzdHJhYmxlRG9tYWluQXNTdHJpbmcpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcoIlBy
ZXZhbGVudFJlc291cmNlT3JpZ2luIiwgcmVnaXN0cmFibGVEb21haW5Bc1N0cmluZykpCisgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIl9z
LCByZWdpc3RyYWJsZURvbWFpbkFzU3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgcmVnaXN0cmFibGVEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHJlZ2lzdHJhYmxlRG9tYWluQXNT
dHJpbmcpOwogCiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVCb29sKCJoYWRVc2VySW50ZXJhY3Rpb24iLCBoYWRVc2VySW50ZXJhY3Rpb24pKQorICAgIGlm
ICghZGVjb2Rlci5kZWNvZGVCb29sKCJoYWRVc2VySW50ZXJhY3Rpb24iX3MsIGhhZFVzZXJJbnRl
cmFjdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFN0b3JhZ2UgYWNjZXNz
CiAgICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAxNSkKLSAgICAgICAgZGVjb2RlSGFzaFNldChkZWNv
ZGVyLCAic3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIiwgImRvbWFpbiIsIHN0b3Jh
Z2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyk7CisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVj
b2RlciwgInN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgImRvbWFpbiJfcywg
c3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zKTsKICAgICBlbHNlCi0gICAgICAgIGRl
Y29kZUhhc2hTZXQoZGVjb2RlciwgInN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2lucyIs
ICJvcmlnaW4iLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOworICAgICAgICBk
ZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMi
X3MsICJvcmlnaW4iX3MsIHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyk7CiAKICAg
ICAvLyBUb3AgZnJhbWUgc3RhdHMKICAgICBpZiAobW9kZWxWZXJzaW9uID49IDE1KSB7Ci0gICAg
ICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iLCAi
ZG9tYWluIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyk7Ci0gICAgICAgIGRlY29kZUhhc2hT
ZXQoZGVjb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSIsICJkb21haW4iLCB0b3BG
cmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOworICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIs
ICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLCAiZG9tYWluIl9zLCB0b3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c1RvKTsKKyAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAidG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNGcm9tIl9zLCAiZG9tYWluIl9zLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c0Zyb20pOwogICAgIH0gZWxzZSBpZiAobW9kZWxWZXJzaW9uID49IDExKSB7CiAgICAgICAgIEhh
c2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1Rv
Q291bnRlZDsKLSAgICAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzVG8iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRlZCk7Cisg
ICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvIl9zLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRlZCk7CiAgICAgICAgIGZv
ciAoYXV0byYgZG9tYWluIDogdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQudmFsdWVz
KCkpCiAgICAgICAgICAgICB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZChkb21haW4pOwog
ICAgICAgICAKICAgICAgICAgSGFzaENvdW50ZWRTZXQ8UmVnaXN0cmFibGVEb21haW4+IHRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RzRnJvbUNvdW50ZWQ7Ci0gICAgICAgIGRlY29kZUhhc2hDb3VudGVk
U2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCB0b3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c0Zyb21Db3VudGVkKTsKKyAgICAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVj
b2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgdG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNGcm9tQ291bnRlZCk7CiAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogdG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNGcm9tQ291bnRlZC52YWx1ZXMoKSkKICAgICAgICAgICAgIHRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzRnJvbS5hZGQoZG9tYWluKTsKICAgICB9CiAKICAgICBpZiAobW9kZWxW
ZXJzaW9uID49IDE2KSB7Ci0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInRvcEZyYW1l
TGlua0RlY29yYXRpb25zRnJvbSIsICJkb21haW4iLCB0b3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zy
b20pOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlQm9vbCgiZ290TGlua0RlY29yYXRpb25G
cm9tUHJldmFsZW50UmVzb3VyY2UiLCBnb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNv
dXJjZSkpCisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInRvcEZyYW1lTGlua0RlY29y
YXRpb25zRnJvbSJfcywgImRvbWFpbiJfcywgdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tKTsK
KyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woImdvdExpbmtEZWNvcmF0aW9uRnJvbVBy
ZXZhbGVudFJlc291cmNlIl9zLCBnb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJj
ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKG1vZGVsVmVy
c2lvbiA+PSAxNykgewogICAgICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4g
dG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0c0NvdW50ZWQ7Ci0gICAgICAgIGRlY29kZUhh
c2hDb3VudGVkU2V0KGRlY29kZXIsICJ0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIiwg
dG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0c0NvdW50ZWQpOworICAgICAgICBkZWNvZGVI
YXNoQ291bnRlZFNldChkZWNvZGVyLCAidG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyJf
cywgdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0c0NvdW50ZWQpOwogICAgICAgICBmb3Ig
KGF1dG8mIGRvbWFpbiA6IHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNDb3VudGVkLnZh
bHVlcygpKQogICAgICAgICAgICAgdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cy5hZGQo
ZG9tYWluKTsKICAgICB9CiAKICAgICAvLyBTdWJmcmFtZSBzdGF0cwogICAgIGlmIChtb2RlbFZl
cnNpb24gPj0gMTUpCi0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbnMiLCAiZG9tYWluIiwgc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
cyk7CisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFt
ZURvbWFpbnMiX3MsICJkb21haW4iX3MsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMpOwog
ICAgIGVsc2UgaWYgKG1vZGVsVmVyc2lvbiA+PSAxNCkgewogICAgICAgICBIYXNoQ291bnRlZFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4gc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQ7
Ci0gICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJzdWJmcmFtZVVuZGVyVG9w
RnJhbWVPcmlnaW5zIiwgc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQpOworICAg
ICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2lucyJfcywgc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQpOwogICAgICAg
ICBmb3IgKGF1dG8mIGRvbWFpbiA6IHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVk
LnZhbHVlcygpKQogICAgICAgICAgICAgc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQo
ZG9tYWluKTsKICAgICB9CiAKICAgICAvLyBTdWJyZXNvdXJjZSBzdGF0cwogICAgIGlmIChtb2Rl
bFZlcnNpb24gPj0gMTUpIHsKLSAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyIsICJkb21haW4iLCBzdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVEb21haW5zKTsKLSAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNUbyIsICJkb21haW4iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c1RvKTsKLSAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNGcm9tIiwgImRvbWFpbiIsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSk7
CisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMiX3MsICJkb21haW4iX3MsIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMp
OworICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvIl9zLCAiZG9tYWluIl9zLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAg
ICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNG
cm9tIl9zLCAiZG9tYWluIl9zLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRlZDsKLSAgICAgICAgZGVjb2RlSGFzaENv
dW50ZWRTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRlZCk7CisgICAgICAgIGRlY29kZUhhc2hD
b3VudGVkU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zIl9zLCBz
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRlZCk7CiAgICAgICAgIGZvciAoYXV0
byYgZG9tYWluIDogc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQudmFsdWVz
KCkpCiAgICAgICAgICAgICBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zLmFkZChkb21h
aW4pOwogCiAgICAgICAgIEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRlZDsKLSAgICAgICAgZGVjb2RlSGFzaENvdW50ZWRT
ZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCBzdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvQ291bnRlZCk7CisgICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRl
Y29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLCBzdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvQ291bnRlZCk7CiAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQudmFsdWVzKCkpCiAgICAgICAgICAgICBzdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZChkb21haW4pOwogICAgICAgICBpZiAobW9kZWxW
ZXJzaW9uID49IDExKSB7CiAgICAgICAgICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURv
bWFpbj4gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tQ291bnRlZDsKLSAgICAgICAgICAg
IGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c0Zyb20iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21Db3VudGVkKTsKKyAgICAgICAg
ICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb20iX3MsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbUNvdW50ZWQpOwogICAg
ICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zy
b21Db3VudGVkLnZhbHVlcygpKQogICAgICAgICAgICAgICAgIHN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzRnJvbS5hZGQoZG9tYWluKTsKICAgICAgICAgfQpAQCAtMjk4LDExICsyOTgsMTEgQEAg
Ym9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVy
LCB1bnNpZ25lZCBtb2RlbFZlcnNpb24KIAogCiAgICAgLy8gUHJldmFsZW50IFJlc291cmNlCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woImlzUHJldmFsZW50UmVzb3VyY2UiLCBpc1ByZXZh
bGVudFJlc291cmNlKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlQm9vbCgiaXNQcmV2YWxlbnRS
ZXNvdXJjZSJfcywgaXNQcmV2YWxlbnRSZXNvdXJjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChtb2RlbFZlcnNpb24gPj0gMTIpIHsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZUJvb2woImlzVmVyeVByZXZhbGVudFJlc291cmNlIiwgaXNWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UpKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlQm9vbCgiaXNWZXJ5UHJldmFsZW50UmVz
b3VyY2UiX3MsIGlzVmVyeVByZXZhbGVudFJlc291cmNlKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTMxMiwzNyArMzEyLDM3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljczo6ZGVjb2RlKEtleWVkRGVjb2RlciYgZGVjb2RlciwgdW5zaWduZWQgbW9kZWxWZXJz
aW9uCiAgICAgICAgIGlzVmVyeVByZXZhbGVudFJlc291cmNlID0gZmFsc2U7CiAgICAgfQogCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJbnQzMigiZGF0YVJlY29yZHNSZW1vdmVkIiwgZGF0YVJl
Y29yZHNSZW1vdmVkKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlVUludDMyKCJkYXRhUmVjb3Jk
c1JlbW92ZWQiX3MsIGRhdGFSZWNvcmRzUmVtb3ZlZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUFzRG91YmxlOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGVEb3VibGUoIm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24iLCBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUFzRG91YmxlKSkKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlRG91YmxlKCJtb3N0UmVjZW50VXNlckludGVyYWN0aW9uIl9zLCBtb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uVGltZUFzRG91YmxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lQXNEb3VibGUpOwogCi0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZUJvb2woImdyYW5kZmF0aGVyZWQiLCBncmFuZGZhdGhlcmVkKSkKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlQm9vbCgiZ3JhbmRmYXRoZXJlZCJfcywgZ3JhbmRmYXRoZXJlZCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRvdWJsZSBsYXN0U2VlblRpbWVBc0RvdWJsZTsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRG91YmxlKCJsYXN0U2VlbiIsIGxhc3RTZWVuVGltZUFzRG91
YmxlKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRG91YmxlKCJsYXN0U2VlbiJfcywgbGFzdFNl
ZW5UaW1lQXNEb3VibGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbGFzdFNlZW4gPSBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobGFzdFNlZW5UaW1lQXNEb3VibGUpOwogCiAgICAgaWYg
KG1vZGVsVmVyc2lvbiA+PSAxMSkgewotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlVUludDMy
KCJ0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24iLCB0aW1lc0Fj
Y2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24pKQorICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlVUludDMyKCJ0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50
ZXJhY3Rpb24iX3MsIHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlv
bikpCiAgICAgICAgICAgICB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJh
Y3Rpb24gPSAwOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlVUludDMyKCJ0aW1lc0FjY2Vz
c2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJIiwgdGltZXNBY2Nlc3NlZEFzRmly
c3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVVSW50MzIoInRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEki
X3MsIHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkpKQogICAg
ICAgICAgICAgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSA9
IDA7CiAgICAgfQogCiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKICAgICBpZiAobW9k
ZWxWZXJzaW9uID49IDEzKSB7Ci0gICAgICAgIGRlY29kZUZvbnRIYXNoU2V0KGRlY29kZXIsICJm
b250c0ZhaWxlZFRvTG9hZCIsIGZvbnRzRmFpbGVkVG9Mb2FkKTsKLSAgICAgICAgZGVjb2RlRm9u
dEhhc2hTZXQoZGVjb2RlciwgImZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkIiwgZm9udHNTdWNjZXNz
ZnVsbHlMb2FkZWQpOwotICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZVJl
Z2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzIiwgImRvbWFpbiIsIHRvcEZyYW1l
UmVnaXN0cmFibGVEb21haW5zV2hpY2hBY2Nlc3NlZFdlYkFQSXMpOwotICAgICAgICBkZWNvZGVD
YW52YXNBY3Rpdml0eVJlY29yZChkZWNvZGVyLCAiY2FudmFzQWN0aXZpdHlSZWNvcmQiLCBjYW52
YXNBY3Rpdml0eVJlY29yZCk7Ci0gICAgICAgIGRlY29kZU9wdGlvblNldChkZWNvZGVyLCAibmF2
aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWRCaXRNYXNrIiwgbmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNz
ZWQpOwotICAgICAgICBkZWNvZGVPcHRpb25TZXQoZGVjb2RlciwgInNjcmVlbkZ1bmN0aW9uc0Fj
Y2Vzc2VkQml0TWFzayIsIHNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkKTsKKyAgICAgICAgZGVjb2Rl
Rm9udEhhc2hTZXQoZGVjb2RlciwgImZvbnRzRmFpbGVkVG9Mb2FkIl9zLCBmb250c0ZhaWxlZFRv
TG9hZCk7CisgICAgICAgIGRlY29kZUZvbnRIYXNoU2V0KGRlY29kZXIsICJmb250c1N1Y2Nlc3Nm
dWxseUxvYWRlZCJfcywgZm9udHNTdWNjZXNzZnVsbHlMb2FkZWQpOworICAgICAgICBkZWNvZGVI
YXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRX
ZWJBUElzIl9zLCAiZG9tYWluIl9zLCB0b3BGcmFtZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNj
ZXNzZWRXZWJBUElzKTsKKyAgICAgICAgZGVjb2RlQ2FudmFzQWN0aXZpdHlSZWNvcmQoZGVjb2Rl
ciwgImNhbnZhc0FjdGl2aXR5UmVjb3JkIl9zLCBjYW52YXNBY3Rpdml0eVJlY29yZCk7CisgICAg
ICAgIGRlY29kZU9wdGlvblNldChkZWNvZGVyLCAibmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWRC
aXRNYXNrIl9zLCBuYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZCk7CisgICAgICAgIGRlY29kZU9w
dGlvblNldChkZWNvZGVyLCAic2NyZWVuRnVuY3Rpb25zQWNjZXNzZWRCaXRNYXNrIl9zLCBzY3Jl
ZW5GdW5jdGlvbnNBY2Nlc3NlZCk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTQ1MCw0OCArNDUwLDQ4
IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0cmluZygpIGNvbnN0CiAgICAg
YnVpbGRlci5hcHBlbmQoIlJlZ2lzdHJhYmxlIGRvbWFpbjogIiwgcmVnaXN0cmFibGVEb21haW4u
c3RyaW5nKCksICdcbicpOwogCiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgotICAgIGFwcGVuZEJv
b2xlYW4oYnVpbGRlciwgImhhZFVzZXJJbnRlcmFjdGlvbiIsIGhhZFVzZXJJbnRlcmFjdGlvbik7
CisgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIl9zLCBoYWRV
c2VySW50ZXJhY3Rpb24pOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGJ1aWxkZXIu
YXBwZW5kKCIgICAgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbjogIiwgaGFzSGFkUmVjZW50VXNl
ckludGVyYWN0aW9uKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLnNlY29uZHNTaW5jZUVw
b2NoKCkpID8gIndpdGhpbiAyNCBob3VycyIgOiAiLTEiKTsKKyAgICBidWlsZGVyLmFwcGVuZCgi
ICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICJfcywgaGFzSGFkUmVjZW50VXNlckludGVy
YWN0aW9uKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkp
ID8gIndpdGhpbiAyNCBob3VycyIgOiAiLTEiKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsK
LSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJncmFuZGZhdGhlcmVkIiwgZ3JhbmRmYXRoZXJl
ZCk7CisgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCJfcywgZ3JhbmRm
YXRoZXJlZCk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAKICAgICAvLyBTdG9yYWdlIGFj
Y2VzcwotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZy
YW1lRG9tYWlucyIsIHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyk7CisgICAgYXBw
ZW5kSGFzaFNldChidWlsZGVyLCAic3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIl9z
LCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogCiAgICAgLy8gVG9wIGZyYW1l
IHN0YXRzCi0gICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNUbyIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pOwotICAgIGFwcGVuZEhhc2hTZXQoYnVp
bGRlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSIsIHRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzRnJvbSk7Ci0gICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAidG9wRnJhbWVMaW5rRGVjb3Jh
dGlvbnNGcm9tIiwgdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tKTsKLSAgICBhcHBlbmRCb29s
ZWFuKGJ1aWxkZXIsICJnb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSIsIGdv
dExpbmtEZWNvcmF0aW9uRnJvbVByZXZhbGVudFJlc291cmNlKTsKKyAgICBhcHBlbmRIYXNoU2V0
KGJ1aWxkZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLCB0b3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0c1RvKTsKKyAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJ0b3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0c0Zyb20iX3MsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSk7CisgICAgYXBwZW5k
SGFzaFNldChidWlsZGVyLCAidG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIl9zLCB0b3BGcmFt
ZUxpbmtEZWNvcmF0aW9uc0Zyb20pOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImdvdExp
bmtEZWNvcmF0aW9uRnJvbVByZXZhbGVudFJlc291cmNlIl9zLCBnb3RMaW5rRGVjb3JhdGlvbkZy
b21QcmV2YWxlbnRSZXNvdXJjZSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgYXBw
ZW5kSGFzaFNldChidWlsZGVyLCAidG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIsIHRv
cEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMpOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRl
ciwgInRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiX3MsIHRvcEZyYW1lTG9hZGVkVGhp
cmRQYXJ0eVNjcmlwdHMpOwogCiAgICAgLy8gU3ViZnJhbWUgc3RhdHMKLSAgICBhcHBlbmRIYXNo
U2V0KGJ1aWxkZXIsICJzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIiwgc3ViZnJhbWVVbmRl
clRvcEZyYW1lRG9tYWlucyk7CisgICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAic3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWlucyJfcywgc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyk7CiAg
ICAgCiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKLSAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIs
ICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIiwgc3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lRG9tYWlucyk7Ci0gICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAic3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbyIsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8pOwotICAgIGFwcGVu
ZEhhc2hTZXQoYnVpbGRlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIsIHN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSk7CisgICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAi
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgc3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lRG9tYWlucyk7CisgICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAic3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbyJfcywgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAgYXBw
ZW5kSGFzaFNldChidWlsZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLCBz
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOwogCiAgICAgLy8gUHJldmFsZW50IFJlc291
cmNlCi0gICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaXNQcmV2YWxlbnRSZXNvdXJjZSIsIGlz
UHJldmFsZW50UmVzb3VyY2UpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFs
ZW50UmVzb3VyY2UiX3MsIGlzUHJldmFsZW50UmVzb3VyY2UpOwogICAgIGJ1aWxkZXIuYXBwZW5k
KCdcbicpOwotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzVmVyeVByZXZhbGVudFJlc291
cmNlIiwgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRl
ciwgImlzVmVyeVByZXZhbGVudFJlc291cmNlIl9zLCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYnVpbGRlci5hcHBlbmQoIiAgICBkYXRh
UmVjb3Jkc1JlbW92ZWQ6ICIsIGRhdGFSZWNvcmRzUmVtb3ZlZCk7CiAgICAgYnVpbGRlci5hcHBl
bmQoJ1xuJyk7CiAKICNpZiBFTkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQotICAgIGFwcGVuZEhh
c2hTZXQoYnVpbGRlciwgImZvbnRzRmFpbGVkVG9Mb2FkIiwgZm9udHNGYWlsZWRUb0xvYWQpOwot
ICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgImZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkIiwgZm9u
dHNTdWNjZXNzZnVsbHlMb2FkZWQpOwotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInRvcEZy
YW1lUmVnaXN0cmFibGVEb21haW5zV2hpY2hBY2Nlc3NlZFdlYkFQSXMiLCB0b3BGcmFtZVJlZ2lz
dHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzKTsKKyAgICBhcHBlbmRIYXNoU2V0KGJ1
aWxkZXIsICJmb250c0ZhaWxlZFRvTG9hZCJfcywgZm9udHNGYWlsZWRUb0xvYWQpOworICAgIGFw
cGVuZEhhc2hTZXQoYnVpbGRlciwgImZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkIl9zLCBmb250c1N1
Y2Nlc3NmdWxseUxvYWRlZCk7CisgICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAidG9wRnJhbWVS
ZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyJfcywgdG9wRnJhbWVSZWdpc3Ry
YWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyk7CiAgICAgYXBwZW5kTmF2aWdhdG9yQVBJ
T3B0aW9uU2V0KGJ1aWxkZXIsIG5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkKTsKICAgICBhcHBl
bmRTY3JlZW5BUElPcHRpb25TZXQoYnVpbGRlciwgc2NyZWVuRnVuY3Rpb25zQWNjZXNzZWQpOwot
ICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgImNhbnZhc1RleHRXcml0dGVuIiwgY2FudmFzQWN0
aXZpdHlSZWNvcmQudGV4dFdyaXR0ZW4pOwotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImNh
bnZhc1JlYWREYXRhIiwgY2FudmFzQWN0aXZpdHlSZWNvcmQud2FzRGF0YVJlYWQpOworICAgIGFw
cGVuZEhhc2hTZXQoYnVpbGRlciwgImNhbnZhc1RleHRXcml0dGVuIl9zLCBjYW52YXNBY3Rpdml0
eVJlY29yZC50ZXh0V3JpdHRlbik7CisgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiY2FudmFz
UmVhZERhdGEiX3MsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLndhc0RhdGFSZWFkKTsKICAgICBidWls
ZGVyLmFwcGVuZCgnXG4nKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNjE5MDgzNTQ5ZjkyZDI5
OWY4NTJmMDgxNmZkOTViNzcxZTk0MjFiYy4uNDVlZDIxNTIwZjAyZWE5ZmZjZjJkYTQ0Y2ExMjUw
YjFiY2U4NTJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0yNDEsNyArMjQxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgaWYgKGlzUERGSlNSZXNvdXJjZUxvYWQoKSkgewotICAgICAgICBC
dW5kbGVSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlRnJvbUJ1bmRsZSgqdGhpcywgInBkZmpz
LyIpOworICAgICAgICBCdW5kbGVSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlRnJvbUJ1bmRs
ZSgqdGhpcywgInBkZmpzLyJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAg
LTMwMSw3ICszMDEsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCgpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghZGVjb2RlUmVzdWx0KSB7CiAgICAgICAgICAg
ICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygibG9hZERhdGFVUkw6IGRlY29kaW5nIG9mIGRh
dGEgZmFpbGVkIik7Ci0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRGYWlsKFJlc291cmNl
RXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCAiRGF0YSBVUkwgZGVjb2Rp
bmcgZmFpbGVkIikpOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkRmFpbChSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIkRhdGEgVVJMIGRlY29k
aW5nIGZhaWxlZCJfcykpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IGlmICh0aGlzLT53YXNDYW5jZWxsZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1NlcnZlclRpbWluZ1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2Vy
dmVyVGltaW5nUGFyc2VyLmNwcAppbmRleCAwMWJkMDU3M2UzYWI2MDkxZTBjMjkwNjY5OTg0YWFl
YzJiZDMzNzU2Li5mYjI0NTM2OTY5Y2RkYmZiM2MwYTVhMTgxZjhjMTg1ZGY0ZTg0MjEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2VydmVyVGltaW5nUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2VydmVyVGltaW5nUGFyc2VyLmNwcApAQCAtNTgsNyAr
NTgsNyBAQCBWZWN0b3I8U2VydmVyVGltaW5nPiBwYXJzZVNlcnZlclRpbWluZyhjb25zdCBTdHJp
bmcmIGhlYWRlclZhbHVlKQogICAgICAgICAgICAgaWYgKHBhcmFtZXRlck5hbWUuaXNOdWxsKCkp
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9ICIi
OworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gZW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAg
IGlmICh0b2tlbml6ZXIuY29uc3VtZSgnPScpKSB7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSB0
b2tlbml6ZXIuY29uc3VtZVRva2VuT3JRdW90ZWRTdHJpbmcoKTsKICAgICAgICAgICAgICAgICB0
b2tlbml6ZXIuY29uc3VtZUJlZm9yZUFueUNoYXJNYXRjaCh7JywnLCAnOyd9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDdlZmNlY2M0OTNmOGI0
MTQ4OTc3MjY1NTE5NGQ2YmFjZjMxNjRmYzEuLjY1MDhjY2M5NTMyODU3M2JiZjgxMmI2MWEzYzll
ODljNzc1OTdlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAgICAgQ29t
cGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxldGlvbkhhbmRsZXJDYWxsZXIoV1RGTW92
ZShwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAgaWYgKHJlc3BvbnNlLmNvbnRhaW5z
SW52YWxpZEhUVFBIZWFkZXJzKCkpIHsKLSAgICAgICAgZGlkRmFpbChSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QoKS51cmwoKSwgIlJlc3BvbnNlIGNv
bnRhaW5lZCBpbnZhbGlkIEhUVFAgaGVhZGVycyIsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVy
YWwpKTsKKyAgICAgICAgZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50
ZXJuYWwsIDAsIHJlcXVlc3QoKS51cmwoKSwgIlJlc3BvbnNlIGNvbnRhaW5lZCBpbnZhbGlkIEhU
VFAgaGVhZGVycyJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJl
c291cmNlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVj
b2Rlci5jcHAKaW5kZXggNTZkYmM0ZTI5MDNlMmViYzIwZDYzNDMzNzMwNDRkMDRmNjFiNjQyNS4u
MDYxMjhiNmEzYTNjMzczMWUxZmI3MTY5ZDRlOWYxNTMxZWM4ZDliMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcApAQCAtMzI5LDcgKzMyOSw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRQcmVwZW5kQk9NKGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIC8vIGh0dHBzOi8vZW5jb2Rpbmcuc3BlYy53aGF0d2cu
b3JnLyN1dGYtOC1kZWNvZGUKIFN0cmluZyBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVU
RjgoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIGF1
dG8gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJV
VEYtOCIpOworICAgIGF1dG8gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgi
dGV4dC9wbGFpbiJfcywgIlVURi04Iik7CiAgICAgaWYgKHNob3VsZFByZXBlbmRCT00oZGF0YSwg
bGVuZ3RoKSkKICAgICAgICAgZGVjb2Rlci0+ZGVjb2RlKCJceGVmXHhiYlx4YmYiLCAzKTsKICAg
ICByZXR1cm4gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YSwgbGVuZ3RoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAK
aW5kZXggMDczMjRkZDFlMDBjYTIzZTNkZTMwODVhMjcwZjhlYjM1MTc1YTU5Yy4uZGYwNDYyY2Yz
OTQ3M2IwNjc4NjM3ODFiM2UwYjJkYTNhMTcwYTc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTUxMiw3ICs1
MTIsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogICAgIGlmIChyZXNwb25zZVVSTC5pc051
bGwoKSkKICAgICAgICAgcmVzcG9uc2VVUkwgPSBVUkwoeyB9LCBlbXB0eVN0cmluZygpKTsKIAot
ICAgIGF1dG8gbWFpblJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZl
cihtYXJrdXBTdHJpbmcpLCByZXNwb25zZVVSTCwgcmVzcG9uc2UubWltZVR5cGUoKSwgIlVURi04
IiwgZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKSk7CisgICAgYXV0byBtYWluUmVzb3VyY2UgPSBB
cmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4QnVmZmVyKG1hcmt1cFN0cmluZyksIHJlc3BvbnNl
VVJMLCByZXNwb25zZS5taW1lVHlwZSgpLCAiVVRGLTgiX3MsIGZyYW1lLnRyZWUoKS51bmlxdWVO
YW1lKCkpOwogICAgIGlmICghbWFpblJlc291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApAQCAtNjA4LDcgKzYwOCw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKICAgICAvLyBXcmFwIHRo
ZSBmcmFtZXNldCBkb2N1bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRv
CiAgICAgLy8gYW5vdGhlciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFt
ZXNldCBvZiBpdHMgb3duKS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZy
YW1lYm9yZGVyPVwibm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lk
dGg9XCI5OCUlXCIgaGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4i
OwotICAgIGF1dG8gaWZyYW1lUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4
QnVmZmVyKGlmcmFtZU1hcmt1cCksIGFib3V0QmxhbmtVUkwoKSwgInRleHQvaHRtbCIsICJVVEYt
OCIsIFN0cmluZygpKTsKKyAgICBhdXRvIGlmcmFtZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNl
OjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVNYXJrdXApLCBhYm91dEJsYW5rVVJMKCksICJ0ZXh0
L2h0bWwiX3MsICJVVEYtOCJfcywgU3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIGNyZWF0ZShpZnJh
bWVSZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0sIHsgYXJjaGl2ZS5yZWxlYXNlTm9uTnVs
bCgpIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IGU5OWZhNWZjYjJiNzJiMDQzZjg2ODk5
NTQ4MDg2ZWUwYTBiZTNkMjIuLmFkMjEwMGRiYTVkZTU4M2JhNDM0NjYzYzA0ZjgwMTgzMDY2MmFh
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgQ29va2llSmFyKiBjb29raWVKYXIpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShX
VEZNb3ZlKHJlcXVlc3QpLCBUeXBlOjpBcHBsaWNhdGlvbk1hbmlmZXN0LCBzZXNzaW9uSUQsIGNv
b2tpZUphcikKLSAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFw
cGxpY2F0aW9uL21hbmlmZXN0K2pzb24iLCBQQUw6OlVURjhFbmNvZGluZygpKSkKKyAgICAsIG1f
ZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL21hbmlmZXN0
K2pzb24iX3MsIFBBTDo6VVRGOEVuY29kaW5nKCkpKQogewogfQogCkBAIC02MSw3ICs2MSw3IEBA
IHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5n
JiBjaHMpCiAKIFN0cmluZyBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjplbmNvZGluZygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CisgICAgcmV0
dXJuIFN0cmluZyB7IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkgfTsKIH0KIAogc3RkOjpv
cHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpw
cm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERv
Y3VtZW50KiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA3MGIzOGY2MWZjMGZmMGViNjIzMmI0NzAxZmZi
Njg5YjBlNjE4NjZlLi42M2VjNGQ2Mjc5OTM3MzNhZmIxZTQxNTkzMWQwZDVjOTU3ZTcwN2Y1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVkQ1NT
U3R5bGVTaGVldDo6Q2FjaGVkQ1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZUphciogY29va2ll
SmFyKQogICAgIDogQ2FjaGVkUmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSwgVHlwZTo6Q1NTU3R5
bGVTaGVldCwgc2Vzc2lvbklELCBjb29raWVKYXIpCi0gICAgLCBtX2RlY29kZXIoVGV4dFJlc291
cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2NzcyIsIHJlcXVlc3QuY2hhcnNldCgpKSkKKyAgICAs
IG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvY3NzIl9zLCByZXF1
ZXN0LmNoYXJzZXQoKSkpCiB7CiB9CiAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBDYWNoZWRDU1NT
dHlsZVNoZWV0OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAg
ICBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KGNsaWVudCk7CiAKICAgICBpZiAoIWlzTG9h
ZGluZygpKQotICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRTdHlsZVNoZWV0Q2xpZW50Jj4oY2xp
ZW50KS5zZXRDU1NTdHlsZVNoZWV0KG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLCBt
X3Jlc3BvbnNlLnVybCgpLCBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpLCB0aGlzKTsKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkU3R5bGVTaGVldENsaWVudCY+KGNsaWVudCkuc2V0Q1NT
U3R5bGVTaGVldChtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgbV9yZXNwb25zZS51
cmwoKSwgU3RyaW5nIHsgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSB9LCB0aGlzKTsKIH0K
IAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIGNo
cykKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmIGNocykKIAogU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OmVuY29k
aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsK
KyAgICByZXR1cm4gU3RyaW5nIHsgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSB9OwogfQog
CiBjb25zdCBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0KE1JTUVUeXBlQ2hl
Y2tIaW50IG1pbWVUeXBlQ2hlY2tIaW50LCBib29sKiBoYXNWYWxpZE1JTUVUeXBlKSBjb25zdApA
QCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6Y2hlY2tOb3RpZnko
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyPENhY2hlZFN0eWxlU2hlZXRDbGllbnQ+IHcobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2Fj
aGVkU3R5bGVTaGVldENsaWVudCogYyA9IHcubmV4dCgpKQotICAgICAgICBjLT5zZXRDU1NTdHls
ZVNoZWV0KG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLCBtX3Jlc3BvbnNlLnVybCgp
LCBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpLCB0aGlzKTsKKyAgICAgICAgYy0+c2V0Q1NT
U3R5bGVTaGVldChtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgbV9yZXNwb25zZS51
cmwoKSwgU3RyaW5nIHsgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSB9LCB0aGlzKTsKIH0K
IAogU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnJlc3BvbnNlTUlNRVR5cGUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXgg
YmJjMWIzMDU5NTI3ZjRiNWMwZjBjNGU5NjZkOWNkNDhkZDI4N2FmMS4uNzNiZWE2ZDRjZTdiMzhi
NzBiNTBkMjJkMDE5OWMxM2Q2YTRjMTFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIp
CiAgICAgfQogCiAgICAgaWYgKHR5cGUoKSA9PSBUeXBlOjpMaW5rUHJlZmV0Y2gpCi0gICAgICAg
IG1fcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UHVy
cG9zZSwgInByZWZldGNoIik7CisgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UHVycG9zZSwgInByZWZldGNoIl9zKTsKICAgICBtX3Jl
c291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShsb2FkUHJpb3JpdHkoKSk7CiAKICAgICAvLyBOYXZp
Z2F0aW9uIGFsZ29yaXRobSBpcyBzZXR0aW5nIHVwIHRoZSByZXF1ZXN0IGJlZm9yZSBzZW5kaW5n
IGl0IHRvIENhY2hlZFJlc291cmNlTG9hZGVyP0NhY2hlZFJlc291cmNlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggZGI0MzE2
MDdhZTU2MzgzMDM4MDBkZDI1OWMxMDM0Y2QwOTBmY2ZlMS4uZTMzZjc3OTQwZWFiMDgyYmZiMTFh
ODQyMTE2NGQ5ZmE0NzlkMTc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogQ2FjaGVkU1ZHRG9jdW1lbnQ6OkNhY2hlZFNWR0RvY3VtZW50KENhY2hlZFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29v
a2llSmFyKiBjb29raWVKYXIsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKICAgICA6IENhY2hl
ZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFR5cGU6OlNWR0RvY3VtZW50UmVzb3VyY2UsIHNl
c3Npb25JRCwgY29va2llSmFyKQotICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6
OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIikpCisgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNl
RGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiX3MpKQogICAgICwgbV9zZXR0aW5ncyhz
ZXR0aW5ncykKIHsKIH0KQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBjaHMpCiAKIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVu
dDo6ZW5jb2RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCku
bmFtZSgpOworICAgIHJldHVybiBTdHJpbmcgeyBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgp
IH07CiB9CiAKIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmlu
ZGV4IGQyYzFkZTQ3ZWZiNzgxMzk4ZjQ0MzhiN2NhNGVhMjYwZTIyMTk3NjcuLmUyZGJiNGM2ODNj
YjI3NDVkNzJhNjg5Y2NmNjZiMDZkMmYwYzkwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBDYWNoZWRT
VkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkp
CiAgICAgICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgZHVyaW5nIHJlbmRlciB0cmVlIHVwZGF0
ZXMgd2hlbiBldmVudHMgYXJlIGZvcmJpZGRlbi4KICAgICAgICAgICAgIC8vIEZyYW1lbGVzcyBk
b2N1bWVudCBjYW4ndCBydW4gc2NyaXB0cyBvciBjYWxsIGJhY2sgdG8gdGhlIGNsaWVudCBzbyB0
aGlzIGlzIHNhZmUuCiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBTVkdEb2N1
bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIFVSTCgpKTsKLSAgICAgICAgICAgIGF1
dG8gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1s
Iik7CisgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUoImFwcGxpY2F0aW9uL3htbCJfcyk7CiAKICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRT
Y29wZTo6RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlIGRpc2FibGVkU2NvcGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggMjVkMDU4ZjdhNmU2
ZDA4NjI3NTM1NTliZmFhMzgyZjQwMzNmM2I4Ny4uZjI2MWFmZjFhOTQ4MjkzYWMyYjJlYTA5Y2I5
ZjM3YTM0YmYyMDFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBDYWNoZWRTY3JpcHQ6OnNldEVuY29kaW5n
KGNvbnN0IFN0cmluZyYgY2hzKQogCiBTdHJpbmcgQ2FjaGVkU2NyaXB0OjplbmNvZGluZygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CisgICAgcmV0
dXJuIFN0cmluZyB7IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkgfTsKIH0KIAogU3RyaW5n
VmlldyBDYWNoZWRTY3JpcHQ6OnNjcmlwdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggMTdlZmQ2YzNmNmVkNmFhZWM3
ZmI0YTU1YTg3NzkxMzM5ZWM0OTcwZS4uMmMzMDA5OTNmNWRlZDFmMjI1NDg5YmExNTZhNjg5YTYz
YWI1ZTgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IENhY2hlZFhTTFN0eWxlU2hlZXQ6OkNhY2hlZFhTTFN0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWVK
YXIqIGNvb2tpZUphcikKICAgICA6IENhY2hlZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFR5
cGU6OlhTTFN0eWxlU2hlZXQsIHNlc3Npb25JRCwgY29va2llSmFyKQotICAgICwgbV9kZWNvZGVy
KFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC94c2wiKSkKKyAgICAsIG1fZGVjb2Rl
cihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQveHNsIl9zKSkKIHsKIH0KIApAQCAt
NTgsNyArNTgsNyBAQCB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OnNldEVuY29kaW5nKGNvbnN0
IFN0cmluZyYgY2hzKQogCiBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBj
b25zdAogewotICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOworICAgIHJl
dHVybiBTdHJpbmcgeyBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpIH07CiB9CiAKIHZvaWQg
Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCBiMjAyZmVmNjc5MjZk
MWFlOGNmNGNhNmMwMDg3NGZlNDVlYjViZmFkLi4wMzQ0NGIzOTljMzZlNTg2M2E1NmMxZGRlZmJj
MDA2OTFkZGIwMGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgTWVtb3J5Q2FjaGU6Ok1lbW9yeUNhY2hlKCkKIAogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10gewotICAgICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBs
ZS5XZWJLaXQuc2hvd01lbW9yeUNhY2hlIiwgW10geworICAgICAgICBQQUw6OnJlZ2lzdGVyTm90
aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd01lbW9yeUNhY2hlIl9zLCBbXSB7CiAg
ICAgICAgICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuZHVtcFN0YXRzKCk7CiAgICAgICAg
ICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuZHVtcExSVUxpc3RzKHRydWUpOwogICAgICAg
ICB9KTsKQEAgLTU1OCw3ICs1NTgsNyBAQCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
IE1lbW9yeUNhY2hlOjpvcmlnaW5zV2l0aENhY2hlKFBBTDo6U2Vzc2lvbklEIHNlcwogICAgICAg
ICAgICAgYXV0byYgcmVzb3VyY2UgPSAqa2V5VmFsdWUudmFsdWU7CiAgICAgICAgICAgICBhdXRv
JiBwYXJ0aXRpb25OYW1lID0ga2V5VmFsdWUua2V5LnNlY29uZDsKICAgICAgICAgICAgIGlmICgh
cGFydGl0aW9uTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0cCIsIHBhcnRpdGlvbk5hbWUsIDApKTsKKyAgICAgICAg
ICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRwIl9zLCBwYXJ0
aXRpb25OYW1lLCAwKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgb3JpZ2lu
cy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSkpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKaW5kZXggNTIzMGE2OGRiNjE0
ZTY3ZTY1ZDExYThmZTE0NGVmOTY2ZmNlZWM2Yy4uNjdjMDc4ZGNlNDJjMzRiNDFlNDc4ZTI2Zjgz
OTI3MGEyMmNmYTA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcApA
QCAtMTE3LDExICsxMTcsMTEgQEAgYm9vbCBNYXRoTUxFbGVtZW50OjpoYXNQcmVzZW50YXRpb25h
bEhpbnRzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUKIHN0YXRpYyBTdHJp
bmcgY29udmVydE1hdGhTaXplSWZOZWVkZWQoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlID09ICJzbWFsbCIpCi0gICAgICAgIHJldHVybiAiMC43NWVtIjsKKyAgICAg
ICAgcmV0dXJuICIwLjc1ZW0iX3M7CiAgICAgaWYgKHZhbHVlID09ICJub3JtYWwiKQotICAgICAg
ICByZXR1cm4gIjFlbSI7CisgICAgICAgIHJldHVybiAiMWVtIl9zOwogICAgIGlmICh2YWx1ZSA9
PSAiYmlnIikKLSAgICAgICAgcmV0dXJuICIxLjVlbSI7CisgICAgICAgIHJldHVybiAiMS41ZW0i
X3M7CiAKICAgICAvLyBGSVhNRTogbWF0aHNpemUgYWNjZXB0cyBhbnkgTWF0aE1MIGxlbmd0aCwg
aW5jbHVkaW5nIG5hbWVkIHNwYWNlcyAoc2VlIHBhcnNlTWF0aE1MTGVuZ3RoKS4KICAgICAvLyBG
SVhNRTogTWlnaHQgYmUgYmV0dGVyIHRvIHVzZSBkb3VibGUgdGhhbiBmbG9hdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAK
aW5kZXggMGVmZmE2M2YzY2Y0Y2VmNzdjYTEwMzdlOTI5YzZkNTM2MzUxM2MwNy4uYTc1ZjcwY2U1
YjI5N2Y4YWU2YThjMTU0NTUzM2I3YjcxMjk4MWZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAgLTQ3Nyw3ICs0
NzcsNyBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zVGV4
dEVkZ2VDU1MoKSBjb25zdAogICAgICAgICBhcHBlbmRDU1MoYnVpbGRlciwgQ1NTUHJvcGVydHlU
ZXh0U2hhZG93LCBtYWtlU3RyaW5nKGVkZ2VTdHlsZURyb3BTaGFkb3cuZ2V0KCksICIgYmxhY2si
KSwgaW1wb3J0YW50KTsKIAogICAgIGlmICh0ZXh0RWRnZVN0eWxlID09IGtNQUNhcHRpb25BcHBl
YXJhbmNlVGV4dEVkZ2VTdHlsZURyb3BTaGFkb3cgfHwgdGV4dEVkZ2VTdHlsZSA9PSBrTUFDYXB0
aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGVVbmlmb3JtKSB7Ci0gICAgICAgIGFwcGVuZENTUyhi
dWlsZGVyLCBDU1NQcm9wZXJ0eVN0cm9rZUNvbG9yLCAiYmxhY2siLCBpbXBvcnRhbnQpOworICAg
ICAgICBhcHBlbmRDU1MoYnVpbGRlciwgQ1NTUHJvcGVydHlTdHJva2VDb2xvciwgImJsYWNrIl9z
LCBpbXBvcnRhbnQpOwogICAgICAgICBhcHBlbmRDU1MoYnVpbGRlciwgQ1NTUHJvcGVydHlQYWlu
dE9yZGVyLCBnZXRWYWx1ZU5hbWUoQ1NTVmFsdWVTdHJva2UpLCBpbXBvcnRhbnQpOwogICAgICAg
ICBhcHBlbmRDU1MoYnVpbGRlciwgQ1NTUHJvcGVydHlTdHJva2VMaW5lam9pbiwgZ2V0VmFsdWVO
YW1lKENTU1ZhbHVlUm91bmQpLCBpbXBvcnRhbnQpOwogICAgICAgICBhcHBlbmRDU1MoYnVpbGRl
ciwgQ1NTUHJvcGVydHlTdHJva2VMaW5lY2FwLCBnZXRWYWx1ZU5hbWUoQ1NTVmFsdWVSb3VuZCks
IGltcG9ydGFudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggZGE3NWNlMDE5NzU0ZjZiNzg0
Mzg4ZWZhNDE1NmI4NmJmYmY4NTcxNS4uN2I1YWViYjliY2YzODk0N2JiNjJlZDlmZGNjNTAyOWIw
NTZiOThiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtNDA4LDcgKzQwOCw3IEBAIGJvb2wg
Q2hyb21lOjpwcmludChGcmFtZSYgZnJhbWUpCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGhh
dmUgUGFnZUdyb3VwTG9hZERlZmVycmVyLCBsaWtlIHJ1bk1vZGFsKCkgb3IgcnVuSmF2YVNjcmlw
dEFsZXJ0KCksIGJlY2F1c2UgaXQncyBubyBkaWZmZXJlbnQgZnJvbSB0aG9zZS4KIAogICAgIGlm
IChmcmFtZS5kb2N1bWVudCgpLT5pc1NhbmRib3hlZChTYW5kYm94TW9kYWxzKSkgewotICAgICAg
ICBmcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+cHJpbnRFcnJvck1lc3NhZ2UoIlVzZSBv
ZiB3aW5kb3cucHJpbnQgaXMgbm90IGFsbG93ZWQgaW4gYSBzYW5kYm94ZWQgZnJhbWUgd2hlbiB0
aGUgYWxsb3ctbW9kYWxzIGZsYWcgaXMgbm90IHNldC4iKTsKKyAgICAgICAgZnJhbWUuZG9jdW1l
bnQoKS0+ZG9tV2luZG93KCktPnByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LnByaW50
IGlzIG5vdCBhbGxvd2VkIGluIGEgc2FuZGJveGVkIGZyYW1lIHdoZW4gdGhlIGFsbG93LW1vZGFs
cyBmbGFnIGlzIG5vdCBzZXQuIl9zKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IDE0
YjFlMzdiZGM2NTFmZTM3ZTYzZGQ4YWI4ODE2NGQ4YjIyYmM3NWQuLmU5MjhjZTlhMTRmYWJmZWVl
ZmQ0OTA5ZWRkMWMwZGI5YTRjZmYyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTMxNSwxMCArMzE1LDEwIEBAIHZvaWQgQ29udGV4dE1l
bnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBh
Y3Rpb24sIGNvCiAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5yZWxvYWQoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDdXQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJDdXQiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdQYXN0ZToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlBh
c3RlIikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUi
X3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKQEAgLTQxMiwxMCArNDEyLDEw
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChD
b250ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgICAgICBvcGVuTmV3V2luZG93KG1f
Y29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVMaW5rVVJMKCksICpmcmFtZSwgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3cpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0JvbGQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJUb2dnbGVCb2xkIikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
Y29tbWFuZCgiVG9nZ2xlQm9sZCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIENvbnRleHRNZW51SXRlbVRhZ0l0YWxpYzoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNv
bW1hbmQoIlRvZ2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigp
LmNvbW1hbmQoIlRvZ2dsZUl0YWxpYyJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZToKICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLnRvZ2dsZVVuZGVybGluZSgpOwpAQCAtNDQ0LDEzICs0NDQsMTMgQEAgdm9pZCBDb250ZXh0
TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51QWN0aW9u
IGFjdGlvbiwgY28KICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0
aW9uKFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0KTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdDoKLSAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwiKS5l
eGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRp
bmdEaXJlY3Rpb25OYXR1cmFsIl9zKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0OgotICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmln
aHQiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4
dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDoK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlv
blJpZ2h0VG9MZWZ0IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFu
ZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQiX3MpLmV4ZWN1dGUoKTsKICAg
ICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdTZWFyY2hJblNwb3RsaWdodDoKQEAgLTEyNDgsMjUgKzEyNDgsMjUgQEAgdm9pZCBDb250
ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0m
IGl0ZW0pIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdMZWZ0VG9SaWdodDoKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdSaWdo
dFRvTGVmdDogewotICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9IGl0ZW0uYWN0aW9uKCkg
PT0gQ29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOworICAgICAg
ICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9IGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVt
VGFnTGVmdFRvUmlnaHQgPyAibHRyIl9zIDogInJ0bCJfczsKICAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0
aW9uLCBkaXJlY3Rpb24pICE9IFRyaVN0YXRlOjpGYWxzZTsKICAgICAgICAgICAgIHNob3VsZEVu
YWJsZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0OiB7Ci0gICAgICAgICAgICBF
ZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4
dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIik7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQg
Y29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25OYXR1cmFsIl9zKTsKICAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5zdGF0ZSgp
ID09IFRyaVN0YXRlOjpUcnVlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gY29tbWFuZC5p
c0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0OiB7Ci0gICAgICAgICAg
ICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtl
VGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCIpOworICAgICAgICAgICAgRWRpdG9yOjpD
b21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5n
RGlyZWN0aW9uTGVmdFRvUmlnaHQiX3MpOwogICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBjb21t
YW5kLnN0YXRlKCkgPT0gVHJpU3RhdGU6OlRydWU7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUg
PSBjb21tYW5kLmlzRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ6IHsK
LSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNv
bW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0Iik7CisgICAgICAgICAg
ICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtl
VGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCJfcyk7CiAgICAgICAgICAgICBzaG91bGRD
aGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICAgICAgICAgIHNo
b3VsZEVuYWJsZSA9IGNvbW1hbmQuaXNFbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTEzMTEsNyArMTMxMSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5h
YmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgYnJl
YWs7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6IHsK
LSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0
eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUi
KSAhPSBUcmlTdGF0ZTo6RmFsc2U7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5l
ZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9u
c0luRWZmZWN0LCAidW5kZXJsaW5lIl9zKSAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAgICAg
ICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEzMjQsMTIgKzEzMjQsMTIgQEAgdm9pZCBDb250
ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0m
IGl0ZW0pIGNvbnN0CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSB0cnVlOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnSXRhbGljOiB7Ci0gICAg
ICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShD
U1NQcm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyIpICE9IFRyaVN0YXRlOjpGYWxzZTsKKyAgICAg
ICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENT
U1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIl9zKSAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAgICAg
ICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdCb2xkOiB7Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5z
ZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikgIT0gVHJpU3Rh
dGU6OkZhbHNlOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2Vs
ZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCJfcykgIT0gVHJpU3Rh
dGU6OkZhbHNlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNh
bkVkaXRSaWNobHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVNlbGVjdGlvbi5jcHAKaW5kZXggNmIwNmFhYTIzNTI3ODRiODVlY2RiYzY3MWIwYTBk
NDNhMjgxZjM0Zi4uNmVhMGMzNDk1YWI2Y2M1NDNmOWJmZTY1N2NmMTEyZmI4ZDAxNDlkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcApAQCAtMzQwLDcgKzM0MCw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IERPTVNlbGVjdGlvbjo6ZXh0ZW5kKE5vZGUmIG5vZGUsIHVuc2lnbmVkIG9m
ZnNldCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAKICAgICBpZiAocmFuZ2VDb3VudCgpIDwg
MSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiZXh0ZW5k
KCkgcmVxdWlyZXMgYSBSYW5nZSB0byBiZSBhZGRlZCB0byB0aGUgU2VsZWN0aW9uIiB9OworICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJleHRlbmQoKSByZXF1
aXJlcyBhIFJhbmdlIHRvIGJlIGFkZGVkIHRvIHRoZSBTZWxlY3Rpb24iX3MgfTsKIAogICAgIGlm
IChmcmFtZS0+c2V0dGluZ3MoKS5saXZlUmFuZ2VTZWxlY3Rpb25FbmFibGVkKCkpIHsKICAgICAg
ICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKS0+Y29udGFpbnMobm9kZSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKaW5kZXggNTQ2YjRhNGRkZWViZGJjM2Q1ODIzYjBiMjc5NzJkNjY3YmM3MjEw
Zi4uZGQzY2NkYmJkMTM0NWZhYjkyMmY5ZmYzNjBlMmE4ZWFiOTZmYmZhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcApAQCAtMTA5NCw3ICsxMDk0LDcgQEAgdm9pZCBET01XaW5kb3c6OnBy
aW50KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFwYWdlLT5hcmVQcm9tcHRzQWxsb3dl
ZCgpKSB7Ci0gICAgICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LnByaW50IGlz
IG5vdCBhbGxvd2VkIHdoaWxlIHVubG9hZGluZyBhIHBhZ2UuIik7CisgICAgICAgIHByaW50RXJy
b3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LnByaW50IGlzIG5vdCBhbGxvd2VkIHdoaWxlIHVubG9h
ZGluZyBhIHBhZ2UuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTEyOCw3ICsx
MTI4LDcgQEAgdm9pZCBET01XaW5kb3c6OmFsZXJ0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAog
ICAgIFJlZlB0ciBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgaWYgKGRvY3VtZW50
LT5pc1NhbmRib3hlZChTYW5kYm94TW9kYWxzKSkgewotICAgICAgICBwcmludEVycm9yTWVzc2Fn
ZSgiVXNlIG9mIHdpbmRvdy5hbGVydCBpcyBub3QgYWxsb3dlZCBpbiBhIHNhbmRib3hlZCBmcmFt
ZSB3aGVuIHRoZSBhbGxvdy1tb2RhbHMgZmxhZyBpcyBub3Qgc2V0LiIpOworICAgICAgICBwcmlu
dEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5hbGVydCBpcyBub3QgYWxsb3dlZCBpbiBhIHNh
bmRib3hlZCBmcmFtZSB3aGVuIHRoZSBhbGxvdy1tb2RhbHMgZmxhZyBpcyBub3Qgc2V0LiJfcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMzcsNyArMTEzNyw3IEBAIHZvaWQgRE9N
V2luZG93OjphbGVydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmICghcGFnZS0+YXJlUHJvbXB0c0FsbG93ZWQoKSkgewotICAgICAgICBwcmludEVycm9y
TWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5hbGVydCBpcyBub3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRp
bmcgYSBwYWdlLiIpOworICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5h
bGVydCBpcyBub3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRpbmcgYSBwYWdlLiJfcyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTExNTcsNyArMTE1Nyw3IEBAIGJvb2wgRE9NV2luZG93Ojpj
b25maXJtRm9yQmluZGluZ3MoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiAgICAgUmVmUHRyIGRv
Y3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKICAgICBpZiAoZG9jdW1lbnQtPmlzU2FuZGJveGVk
KFNhbmRib3hNb2RhbHMpKSB7Ci0gICAgICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2lu
ZG93LmNvbmZpcm0gaXMgbm90IGFsbG93ZWQgaW4gYSBzYW5kYm94ZWQgZnJhbWUgd2hlbiB0aGUg
YWxsb3ctbW9kYWxzIGZsYWcgaXMgbm90IHNldC4iKTsKKyAgICAgICAgcHJpbnRFcnJvck1lc3Nh
Z2UoIlVzZSBvZiB3aW5kb3cuY29uZmlybSBpcyBub3QgYWxsb3dlZCBpbiBhIHNhbmRib3hlZCBm
cmFtZSB3aGVuIHRoZSBhbGxvdy1tb2RhbHMgZmxhZyBpcyBub3Qgc2V0LiJfcyk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTExNjYsNyArMTE2Niw3IEBAIGJvb2wgRE9NV2lu
ZG93Ojpjb25maXJtRm9yQmluZGluZ3MoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIXBhZ2UtPmFyZVByb21wdHNBbGxvd2VkKCkpIHsKLSAg
ICAgICAgcHJpbnRFcnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cuY29uZmlybSBpcyBub3QgYWxs
b3dlZCB3aGlsZSB1bmxvYWRpbmcgYSBwYWdlLiIpOworICAgICAgICBwcmludEVycm9yTWVzc2Fn
ZSgiVXNlIG9mIHdpbmRvdy5jb25maXJtIGlzIG5vdCBhbGxvd2VkIHdoaWxlIHVubG9hZGluZyBh
IHBhZ2UuIl9zKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTE4Niw3ICsx
MTg2LDcgQEAgU3RyaW5nIERPTVdpbmRvdzo6cHJvbXB0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUpCiAKICAgICBSZWZQdHIgZG9jdW1lbnQgPSB0aGlz
LT5kb2N1bWVudCgpOwogICAgIGlmIChkb2N1bWVudC0+aXNTYW5kYm94ZWQoU2FuZGJveE1vZGFs
cykpIHsKLSAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cucHJvbXB0IGlz
IG5vdCBhbGxvd2VkIGluIGEgc2FuZGJveGVkIGZyYW1lIHdoZW4gdGhlIGFsbG93LW1vZGFscyBm
bGFnIGlzIG5vdCBzZXQuIik7CisgICAgICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2lu
ZG93LnByb21wdCBpcyBub3QgYWxsb3dlZCBpbiBhIHNhbmRib3hlZCBmcmFtZSB3aGVuIHRoZSBh
bGxvdy1tb2RhbHMgZmxhZyBpcyBub3Qgc2V0LiJfcyk7CiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKICAgICB9CiAKQEAgLTExOTUsNyArMTE5NSw3IEBAIFN0cmluZyBET01XaW5kb3c6OnByb21w
dChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpZiAoIXBhZ2UtPmFyZVByb21wdHNBbGxvd2Vk
KCkpIHsKLSAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cucHJvbXB0IGlz
IG5vdCBhbGxvd2VkIHdoaWxlIHVubG9hZGluZyBhIHBhZ2UuIik7CisgICAgICAgIHByaW50RXJy
b3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LnByb21wdCBpcyBub3QgYWxsb3dlZCB3aGlsZSB1bmxv
YWRpbmcgYSBwYWdlLiJfcyk7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKQEAg
LTI2OTAsNyArMjY5MCw3IEBAIHZvaWQgRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmICghcGFnZS0+YXJlUHJvbXB0c0FsbG93ZWQoKSkgewotICAgICAgICBwcmlu
dEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5zaG93TW9kYWxEaWFsb2cgaXMgbm90IGFsbG93
ZWQgd2hpbGUgdW5sb2FkaW5nIGEgcGFnZS4iKTsKKyAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2Uo
IlVzZSBvZiB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGlzIG5vdCBhbGxvd2VkIHdoaWxlIHVubG9h
ZGluZyBhIHBhZ2UuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDk5NmUxODE4MjE2MGFkMGYxZjdkNDkwMzcyMzc1ZjNl
ZmYxZmFjN2UuLmQ2YmEyYjMzMDc2YWJmNjhmZGQ4OWYzOTJlNGU5YjhhMWZmYmZjMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM3OTIsMTEgKzM3OTIsMTEgQEAgc3Rh
dGljIHZvaWQgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudChGcmFtZSYgZnJhbWUsIEtl
eWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIEZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBm
cmFtZS5zZWxlY3Rpb24oKTsKIAotICAgIGJvb2wgaXNDb21tYW5kZWQgPSBldmVudC5nZXRNb2Rp
ZmllclN0YXRlKCJNZXRhIik7Ci0gICAgYm9vbCBpc09wdGlvbmVkID0gZXZlbnQuZ2V0TW9kaWZp
ZXJTdGF0ZSgiQWx0Iik7CisgICAgYm9vbCBpc0NvbW1hbmRlZCA9IGV2ZW50LmdldE1vZGlmaWVy
U3RhdGUoIk1ldGEiX3MpOworICAgIGJvb2wgaXNPcHRpb25lZCA9IGV2ZW50LmdldE1vZGlmaWVy
U3RhdGUoIkFsdCJfcyk7CiAgICAgYm9vbCBpc1NlbGVjdGlvbiA9ICFzZWxlY3Rpb24uaXNOb25l
KCk7CiAKLSAgICBGcmFtZVNlbGVjdGlvbjo6RUFsdGVyYXRpb24gYWx0ZXJuYXRpb24gPSBldmVu
dC5nZXRNb2RpZmllclN0YXRlKCJTaGlmdCIpID8gRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25F
eHRlbmQgOiBGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmU7CisgICAgRnJhbWVTZWxlY3Rp
b246OkVBbHRlcmF0aW9uIGFsdGVybmF0aW9uID0gZXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZSgiU2hp
ZnQiX3MpID8gRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQgOiBGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbk1vdmU7CiAgICAgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IFNl
bGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDsKICAgICBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IDEwY2RhY2QwZTZjOTA3ZGY0M2NjOGNlNTIwZGFkMTdl
ZWE5YTgwODcuLjhkN2Q5ZTY2ZDdiYzFkNDI5YWE1ZDdmZjQ2Njg1MDQwMDhhYWNkNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC05NSw5ICs5NSw5IEBAIHZvaWQgRXZlbnRT
b3VyY2U6OmNvbm5lY3QoKQogICAgIEFTU0VSVCghbV9yZXF1ZXN0SW5GbGlnaHQpOwogCiAgICAg
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgeyBtX3VybCB9OwotICAgIHJlcXVlc3Quc2V0SFRUUE1l
dGhvZCgiR0VUIik7Ci0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkFjY2VwdCwgInRleHQvZXZlbnQtc3RyZWFtIik7Ci0gICAgcmVxdWVzdC5zZXRIVFRQSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNhY2hlQ29udHJvbCwgIm5vLWNhY2hlIik7CisgICAg
cmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2NlcHQsICJ0ZXh0L2V2ZW50LXN0cmVhbSJfcyk7Cisg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNhY2hlQ29udHJv
bCwgIm5vLWNhY2hlIl9zKTsKICAgICBpZiAoIW1fbGFzdEV2ZW50SWQuaXNFbXB0eSgpKQogICAg
ICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6TGFzdEV2ZW50
SUQsIG1fbGFzdEV2ZW50SWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDlmYWY4YWRmNjli
NWNjNTVjMmIzYWZhN2FhNjFjZTJiZGMwYTA0N2YuLjA1MmNlZDk3YmU1ZjRlNmZjNDVkMWIyOGZl
NWJlYTQzMzkyYzY3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAg
c3RhdGljIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gY3JlYXRlUmVnRXhwRm9yTGFiZWxz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JgogICAgIC8vIFJFVklFVy0gdmVyc2lvbiBvZiB0aGlzIGNh
bGwgaW4gRnJhbWVNYWMubW0gY2FjaGVzIGJhc2VkIG9uIHRoZSBOU0FycmF5IHB0cnMgYmVpbmcK
ICAgICAvLyB0aGUgc2FtZSBhY3Jvc3MgY2FsbHMuICBXZSBjYW4ndCBkbyB0aGF0LgogCi0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24+IHdvcmRS
ZWdFeHAoIlxcdyIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJlZ3Vs
YXJFeHByZXNzaW9uPiB3b3JkUmVnRXhwKCJcXHciX3MpOwogICAgIFN0cmluZ0J1aWxkZXIgcGF0
dGVybjsKICAgICBwYXR0ZXJuLmFwcGVuZCgnKCcpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDAs
IG51bUxhYmVscyA9IGxhYmVscy5zaXplKCk7IGkgPCBudW1MYWJlbHM7IGkrKykgewpAQCAtNTAy
LDcgKzUwMiw3IEBAIHN0YXRpYyBTdHJpbmcgbWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIGNvbnN0IFN0cmluCiAgICAgU3RyaW5nIG11dGFibGVT
dHJpbmdUb01hdGNoID0gc3RyaW5nVG9NYXRjaDsKIAogICAgIC8vIE1ha2UgbnVtYmVycyBhbmQg
XydzIGluIGZpZWxkIG5hbWVzIGJlaGF2ZSBsaWtlIHdvcmQgYm91bmRhcmllcywgZS5nLiwgImFk
ZHJlc3MyIgotICAgIHJlcGxhY2UobXV0YWJsZVN0cmluZ1RvTWF0Y2gsIEpTQzo6WWFycjo6UmVn
dWxhckV4cHJlc3Npb24oIlxcZCIpLCAiICIpOworICAgIHJlcGxhY2UobXV0YWJsZVN0cmluZ1Rv
TWF0Y2gsIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24oIlxcZCJfcyksICIgIl9zKTsKICAg
ICBtdXRhYmxlU3RyaW5nVG9NYXRjaC5yZXBsYWNlKCdfJywgJyAnKTsKICAgICAKICAgICBKU0M6
OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ0V4cCA9IGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhs
YWJlbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGM5ZjVkNDhkY2I0NmM4MjRj
ODFlMjg2NjYzYWZiNzFhNGE1NTJkYjQuLjIzYjM4NjViZDc3YjhjNDY5MDg5YmU0ZjFjN2Y0MzYx
NTMyNWE1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTE0MDYsNyArMTQwNiw3
IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RNZWRpYVR5cGVGb3JQcmludGluZyhib29sIHByaW50
aW5nKQogICAgIGlmIChwcmludGluZykgewogICAgICAgICBpZiAobV9tZWRpYVR5cGVXaGVuTm90
UHJpbnRpbmcuaXNOdWxsKCkpCiAgICAgICAgICAgICBtX21lZGlhVHlwZVdoZW5Ob3RQcmludGlu
ZyA9IG1lZGlhVHlwZSgpOwotICAgICAgICBzZXRNZWRpYVR5cGUoInByaW50Iik7CisgICAgICAg
IHNldE1lZGlhVHlwZSgicHJpbnQiX3MpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9t
ZWRpYVR5cGVXaGVuTm90UHJpbnRpbmcuaXNOdWxsKCkpCiAgICAgICAgICAgICBzZXRNZWRpYVR5
cGUobV9tZWRpYVR5cGVXaGVuTm90UHJpbnRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0lu
dGVyc2VjdGlvbk9ic2VydmVyLmNwcAppbmRleCA1MTBiOWU0MTdjNjcxNjIwNTZhYzVlMTY5NmJh
ZGVjN2NjMjY4ZTI1Li5kMmFjYWIyOTQ1YjY1NTM3NzI3NTVhN2NhZTE5YTFlYmNiNmFlOTY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcApAQCAtNDgs
MTYgKzQ4LDE2IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxMZW5ndGhCb3g+IHBhcnNlUm9vdE1hcmdp
bihTdHJpbmcmIHJvb3RNYXJnaW4pCiAgICAgVmVjdG9yPExlbmd0aCwgND4gbWFyZ2luczsKICAg
ICB3aGlsZSAoIXRva2VuUmFuZ2UuYXRFbmQoKSkgewogICAgICAgICBpZiAobWFyZ2lucy5zaXpl
KCkgPT0gNCkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgIkZh
aWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2VjdGlvbk9ic2VydmVyJzogRXh0cmEgdGV4dCBmb3Vu
ZCBhdCB0aGUgZW5kIG9mIHJvb3RNYXJnaW4uIiB9OworICAgICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFN5bnRheEVycm9yLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCAnSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXInOiBFeHRyYSB0ZXh0IGZvdW5kIGF0IHRoZSBlbmQgb2Ygcm9vdE1hcmdpbi4iX3MgfTsK
ICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZSA9IENTU1Byb3Bl
cnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUxlbmd0aE9yUGVyY2VudCh0b2tlblJhbmdlLCBIVE1M
U3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOwogICAgICAgICBpZiAoIXBhcnNlZFZhbHVl
IHx8IHBhcnNlZFZhbHVlLT5pc0NhbGN1bGF0ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBTeW50YXhFcnJvciwgIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2VjdGlvbk9i
c2VydmVyJzogcm9vdE1hcmdpbiBtdXN0IGJlIHNwZWNpZmllZCBpbiBwaXhlbHMgb3IgcGVyY2Vu
dC4iIH07CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJGYWls
ZWQgdG8gY29uc3RydWN0ICdJbnRlcnNlY3Rpb25PYnNlcnZlcic6IHJvb3RNYXJnaW4gbXVzdCBi
ZSBzcGVjaWZpZWQgaW4gcGl4ZWxzIG9yIHBlcmNlbnQuIl9zIH07CiAgICAgICAgIGlmIChwYXJz
ZWRWYWx1ZS0+aXNQZXJjZW50YWdlKCkpCiAgICAgICAgICAgICBtYXJnaW5zLmFwcGVuZChMZW5n
dGgocGFyc2VkVmFsdWUtPmRvdWJsZVZhbHVlKCksIExlbmd0aFR5cGU6OlBlcmNlbnQpKTsKICAg
ICAgICAgZWxzZSBpZiAocGFyc2VkVmFsdWUtPmlzUHgoKSkKICAgICAgICAgICAgIG1hcmdpbnMu
YXBwZW5kKExlbmd0aChwYXJzZWRWYWx1ZS0+aW50VmFsdWUoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQp
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVy
cm9yLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInOiByb290TWFy
Z2luIG11c3QgYmUgc3BlY2lmaWVkIGluIHBpeGVscyBvciBwZXJjZW50LiIgfTsKKyAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgIkZhaWxlZCB0byBjb25zdHJ1Y3Qg
J0ludGVyc2VjdGlvbk9ic2VydmVyJzogcm9vdE1hcmdpbiBtdXN0IGJlIHNwZWNpZmllZCBpbiBw
aXhlbHMgb3IgcGVyY2VudC4iX3MgfTsKICAgICB9CiAgICAgc3dpdGNoIChtYXJnaW5zLnNpemUo
KSkgewogICAgIGNhc2UgMDoKQEAgLTEwOCw3ICsxMDgsNyBAQCBFeGNlcHRpb25PcjxSZWY8SW50
ZXJzZWN0aW9uT2JzZXJ2ZXI+PiBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6Y3JlYXRlKERvY3VtZW50
JiBkbwogCiAgICAgZm9yIChhdXRvIHRocmVzaG9sZCA6IHRocmVzaG9sZHMpIHsKICAgICAgICAg
aWYgKCEodGhyZXNob2xkID49IDAgJiYgdGhyZXNob2xkIDw9IDEpKQotICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJGYWlsZWQgdG8gY29uc3RydWN0ICdJbnRlcnNl
Y3Rpb25PYnNlcnZlcic6IGFsbCB0aHJlc2hvbGRzIG11c3QgbGllIGluIHRoZSByYW5nZSBbMC4w
LCAxLjBdLiIgfTsKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAi
RmFpbGVkIHRvIGNvbnN0cnVjdCAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInOiBhbGwgdGhyZXNob2xk
cyBtdXN0IGxpZSBpbiB0aGUgcmFuZ2UgWzAuMCwgMS4wXS4iX3MgfTsKICAgICB9CiAKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihkb2N1bWVudCwgV1RGTW92
ZShjYWxsYmFjayksIHJvb3QuZ2V0KCksIHJvb3RNYXJnaW5PckV4Y2VwdGlvbi5yZWxlYXNlUmV0
dXJuVmFsdWUoKSwgV1RGTW92ZSh0aHJlc2hvbGRzKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2dnZWRJblN0YXR1cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvZ2dl
ZEluU3RhdHVzLmNwcAppbmRleCA0NjczOGJkMzQzMjJjZGMxYzI4YWQ2ZjZmYzNjYmE4M2Q5MWY5
MjM4Li42NTc1Mjc3YTFhZDI4Y2FkZWM5ZjAzMWRjZWE4OTNjMGUxNzExNzI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvZ2dlZEluU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0xvZ2dlZEluU3RhdHVzLmNwcApAQCAtNDQsMTAgKzQ0LDEwIEBAIEV4Y2VwdGlv
bk9yPFVuaXF1ZVJlZjxMb2dnZWRJblN0YXR1cz4+IExvZ2dlZEluU3RhdHVzOjpjcmVhdGUoY29u
c3QgUmVnaXN0cmFibGVECiBFeGNlcHRpb25PcjxVbmlxdWVSZWY8TG9nZ2VkSW5TdGF0dXM+PiBM
b2dnZWRJblN0YXR1czo6Y3JlYXRlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGNv
bnN0IFN0cmluZyYgdXNlcm5hbWUsIENyZWRlbnRpYWxUb2tlblR5cGUgdG9rZW5UeXBlLCBBdXRo
ZW50aWNhdGlvblR5cGUgYXV0aFR5cGUsIFNlY29uZHMgdGltZVRvTGl2ZSkKIHsKICAgICBpZiAo
ZG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJy
b3IsICJJc0xvZ2dlZEluIHN0YXR1cyBjYW4gb25seSBiZSBzZXQgZm9yIG9yaWdpbnMgd2l0aCBh
IHJlZ2lzdHJhYmxlIGRvbWFpbi4iIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1
cml0eUVycm9yLCAiSXNMb2dnZWRJbiBzdGF0dXMgY2FuIG9ubHkgYmUgc2V0IGZvciBvcmlnaW5z
IHdpdGggYSByZWdpc3RyYWJsZSBkb21haW4uIl9zIH07CiAKICAgICBpZiAodXNlcm5hbWUuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJJc0xvZ2dl
ZEluIHJlcXVpcmVzIGEgbm9uLWVtcHR5IHVzZXJuYW1lLiIgfTsKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiSXNMb2dnZWRJbiByZXF1aXJlcyBhIG5vbi1lbXB0eSB1
c2VybmFtZS4iX3MgfTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHVzZXJuYW1lLmxlbmd0aCgp
OwogICAgIGlmIChsZW5ndGggPiBVc2VybmFtZU1heExlbmd0aCkKQEAgLTU3LDcgKzU3LDcgQEAg
RXhjZXB0aW9uT3I8VW5pcXVlUmVmPExvZ2dlZEluU3RhdHVzPj4gTG9nZ2VkSW5TdGF0dXM6OmNy
ZWF0ZShjb25zdCBSZWdpc3RyYWJsZUQKICAgICAgICAgcmV0dXJuIGlzU3BhY2VPck5ld2xpbmUo
Y2gpOwogICAgIH0pOwogICAgIGlmIChzcGFjZU9yTmV3bGluZSAhPSBub3RGb3VuZCkKLSAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRDaGFyYWN0ZXJFcnJvciwgIklzTG9nZ2VkSW4g
dXNlcm5hbWVzIGNhbm5vdCBjb250YWluIHdoaXRlc3BhY2Ugb3IgbmV3bGluZXMuIiB9OworICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZENoYXJhY3RlckVycm9yLCAiSXNMb2dnZWRJ
biB1c2VybmFtZXMgY2Fubm90IGNvbnRhaW4gd2hpdGVzcGFjZSBvciBuZXdsaW5lcy4iX3MgfTsK
IAogICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPExvZ2dlZEluU3RhdHVzPigqbmV3IExvZ2dlZElu
U3RhdHVzKGRvbWFpbiwgdXNlcm5hbWUsIHRva2VuVHlwZSwgYXV0aFR5cGUsIHRpbWVUb0xpdmUp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCmluZGV4IDdiMTBjNjM1NjA4
MTkzODhkNzg4NWJlMDM3NGQ4ZjBmMTk0NzNiMDkuLmMwN2NjZTQ4NmM3YzZjNWFlYzFiMzc2Nzk3
MTU4MGE5MTVkZDY0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcApAQCAt
MTcxLDcgKzE3MSw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXImIE5hdmlnYXRvckJhc2U6OnNl
cnZpY2VXb3JrZXIoKQogRXhjZXB0aW9uT3I8U2VydmljZVdvcmtlckNvbnRhaW5lciY+IE5hdmln
YXRvckJhc2U6OnNlcnZpY2VXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkK
IHsKICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpICYmIGRvd25jYXN0PERvY3VtZW50Pihj
b250ZXh0KS5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFNlY3VyaXR5RXJyb3IsICJTZXJ2aWNlIFdvcmtlciBpcyBkaXNhYmxlZCBiZWNhdXNl
IHRoZSBjb250ZXh0IGlzIHNhbmRib3hlZCBhbmQgbGFja3MgdGhlICdhbGxvdy1zYW1lLW9yaWdp
bicgZmxhZyIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJT
ZXJ2aWNlIFdvcmtlciBpcyBkaXNhYmxlZCBiZWNhdXNlIHRoZSBjb250ZXh0IGlzIHNhbmRib3hl
ZCBhbmQgbGFja3MgdGhlICdhbGxvdy1zYW1lLW9yaWdpbicgZmxhZyJfcyB9OwogICAgIHJldHVy
biBzZXJ2aWNlV29ya2VyKCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDY2M2Y5
ODRiNTdkNGQwZWQzNDM5ZjA5MTNjMTRiMWNiMWUxOGZjMTcuLmQ5NGQzY2QxN2FlNWZmMDU2YmY2
YTNmMGIyOTdiZDBiNmE1MWU3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjA0Miw3ICsyMDQy
LDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgaWYg
KCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIAotICAgIG1fdXNlclN0
eWxlU2hlZXQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvY3NzIiktPmRlY29k
ZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBtX3VzZXJTdHlsZVNo
ZWV0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2NzcyJfcyktPmRlY29kZUFu
ZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIHJldHVybiBtX3VzZXJT
dHlsZVNoZWV0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCmluZGV4IDFlMGU2MzNlY2M0ZjRjM2Q2
NTc1M2MyMzA1ZmRhNmMzNmVkZGYyNWEuLmRkYmE4MzVlZjg5MjAzYWFlYWRhMWQzMDNiMjM2OTQ1
OGQ0NzI4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKQEAgLTExODMsNyArMTE4Myw3IEBAIFF1
aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VB
Y2Nlc3NRdWlyayhFbGVtZW50JiBlCiAgICAgCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gbG9naW5Qb3B1cFdpbmRvd0ZlYXR1cmVTdHJpbmcgPSAidG9vbGJhcj1ubyxsb2NhdGlv
bj15ZXMsZGlyZWN0b3JpZXM9bm8sc3RhdHVzPW5vLG1lbnViYXI9bm8sc2Nyb2xsYmFycz15ZXMs
cmVzaXphYmxlPXllcyxjb3B5aGlzdG9yeT1ubyx3aWR0aD01OTksaGVpZ2h0PTYwMCx0b3A9NDIw
LGxlZnQ9OTgwLjUiX3M7CiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlclNjcmlwdD4g
a2luamFMb2dpblVzZXJTY3JpcHQgeyAiZnVuY3Rpb24gdHJpZ2dlckxvZ2luRm9ybSgpIHsgbGV0
IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnanNfaGVhZGVyLXVz
ZXJidXR0b24nKTsgaWYgKGVsZW1lbnRzICYmIGVsZW1lbnRzWzBdKSB7IGVsZW1lbnRzWzBdLmNs
aWNrKCk7IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOyB9IH0gbGV0IGludGVydmFsID0gc2V0SW50
ZXJ2YWwodHJpZ2dlckxvZ2luRm9ybSwgMjAwKTsiLCBVUkwoYWJvdXRCbGFua1VSTCgpKSwgVmVj
dG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgVXNlclNjcmlwdEluamVjdGlvblRpbWU6
OkRvY3VtZW50RW5kLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1l
T25seSwgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6WWVzIH07CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFVzZXJTY3JpcHQ+IGtpbmphTG9naW5Vc2VyU2NyaXB0IHsgImZ1
bmN0aW9uIHRyaWdnZXJMb2dpbkZvcm0oKSB7IGxldCBlbGVtZW50cyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoJ2pzX2hlYWRlci11c2VyYnV0dG9uJyk7IGlmIChlbGVtZW50cyAm
JiBlbGVtZW50c1swXSkgeyBlbGVtZW50c1swXS5jbGljaygpOyBjbGVhckludGVydmFsKGludGVy
dmFsKTsgfSB9IGxldCBpbnRlcnZhbCA9IHNldEludGVydmFsKHRyaWdnZXJMb2dpbkZvcm0sIDIw
MCk7Il9zLCBVUkwoYWJvdXRCbGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0
cmluZz4oKSwgVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kLCBVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwgV2FpdEZvck5vdGlmaWNhdGlv
bkJlZm9yZUluamVjdGluZzo6WWVzIH07CiAKICAgICBpZiAoZXZlbnRUeXBlID09ICJjbGljayIp
IHsKICAgICAgICAgaWYgKCFtX2RvY3VtZW50KQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgUXVpcmtz
OjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vz
c1F1aXJrKEVsZW1lbnQmIGUKICAgICAgICAgICAgIGF1dG8qIGFic3RyYWN0RnJhbWUgPSBwcm94
eS0+ZnJhbWUoKTsKICAgICAgICAgICAgIGlmIChhYnN0cmFjdEZyYW1lICYmIGlzPEZyYW1lPigq
YWJzdHJhY3RGcmFtZSkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBmcmFtZSA9IGRvd25jYXN0
PEZyYW1lPigqYWJzdHJhY3RGcmFtZSk7Ci0gICAgICAgICAgICAgICAgYXV0byB3b3JsZCA9IFNj
cmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKCJraW5qYUNvbVF1aXJrV29ybGQiLCBTY3JpcHRD
b250cm9sbGVyOjpXb3JsZFR5cGU6OlVzZXIpOworICAgICAgICAgICAgICAgIGF1dG8gd29ybGQg
PSBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVXb3JsZCgia2luamFDb21RdWlya1dvcmxkIl9zLCBT
Y3JpcHRDb250cm9sbGVyOjpXb3JsZFR5cGU6OlVzZXIpOwogICAgICAgICAgICAgICAgIGZyYW1l
LmFkZFVzZXJTY3JpcHRBd2FpdGluZ05vdGlmaWNhdGlvbih3b3JsZC5nZXQoKSwga2luamFMb2dp
blVzZXJTY3JpcHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nl
c3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50OwogICAgICAgICAgICAgfQpAQCAtMTIzOSw3ICsx
MjM5LDcgQEAgUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlv
bmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVsZW1lbnQmIGUKICAgICAgICAgfQogCiAgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IEJCQ1JhZGlvUGxheWVyUG9wVXBXaW5kb3dGZWF0
dXJlU3RyaW5nID0gImZlYXR1cmVzdHJpbmcgd2lkdGg9NDAwLGhlaWdodD03MzAiX3M7Ci0gICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVc2VyU2NyaXB0PiBCQkNVc2VyU2NyaXB0IHsgImZ1
bmN0aW9uIHRyaWdnZXJSZWRpcmVjdCgpIHsgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IFwiaHR0
cHM6Ly93d3cuYmJjLmNvLnVrL3NvdW5kcy9wbGF5ZXIvYmJjX3dvcmxkX3NlcnZpY2VcIjsgfSB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uICgpIHsgdHJpZ2dlclJlZGly
ZWN0KCk7IH0pIiwgVVJMKGFib3V0QmxhbmtVUkwoKSksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3Rv
cjxTdHJpbmc+KCksIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCwgVXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHksIFdhaXRGb3JOb3RpZmlj
YXRpb25CZWZvcmVJbmplY3Rpbmc6OlllcyB9OworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8VXNlclNjcmlwdD4gQkJDVXNlclNjcmlwdCB7ICJmdW5jdGlvbiB0cmlnZ2VyUmVkaXJlY3Qo
KSB7IGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBcImh0dHBzOi8vd3d3LmJiYy5jby51ay9zb3Vu
ZHMvcGxheWVyL2JiY193b3JsZF9zZXJ2aWNlXCI7IH0gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
J2xvYWQnLCBmdW5jdGlvbiAoKSB7IHRyaWdnZXJSZWRpcmVjdCgpOyB9KSJfcywgVVJMKGFib3V0
QmxhbmtVUkwoKSksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIFVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHksIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6
OlllcyB9OwogCiAgICAgICAgIC8vIEJCQyBSYWRpb1BsYXllciBjYXNlLgogICAgICAgICBpZiAo
aXNCQkNEb21haW4oZG9tYWluKSAmJiBpc0JCQ1BvcFVwUGxheWVyRWxlbWVudChlbGVtZW50KSkg
ewpAQCAtMTI1Niw3ICsxMjU2LDcgQEAgUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJr
czo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVsZW1lbnQmIGUKICAgICAgICAg
ICAgICAgICAgICAgYXV0byogYWJzdHJhY3RGcmFtZSA9IHByb3h5LT5mcmFtZSgpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoaXM8RnJhbWU+KGFic3RyYWN0RnJhbWUpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBhdXRvKiBmcmFtZSA9IGRvd25jYXN0PEZyYW1lPihhYnN0cmFjdEZyYW1l
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gd29ybGQgPSBTY3JpcHRDb250cm9sbGVy
OjpjcmVhdGVXb3JsZCgiYmJjUmFkaW9QbGF5ZXJXb3JsZCIsIFNjcmlwdENvbnRyb2xsZXI6Oldv
cmxkVHlwZTo6VXNlcik7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHdvcmxkID0gU2Ny
aXB0Q29udHJvbGxlcjo6Y3JlYXRlV29ybGQoImJiY1JhZGlvUGxheWVyV29ybGQiX3MsIFNjcmlw
dENvbnRyb2xsZXI6OldvcmxkVHlwZTo6VXNlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICBm
cmFtZS0+YWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKHdvcmxkLmdldCgpLCBCQkNV
c2VyU2NyaXB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcAppbmRleCBjODMy
Y2Y1NmE5NThhMmU3YTllZjkxYjI3MmMyZjBjMTQ1YzZmY2MzLi4yMDgzNDA5N2JiMTg5MTJiMTk3
NjIyMzBmNDA2YWJlNWIwOGM0YmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dp
bmRvd0ZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVz
LmNwcApAQCAtMzgsOCArMzgsOCBAQCB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gRGlhbG9nRmVhdHVyZXNNYXA7CiBzdGF0aWMgdm9pZCBz
ZXRXaW5kb3dGZWF0dXJlKFdpbmRvd0ZlYXR1cmVzJiwgU3RyaW5nVmlldyBrZXksIFN0cmluZ1Zp
ZXcgdmFsdWUpOwogCiBzdGF0aWMgRGlhbG9nRmVhdHVyZXNNYXAgcGFyc2VEaWFsb2dGZWF0dXJl
c01hcChTdHJpbmdWaWV3KTsKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJl
KGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiwgY29uc3QgY2hhcioga2V5KTsKLXN0YXRpYyBzdGQ6
Om9wdGlvbmFsPGZsb2F0PiBmbG9hdEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmLCBj
b25zdCBjaGFyKiBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4KTsKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiwgQVNDSUlMaXRl
cmFsIGtleSk7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxmbG9hdD4gZmxvYXRGZWF0dXJlKGNvbnN0
IERpYWxvZ0ZlYXR1cmVzTWFwJiwgQVNDSUlMaXRlcmFsIGtleSwgZmxvYXQgbWluLCBmbG9hdCBt
YXgpOwogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNmZWF0dXJlLXNlcGFyYXRv
cgogc3RhdGljIGJvb2wgaXNTZXBhcmF0b3IoVUNoYXIgY2hhcmFjdGVyLCBGZWF0dXJlTW9kZSBt
b2RlKQpAQCAtMTg1LDMwICsxODUsMzAgQEAgV2luZG93RmVhdHVyZXMgcGFyc2VEaWFsb2dGZWF0
dXJlcyhTdHJpbmdWaWV3IGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBjb25zdCBGbG9hdFIKICAgICBm
ZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUgPSBmYWxzZTsKICAgICBmZWF0dXJlcy5kaWFsb2cg
PSB0cnVlOwogCi0gICAgZmxvYXQgd2lkdGggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJk
aWFsb2d3aWR0aCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpKS52YWx1ZV9vcig2
MjApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1h
Y0lFCi0gICAgZmxvYXQgaGVpZ2h0ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9n
aGVpZ2h0IiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpKS52YWx1ZV9vcig0NTAp
OyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lF
CisgICAgZmxvYXQgd2lkdGggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d3aWR0
aCJfcywgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkpLnZhbHVlX29yKDYyMCk7IC8v
IGRlZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKKyAg
ICBmbG9hdCBoZWlnaHQgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2doZWlnaHQi
X3MsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkudmFsdWVfb3IoNDUwKTsgLy8g
ZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQogCiAg
ICAgZmVhdHVyZXMud2lkdGggPSB3aWR0aDsKICAgICBmZWF0dXJlcy5oZWlnaHQgPSBoZWlnaHQ7
CiAKLSAgICBmZWF0dXJlcy54ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nbGVm
dCIsIHNjcmVlbkF2YWlsYWJsZVJlY3QueCgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1heFgoKSAt
IHdpZHRoKTsKLSAgICBmZWF0dXJlcy55ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlh
bG9ndG9wIiwgc2NyZWVuQXZhaWxhYmxlUmVjdC55KCksIHNjcmVlbkF2YWlsYWJsZVJlY3QubWF4
WSgpIC0gaGVpZ2h0KTsKKyAgICBmZWF0dXJlcy54ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFw
LCAiZGlhbG9nbGVmdCJfcywgc2NyZWVuQXZhaWxhYmxlUmVjdC54KCksIHNjcmVlbkF2YWlsYWJs
ZVJlY3QubWF4WCgpIC0gd2lkdGgpOworICAgIGZlYXR1cmVzLnkgPSBmbG9hdEZlYXR1cmUoZmVh
dHVyZXNNYXAsICJkaWFsb2d0b3AiX3MsIHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpLCBzY3JlZW5B
dmFpbGFibGVSZWN0Lm1heFkoKSAtIGhlaWdodCk7CiAKLSAgICBpZiAoYm9vbEZlYXR1cmUoZmVh
dHVyZXNNYXAsICJjZW50ZXIiKS52YWx1ZV9vcih0cnVlKSkgeworICAgIGlmIChib29sRmVhdHVy
ZShmZWF0dXJlc01hcCwgImNlbnRlciJfcykudmFsdWVfb3IodHJ1ZSkpIHsKICAgICAgICAgaWYg
KCFmZWF0dXJlcy54KQogICAgICAgICAgICAgZmVhdHVyZXMueCA9IHNjcmVlbkF2YWlsYWJsZVJl
Y3QueCgpICsgKHNjcmVlbkF2YWlsYWJsZVJlY3Qud2lkdGgoKSAtIHdpZHRoKSAvIDI7CiAgICAg
ICAgIGlmICghZmVhdHVyZXMueSkKICAgICAgICAgICAgIGZlYXR1cmVzLnkgPSBzY3JlZW5BdmFp
bGFibGVSZWN0LnkoKSArIChzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpIC0gaGVpZ2h0KSAv
IDI7CiAgICAgfQogCi0gICAgZmVhdHVyZXMucmVzaXphYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVy
ZXNNYXAsICJyZXNpemFibGUiKS52YWx1ZV9vcihmYWxzZSk7Ci0gICAgZmVhdHVyZXMuc2Nyb2xs
YmFyc1Zpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInNjcm9sbCIpLnZhbHVlX29y
KHRydWUpOwotICAgIGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUgPSBib29sRmVhdHVyZShmZWF0
dXJlc01hcCwgInN0YXR1cyIpLnZhbHVlX29yKGZhbHNlKTsKKyAgICBmZWF0dXJlcy5yZXNpemFi
bGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInJlc2l6YWJsZSJfcykudmFsdWVfb3IoZmFs
c2UpOworICAgIGZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVy
ZXNNYXAsICJzY3JvbGwiX3MpLnZhbHVlX29yKHRydWUpOworICAgIGZlYXR1cmVzLnN0YXR1c0Jh
clZpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInN0YXR1cyJfcykudmFsdWVfb3Io
ZmFsc2UpOwogCiAgICAgcmV0dXJuIGZlYXR1cmVzOwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25h
bDxib29sPiBib29sRmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIGNv
bnN0IGNoYXIqIGtleSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNv
bnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgQVNDSUlMaXRlcmFsIGtleSkKIHsKICAg
ICBhdXRvIGl0ID0gZmVhdHVyZXMuZmluZChrZXkpOwogICAgIGlmIChpdCA9PSBmZWF0dXJlcy5l
bmQoKSkKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBib29s
RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIGNvbnN0CiAgICAgICAg
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAib24iKTsKIH0KIAotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGZsb2F0RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJl
c01hcCYgZmVhdHVyZXMsIGNvbnN0IGNoYXIqIGtleSwgZmxvYXQgbWluLCBmbG9hdCBtYXgpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxmbG9hdD4gZmxvYXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1
cmVzTWFwJiBmZWF0dXJlcywgQVNDSUlMaXRlcmFsIGtleSwgZmxvYXQgbWluLCBmbG9hdCBtYXgp
CiB7CiAgICAgYXV0byBpdCA9IGZlYXR1cmVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXQgPT0gZmVh
dHVyZXMuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5LmNwcAppbmRleCAxNjI3NGU5NGFmMTBjOGQzODU0MGU5YzgzNTE5MjFjNzBiOGY4
ZDdmLi5jZjY2OWEwNTU2YmQ3NjQ0NDcwYWRkOWFiNjA5ODg2ZDQ5NWRjYjNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTcw
LDkgKzcwLDkgQEAgc3RhdGljIFN0cmluZyBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHYKIHsKICAgICBib29sIGlzRGVmYXVs
dFNyYyA9IHZpb2xhdGVkRGlyZWN0aXZlLmlzRGVmYXVsdFNyYygpOwogICAgIFN0cmluZyBuYW1l
ID0gdmlvbGF0ZWREaXJlY3RpdmUubmFtZUZvclJlcG9ydGluZygpOwotICAgIGlmICh2aW9sYXRl
ZERpcmVjdGl2ZS5uYW1lRm9yUmVwb3J0aW5nKCkuc3RhcnRzV2l0aChDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjKSkKKyAgICBpZiAodmlvbGF0ZWREaXJlY3Rp
dmUubmFtZUZvclJlcG9ydGluZygpLnN0YXJ0c1dpdGgoU3RyaW5nVmlldyB7IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMgfSkpCiAgICAgICAgIG5hbWUgPSBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjOwotICAgIGVsc2Ug
aWYgKHZpb2xhdGVkRGlyZWN0aXZlLm5hbWVGb3JSZXBvcnRpbmcoKS5zdGFydHNXaXRoKENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzdHlsZVNyYykpCisgICAgZWxzZSBpZiAo
dmlvbGF0ZWREaXJlY3RpdmUubmFtZUZvclJlcG9ydGluZygpLnN0YXJ0c1dpdGgoU3RyaW5nVmll
dyB7IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzdHlsZVNyYyB9KSkKICAg
ICAgICAgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzdHlsZVNy
YzsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKHZpb2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2ZUxp
c3QoKS5pc1JlcG9ydE9ubHkoKSA/ICJbUmVwb3J0IE9ubHldICIgOiAiIiwKQEAgLTQ5Myw3ICs0
OTMsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dFdmFsKEpTQzo6SlNHbG9i
YWxPYmplY3QqIHN0YXRlLCBMb2dUb0NvbnNvbGUgcwogICAgIGJvb2wgZGlkTm90aWZ5SW5zcGVj
dG9yID0gZmFsc2U7CiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERpcmVjdGl2ZSA9IFsmXSAoY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2ZSkgewog
ICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBzaG91bGRMb2dUb0NvbnNvbGUgPT0gTG9n
VG9Db25zb2xlOjpZZXMgPyBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbih2aW9sYXRlZERpcmVj
dGl2ZSwgVVJMKCksICJSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBzY3JpcHQiLCAiJ3Vuc2FmZS1ldmFs
JyIpIDogU3RyaW5nKCk7Ci0gICAgICAgIHJlcG9ydFZpb2xhdGlvbih2aW9sYXRlZERpcmVjdGl2
ZSwgImV2YWwiLCBjb25zb2xlTWVzc2FnZSwgc3RhdGUsIGNvZGVDb250ZW50KTsKKyAgICAgICAg
cmVwb3J0VmlvbGF0aW9uKHZpb2xhdGVkRGlyZWN0aXZlLCAiZXZhbCJfcywgY29uc29sZU1lc3Nh
Z2UsIHN0YXRlLCBjb2RlQ29udGVudCk7CiAgICAgICAgIGlmICghZGlkTm90aWZ5SW5zcGVjdG9y
ICYmICF2aW9sYXRlZERpcmVjdGl2ZS5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCkpIHsK
ICAgICAgICAgICAgIHJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rvcih2aW9s
YXRlZERpcmVjdGl2ZS50ZXh0KCkpOwogICAgICAgICAgICAgZGlkTm90aWZ5SW5zcGVjdG9yID0g
dHJ1ZTsKQEAgLTkwMCw3ICs5MDAsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVw
b3J0SW52YWxpZFBsdWdpblR5cGVzKGNvbnN0IFN0cmluZyYgcGx1Z2luVHlwZSkgYwogewogICAg
IFN0cmluZyBtZXNzYWdlOwogICAgIGlmIChwbHVnaW5UeXBlLmlzTnVsbCgpKQotICAgICAgICBt
ZXNzYWdlID0gIidwbHVnaW4tdHlwZXMnIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2
ZSBpcyBlbXB0eTsgYWxsIHBsdWdpbnMgd2lsbCBiZSBibG9ja2VkLlxuIjsKKyAgICAgICAgbWVz
c2FnZSA9ICIncGx1Z2luLXR5cGVzJyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmUg
aXMgZW1wdHk7IGFsbCBwbHVnaW5zIHdpbGwgYmUgYmxvY2tlZC5cbiJfczsKICAgICBlbHNlCiAg
ICAgICAgIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJJbnZhbGlkIHBsdWdpbiB0eXBlIGluICdwbHVn
aW4tdHlwZXMnIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogJyIsIHBsdWdpblR5
cGUsICInLlxuIik7CiAgICAgbG9nVG9Db25zb2xlKG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0LmNwcAppbmRleCAwZmQ2NjhiMDI4MzJkZDQyZjRmZGVjMWUxMDIwNTJiNGE3MDUxYmUx
Li5hMDUxZjZlYmEwNjZiNGZlN2U0Mjk0Zjk3YTBlZjUzOGI1YzQ5MGFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0LmNwcApAQCAtNjcxLDkgKzY3MSw5IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6c3RyaWN0RHluYW1pY0luY2x1ZGVkKCkKIGJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6c2hvdWxkUmVwb3J0U2FtcGxlKGNvbnN0IFN0
cmluZyYgdmlvbGF0ZWREaXJlY3RpdmUpIGNvbnN0CiB7CiAgICAgQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0aXZlID0gbnVsbHB0cjsKLSAgICBpZiAodmlv
bGF0ZWREaXJlY3RpdmUuc3RhcnRzV2l0aChDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVO
YW1lczo6c3R5bGVTcmMpKQorICAgIGlmICh2aW9sYXRlZERpcmVjdGl2ZS5zdGFydHNXaXRoKFN0
cmluZ1ZpZXcgeyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmMg
fSkpCiAgICAgICAgIGRpcmVjdGl2ZSA9IG1fc3R5bGVTcmMuZ2V0KCk7Ci0gICAgZWxzZSBpZiAo
dmlvbGF0ZWREaXJlY3RpdmUuc3RhcnRzV2l0aChDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVOYW1lczo6c2NyaXB0U3JjKSkKKyAgICBlbHNlIGlmICh2aW9sYXRlZERpcmVjdGl2ZS5zdGFy
dHNXaXRoKFN0cmluZ1ZpZXcgeyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6
c2NyaXB0U3JjIH0pKQogICAgICAgICBkaXJlY3RpdmUgPSBtX3NjcmlwdFNyYy5nZXQoKTsKIAog
ICAgIHJldHVybiBkaXJlY3RpdmUgJiYgZGlyZWN0aXZlLT5zaG91bGRSZXBvcnRTYW1wbGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcAppbmRleCAxYTBiYzM2NDIyYjM3NDRhOTA3YjI3
ODk2ZTMwYTQyZGRjMTkwZTAzLi40NGU5NGU1NmUxZjA1ZjY3MDQwODA4YjAxZTAyOTY3YWVkY2Nk
Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVOYW1lcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwCkBAIC0zMCwzMiArMzAsMzIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTmFtZXMgewogCi1jb25zdCBjaGFyKiBjb25zdCBiYXNlVVJJID0gImJhc2UtdXJpIjsK
LWNvbnN0IGNoYXIqIGNvbnN0IGNoaWxkU3JjID0gImNoaWxkLXNyYyI7Ci1jb25zdCBjaGFyKiBj
b25zdCBjb25uZWN0U3JjID0gImNvbm5lY3Qtc3JjIjsKLWNvbnN0IGNoYXIqIGNvbnN0IGRlZmF1
bHRTcmMgPSAiZGVmYXVsdC1zcmMiOwotY29uc3QgY2hhciogY29uc3QgZm9udFNyYyA9ICJmb250
LXNyYyI7Ci1jb25zdCBjaGFyKiBjb25zdCBmb3JtQWN0aW9uID0gImZvcm0tYWN0aW9uIjsKLWNv
bnN0IGNoYXIqIGNvbnN0IGZyYW1lQW5jZXN0b3JzID0gImZyYW1lLWFuY2VzdG9ycyI7Ci1jb25z
dCBjaGFyKiBjb25zdCBmcmFtZVNyYyA9ICJmcmFtZS1zcmMiOworQVNDSUlMaXRlcmFsIGJhc2VV
UkkgPSAiYmFzZS11cmkiX3M7CitBU0NJSUxpdGVyYWwgY2hpbGRTcmMgPSAiY2hpbGQtc3JjIl9z
OworQVNDSUlMaXRlcmFsIGNvbm5lY3RTcmMgPSAiY29ubmVjdC1zcmMiX3M7CitBU0NJSUxpdGVy
YWwgZGVmYXVsdFNyYyA9ICJkZWZhdWx0LXNyYyJfczsKK0FTQ0lJTGl0ZXJhbCBmb250U3JjID0g
ImZvbnQtc3JjIl9zOworQVNDSUlMaXRlcmFsIGZvcm1BY3Rpb24gPSAiZm9ybS1hY3Rpb24iX3M7
CitBU0NJSUxpdGVyYWwgZnJhbWVBbmNlc3RvcnMgPSAiZnJhbWUtYW5jZXN0b3JzIl9zOworQVND
SUlMaXRlcmFsIGZyYW1lU3JjID0gImZyYW1lLXNyYyJfczsKICNpZiBFTkFCTEUoQVBQTElDQVRJ
T05fTUFOSUZFU1QpCi1jb25zdCBjaGFyKiBjb25zdCBtYW5pZmVzdFNyYyA9ICJtYW5pZmVzdC1z
cmMiOworQVNDSUlMaXRlcmFsIG1hbmlmZXN0U3JjID0gIm1hbmlmZXN0LXNyYyJfczsKICNlbmRp
ZgotY29uc3QgY2hhciogY29uc3QgaW1nU3JjID0gImltZy1zcmMiOwotY29uc3QgY2hhciogY29u
c3QgbWVkaWFTcmMgPSAibWVkaWEtc3JjIjsKLWNvbnN0IGNoYXIqIGNvbnN0IG9iamVjdFNyYyA9
ICJvYmplY3Qtc3JjIjsKLWNvbnN0IGNoYXIqIGNvbnN0IHBsdWdpblR5cGVzID0gInBsdWdpbi10
eXBlcyI7Ci1jb25zdCBjaGFyKiBjb25zdCByZXBvcnRVUkkgPSAicmVwb3J0LXVyaSI7Ci1jb25z
dCBjaGFyKiBjb25zdCBzYW5kYm94ID0gInNhbmRib3giOwotY29uc3QgY2hhciogY29uc3Qgc2Ny
aXB0U3JjID0gInNjcmlwdC1zcmMiOwotY29uc3QgY2hhciogY29uc3Qgc2NyaXB0U3JjQXR0ciA9
ICJzY3JpcHQtc3JjLWF0dHIiOwotY29uc3QgY2hhciogY29uc3Qgc2NyaXB0U3JjRWxlbSA9ICJz
Y3JpcHQtc3JjLWVsZW0iOwotY29uc3QgY2hhciogY29uc3Qgc3R5bGVTcmMgPSAic3R5bGUtc3Jj
IjsKLWNvbnN0IGNoYXIqIGNvbnN0IHN0eWxlU3JjQXR0ciA9ICJzdHlsZS1zcmMtYXR0ciI7Ci1j
b25zdCBjaGFyKiBjb25zdCBzdHlsZVNyY0VsZW0gPSAic3R5bGUtc3JjLWVsZW0iOwotY29uc3Qg
Y2hhciogY29uc3QgdXBncmFkZUluc2VjdXJlUmVxdWVzdHMgPSAidXBncmFkZS1pbnNlY3VyZS1y
ZXF1ZXN0cyI7Ci1jb25zdCBjaGFyKiBjb25zdCBibG9ja0FsbE1peGVkQ29udGVudCA9ICJibG9j
ay1hbGwtbWl4ZWQtY29udGVudCI7Ci1jb25zdCBjaGFyKiBjb25zdCB3b3JrZXJTcmMgPSAid29y
a2VyLXNyYyI7CitBU0NJSUxpdGVyYWwgaW1nU3JjID0gImltZy1zcmMiX3M7CitBU0NJSUxpdGVy
YWwgbWVkaWFTcmMgPSAibWVkaWEtc3JjIl9zOworQVNDSUlMaXRlcmFsIG9iamVjdFNyYyA9ICJv
YmplY3Qtc3JjIl9zOworQVNDSUlMaXRlcmFsIHBsdWdpblR5cGVzID0gInBsdWdpbi10eXBlcyJf
czsKK0FTQ0lJTGl0ZXJhbCByZXBvcnRVUkkgPSAicmVwb3J0LXVyaSJfczsKK0FTQ0lJTGl0ZXJh
bCBzYW5kYm94ID0gInNhbmRib3giX3M7CitBU0NJSUxpdGVyYWwgc2NyaXB0U3JjID0gInNjcmlw
dC1zcmMiX3M7CitBU0NJSUxpdGVyYWwgc2NyaXB0U3JjQXR0ciA9ICJzY3JpcHQtc3JjLWF0dHIi
X3M7CitBU0NJSUxpdGVyYWwgc2NyaXB0U3JjRWxlbSA9ICJzY3JpcHQtc3JjLWVsZW0iX3M7CitB
U0NJSUxpdGVyYWwgc3R5bGVTcmMgPSAic3R5bGUtc3JjIl9zOworQVNDSUlMaXRlcmFsIHN0eWxl
U3JjQXR0ciA9ICJzdHlsZS1zcmMtYXR0ciJfczsKK0FTQ0lJTGl0ZXJhbCBzdHlsZVNyY0VsZW0g
PSAic3R5bGUtc3JjLWVsZW0iX3M7CitBU0NJSUxpdGVyYWwgdXBncmFkZUluc2VjdXJlUmVxdWVz
dHMgPSAidXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cyJfczsKK0FTQ0lJTGl0ZXJhbCBibG9ja0Fs
bE1peGVkQ29udGVudCA9ICJibG9jay1hbGwtbWl4ZWQtY29udGVudCJfczsKK0FTQ0lJTGl0ZXJh
bCB3b3JrZXJTcmMgPSAid29ya2VyLXNyYyJfczsKIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgKaW5k
ZXggMGQwYzFjZTZlODQxZTI0NDcxOWRmZDMwYWExYTUwY2YyOGM3NDU2ZC4uMDliNGRmOGM1NzBj
NmEyNWRmOTk5NDFmNDMzODAyZGNmMGY4ODAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5o
CkBAIC0yNSwzNiArMjUsMzggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lcyB7CiAKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBiYXNl
VVJJOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGNoaWxkU3JjOwotZXh0ZXJuIGNvbnN0IGNo
YXIqIGNvbnN0IGNvbm5lY3RTcmM7Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3QgZGVmYXVsdFNy
YzsKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBmb250U3JjOwotZXh0ZXJuIGNvbnN0IGNoYXIq
IGNvbnN0IGZvcm1BY3Rpb247Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3QgZnJhbWVBbmNlc3Rv
cnM7Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3QgZnJhbWVTcmM7Ci1leHRlcm4gY29uc3QgY2hh
ciogY29uc3QgaW1nU3JjOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBiYXNlVVJJOworZXh0ZXJuIEFT
Q0lJTGl0ZXJhbCBjaGlsZFNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgY29ubmVjdFNyYzsKK2V4
dGVybiBBU0NJSUxpdGVyYWwgZGVmYXVsdFNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgZm9udFNy
YzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgZm9ybUFjdGlvbjsKK2V4dGVybiBBU0NJSUxpdGVyYWwg
ZnJhbWVBbmNlc3RvcnM7CitleHRlcm4gQVNDSUlMaXRlcmFsIGZyYW1lU3JjOworZXh0ZXJuIEFT
Q0lJTGl0ZXJhbCBpbWdTcmM7CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotZXh0
ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IG1hbmlmZXN0U3JjOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBt
YW5pZmVzdFNyYzsKICNlbmRpZgotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IG1lZGlhU3JjOwot
ZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IG9iamVjdFNyYzsKLWV4dGVybiBjb25zdCBjaGFyKiBj
b25zdCBwbHVnaW5UeXBlczsKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCByZXBvcnRVUkk7Ci1l
eHRlcm4gY29uc3QgY2hhciogY29uc3Qgc2FuZGJveDsKLWV4dGVybiBjb25zdCBjaGFyKiBjb25z
dCBzY3JpcHRTcmM7Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3Qgc2NyaXB0U3JjRWxlbTsKLWV4
dGVybiBjb25zdCBjaGFyKiBjb25zdCBzY3JpcHRTcmNBdHRyOwotZXh0ZXJuIGNvbnN0IGNoYXIq
IGNvbnN0IHN0eWxlU3JjOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHN0eWxlU3JjQXR0cjsK
LWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzdHlsZVNyY0VsZW07Ci1leHRlcm4gY29uc3QgY2hh
ciogY29uc3QgdXBncmFkZUluc2VjdXJlUmVxdWVzdHM7Ci1leHRlcm4gY29uc3QgY2hhciogY29u
c3QgYmxvY2tBbGxNaXhlZENvbnRlbnQ7Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3Qgd29ya2Vy
U3JjOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBtZWRpYVNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwg
b2JqZWN0U3JjOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBwbHVnaW5UeXBlczsKK2V4dGVybiBBU0NJ
SUxpdGVyYWwgcmVwb3J0VVJJOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBzYW5kYm94OworZXh0ZXJu
IEFTQ0lJTGl0ZXJhbCBzY3JpcHRTcmM7CitleHRlcm4gQVNDSUlMaXRlcmFsIHNjcmlwdFNyY0Vs
ZW07CitleHRlcm4gQVNDSUlMaXRlcmFsIHNjcmlwdFNyY0F0dHI7CitleHRlcm4gQVNDSUlMaXRl
cmFsIHN0eWxlU3JjOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBzdHlsZVNyY0F0dHI7CitleHRlcm4g
QVNDSUlMaXRlcmFsIHN0eWxlU3JjRWxlbTsKK2V4dGVybiBBU0NJSUxpdGVyYWwgdXBncmFkZUlu
c2VjdXJlUmVxdWVzdHM7CitleHRlcm4gQVNDSUlMaXRlcmFsIGJsb2NrQWxsTWl4ZWRDb250ZW50
OworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCB3b3JrZXJTcmM7CiAKIH0gLy8gbmFtZXNwYWNlIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAppbmRleCA1YTM0Y2VhMDU0YWM2NTRhZDMy
NDJmOTIwYTQyODE3MDFmZWI2NmI0Li40MTk2NTc5YTNjNzQ2MTlmZTM3ZGRmMDk1MzIzNjhjOGIx
Y2Q2NzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVS
ZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVn
aXN0cnkuY3BwCkBAIC03OSwxMCArNzksMTAgQEAgc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAm
IGFsbEJ1aWx0aW5TY2hlbWVzKCkKICAgICAgICAgfTsKIAogICAgICAgICAvLyBPdGhlciBtaXNj
IHNjaGVtZXMgdGhhdCB0aGUgTGVnYWN5U2NoZW1lUmVnaXN0cnkgZG9lc24ndCBrbm93IGFib3V0
LgotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgb3RoZXJTY2hlbWVzW10gPSB7Ci0g
ICAgICAgICAgICAid2Via2l0LWZha2UtdXJsIiwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBB
U0NJSUxpdGVyYWwgb3RoZXJTY2hlbWVzW10gPSB7CisgICAgICAgICAgICAid2Via2l0LWZha2Ut
dXJsIl9zLAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgICAgICJzYWZhcmktZXh0ZW5zaW9u
IiwKKyAgICAgICAgICAgICJzYWZhcmktZXh0ZW5zaW9uIl9zLAogI2VuZGlmCiAjaWYgVVNFKFFV
SUNLX0xPT0spCiAgICAgICAgICAgICBRTFByZXZpZXdQcm90b2NvbCwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKaW5kZXggOGE3ZThlZjZiY2UyM2MxZjg0
YWQ0MDMwNmNkNmY1ZjVjOTBlNThkYS4uMjlmZmM1NDkzYWNmMDg4MDkyMGY2ZWU1MWNjYzYwZDI5
MzllZjA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3Ry
aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5j
cHAKQEAgLTc0NSwxOSArNzQ1LDE5IEBAIFN0cmluZyBBWExpbmtBY3Rpb25WZXJiKCkKIFN0cmlu
ZyBBWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJiKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiAic2VsZWN0IjsKKyAgICByZXR1cm4gInNlbGVjdCJfczsKIH0KIAogU3RyaW5n
IEFYTWVudUxpc3RBY3Rpb25WZXJiKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiAic2VsZWN0IjsKKyAgICByZXR1cm4gInNlbGVjdCJfczsKIH0KIAogU3RyaW5nIEFYTGlz
dEl0ZW1BY3Rpb25WZXJiKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAi
c2VsZWN0IjsKKyAgICByZXR1cm4gInNlbGVjdCJfczsKIH0KIAogI2lmIEVOQUJMRShBUFBMRV9Q
QVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NsZWVwRGlzYWJsZXIuY3BwCmluZGV4IDI5ZGZj
YjQzZTNhZGIxMzAyNTViZWM2NmFiMjBmOTA3NTdiNDdjY2YuLjFlODJhOTk0Nzc3MTQ0MmFlNjM3
YjhmNzU0NDBkMWIxNWU1N2U0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NsZWVwRGlzYWJsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NsZWVwRGlz
YWJsZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2xl
ZXBEaXNhYmxlcjo6U2xlZXBEaXNhYmxlcihjb25zdCBjaGFyKiByZWFzb24sIFBBTDo6U2xlZXBE
aXNhYmxlcjo6VHlwZSB0eXBlKQorU2xlZXBEaXNhYmxlcjo6U2xlZXBEaXNhYmxlcihjb25zdCBT
dHJpbmcmIHJlYXNvbiwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlIHR5cGUpCiAgICAgOiBtX3R5
cGUodHlwZSkKIHsKICAgICBpZiAoc2xlZXBEaXNhYmxlckNsaWVudCgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmgKaW5kZXggZjZlMTFjNjQ4ZjU0MjExMDI2YzFjOTIw
MmNlNDZhZTVjNzIzZGY4Ni4uY2EyNzVjMzVmNzRhMTRkM2FjM2RkMWQwMDY5OWNhYjIzZmE3YmQz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2xlZXBEaXNhYmxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NsZWVwRGlzYWJsZXIuaApAQCAtMzMsNyArMzMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTbGVlcERpc2FibGVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBTbGVlcERp
c2FibGVyKGNvbnN0IGNoYXIqLCBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5cGUpOworICAgIFdFQkNP
UkVfRVhQT1JUIFNsZWVwRGlzYWJsZXIoY29uc3QgU3RyaW5nJiwgUEFMOjpTbGVlcERpc2FibGVy
OjpUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+U2xlZXBEaXNhYmxlcigpOwogCiAgICAgUEFM
OjpTbGVlcERpc2FibGVyOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuY3BwCmluZGV4IDEz
Y2YyNzI0MDIzMWI1NGM1YThlZmJiZDVhNjBhMDE0ZTZmMzE1NWUuLmFkMDQzYTM4MmIxZDE4ODU2
MWNkNjY3NTY3YjFiODc3Njc2NDU2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURkRhdGFiYXNlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBIUlRGRGF0YWJhc2U6OkhS
VEZEYXRhYmFzZShmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIHVuc2lnbmVkIGVsZXZhdGlvbklu
ZGV4ID0gMDsKICAgICBmb3IgKGludCBlbGV2YXRpb24gPSBNaW5FbGV2YXRpb247IGVsZXZhdGlv
biA8PSBNYXhFbGV2YXRpb247IGVsZXZhdGlvbiArPSBSYXdFbGV2YXRpb25BbmdsZVNwYWNpbmcp
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IGhydGZFbGV2YXRpb24g
PSBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KCJDb21wb3NpdGUiLCBlbGV2YXRpb24s
IHNhbXBsZVJhdGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gaHJ0
ZkVsZXZhdGlvbiA9IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoIkNvbXBvc2l0ZSJf
cywgZWxldmF0aW9uLCBzYW1wbGVSYXRlKTsKICAgICAgICAgQVNTRVJUKGhydGZFbGV2YXRpb24u
Z2V0KCkpOwogICAgICAgICBpZiAoIWhydGZFbGV2YXRpb24uZ2V0KCkpCiAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVByaXZhdGUuY3BwCmluZGV4IGQ4M2IyZjBlYzkzZTQyYTJkYTBjZGUyNTA4OWVhMGU2NDlk
N2M2MzEuLjE1YjFlMDBmNGFiMmQwMmE2M2I1YTQ3YzY1ZTJlNTUyYTJmOTQyODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUu
Y3BwCkBAIC0zOTksNyArMzk5LDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBh
YmlsaXR5Pj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm8KICAgICAgICAg
Ly8gMy44LiBJZiB0aGUgdXNlciBhZ2VudCBkb2VzIG5vdCByZWNvZ25pemUgb25lIG9yIG1vcmUg
cGFyYW1ldGVycywgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgogICAgICAgICAvLyAz
LjkuIExldCBtZWRpYSB0eXBlcyBiZSB0aGUgc2V0IG9mIGNvZGVjcyBhbmQgY29kZWMgY29uc3Ry
YWludHMgc3BlY2lmaWVkIGJ5IHBhcmFtZXRlcnMuIFRoZSBjYXNlLXNlbnNpdGl2aXR5CiAgICAg
ICAgIC8vICAgICAgb2Ygc3RyaW5nIGNvbXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFw
cHJvcHJpYXRlIFJGQyBvciBvdGhlciBzcGVjaWZpY2F0aW9uLgotICAgICAgICBTdHJpbmcgY29k
ZWNzID0gY29udGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgiY29kZWNzIik7CisgICAg
ICAgIFN0cmluZyBjb2RlY3MgPSBjb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJj
b2RlY3MiX3MpOwogICAgICAgICBpZiAoY29udGVudFR5cGUtPnBhcmFtZXRlckNvdW50KCkgPiAo
Y29kZWNzLmlzRW1wdHkoKSA/IDAgOiAxKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggMThkNzhmNzFiNWRiYzE1MjM5MjcyYTgyZWVl
Mjg2Nzk5Mjg0YTkwYi4uZmE5YjgyNTNmYTBkMjQ4YjZhNmM4NGQwODY5ODI3OTU2NzJkMTQwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPEtleUhhbmRsZT4+PiBwYXJzZUxpY2Vuc2VGb3Jt
YXQoY29uc3QgSlNPTjo6TwogewogICAgIC8vIElmIHRoZSAna2V5cycga2V5IGlzIHByZXNlbnQg
aW4gdGhlIHJvb3Qgb2JqZWN0LCBwYXJzZSB0aGUgSlNPTiBmdXJ0aGVyCiAgICAgLy8gYWNjb3Jk
aW5nIHRvIHRoZSBzcGVjaWZpZWQgJ2xpY2Vuc2UnIGZvcm1hdC4KLSAgICBhdXRvIGl0ID0gcm9v
dC5maW5kKCJrZXlzIik7CisgICAgYXV0byBpdCA9IHJvb3QuZmluZCgia2V5cyJfcyk7CiAgICAg
aWYgKGl0ID09IHJvb3QuZW5kKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAg
LTY3LDE1ICs2NywxNSBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPEtleUhh
bmRsZT4+PiBwYXJzZUxpY2Vuc2VGb3JtYXQoY29uc3QgSlNPTjo6TwogICAgICAgICAgICAgaWYg
KCFrZXlPYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAg
ICBhdXRvIGtleVR5cGUgPSBrZXlPYmplY3QtPmdldFN0cmluZygia3R5Iik7CisgICAgICAgICAg
ICBhdXRvIGtleVR5cGUgPSBrZXlPYmplY3QtPmdldFN0cmluZygia3R5Il9zKTsKICAgICAgICAg
ICAgIGlmICgha2V5VHlwZSB8fCAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5VHlw
ZSwgIm9jdCIpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAg
YXV0byBrZXlJRCA9IGtleU9iamVjdC0+Z2V0U3RyaW5nKCJraWQiKTsKKyAgICAgICAgICAgIGF1
dG8ga2V5SUQgPSBrZXlPYmplY3QtPmdldFN0cmluZygia2lkIl9zKTsKICAgICAgICAgICAgIGlm
ICgha2V5SUQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBh
dXRvIGtleVZhbHVlID0ga2V5T2JqZWN0LT5nZXRTdHJpbmcoImsiKTsKKyAgICAgICAgICAgIGF1
dG8ga2V5VmFsdWUgPSBrZXlPYmplY3QtPmdldFN0cmluZygiayJfcyk7CiAgICAgICAgICAgICBp
ZiAoIWtleVZhbHVlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtOTksNyAr
OTksNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxpY2Vuc2VSZWxlYXNlQWNrbm93bGVkZ2VtZW50Rm9y
bWF0KGNvbnN0IEpTT046Ok9iamVjdCYgcm9vdCkKIHsKICAgICAvLyBJZiB0aGUgJ2tpZHMnIGtl
eSBpcyBwcmVzZW50IGluIHRoZSByb290IG9iamVjdCwgcGFyc2UgdGhlIEpTT04gZnVydGhlcgog
ICAgIC8vIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkICdsaWNlbnNlIHJlbGVhc2UgYWNrbm93
bGVkZ2VtZW50JyBmb3JtYXQuCi0gICAgYXV0byBpdCA9IHJvb3QuZmluZCgia2lkcyIpOworICAg
IGF1dG8gaXQgPSByb290LmZpbmQoImtpZHMiX3MpOwogICAgIGlmIChpdCA9PSByb290LmVuZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNv
bnN0IEZyYWdtZW50ZQogICAgICAgICBpbmRleCArPSBDbGVhcktleTo6S2V5SURTaXplSW5CeXRl
czsKICAgICB9CiAKLSAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNB
cnJheSkpOworICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiX3MsIFdURk1vdmUoa2V5SWRzQXJy
YXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4
KCk7CiAgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgp
KTsKICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEo
Y29uc3QgRnJhZ21lbnRlZAogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVu
dCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2Vx
dWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgogICAgIGtleUlkc0FycmF5LT5wdXNo
U3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CiAKLSAgICBvYmplY3QtPnNldEFycmF5KCJraWRz
IiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOworICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiX3Ms
IFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50
b0pTT05TdHJpbmcoKS51dGY4KCk7CiAgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCks
IGpzb25EYXRhLmxlbmd0aCgpKTsKICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKQEAgLTU5Miw3
ICs1OTIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgICAgICAgICAgICAgIEFTU0VS
VChrZXktPmlkKCkuc2l6ZSgpIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSk7CiAgICAgICAgICAgICAgICAgYXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9T
dHJpbmcoa2V5LT5pZCgpLmRhdGEoKSwga2V5LT5pZCgpLnNpemUoKSkpOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgcm9vdE9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGFycmF5
KSk7CisgICAgICAgICAgICByb290T2JqZWN0LT5zZXRBcnJheSgia2lkcyJfcywgV1RGTW92ZShh
cnJheSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQ29weSB0aGUgSlNPTiBkYXRhIGludG8g
YSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAKaW5kZXggM2U3N2FiNzk0Y2Q1MWFmNjJlMjcwZTM1YWNhYmNiYTlm
OGY1MTBhOC4uY2Y1ZjAzNTFiZDU3YmQ1MDgyMDhhZDE2OWNlMDM0NjFlODliZWJmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTUyMyw3ICs1MjMsNyBA
QCBib29sIEZvbnQ6OmlzUHJvYmFibHlPbmx5VXNlZFRvUmVuZGVySWNvbnMoKSBjb25zdAogU3Ry
aW5nIEZvbnQ6OmRlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBpZiAob3JpZ2luKCkgPT0gT3Jp
Z2luOjpSZW1vdGUpCi0gICAgICAgIHJldHVybiAiW2N1c3RvbSBmb250XSI7CisgICAgICAgIHJl
dHVybiAiW2N1c3RvbSBmb250XSJfczsKIAogICAgIHJldHVybiBwbGF0Zm9ybURhdGEoKS5kZXNj
cmlwdGlvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1R5cGVzLmNwcAppbmRleCAyODhiOGE1ZjAwMDA2ZWM3YjNlMWMyY2E1YWM2NmRhYWFj
MWUyNTYzLi4xNTdkODMwOWFlM2I2NTYwMTNkZDdkYWFlYzIxZjkyOGY5N2MxMzZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcApA
QCAtMzUsNDIgKzM1LDQyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGNvbXBvc2l0ZU9wZXJhdG9yTmFtZXNbXSA9IHsKLSAgICAiY2xlYXIiLAot
ICAgICJjb3B5IiwKLSAgICAic291cmNlLW92ZXIiLAotICAgICJzb3VyY2UtaW4iLAotICAgICJz
b3VyY2Utb3V0IiwKLSAgICAic291cmNlLWF0b3AiLAotICAgICJkZXN0aW5hdGlvbi1vdmVyIiwK
LSAgICAiZGVzdGluYXRpb24taW4iLAotICAgICJkZXN0aW5hdGlvbi1vdXQiLAotICAgICJkZXN0
aW5hdGlvbi1hdG9wIiwKLSAgICAieG9yIiwKLSAgICAiZGFya2VyIiwKLSAgICAibGlnaHRlciIs
Ci0gICAgImRpZmZlcmVuY2UiCitzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBjb21wb3Np
dGVPcGVyYXRvck5hbWVzW10gPSB7CisgICAgImNsZWFyIl9zLAorICAgICJjb3B5Il9zLAorICAg
ICJzb3VyY2Utb3ZlciJfcywKKyAgICAic291cmNlLWluIl9zLAorICAgICJzb3VyY2Utb3V0Il9z
LAorICAgICJzb3VyY2UtYXRvcCJfcywKKyAgICAiZGVzdGluYXRpb24tb3ZlciJfcywKKyAgICAi
ZGVzdGluYXRpb24taW4iX3MsCisgICAgImRlc3RpbmF0aW9uLW91dCJfcywKKyAgICAiZGVzdGlu
YXRpb24tYXRvcCJfcywKKyAgICAieG9yIl9zLAorICAgICJkYXJrZXIiX3MsCisgICAgImxpZ2h0
ZXIiX3MsCisgICAgImRpZmZlcmVuY2UiX3MKIH07CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBibGVuZE9wZXJhdG9yTmFtZXNbXSA9IHsKLSAgICAibm9ybWFsIiwKLSAgICAibXVsdGlwbHki
LAotICAgICJzY3JlZW4iLAotICAgICJkYXJrZW4iLAotICAgICJsaWdodGVuIiwKLSAgICAib3Zl
cmxheSIsCi0gICAgImNvbG9yLWRvZGdlIiwKLSAgICAiY29sb3ItYnVybiIsCi0gICAgImhhcmQt
bGlnaHQiLAotICAgICJzb2Z0LWxpZ2h0IiwKLSAgICAiZGlmZmVyZW5jZSIsCi0gICAgImV4Y2x1
c2lvbiIsCi0gICAgImh1ZSIsCi0gICAgInNhdHVyYXRpb24iLAotICAgICJjb2xvciIsCi0gICAg
Imx1bWlub3NpdHkiLAotICAgICJwbHVzLWRhcmtlciIsCi0gICAgInBsdXMtbGlnaHRlciIKK3N0
YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGJsZW5kT3BlcmF0b3JOYW1lc1tdID0geworICAg
ICJub3JtYWwiX3MsCisgICAgIm11bHRpcGx5Il9zLAorICAgICJzY3JlZW4iX3MsCisgICAgImRh
cmtlbiJfcywKKyAgICAibGlnaHRlbiJfcywKKyAgICAib3ZlcmxheSJfcywKKyAgICAiY29sb3It
ZG9kZ2UiX3MsCisgICAgImNvbG9yLWJ1cm4iX3MsCisgICAgImhhcmQtbGlnaHQiX3MsCisgICAg
InNvZnQtbGlnaHQiX3MsCisgICAgImRpZmZlcmVuY2UiX3MsCisgICAgImV4Y2x1c2lvbiJfcywK
KyAgICAiaHVlIl9zLAorICAgICJzYXR1cmF0aW9uIl9zLAorICAgICJjb2xvciJfcywKKyAgICAi
bHVtaW5vc2l0eSJfcywKKyAgICAicGx1cy1kYXJrZXIiX3MsCisgICAgInBsdXMtbGlnaHRlciJf
cwogfTsKIGNvbnN0IHVpbnQ4X3QgbnVtQ29tcG9zaXRlT3BlcmF0b3JOYW1lcyA9IFdURl9BUlJB
WV9MRU5HVEgoY29tcG9zaXRlT3BlcmF0b3JOYW1lcyk7CiBjb25zdCB1aW50OF90IG51bUJsZW5k
T3BlcmF0b3JOYW1lcyA9IFdURl9BUlJBWV9MRU5HVEgoYmxlbmRPcGVyYXRvck5hbWVzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWND
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1
ZS5jcHAKaW5kZXggM2VjODAwNWYzOGI2ZGU2YTE1NWMzMDVmNzU4YzViMDk4OWQ5ZTdkMS4uOGU3
MzhmN2YwNGI3MDUxOWExNjdlYzJhOTk2YjQ3Zjg4NzVmZWZlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5jcHAKQEAgLTUw
LDIyICs1MCwyMiBAQCBTdHJpbmcgSW5iYW5kR2VuZXJpY0N1ZTo6dG9KU09OU3RyaW5nKCkgY29u
c3QKICAgICBvYmplY3QtPnNldERvdWJsZSgic3RhcnQiX3MsIG1fY3VlRGF0YS5tX3N0YXJ0VGlt
ZS50b0RvdWJsZSgpKTsKICAgICBvYmplY3QtPnNldERvdWJsZSgiZW5kIl9zLCBtX2N1ZURhdGEu
bV9lbmRUaW1lLnRvRG91YmxlKCkpOwogCi0gICAgY29uc3QgY2hhciogc3RhdHVzID0gIiI7Cisg
ICAgQVNDSUlMaXRlcmFsIHN0YXR1cyA9ICIiX3M7CiAgICAgc3dpdGNoIChtX2N1ZURhdGEubV9z
dGF0dXMpIHsKICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6OlVuaW5pdGlhbGl6ZWQ6
Ci0gICAgICAgIHN0YXR1cyA9ICJVbmluaXRpYWxpemVkIjsKKyAgICAgICAgc3RhdHVzID0gIlVu
aW5pdGlhbGl6ZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6
OlN0YXR1czo6UGFydGlhbDoKLSAgICAgICAgc3RhdHVzID0gIlBhcnRpYWwiOworICAgICAgICBz
dGF0dXMgPSAiUGFydGlhbCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHZW5lcmljQ3Vl
RGF0YTo6U3RhdHVzOjpDb21wbGV0ZToKLSAgICAgICAgc3RhdHVzID0gIkNvbXBsZXRlIjsKKyAg
ICAgICAgc3RhdHVzID0gIkNvbXBsZXRlIl9zOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
b2JqZWN0LT5zZXRTdHJpbmcoInN0YXR1cyIsIHN0YXR1cyk7CisgICAgb2JqZWN0LT5zZXRTdHJp
bmcoInN0YXR1cyJfcywgc3RhdHVzKTsKIAogICAgIGlmICghbV9jdWVEYXRhLm1faWQuaXNFbXB0
eSgpKQotICAgICAgICBvYmplY3QtPnNldFN0cmluZygiaWQiLCBtX2N1ZURhdGEubV9pZCk7Cisg
ICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJpZCJfcywgbV9jdWVEYXRhLm1faWQpOwogCiAgICAg
aWYgKG1fY3VlRGF0YS5tX2xpbmUgPiAwKQogICAgICAgICBvYmplY3QtPnNldERvdWJsZSgibGlu
ZSJfcywgbV9jdWVEYXRhLm1fbGluZSk7CkBAIC03NywxOSArNzcsMTkgQEAgU3RyaW5nIEluYmFu
ZEdlbmVyaWNDdWU6OnRvSlNPTlN0cmluZygpIGNvbnN0CiAgICAgICAgIG9iamVjdC0+c2V0RG91
YmxlKCJwb3NpdGlvbiJfcywgbV9jdWVEYXRhLm1fcG9zaXRpb24pOwogCiAgICAgaWYgKG1fY3Vl
RGF0YS5tX2FsaWduICE9IEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6Ok5vbmUpIHsKLSAgICAg
ICAgY29uc3QgY2hhciogYWxpZ24gPSAiIjsKKyAgICAgICAgQVNDSUlMaXRlcmFsIGFsaWduID0g
IiJfczsKICAgICAgICAgc3dpdGNoIChtX2N1ZURhdGEubV9hbGlnbikgewogICAgICAgICBjYXNl
IEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6OlN0YXJ0OgotICAgICAgICAgICAgYWxpZ24gPSAi
U3RhcnQiOworICAgICAgICAgICAgYWxpZ24gPSAiU3RhcnQiX3M7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpNaWRkbGU6Ci0gICAg
ICAgICAgICBhbGlnbiA9ICJNaWRkbGUiOworICAgICAgICAgICAgYWxpZ24gPSAiTWlkZGxlIl9z
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkFsaWdu
bWVudDo6RW5kOgotICAgICAgICAgICAgYWxpZ24gPSAiRW5kIjsKKyAgICAgICAgICAgIGFsaWdu
ID0gIkVuZCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdlbmVyaWNDdWVE
YXRhOjpBbGlnbm1lbnQ6Ok5vbmU6Ci0gICAgICAgICAgICBhbGlnbiA9ICJOb25lIjsKKyAgICAg
ICAgICAgIGFsaWduID0gIk5vbmUiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBvYmplY3QtPnNldFN0cmluZygiYWxpZ24iX3MsIGFsaWduKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA2ZjQ5YWYw
NDZkMTI0NjNhNGRlZmE5ZjE0ODlhNzE1MzJhOGRhZjhhLi5lZGQ5MzEwYjU2YjBhYzg4OWEyYzkz
MjExY2FiMDhhMzRhY2Q3NDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcGxheSgpIGZpbmFsIHsgfQogICAgIHZvaWQgcGF1c2UoKSBmaW5hbCB7IH0KIAotICAgIFN0
cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJOdWxsTWVkaWFQ
bGF5ZXIiOyB9CisgICAgU3RyaW5nIGVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gIk51bGxNZWRpYVBsYXllciJfczsgfQogCiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZv
cm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2Ny
aXB0aW9uVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAKaW5kZXggNjJkNDkxZDI4
Nzk0NjE3NTA3ODAxNGEwOTQ1YjI2MjI2ZTJkZWJmMC4uMDNiZWZmOTkzN2FmNjQxYzg3OWM5YTZk
OGMzMTRjMWYwMTU3N2Y3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vRm9ybWF0RGVzY3Jp
cHRpb25VdGlsaXRpZXMuY3BwCkBAIC0xMDIsMTQgKzEwMiwxNCBAQCBTdHJpbmcgY29kZWNGcm9t
Rm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlv
bikKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zRGljdCA9IHN0
YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oUEFMOjpDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0
ZW5zaW9uKGZvcm1hdERlc2NyaXB0aW9uLCBQQUw6OmdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVz
Y3JpcHRpb25FeHRlbnNpb25fU2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcygpKSk7CiAg
ICAgICAgICAgICBpZiAoIXNhbXBsZUV4dGVuc2lvbnNEaWN0KQotICAgICAgICAgICAgICAgIHJl
dHVybiAiYXZjMSI7CisgICAgICAgICAgICAgICAgcmV0dXJuICJhdmMxIl9zOwogICAgICAgICAg
ICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rp
b25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGljdCwgQ0ZTVFIoImF2Y0MiKSkpOwogICAg
ICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQotICAgICAgICAgICAgICAgIHJldHVybiAi
YXZjMSI7CisgICAgICAgICAgICAgICAgcmV0dXJuICJhdmMxIl9zOwogICAgICAgICAgICAgYXV0
byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxl
RXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZUFWQ0RlY29k
ZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIpOwogICAgICAg
ICAgICAgaWYgKCFwYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiAiYXZjMSI7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuICJhdmMxIl9zOwogICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZygqcGFyYW1ldGVycyk7CiAgICAgICAgIH0KICAgICBj
YXNlIGtDTVZpZGVvQ29kZWNUeXBlX0hFVkM6CkBAIC0xMTgsMTQgKzExOCwxNCBAQCBTdHJpbmcg
Y29kZWNGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXRE
ZXNjcmlwdGlvbikKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25z
RGljdCA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oUEFMOjpDTUZvcm1hdERlc2NyaXB0
aW9uR2V0RXh0ZW5zaW9uKGZvcm1hdERlc2NyaXB0aW9uLCBQQUw6OmdldF9Db3JlTWVkaWFfa0NN
Rm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fU2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9t
cygpKSk7CiAgICAgICAgICAgICBpZiAoIXNhbXBsZUV4dGVuc2lvbnNEaWN0KQotICAgICAgICAg
ICAgICAgIHJldHVybiAiaHZjMSI7CisgICAgICAgICAgICAgICAgcmV0dXJuICJodmMxIl9zOwog
ICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVm
PihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGljdCwgQ0ZTVFIoImh2Y0Mi
KSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQotICAgICAgICAgICAgICAg
IHJldHVybiAiaHZjMSI7CisgICAgICAgICAgICAgICAgcmV0dXJuICJodmMxIl9zOwogICAgICAg
ICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc2FtcGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJz
ZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChrQ01WaWRlb0NvZGVjVHlwZV9IRVZDLCBj
b25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAgICAgIGlmICghcGFyYW1ldGVycykK
LSAgICAgICAgICAgICAgICByZXR1cm4gImh2YzEiOworICAgICAgICAgICAgICAgIHJldHVybiAi
aHZjMSJfczsKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVIRVZDQ29kZWNQYXJhbWV0ZXJzU3Ry
aW5nKCpwYXJhbWV0ZXJzKTsKICAgICAgICAgfQogICAgIGNhc2Uga0NNVmlkZW9Db2RlY1R5cGVf
RG9sYnlWaXNpb25IRVZDOgpAQCAtMTMzLDQzICsxMzMsNDMgQEAgU3RyaW5nIGNvZGVjRnJvbUZv
cm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24p
CiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9uc0RpY3QgPSBzdGF0
aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KFBBTDo6Q01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVu
c2lvbihmb3JtYXREZXNjcmlwdGlvbiwgUEFMOjpnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2Ny
aXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMoKSkpOwogICAg
ICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zRGljdCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gImR2aDEiOworICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSJfczsKICAgICAgICAgICAg
IGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJkdmNDIikpKTsKICAgICAg
ICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKLSAgICAgICAgICAgICAgICByZXR1cm4gImR2
aDEiOworICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSJfczsKICAgICAgICAgICAgIGF1dG8g
Y29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4
dGVuc2lvbnMpOwogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VEb1ZpRGVjb2Rl
ckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlcik7CiAgICAgICAg
ICAgICBpZiAoIXBhcmFtZXRlcnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuICJkdmgxIjsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gImR2aDEiX3M7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRl
RG9WaUNvZGVjUGFyYW1ldGVyc1N0cmluZygqcGFyYW1ldGVycyk7CiAgICAgICAgIH0KICAgICBj
YXNlIGtDTVZpZGVvQ29kZWNUeXBlX01QRUc0VmlkZW86Ci0gICAgICAgIHJldHVybiAibXA0diI7
CisgICAgICAgIHJldHVybiAibXA0diJfczsKICAgICBjYXNlIGtDTVZpZGVvQ29kZWNUeXBlX1ZQ
OToKLSAgICAgICAgcmV0dXJuICJ2cDA5IjsKKyAgICAgICAgcmV0dXJuICJ2cDA5Il9zOwogICAg
IGNhc2Uga0F1ZGlvRm9ybWF0QUMzOgotICAgICAgICByZXR1cm4gImFjLTMiOworICAgICAgICBy
ZXR1cm4gImFjLTMiX3M7CiAgICAgY2FzZSBrQXVkaW9Gb3JtYXRNUEVHNEFBQzoKLSAgICAgICAg
cmV0dXJuICJtcDRhLjQwLjIiOworICAgICAgICByZXR1cm4gIm1wNGEuNDAuMiJfczsKICAgICBj
YXNlIGtBdWRpb0Zvcm1hdE1QRUc0QUFDX0hFOgotICAgICAgICByZXR1cm4gIm1wNGEuNDAuNSI7
CisgICAgICAgIHJldHVybiAibXA0YS40MC41Il9zOwogICAgIGNhc2Uga0F1ZGlvRm9ybWF0TVBF
RzRBQUNfSEVfVjI6Ci0gICAgICAgIHJldHVybiAibXA0YS40MC4yOSI7CisgICAgICAgIHJldHVy
biAibXA0YS40MC4yOSJfczsKICAgICBjYXNlIGtBdWRpb0Zvcm1hdE1QRUc0QUFDX0xEOgotICAg
ICAgICByZXR1cm4gIm1wNGEuNDAuMjMiOworICAgICAgICByZXR1cm4gIm1wNGEuNDAuMjMiX3M7
CiAgICAgY2FzZSBrQXVkaW9Gb3JtYXRNUEVHNEFBQ19FTEQ6Ci0gICAgICAgIHJldHVybiAibXA0
YS40MC4zOSI7CisgICAgICAgIHJldHVybiAibXA0YS40MC4zOSJfczsKICAgICBjYXNlIGtBdWRp
b0Zvcm1hdEZMQUM6Ci0gICAgICAgIHJldHVybiAiZmxhYyI7CisgICAgICAgIHJldHVybiAiZmxh
YyJfczsKICAgICBjYXNlIGtBdWRpb0Zvcm1hdE9wdXM6Ci0gICAgICAgIHJldHVybiAib3B1cyI7
CisgICAgICAgIHJldHVybiAib3B1cyJfczsKICAgICBjYXNlIGtBdWRpb0Zvcm1hdEVuaGFuY2Vk
QUMzOgogICAgIGNhc2UgJ2VjKzMnOgogICAgIGNhc2UgJ3FlYzMnOgogICAgIGNhc2UgJ2NlLTMn
OgotICAgICAgICByZXR1cm4gImVjLTMiOworICAgICAgICByZXR1cm4gImVjLTMiX3M7CiAgICAg
Y2FzZSAnZHRzICc6Ci0gICAgICAgIHJldHVybiAiZHRzIjsKKyAgICAgICAgcmV0dXJuICJkdHMi
X3M7CiAgICAgfQogCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRl
eCBiODY2YzcxNzE4Y2JmYzU0NGFlNTcyNzk1ZjNhNDQzNWVkYzk4MmVjLi5kYWVmY2I3NjczZWZk
M2Y4ZjA4Y2IwODNkZjhiNzJhN2VkZDk0ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMxMDIsNyAr
MzEwMiw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRpb25zKCkKICAgICBh
dXRvIGN1cnJlbnRUaW1lID0gU2Vjb25kcyhDQUN1cnJlbnRNZWRpYVRpbWUoKSk7CiAKICAgICBh
dXRvIGFkZEFuaW1hdGlvbkdyb3VwID0gWyZdKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwg
Y29uc3QgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPj4mIGFuaW1hdGlvbnMpIHsK
LSAgICAgICAgYXV0byBjYUFuaW1hdGlvbkdyb3VwID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlv
bihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpHcm91cCwgIiIpOworICAgICAgICBhdXRvIGNhQW5pbWF0
aW9uR3JvdXAgPSBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246
Okdyb3VwLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgY2FBbmltYXRpb25Hcm91cC0+c2V0RHVy
YXRpb24oaW5maW5pdGVEdXJhdGlvbik7CiAgICAgICAgIGNhQW5pbWF0aW9uR3JvdXAtPnNldEFu
aW1hdGlvbnMoYW5pbWF0aW9ucyk7CiAKQEAgLTQ4MjAsMjIgKzQ4MjAsMjIgQEAgc3RhdGljIFN0
cmluZyBhbmltYXRlZFByb3BlcnR5SURBc1N0cmluZyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVy
dHkpCiAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5U2NhbGU6CiAgICAgY2FzZSBBbmltYXRlZFBy
b3BlcnR5Um90YXRlOgogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVRyYW5zZm9ybToKLSAgICAg
ICAgcmV0dXJuICJ0cmFuc2Zvcm0iOworICAgICAgICByZXR1cm4gInRyYW5zZm9ybSJfczsKICAg
ICBjYXNlIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5OgotICAgICAgICByZXR1cm4gIm9wYWNpdHki
OworICAgICAgICByZXR1cm4gIm9wYWNpdHkiX3M7CiAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5
QmFja2dyb3VuZENvbG9yOgotICAgICAgICByZXR1cm4gImJhY2tncm91bmQtY29sb3IiOworICAg
ICAgICByZXR1cm4gImJhY2tncm91bmQtY29sb3IiX3M7CiAgICAgY2FzZSBBbmltYXRlZFByb3Bl
cnR5RmlsdGVyOgotICAgICAgICByZXR1cm4gImZpbHRlciI7CisgICAgICAgIHJldHVybiAiZmls
dGVyIl9zOwogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCiAgICAgY2FzZSBBbmltYXRlZFBy
b3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXI6Ci0gICAgICAgIHJldHVybiAiYmFja2Ryb3AtZmls
dGVyIjsKKyAgICAgICAgcmV0dXJuICJiYWNrZHJvcC1maWx0ZXIiX3M7CiAjZW5kaWYKICAgICBj
YXNlIEFuaW1hdGVkUHJvcGVydHlJbnZhbGlkOgotICAgICAgICByZXR1cm4gImludmFsaWQiOwor
ICAgICAgICByZXR1cm4gImludmFsaWQiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gIiJfczsKIH0KIAogVmVjdG9yPHN0ZDo6
cGFpcjxTdHJpbmcsIGRvdWJsZT4+IEdyYXBoaWNzTGF5ZXJDQTo6YWNjZWxlcmF0ZWRBbmltYXRp
b25zRm9yVGVzdGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IGU2Y2UyZmI5NzI0N2E2
Yjg2YzA5YjFhZDM2MTcwMWMyZWMzZTg2MjUuLjQ2ODliMTA2NGU0ODNmNmRlOWYwNjc2YWU0Njdk
NzQ1NmNjNjY0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFBERkRvY3Vt
ZW50SW1hZ2U6On5QREZEb2N1bWVudEltYWdlKCkgPSBkZWZhdWx0OwogCiBTdHJpbmcgUERGRG9j
dW1lbnRJbWFnZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogewotICAgIHJldHVybiAicGRm
IjsKKyAgICByZXR1cm4gInBkZiJfczsKIH0KIAogRmxvYXRTaXplIFBERkRvY3VtZW50SW1hZ2U6
OnNpemUoSW1hZ2VPcmllbnRhdGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KaW5kZXgg
ODQyMjEwYjM3MTI3ZmU4ZWVlZTlhY2MyM2NjYzk2YzA0ZDhjNTdhMS4uNDAxYTUyZTNmZGRjZjVm
NGVmMWRjYjA0M2Y5YTBjNzM4MDI1M2FiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KQEAgLTU5
Nyw3ICs1OTcsNyBAQCBSZWY8VmlkZW9JbmZvPiBjcmVhdGVWaWRlb0luZm9Gcm9tVlA5SGVhZGVy
UGFyc2VyKGNvbnN0IHZwOV9wYXJzZXI6OlZwOUhlYWRlclBhcgogewogICAgIFZQQ29kZWNDb25m
aWd1cmF0aW9uUmVjb3JkIHJlY29yZDsKIAotICAgIHJlY29yZC5jb2RlY05hbWUgPSAidnAwOSI7
CisgICAgcmVjb3JkLmNvZGVjTmFtZSA9ICJ2cDA5Il9zOwogICAgIHJlY29yZC5wcm9maWxlID0g
cGFyc2VyLnByb2ZpbGUoKTsKICAgICAvLyBDb3JlTWVkaWEgZG9lcyBuYXQgY2FyZSBhYm91dCB0
aGUgVlA5IGNvZGVjIGxldmVsOyBoYXJkLWNvZGUgdG8gTGV2ZWwgMS4wIGhlcmU6CiAgICAgcmVj
b3JkLmxldmVsID0gMTA7CkBAIC02OTMsNyArNjkzLDcgQEAgc3RkOjpvcHRpb25hbDxWUDhGcmFt
ZUhlYWRlcj4gcGFyc2VWUDhGcmFtZUhlYWRlcihjb25zdCB1aW50OF90KiBmcmFtZURhdGEsIHNp
emUKIFJlZjxWaWRlb0luZm8+IGNyZWF0ZVZpZGVvSW5mb0Zyb21WUDhIZWFkZXIoY29uc3QgVlA4
RnJhbWVIZWFkZXImIGhlYWRlciwgY29uc3Qgd2VibTo6RWxlbWVudDxDb2xvdXI+JiBjb2xvcikK
IHsKICAgICBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCByZWNvcmQ7Ci0gICAgcmVjb3JkLmNv
ZGVjTmFtZSA9ICJ2cDA4IjsKKyAgICByZWNvcmQuY29kZWNOYW1lID0gInZwMDgiX3M7CiAgICAg
cmVjb3JkLnByb2ZpbGUgPSAwOwogICAgIHJlY29yZC5sZXZlbCA9IDEwOwogICAgIHJlY29yZC5i
aXREZXB0aCA9IDg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAppbmRleCA1NzdiMTEw
MDBiZTEzNTdmMjM1YTkxN2FmNDc1NWFiYTdkZGFkOGIwLi4wNWQ1YjkwNTcwZjI4ZmFiNGIyODJi
NmE3MmMzYzE1M2JmZjNmZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKQEAg
LTk3LDEwICs5NywxMCBAQCBTdHJpbmcgVmlkZW9UcmFja1ByaXZhdGVXZWJNOjpjb2RlYygpIGNv
bnN0CiAKICAgICAvLyBUT0RPOiBTcGVjaWZpYyBjb2RlYyBwYXJhbWV0ZXJzIGFyZSBwYXJzZWQg
b3V0IG9mIHRoZSBzYW1wbGUgaGVhZGVyOyB0aGV5IGFyZW4ndCB0eXBpY2FsbHkgY29udGFpbmVk
IGluIHRoZSBXZWJNIFRyYWNrIGVsZW1lbnQuCiAgICAgaWYgKGNvZGVjSUQgPT0gIlZfVlA5IikK
LSAgICAgICAgcmV0dXJuICJ2cDA5IjsKKyAgICAgICAgcmV0dXJuICJ2cDA5Il9zOwogCiAgICAg
aWYgKGNvZGVjSUQgPT0gIlZfVlA4IikKLSAgICAgICAgcmV0dXJuICJ2cDA4IjsKKyAgICAgICAg
cmV0dXJuICJ2cDA4Il9zOwogCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApp
bmRleCA0MThlYzBkNzEzMjhiZGY5MWM0NWYyMjQ0NDA0N2YxODAwZDQwOTkyLi45YjkwMWM0N2Nh
Y2I4NDE5NWRjNjliY2Q3NTFiZmNhMGQ2YWZmYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTYyLDcgKzYyLDcg
QEAgVGV4dFN0cmVhbSYgRkVCbGVuZDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFt
JiB0cywgRmlsdGVyUmVwcmVzZW50YXRpb24KICAgICB0cyA8PCBpbmRlbnQgPDwgIltmZUJsZW5k
IjsKICAgICBGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMsIHJlcHJlc2Vu
dGF0aW9uKTsKIAotICAgIHRzIDw8ICIgbW9kZT1cIiIgPDwgKG1fbW9kZSA9PSBCbGVuZE1vZGU6
Ok5vcm1hbCA/ICJub3JtYWwiIDogY29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZU9wZXJh
dG9yOjpTb3VyY2VPdmVyLCBtX21vZGUpKTsKKyAgICB0cyA8PCAiIG1vZGU9XCIiIDw8IChtX21v
ZGUgPT0gQmxlbmRNb2RlOjpOb3JtYWwgPyAibm9ybWFsIl9zIDogY29tcG9zaXRlT3BlcmF0b3JO
YW1lKENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyLCBtX21vZGUpKTsKIAogICAgIHRzIDw8
ICJcIl1cbiI7CiAgICAgcmV0dXJuIHRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5jcHAKaW5kZXggZDkyMDNmYzgxYmNhOTM0YTE0YjM2ZWFiY2NlY2YzYjJjZDMxNDY1OS4uY2Fh
YWI2ZmM1OThiMzkwZWE1NDUzNGFhZTA5OGM0OGM5YzkyNDY5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNjYsMTEgKzM2NiwxMSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWRE
ZXB0aFN0ZW5jaQogICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRycyk7CiAgICAgfQog
ICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgIW1faXNGb3JXZWJHTDIpIHsKLSAgICAgICAgaWYg
KCFzdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSkg
eworICAgICAgICBpZiAoIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZSJfcykpIHsKICAgICAgICAgICAgIGF0dHJzLmFudGlhbGlhcyA9IGZhbHNlOwog
ICAgICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwogICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVy
X211bHRpc2FtcGxlIik7CisgICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9B
TkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJfcyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmgKaW5kZXggMGE2ZWZhZWYzZTg2MWVmNTlmZDQyODlj
ZWY5MTFjNzc4ZGE3MGNhMS4uYzViNTBkMTkyNGNkOGQ0NGU3M2Q3ZjQ4NDY1NjhhODZlMGRlZmQ1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2suaApAQCAtNDEsNiArNDEs
NiBAQCBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiByZWdpc3RlclFMUHJl
dmlld0NvbnZlcnRlcklmTmVlZGVkKE5TVVJMCiBXRUJDT1JFX0VYUE9SVCBib29sIGlzUXVpY2tM
b29rUHJldmlld1VSTChjb25zdCBVUkwmKTsKIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpjcmVh
dGVUZW1wb3JhcnlGaWxlRm9yUXVpY2tMb29rKE5TU3RyaW5nICpmaWxlTmFtZSk7CiAKLWV4dGVy
biBjb25zdCBjaGFyKiBRTFByZXZpZXdQcm90b2NvbDsKK2V4dGVybiBBU0NJSUxpdGVyYWwgUUxQ
cmV2aWV3UHJvdG9jb2w7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmluZGV4IGUzYzMwN2M4MWUxYjljN2YyOWYwM2ViNDMy
M2E4MWYzYTg5ZTkxZWYuLmFkMDdkM2NlNWUzYjU2NGIyYmM1ZTExYWFhZTU5OGQyZDdhNmZjZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQpAQCAtMzgsNyArMzgs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IGNoYXIqIFFMUHJldmlld1Byb3Rv
Y29sID0gIngtYXBwbGUtcWwtaWQiOworQVNDSUlMaXRlcmFsIFFMUHJldmlld1Byb3RvY29sID0g
IngtYXBwbGUtcWwtaWQiX3M7CiAKIE5TU2V0ICpRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlw
ZXNTZXQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCAwMDc0ZDE0
NDk1ZTljZjEwY2UwNTRiOWVmMDliNDFiNzdkNmI4NmRlLi5hYTBlODQyYzY0NTg4NjBjNGE1OGJh
Y2Y0ZjE3MTY5ZDA1OGYxZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApA
QCAtMTYxLDcgKzE2MSw3IEBAIFN0cmluZyBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpoYXNo
U3RyaW5nV2l0aFNhbHQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyCiAgICAgU0hBMTo6RGln
ZXN0IGRpZ2VzdDsKICAgICBzaGExLmNvbXB1dGVIYXNoKGRpZ2VzdCk7CiAgICAgCi0gICAgcmV0
dXJuIFNIQTE6OmhleERpZ2VzdChkaWdlc3QpLmRhdGEoKTsKKyAgICByZXR1cm4gU3RyaW5nIHsg
U0hBMTo6aGV4RGlnZXN0KGRpZ2VzdCkuZGF0YSgpIH07CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6YWRkRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVy
c01vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2Nr
LmNwcAppbmRleCAyYzdjNDFiZDY5NmZmMWY5YmFiMzgzODFhNGI1ODM4NTY4YjE4YTRlLi44M2Jj
OWVlMjBkOGM2YjQ0MzBlNWY2NDkzZjQ1YzJmMWQ1NTE0OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKQEAgLTk4LDcgKzk4LDcg
QEAgUmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6UmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcihS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGkKIAogdm9pZCBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlm
aWVyOjpmaXJlKCkKIHsKLSAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwobWFr
ZVVuaXF1ZTxSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrPigiUlRDRGF0YUNoYW5uZWxIYW5kbGVy
TW9jayIsIFJUQ0RhdGFDaGFubmVsSW5pdCgpKSk7CisgICAgbV9jbGllbnQtPmRpZEFkZFJlbW90
ZURhdGFDaGFubmVsKG1ha2VVbmlxdWU8UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jaz4oIlJUQ0Rh
dGFDaGFubmVsSGFuZGxlck1vY2siX3MsIFJUQ0RhdGFDaGFubmVsSW5pdCgpKSk7CiB9CiAKIERh
dGFDaGFubmVsU3RhdGVOb3RpZmllcjo6RGF0YUNoYW5uZWxTdGF0ZU5vdGlmaWVyKFJUQ0RhdGFD
aGFubmVsSGFuZGxlckNsaWVudCogY2xpZW50LCBSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29udHJv
bGxlck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29u
dHJvbGxlck1vY2suY3BwCmluZGV4IDU5NmJlZWI2MTMzYTA2YmIzOGU1M2NmNTc3YTM4OTljYWRj
ZGUzZGMuLjMwMDQ3Zjk3MWY3MTQ0OWE3N2M5YWQzZTlhYWUzNGE2ZDMxNDBmZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2Nr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhcnNDb250cm9s
bGVyTW9jay5jcHAKQEAgLTcwLDE5ICs3MCwxOSBAQCB2b2lkIFNjcm9sbGJhcnNDb250cm9sbGVy
TW9jazo6d2lsbFJlbW92ZUhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYQog
CiB2b2lkIFNjcm9sbGJhcnNDb250cm9sbGVyTW9jazo6bW91c2VFbnRlcmVkQ29udGVudEFyZWEo
KQogewotICAgIG1fbG9nZ2VyKCJtb3VzZUVudGVyZWRDb250ZW50QXJlYSIpOworICAgIG1fbG9n
Z2VyKCJtb3VzZUVudGVyZWRDb250ZW50QXJlYSJfcyk7CiAgICAgU2Nyb2xsYmFyc0NvbnRyb2xs
ZXI6Om1vdXNlRW50ZXJlZENvbnRlbnRBcmVhKCk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyc0NvbnRy
b2xsZXJNb2NrOjptb3VzZU1vdmVkSW5Db250ZW50QXJlYSgpCiB7Ci0gICAgbV9sb2dnZXIoIm1v
dXNlTW92ZWRJbkNvbnRlbnRBcmVhIik7CisgICAgbV9sb2dnZXIoIm1vdXNlTW92ZWRJbkNvbnRl
bnRBcmVhIl9zKTsKICAgICBTY3JvbGxiYXJzQ29udHJvbGxlcjo6bW91c2VNb3ZlZEluQ29udGVu
dEFyZWEoKTsKIH0KIAogdm9pZCBTY3JvbGxiYXJzQ29udHJvbGxlck1vY2s6Om1vdXNlRXhpdGVk
Q29udGVudEFyZWEoKQogewotICAgIG1fbG9nZ2VyKCJtb3VzZUV4aXRlZENvbnRlbnRBcmVhIik7
CisgICAgbV9sb2dnZXIoIm1vdXNlRXhpdGVkQ29udGVudEFyZWEiX3MpOwogICAgIFNjcm9sbGJh
cnNDb250cm9sbGVyOjptb3VzZUV4aXRlZENvbnRlbnRBcmVhKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVy
TWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKaW5kZXggZTk0M2Y4NmQ4YjhhNGJmMTNh
NDQwOGI2YTRlNGRkMDcyMDE2ZmM2NC4uNjA4ODBhMDE1ZWUzZDE1NTk4NGEwMGMyMjNlYWJlNTE4
MTg0MDc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAK
QEAgLTY0LDggKzY0LDggQEAgdm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0
ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3QKIHN0YXRpYyBjb25zdCBI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgbWltZVR5cGVDYWNoZSgp
CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGNhY2hlID0gSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gewotICAgICAgICAidmlkZW8vbW9jayIsCi0gICAgICAg
ICJhdWRpby9tb2NrIiwKKyAgICAgICAgInZpZGVvL21vY2siX3MsCisgICAgICAgICJhdWRpby9t
b2NrIl9zLAogICAgIH07CiAgICAgcmV0dXJuIGNhY2hlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDA5
OGE3NDJlNzVlNWU4ZTEwNzYxN2U3ZDgxMTRiZGZlZmY3ZTlhMTcuLjFlNTlkNGQxYTZiZmFlYzc0
ZGZlMzZkNzg0OTkwNGY5NDE0ZjVmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTU5LDEzICs1OSwxMyBA
QCBzdGF0aWMgY29uc3QgaW50IGh0dHBQYXJ0aWFsQ29udGVudCA9IDIwNjsKIHN0YXRpYyBjb25z
dCBpbnQgaHR0cE5vdEFsbG93ZWQgPSA0MDM7CiBzdGF0aWMgY29uc3QgaW50IGh0dHBSZXF1ZXN0
ZWRSYW5nZU5vdFNhdGlzZmlhYmxlID0gNDE2Owogc3RhdGljIGNvbnN0IGludCBodHRwSW50ZXJu
YWxFcnJvciA9IDUwMDsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRwT0tUZXh0ID0gIk9LIjsKLXN0
YXRpYyBjb25zdCBjaGFyKiBodHRwUGFydGlhbENvbnRlbnRUZXh0ID0gIlBhcnRpYWwgQ29udGVu
dCI7Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0cE5vdEFsbG93ZWRUZXh0ID0gIk5vdCBBbGxvd2Vk
IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZVRl
eHQgPSAiUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZSI7Ci1zdGF0aWMgY29uc3QgY2hh
ciogaHR0cEludGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciI7CitzdGF0
aWMgY29uc3RleHByIGF1dG8gaHR0cE9LVGV4dCA9ICJPSyJfczsKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byBodHRwUGFydGlhbENvbnRlbnRUZXh0ID0gIlBhcnRpYWwgQ29udGVudCJfczsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBodHRwTm90QWxsb3dlZFRleHQgPSAiTm90IEFsbG93ZWQiX3M7Citz
dGF0aWMgY29uc3RleHByIGF1dG8gaHR0cFJlcXVlc3RlZFJhbmdlTm90U2F0aXNmaWFibGVUZXh0
ID0gIlJlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUiX3M7CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gaHR0cEludGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciJfczsK
IAotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiA9ICJX
ZWJLaXRCbG9iUmVzb3VyY2UiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHdlYktpdEJsb2JSZXNv
dXJjZURvbWFpbiA9ICJXZWJLaXRCbG9iUmVzb3VyY2UiX3M7CiAKIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KIC8vIEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyCkBAIC0xMTQsNyArMTE0LDcg
QEAgdm9pZCBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmQKIHsKICAgICAvLyBXZSBjYW5ub3QgaGFuZGxlIHRo
ZSBzaXplIHRoYXQgaXMgbW9yZSB0aGFuIG1heGltdW0gaW50ZWdlci4KICAgICBpZiAocmVzcG9u
c2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBJTlRfTUFYKSB7Ci0gICAgICAgIG1fZXJyb3Ig
PSBSZXNvdXJjZUVycm9yKHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiwgc3RhdGljX2Nhc3Q8aW50
PihCbG9iUmVzb3VyY2VIYW5kbGU6OkVycm9yOjpOb3RSZWFkYWJsZUVycm9yKSwgcmVzcG9uc2Uu
dXJsKCksICJGaWxlIGlzIHRvbyBsYXJnZSIpOworICAgICAgICBtX2Vycm9yID0gUmVzb3VyY2VF
cnJvcih3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4sIHN0YXRpY19jYXN0PGludD4oQmxvYlJlc291
cmNlSGFuZGxlOjpFcnJvcjo6Tm90UmVhZGFibGVFcnJvciksIHJlc3BvbnNlLnVybCgpLCAiRmls
ZSBpcyB0b28gbGFyZ2UiX3MpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIFJlZjxCbG9iUmVzb3VyY2VIYW5k
bGU+IEJsb2JSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQXN5bmMoQmxvYkRhdGEqIGJsb2JEYXRhLCBj
b25zCiB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShC
bG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8dWludDhf
dD4mIGRhdGEpCiB7CiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1
ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIpKSB7Ci0gICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJv
cih3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4sIHN0YXRpY19jYXN0PGludD4oRXJyb3I6Ok1ldGhv
ZE5vdEFsbG93ZWQpLCByZXNwb25zZS51cmwoKSwgIlJlcXVlc3QgbWV0aG9kIG11c3QgYmUgR0VU
Iik7CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcih3ZWJLaXRCbG9iUmVzb3VyY2VEb21h
aW4sIHN0YXRpY19jYXN0PGludD4oRXJyb3I6Ok1ldGhvZE5vdEFsbG93ZWQpLCByZXNwb25zZS51
cmwoKSwgIlJlcXVlc3QgbWV0aG9kIG11c3QgYmUgR0VUIl9zKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpub3Rp
ZnlSZXNwb25zZU9uRXJyb3IoKQogewogICAgIEFTU0VSVChtX2Vycm9yQ29kZSAhPSBFcnJvcjo6
Tm9FcnJvcik7CiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKGZpcnN0UmVxdWVzdCgp
LnVybCgpLCAidGV4dC9wbGFpbiIsIDAsIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZVJlc3BvbnNl
IHJlc3BvbnNlKGZpcnN0UmVxdWVzdCgpLnVybCgpLCAidGV4dC9wbGFpbiJfcywgMCwgU3RyaW5n
KCkpOwogICAgIHN3aXRjaCAobV9lcnJvckNvZGUpIHsKICAgICBjYXNlIEVycm9yOjpSYW5nZUVy
cm9yOgogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShodHRwUmVxdWVzdGVkUmFu
Z2VOb3RTYXRpc2ZpYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRGF0YVVSTERlY29kZXIuY3BwCmluZGV4IDkzMWUyY2NkYTYyY2JkMjIzZGUyNDU2ODlhNzgx
OWYxZjhjMmZlNDIuLmFmNTNkNjQxOGRjNTE2NTJmMmExMDc5ODU3ZWUzNzhmY2EzODQwZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIu
Y3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgICAgICBhdXRvIG1lZGlhVHlwZSA9
IChpc0Jhc2U2NCA/IGhlYWRlci5zdWJzdHJpbmcoMCwgbWVkaWFUeXBlRW5kKSA6IGhlYWRlciku
dG9TdHJpbmcoKTsKICAgICAgICAgbWVkaWFUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VFRQU3BhY2VzKG1lZGlhVHlwZSk7CiAgICAgICAgIGlmIChtZWRpYVR5cGUuc3RhcnRzV2l0aCgn
OycpKQotICAgICAgICAgICAgbWVkaWFUeXBlLmluc2VydCgidGV4dC9wbGFpbiIsIDApOworICAg
ICAgICAgICAgbWVkaWFUeXBlLmluc2VydCgidGV4dC9wbGFpbiJfcywgMCk7CiAKICAgICAgICAg
aWYgKHNob3VsZFJlbW92ZUZyYWdtZW50SWRlbnRpZmllcihtZWRpYVR5cGUpKQogICAgICAgICAg
ICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCBkNDM1Y2ViZjRkMGY1NWZkMDZk
ZThjMDNlMWIzYTZmMTY0ZmNmMzQ5Li44MTRlZmUwMjA3MGVhYTk2MTY4ZjMxMjQzMThjNDlmMzIw
MTcxYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJz
ZXJzLmNwcApAQCAtNjIwLDcgKzYyMCw3IEBAIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFN0cmlu
Z1ZpZXcsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Pj4gcGFyc2VTdHJ1Y3R1cmVkRmllCiAgICAg
ICAgICAgICArK2luZGV4OwogICAgICAgICB9CiAgICAgICAgIFN0cmluZyBrZXkgPSBoZWFkZXIu
c3Vic3RyaW5nKGtleVN0YXJ0LCBpbmRleCAtIGtleVN0YXJ0KS50b1N0cmluZygpOwotICAgICAg
ICBTdHJpbmcgdmFsdWUgPSAidHJ1ZSI7CisgICAgICAgIFN0cmluZyB2YWx1ZSA9ICJ0cnVlIl9z
OwogICAgICAgICBpZiAoaW5kZXggPCBoZWFkZXIubGVuZ3RoKCkgJiYgaGVhZGVyW2luZGV4XSA9
PSAnPScpIHsKICAgICAgICAgICAgICsraW5kZXg7IC8vIENvbnN1bWUgJz0nLgogICAgICAgICAg
ICAgaWYgKGlzQVNDSUlBbHBoYShoZWFkZXJbaW5kZXhdKSB8fCBoZWFkZXJbaW5kZXhdID09ICcq
JykgewpAQCAtNzg1LDcgKzc4NSw3IEBAIHNpemVfdCBwYXJzZUhUVFBIZWFkZXIoY29uc3QgdWlu
dDhfdCogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvCiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICBpZiAoIWlzVmFsaWRIZWFkZXJOYW1lQ2hhcmFjdGVyKCpw
KSkgewogICAgICAgICAgICAgICAgIGlmIChuYW1lLnNpemUoKSA8IDEpCi0gICAgICAgICAgICAg
ICAgICAgIGZhaWx1cmVSZWFzb24gPSAiVW5leHBlY3RlZCBzdGFydCBjaGFyYWN0ZXIgaW4gaGVh
ZGVyIG5hbWUiOworICAgICAgICAgICAgICAgICAgICBmYWlsdXJlUmVhc29uID0gIlVuZXhwZWN0
ZWQgc3RhcnQgY2hhcmFjdGVyIGluIGhlYWRlciBuYW1lIl9zOwogICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZVJlYXNvbiA9IG1ha2VTdHJpbmcoIlVuZXhw
ZWN0ZWQgY2hhcmFjdGVyIGluIGhlYWRlciBuYW1lIGF0ICIsIHRyaW1JbnB1dFNhbXBsZShuYW1l
LmRhdGEoKSwgbmFtZS5zaXplKCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmNwcAppbmRleCBiMjE3NzlmNzA5NDA4ZDMyODU2ZjAxZGRkNTQ3OTg4YWE2NDFiYzNj
Li45YTg1N2VhZGZjMWMxZjY5NGYxMjgyZjM5NmM1Zjk4Yzk5M2Y4NzAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uY3BwCkBAIC0zODUsMTQgKzM4NSwxNCBAQCBjb25zdCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9t
YWluLCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4mIE5ldHdvcmtTdG9yYWdlU2Vzcwogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBIYXNo
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4+IG1hcCA9IFtdIHsKICAgICAgICAgSGFzaE1hcDxSZWdp
c3RyYWJsZURvbWFpbiwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IG1hcDsKLSAgICAgICAg
bWFwLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxl
RG9tYWluU3RyaW5nKCJtaWNyb3NvZnQuY29tIiksCisgICAgICAgIG1hcC5hZGQoUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibWlj
cm9zb2Z0LmNvbSJfcyksCiAgICAgICAgICAgICBIYXNoU2V0IHsgUmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibWljcm9zb2Z0b25s
aW5lLmNvbSJfcykgfSk7Ci0gICAgICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibGl2ZS5jb20iKSwKKyAgICAg
ICAgbWFwLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJh
YmxlRG9tYWluU3RyaW5nKCJsaXZlLmNvbSJfcyksCiAgICAgICAgICAgICBIYXNoU2V0IHsgUmVn
aXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmlu
Zygic2t5cGUuY29tIl9zKSB9KTsKLSAgICAgICAgbWFwLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJwbGF5c3RhdGlvbi5j
b20iKSwgSGFzaFNldCB7CisgICAgICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygicGxheXN0YXRpb24uY29tIl9z
KSwgSGFzaFNldCB7CiAgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3Jl
YXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJzb255ZW50ZXJ0YWlubWVudG5ldHdvcmsu
Y29tIl9zKSwKICAgICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVG
cm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoInNvbnkuY29tIl9zKSB9KTsKLSAgICAgICAgbWFw
LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9t
YWluU3RyaW5nKCJiYmMuY28udWsiKSwgSGFzaFNldCB7CisgICAgICAgIG1hcC5hZGQoUmVnaXN0
cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygi
YmJjLmNvLnVrIl9zKSwgSGFzaFNldCB7CiAgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJyYWRpb3BsYXllci5j
by51ayJfcykgfSk7CiAgICAgICAgIHJldHVybiBtYXA7CiAgICAgfSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcAppbmRl
eCA5ZWYyYTE3MjBkNTcxMjZmYmU3MTJjZDlhMmExZDIyMjFhMWM0ZTlkLi5iMmU3YmRkM2Y5ZmVk
ZjI4NjlhMTFiYzc2M2JlYzY3NDViNTM5YjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcApAQCAtMzQ3LDcgKzM0Nyw3
IEBAIFBhcnNlZENvbnRlbnRUeXBlOjpQYXJzZWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKQogCiBTdHJpbmcgUGFyc2VkQ29udGVudFR5cGU6OmNoYXJzZXQoKSBjb25zdAog
ewotICAgIHJldHVybiBwYXJhbWV0ZXJWYWx1ZUZvck5hbWUoImNoYXJzZXQiKTsKKyAgICByZXR1
cm4gcGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJjaGFyc2V0Il9zKTsKIH0KIAogdm9pZCBQYXJzZWRD
b250ZW50VHlwZTo6c2V0Q2hhcnNldChTdHJpbmcmJiBjaGFyc2V0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApp
bmRleCAzYTE1MmJiMmUxZjlkZTAyOGQwMWIzMjA0MWIyYTM5ZTAwMzljM2Y2Li5kOTJhOTNiMTQy
N2FhMjQ0MjRiY2JjZTM0MjI1MGU5ZjlkYzk5OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtMTkz
LDcgKzE5Myw3IEBAIFJlc291cmNlUmVzcG9uc2UgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmZpbHRl
cihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwKICAgICBmaWx0ZXJlZFJlc3BvbnNl
LnNldFR5cGUoVHlwZTo6Q29ycyk7CiAKICAgICBhdXRvIGFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFk
ZXJTZXQgPSB2YWx1ZU9yRGVmYXVsdChwYXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3Q8QVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPihyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJzKSkpOwotICAgIGlmIChwZXJmb3JtQ2hlY2sg
PT0gUGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzICYmIGFjY2Vzc0NvbnRyb2xFeHBv
c2VIZWFkZXJTZXQuY29udGFpbnMoIioiKSkKKyAgICBpZiAocGVyZm9ybUNoZWNrID09IFBlcmZv
cm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6OlllcyAmJiBhY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVy
U2V0LmNvbnRhaW5zKCIqIl9zKSkKICAgICAgICAgcmV0dXJuIGZpbHRlcmVkUmVzcG9uc2U7CiAK
ICAgICBmaWx0ZXJlZFJlc3BvbnNlLm1faHR0cEhlYWRlckZpZWxkcy51bmNvbW1vbkhlYWRlcnMo
KS5yZW1vdmVBbGxNYXRjaGluZyhbJl0oYXV0byYgZW50cnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5j
cHAKaW5kZXggYjM4MmEwZDdlZGYxNjU0M2NhM2NmNDdiM2RlMWM3NzE1ZWIxNzQ1MC4uY2E4YTVk
ZWVjYWM4OGY1ZTY2MTQyYmZmMTMwMTU4NGFmMWU3MWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5j
cHAKQEAgLTU1LDggKzU1LDggQEAgdm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNV
c2luZ1Byb3h5KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDRlVS
TFJlZj4gaHR0cENGVVJMID0gVVJMKHsgfSwgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVD
RlVSTCgpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTCh7IH0sICJo
dHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENGVVJM
UmVmPiBodHRwQ0ZVUkwgPSBVUkwoeyB9LCAiaHR0cDovL2V4YW1wbGUuY29tLyJfcykuY3JlYXRl
Q0ZVUkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBVUkwoeyB9LCAi
aHR0cHM6Ly9leGFtcGxlLmNvbS8iX3MpLmNyZWF0ZUNGVVJMKCk7CiAKICAgICBSZXRhaW5QdHI8
Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVz
Rm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwogICAgIFJldGFp
blB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQ
cm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCA3MDQwYjMyNjI1NzU3OGM3MTAz
YmZlMzY0MTNmYTkzOWFiZmM1MTAwLi4zMDNlZTc2MzNmZWJmNWFkNWZiYzBmYmI4ZTRiMWIzYmQ3
ZjM1ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC0xMjEsNyAr
MTIxLDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbChj
b25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGwKICAgICAgICAgJiYgX0NGTmV0d29ya0lz
S25vd25IU1RTSG9zdFdpdGhTZXNzaW9uKG1faHR0cHNVUkwuZ2V0KCksIG51bGxwdHIpKSB7CiAg
ICAgICAgIC8vIENhbGwgdGhpcyBhc3luY2hyb25vdXNseSBiZWNhdXNlIHRoZSBzb2NrZXQgc3Ry
ZWFtIGlzIG5vdCBmdWxseSBjb25zdHJ1Y3RlZCBhdCB0aGlzIHBvaW50LgogICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewotICAg
ICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFt
RXJyb3IoMCwgbV91cmwuc3RyaW5nKCksICJXZWJTb2NrZXQgY29ubmVjdGlvbiBmYWlsZWQgYmVj
YXVzZSBpdCB2aW9sYXRlcyBIVFRQIFN0cmljdCBUcmFuc3BvcnQgU2VjdXJpdHkuIikpOworICAg
ICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFt
RXJyb3IoMCwgbV91cmwuc3RyaW5nKCksICJXZWJTb2NrZXQgY29ubmVjdGlvbiBmYWlsZWQgYmVj
YXVzZSBpdCB2aW9sYXRlcyBIVFRQIFN0cmljdCBUcmFuc3BvcnQgU2VjdXJpdHkuIl9zKSk7CiAg
ICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDM0LDcgKzQzNCw3IEBAIHZv
aWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENGSFRUUE1l
c3NhZ2VSZWYgcHJveHlSZXNwb25zCiAKICAgICBpZiAoIUNGSFRUUEF1dGhlbnRpY2F0aW9uUmVx
dWlyZXNVc2VyTmFtZUFuZFBhc3N3b3JkKGF1dGhlbnRpY2F0aW9uLmdldCgpKSkgewogICAgICAg
ICAvLyBUaGF0J3MgYWxsIHdlIGNhbiBvZmZlci4uLgotICAgICAgICBtX2NsaWVudC5kaWRGYWls
U29ja2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwg
IlByb3h5IGF1dGhlbnRpY2F0aW9uIHNjaGVtZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBXZWJTb2Nr
ZXRzIikpOworICAgICAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBTb2Nr
ZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIlByb3h5IGF1dGhlbnRpY2F0aW9uIHNj
aGVtZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBXZWJTb2NrZXRzIl9zKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9ucwog
CiAgICAgaWYgKCFtZXRob2RDRiB8fCAhcmVhbG1DRikgewogICAgICAgICAvLyBUaGlzIHNob3Vs
ZG4ndCBoYXBwZW4sIGJ1dCBvbiBzb21lIE9TIHZlcnNpb25zIHdlIGdldCBpbmNvbXBsZXRlIGF1
dGhlbnRpY2F0aW9uIGRhdGEsIHNlZSA8cmRhcjovL3Byb2JsZW0vMTA0MTYzMTY+LgotICAgICAg
ICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigw
LCBtX3VybC5zdHJpbmcoKSwgIldlYlNvY2tldCBwcm94eSBhdXRoZW50aWNhdGlvbiBjb3VsZG4n
dCBiZSBoYW5kbGVkIikpOworICAgICAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0
aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIldlYlNvY2tldCBwcm94
eSBhdXRoZW50aWNhdGlvbiBjb3VsZG4ndCBiZSBoYW5kbGVkIl9zKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9ucwog
CiAgICAgICAgIGlmICghcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKSB7CiAgICAgICAgICAgICAv
LyBGYWlscyBlLmcuIGZvciBOVExNIGF1dGguCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRGYWls
U29ja2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwg
IlByb3h5IGF1dGhlbnRpY2F0aW9uIHNjaGVtZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBXZWJTb2Nr
ZXRzIikpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywg
U29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5nKCksICJQcm94eSBhdXRoZW50aWNhdGlv
biBzY2hlbWUgaXMgbm90IHN1cHBvcnRlZCBmb3IgV2ViU29ja2V0cyJfcykpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIFNvY2tldFN0
cmVhbUhhbmRsZUltcGw6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBNZXNzYWdlUmVmIHBy
b3h5UmVzcG9ucwogCiAgICAgLy8gRklYTUU6IE9uIHBsYXRmb3JtcyB3aGVyZSBBdXRoQnJva2Vy
QWdlbnQgaXMgbm90IGF2YWlsYWJsZSwgYXNrIHRoZSBjbGllbnQgaWYgY3JlZGVudGlhbHMgY291
bGQgbm90IGJlIGZvdW5kLgogCi0gICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhp
cywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5nKCksICJQcm94eSBjcmVkZW50aWFs
cyBhcmUgbm90IGF2YWlsYWJsZSIpKTsKKyAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFt
KCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIlByb3h5IGNyZWRl
bnRpYWxzIGFyZSBub3QgYXZhaWxhYmxlIl9zKSk7CiB9CiAKIENGU3RyaW5nUmVmIFNvY2tldFN0
cmVhbUhhbmRsZUltcGw6OmNvcHlDRlN0cmVhbURlc2NyaXB0aW9uKHZvaWQqIGluZm8pCkBAIC01
NzMsNyArNTczLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2Fs
bGJhY2soQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSkKICAgICAgICAgICAgICAgICAgICAgYWRkQ09O
TkVDVENyZWRlbnRpYWxzKHByb3h5UmVzcG9uc2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAg
bV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3Ioc3Rh
dGljX2Nhc3Q8aW50Pihwcm94eVJlc3BvbnNlQ29kZSksIG1fdXJsLnN0cmluZygpLCAiUHJveHkg
Y29ubmVjdGlvbiBjb3VsZCBub3QgYmUgZXN0YWJsaXNoZWQsIHVuZXhwZWN0ZWQgcmVzcG9uc2Ug
Y29kZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVh
bSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3Ioc3RhdGljX2Nhc3Q8aW50Pihwcm94eVJlc3BvbnNl
Q29kZSksIG1fdXJsLnN0cmluZygpLCAiUHJveHkgY29ubmVjdGlvbiBjb3VsZCBub3QgYmUgZXN0
YWJsaXNoZWQsIHVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZSJfcykpOwogICAgICAgICAgICAgICAg
ICAgICBwbGF0Zm9ybUNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmNwcAppbmRleCA4ZWZiMTU0OGE1YjBkOTlkOTFjN2ZkNjdmMzg1YjQwMzk1ZGM5YzcyLi40
NmFkOTUzYWYzMzU3NjYzMjUxNzM5Y2EwMTY5ZGJlMTVlMDk5ZjlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTUzNyw2OSArNTM3LDcx
IEBAIGludCBTUUxpdGVEYXRhYmFzZTo6YXV0aG9yaXplckZ1bmN0aW9uKHZvaWQqIHVzZXJEYXRh
LCBpbnQgYWN0aW9uQ29kZSwgY29uc3QgY2hhCiAgICAgRGF0YWJhc2VBdXRob3JpemVyKiBhdXRo
ID0gc3RhdGljX2Nhc3Q8RGF0YWJhc2VBdXRob3JpemVyKj4odXNlckRhdGEpOwogICAgIEFTU0VS
VChhdXRoKTsKIAorICAgIFN0cmluZyBwYXJhbWV0ZXIxU3RyaW5nIHsgcGFyYW1ldGVyMSB9Owor
ICAgIFN0cmluZyBwYXJhbWV0ZXIyU3RyaW5nIHsgcGFyYW1ldGVyMiB9OwogICAgIHN3aXRjaCAo
YWN0aW9uQ29kZSkgewogICAgICAgICBjYXNlIFNRTElURV9DUkVBVEVfSU5ERVg6Ci0gICAgICAg
ICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlSW5kZXgocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7Cisg
ICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlSW5kZXgocGFyYW1ldGVyMVN0cmluZywgcGFy
YW1ldGVyMlN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0NSRUFURV9UQUJMRToKLSAgICAg
ICAgICAgIHJldHVybiBhdXRoLT5jcmVhdGVUYWJsZShwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAg
IHJldHVybiBhdXRoLT5jcmVhdGVUYWJsZShwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2Fz
ZSBTUUxJVEVfQ1JFQVRFX1RFTVBfSU5ERVg6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3Jl
YXRlVGVtcEluZGV4KHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAgICAgICAgICAgcmV0dXJu
IGF1dGgtPmNyZWF0ZVRlbXBJbmRleChwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0ZXIyU3RyaW5n
KTsKICAgICAgICAgY2FzZSBTUUxJVEVfQ1JFQVRFX1RFTVBfVEFCTEU6Ci0gICAgICAgICAgICBy
ZXR1cm4gYXV0aC0+Y3JlYXRlVGVtcFRhYmxlKHBhcmFtZXRlcjEpOworICAgICAgICAgICAgcmV0
dXJuIGF1dGgtPmNyZWF0ZVRlbXBUYWJsZShwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2Fz
ZSBTUUxJVEVfQ1JFQVRFX1RFTVBfVFJJR0dFUjoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5j
cmVhdGVUZW1wVHJpZ2dlcihwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICAgICAgICAgIHJl
dHVybiBhdXRoLT5jcmVhdGVUZW1wVHJpZ2dlcihwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0ZXIy
U3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfQ1JFQVRFX1RFTVBfVklFVzoKLSAgICAgICAg
ICAgIHJldHVybiBhdXRoLT5jcmVhdGVUZW1wVmlldyhwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAg
IHJldHVybiBhdXRoLT5jcmVhdGVUZW1wVmlldyhwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAg
Y2FzZSBTUUxJVEVfQ1JFQVRFX1RSSUdHRVI6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3Jl
YXRlVHJpZ2dlcihwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICAgICAgICAgIHJldHVybiBh
dXRoLT5jcmVhdGVUcmlnZ2VyKHBhcmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwog
ICAgICAgICBjYXNlIFNRTElURV9DUkVBVEVfVklFVzoKLSAgICAgICAgICAgIHJldHVybiBhdXRo
LT5jcmVhdGVWaWV3KHBhcmFtZXRlcjEpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmNyZWF0
ZVZpZXcocGFyYW1ldGVyMVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0RFTEVURToKLSAg
ICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0RlbGV0ZShwYXJhbWV0ZXIxKTsKKyAgICAgICAg
ICAgIHJldHVybiBhdXRoLT5hbGxvd0RlbGV0ZShwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAg
Y2FzZSBTUUxJVEVfRFJPUF9JTkRFWDoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wSW5k
ZXgocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+ZHJv
cEluZGV4KHBhcmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNl
IFNRTElURV9EUk9QX1RBQkxFOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmRyb3BUYWJsZShw
YXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVGFibGUocGFyYW1ldGVy
MVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0RST1BfVEVNUF9JTkRFWDoKLSAgICAgICAg
ICAgIHJldHVybiBhdXRoLT5kcm9wVGVtcEluZGV4KHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOwor
ICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmRyb3BUZW1wSW5kZXgocGFyYW1ldGVyMVN0cmluZywg
cGFyYW1ldGVyMlN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0RST1BfVEVNUF9UQUJMRToK
LSAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVGVtcFRhYmxlKHBhcmFtZXRlcjEpOworICAg
ICAgICAgICAgcmV0dXJuIGF1dGgtPmRyb3BUZW1wVGFibGUocGFyYW1ldGVyMVN0cmluZyk7CiAg
ICAgICAgIGNhc2UgU1FMSVRFX0RST1BfVEVNUF9UUklHR0VSOgotICAgICAgICAgICAgcmV0dXJu
IGF1dGgtPmRyb3BUZW1wVHJpZ2dlcihwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICAgICAg
ICAgIHJldHVybiBhdXRoLT5kcm9wVGVtcFRyaWdnZXIocGFyYW1ldGVyMVN0cmluZywgcGFyYW1l
dGVyMlN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0RST1BfVEVNUF9WSUVXOgotICAgICAg
ICAgICAgcmV0dXJuIGF1dGgtPmRyb3BUZW1wVmlldyhwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAg
IHJldHVybiBhdXRoLT5kcm9wVGVtcFZpZXcocGFyYW1ldGVyMVN0cmluZyk7CiAgICAgICAgIGNh
c2UgU1FMSVRFX0RST1BfVFJJR0dFUjoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVHJp
Z2dlcihwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5k
cm9wVHJpZ2dlcihwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0ZXIyU3RyaW5nKTsKICAgICAgICAg
Y2FzZSBTUUxJVEVfRFJPUF9WSUVXOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmRyb3BWaWV3
KHBhcmFtZXRlcjEpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmRyb3BWaWV3KHBhcmFtZXRl
cjFTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9JTlNFUlQ6Ci0gICAgICAgICAgICByZXR1
cm4gYXV0aC0+YWxsb3dJbnNlcnQocGFyYW1ldGVyMSk7CisgICAgICAgICAgICByZXR1cm4gYXV0
aC0+YWxsb3dJbnNlcnQocGFyYW1ldGVyMVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX1BS
QUdNQToKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd1ByYWdtYShwYXJhbWV0ZXIxLCBw
YXJhbWV0ZXIyKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd1ByYWdtYShwYXJhbWV0
ZXIxU3RyaW5nLCBwYXJhbWV0ZXIyU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfUkVBRDoK
LSAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd1JlYWQocGFyYW1ldGVyMSwgcGFyYW1ldGVy
Mik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dSZWFkKHBhcmFtZXRlcjFTdHJpbmcs
IHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9TRUxFQ1Q6CiAgICAgICAg
ICAgICByZXR1cm4gYXV0aC0+YWxsb3dTZWxlY3QoKTsKICAgICAgICAgY2FzZSBTUUxJVEVfVFJB
TlNBQ1RJT046CiAgICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dUcmFuc2FjdGlvbigpOwog
ICAgICAgICBjYXNlIFNRTElURV9VUERBVEU6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxs
b3dVcGRhdGUocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0
aC0+YWxsb3dVcGRhdGUocGFyYW1ldGVyMVN0cmluZywgcGFyYW1ldGVyMlN0cmluZyk7CiAgICAg
ICAgIGNhc2UgU1FMSVRFX0FUVEFDSDoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0F0
dGFjaChwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0F0dGFjaChw
YXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfREVUQUNIOgotICAgICAgICAg
ICAgcmV0dXJuIGF1dGgtPmFsbG93RGV0YWNoKHBhcmFtZXRlcjEpOworICAgICAgICAgICAgcmV0
dXJuIGF1dGgtPmFsbG93RGV0YWNoKHBhcmFtZXRlcjFTdHJpbmcpOwogICAgICAgICBjYXNlIFNR
TElURV9BTFRFUl9UQUJMRToKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0FsdGVyVGFi
bGUocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxs
b3dBbHRlclRhYmxlKHBhcmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAg
ICBjYXNlIFNRTElURV9SRUlOREVYOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93UmVp
bmRleChwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd1JlaW5kZXgo
cGFyYW1ldGVyMVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0FOQUxZWkU6Ci0gICAgICAg
ICAgICByZXR1cm4gYXV0aC0+YWxsb3dBbmFseXplKHBhcmFtZXRlcjEpOworICAgICAgICAgICAg
cmV0dXJuIGF1dGgtPmFsbG93QW5hbHl6ZShwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2Fz
ZSBTUUxJVEVfQ1JFQVRFX1ZUQUJMRToKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVhdGVW
VGFibGUocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+
Y3JlYXRlVlRhYmxlKHBhcmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAg
ICBjYXNlIFNRTElURV9EUk9QX1ZUQUJMRToKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9w
VlRhYmxlKHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgt
PmRyb3BWVGFibGUocGFyYW1ldGVyMVN0cmluZywgcGFyYW1ldGVyMlN0cmluZyk7CiAgICAgICAg
IGNhc2UgU1FMSVRFX0ZVTkNUSU9OOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93RnVu
Y3Rpb24ocGFyYW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dGdW5jdGlv
bihwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIFNRTEF1dGhEZW55OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgKaW5kZXggNTBkZDkyNGIzZWFl
NzEyZmJiMGRhM2Y3YzFjMGIzMmVhMTY3YmI1OC4uMTEzYTg1M2U0YWQzY2I3NTY3ZWFjMGJhNWMy
N2ZlYThkMzhkYWI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNo
bWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVt
ZW50KCkgY29uc3QgPSBkZWxldGU7CiAgICAgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJBdHRhY2htZW50IjsgfQorICAgIEFTQ0lJTGl0ZXJh
bCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckF0dGFjaG1lbnQi
X3M7IH0KIAogICAgIGJvb2wgc2hvdWxkRHJhd1NlbGVjdGlvblRpbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBj
b25zdCBMYXlvdXRQb2ludCYgb2Zmc2V0KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCmluZGV4IDVlNmRmMGJkNjAwZDMwZDVkZTk1YzEzZmQwOTEzZDRiZDUx
NWVlNzcuLjcwYTcxYmYwNmI0ZmRjNzcwMTljYWU5ODI4ZGM5NDQ2MzEyYzViMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzA0NiwyOCArMzA0NiwyOCBA
QCBib29sIFJlbmRlckJsb2NrOjpoYXNNYXJnaW5BZnRlclF1aXJrKGNvbnN0IFJlbmRlckJveCYg
Y2hpbGQpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1jb25zdCBjaGFyKiBSZW5kZXJC
bG9jazo6cmVuZGVyTmFtZSgpIGNvbnN0CitBU0NJSUxpdGVyYWwgUmVuZGVyQmxvY2s6OnJlbmRl
ck5hbWUoKSBjb25zdAogewogICAgIGlmIChpc0JvZHkoKSkKLSAgICAgICAgcmV0dXJuICJSZW5k
ZXJCb2R5IjsgLy8gRklYTUU6IFRlbXBvcmFyeSBoYWNrIHVudGlsIHdlIGtub3cgdGhhdCB0aGUg
cmVncmVzc2lvbiB0ZXN0cyBwYXNzLgorICAgICAgICByZXR1cm4gIlJlbmRlckJvZHkiX3M7IC8v
IEZJWE1FOiBUZW1wb3JhcnkgaGFjayB1bnRpbCB3ZSBrbm93IHRoYXQgdGhlIHJlZ3Jlc3Npb24g
dGVzdHMgcGFzcy4KICAgICBpZiAoaXNGaWVsZHNldCgpKQotICAgICAgICByZXR1cm4gIlJlbmRl
ckZpZWxkU2V0IjsgLy8gRklYTUU6IFJlbW92ZSBldmVudHVhbGx5LCBidXQgZG9uZSB0byBrZWVw
IHRlc3RzIGZyb20gYnJlYWtpbmcuCisgICAgICAgIHJldHVybiAiUmVuZGVyRmllbGRTZXQiX3M7
IC8vIEZJWE1FOiBSZW1vdmUgZXZlbnR1YWxseSwgYnV0IGRvbmUgdG8ga2VlcCB0ZXN0cyBmcm9t
IGJyZWFraW5nLgogICAgIGlmIChpc0Zsb2F0aW5nKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVy
QmxvY2sgKGZsb2F0aW5nKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGZsb2F0aW5n
KSJfczsKICAgICBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJldHVybiAi
UmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAo
cG9zaXRpb25lZCkiX3M7CiAgICAgaWYgKGlzQW5vbnltb3VzQmxvY2soKSkKLSAgICAgICAgcmV0
dXJuICJSZW5kZXJCbG9jayAoYW5vbnltb3VzKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVyQmxv
Y2sgKGFub255bW91cykiX3M7CiAgICAgLy8gRklYTUU6IFRlbXBvcmFyeSBoYWNrIHdoaWxlIHRo
ZSBuZXcgZ2VuZXJhdGVkIGNvbnRlbnQgc3lzdGVtIGlzIGJlaW5nIGltcGxlbWVudGVkLgogICAg
IGlmIChpc1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAoZ2Vu
ZXJhdGVkKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGdlbmVyYXRlZCkiX3M7CiAg
ICAgaWYgKGlzQW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGdlbmVy
YXRlZCkiOworICAgICAgICByZXR1cm4gIlJlbmRlckJsb2NrIChnZW5lcmF0ZWQpIl9zOwogICAg
IGlmIChpc1JlbGF0aXZlbHlQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyQmxv
Y2sgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAo
cmVsYXRpdmUgcG9zaXRpb25lZCkiX3M7CiAgICAgaWYgKGlzU3RpY2tpbHlQb3NpdGlvbmVkKCkp
Ci0gICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKHN0aWNreSBwb3NpdGlvbmVkKSI7Ci0gICAg
cmV0dXJuICJSZW5kZXJCbG9jayI7CisgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKHN0aWNr
eSBwb3NpdGlvbmVkKSJfczsKKyAgICByZXR1cm4gIlJlbmRlckJsb2NrIl9zOwogfQogCiBUZXh0
UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24sIFRl
eHRSdW5GbGFncyBmbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5k
ZXggMjIwZmQ3NDEzMDc5MTE0MDM4NWQwZDJkNTA2YTYzNDQwZWNkY2MxOC4uYWYxNWY5Y2IxMGVh
ZmY0YjQ2ZTExYjQwODkwZWIzMzNmZmQ4NGQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgKQEAgLTQzNSw3ICs0MzUsNyBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQg
YWRqdXN0TG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0IG9mZnNldEZyb21GbG9h
dHMsIGJvb2wgYXBwbHlUZXh0SW5kZW50KSBjb25zdDsKICAgICBMYXlvdXRVbml0IGFkanVzdExv
Z2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0IG9mZnNldEZyb21GbG9hdHMsIGJvb2wg
YXBwbHlUZXh0SW5kZW50KSBjb25zdDsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgYm9vbCBpc1NlbGZDb2xsYXBzaW5nQmxvY2soKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRyZW5QcmV2ZW50U2VsZkNvbGxhcHNpbmcoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAppbmRleCBhNDkzOWM0YTAwNzUw
MmE1Nzg5NDlmZGM1Y2M2NTZjYzc5NWQ1Mzg5Li45ZjI4NzQyNWZhZDg1ZjE4ODc5OTZlNWE2YzY1
ODM3MmM1MGVlYWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QnV0dG9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCkBA
IC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29u
c3QgPSBkZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlckJ1dHRvbiI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJCdXR0b24iX3M7IH0KICAgICBib29s
IGlzUmVuZGVyQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
Ym9vbCBoYXNMaW5lSWZFbXB0eSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaAppbmRleCBlNWQxYWIzMWYyMmM2ZTcxYWYzZDQz
YWY5NWMwMzEyNGM2Mjc1ZDViLi5jMTFhYjQ2NGQ5ODIxMTlmZDM2YjgxZjMxMmQ4ZTA3NmI1YWY3
ZDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaApA
QCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbm9kZSgpIGNvbnN0ID0gZGVsZXRl
OwogCiAgICAgYm9vbCBpc0NvbWJpbmVUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyQ29tYmluZVRleHQiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyQ29tYmluZVRleHQiX3M7IH0KICAgICB2b2lk
IHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlbmRlcmVkVGV4dChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNv
dW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmlu
ZGV4IGNlY2VkMzVlNWNlODdiZmJjMTQwMTgzNmNkMTNlYTFhZWRkN2FmYzAuLmEzZmVmYWQwNmE2
YjI3MmIxYWYxYjU5MDQzNjk4MmExNjg1M2IxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTQwNiw5ICs0MDYsOSBAQCB2b2lkIFJlbmRlckNvdW50
ZXI6OndpbGxCZURlc3Ryb3llZCgpCiAgICAgUmVuZGVyVGV4dDo6d2lsbEJlRGVzdHJveWVkKCk7
CiB9CiAKLWNvbnN0IGNoYXIqIFJlbmRlckNvdW50ZXI6OnJlbmRlck5hbWUoKSBjb25zdAorQVND
SUlMaXRlcmFsIFJlbmRlckNvdW50ZXI6OnJlbmRlck5hbWUoKSBjb25zdAogewotICAgIHJldHVy
biAiUmVuZGVyQ291bnRlciI7CisgICAgcmV0dXJuICJSZW5kZXJDb3VudGVyIl9zOwogfQogCiBi
b29sIFJlbmRlckNvdW50ZXI6OmlzQ291bnRlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvdW50ZXIuaAppbmRleCBiNTM1NjYzYWZjODE0NDg5YTI4MTE1MjYxM2E5NjRi
MTMyMzg0MTVkLi5lY2QzZjgzNDg3YjI3MDkxODRmYzE0MGM2NzNkNDJlY2U1ZTk1OGJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIHN0YXRp
YyB2b2lkIHJlbmRlcmVyU3R5bGVDaGFuZ2VkU2xvd0Nhc2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKTsKICAg
ICAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVND
SUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzQ291bnRl
cigpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBvcmlnaW5hbFRleHQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5kZXggYWVkMzJlNjlkMjhhZThlYjI3M2FiYWY4
MTg0YzMyNmFhNTc5MzRhMi4uYTA2ZTVmM2JhNzY0ODc1ZGQ2N2Y3MTA2MDc3Mjk0NjRjNzQxMjgy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5jcHAKQEAgLTExODMsMjAgKzExODMsMjAgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmFsbG93ZWRDaGlsZEZsZXgoUmVuZGVyQm94KiBj
aGlsZCwgYm9vbAogICAgIHJldHVybiAwOwogfQogCi1jb25zdCBjaGFyKiBSZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3g6OnJlbmRlck5hbWUoKSBjb25zdAorQVNDSUlMaXRlcmFsIFJlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveDo6cmVuZGVyTmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRmxv
YXRpbmcoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKGZs
b2F0aW5nKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IChm
bG9hdGluZykiX3M7CiAgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQotICAgICAgICBy
ZXR1cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCAocG9zaXRpb25lZCkiOworICAgICAg
ICByZXR1cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCAocG9zaXRpb25lZCkiX3M7CiAg
ICAgLy8gRklYTUU6IFRlbXBvcmFyeSBoYWNrIHdoaWxlIHRoZSBuZXcgZ2VuZXJhdGVkIGNvbnRl
bnQgc3lzdGVtIGlzIGJlaW5nIGltcGxlbWVudGVkLgogICAgIGlmIChpc1BzZXVkb0VsZW1lbnQo
KSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKGdlbmVyYXRl
ZCkiOworICAgICAgICByZXR1cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCAoZ2VuZXJh
dGVkKSJfczsKICAgICBpZiAoaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3ggKGdlbmVyYXRlZCkiOworICAgICAgICByZXR1cm4gIlJlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveCAoZ2VuZXJhdGVkKSJfczsKICAgICBpZiAoaXNSZWxhdGl2
ZWx5UG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveCAocmVsYXRpdmUgcG9zaXRpb25lZCkiOwotICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94IjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3ggKHJlbGF0aXZlIHBvc2l0aW9uZWQpIl9zOworICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94Il9zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgK
aW5kZXggOTAxM2E0NmNkZDI4OTQ2NmNlNzhiYzFjZDFkNWFmOTRjMDhmOTIwOC4uNDcwOTEzNGQw
M2ZmNGRjOWMzNjA0YWFlZjI3NzZlMGFkODhlOTcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaApAQCAtMzYsNyAr
MzYsNyBAQCBwdWJsaWM6CiAKICAgICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
ZG93bmNhc3Q8RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCi0gICAgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFTQ0lJTGl0ZXJhbCByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oCmluZGV4IGFi
ZDg4M2Q4MDk5ZjU3Mjc4NDY2MDIyOTYxZWRhNjQ5MWNhZjA4ZWQuLmRkODQ4MDlmMDI1ZWYxNGVh
OWU1MTZmMWZkM2M3NjdhNTBiZTYxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckRldGFpbHNNYXJrZXIuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckRldGFpbHNNYXJr
ZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyRGV0YWlsc01hcmtlciJfczsgfQogICAgIGJvb2wgaXNEZXRhaWxzTWFya2Vy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgcGFpbnQoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAppbmRleCBmMWZkOWZmMDVkZGE5NTdj
NjQ2NGQxNDcwN2M5NDIxYmE4Mzg1ZjRlLi5jMDQxYzk2OTRiNDhlMGQ4MWVhOWJjMjk2OWU3OGE4
NjZhODE3ZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF5b3V0KCkg
ZmluYWw7CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBmaW5hbDsKIAotICAgIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyRW1iZWRkZWRPYmpl
Y3QiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAiUmVuZGVyRW1iZWRkZWRPYmplY3QiX3M7IH0KICAgICBib29sIGlzRW1iZWRkZWRPYmplY3Qo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIHNob3dzVW5hdmFpbGFi
bGVQbHVnaW5JbmRpY2F0b3IoKSBjb25zdCB7IHJldHVybiBpc1BsdWdpblVuYXZhaWxhYmxlKCkg
JiYgbV9pc1VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yU3RhdGUgIT0gVW5hdmFpbGFibGVQbHVn
aW5JbmRpY2F0b3JTdGF0ZTo6SGlkZGVuOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCmluZGV4IGQzMGE5YmJmNTg4N2IxNDAxMDg0
MTM1ZGQxMzAwMTRmZjg0YWMxYWMuLjljMjM1YjEwNzI5ZjlmN2NiNDJmYWZlOWQ0NjIwMTAzYWZj
NmQzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBs
b2FkQ29udHJvbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBs
b2FkQ29udHJvbC5oCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzRmls
ZVVwbG9hZENvbnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZp
bGVVcGxvYWRDb250cm9sIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZpbGVVcGxvYWRDb250cm9sIl9zOyB9CiAKICAgICB2
b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlSW50cmlu
c2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQm
IG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCA1ZDFkYTZhZjk1ZmMyMmEyNTM1YjM0
OGVhZTY4YWU0MjdiNjM2Y2MxLi5mYzQzNGYxOWE0NDg5NjQ3NmJiYzRmZGIzYTYxZDc3OWMyODlk
NTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5j
cHAKQEAgLTg5LDkgKzg5LDkgQEAgUmVuZGVyRmxleGlibGVCb3g6On5SZW5kZXJGbGV4aWJsZUJv
eCgpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bm9kZUxheW91dENvbnRleHRD
aGFuZ2VkKG5vZGVGb3JOb25Bbm9ueW1vdXMoKSwgbnVsbHB0cik7CiB9CiAKLWNvbnN0IGNoYXIq
IFJlbmRlckZsZXhpYmxlQm94OjpyZW5kZXJOYW1lKCkgY29uc3QKK0FTQ0lJTGl0ZXJhbCBSZW5k
ZXJGbGV4aWJsZUJveDo6cmVuZGVyTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICJSZW5kZXJG
bGV4aWJsZUJveCI7CisgICAgcmV0dXJuICJSZW5kZXJGbGV4aWJsZUJveCJfczsKIH0KIAogdm9p
ZCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0
VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCmluZGV4IDRi
NTU1MmIxODk1ZDUwZTBkY2UxOTIzMDc5NjdhM2Q0MWQ3ZWZlY2UuLmNlZTAzMTc3NDI3NWI3MGFl
MWNiMGJmYjE1ZDhmYzg5MTU3ZjExZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNGbGV4aWJsZUJveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBU0NJSUxpdGVyYWwg
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBhdm9pZHNGbG9hdHMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBjYW5Ecm9wQW5vbnltb3VzQmxv
Y2tDaGlsZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5oCmluZGV4IGI3MGU3MTZk
MzBkMmExYmJkMWM3YTA2NjViZmY2NGExZjFhMjhjMzUuLjFmYjAxMDBhM2I0Y2ZhOTNhMzU3M2Nh
MDhkZmQ1YjQ3Y2VmNmJjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFnbWVudENvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFnbWVudENvbnRhaW5lci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJvdGVjdGVkOgog
CiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJGcmFnbWVudENvbnRhaW5lcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZyYWdtZW50Q29udGFpbmVyIjsgfQorICAgIEFTQ0lJ
TGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZyYWdt
ZW50Q29udGFpbmVyIl9zOyB9CiAKICAgICB2b2lkIGluc2VydGVkSW50b1RyZWUoSXNJbnRlcm5h
bE1vdmUpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKElzSW50ZXJu
YWxNb3ZlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFnbWVudENvbnRhaW5lclNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYWdtZW50Q29udGFpbmVyU2V0LmgKaW5kZXggZTQ0YjJkZmQ2NmU5ZTcwNzMwNDdlOTZh
OGZiMzJiN2M1NGRkMTBkYS4uMjQxZGE5MjdjZTQwMTAzMDVjODc3MzMwMzczMzQwMTA5NjU4MWY1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29u
dGFpbmVyU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50
Q29udGFpbmVyU2V0LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAg
ICB2b2lkIGluc3RhbGxGcmFnbWVudGVkRmxvdygpIGZpbmFsOwogCi0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlID0gMDsKKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVy
TmFtZSgpIGNvbnN0IG92ZXJyaWRlID0gMDsKICAgICAKICAgICBib29sIGlzUmVuZGVyRnJhZ21l
bnRDb250YWluZXJTZXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuaAppbmRleCA3NWZi
NTAzNzAzMDY5ZDBhZDEwNDg3MjMzMzUxZmI0MzE2ZGM1ZTdjLi4wZDM4OWFkNzUxYzZkYjQwMmY5
Mzg2YTJkMjVhM2EwMTMyMGU5YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhZ21lbnRlZEZsb3cuaApAQCAtMTg2LDcgKzE4Niw3IEBAIHByb3RlY3RlZDoKIAog
ICAgIFJlbmRlckZyYWdtZW50ZWRGbG93KiBsb2NhdGVFbmNsb3NpbmdGcmFnbWVudGVkRmxvdygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyRnJhZ21lbnRlZEZsb3cq
Pih0aGlzKTsgfQogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
ID0gMDsKKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlID0gMDsK
IAogICAgIC8vIE92ZXJyaWRkZW4gYnkgY29sdW1ucy9wYWdlcyB0byBzZXQgdXAgYW4gaW5pdGlh
bCBsb2dpY2FsIHdpZHRoIG9mIHRoZSBwYWdlIHdpZHRoIGV2ZW4gd2hlbgogICAgIC8vIG5vIGZy
YWdtZW50cyBoYXZlIGJlZW4gZ2VuZXJhdGVkIHlldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lLmgKaW5kZXggM2Q2N2EwZmQ3ZjY4YTI1ZGEzMjM3MTFiNDI0NzdiZjdiYjhjNTJj
MS4uZjQyMTI1ZGI2MWFmZWUwYWJhMTgzZWJhZGJmZmViZjMxMmMzOWJkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICB2b2lkIGZyYW1lT3duZXJFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAg
ICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlckZy
YW1lIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gIlJlbmRlckZyYW1lIl9zOyB9CiAgICAgYm9vbCBpc0ZyYW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVT
ZXQuaAppbmRleCAwZjhhMDkwOTcxMjgyY2YxMTJhYjUwZjE4ODZkMGMxMDcxYzk1Y2MyLi5hZGE0
MzRlODQ3ZWMzZTkxZmNjM2Q3ZDQwNzFmYjhkYTQxMzljNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAg
ICAgICBpbnQgbV9zcGxpdFJlc2l6ZU9mZnNldDsKICAgICB9OwogCi0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJGcmFtZVNldCI7IH0K
KyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJGcmFtZVNldCJfczsgfQogICAgIGJvb2wgaXNGcmFtZVNldCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAppbmRleCA2OTA0MzM1OTJjN2Y0
ZWIyMmYyYWM0NTYxN2QxMDBjZWY1MTk5OTA5Li4wMDBmMzFmMDRmMjVlYTA1OTE2ZjExZTQ4ZWFi
M2NhMzBlZjlkYmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnVsbFNjcmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2Ny
ZWVuLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIFJlbmRlckZ1bGxTY3JlZW4oRG9j
dW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJGdWxsU2NyZWVuKCk7
CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlckZ1bGxTY3JlZW4iOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyRnVsbFNjcmVlbiJfczsgfQogCiAgICAgUmVuZGVy
QmxvY2sqIHBsYWNlaG9sZGVyKCkgeyByZXR1cm4gbV9wbGFjZWhvbGRlci5nZXQoKTsgfQogICAg
IHZvaWQgc2V0UGxhY2Vob2xkZXIoUmVuZGVyQmxvY2smIHBsYWNlaG9sZGVyKSB7IG1fcGxhY2Vo
b2xkZXIgPSBwbGFjZWhvbGRlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwCmluZGV4IDNkZWFmZWRmMjFhNmMwMzg5NTczZDQyMGEwNTY0ZGZhYjlhOGRiYmYuLjgzMTM3
NjQxYTRiOTkxYjg2OTFlYWRjNGM0NjQ0ZDkyMzVlOTVlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTE5ODcsMTcgKzE5ODcsMTcgQEAgdm9pZCBSZW5kZXJH
cmlkOjpwYWludENoaWxkcmVuKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmYKICAgICAgICAgcGFpbnRDaGlsZCgqY2hpbGQsIHBhaW50SW5mbywgcGFpbnRP
ZmZzZXQsIGZvckNoaWxkLCB1c2VQcmludFJlY3QsIFBhaW50QXNJbmxpbmVCbG9jayk7CiB9CiAK
LWNvbnN0IGNoYXIqIFJlbmRlckdyaWQ6OnJlbmRlck5hbWUoKSBjb25zdAorQVNDSUlMaXRlcmFs
IFJlbmRlckdyaWQ6OnJlbmRlck5hbWUoKSBjb25zdAogewogICAgIGlmIChpc0Zsb2F0aW5nKCkp
Ci0gICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAoZmxvYXRpbmcpIjsKKyAgICAgICAgcmV0dXJu
ICJSZW5kZXJHcmlkIChmbG9hdGluZykiX3M7CiAgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25l
ZCgpKQotICAgICAgICByZXR1cm4gIlJlbmRlckdyaWQgKHBvc2l0aW9uZWQpIjsKKyAgICAgICAg
cmV0dXJuICJSZW5kZXJHcmlkIChwb3NpdGlvbmVkKSJfczsKICAgICBpZiAoaXNBbm9ueW1vdXMo
KSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJHcmlkIChnZW5lcmF0ZWQpIjsKKyAgICAgICAgcmV0
dXJuICJSZW5kZXJHcmlkIChnZW5lcmF0ZWQpIl9zOwogICAgIGlmIChpc1JlbGF0aXZlbHlQb3Np
dGlvbmVkKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAocmVsYXRpdmUgcG9zaXRpb25l
ZCkiOwotICAgIHJldHVybiAiUmVuZGVyR3JpZCI7CisgICAgICAgIHJldHVybiAiUmVuZGVyR3Jp
ZCAocmVsYXRpdmUgcG9zaXRpb25lZCkiX3M7CisgICAgcmV0dXJuICJSZW5kZXJHcmlkIl9zOwog
fQogCiBib29sIFJlbmRlckdyaWQ6Omhhc0F1dG9TaXplSW5Db2x1bW5BeGlzKGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRl
eCAxODRlNjQyYmFjMjMzNzNiMGUyZGUzZDM4YmNjYWJlN2ZmY2MyMmI5Li44ZTY2OWEwYjg3YjY0
ZDIyZTAzNTg1OTA2MGU1ZTQ4OGRiMjQ1MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gY2hp
bGQtPmlzUmVuZGVyUmVwbGFjZWQoKSA/IEl0ZW1Qb3NpdGlvbjo6U3RhcnQgOiBJdGVtUG9zaXRp
b246OlN0cmV0Y2g7CiAgICAgfQogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBpc1JlbmRlckdyaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5M
b2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oCmluZGV4IGZm
MzU2M2M3ODM3NmUyNTBjM2Y3ZDkyMmUxY2YxMTkyZjQ0NjBjNTEuLmVhZmQwODQ4MzYwZjkyMjQ2
N2E0YjVkMTJiNjhhYmNhNDMwNWRiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJIVE1MQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckhUTUxDYW52YXMuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZWxl
bWVudCgpIGNvbnN0ID0gZGVsZXRlOwogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgaXNDYW52YXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJSZW5kZXJIVE1MQ2FudmFzIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckhUTUxDYW52YXMiX3M7IH0KICAgICB2b2lkIHBh
aW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCkgb3ZlcnJpZGUgeyBjYW52YXNTaXplQ2hhbmdl
ZCgpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklG
cmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oCmluZGV4IDkx
Y2Q4NTU2NDRhYjc4YmU5YjFjZjRlOTNhZWIyMDcyMjUwN2IxMTYuLjU5YTc4ODVlZDc3NTAxMjI1
MzNjM2Y2ZGJhMDA3N2YwYjBiNzdhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SUZyYW1lLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNSZW5kZXJJ
RnJhbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlcklGcmFtZSI7IH0K
KyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJJRnJhbWUiX3M7IH0KIAogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IDhhYWNkNGMw
NzNkYzg5Nzk2NzBkNzVkMTNlY2QyMTc0YmM5YzI3NjQuLjQ0MjlkMzA3ZjdiMDZiNjcyMTVkYzQ2
YmM2ZjJiNDA1YjVhMzRjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5o
CkBAIC0xMDQsNyArMTA0LDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlcklt
YWdlIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlckltYWdlIl9zOyB9CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNv
bnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
CmluZGV4IDBiNDVlYWVjMTM0YzVjN2QwMWEwMmMzM2VmODNjOTc4NGI4ZjZiZWEuLjc2MDA1MDAx
ZDNjMGRkZTQzNzBkYWI3ODRmZTI0NWU3ZWQ4OGI5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC00MDIsMTggKzQwMiwxOCBAQCBMYXlvdXRVbml0IFJl
bmRlcklubGluZTo6bWFyZ2luQWZ0ZXIoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNv
bnN0CiAgICAgcmV0dXJuIGNvbXB1dGVNYXJnaW4odGhpcywgc3R5bGUoKS5tYXJnaW5BZnRlclVz
aW5nKG90aGVyU3R5bGUgPyBvdGhlclN0eWxlIDogJnN0eWxlKCkpKTsKIH0KIAotY29uc3QgY2hh
ciogUmVuZGVySW5saW5lOjpyZW5kZXJOYW1lKCkgY29uc3QKK0FTQ0lJTGl0ZXJhbCBSZW5kZXJJ
bmxpbmU6OnJlbmRlck5hbWUoKSBjb25zdAogewogICAgIGlmIChpc1JlbGF0aXZlbHlQb3NpdGlv
bmVkKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVySW5saW5lIChyZWxhdGl2ZSBwb3NpdGlvbmVk
KSI7CisgICAgICAgIHJldHVybiAiUmVuZGVySW5saW5lIChyZWxhdGl2ZSBwb3NpdGlvbmVkKSJf
czsKICAgICBpZiAoaXNTdGlja2lseVBvc2l0aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuICJSZW5k
ZXJJbmxpbmUgKHN0aWNreSBwb3NpdGlvbmVkKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVySW5s
aW5lIChzdGlja3kgcG9zaXRpb25lZCkiX3M7CiAgICAgLy8gRklYTUU6IFRlbXBvcmFyeSBoYWNr
IHdoaWxlIHRoZSBuZXcgZ2VuZXJhdGVkIGNvbnRlbnQgc3lzdGVtIGlzIGJlaW5nIGltcGxlbWVu
dGVkLgogICAgIGlmIChpc1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJJ
bmxpbmUgKGdlbmVyYXRlZCkiOworICAgICAgICByZXR1cm4gIlJlbmRlcklubGluZSAoZ2VuZXJh
dGVkKSJfczsKICAgICBpZiAoaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJJ
bmxpbmUgKGdlbmVyYXRlZCkiOwotICAgIHJldHVybiAiUmVuZGVySW5saW5lIjsKKyAgICAgICAg
cmV0dXJuICJSZW5kZXJJbmxpbmUgKGdlbmVyYXRlZCkiX3M7CisgICAgcmV0dXJuICJSZW5kZXJJ
bmxpbmUiX3M7CiB9CiAKIGJvb2wgUmVuZGVySW5saW5lOjpub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IDBhMTcxYWY4YmJhZGNhYjBlMGJhNDE2ZDJh
MDk4Nzk4YmVkMjc0MzUuLjQzYmQwNmJlY2E1MDUxMjE2NmVmMTI2M2UzZGFkNmYzNTgwNGRhMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTkzLDcgKzkzLDcg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgdXBkYXRlRnJvbVN0eWxlKCkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGNh
bkhhdmVDaGlsZHJlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAyMzQ1NTI1
YjJjODBmYTIyY2ViNjIwZDVkYWY3MDEwMDIxOTg1MmY0Li5mZjBlOTFjY2Y0YzA4N2UzZGU2YjM1
MTE3NDgzZTQ0YjdhMzAxMTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNTE3LDEyICs1MTcsMTIgQEAgdm9pZCBSZW5kZXJMYXll
ckJhY2tpbmc6OmNyZWF0ZVByaW1hcnlHcmFwaGljc0xheWVyKCkKICAgICBjb25zdCB1bnNpZ25l
ZCBtYXhMYXllck5hbWVMZW5ndGggPSAxMDA7CiAgICAgaWYgKGxheWVyTmFtZS5sZW5ndGgoKSA+
IG1heExheWVyTmFtZUxlbmd0aCkgewogICAgICAgICBsYXllck5hbWUudHJ1bmNhdGUobWF4TGF5
ZXJOYW1lTGVuZ3RoKTsKLSAgICAgICAgbGF5ZXJOYW1lLmFwcGVuZCgiLi4uIik7CisgICAgICAg
IGxheWVyTmFtZS5hcHBlbmQoIi4uLiJfcyk7CiAgICAgfQogICAgIG1fZ3JhcGhpY3NMYXllciA9
IGNyZWF0ZUdyYXBoaWNzTGF5ZXIobGF5ZXJOYW1lLCBtX2lzRnJhbWVMYXllcldpdGhUaWxlZEJh
Y2tpbmcgPyBHcmFwaGljc0xheWVyOjpUeXBlOjpQYWdlVGlsZWRCYWNraW5nIDogR3JhcGhpY3NM
YXllcjo6VHlwZTo6Tm9ybWFsKTsKIAogICAgIGlmIChtX2lzRnJhbWVMYXllcldpdGhUaWxlZEJh
Y2tpbmcpIHsKLSAgICAgICAgbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIgPSBjcmVhdGVHcmFwaGlj
c0xheWVyKCJQYWdlIFRpbGVkQmFja2luZyBjb250YWlubWVudCIpOworICAgICAgICBtX2NoaWxk
Q29udGFpbm1lbnRMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoIlBhZ2UgVGlsZWRCYWNraW5n
IGNvbnRhaW5tZW50Il9zKTsKICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5hZGRDaGlsZCgqbV9j
aGlsZENvbnRhaW5tZW50TGF5ZXIpOwogICAgIH0KIApAQCAtMTkzNyw3ICsxOTM3LDcgQEAgdm9p
ZCBSZW5kZXJMYXllckJhY2tpbmc6OmVuc3VyZUNsaXBwaW5nU3RhY2tMYXllcnMoTGF5ZXJBbmNl
c3RvckNsaXBwaW5nU3RhY2smIGMKIHsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2xpcHBpbmdT
dGFjay5zdGFjaygpKSB7CiAgICAgICAgIGlmICghZW50cnkuY2xpcHBpbmdMYXllcikgewotICAg
ICAgICAgICAgZW50cnkuY2xpcHBpbmdMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoZW50cnku
Y2xpcERhdGEuaXNPdmVyZmxvd1Njcm9sbCA/ICJjbGlwIGZvciBzY3JvbGxlciIgOiAiYW5jZXN0
b3IgY2xpcHBpbmciKTsKKyAgICAgICAgICAgIGVudHJ5LmNsaXBwaW5nTGF5ZXIgPSBjcmVhdGVH
cmFwaGljc0xheWVyKGVudHJ5LmNsaXBEYXRhLmlzT3ZlcmZsb3dTY3JvbGwgPyAiY2xpcCBmb3Ig
c2Nyb2xsZXIiX3MgOiAiYW5jZXN0b3IgY2xpcHBpbmciX3MpOwogICAgICAgICAgICAgZW50cnku
Y2xpcHBpbmdMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICAgICAgICAgICAgIGVudHJ5
LmNsaXBwaW5nTGF5ZXItPnNldFBhaW50aW5nUGhhc2UoeyB9KTsKICAgICAgICAgfQpAQCAtMjAy
Niw3ICsyMDI2LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURlc2NlbmRhbnRD
bGlwcGluZ0xheWVyKGJvb2wgbmVlZHNEZXNjZW5kYW50Q2xpcCkKIAogICAgIGlmIChuZWVkc0Rl
c2NlbmRhbnRDbGlwKSB7CiAgICAgICAgIGlmICghbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIgJiYg
IW1faXNGcmFtZUxheWVyV2l0aFRpbGVkQmFja2luZykgewotICAgICAgICAgICAgbV9jaGlsZENv
bnRhaW5tZW50TGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJjaGlsZCBjbGlwcGluZyIpOwor
ICAgICAgICAgICAgbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVy
KCJjaGlsZCBjbGlwcGluZyJfcyk7CiAgICAgICAgICAgICBtX2NoaWxkQ29udGFpbm1lbnRMYXll
ci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICAgICAgICAgICAgIGxheWVyc0NoYW5nZWQgPSB0
cnVlOwogICAgICAgICB9CkBAIC0yMTE4LDcgKzIxMTgsNyBAQCBib29sIFJlbmRlckxheWVyQmFj
a2luZzo6cmVxdWlyZXNTY3JvbGxDb3JuZXJMYXllcigpIGNvbnN0CiAKIGJvb2wgUmVuZGVyTGF5
ZXJCYWNraW5nOjp1cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKGJvb2wgbmVlZHNIb3Jpem9u
dGFsU2Nyb2xsYmFyTGF5ZXIsIGJvb2wgbmVlZHNWZXJ0aWNhbFNjcm9sbGJhckxheWVyLCBib29s
IG5lZWRzU2Nyb2xsQ29ybmVyTGF5ZXIpCiB7Ci0gICAgYXV0byBjcmVhdGVPckRlc3Ryb3lMYXll
ciA9IFsmXShSZWZQdHI8R3JhcGhpY3NMYXllcj4mIGxheWVyLCBib29sIG5lZWRMYXllciwgYm9v
bCBkcmF3c0NvbnRlbnQsIGNvbnN0IGNoYXIqIGxheWVyTmFtZSkgeworICAgIGF1dG8gY3JlYXRl
T3JEZXN0cm95TGF5ZXIgPSBbJl0oUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiBsYXllciwgYm9vbCBu
ZWVkTGF5ZXIsIGJvb2wgZHJhd3NDb250ZW50LCBBU0NJSUxpdGVyYWwgbGF5ZXJOYW1lKSB7CiAg
ICAgICAgIGlmIChuZWVkTGF5ZXIgPT0gISFsYXllcikKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMjEzOCwxNSArMjEzOCwxNSBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyhib29sIG5lZWRzSG9yaXpvbnRhbFNjcm9sbAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9OwogCi0gICAgYm9vbCBsYXllcnNDaGFuZ2VkID0gY3Jl
YXRlT3JEZXN0cm95TGF5ZXIobV9vdmVyZmxvd0NvbnRyb2xzQ29udGFpbmVyLCBuZWVkc0hvcml6
b250YWxTY3JvbGxiYXJMYXllciB8fCBuZWVkc1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIgfHwgbmVl
ZHNTY3JvbGxDb3JuZXJMYXllciwgZmFsc2UsICJvdmVyZmxvdyBjb250cm9scyBjb250YWluZXIi
KTsKKyAgICBib29sIGxheWVyc0NoYW5nZWQgPSBjcmVhdGVPckRlc3Ryb3lMYXllcihtX292ZXJm
bG93Q29udHJvbHNDb250YWluZXIsIG5lZWRzSG9yaXpvbnRhbFNjcm9sbGJhckxheWVyIHx8IG5l
ZWRzVmVydGljYWxTY3JvbGxiYXJMYXllciB8fCBuZWVkc1Njcm9sbENvcm5lckxheWVyLCBmYWxz
ZSwgIm92ZXJmbG93IGNvbnRyb2xzIGNvbnRhaW5lciJfcyk7CiAKLSAgICBib29sIGhvcml6b250
YWxTY3JvbGxiYXJMYXllckNoYW5nZWQgPSBjcmVhdGVPckRlc3Ryb3lMYXllcihtX2xheWVyRm9y
SG9yaXpvbnRhbFNjcm9sbGJhciwgbmVlZHNIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIsIHRydWUs
ICJob3Jpem9udGFsIHNjcm9sbGJhciIpOworICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbGJhckxh
eWVyQ2hhbmdlZCA9IGNyZWF0ZU9yRGVzdHJveUxheWVyKG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Ny
b2xsYmFyLCBuZWVkc0hvcml6b250YWxTY3JvbGxiYXJMYXllciwgdHJ1ZSwgImhvcml6b250YWwg
c2Nyb2xsYmFyIl9zKTsKICAgICBsYXllcnNDaGFuZ2VkIHw9IGhvcml6b250YWxTY3JvbGxiYXJM
YXllckNoYW5nZWQ7CiAKLSAgICBib29sIHZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkID0g
Y3JlYXRlT3JEZXN0cm95TGF5ZXIobV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyLCBuZWVkc1Zl
cnRpY2FsU2Nyb2xsYmFyTGF5ZXIsIHRydWUsICJ2ZXJ0aWNhbCBzY3JvbGxiYXIiKTsKKyAgICBi
b29sIHZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkID0gY3JlYXRlT3JEZXN0cm95TGF5ZXIo
bV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyLCBuZWVkc1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIs
IHRydWUsICJ2ZXJ0aWNhbCBzY3JvbGxiYXIiX3MpOwogICAgIGxheWVyc0NoYW5nZWQgfD0gdmVy
dGljYWxTY3JvbGxiYXJMYXllckNoYW5nZWQ7CiAKLSAgICBsYXllcnNDaGFuZ2VkIHw9IGNyZWF0
ZU9yRGVzdHJveUxheWVyKG1fbGF5ZXJGb3JTY3JvbGxDb3JuZXIsIG5lZWRzU2Nyb2xsQ29ybmVy
TGF5ZXIsIHRydWUsICJzY3JvbGwgY29ybmVyIik7CisgICAgbGF5ZXJzQ2hhbmdlZCB8PSBjcmVh
dGVPckRlc3Ryb3lMYXllcihtX2xheWVyRm9yU2Nyb2xsQ29ybmVyLCBuZWVkc1Njcm9sbENvcm5l
ckxheWVyLCB0cnVlLCAic2Nyb2xsIGNvcm5lciJfcyk7CiAKICAgICBpZiAoYXV0byogc2Nyb2xs
aW5nQ29vcmRpbmF0b3IgPSBtX293bmluZ0xheWVyLnBhZ2UoKS5zY3JvbGxpbmdDb29yZGluYXRv
cigpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IG1fb3duaW5nTGF5ZXIu
c2Nyb2xsYWJsZUFyZWEoKSkgewpAQCAtMjI4Miw3ICsyMjgyLDcgQEAgYm9vbCBSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZU1hc2tpbmdMYXllcihib29sIGhhc01hc2ssIGJvb2wgaGFzQ2xpcFBh
dGgpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1fbWFza0xheWVyKSB7Ci0gICAgICAgICAg
ICBtX21hc2tMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoIm1hc2siLCByZXF1aXJlZExheWVy
VHlwZSk7CisgICAgICAgICAgICBtX21hc2tMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoIm1h
c2siX3MsIHJlcXVpcmVkTGF5ZXJUeXBlKTsKICAgICAgICAgICAgIGxheWVyQ2hhbmdlZCA9IHRy
dWU7CiAgICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldE1hc2tMYXllcihtX21hc2tMYXll
ci5jb3B5UmVmKCkpOwogICAgICAgICAgICAgLy8gV2UgbmVlZCBhIGdlb21ldHJ5IHVwZGF0ZSB0
byBzaXplIHRoZSBuZXcgbWFzayBsYXllci4KQEAgLTIzMDgsNyArMjMwOCw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDaGlsZENsaXBwaW5nU3RyYXRlZ3koYm9vbCBuZWVkc0Rl
c2NlbmRhbnRzQ2xpcHBpCiAKICAgICBhdXRvKiBjbGlwcGluZ0xheWVyID0gdGhpcy0+Y2xpcHBp
bmdMYXllcigpOwogICAgIGlmIChuZWVkc0NsaXBNYXNrTGF5ZXIoKSkgewotICAgICAgICBtX2No
aWxkQ2xpcHBpbmdNYXNrTGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJjaGlsZCBjbGlwcGlu
ZyBtYXNrIik7CisgICAgICAgIG1fY2hpbGRDbGlwcGluZ01hc2tMYXllciA9IGNyZWF0ZUdyYXBo
aWNzTGF5ZXIoImNoaWxkIGNsaXBwaW5nIG1hc2siX3MpOwogICAgICAgICBtX2NoaWxkQ2xpcHBp
bmdNYXNrTGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICAgICAgbV9jaGlsZENsaXBw
aW5nTWFza0xheWVyLT5zZXRQYWludGluZ1BoYXNlKHsgR3JhcGhpY3NMYXllclBhaW50aW5nUGhh
c2U6OkNoaWxkQ2xpcHBpbmdNYXNrIH0pOwogICAgICAgICBpZiAoY2xpcHBpbmdMYXllcikKQEAg
LTIzMjcsMTMgKzIzMjcsMTMgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVNjcm9s
bGluZ0xheWVycyhib29sIG5lZWRzU2Nyb2xsaW5nTGF5ZXJzKQogCiAgICAgaWYgKCFtX3Njcm9s
bENvbnRhaW5lckxheWVyKSB7CiAgICAgICAgIC8vIE91dGVyIGxheWVyIHdoaWNoIGNvcnJlc3Bv
bmRzIHdpdGggdGhlIHNjcm9sbCB2aWV3LiBUaGlzIG5ldmVyIHBhaW50cyBjb250ZW50LgotICAg
ICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVyID0gY3JlYXRlR3JhcGhpY3NMYXllcigic2Nyb2xs
IGNvbnRhaW5lciIsIEdyYXBoaWNzTGF5ZXI6OlR5cGU6OlNjcm9sbENvbnRhaW5lcik7CisgICAg
ICAgIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJzY3JvbGwg
Y29udGFpbmVyIl9zLCBHcmFwaGljc0xheWVyOjpUeXBlOjpTY3JvbGxDb250YWluZXIpOwogICAg
ICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVyLT5zZXRQYWludGluZ1BoYXNlKHsgfSk7CiAgICAg
ICAgIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7CiAgICAg
ICAgIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAKICAg
ICAgICAgLy8gSW5uZXIgbGF5ZXIgd2hpY2ggcmVuZGVycyB0aGUgY29udGVudCB0aGF0IHNjcm9s
bHMuCi0gICAgICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyID0gY3JlYXRlR3JhcGhpY3NMYXll
cigic2Nyb2xsZWQgY29udGVudHMiLCBHcmFwaGljc0xheWVyOjpUeXBlOjpTY3JvbGxlZENvbnRl
bnRzKTsKKyAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xh
eWVyKCJzY3JvbGxlZCBjb250ZW50cyJfcywgR3JhcGhpY3NMYXllcjo6VHlwZTo6U2Nyb2xsZWRD
b250ZW50cyk7CiAgICAgICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLT5zZXREcmF3c0NvbnRl
bnQodHJ1ZSk7CiAgICAgICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLT5zZXRBbmNob3JQb2lu
dCh7IH0pOwogICAgICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVyLT5hZGRDaGlsZCgqbV9zY3Jv
bGxlZENvbnRlbnRzTGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpbmVCcmVhay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVC
cmVhay5oCmluZGV4IDg0MzI2NjNjMTc3ZmNjNGIxMjU1YzM1Y2QxM2YzZDQwZTMxNzI1YmYuLjll
OWUxZTM5OTRiMWM5ZWQ5Mzg0YzU4YjFmYzcxZGFjYjllYTMyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflJlbmRlckxpbmVCcmVhaygpOwogCiAgICAgLy8gRklYTUU6IFRoZSBsaWVz
IGhlcmUga2VlcCByZW5kZXIgdHJlZSBkdW1wIGJhc2VkIHRlc3QgcmVzdWx0cyB1bmNoYW5nZWQu
Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNX
QlIgPyAiUmVuZGVyV29yZEJyZWFrIiA6ICJSZW5kZXJCUiI7IH0KKyAgICBBU0NJSUxpdGVyYWwg
cmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNXQlIgPyAiUmVuZGVyV29yZEJy
ZWFrIl9zIDogIlJlbmRlckJSIl9zOyB9CiAKICAgICBib29sIGlzV0JSKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pc1dCUjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guaAppbmRleCBkNzQ4ZDBmODQ5MDQ0OWJjOGM2ZmIxNGE5NmNhZmY4ZTgyZTZjMDg2Li44NTdk
ODQ4Mzc1YTQ2Mjg0NDhmYWY1ZmFkM2JkYzk1YzM2MjU5MmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJMaXN0Qm94IjsgfQorICAgIEFT
Q0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckxp
c3RCb3giX3M7IH0KIAogICAgIGJvb2wgaXNMaXN0Qm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCmlu
ZGV4IDg1MGRkZWNhOGU5NDU2MDM4MGFkOTViNjUxMTFiYzdkOThhNWY5YjYuLjZhYTUxOTJjMmIz
YTNiZmE5NDE4YjcwZTdkNTIzOTFjMTk4ZTI3NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0SXRlbS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
SW5SZXZlcnNlZE9yZGVyZWRMaXN0KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJMaXN0SXRlbSI7IH0K
KyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5k
ZXJMaXN0SXRlbSJfczsgfQogCiAgICAgYm9vbCBpc0xpc3RJdGVtKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmgKaW5kZXggY2NmOGFiZmQ5ZTE0OGIwNzEzNzMyZWM3NjY3ZmM3N2VjMTBjMTA0ZS4u
M2VkYmZlMTRjZmQ1ZDk5NjAwYzQxYmM2YjJjZTVkODk3NDE1YjcwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCkBAIC01MCw3ICs1MCw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIGZpbmFsOwotICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTGlzdE1h
cmtlciI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJSZW5kZXJMaXN0TWFya2VyIl9zOyB9CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocygpIGZpbmFsOwogICAgIGJvb2wgaXNMaXN0TWFya2VyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZWRpYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKaW5k
ZXggMTAxZGQwNDcwMjdlMjc3MTk5ZTVjMzI2ZjRjNzIwZDc4N2I2ZjA1MC4uZGNhOGM3NDQ1MzFm
ZTc0YzhiOGQ2ZmU0ZWUyMzdiNTA4MDU2YjVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lZGlhLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgY2FuSGF2
ZUNoaWxkcmVuKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNZWRpYSI7IH0K
KyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJNZWRpYSJfczsgfQogICAgIGJvb2wgaXNNZWRpYSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KICAgICBib29sIGlzSW1hZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
bnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAppbmRl
eCAzYzAyYzkwMmFmNmIzNTIzZWY4Zjc5ZjM3OTUzMjFlZjIyMzUxYWI5Li42OGE5MTg4ZGJmYjky
NDA1ZmI4YmVmOTFiZTU5NTRiZjkwNGM0M2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuaApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFz
Q29udHJvbENsaXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBj
YW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJSZW5kZXJNZW51TGlzdCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNZW51TGlzdCJfczsgfQogCiAgICAgdm9pZCBjb21w
dXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExh
eW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWV0ZXIuaAppbmRleCAxYzM3MDYzMTRjOWRmNWQyODljZmNkYWZmMzVhN2EwMDIw
YmJmZGFmLi5jYTE3NDMxYzlmZDI0MGIwYjc1ODE3NjE4ODU2Y2FiNGU4MjlhNzYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaApAQCAtMzksNyArMzksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoKCkgb3ZlcnJpZGU7CiAgICAgTG9naWNhbEV4
dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNh
bEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWV0
ZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyTWV0ZXIiX3M7IH0KICAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNb2Rl
bC5oCmluZGV4IDk0MTk3MTljMDI3MGJmNDczYWY1YWQzNmMzZjIxZDE1MTUzYTlhNDcuLjM3YTQ5
MjJhZmU0MWZkYzI1MGIwOTU4NDhiNGRkOGU1N2MwYjhkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNb2RlbC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKLSAgICBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1vZGVsIjsgfQorICAgIEFTQ0lJ
TGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1vZGVsIl9z
OyB9CiAgICAgYm9vbCBpc1JlbmRlck1vZGVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCmluZGV4IDBhNjAz
M2E3YmI1YzdiMTViYzJhZGU1ZGVmNmZhNDEzZDNlZWMwMjkuLjgzZmUyZDk1MWQ2NzExYjk3MmQ2
YWU5MDhmNDFkNTk5MmY4MzViNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCkBAIC00OSw5ICs0OSw5IEBAIFJlbmRlck11bHRp
Q29sdW1uRmxvdzo6UmVuZGVyTXVsdGlDb2x1bW5GbG93KERvY3VtZW50JiBkb2N1bWVudCwgUmVu
ZGVyU3R5bGUmJiBzCiAKIFJlbmRlck11bHRpQ29sdW1uRmxvdzo6flJlbmRlck11bHRpQ29sdW1u
RmxvdygpID0gZGVmYXVsdDsKIAotY29uc3QgY2hhciogUmVuZGVyTXVsdGlDb2x1bW5GbG93Ojpy
ZW5kZXJOYW1lKCkgY29uc3QKK0FTQ0lJTGl0ZXJhbCBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OnJl
bmRlck5hbWUoKSBjb25zdAogeyAgICAKLSAgICByZXR1cm4gIlJlbmRlck11bHRpQ29sdW1uRmxv
d1RocmVhZCI7CisgICAgcmV0dXJuICJSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQiX3M7CiB9
CiAKIFJlbmRlck11bHRpQ29sdW1uU2V0KiBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OmZpcnN0TXVs
dGlDb2x1bW5TZXQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck11bHRpQ29sdW1uRmxvdy5oCmluZGV4IDA1ZDllNzZhYTA2ZDZiMWYyYzk0MzgzZTQ4ZDU1MjJi
MmIxYjMwNDguLmFiNjVjOWJjOGEyMDcyYTUzMTUwMDhmNjI2YmEyMGY3NTRiYzVmMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmgKQEAg
LTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck11
bHRpQ29sdW1uRmxvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVNDSUlMaXRlcmFsIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFkZEZyYWdtZW50VG9UaHJlYWQo
UmVuZGVyRnJhZ21lbnRDb250YWluZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxCZVJlbW92
ZWRGcm9tVHJlZShJc0ludGVybmFsTW92ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFnbWVudGVk
Rmxvd0Rlc2NlbmRhbnRCb3hMYWlkT3V0KFJlbmRlckJveCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXggZTM5
NmZhMTIyODI5OGQ1MGQ2MGQ2YWZmNzZjZDQyY2VlMGUyYmJhNC4uMGRlNzMzZDI0ZTE0NmQ1MDhh
MGNhYjlkNDkzZGVkNjFlODM2NWVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBAIC0xMDQ2LDkgKzEwNDYsOSBAQCB2b2lkIFJl
bmRlck11bHRpQ29sdW1uU2V0Ojp1cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmIHJl
c3VsdCwgY29uc3QgTGF5bwogICAgIH0KIH0KIAotY29uc3QgY2hhciogUmVuZGVyTXVsdGlDb2x1
bW5TZXQ6OnJlbmRlck5hbWUoKSBjb25zdAorQVNDSUlMaXRlcmFsIFJlbmRlck11bHRpQ29sdW1u
U2V0OjpyZW5kZXJOYW1lKCkgY29uc3QKIHsgICAgCi0gICAgcmV0dXJuICJSZW5kZXJNdWx0aUNv
bHVtblNldCI7CisgICAgcmV0dXJuICJSZW5kZXJNdWx0aUNvbHVtblNldCJfczsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAppbmRl
eCA0ODgyNjAzYTQyNDA0YWI2YzdmZjA0MzljNTY2MGRlYjY2N2Q2ZDQ0Li44MDRlODhjYTkyNDIy
NWRiYTk0ZmFhZjY3NWNkNjFmMGMwNjhhMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaApAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6
CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFpbmVyKikgb3ZlcnJpZGU7CiAKLSAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVNDSUlMaXRlcmFsIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFVuaXQgY2FsY3VsYXRlTWF4
Q29sdW1uSGVpZ2h0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwCmlu
ZGV4IDZlZmM1MTViMmU0ODljMGMzNjExMjRhNzcyZDU2N2E0MmM4MDJhZWYuLmRlYzQyNzUyZGVk
N2NmYTMwOGI3ZTQzOGRjMGY3MjZmYmUwMTRmYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9s
ZGVyLmNwcApAQCAtNTMsOSArNTMsOSBAQCBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhv
bGRlcjo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIoUmVuZGVyTQogewogfQog
Ci1jb25zdCBjaGFyKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcjo6cmVuZGVy
TmFtZSgpIGNvbnN0CitBU0NJSUxpdGVyYWwgUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vo
b2xkZXI6OnJlbmRlck5hbWUoKSBjb25zdAogewotICAgIHJldHVybiAiUmVuZGVyTXVsdGlDb2x1
bW5TcGFubmVyUGxhY2Vob2xkZXIiOworICAgIHJldHVybiAiUmVuZGVyTXVsdGlDb2x1bW5TcGFu
bmVyUGxhY2Vob2xkZXIiX3M7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bh
bm5lclBsYWNlaG9sZGVyLmgKaW5kZXggNjUwZDQ5MTRjZDIyMjY5MTY0NmQ5MWZjZTdjYjM3ZjQz
YWU3ZjJmYS4uZDA3ZWFkNGQxNjlkY2U4ZDI3N2IyMjg0ZGZmZjk2ZDcxOTE4YTM4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBs
YWNlaG9sZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUg
eyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFT
Q0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBXZWFrUHRyPFJl
bmRlckJveD4gbV9zcGFubmVyOwogICAgIFdlYWtQdHI8UmVuZGVyTXVsdGlDb2x1bW5GbG93PiBt
X2ZyYWdtZW50ZWRGbG93OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAppbmRleCAxNTkwZDIwZGQwYjJiMmQ4YzRmYzZjYmIzOTQ0OGY0ZTRhZDUwMDRkLi5lYTFmZTk0
MjA1OWQ0N2IwYzg2NzcyODFkZDQ5OGI1Y2RkZDZmMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTIyNiwxMyArMTIyNiwxNCBAQCB2b2lkIFJlbmRl
ck9iamVjdDo6b3V0cHV0UmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHN0cmVhbSwgYm9vbCBtYXJr
LCBpbnQgZGVwdGgpCiAgICAgaWYgKG5vZGUoKSkKICAgICAgICAgc3RyZWFtIDw8IG5vZGUoKS0+
bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpIDw8ICIgIjsKIAotICAgIFN0cmluZyBuYW1lID0gcmVu
ZGVyTmFtZSgpOworICAgIEFTQ0lJTGl0ZXJhbCBuYW1lID0gcmVuZGVyTmFtZSgpOworICAgIFN0
cmluZ1ZpZXcgbmFtZVZpZXcgeyBuYW1lIH07CiAgICAgLy8gRklYTUU6IFJlbmRlcmVyJ3MgbmFt
ZSBzaG91bGQgbm90IGluY2x1ZGUgcHJvcGVydHkgdmFsdWUgbGlzdGluZy4KLSAgICBpbnQgcG9z
ID0gbmFtZS5maW5kKCcoJyk7CisgICAgaW50IHBvcyA9IG5hbWVWaWV3LmZpbmQoJygnKTsKICAg
ICBpZiAocG9zID4gMCkKLSAgICAgICAgc3RyZWFtIDw8IG5hbWUubGVmdChwb3MgLSAxKS51dGY4
KCkuZGF0YSgpOworICAgICAgICBzdHJlYW0gPDwgbmFtZVZpZXcubGVmdChwb3MgLSAxKS5jaGFy
YWN0ZXJzOCgpOwogICAgIGVsc2UKLSAgICAgICAgc3RyZWFtIDw8IG5hbWUudXRmOCgpLmRhdGEo
KTsKKyAgICAgICAgc3RyZWFtIDw8IG5hbWVWaWV3OwogCiAgICAgaWYgKGlzPFJlbmRlckJveD4o
KnRoaXMpKSB7CiAgICAgICAgIGF1dG8mIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4o
KnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDljZmVl
OGI4YjU4ZjJhODBiN2RjMGU0MmQyOTgyN2IzMjI0Y2Y1MDYuLmZjYWNmMzg1NGM4ZWE0ZTA4Mjdh
N2JlMjIwZDQ5MmYyNTU3ZTZhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJUaGVtZSYgdGhl
bWUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgPSAwOwog
CiAgICAgUmVuZGVyRWxlbWVudCogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0K
ICAgICBib29sIGlzRGVzY2VuZGFudE9mKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuaAppbmRleCAzZTEyYWM3MDQwN2Yy
ZjMxNmEzZjE5YzBhZDk4YmUxOTc4NzNiZGE5Li43ZTdmMjk2OTVjOGYxNDFkNzhmNTM3YTEwZWE3
NDg0ZDkxM2FkZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UHJvZ3Jlc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3Mu
aApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgSFRNTFByb2dyZXNzRWxlbWVudCogcHJv
Z3Jlc3NFbGVtZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJQcm9ncmVzcyI7IH0KKyAgICBB
U0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJQ
cm9ncmVzcyJfczsgfQogICAgIGJvb2wgaXNQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KICAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxvZ2lj
YWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3Ap
IGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUXVvdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5oCmlu
ZGV4IGEyZjI2YzY3YzQ4MDZmNjljZjU4NjVjOTkzNWQzZDBhYjM1OWNkYWUuLmFhNGY2YTc3MWU3
Nzg2NmQwMTRhZjdkZmNiMDg4MTc0YTY0YTM5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJRdW90ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJRdW90ZS5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVJl
bmRlcmVyKFJlbmRlclRyZWVCdWlsZGVyJiwgUmVuZGVyUXVvdGUqIHByZXZpb3VzUXVvdGUpOwog
CiBwcml2YXRlOgotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyUXVvdGUiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUXVvdGUiX3M7IH0KICAgICBib29sIGlzUXVv
dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc09wZW4oKSBj
b25zdDsKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVu
ZGVyU3R5bGUqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmgKaW5kZXggYmNjYTYzNGM2MzU5MjM0NTE3MWUxZmQzOWRjMTQzOWEwNDBlNWQwOS4uNDQz
YTEyY2ZjMDQ1NGRlNDA2ZWVjOGNmYTQ5NzhkNjk3OTYwOTQ2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAg
ICBMYXlvdXRVbml0IGNvbXB1dGVDb25zdHJhaW5lZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRl
UHJlZmVycmVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUmVuZGVyQm94KiBlbWJlZGRlZENvbnRl
bnRCb3goKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSZXBsYWNlZCI7IH0KKyAgICBBU0NJSUxp
dGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSZXBsYWNl
ZCJfczsgfQogCiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGljYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaApp
bmRleCAyY2U3ODYxMDFiNDdlMzJjM2RiOGI4N2ViNjVhMDE2NDIzMWFiMzdjLi4zMjhkYThmZGEx
MzgyMmIzZmE0ODBlMzMwZWJiZTZhZGU0YmFjM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsaWNhLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIFJlbmRlclJl
cGxpY2EoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSZXBs
aWNhKCk7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlclJlcGxpY2EiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVwbGljYSJfczsgfQogCiAgICAgYm9vbCBy
ZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuaAppbmRleCBhM2ExYzAyNDQ2ODNhODdhM2RlZGI1OWE0
NDYxZGFmZWE4MGQzOWFhLi5mNWJlN2I3YjRhODFlMDUxODBkMzVhMzAzMGYxMWEyMjMxZTllZDRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmgKQEAgLTYwLDcgKzYwLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNSdWJ5SW5saW5l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUnVieSAoaW5saW5lKSI7IH0KKyAg
ICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJSdWJ5IChpbmxpbmUpIl9zOyB9CiAgICAgYm9vbCBjcmVhdGVzQW5vbnltb3VzV3JhcHBlcigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKQEAgLTc3LDcgKzc3LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNSdWJ5QmxvY2so
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5IChibG9jaykiOyB9CisgICAg
QVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
UnVieSAoYmxvY2spIl9zOyB9CiAgICAgYm9vbCBjcmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJ1YnlCYXNlLmgKaW5kZXggMTIyMTY3ZmFjOTk1MTkzMWNiMTg5OTMyMzIzODU2
MTQwZWRkYjI3MS4uNGRlNDg4OWQ4MWE3YjU0MDViYmUwNTgzYzQ4OGY5N2QxYTI3MzRlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKQEAgLTQyLDcgKzQyLDcg
QEAgcHVibGljOgogICAgIFJlbmRlclJ1YnlCYXNlKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7
CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieUJhc2UoKTsKICAgICAKLSAgICBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1YnlCYXNlIChhbm9u
eW1vdXMpIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlclJ1YnlCYXNlIChhbm9ueW1vdXMpIl9zOyB9CiAgICAgCiAgICAgUmVu
ZGVyUnVieVJ1biogcnVieVJ1bigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJ1YnlSdW4uaAppbmRleCAzNTg1MTk3OGMyNjhiYWIwOGY3MmMyNDRmOGZkYTUzZjRkMDM0
ZWMzLi4zY2UxNjYwNmZjOWJiN2VkNTMyOGRkOWU4MTBlOGZhZjE0ZjM1YmQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNSdWJ5UnVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyUnVieVJ1biAoYW5vbnltb3VzKSI7IH0KKyAgICBBU0NJSUxpdGVyYWwg
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5UnVuIChhbm9u
eW1vdXMpIl9zOyB9CiAgICAgYm9vbCBjcmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGNhbkRyb3BBbm9ueW1vdXNCbG9ja0No
aWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaAppbmRleCA2MmM1ZWU2ZWJiNDZmNTEwZWExYjI3ODNi
MGI4YTFjOGE1MTc3M2QwLi4wODY4YjgwMjFiMzE4NGU1YWU1ZDI5ZGJkMTVlMzA1ZDg0ZGRmYmRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaApAQCAtNDksNyAr
NDksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5CcmVha0JlZm9yZShjb25zdCBMYXp5TGluZUJy
ZWFrSXRlcmF0b3ImKSBjb25zdDsKICAgIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1YnlUZXh0IjsgfQorICAg
IEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRl
clJ1YnlUZXh0Il9zOyB9CiAgICAgYm9vbCBpc1J1YnlUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCmluZGV4
IDdkZmM0YjNhNWMyNjZmMmEzY2E2NGQ1YzQ3N2FhYWMwMjdlMmJjYmYuLmEzZjhlN2U5NmM2MmI5
MTBjNWYxZmE5NTU5MDZjNTc1MmJhNDhiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdmlydHVhbCB+UmVuZGVyU2Nyb2xsYmFyUGFydCgpOwogCi0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTY3JvbGxiYXJQYXJ0
IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIlJlbmRlclNjcm9sbGJhclBhcnQiX3M7IH0KICAgICAKICAgICBib29sIHJlcXVpcmVzTGF5
ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2xpZGVyLmgKaW5kZXggM2JhMDUxMDU3ODhmMWZjNzkwYjZjNDEzZTUyNzM0
OTM3ZDMyYTY3NS4uN2JmYmEwZmI2Zjc4OGY4MDdkODVkMmZjZmY3MjY1YjkzZmQ3ZWZkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAgICAgZG91YmxlIHZhbHVlUmF0aW8oKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNs
aWRlciI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJTbGlkZXIiX3M7IH0KICAgICBib29sIGlzU2xpZGVyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9z
aXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKaW5kZXggYzVlMmI1OTNmMjc2ZDhjMDBl
NmU4NzMwNzBmMTIxMDdlYjkwZjY1NC4uYzFiMWRjOWFmN2NjZDZmOGY5MDA5ZGNhNTNkN2QyYjJk
MGM0ZWZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKQEAgLTI4MCw3
ICsyODAsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVu
ZGVyVGFibGU+IGNyZWF0ZVRhYmxlV2l0aFN0eWxlKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5
bGUmKTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyVGFibGUiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyVGFibGUiX3M7IH0KIAogICAgIGJvb2wgaXNUYWJs
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oCmluZGV4IDM4NGJmODhlYWViMWFkYTk0YTIwODYxZGUxZWQ3
ODYxNWZmZGNhNDIuLjFmOGQ5OWEyZDc5Njc3YzljYTJjNDYwMmVhMWE4ZDA1MTAxZDAzM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTE0Miw3ICsx
NDIsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJUYWJsZUNlbGw+
IGNyZWF0ZVRhYmxlQ2VsbFdpdGhTdHlsZShEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJik7
CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
KGlzQW5vbnltb3VzKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlQ2VsbCAo
YW5vbnltb3VzKSIgOiAiUmVuZGVyVGFibGVDZWxsIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKGlzQW5vbnltb3VzKCkgfHwgaXNQc2V1
ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlQ2VsbCAoYW5vbnltb3VzKSJfcyA6ICJSZW5kZXJU
YWJsZUNlbGwiX3M7IH0KIAogICAgIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29s
LmgKaW5kZXggYTlkMWNhODY1MWRiODVjNzBlOTQyNWMzMjhhOWIwNDdlYTk5NmE1MC4uOGU3YzFm
YjljYTJkMjYxZDBlNjRiYmU3NDUzNmRmOGEyZTc0MTAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZv
aWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclRhYmxlQ29s
IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIlJlbmRlclRhYmxlQ29sIl9zOyB9CiAgICAgYm9vbCBpc1JlbmRlclRhYmxlQ29sKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKaW5kZXggYmE3ZWMwOWU3MWZiODk2
ZTIwYmIxMWZhM2YyM2VhZWMwNzg0NjU3NS4uOTQyN2Y2YWNmNzE5NWE5ZWIyNmNhNGYwMDQwMjM4
MGY4YzQ0Yjc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgK
QEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgUmVuZGVyUHRy
PFJlbmRlclRhYmxlUm93PiBjcmVhdGVUYWJsZVJvd1dpdGhTdHlsZShEb2N1bWVudCYsIGNvbnN0
IFJlbmRlclN0eWxlJik7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gKGlzQW5vbnltb3VzKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJl
bmRlclRhYmxlUm93IChhbm9ueW1vdXMpIiA6ICJSZW5kZXJUYWJsZVJvdyI7IH0KKyAgICBBU0NJ
SUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIChpc0Fub255bW91
cygpIHx8IGlzUHNldWRvRWxlbWVudCgpKSA/ICJSZW5kZXJUYWJsZVJvdyAoYW5vbnltb3VzKSJf
cyA6ICJSZW5kZXJUYWJsZVJvdyJfczsgfQogCiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCB3aWxsQmVSZW1vdmVkRnJv
bVRyZWUoSXNJbnRlcm5hbE1vdmUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCmluZGV4IDg1Y2IxMmRiOTNiYjE5MmFmYjY1NmIxNjE0
ZDI5ZjJkZDYzZWUxNGEuLjU0MzM0NzQ1YjRlOGE2OWMyODcyMDBjZjMwY2QyODczMjg0ZGE4MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKQEAg
LTE1OSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgICAgICBEb05vdEluY2x1ZGVBbGxJbnRlcnNl
Y3RpbmdDZWxscwogICAgIH07CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gKGlzQW5vbnltb3VzKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8g
IlJlbmRlclRhYmxlU2VjdGlvbiAoYW5vbnltb3VzKSIgOiAiUmVuZGVyVGFibGVTZWN0aW9uIjsg
fQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
KGlzQW5vbnltb3VzKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlU2VjdGlv
biAoYW5vbnltb3VzKSJfcyA6ICJSZW5kZXJUYWJsZVNlY3Rpb24iX3M7IH0KIAogICAgIGJvb2wg
Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggMTk5MTE5NjgxMTJhODYzZDkx
YmZlMTQ5NmYwNDM4MjAxZWE4NzY3Yi4uZWU4YjQ1ZDdmMzNiM2RhOGFlZDRiZDhkZTFhZDQ1ZmU2
NWU5YjRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMjIx
LDkgKzIyMSw5IEBAIFJlbmRlclRleHQ6On5SZW5kZXJUZXh0KCkKICAgICBBU1NFUlQoIW9yaWdp
bmFsVGV4dE1hcCgpLmNvbnRhaW5zKHRoaXMpKTsKIH0KIAotY29uc3QgY2hhciogUmVuZGVyVGV4
dDo6cmVuZGVyTmFtZSgpIGNvbnN0CitBU0NJSUxpdGVyYWwgUmVuZGVyVGV4dDo6cmVuZGVyTmFt
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICJSZW5kZXJUZXh0IjsKKyAgICByZXR1cm4gIlJlbmRl
clRleHQiX3M7CiB9CiAKIFRleHQqIFJlbmRlclRleHQ6OnRleHROb2RlKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IDkyNDQ2NzIxNjAyZmUyOWQ3ZWU5N2Fh
NzNmOTBjYTM4YzU5MmM4ODYuLjE2MmQxNTkyZjRhNzhiYTNmMzQ5NzNjY2U4MzVhNWY4ZTkyODgx
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtMTk2LDcgKzE5Niw3
IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgUmVuZGVyVGV4dChOb2RlJiwgY29uc3QgU3Ry
aW5nJik7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wg
Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAppbmRleCAyZTkwNTM0ZmZk
OGRhODNiN2RjNTRkNDZmYTdkZWYxNjMxOWJiYjQzLi5mYWM5NDAyODIwNzAyOTg5YmY3MmVkMjQy
NTY3OGJmYjgyYmQ2NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuaApAQCAtNzAsNyArNzAsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZv
aWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJUZXh0Q29udHJvbCI7IH0KKyAgICBB
U0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJU
ZXh0Q29udHJvbCJfczsgfQogICAgIGJvb2wgaXNUZXh0Q29udHJvbCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExh
eW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJl
ZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHAKaW5kZXggMjZjZDMyYTU0ZDY3MmVkNjAzMDU4MWI5MjZjZDRlNmY0MGNmMzE2NC4uNjc0NDBi
ODgxZDVlM2JiOTc3NDFkNGJhMTZkNjE0YmRhODhiNjk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMTMwLDkgKzEzMCw5IEBAIHN0YXRp
YyB2b2lkIHByaW50Qm9yZGVyU3R5bGUoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEJvcmRlclN0eWxl
IGJvcmRlclN0eWxlKQogc3RhdGljIFN0cmluZyBnZXRUYWdOYW1lKE5vZGUqIG4pCiB7CiAgICAg
aWYgKG4tPmlzRG9jdW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0
dXJuICIiX3M7CiAgICAgaWYgKG4tPm5vZGVUeXBlKCkgPT0gTm9kZTo6Q09NTUVOVF9OT0RFKQot
ICAgICAgICByZXR1cm4gIkNPTU1FTlQiOworICAgICAgICByZXR1cm4gIkNPTU1FTlQiX3M7CiAg
ICAgcmV0dXJuIG4tPm5vZGVOYW1lKCk7CiB9CiAKQEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgaGFzTm9uRW1wdHlTaWJsaW5nKGNvbnN0IFJlbmRlcklubGluZSYgaW5saW5l
UmVuZGVyZXIpCiAKIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywgT3B0aW9uU2V0PFJlbmRlckFzVGV4
dEZsYWc+IGJlaGF2aW9yKQogewotICAgIHRzIDw8IG8ucmVuZGVyTmFtZSgpOworICAgIHRzIDw8
IG8ucmVuZGVyTmFtZSgpLmNoYXJhY3RlcnMoKTsKIAogICAgIGlmIChiZWhhdmlvci5jb250YWlu
cyhSZW5kZXJBc1RleHRGbGFnOjpTaG93QWRkcmVzc2VzKSkKICAgICAgICAgdHMgPDwgIiAiIDw8
ICZvOwpAQCAtNDUxLDEzICs0NTEsMTMgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJl
bmRlck9iamVjdChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoICh0ZXh0WzBdKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgYnVsbGV0OgotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9
ICJidWxsZXQiOworICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9ICJidWxsZXQiX3M7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBi
bGFja1NxdWFyZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSAiYmxhY2sgc3F1YXJl
IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSAiYmxhY2sgc3F1YXJlIl9zOwogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ugd2hp
dGVCdWxsZXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gIndoaXRlIGJ1bGxldCI7
CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gIndoaXRlIGJ1bGxldCJfczsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IHF1b3RlQW5kRXNjYXBlTm9uUHJpbnRhYmxl
cyh0ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRl
by5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKaW5kZXggYjRiYTFl
NTlkYzEzYzc3NzExZGY3Zjg0MWU2ZGUyOTQ3MGZlODJiMC4uZDRjNjQ0NDk3OWEzZGIwZmJmOGY2
MTcyMGVhZWVmZGNjYzJhYjRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZGVvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVv
LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW1hZ2VDaGFuZ2VkKFdy
YXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopIGZpbmFsOwogCi0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJWaWRlbyI7IH0KKyAgICBB
U0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJWaWRl
byJfczsgfQogCiAgICAgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIGJvb2wgaXNWaWRlbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDE3MTY3MzM4ZjZjMmQwYmM0
ZjhkNGUyZTY5NTc5NGI1NjBjMTgwM2YuLmExYjRlNWM3NDcyNTFmZTk5YTI5ZjE3OTZlMGQ1NGQ0
YTk2ZTQyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyVmlldyhEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYp
OwogICAgIHZpcnR1YWwgflJlbmRlclZpZXcoKTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyVmlldyI7IH0KKyAgICBBU0NJSUxp
dGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJWaWV3Il9z
OyB9CiAKICAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suaAppbmRleCAyZmM4YTE2YjEzYjAwNGU5YTFkZTVjZTRkOTc3ZjQyMjZjZGEx
M2FhLi42YTkzYzBmNWU0MjVhMzcyZjBhMDk3YzM3YzQ2MjRmZmNmMTU3ODI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCkBA
IC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVy
TWF0aE1MQmxvY2soKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxCbG9j
ayI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJSZW5kZXJNYXRoTUxCbG9jayJfczsgfQogICAgIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgY2FuRHJvcEFub255bW91c0Jsb2Nr
Q2hpbGQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgbGF5b3V0SXRl
bXMoYm9vbCByZWxheW91dENoaWxkcmVuKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFRhYmxlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiUmVuZGVyTWF0aE1MVGFibGUiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5h
bWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MVGFibGUiX3M7IH0KICAgICBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7
CiAKICAgICBSZWY8TWF0aE1MU3R5bGU+IG1fbWF0aE1MU3R5bGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaAppbmRleCBiOWRj
MWNkNzI2MjRkMzA4N2JmMWM3YWE0ZTQ4ODJlZDJhOTNlOWUwLi5hYjdmNzM0ZjAzODg3ZmEzNGFk
YTFiYTc5MmI3Zjc5ZWI2Nzk3NDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxGZW5jZWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxGZW5jZWQiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJl
bmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MRmVuY2VkIl9zOyB9
CiAKICAgICBTdHJpbmcgbV9vcGVuOwogICAgIFN0cmluZyBtX2Nsb3NlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCmlu
ZGV4IGY4NzU2MjdmNDhhMjU1ZGQxNzFjZTkxMzg2ODNhYTYxNzlkMTkyNzAuLjEwNGIyN2E3M2U5
MWIyMTJjZTQwNGVkMWQxZTA3MTE2MWRjMWQxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxGcmFjdGlv
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTEZyYWN0aW9uIjsgfQorICAg
IEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1h
dGhNTEZyYWN0aW9uIl9zOyB9CiAKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4s
IExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwX2x1KSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgKaW5kZXggZmJk
NzlmZDRlM2RmMDM3MTRmMDFkZTBjYmU2YTE2ZWFmMjAwMzUwMS4uM2U4YTU3MzFjM2E4ZjEwODE1
YTZkZTdmMGEwYzkxZTAzYzRkMzNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxNYXRoKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiUmVuZGVyTWF0aE1MTWF0aCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxNYXRoIl9zOyB9CiAKICAgICB2
b2lkIGNlbnRlckNoaWxkcmVuKExheW91dFVuaXQgY29udGVudFdpZHRoKTsKICAgICB2b2lkIGxh
eW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhl
aWdodCA9IDBfbHUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oCmluZGV4IGQxZGU3NTRkZTI1ZGY1MDUwOTUw
N2M5MzFiMWEwNjk5NWM4YjJlNTkuLmJhZGQzNTg5MTc3NmRlYTVkMGM5ZWQ2MTcwNTZiNTI0OGE2
Zjg3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MTWVuY2xvc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTE1lbmNsb3NlLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIFJlbmRl
ck1hdGhNTE1lbmNsb3NlKE1hdGhNTE1lbmNsb3NlRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwog
CiBwcml2YXRlOgotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiUmVuZGVyTWF0aE1MTWVuY2xvc2UiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5h
bWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MTWVuY2xvc2UiX3M7IH0KICAg
ICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBs
YXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxI
ZWlnaHQgPSAwX2x1KSBmaW5hbDsKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKaW5kZXggNTIxODFiNDZkMGNkYmU3YjQ1Y2Zk
N2Y5ZjMxZmJhYTI3MTJlOWQyNS4uNjlmMDUwOTc4MzkwMTM1NmQ1ZGJjMDk1NTA4ODVmZWZiNmI4
OWU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxPcGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2Fs
SGVpZ2h0ID0gMF9sdSkgZmluYWw7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIGZpbmFsOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGlzQW5vbnltb3VzKCkgPyAiUmVuZGVyTWF0aE1MT3BlcmF0b3IgKGFu
b255bW91cykiIDogIlJlbmRlck1hdGhNTE9wZXJhdG9yIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCBy
ZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJN
YXRoTUxPcGVyYXRvciAoYW5vbnltb3VzKSJfcyA6ICJSZW5kZXJNYXRoTUxPcGVyYXRvciJfczsg
fQogICAgIHZvaWQgcGFpbnRDaGlsZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0IExheW91
dFBvaW50JiwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpIGZpbmFsOwog
ICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxPcGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KICAgICBib29sIGlzSW52aXNpYmxlT3BlcmF0b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oCmluZGV4
IDc0ODg1ZjM0YTNhNmEwNWZhOTdjOTkzOWQzZWE1Yzg0YzZhMWE3NzMuLjUxNmI2MDMxMDU5NzUw
NGY3ZjExNGYzMjg5YjQ2ZmIzMjBjOTA1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaApAQCAtMzgsNyArMzgsNyBAQCBw
dWJsaWM6CiAgICAgUmVuZGVyTWF0aE1MUGFkZGVkKE1hdGhNTFBhZGRlZEVsZW1lbnQmLCBSZW5k
ZXJTdHlsZSYmKTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTFBhZGRlZCI7IH0KKyAgICBBU0NJSUxpdGVy
YWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxQYWRkZWQi
X3M7IH0KICAgICBib29sIGlzUmVuZGVyTWF0aE1MUGFkZGVkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvb3QuaAppbmRleCA5MGNhZTBhMjVlNDI4NTU0MGU4NWJkNzQ0MjU3ZDJmYjMwOTdlNjRkLi5h
MjNjZmIwNmZkNGQ2NmY3YTgwZjkxYjE2YzJmYTlhMjRkODk2YzNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaApAQCAtNDksNyAr
NDksNyBAQCBwcml2YXRlOgogICAgIFJlbmRlckJveCYgZ2V0QmFzZSgpIGNvbnN0OwogICAgIFJl
bmRlckJveCYgZ2V0SW5kZXgoKSBjb25zdDsKICAgICBib29sIGlzUmVuZGVyTWF0aE1MUm9vdCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTFJvb3QiOyB9CisgICAgQVNDSUlM
aXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MUm9v
dCJfczsgfQogICAgIE1hdGhNTFJvb3RFbGVtZW50JiBlbGVtZW50KCkgY29uc3Q7CiAgICAgUm9v
dFR5cGUgcm9vdFR5cGUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKaW5kZXggMzdiYjYwYWE3Njc1MmRlMTI2NDA2MTk5
ODE0OTc2ODMwMWU4OTUyNi4uODIyNWQ3NTcxNjYwMWNjZmVhMTc4OTQ1MTA5YmNkOGQzNzRkMjdi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvdy5oCkBAIC01MSw3ICs1MSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBib29s
IGlzUmVuZGVyTWF0aE1MUm93KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0
aE1MUm93IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlck1hdGhNTFJvdyJfczsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTY3JpcHRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNjcmlwdHMuaAppbmRleCBhZGI5MmZlNDg0YmYyMGIwZWRjZmE4YmRiZDE1YzBhMDk5ODQ1
MzIzLi5jZDM5NDMxOWU5YTQ0ODgzMzc5ZmE0YjVmOTZlYzdjZmY1ZmMxNmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMu
aApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBib29sIGlzUmVu
ZGVyTWF0aE1MU2NyaXB0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1h
dGhNTFNjcmlwdHMiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MU2NyaXB0cyJfczsgfQogICAgIE1hdGhNTFNjcmlw
dHNFbGVtZW50OjpTY3JpcHRUeXBlIHNjcmlwdFR5cGUoKSBjb25zdDsKICAgICB2b2lkIGNvbXB1
dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsYXlvdXRCbG9j
ayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAw
X2x1KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU3BhY2UuaAppbmRleCAxOTU5Mjg2NDlhNTE5YTA5ZjEyZmNiZDZlODVjNTRj
YWM1MTY1NTlmLi4xMTM1M2EzMjMzODJlNzU3OGJiOGY4ZDEzMDRiMmM2YzUwNTgxNTA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFj
ZS5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBNYXRoTUxTcGFjZUVsZW1lbnQmIGVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxTcGFjZUVsZW1lbnQmPihu
b2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxTcGFjZSI7IH0KKyAg
ICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJN
YXRoTUxTcGFjZSJfczsgfQogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxTcGFjZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2Vu
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgK
aW5kZXggZjgzOWVlYzAzNTEyOTVkODZjMTQyNjI0MzIwNDI4MDcyODZiNzlhMi4uM2VmNzc1NjUy
N2Y2N2Q5ZWMyOWIyMjAwY2Q4ZThiNDc1YmRhOGIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaApAQCAtNTUsNyArNTUsNyBA
QCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFRva2VuKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MVG9rZW4iOyB9CisgICAgQVND
SUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0
aE1MVG9rZW4iX3M7IH0KICAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVj
dCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfTsKICAg
ICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUq
IG9sZFN0eWxlKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZU1hdGhWYXJpYW50R2x5cGgoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
VW5kZXJPdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFVuZGVyT3Zlci5oCmluZGV4IDNjYWU2YzJjZjdiY2EwYjNmYjVkMDc4YzA2ODllZjE1ODE1YTg3
MWYuLmFiNDJiYzZjNTAzYjVkYzM0MzM3NjBiZThlMDUzY2Q3NThjN2Q0NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92
ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5k
ZXJNYXRoTUxTY3JpcHRzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29s
IGlzUmVuZGVyTWF0aE1MVW5kZXJPdmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVy
TWF0aE1MVW5kZXJPdmVyIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTFVuZGVyT3ZlciJfczsgfQogICAgIE1hdGhNTFVu
ZGVyT3ZlckVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdDsKIAogICAgIHZvaWQgY29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCmluZGV4IGMxYjhjNGEzMzJiOTJlZjY4
OTBjZmZlNmQyNjc2NmZiOWFmMmQ4NmUuLjlmNmFjMDNjNzM5OGQxNDYzNmZiNzU1NDdhMjRkYzUy
YzEwYjAxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGVPdXRzaWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZU91dHNpZGVJbmZvLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBjaGVja1NoYXBlSW1hZ2VPcmlnaW4oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHlsZUlt
YWdlJiBzCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY29uc3QgVVJMJiB1cmwgPSBjYWNo
ZWRJbWFnZS51cmwoKTsKLSAgICBTdHJpbmcgdXJsU3RyaW5nID0gdXJsLmlzTnVsbCgpID8gIicn
IiA6IHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKTsKKyAgICBTdHJpbmcgdXJs
U3RyaW5nID0gdXJsLmlzTnVsbCgpID8gIicnIl9zIDogdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCgpOwogICAgIGRvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiVW5zYWZlIGF0dGVtcHQgdG8gbG9h
ZCBVUkwgIiArIHVybFN0cmluZyArICIuIik7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2
ZXIuY3BwCmluZGV4IDNkYmNjODIzNDUxYmUzZDg1Mjc3MDZhZWNkZWVlZjk5OWNjNTRhMWEuLmVh
M2VlOTA2YmY0Y2M0OWFmNTZmN2FhNzdkNjI0OGFkNDkxYTlhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3Bw
CkBAIC0zODksMTAgKzM4OSwxMCBAQCBzdGF0aWMgdm9pZCBhZGp1c3RHcmlkUG9zaXRpb25zRnJv
bVN0eWxlKGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpegogCiAgICAgICAg
IGlmIChpbml0aWFsUG9zaXRpb24uaXNBdXRvKCkpIHsKICAgICAgICAgICAgIC8vIFNldCBpbml0
aWFsIHBvc2l0aW9uIHRvIHNwYW4gPGxpbmUgbmFtZXMgLSAxPgotICAgICAgICAgICAgaW5pdGlh
bFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlvbihzdGQ6Om1heCgxLCBsaW5lQ291bnQgLSAxKSwgIiIp
OworICAgICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlvbihzdGQ6Om1heCgx
LCBsaW5lQ291bnQgLSAxKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAvLyBTZXQgZmluYWwgcG9zaXRpb24gdG8gc3BhbiA8bGluZSBuYW1lcyAtIDE+Ci0g
ICAgICAgICAgICBmaW5hbFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlvbihzdGQ6Om1heCgxLCBsaW5l
Q291bnQgLSAxKSwgIiIpOworICAgICAgICAgICAgZmluYWxQb3NpdGlvbi5zZXRTcGFuUG9zaXRp
b24oc3RkOjptYXgoMSwgbGluZUNvdW50IC0gMSksIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICB9
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdh
Y3lSZW5kZXJTVkdDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVn
YWN5UmVuZGVyU1ZHQ29udGFpbmVyLmgKaW5kZXggYTdhZTg1OWViZjdmY2UwNzhmNTFkNWEzZWVl
NjY2N2FkM2MxMGUyZi4uYzYzNzBmMmUwYWZiZDczODUzMzQwNjg2NjQwZjE5YjY1Njc4M2QzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdD
b250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRl
clNWR0NvbnRhaW5lci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBMZWdhY3lSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwog
Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJTVkdDb250YWluZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHQ29udGFpbmVyIl9zOyB9CiAKICAgICBib29s
IGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1JlY3QuaAppbmRl
eCA4OTdjOTA2ZGFiZjlmZjlkNDY1NDFhN2IxNjhjMmRkYzFhZTM2NjYzLi44NjdiNmMxNDNkMTVi
NTA4ODRmMzdmNzhlOWI5MDc1ZWEzYTNmMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1JlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1JlY3QuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIHZvaWQgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7
CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlclNWR1JlY3QiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVjdCJfczsgfQogCiAgICAgdm9pZCB1cGRhdGVT
aGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBMZWdhY3lSZW5kZXJTVkdTaGFwZTo6
aXNFbXB0eSgpIDogbV9maWxsQm91bmRpbmdCb3guaXNFbXB0eSgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1Jvb3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oCmluZGV4IGE2NGI3
YmE0Y2JmMGVhNzM1OTg3MTk3NzNkZTRiNGQzZDNiYjliZTYuLjg2NGE5MGQ2ZmY0ZTk2MGY3Zjlk
Y2NlYjY3NDgzMTY4YTZkMzcwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc0xlZ2FjeVNWR1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKICAgICAvLyBJbnRlbnRpYWxseSBsZWZ0ICdSZW5kZXJTVkdSb290JyBpbnN0ZWFkIG9mICdM
ZWdhY3lSZW5kZXJTVkdSb290JywgdG8gYXZvaWQgYnJlYWtpbmcgbGF5b3V0IHRlc3RzLgotICAg
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
U1ZHUm9vdCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTVkdSb290Il9zOyB9CiAKICAgICBMYXlvdXRVbml0IGNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkICA9IENvbXB1dGVBY3R1
YWwpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNh
bEhlaWdodChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0aCA9IHN0
ZDo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1NoYXBlLmgKaW5kZXggNWQwY2ExNGE4ZWNhOGUzZGRj
M2ZmMmNkNjZmZTk0ZjFiZTZjY2ZiOC4uZDg4YWZlNzA1MDVhNTY1ZDQyNWUxYWIzZGY5YzMxN2Nl
NDRkOTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lS
ZW5kZXJTVkdTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5
UmVuZGVyU1ZHU2hhcGUuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAKICAgICBib29s
IGlzTGVnYWN5U1ZHU2hhcGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9v
bCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZH
U2hhcGUiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyU1ZHU2hhcGUiX3M7IH0KIAogICAgIHZvaWQgbGF5b3V0KCkgZmluYWw7
CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWlu
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgK
aW5kZXggOTc1YThmNjJjZDAzYzMyMTNhYmI4NTRjZjc0ZDE2NjVkOWM5NDQ1Yy4uMGFkMGI4MzQ2
NWY5OWMzMWU5NWFhM2M3OTc1OWFlMzc3OGZiMzAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1
YmxpYzoKIHByb3RlY3RlZDoKICAgICBSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYsIFJl
bmRlclN0eWxlJiYpOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJSZW5kZXJTVkdDb250YWluZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHQ29udGFpbmVyIl9z
OyB9CiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmgKaW5kZXggODg1MzBkYzFlN2FkNGJkNDUwM2E1YzVj
NjYxNjg4ZTI0MmUyZmM0My4uOTdlYTYyN2MyYWM4NzUwN2I0YmFmYzFiOWNkN2U5NzE4MDJiNGQ1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxp
cHNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNl
LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlclNWR0VsbGlw
c2UoKTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0VsbGlwc2UiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHRWxsaXBzZSJfczsg
fQogCiAgICAgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBM
ZWdhY3lSZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgpIDogbV9maWxsQm91bmRpbmdCb3guaXNFbXB0
eSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ZvcmVpZ25PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Rm9yZWlnbk9iamVjdC5oCmluZGV4IDg0YjE1ZDQ2NzJhYTA5NTQyM2M3NmVlMTIyZTUyYzlmNWNh
NWIwYTUuLmVkYjFmOTcwZGIxYmM4OWMzZDZmM2Q4MmYxOGQzNWYyMzkzNDFjNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1NWR0Zv
cmVpZ25PYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBn
cmFwaGljc0VsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKLSAgICBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0ZvcmVpZ25PYmplY3QiOyB9
CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdCJfczsgfQogCiAgICAgdm9pZCB1cGRhdGVMb2dpY2FsV2lk
dGgoKSBvdmVycmlkZTsKICAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxv
Z2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxU
b3ApIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgKaW5kZXggMjQ2OGRjNzBhNDZjOTM3NjIxNzU2MWE5
MDM1NWQ5YTE5ODhmZGVhZS4uOTgyZWVlM2MzMjk4MWFlNWM3NGVlZDhjNDY4ZThmYzFiMDdjOTA1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFk
aWVudFN0b3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dy
YWRpZW50U3RvcC5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBub2RlQXRG
bG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgYm9vbCBpc1NWR0dyYWRpZW50U3RvcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlclNWR0dyYWRpZW50U3RvcCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdHcmFkaWVudFN0b3AiX3M7IH0KIAog
ICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJp
ZGUgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0hpZGRlbkNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdIaWRkZW5Db250YWluZXIuaAppbmRleCA2N2I5YTQwNDEyNDBhMDBmNTdkOGVlMTgxMmQyYjYz
NWRkMWRkMDg0Li4wZDgxYmYzNzk2N2VlZGY4YzJjNjUxOGJkYzgyNDc0NDZlNjUxNjI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRh
aW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAg
IGJvb2wgaXNTVkdIaWRkZW5Db250YWluZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJTVkdIaWRkZW5Db250YWluZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIl9zOyB9
CiAKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAppbmRl
eCA3ZDEwYTIyMTEwYmUxODVmMWE5MWQyM2U4ZWQwNmJlZWRjYWJjMDdiLi4xMTBkYzU0YTk4ZjY3
NDg2YjQ0ODgyZmFmMzg0OWZiOWQzYTcyZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHSW1hZ2UiOyB9CisgICAg
QVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
U1ZHSW1hZ2UiX3M7IH0KICAgICBib29sIGlzU1ZHSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmUuaAppbmRleCA1YzVmNjdkNmZmYWZlYTExYTQ0NGQzMDVlYmVmNThkMDJjMDUw
MGIyLi4yMDAwMTQ3NzVjZWU4MjVkMWRhZmJhNGQ5NDBlMmI4ZDAyMzI3NTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKQEAgLTM2LDcgKzM2
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0
ZTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyU1ZHSW5saW5lIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0lubGluZSJfczsgfQogICAgIGJvb2wgcmVx
dWlyZXNMYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1NW
R0lubGluZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuaAppbmRleCBlMDNiNzQ3
YjA3OWQ5YzNjOTgzYjg1MzliZWVlMTUyMTY1NTdkNmMyLi40NTllMzQ4Y2ExZTczYzFkMjdkZjAz
ZDIxZTM4NGM0Mjg0MTA2NDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZVRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZVRleHQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
U1ZHSW5saW5lVGV4dEJveCogZmlyc3RUZXh0Qm94KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJT
VkdJbmxpbmVUZXh0IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0lubGluZVRleHQiX3M7IH0KIAogICAgIFN0cmluZyBv
cmlnaW5hbFRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlbmRlcmVkVGV4dChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdQYXRoLmgKaW5kZXggNmFjMmFkOWI5ZTlkZDI5NTlhZWZjNGY3OWFjOThlMTYzODEw
YTBlOC4uOGUwMzVjZmQxNGNhZDZmZjg0M2Q3Mjk0ZjdkN2JlYWJiODk1ZjdmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgKQEAgLTM3LDcgKzM3LDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNTVkdQYXRoKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUGF0aCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdQYXRoIl9zOyB9CiAK
ICAgICB2b2lkIHVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICBGbG9hdFJl
Y3QgY2FsY3VsYXRlVXBkYXRlZFN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oCmluZGV4IGRhZTU4NGJjOWIyOTM4
OWM4ZjUwYjVlMTA3ZTZiY2Q0NjFiOWFjZjUuLjc1ZDdkZWVhYjE1ZmFkYmNmMzZkNzQyODhkMzhj
YWIzMDVhYmEzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVjdC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBncmFw
aGljc0VsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVjdCI7IH0KKyAgICBBU0NJ
SUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdS
ZWN0Il9zOyB9CiAKICAgICB2b2lkIHVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsK
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3VzZVBhdGhGYWxs
YmFjayA/IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkgOiBtX2ZpbGxCb3VuZGluZ0JveC5pc0Vt
cHR5KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5oCmluZGV4IDhmY2Q5YjRlYzVmYmUxZGIxNmRkZjRiY2U0Nzg0
ZjY2MmFmM2QyYmQuLmIwOTAzMWU1NjBiMzY1MTdiYjRiZGVkMTY4Zjk3YTYxZDBlOTJlYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXIuaApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBlbGVt
ZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciI7IH0KKyAgICBB
U0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXIiX3M7IH0KICAgICBib29sIGlzU1ZHUmVzb3VyY2VDbGlwcGVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBwYXRoT25seUNsaXBw
aW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGZsb2F0IGVmZmVjdGl2ZVpvb20pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IGNmM2Y2YmE0OTA3
ZmFiMmVmMjkwYzQxY2I0NTY3NTdkMDI5MzNiMWQuLjhhMDcyODg2ZmE5NmUyZDg3ZTI4Y2NmOGIz
NDY5NTk4NDY4YjViMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIiX3M7IH0KICAgICBib29sIGlz
U1ZHUmVzb3VyY2VGaWx0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICBIYXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJEYXRhPj4gbV9y
ZW5kZXJlckZpbHRlckRhdGFNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKaW5kZXgg
MTYyNDgzNzcxOTRlYzI0MjgwNWU1ZDQzY2Y5YTNhYTIyMjAwZjQwYi4uN2MxMmFiNWEyZTU5NTNm
YTJiODFiZGUxZWQyMjlhYzM0Mjc1Y2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUu
aApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKIAotICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUi
X3M7IH0KIAogICAgIGlubGluZSB2b2lkIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50
LmgKaW5kZXggZWM0YWM2YjlkMjE4OTg1YmY5ZjQ3MzY0ZWVkNzg2MzBjNjFiN2Q2ZS4uOTdkMWM1
MjY5NDE2MzI4ZjQ0YjE1NjYwZGUzOTJkNWM3YWE1OTc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdy
YWRpZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZ3JhZGllbnRF
bGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQiOyB9
CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVu
ZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudCJfczsgfQogCiAgICAgTGluZWFyR3JhZGllbnRB
dHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmgKaW5kZXggZWZlODBlOTVjOTFj
ODFkOThjNmE0MjViOTdiMTJjMDQ4MWVlZWRiMS4uZTRmNmJmMjAyOWIwN2Q1NzkxNTQ0MzAyZmM1
ZDg0ODQ5MTM3ZmEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNv
dXJjZU1hcmtlciI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciJfczsgfQogCiAgICAgLy8gR2Vu
ZXJhdGVzIGEgdHJhbnNmb3JtYXRpb24gbWF0cml4IHVzYWJsZSB0byByZW5kZXIgbWFya2VyIGNv
bnRlbnQuIEhhbmRsZXMgc2NhbGluZyB0aGUgbWFya2VyIGNvbnRlbnQKICAgICAvLyBhY29yZGlu
ZyB0byBTVkdzIG1hcmtlclVuaXRzPSJzdHJva2VXaWR0aCIgY29uY2VwdCwgd2hlbiBhIHN0cm9r
ZVdpZHRoIHZhbHVlICE9IC0xIGlzIHBhc3NlZCBpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRleCBmMTMzZjc1
MTE5NjhhYTE0MWI0YjVlZTE2NzA1MWFjOTA4ODUxMGM0Li42ZWIxZDU0OTcyM2RlZTliNGU2Njc3
NzY4OGQ4OGYyM2Y2ZGE4ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNW
R1Jlc291cmNlTWFza2VyIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlTWFza2VyIl9zOyB9CiAKICAgICBi
b29sIGRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiwgUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBjYWxjdWxhdGVNYXNrQ29u
dGVudFJlcGFpbnRSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAppbmRleCBmNmNmMjI2MGZjM2YyNjY1NWUw
ZDFmZjI0ZmFjMzhhYTg3ZWI2NThkLi41NzVjZTY3NWU4NGJhZmIwMDRjODEwN2NmNTZiZGY2NTNh
NzVkYmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwotICAgIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VQ
YXR0ZXJuIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlUGF0dGVybiJfczsgfQogCiAgICAgYm9vbCBidWls
ZFRpbGVJbWFnZVRyYW5zZm9ybShSZW5kZXJFbGVtZW50JiwgY29uc3QgUGF0dGVybkF0dHJpYnV0
ZXMmLCBjb25zdCBTVkdQYXR0ZXJuRWxlbWVudCYsIEZsb2F0UmVjdCYgcGF0dGVybkJvdW5kYXJp
ZXMsIEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNmb3JtKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlh
bEdyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUmFkaWFsR3JhZGllbnQuaAppbmRleCBhNjY5MTI0MjdkZjMzZmIyOTJlZDU1ZjZmMTI0YmRm
MzczZWE3NmI5Li4zYWI0YjJiNWFlOTQ4N2IzOWU3NGY3NWExNDBiZjM1NGJmYzc3YmFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFk
aWFsR3JhZGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaApAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBncmFkaWVudEVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VS
YWRpYWxHcmFkaWVudCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50Il9zOyB9CiAgICAg
Ym9vbCBjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKCkgZmluYWw7CiAKICAgICBSYWRpYWxHcmFk
aWVudEF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuaAppbmRleCA0M2MxMmVhODI2ZTE5YzcyNmQ5ZGI5NDExNjI0MTAx
Njc4ZTY1MDVlLi4yNGMzMGJjYTdiNjViZTUwNGRhOWVkOGQ2ZWJmNzU5ZGYxYWM1N2VmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAtNzgsNyAr
NzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCiAg
ICAgYm9vbCBpc1NWR1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJT
VkdSb290IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlclNWR1Jvb3QiX3M7IH0KICAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICAvLyBUbyBwcmV2ZW50IGNlcnRh
aW4gbGVnYWN5IGNvZGUgcGF0aHMgdG8gaGl0IGFzc2VydGlvbnMgaW4gZGVidWcgYnVpbGRzLCB3
aGVuIHN3aXRjaGluZyBvZmYgTEJTRSAoZHVyaW5nIHRoZSB0ZWFyZG93biBvZiB0aGUgTEJTRSB0
cmVlKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
U2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaApp
bmRleCBhMjNkOWFkMjk4ZTAyOTExMzk4NmM1OTAxYjQzNTE1ZTFkOWU0MmIwLi5kMmEzMzZjZmE4
YWZiNTBiYzEwODUxMGUxNGViMzdiYzAxYmVlNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgaXNTVkdTaGFwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAg
ICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJTVkdTaGFwZSI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJSZW5kZXJTVkdTaGFwZSJfczsgfQogCiAgICAgdm9pZCBsYXlvdXQoKSBm
aW5hbDsKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RT
cGFuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKaW5k
ZXggMWJiYWViMzcyYmM2N2E1NDc0OTIyNTM0ZWQyN2I5MWM1YmQ3YjdhZi4uZWI5MTRkYmM4NjAy
OGIzNGY5OTU1ZDQ5ODIxMTMzODA2OWQxZGM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBncmFwaGljc0VsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKLSAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNW
R1RTcGFuIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlclNWR1RTcGFuIl9zOyB9CiAgICAgYm9vbCBpc1NWR1RTcGFuKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAppbmRleCAzMmM2ZTEyNDgzNjdjNTU1MzcxNzI0ZDRl
NzNjNmFiYjMwOGMzZDExLi40NDEyNjk4ODU3OTEzMDI0MjgyZmZmMGE4ZTY2NTFiNmI3ZjFjZGM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaApAQCAt
NjQsNyArNjQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgZ3JhcGhpY3NFbGVtZW50
KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1RleHQiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHVGV4dCJfczsgfQog
ICAgIGJvb2wgaXNTVkdUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAg
ICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0
aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCmlu
ZGV4IGQ2NjMwYzI1ZTRmYzI4MzBkMWNiYjFjMzUyODk4NDYwOGZhZTQ2ZGIuLjE5NmEyNDcyZWFi
YTlhYzFkZTBkYjY5NWZiOTliMmQwYmQ4YjcyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCiAgICAgYm9v
bCBpc1NWR1RleHRQYXRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZH
VGV4dFBhdGgiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHVGV4dFBhdGgiX3M7IH0KIAogICAgIFBhdGggbV9sYXlvdXRQ
YXRoOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaAppbmRleCAzZWUzYmMxNDY5ZDRmNDJlYmE4OGY0NzU5
NDVlNzg0ZWNmZTNhYWRjLi5iODQxNjFkZjBjYWQ1NmIxMzVmMDViZDY3YWUzY2Q0OGQ1NzFmZWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdw
b3J0Q29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdWaWV3cG9ydENvbnRhaW5lci5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKICAgICBib29sIGlzU1ZHVmlld3BvcnRDb250
YWluZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lciI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciJfczsgfQogCiAgICAgQWZmaW5l
VHJhbnNmb3JtIHZpZXdwb3J0VHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0NvbnRhaW5lckxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR0NvbnRhaW5lckxheW91dC5jcHAKaW5kZXggOTEwNTBmOTQxYTlhYWU5NGY5
OTQ0MmQ5M2I2YzMyYTJiZjg4M2IxNy4uODEzYzNlY2VmOTM4YmRhNDg2NDQ0ZDRhZjcwOGQ5N2Ni
NzNjZWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdDb250
YWluZXJMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHQ29u
dGFpbmVyTGF5b3V0LmNwcApAQCAtMjA2LDEwICsyMDYsMTAgQEAgdm9pZCBTVkdDb250YWluZXJM
YXlvdXQ6OnZlcmlmeUxheW91dExvY2F0aW9uQ29uc2lzdGVuY3koY29uc3QgUmVuZGVyRWxlbWVu
dCYgcmUKIAogICAgICAgICBhdXRvIGluaXRpYWxMYXlvdXRMb2NhdGlvbiA9IGZsb29yZWRMYXlv
dXRQb2ludChyZW5kZXJlci5vYmplY3RCb3VuZGluZ0JveCgpLm1pblhNaW5ZQ29ybmVyKCkpOwog
ICAgICAgICBpZiAoZXhwZWN0ZWRMYXlvdXRMb2NhdGlvbiA9PSBpbml0aWFsTGF5b3V0TG9jYXRp
b24pIHsKLSAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShTVkcsIHN0cmVhbSA8PCAiLS0+IFNW
R0NvbnRhaW5lckxheW91dCByZW5kZXJlciAiIDw8ICZyZW5kZXJlciA8PCAiICgiIDw8IHJlbmRl
cmVyLnJlbmRlck5hbWUoKSA8PCAiKSIKKyAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShTVkcs
IHN0cmVhbSA8PCAiLS0+IFNWR0NvbnRhaW5lckxheW91dCByZW5kZXJlciAiIDw8ICZyZW5kZXJl
ciA8PCAiICgiIDw8IHJlbmRlcmVyLnJlbmRlck5hbWUoKS5jaGFyYWN0ZXJzKCkgPDwgIikiCiAg
ICAgICAgICAgICAgICAgPDwgIiAtIHZlcmlmeUxheW91dExvY2F0aW9uQ29uc2lzdGVuY3koKSBv
YmplY3RCb3VuZGluZ0JveCAvIGxheW91dExvY2F0aW9uIGFyZSBpbiBzeW5jLiIpOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNWRywgc3RyZWFtIDw8ICIt
LT4gU1ZHQ29udGFpbmVyTGF5b3V0IHJlbmRlcmVyICIgPDwgJnJlbmRlcmVyIDw8ICIgKCIgPDwg
cmVuZGVyZXIucmVuZGVyTmFtZSgpIDw8ICIpIgorICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFN
KFNWRywgc3RyZWFtIDw8ICItLT4gU1ZHQ29udGFpbmVyTGF5b3V0IHJlbmRlcmVyICIgPDwgJnJl
bmRlcmVyIDw8ICIgKCIgPDwgcmVuZGVyZXIucmVuZGVyTmFtZSgpLmNoYXJhY3RlcnMoKSA8PCAi
KSIKICAgICAgICAgICAgICAgICA8PCAiIC0gdmVyaWZ5TGF5b3V0TG9jYXRpb25Db25zaXN0ZW5j
eSgpIG9iamVjdEJvdW5kaW5nQm94IC8gbGF5b3V0TG9jYXRpb24gaW52YXJpYW50IHZpb2xhdGVk
IC0tIG91dCBvZiBzeW5jIGR1ZSB0byBwYXJ0aWFsIGxheW91dD8iCiAgICAgICAgICAgICAgICAg
PDwgIiBjdXJyZW50TGF5b3V0TG9jYXRpb249IiA8PCBjdXJyZW50TGF5b3V0TG9jYXRpb24KICAg
ICAgICAgICAgICAgICA8PCAiICAoZXhwZWN0ZWRMYXlvdXRMb2NhdGlvbj0iIDw8IGV4cGVjdGVk
TGF5b3V0TG9jYXRpb24KQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFNWR0NvbnRhaW5lckxheW91
dDo6dmVyaWZ5TGF5b3V0TG9jYXRpb25Db25zaXN0ZW5jeShjb25zdCBSZW5kZXJFbGVtZW50JiBy
ZQogCiAjaWYgIWRlZmluZWQoTkRFQlVHKQogICAgIGlmIChyZW5kZXJlci5pc1NWR1Jvb3QoKSkg
ewotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU1ZHLCBzdHJlYW0gPDwgIi0tPiBTVkdDb250YWlu
ZXJMYXlvdXQgcmVuZGVyZXIgIiA8PCAmcmVuZGVyZXIgPDwgIiAoIiA8PCByZW5kZXJlci5yZW5k
ZXJOYW1lKCkgPDwgIikiCisgICAgICAgIExPR19XSVRIX1NUUkVBTShTVkcsIHN0cmVhbSA8PCAi
LS0+IFNWR0NvbnRhaW5lckxheW91dCByZW5kZXJlciAiIDw8ICZyZW5kZXJlciA8PCAiICgiIDw8
IHJlbmRlcmVyLnJlbmRlck5hbWUoKS5jaGFyYWN0ZXJzKCkgPDwgIikiCiAgICAgICAgICAgICA8
PCAiIC0gdmVyaWZ5TGF5b3V0TG9jYXRpb25Db25zaXN0ZW5jeSgpIGVuZCIpOwogICAgIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJU
cmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJl
ZUFzVGV4dC5jcHAKaW5kZXggODczMzAxNDdmMTQxYzE2YzA4Y2UwMTVlNzgxMTkwYjhiNjRmYmI4
OC4uZjE1ZTYzNzE2MDRiOGE5NWY3YWJlYTcyNmY0MDdjOWZmOTRmZjlkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBA
IC03NSw3ICs3NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAqLwogY2xhc3MgVGV4dFN0cmVh
bVNlcGFyYXRvciB7CiBwdWJsaWM6Ci0gICAgVGV4dFN0cmVhbVNlcGFyYXRvcihjb25zdCBTdHJp
bmcmIHMpCisgICAgVGV4dFN0cmVhbVNlcGFyYXRvcihVQ2hhciBzKQogICAgICAgICA6IG1fc2Vw
YXJhdG9yKHMpCiAgICAgICAgICwgbV9uZWVkVG9TZXBhcmF0ZShmYWxzZSkKICAgICB7CkBAIC04
NCw3ICs4NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIFRleHRTdHJlYW1TZXBhcmF0b3ImKTsKIAotICAgIFN0cmlu
ZyBtX3NlcGFyYXRvcjsKKyAgICBVQ2hhciBtX3NlcGFyYXRvcjsKICAgICBib29sIG1fbmVlZFRv
U2VwYXJhdGU7CiB9OwogCkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIHZvaWQgd3JpdGVTVkdQ
YWludGluZ1Jlc291cmNlKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdSZXNvdXJjZSYg
cmUKIAogc3RhdGljIHZvaWQgd3JpdGVTVkdGaWxsUGFpbnRpbmdSZXNvdXJjZShUZXh0U3RyZWFt
JiB0cywgY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclNWR1Jlc291
cmNlJiBmaWxsUGFpbnRpbmdSZXNvdXJjZSkKIHsKLSAgICBUZXh0U3RyZWFtU2VwYXJhdG9yIHMo
IiAiKTsKKyAgICBUZXh0U3RyZWFtU2VwYXJhdG9yIHMoJyAnKTsKICAgICB0cyA8PCAiIFtmaWxs
PXsiIDw8IHM7CiAgICAgd3JpdGVTVkdQYWludGluZ1Jlc291cmNlKHRzLCBmaWxsUGFpbnRpbmdS
ZXNvdXJjZSk7CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZVNWR0ZpbGxQ
YWludGluZ1Jlc291cmNlKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJFbGVtZW50JiByZQog
CiBzdGF0aWMgdm9pZCB3cml0ZVNWR1N0cm9rZVBhaW50aW5nUmVzb3VyY2UoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTVkdSZXNvdXJj
ZSYgc3Ryb2tlUGFpbnRpbmdSZXNvdXJjZSwgY29uc3QgU1ZHR3JhcGhpY3NFbGVtZW50JiBzaGFw
ZSkKIHsKLSAgICBUZXh0U3RyZWFtU2VwYXJhdG9yIHMoIiAiKTsKKyAgICBUZXh0U3RyZWFtU2Vw
YXJhdG9yIHMoJyAnKTsKICAgICB0cyA8PCAiIFtzdHJva2U9eyIgPDwgczsKICAgICB3cml0ZVNW
R1BhaW50aW5nUmVzb3VyY2UodHMsIHN0cm9rZVBhaW50aW5nUmVzb3VyY2UpOwogCkBAIC00MjIs
NyArNDIyLDcgQEAgc3RhdGljIHZvaWQgd3JpdGVTdGFuZGFyZFByZWZpeChUZXh0U3RyZWFtJiB0
cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIE9wdGkKICAgICBpZiAod3JpdGVJbmRlbnQg
PT0gV3JpdGVJbmRlbnRPck5vdDo6WWVzKQogICAgICAgICB0cyA8PCBpbmRlbnQ7CiAKLSAgICB0
cyA8PCBvYmplY3QucmVuZGVyTmFtZSgpOworICAgIHRzIDw8IG9iamVjdC5yZW5kZXJOYW1lKCku
Y2hhcmFjdGVycygpOwogCiAgICAgaWYgKGJlaGF2aW9yLmNvbnRhaW5zKFJlbmRlckFzVGV4dEZs
YWc6OlNob3dBZGRyZXNzZXMpKQogICAgICAgICB0cyA8PCAiICIgPDwgJm9iamVjdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaAppbmRleCA2ZmQ5NWJk
NmVlZTMwMmNlNGU1ZWY1MTljNWUyMWExNjU3MzU3M2M3Li5mZmY3MTdhMjdjNmQ2MWQzMWMyZGRm
NWM5MjNjMjUzZjAzNmM4ZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFy
R3JhZGllbnRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL0xpbmVhckdyYWRp
ZW50QXR0cmlidXRlcy5oCkBAIC0yNiw3ICsyNiw3IEBAIHN0cnVjdCBMaW5lYXJHcmFkaWVudEF0
dHJpYnV0ZXMgOiBHcmFkaWVudEF0dHJpYnV0ZXMgewogICAgIExpbmVhckdyYWRpZW50QXR0cmli
dXRlcygpCiAgICAgICAgIDogbV94MSgpCiAgICAgICAgICwgbV95MSgpCi0gICAgICAgICwgbV94
MihTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjEwMCUiKQorICAgICAgICAsIG1feDIoU1ZHTGVuZ3Ro
TW9kZTo6V2lkdGgsICIxMDAlIl9zKQogICAgICAgICAsIG1feTIoKQogICAgICAgICAsIG1feDFT
ZXQoZmFsc2UpCiAgICAgICAgICwgbV95MVNldChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaAppbmRleCA2MTIzZGJlOTBmMzc0NzZiMWI0ZThj
Y2ViZWI3MzYwOWRkZDA3MDU5Li42Y2ZjMWRmNzU2ZGEwNGI3NTIwZmIxN2M5YWM4YTdlN2ViNzlh
MDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1
dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5o
CkBAIC0yNSw5ICsyNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFJhZGlhbEdy
YWRpZW50QXR0cmlidXRlcyA6IEdyYWRpZW50QXR0cmlidXRlcyB7CiAgICAgUmFkaWFsR3JhZGll
bnRBdHRyaWJ1dGVzKCkKLSAgICAgICAgOiBtX2N4KFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiNTAl
IikKLSAgICAgICAgLCBtX2N5KFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiNTAlIikKLSAgICAgICAg
LCBtX3IoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiKQorICAgICAgICA6IG1fY3goU1ZHTGVu
Z3RoTW9kZTo6V2lkdGgsICI1MCUiX3MpCisgICAgICAgICwgbV9jeShTVkdMZW5ndGhNb2RlOjpX
aWR0aCwgIjUwJSJfcykKKyAgICAgICAgLCBtX3IoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUi
X3MpCiAgICAgICAgICwgbV9jeFNldChmYWxzZSkKICAgICAgICAgLCBtX2N5U2V0KGZhbHNlKQog
ICAgICAgICAsIG1fclNldChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaXRUb1ZpZXdCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5j
cHAKaW5kZXggZTBhMDMxMmMzNzRmYTcwYmI0NDA0OTYxMzNkM2Q3YTIwYjQ5ZmRhOS4uODBlOTNm
Yzg5MzYxOGEzMDI3M2Y1MmE4MmI2ODBiZDQ5ODE1MmY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpdFRvVmlld0JveC5jcHAKQEAgLTEyMywxMyArMTIzLDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTVkdGaXRUb1ZpZXdCb3g6
OnBhcnNlCiAKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3aWR0aCBpcyBwb3NpdGl2ZS4KICAgICAg
ICAgaWYgKCp3aWR0aCA8IDAuMCkgewotICAgICAgICAgICAgZG9jdW1lbnQuYWNjZXNzU1ZHRXh0
ZW5zaW9ucygpLnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBWaWV3Qm94IHdpZHRo
IGlzIG5vdCBhbGxvd2VkIik7CisgICAgICAgICAgICBkb2N1bWVudC5hY2Nlc3NTVkdFeHRlbnNp
b25zKCkucmVwb3J0RXJyb3IoIkEgbmVnYXRpdmUgdmFsdWUgZm9yIFZpZXdCb3ggd2lkdGggaXMg
bm90IGFsbG93ZWQiX3MpOwogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIENoZWNrIHRoYXQgaGVpZ2h0IGlzIHBvc2l0aXZlLgogICAgICAg
ICBpZiAoKmhlaWdodCA8IDAuMCkgewotICAgICAgICAgICAgZG9jdW1lbnQuYWNjZXNzU1ZHRXh0
ZW5zaW9ucygpLnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBWaWV3Qm94IGhlaWdo
dCBpcyBub3QgYWxsb3dlZCIpOworICAgICAgICAgICAgZG9jdW1lbnQuYWNjZXNzU1ZHRXh0ZW5z
aW9ucygpLnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBWaWV3Qm94IGhlaWdodCBp
cyBub3QgYWxsb3dlZCJfcyk7CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKaW5kZXgg
YzBiZjIxZTQ0MjRhMzYzODhjN2YyMTY3MjcxNTUzMGMxZjJkMTgzYi4uMjhlYzQ3N2I4NGJhMWJh
YmUwOTliOWQ2MzlmOTIwMDc5ZDU2MmZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21l
dHJ5RWxlbWVudC5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIFNWR0dlb21ldHJ5RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cgogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0cikgewogICAgICAgICBt
X3BhdGhMZW5ndGgtPnNldEJhc2VWYWxJbnRlcm5hbCh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAg
ICBpZiAobV9wYXRoTGVuZ3RoLT5iYXNlVmFsKCkgPCAwKQotICAgICAgICAgICAgZG9jdW1lbnQo
KS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVwb3J0RXJyb3IoIkEgbmVnYXRpdmUgdmFsdWUgZm9y
IHBhdGggYXR0cmlidXRlIDxwYXRoTGVuZ3RoPiBpcyBub3QgYWxsb3dlZCIpOworICAgICAgICAg
ICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVwb3J0RXJyb3IoIkEgbmVnYXRp
dmUgdmFsdWUgZm9yIHBhdGggYXR0cmlidXRlIDxwYXRoTGVuZ3RoPiBpcyBub3QgYWxsb3dlZCJf
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCmluZGV4IDRkZDdmODBlMzc3Nzk4N2RjYjcwYzFhM2M4YTg3Y2Q4YTRmZDZm
YjkuLjEzMTg1ZjIxMTg5Njk2YTRmZjI2YzA3MjZhZmJhMWQ2ZjE4NTgxZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIEVuY29k
ZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkK
ICAgICAgICAgZnJhbWUudmlldygpLT5zZXRUcmFuc3BhcmVudCh0cnVlKTsgLy8gU1ZHIEltYWdl
cyBhcmUgdHJhbnNwYXJlbnQuCiAKICAgICAgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVu
dExvYWRlcigpKTsgLy8gRG9jdW1lbnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5
IGZyYW1lLT5pbml0KCkuCi0gICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53
cml0ZXIoKS5zZXRNSU1FVHlwZSgiaW1hZ2Uvc3ZnK3htbCIpOworICAgICAgICBsb2FkZXIuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwi
X3MpOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYmVn
aW4oVVJMKCkpOyAvLyBjcmVhdGUgdGhlIGVtcHR5IGRvY3VtZW50CiAgICAgICAgIGRhdGEoKS0+
Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgewogICAgICAg
ICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoYnVm
ZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAyMDY3YTFkMDA4OGIz
NjM2OTY0OWRhMmFkZmQyNDJhYWQ1MmNlMDBiLi40ZjBiZjk5ZWFmN2U2NzMzY2Y0MjIyOGRiYjRj
MDBjMjJhNDU0ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC03NjUs
MTYgKzc2NSwxNiBAQCBzdGF0aWMgU3RyaW5nIHN0eWxlVmFsaWRpdHlUb1RvU3RyaW5nKFN0eWxl
OjpWYWxpZGl0eSB2YWxpZGl0eSkKIHsKICAgICBzd2l0Y2ggKHZhbGlkaXR5KSB7CiAgICAgY2Fz
ZSBTdHlsZTo6VmFsaWRpdHk6OlZhbGlkOgotICAgICAgICByZXR1cm4gIk5vU3R5bGVDaGFuZ2Ui
OworICAgICAgICByZXR1cm4gIk5vU3R5bGVDaGFuZ2UiX3M7CiAgICAgY2FzZSBTdHlsZTo6VmFs
aWRpdHk6OkVsZW1lbnRJbnZhbGlkOgotICAgICAgICByZXR1cm4gIklubGluZVN0eWxlQ2hhbmdl
IjsKKyAgICAgICAgcmV0dXJuICJJbmxpbmVTdHlsZUNoYW5nZSJfczsKICAgICBjYXNlIFN0eWxl
OjpWYWxpZGl0eTo6U3VidHJlZUludmFsaWQ6Ci0gICAgICAgIHJldHVybiAiRnVsbFN0eWxlQ2hh
bmdlIjsKKyAgICAgICAgcmV0dXJuICJGdWxsU3R5bGVDaGFuZ2UiX3M7CiAgICAgY2FzZSBTdHls
ZTo6VmFsaWRpdHk6OlN1YnRyZWVBbmRSZW5kZXJlcnNJbnZhbGlkOgotICAgICAgICByZXR1cm4g
IlJlY29uc3RydWN0UmVuZGVyVHJlZSI7CisgICAgICAgIHJldHVybiAiUmVjb25zdHJ1Y3RSZW5k
ZXJUcmVlIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
IiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBJbnRlcm5hbHM6OnN0
eWxlQ2hhbmdlVHlwZShOb2RlJiBub2RlKQpAQCAtODE1LDMxICs4MTUsMzEgQEAgYm9vbCBJbnRl
cm5hbHM6OmlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZShjb25zdCBTdHJpbmcmIHVybCkKIHN0YXRp
YyBTdHJpbmcgcmVzcG9uc2VTb3VyY2VUb1N0cmluZyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKICAgICBpZiAocmVzcG9uc2UuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAi
TnVsbCByZXNwb25zZSI7CisgICAgICAgIHJldHVybiAiTnVsbCByZXNwb25zZSJfczsKICAgICBz
d2l0Y2ggKHJlc3BvbnNlLnNvdXJjZSgpKSB7CiAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpT
b3VyY2U6OlVua25vd246Ci0gICAgICAgIHJldHVybiAiVW5rbm93biI7CisgICAgICAgIHJldHVy
biAiVW5rbm93biJfczsKICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29y
azoKLSAgICAgICAgcmV0dXJuICJOZXR3b3JrIjsKKyAgICAgICAgcmV0dXJuICJOZXR3b3JrIl9z
OwogICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyOgotICAg
ICAgICByZXR1cm4gIlNlcnZpY2Ugd29ya2VyIjsKKyAgICAgICAgcmV0dXJuICJTZXJ2aWNlIHdv
cmtlciJfczsKICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6RGlza0NhY2hlOgot
ICAgICAgICByZXR1cm4gIkRpc2sgY2FjaGUiOworICAgICAgICByZXR1cm4gIkRpc2sgY2FjaGUi
X3M7CiAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZUFmdGVyVmFs
aWRhdGlvbjoKLSAgICAgICAgcmV0dXJuICJEaXNrIGNhY2hlIGFmdGVyIHZhbGlkYXRpb24iOwor
ICAgICAgICByZXR1cm4gIkRpc2sgY2FjaGUgYWZ0ZXIgdmFsaWRhdGlvbiJfczsKICAgICBjYXNl
IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TWVtb3J5Q2FjaGU6Ci0gICAgICAgIHJldHVybiAi
TWVtb3J5IGNhY2hlIjsKKyAgICAgICAgcmV0dXJuICJNZW1vcnkgY2FjaGUiX3M7CiAgICAgY2Fz
ZSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok1lbW9yeUNhY2hlQWZ0ZXJWYWxpZGF0aW9uOgot
ICAgICAgICByZXR1cm4gIk1lbW9yeSBjYWNoZSBhZnRlciB2YWxpZGF0aW9uIjsKKyAgICAgICAg
cmV0dXJuICJNZW1vcnkgY2FjaGUgYWZ0ZXIgdmFsaWRhdGlvbiJfczsKICAgICBjYXNlIFJlc291
cmNlUmVzcG9uc2U6OlNvdXJjZTo6QXBwbGljYXRpb25DYWNoZToKLSAgICAgICAgcmV0dXJuICJB
cHBsaWNhdGlvbiBjYWNoZSI7CisgICAgICAgIHJldHVybiAiQXBwbGljYXRpb24gY2FjaGUiX3M7
CiAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRPTUNhY2hlOgotICAgICAgICBy
ZXR1cm4gIkRPTSBjYWNoZSI7CisgICAgICAgIHJldHVybiAiRE9NIGNhY2hlIl9zOwogICAgIGNh
c2UgUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpJbnNwZWN0b3JPdmVycmlkZToKLSAgICAgICAg
cmV0dXJuICJJbnNwZWN0b3Igb3ZlcnJpZGUiOworICAgICAgICByZXR1cm4gIkluc3BlY3RvciBv
dmVycmlkZSJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
ICJFcnJvciI7CisgICAgcmV0dXJuICJFcnJvciJfczsKIH0KIAogU3RyaW5nIEludGVybmFsczo6
eGhyUmVzcG9uc2VTb3VyY2UoWE1MSHR0cFJlcXVlc3QmIHJlcXVlc3QpCkBAIC0yODY2LDcgKzI4
NjYsNyBAQCBSZWZQdHI8V2luZG93UHJveHk+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9y
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgYXV0byogaW5zcGVjdGVkUGFnZSA9
IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7CiAgICAgYXV0byogd2luZG93ID0g
aW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7Ci0gICAg
YXV0byBmcm9udGVuZFdpbmRvd1Byb3h5ID0gd2luZG93LT5vcGVuKCp3aW5kb3csICp3aW5kb3cs
IHVybCwgIiIsICIiKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBhdXRvIGZyb250ZW5kV2lu
ZG93UHJveHkgPSB3aW5kb3ctPm9wZW4oKndpbmRvdywgKndpbmRvdywgdXJsLCBlbXB0eVN0cmlu
ZygpLCBlbXB0eVN0cmluZygpKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICBtX2luc3BlY3Rv
ckZyb250ZW5kID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQ
YWdlLCBkb3duY2FzdDxET01XaW5kb3c+KGZyb250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7
CiAgICAgcmV0dXJuIGZyb250ZW5kV2luZG93UHJveHk7CiB9CkBAIC00MDY0LDE3ICs0MDY0LDE3
IEBAIFN0cmluZyBJbnRlcm5hbHM6OmVsZW1lbnRCdWZmZXJpbmdQb2xpY3koSFRNTE1lZGlhRWxl
bWVudCYgZWxlbWVudCkKIHsKICAgICBzd2l0Y2ggKGVsZW1lbnQuYnVmZmVyaW5nUG9saWN5KCkp
IHsKICAgICBjYXNlIE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3k6OkRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiAiRGVmYXVsdCI7CisgICAgICAgIHJldHVybiAiRGVmYXVsdCJfczsKICAgICBj
YXNlIE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3k6OkxpbWl0UmVhZEFoZWFkOgotICAgICAg
ICByZXR1cm4gIkxpbWl0UmVhZEFoZWFkIjsKKyAgICAgICAgcmV0dXJuICJMaW1pdFJlYWRBaGVh
ZCJfczsKICAgICBjYXNlIE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3k6Ok1ha2VSZXNvdXJj
ZXNQdXJnZWFibGU6Ci0gICAgICAgIHJldHVybiAiTWFrZVJlc291cmNlc1B1cmdlYWJsZSI7Cisg
ICAgICAgIHJldHVybiAiTWFrZVJlc291cmNlc1B1cmdlYWJsZSJfczsKICAgICBjYXNlIE1lZGlh
UGxheWVyOjpCdWZmZXJpbmdQb2xpY3k6OlB1cmdlUmVzb3VyY2VzOgotICAgICAgICByZXR1cm4g
IlB1cmdlUmVzb3VyY2VzIjsKKyAgICAgICAgcmV0dXJuICJQdXJnZVJlc291cmNlcyJfczsKICAg
ICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gIlVOS05PV04iOwor
ICAgIHJldHVybiAiVU5LTk9XTiJfczsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxz
OjpzZXRPdmVycmlkZVByZWZlcnJlZER5bmFtaWNSYW5nZU1vZGUoSFRNTE1lZGlhRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgU3RyaW5nJiBtb2RlU3RyaW5nKQpAQCAtNjQ3MCw3ICs2NDcwLDcgQEAg
U3RyaW5nIEludGVybmFsczo6Zm9jdXNSaW5nQ29sb3IoKQogdW5zaWduZWQgSW50ZXJuYWxzOjpj
cmVhdGVTbGVlcERpc2FibGVyKGNvbnN0IFN0cmluZyYgcmVhc29uLCBib29sIGRpc3BsYXkpCiB7
CiAgICAgc3RhdGljIHVuc2lnbmVkIGxhc3RVc2VkSWRlbnRpZmllciA9IDA7Ci0gICAgYXV0byBz
bGVlcERpc2FibGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTbGVlcERpc2FibGVyPihyZWFzb24u
dXRmOCgpLmRhdGEoKSwgZGlzcGxheSA/IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6RGlzcGxh
eSA6IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6U3lzdGVtKTsKKyAgICBhdXRvIHNsZWVwRGlz
YWJsZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI+KHJlYXNvbiwgZGlzcGxh
eSA/IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6RGlzcGxheSA6IFBBTDo6U2xlZXBEaXNhYmxl
cjo6VHlwZTo6U3lzdGVtKTsKICAgICBtX3NsZWVwRGlzYWJsZXJzLmFkZCgrK2xhc3RVc2VkSWRl
bnRpZmllciwgV1RGTW92ZShzbGVlcERpc2FibGVyKSk7CiAgICAgcmV0dXJuIGxhc3RVc2VkSWRl
bnRpZmllcjsKIH0KQEAgLTY1NzcsMTEgKzY1NzcsMTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50
ZXJuYWxzOjpzZW5kTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QKIHZvaWQgSW50ZXJuYWxzOjpsb2FkQXJ0d29ya0ltYWdlKFN0cmluZyYmIHVybCwgQXJ0d29y
a0ltYWdlUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKCFjb250ZXh0RG9jdW1lbnQoKSkg
ewotICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
Ik5vIGRvY3VtZW50LiIgfSk7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiTm8gZG9jdW1lbnQuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGlmIChtX2FydHdvcmtJbWFnZVByb21pc2UpIHsKLSAgICAgICAgcHJvbWlzZS5y
ZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJBbm90aGVyIGRvd25sb2FkIGlz
IGN1cnJlbnRseSBwZW5kaW5nLiIgfSk7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yLCAiQW5vdGhlciBkb3dubG9hZCBpcyBjdXJyZW50bHkgcGVu
ZGluZy4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9hcnR3b3JrSW1hZ2VQ
cm9taXNlID0gbWFrZVVuaXF1ZTxBcnR3b3JrSW1hZ2VQcm9taXNlPihXVEZNb3ZlKHByb21pc2Up
KTsKQEAgLTY1OTMsNyArNjU5Myw3IEBAIHZvaWQgSW50ZXJuYWxzOjpsb2FkQXJ0d29ya0ltYWdl
KFN0cmluZyYmIHVybCwgQXJ0d29ya0ltYWdlUHJvbWlzZSYmIHByb21pc2UpCiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgbV9hcnR3b3JrSW1hZ2VQcm9taXNlLT5yZWplY3QoaW1h
Z2VEYXRhLmV4Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
bV9hcnR3b3JrSW1hZ2VQcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vy
cm9yLCAiTm8gaW1hZ2UgcmV0cmlldmVkLiIgIH0pOworICAgICAgICAgICAgbV9hcnR3b3JrSW1h
Z2VQcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiTm8gaW1h
Z2UgcmV0cmlldmVkLiJfcyB9KTsKICAgICAgICAgbV9hcnR3b3JrSW1hZ2VQcm9taXNlID0gbnVs
bHB0cjsKICAgICB9KTsKICAgICBtX2FydHdvcmtMb2FkZXItPnJlcXVlc3RJbWFnZVJlc291cmNl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsc01hcExpa2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHNNYXBMaWtlLmNwcAppbmRleCA5
Zjc2ODBjNTQ2ZTE3OGYzZDJlMzBiMGU3NjQ1YTU4MGZkNjk5NmRjLi45YTNkZjRkNGExODAwNDg1
YzZlYmZhNjgxNmU5NTQzOWQzMTEwNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsc01hcExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzTWFwTGlrZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBJbnRlcm5hbHNNYXBMaWtlOjpJbnRlcm5hbHNNYXBMaWtlKCkKIHsKLSAgICBtX3ZhbHVlcy5h
ZGQoImluaXQiLCAwKTsKKyAgICBtX3ZhbHVlcy5hZGQoImluaXQiX3MsIDApOwogfQogCiB2b2lk
IEludGVybmFsc01hcExpa2U6OmluaXRpYWxpemVNYXBMaWtlKERPTU1hcEFkYXB0ZXImIG1hcCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yLmNwcAppbmRleCAwOGY0NWU2ZTcyZmM0YmI4ZDkxZDQxYTc0NmU5NTNjODFmYWQ5Yzdk
Li5lMGE2MjVjZjJkMWY4ZjNjZWI4N2I2NWRkNTFjOGMwNGY2YzJlZWY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3Bw
CkBAIC0xMDUsMjUgKzEwNSwyNSBAQCB2b2lkIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6
c2V0VHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZAogdm9pZCBNb2Nr
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYpCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSKTsKLSAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxl
Q2FsbGJhY2sobV9jb250ZXh0LmdldCgpLCAicG9zaXRpb25TdGF0ZUNoYW5nZWQiKTsKKyAgICBt
X3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LmdldCgpLCAi
cG9zaXRpb25TdGF0ZUNoYW5nZWQiX3MpOwogfQogCiB2b2lkIE1vY2tNZWRpYVNlc3Npb25Db29y
ZGluYXRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSBzdGF0ZSkK
IHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsIHN0YXRlKTsKLSAg
ICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LmdldCgp
LCAicmVhZHlTdGF0ZUNoYW5nZWQiKTsKKyAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVk
dWxlQ2FsbGJhY2sobV9jb250ZXh0LmdldCgpLCAicmVhZHlTdGF0ZUNoYW5nZWQiX3MpOwogfQog
CiB2b2lkIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxheWJhY2tTdGF0ZUNoYW5nZWQo
TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BP
U1NJQkxFKExPR0lERU5USUZJRVIsIHN0YXRlKTsKLSAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXIt
PnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LmdldCgpLCAicGxheWJhY2tTdGF0ZUNoYW5nZWQi
KTsKKyAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0
LmdldCgpLCAicGxheWJhY2tTdGF0ZUNoYW5nZWQiX3MpOwogfQogCiB2b2lkIE1vY2tNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6dHJhY2tJZGVudGlmaWVyQ2hhbmdlZChjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCBp
ZGVudGlmaWVyKTsKLSAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2so
bV9jb250ZXh0LmdldCgpLCAidHJhY2tJZGVudGlmaWVyQ2hhbmdlZCIpOworICAgIG1fc3RhdGVD
aGFuZ2VMaXN0ZW5lci0+c2NoZWR1bGVDYWxsYmFjayhtX2NvbnRleHQuZ2V0KCksICJ0cmFja0lk
ZW50aWZpZXJDaGFuZ2VkIl9zKTsKIH0KIAogV1RGTG9nQ2hhbm5lbCYgTW9ja01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yOjpsb2dDaGFubmVsKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5oCmluZGV4IDllMGZlNTM4N2Nl
Nzg0MmE2YzFkZjFlNmZjNmFjZDExODAyNmFhMTkuLjgxMjQ2MmJlZjFkMmRhMzU1NTg4YTdhOThi
ZmVkN2MwZGZlY2IxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiYmKTsKIAotICAgIFN0cmluZyBpZGVudGlmaWVy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1vY2sgQ29vcmRpbmF0b3IiOyB9CisgICAgU3RyaW5n
IGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTW9jayBDb29yZGluYXRvciJfczsg
fQogCiAgICAgdm9pZCBqb2luKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxF
eGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGxlYXZlKCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAKaW5kZXggZDk3
NWYzYjQyODRmM2I2NmE4ZDc3OTJmMDhiNjNkN2QzZDE1NDNmYS4uNTJkYjQ3MGYyMmRjYWVmNzE3
Y2RhOTE3ZDhmN2U1ZTdjMjczNmQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcApAQCAtNzIsOCArNzIsOCBAQCBTdHJpbmcgTW9ja1Bh
Z2VPdmVybGF5Q2xpZW50OjpsYXllclRyZWVBc1RleHQoUGFnZSYgcGFnZSwgT3B0aW9uU2V0PExh
eWVyVHJlZUFzVAogICAgIEdyYXBoaWNzTGF5ZXIqIHZpZXdPdmVybGF5Um9vdCA9IHBhZ2UucGFn
ZU92ZXJsYXlDb250cm9sbGVyKCkudmlld092ZXJsYXlSb290TGF5ZXIoKTsKICAgICBHcmFwaGlj
c0xheWVyKiBkb2N1bWVudE92ZXJsYXlSb290ID0gcGFnZS5wYWdlT3ZlcmxheUNvbnRyb2xsZXIo
KS5kb2N1bWVudE92ZXJsYXlSb290TGF5ZXIoKTsKICAgICAKLSAgICByZXR1cm4gIlZpZXctcmVs
YXRpdmU6XG4iICsgKHZpZXdPdmVybGF5Um9vdCA/IHZpZXdPdmVybGF5Um9vdC0+bGF5ZXJUcmVl
QXNUZXh0KG9wdGlvbnMgfCBMYXllclRyZWVBc1RleHRPcHRpb25zOjpJbmNsdWRlUGFnZU92ZXJs
YXlMYXllcnMpIDogIihubyB2aWV3LXJlbGF0aXZlIG92ZXJsYXkgcm9vdCkiKQotICAgICAgICAr
ICJcblxuRG9jdW1lbnQtcmVsYXRpdmU6XG4iICsgKGRvY3VtZW50T3ZlcmxheVJvb3QgPyBkb2N1
bWVudE92ZXJsYXlSb290LT5sYXllclRyZWVBc1RleHQob3B0aW9ucyB8IExheWVyVHJlZUFzVGV4
dE9wdGlvbnM6OkluY2x1ZGVQYWdlT3ZlcmxheUxheWVycykgOiAiKG5vIGRvY3VtZW50LXJlbGF0
aXZlIG92ZXJsYXkgcm9vdCkiKTsKKyAgICByZXR1cm4gIlZpZXctcmVsYXRpdmU6XG4iICsgKHZp
ZXdPdmVybGF5Um9vdCA/IHZpZXdPdmVybGF5Um9vdC0+bGF5ZXJUcmVlQXNUZXh0KG9wdGlvbnMg
fCBMYXllclRyZWVBc1RleHRPcHRpb25zOjpJbmNsdWRlUGFnZU92ZXJsYXlMYXllcnMpIDogIihu
byB2aWV3LXJlbGF0aXZlIG92ZXJsYXkgcm9vdCkiX3MpCisgICAgICAgICsgIlxuXG5Eb2N1bWVu
dC1yZWxhdGl2ZTpcbiIgKyAoZG9jdW1lbnRPdmVybGF5Um9vdCA/IGRvY3VtZW50T3ZlcmxheVJv
b3QtPmxheWVyVHJlZUFzVGV4dChvcHRpb25zIHwgTGF5ZXJUcmVlQXNUZXh0T3B0aW9uczo6SW5j
bHVkZVBhZ2VPdmVybGF5TGF5ZXJzKSA6ICIobm8gZG9jdW1lbnQtcmVsYXRpdmUgb3ZlcmxheSBy
b290KSJfcyk7CiB9CiAKIHZvaWQgTW9ja1BhZ2VPdmVybGF5Q2xpZW50Ojp3aWxsTW92ZVRvUGFn
ZShQYWdlT3ZlcmxheSYsIFBhZ2UqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggOGI5Mzg4ODYzYzgxYjEyNmI4Yjg0Njg3YjBi
ZDg2YmZhMzcwZDkzMy4uZTgzMWIxYTA3Y2M2ZGE1MDJiMmYwZjZlOTk5OGEzMTJmNzQ2Yzk1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3Iu
Y3BwCkBAIC01NSwxNSArNTUsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTW9ja1BheW1lbnRD
b29yZGluYXRvcjo6TW9ja1BheW1lbnRDb29yZGluYXRvcihQYWdlJiBwYWdlKQogICAgIDogbV9w
YWdlIHsgcGFnZSB9CiB7Ci0gICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJhbWV4
Iik7Ci0gICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJjYXJ0ZUJhbmNhaXJlIik7
Ci0gICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJjaGluYVVuaW9uUGF5Iik7Ci0g
ICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJkaXNjb3ZlciIpOwotICAgIG1fYXZh
aWxhYmxlUGF5bWVudE5ldHdvcmtzLmFkZCgiaW50ZXJhYyIpOwotICAgIG1fYXZhaWxhYmxlUGF5
bWVudE5ldHdvcmtzLmFkZCgiamNiIik7Ci0gICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3Mu
YWRkKCJtYXN0ZXJDYXJkIik7Ci0gICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJw
cml2YXRlTGFiZWwiKTsKLSAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoInZpc2Ei
KTsKKyAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoImFtZXgiX3MpOworICAgIG1f
YXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmFkZCgiY2FydGVCYW5jYWlyZSJfcyk7CisgICAgbV9h
dmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJjaGluYVVuaW9uUGF5Il9zKTsKKyAgICBtX2F2
YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoImRpc2NvdmVyIl9zKTsKKyAgICBtX2F2YWlsYWJs
ZVBheW1lbnROZXR3b3Jrcy5hZGQoImludGVyYWMiX3MpOworICAgIG1fYXZhaWxhYmxlUGF5bWVu
dE5ldHdvcmtzLmFkZCgiamNiIl9zKTsKKyAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5h
ZGQoIm1hc3RlckNhcmQiX3MpOworICAgIG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmFkZCgi
cHJpdmF0ZUxhYmVsIl9zKTsKKyAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoInZp
c2EiX3MpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gTW9ja1BheW1lbnRDb29yZGluYXRv
cjo6dmFsaWRhdGVkUGF5bWVudE5ldHdvcmsoY29uc3QgU3RyaW5nJiBwYXltZW50TmV0d29yaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCA3
ZmFmZjBjNThhNjUwOTk2NmEwNjdkODQ0YjFiOWM4NWU1NDE5ZTg3Li4wYzQwMTAxOTlmNGJmMjYy
NDllMmJkYzBlNzgxMGRmNTA4ZGZlMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBXb3JrZXJTY3Jp
cHRMb2FkZXI6Om5vdGlmeUVycm9yKCkKIHsKICAgICBtX2ZhaWxlZCA9IHRydWU7CiAgICAgaWYg
KG1fZXJyb3IuaXNOdWxsKCkpCi0gICAgICAgIG1fZXJyb3IgPSB7IGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHVybCgpLCAiRmFpbGVkIHRvIGxvYWQgc2NyaXB0IiwgUmVzb3VyY2VFcnJv
cjo6VHlwZTo6R2VuZXJhbCB9OworICAgICAgICBtX2Vycm9yID0geyBlcnJvckRvbWFpbldlYktp
dEludGVybmFsLCAwLCB1cmwoKSwgIkZhaWxlZCB0byBsb2FkIHNjcmlwdCJfcywgUmVzb3VyY2VF
cnJvcjo6VHlwZTo6R2VuZXJhbCB9OwogICAgIG5vdGlmeUZpbmlzaGVkKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmNwcAppbmRleCAxMGZmN2U0MmYwYjExYTQ5YTUzZTllYmFkNGViYmNkYTFkYjZmOGE2
Li40NzU0MmRkZjQxNmU4ZTM2M2NjNzQyNjIyMjY0MTQxNGE0ZmIxZjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjph
ZGRSZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28KICAgICBp
ZiAoIW9wdGlvbnMuc2NvcGUuaXNFbXB0eSgpKQogICAgICAgICBqb2JEYXRhLnNjb3BlVVJMID0g
Y29udGV4dC0+Y29tcGxldGVVUkwob3B0aW9ucy5zY29wZSk7CiAgICAgZWxzZQotICAgICAgICBq
b2JEYXRhLnNjb3BlVVJMID0gVVJMKGpvYkRhdGEuc2NyaXB0VVJMLCAiLi8iKTsKKyAgICAgICAg
am9iRGF0YS5zY29wZVVSTCA9IFVSTChqb2JEYXRhLnNjcmlwdFVSTCwgIi4vIl9zKTsKIAogICAg
IGlmICgham9iRGF0YS5zY29wZVVSTC5pc051bGwoKSAmJiAham9iRGF0YS5zY29wZVVSTC5wcm90
b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIWpvYkRhdGEuaXNGcm9tU2VydmljZVdvcmtlclBhZ2Up
IHsKICAgICAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0VSUk9SKCJhZGRSZWdpc3RyYXRpb246
IHNjb3BlVVJMIHNjaGVtZSBpcyBub3QgSFRUUCBvciBIVFRQUyIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRh
dGFiYXNlLmNwcAppbmRleCBkZmRlYjBiMmViYzBlNTNjMzA2OWU4MDhmYTkyYTQzZTVjZTVmZTA3
Li45NzZkODBiODUwODViNDZmZTdlYWUwN2Q5MDBkMTYyN2NkMjkzMjk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcApAQCAtMjkzLDcgKzI5Myw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25E
YXRhYmFzZTo6ZW5zdXJlVmFsaWRSZWNvcmRzVGFibGUoKQogICAgICAgICB9CiAKICAgICAgICAg
aWYgKHNxbGl0ZVJlc3VsdCAhPSBTUUxJVEVfUk9XKQotICAgICAgICAgICAgcmV0dXJuICJFcnJv
ciBleGVjdXRpbmcgc3RhdGVtZW50IHRvIGZldGNoIHNjaGVtYSBmb3IgdGhlIFJlY29yZHMgdGFi
bGUuIjsKKyAgICAgICAgICAgIHJldHVybiAiRXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBm
ZXRjaCBzY2hlbWEgZm9yIHRoZSBSZWNvcmRzIHRhYmxlLiJfczsKIAogICAgICAgICBjdXJyZW50
U2NoZW1hID0gc3RhdGVtZW50LT5jb2x1bW5UZXh0KDEpOwogICAgIH0KQEAgLTMwNiwxNSArMzA2
LDE1IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZW5zdXJlVmFsaWRSZWNvcmRzVGFi
bGUoKQogICAgIHJldHVybiBtYWtlU3RyaW5nKCJVbmV4cGVjdGVkIHNjaGVtYTogIiwgY3VycmVu
dFNjaGVtYSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhTZXJ2
aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUgdXBkYXRlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCB1cGRh
dGVWaWFDYWNoZVRvU3RyaW5nKFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSB1cGRhdGUpCiB7
CiAgICAgc3dpdGNoICh1cGRhdGUpIHsKICAgICBjYXNlIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFD
YWNoZTo6SW1wb3J0czoKLSAgICAgICAgcmV0dXJuICJJbXBvcnRzIjsKKyAgICAgICAgcmV0dXJu
ICJJbXBvcnRzIl9zOwogICAgIGNhc2UgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpBbGw6
Ci0gICAgICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2Fz
ZSBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU6Ok5vbmU6Ci0gICAgICAgIHJldHVybiAiTm9u
ZSI7CisgICAgICAgIHJldHVybiAiTm9uZSJfczsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzMyLDEzICszMzIsMTMgQEAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlPiBzdHJpbmdUb1VwZGF0ZVZpYUNhY2hlKGNv
bnN0IFMKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgU3RyaW5nIHdvcmtl
clR5cGVUb1N0cmluZyhXb3JrZXJUeXBlIHdvcmtlclR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFs
IHdvcmtlclR5cGVUb1N0cmluZyhXb3JrZXJUeXBlIHdvcmtlclR5cGUpCiB7CiAgICAgc3dpdGNo
ICh3b3JrZXJUeXBlKSB7CiAgICAgY2FzZSBXb3JrZXJUeXBlOjpDbGFzc2ljOgotICAgICAgICBy
ZXR1cm4gIkNsYXNzaWMiOworICAgICAgICByZXR1cm4gIkNsYXNzaWMiX3M7CiAgICAgY2FzZSBX
b3JrZXJUeXBlOjpNb2R1bGU6Ci0gICAgICAgIHJldHVybiAiTW9kdWxlIjsKKyAgICAgICAgcmV0
dXJuICJNb2R1bGUiX3M7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTQ2Miw5ICs0NjIsOSBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hD
aGFuZ2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICAg
ICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kVGV4dCgzLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29w
ZVVSTC5wYXRoKCkudG9TdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBpbnNl
cnRTdGF0ZW1lbnQtPmJpbmRUZXh0KDQsIGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4o
KS5kYXRhYmFzZUlkZW50aWZpZXIoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBpbnNl
cnRTdGF0ZW1lbnQtPmJpbmREb3VibGUoNSwgZGF0YS5yZWdpc3RyYXRpb24ubGFzdFVwZGF0ZVRp
bWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAg
IHx8IGluc2VydFN0YXRlbWVudC0+YmluZFRleHQoNiwgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhk
YXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSkpICE9IFNRTElURV9PSworICAgICAgICAg
ICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kVGV4dCg2LCBTdHJpbmdWaWV3IHsgdXBkYXRlVmlh
Q2FjaGVUb1N0cmluZyhkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSkgfSkgIT0gU1FM
SVRFX09LCiAgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRUZXh0KDcsIGRhdGEu
c2NyaXB0VVJMLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IGluc2VydFN0
YXRlbWVudC0+YmluZFRleHQoOCwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkp
ICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kVGV4dCg4
LCBTdHJpbmdWaWV3IHsgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkgfSkgIT0g
U1FMSVRFX09LCiAgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRCbG9iKDksIFNw
YW4geyBjc3BFbmNvZGVyLmJ1ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSB9KSAhPSBT
UUxJVEVfT0sKICAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZEJsb2IoMTAsIFNw
YW4geyBjb2VwRW5jb2Rlci5idWZmZXIoKSwgY29lcEVuY29kZXIuYnVmZmVyU2l6ZSgpIH0pICE9
IFNRTElURV9PSwogICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kVGV4dCgxMSwg
ZGF0YS5yZWZlcnJlclBvbGljeSkgIT0gU1FMSVRFX09LCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGIzZWUwYmVlMWNmOTBm
ZjFjM2IyYjdhNjhiYjk3YTUzNjYzMTEyNGMuLmY2MTEwNjExNmE0YmY2NzUyNjQ0YTI0ZWFlMTlm
NTViNGFhOWZhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBTV1NlcnZlcjo6c2No
ZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQogICAgICAgICAgICAgaWYg
KGpvYlF1ZXVlLnNpemUoKSA9PSAxKQogICAgICAgICAgICAgICAgIGpvYlF1ZXVlLnJ1bk5leHRK
b2IoKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZWplY3RKb2Ioam9iRGF0YSwgeyBU
eXBlRXJyb3IsICJKb2IgcmVqZWN0ZWQgZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIiB9KTsKKyAg
ICAgICAgICAgIHJlamVjdEpvYihqb2JEYXRhLCB7IFR5cGVFcnJvciwgIkpvYiByZWplY3RlZCBm
b3Igbm9uIGFwcC1ib3VuZCBkb21haW4iX3MgfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IGFlODNmMzJkNWI2
ZDg4ZTRjMTRkNmQyOTliZWRjMDA5NTYxMzFlNWIuLmNiYWNiNGEyMDA1ZGIyNWUxNWFmMDFkM2Zl
NDgxOTE1ZGU1ZTFlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgaW5saW5lIFNoYXJlZFdvcmtl
ck9iamVjdENvbm5lY3Rpb24qIG1haW5UaHJlYWRDb25uZWN0aW9uKCkKIEV4Y2VwdGlvbk9yPFJl
ZjxTaGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IFN0cmluZyYmIHNjcmlwdFVSTFN0cmluZywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3Ry
aW5nLCBXb3JrZXJPcHRpb25zPj4mJiBtYXliZU9wdGlvbnMpCiB7CiAgICAgaWYgKCFtYWluVGhy
ZWFkQ29ubmVjdGlvbigpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IsICJTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIgfTsKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiU2hhcmVkIHdvcmtlcnMgYXJlIG5v
dCBzdXBwb3J0ZWQiX3MgfTsKIAogICAgIGF1dG8gdXJsID0gZG9jdW1lbnQuY29tcGxldGVVUkwo
c2NyaXB0VVJMU3RyaW5nKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggN2M5
YTE4YWQ2YTgwOTVmMTE4OTE2ZDYzMGI5MWNiYmQ0N2NkNjVjZi4uYjhkODUwMjY1MGMyNWQ5NTA2
NmZiYTI0MzgyZTczMzExZjVlMTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNzksMTYgKzc5LDE2IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KEpTQzo6
SlNHbG9iYWxPYmplY3QmIGdsCiAKICAgICAvLyBWYWxpZGF0ZSB0aGF0IHBhaW50Q29uc3RydWN0
b3IgaXMgYSBWb2lkRnVuY3Rpb24KICAgICBpZiAoIXBhaW50Q29uc3RydWN0b3ItPmlzQ2FsbGFi
bGUodm0pKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAicGFpbnRDb25z
dHJ1Y3RvciBtdXN0IGJlIGNhbGxhYmxlIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
VHlwZUVycm9yLCAicGFpbnRDb25zdHJ1Y3RvciBtdXN0IGJlIGNhbGxhYmxlIl9zIH07CiAKICAg
ICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJy
b3IsICJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyIgfTsK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBmaXJzdCBhcmd1bWVu
dCBtdXN0IG5vdCBiZSB0aGUgZW1wdHkgc3RyaW5nIl9zIH07CiAKICAgICB7CiAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBwYWludERlZmluaXRpb25Mb2NrKCkgfTsKIAogICAgICAgICBpZiAocGFp
bnREZWZpbml0aW9uTWFwKCkuY29udGFpbnMobmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yLCAiVGhpcyBuYW1lIGhhcyBhbHJlYWR5
IGJlZW4gcmVnaXN0ZXJlZCIgfTsKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkTW9kaWZpY2F0aW9uRXJyb3IsICJUaGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3Rl
cmVkIl9zIH07CiAKICAgICAgICAgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOwogCkBA
IC0xMTksMTkgKzExOSwxOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6cmVnaXN0ZXJQYWludChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbAogICAgICAgICAvLyBG
SVhNRTogQ29udmVydCB0byBQYWludFJlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzIGhlcmUgKHN0
ZXAgMTQpLgogCiAgICAgICAgIGlmICghcGFpbnRDb25zdHJ1Y3Rvci0+aXNDb25zdHJ1Y3Rvcih2
bSkpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIHNlY29u
ZCBhcmd1bWVudCBtdXN0IGJlIGEgY29uc3RydWN0b3IiIH07CisgICAgICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgY29u
c3RydWN0b3IiX3MgfTsKIAogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gcGFpbnRD
b25zdHJ1Y3Rvci0+Z2V0KCZnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0
aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAKICAgICAgICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5pc09i
amVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBz
ZWNvbmQgYXJndW1lbnQgbXVzdCBoYXZlIGEgcHJvdG90eXBlIHRoYXQgaXMgYW4gb2JqZWN0IiB9
OworICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBzZWNvbmQg
YXJndW1lbnQgbXVzdCBoYXZlIGEgcHJvdG90eXBlIHRoYXQgaXMgYW4gb2JqZWN0Il9zIH07CiAK
ICAgICAgICAgSlNWYWx1ZSBwYWludFZhbHVlID0gcHJvdG90eXBlVmFsdWUuZ2V0KCZnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYWludCIpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9KTsKIAogICAgICAgICBpZiAocGFpbnRWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBjbGFzcyBtdXN0IGhhdmUgYSBw
YWludCBtZXRob2QiIH07CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9y
LCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBhIHBhaW50IG1ldGhvZCJfcyB9OwogCiAgICAgICAgIFJl
ZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0
aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KGdsb2JhbE9iamVjdCwgcGFpbnRWYWx1ZSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0
aW9uRXJyb3IgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNj
b3BlLmNwcAppbmRleCAxMzZjMDUzZTU0YzEwODYzOTJmNGQwNGNlNzJlNDQyN2FmMWE2MDU3Li43
NGRmMjc1MTc4Y2E4ODBmODlmOTI5OTY1ODg3Mjk2ZDBkZjM1YTg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBA
QCB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9uKCkKIFN0cmlu
ZyBXb3JrbGV0R2xvYmFsU2NvcGU6OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAgICAgcmV0dXJuIG1fZG9jdW1lbnQtPnVzZXJBZ2VudCh1cmwpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCmluZGV4IGQ2YWNlYWYxNGMxNjlmOWZmOGUwNTgw
MTAwMzZhMjU3ODdhNjJlMGQuLjZkZjNmMGM5M2VmNDU2MGIyOTc2M2Q4YjE0ZmQyODU3MjhkYmM3
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCkBAIC02MywxMSArNjMsMTEgQEAgdm9pZCBY
TUxFcnJvcnM6OmhhbmRsZUVycm9yKEVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdl
LCBUZXh0UG9zaXRpb24gcG8KICAgICBpZiAodHlwZSA9PSBmYXRhbCB8fCAobV9lcnJvckNvdW50
IDwgbWF4RXJyb3JzICYmICghbV9sYXN0RXJyb3JQb3NpdGlvbiB8fCAobV9sYXN0RXJyb3JQb3Np
dGlvbi0+bV9saW5lICE9IHBvc2l0aW9uLm1fbGluZSAmJiBtX2xhc3RFcnJvclBvc2l0aW9uLT5t
X2NvbHVtbiAhPSBwb3NpdGlvbi5tX2NvbHVtbikpKSkgewogICAgICAgICBzd2l0Y2ggKHR5cGUp
IHsKICAgICAgICAgY2FzZSB3YXJuaW5nOgotICAgICAgICAgICAgYXBwZW5kRXJyb3JNZXNzYWdl
KCJ3YXJuaW5nIiwgcG9zaXRpb24sIG1lc3NhZ2UpOworICAgICAgICAgICAgYXBwZW5kRXJyb3JN
ZXNzYWdlKCJ3YXJuaW5nIl9zLCBwb3NpdGlvbiwgbWVzc2FnZSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBmYXRhbDoKICAgICAgICAgY2FzZSBub25GYXRhbDoKLSAgICAgICAg
ICAgIGFwcGVuZEVycm9yTWVzc2FnZSgiZXJyb3IiLCBwb3NpdGlvbiwgbWVzc2FnZSk7CisgICAg
ICAgICAgICBhcHBlbmRFcnJvck1lc3NhZ2UoImVycm9yIl9zLCBwb3NpdGlvbiwgbWVzc2FnZSk7
CiAgICAgICAgIH0KIAogICAgICAgICBtX2xhc3RFcnJvclBvc2l0aW9uID0gcG9zaXRpb247CkBA
IC03NSw3ICs3NSw3IEBAIHZvaWQgWE1MRXJyb3JzOjpoYW5kbGVFcnJvcihFcnJvclR5cGUgdHlw
ZSwgY29uc3QgY2hhciogbWVzc2FnZSwgVGV4dFBvc2l0aW9uIHBvCiAgICAgfQogfQogCi12b2lk
IFhNTEVycm9yczo6YXBwZW5kRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywg
VGV4dFBvc2l0aW9uIHBvc2l0aW9uLCBjb25zdCBjaGFyKiBtZXNzYWdlKQordm9pZCBYTUxFcnJv
cnM6OmFwcGVuZEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwgdHlwZVN0cmluZywgVGV4dFBvc2l0
aW9uIHBvc2l0aW9uLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewogICAgIC8vIDx0eXBlU3RyaW5n
PiBvbiBsaW5lIDxsaW5lTnVtYmVyPiBhdCBjb2x1bW4gPGNvbHVtbk51bWJlcj46IDxtZXNzYWdl
PgogICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmQodHlwZVN0cmluZywgIiBvbiBsaW5lICIsIHBv
c2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCAiIGF0IGNvbHVtbiAiLCBwb3NpdGlvbi5tX2Nv
bHVtbi5vbmVCYXNlZEludCgpLCAiOiAiLCBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxFcnJvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaApp
bmRleCBhZmM5MDAxYTc2MTYzYjY1YzhkM2JjYTczZTE3ZDg5OTZjMzM2ZjQ0Li5kODVhNDRhMzIz
ZTUyMGUyNjQ2ZjVlYjMzNTg2ZmUzOWNlNWI1MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MRXJyb3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCkBA
IC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc2VydEVycm9yTWVzc2FnZUJsb2Nr
KCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBhcHBlbmRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5n
JiB0eXBlU3RyaW5nLCBUZXh0UG9zaXRpb24sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOworICAgIHZv
aWQgYXBwZW5kRXJyb3JNZXNzYWdlKEFTQ0lJTGl0ZXJhbCB0eXBlU3RyaW5nLCBUZXh0UG9zaXRp
b24sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwogCiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAg
ICAgaW50IG1fZXJyb3JDb3VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCmluZGV4IDg5NWRjOWQwODU1MGFkNjA4ZTU5NzljNzA4ZDVhOWFhMGE1NDRiNzAuLmU1YmVm
MTRiNGQ0MmMyNzhkZjVlNGM0ZGY5NDE4MTk5NjRkMTQyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcApAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlQ2hh
cnNldEluTWVkaWFUeXBlSWZOZWVkZWQoU3RyaW5nJiBtZWRpYVR5cGUpCiAgICAgaWYgKCFwYXJz
ZWRDb250ZW50VHlwZSB8fCBwYXJzZWRDb250ZW50VHlwZS0+Y2hhcnNldCgpLmlzRW1wdHkoKSB8
fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCksICJV
VEYtOCIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYXJzZWRDb250ZW50VHlwZS0+c2V0Q2hh
cnNldCgiVVRGLTgiKTsKKyAgICBwYXJzZWRDb250ZW50VHlwZS0+c2V0Q2hhcnNldCgiVVRGLTgi
X3MpOwogICAgIG1lZGlhVHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5zZXJpYWxpemUoKTsKIH0K
IApAQCAtMjIzLDcgKzIyMyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6
OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJl
cXVlc3Q6OnNldFRpbWVvdXQodW5zaWduZWQgdGltZW91dCkKIHsKICAgICBpZiAoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkgJiYgIW1fYXN5bmMpIHsKLSAgICAgICAgbG9n
Q29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIlhNTEh0dHBSZXF1ZXN0LnRp
bWVvdXQgY2Fubm90IGJlIHNldCBmb3Igc3luY2hyb25vdXMgSFRUUChTKSByZXF1ZXN0cyBtYWRl
IGZyb20gdGhlIHdpbmRvdyBjb250ZXh0LiIpOworICAgICAgICBsb2dDb25zb2xlRXJyb3Ioc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCAiWE1MSHR0cFJlcXVlc3QudGltZW91dCBjYW5ub3QgYmUg
c2V0IGZvciBzeW5jaHJvbm91cyBIVFRQKFMpIHJlcXVlc3RzIG1hZGUgZnJvbSB0aGUgd2luZG93
IGNvbnRleHQuIl9zKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NF
cnJvciB9OwogICAgIH0KICAgICBtX3RpbWVvdXRNaWxsaXNlY29uZHMgPSB0aW1lb3V0OwpAQCAt
MjQ5LDcgKzI0OSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXNw
b25zZVR5cGUoUmVzcG9uc2VUeXBlIHR5cGUpCiAgICAgLy8gV2UnbGwgb25seSBkaXNhYmxlIHRo
aXMgZnVuY3Rpb25hbGl0eSBmb3IgSFRUUChTKSByZXF1ZXN0cyBzaW5jZSBzeW5jIHJlcXVlc3Rz
IGZvciBsb2NhbCBwcm90b2NvbHMKICAgICAvLyBzdWNoIGFzIGZpbGU6IGFuZCBkYXRhOiBzdGls
bCBtYWtlIHNlbnNlIHRvIGFsbG93LgogICAgIGlmICghbV9hc3luYyAmJiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSAmJiBtX3VybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5
KCkpIHsKLSAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
IlhNTEh0dHBSZXF1ZXN0LnJlc3BvbnNlVHlwZSBjYW5ub3QgYmUgY2hhbmdlZCBmb3Igc3luY2hy
b25vdXMgSFRUUChTKSByZXF1ZXN0cyBtYWRlIGZyb20gdGhlIHdpbmRvdyBjb250ZXh0LiIpOwor
ICAgICAgICBsb2dDb25zb2xlRXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAiWE1MSHR0
cFJlcXVlc3QucmVzcG9uc2VUeXBlIGNhbm5vdCBiZSBjaGFuZ2VkIGZvciBzeW5jaHJvbm91cyBI
VFRQKFMpIHJlcXVlc3RzIG1hZGUgZnJvbSB0aGUgd2luZG93IGNvbnRleHQuIl9zKTsKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwogICAgIH0KIApAQCAt
MzU0LDEzICszNTQsMTMgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6Om9wZW4o
Y29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYgdXJsLCBib28KICAgICAgICAgLy8gV2Un
bGwgb25seSBkaXNhYmxlIHRoaXMgZnVuY3Rpb25hbGl0eSBmb3IgSFRUUChTKSByZXF1ZXN0cyBz
aW5jZSBzeW5jIHJlcXVlc3RzIGZvciBsb2NhbCBwcm90b2NvbHMKICAgICAgICAgLy8gc3VjaCBh
cyBmaWxlOiBhbmQgZGF0YTogc3RpbGwgbWFrZSBzZW5zZSB0byBhbGxvdy4KICAgICAgICAgaWYg
KHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgcmVzcG9uc2VUeXBlKCkgIT0gUmVzcG9u
c2VUeXBlOjpFbXB0eVN0cmluZykgewotICAgICAgICAgICAgbG9nQ29uc29sZUVycm9yKGNvbnRl
eHQsICJTeW5jaHJvbm91cyBIVFRQKFMpIHJlcXVlc3RzIG1hZGUgZnJvbSB0aGUgd2luZG93IGNv
bnRleHQgY2Fubm90IGhhdmUgWE1MSHR0cFJlcXVlc3QucmVzcG9uc2VUeXBlIHNldC4iKTsKKyAg
ICAgICAgICAgIGxvZ0NvbnNvbGVFcnJvcihjb250ZXh0LCAiU3luY2hyb25vdXMgSFRUUChTKSBy
ZXF1ZXN0cyBtYWRlIGZyb20gdGhlIHdpbmRvdyBjb250ZXh0IGNhbm5vdCBoYXZlIFhNTEh0dHBS
ZXF1ZXN0LnJlc3BvbnNlVHlwZSBzZXQuIl9zKTsKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNpbWls
YXJseSwgdGltZW91dHMgYXJlIGRpc2FibGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cyBhcyB3
ZWxsLgogICAgICAgICBpZiAobV90aW1lb3V0TWlsbGlzZWNvbmRzID4gMCkgewotICAgICAgICAg
ICAgbG9nQ29uc29sZUVycm9yKGNvbnRleHQsICJTeW5jaHJvbm91cyBYTUxIdHRwUmVxdWVzdHMg
bXVzdCBub3QgaGF2ZSBhIHRpbWVvdXQgdmFsdWUgc2V0LiIpOworICAgICAgICAgICAgbG9nQ29u
c29sZUVycm9yKGNvbnRleHQsICJTeW5jaHJvbm91cyBYTUxIdHRwUmVxdWVzdHMgbXVzdCBub3Qg
aGF2ZSBhIHRpbWVvdXQgdmFsdWUgc2V0LiJfcyk7CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDA0LDEy
ICsxMDA0LDEyIEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBYTUxIdHRwUmVxdWVzdDo6Y3Jl
YXRlRGVjb2RlcigpIGNvbnN0CiB7CiAgICAgUEFMOjpUZXh0RW5jb2RpbmcgZmluYWxSZXNwb25z
ZUNoYXJzZXQgPSB0aGlzLT5maW5hbFJlc3BvbnNlQ2hhcnNldCgpOwogICAgIGlmIChmaW5hbFJl
c3BvbnNlQ2hhcnNldC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNv
ZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCBmaW5hbFJlc3BvbnNlQ2hhcnNldCk7CisgICAgICAg
IHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsIGZpbmFs
UmVzcG9uc2VDaGFyc2V0KTsKIAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKCkpIHsKICAgICBj
YXNlIFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmc6CiAgICAgICAgIGlmIChNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1hNTE1JTUVUeXBlKHJlc3BvbnNlTUlNRVR5cGUoKSkpIHsKLSAgICAgICAgICAgIGF1
dG8gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1s
Iik7CisgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUoImFwcGxpY2F0aW9uL3htbCJfcyk7CiAgICAgICAgICAgICAvLyBEb24ndCBzdG9wIG9uIGVu
Y29kaW5nIGVycm9ycywgdW5saWtlIGl0IGlzIGRvbmUgZm9yIG90aGVyIGtpbmRzIG9mIFhNTCBy
ZXNvdXJjZXMuIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgcHJldmlvdXMgV2ViS2l0IHZl
cnNpb25zLCBGaXJlZm94IGFuZCBPcGVyYS4KICAgICAgICAgICAgIGRlY29kZXItPnVzZUxlbmll
bnRYTUxEZWNvZGluZygpOwogICAgICAgICAgICAgcmV0dXJuIGRlY29kZXI7CkBAIC0xMDE3LDEx
ICsxMDE3LDExIEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBYTUxIdHRwUmVxdWVzdDo6Y3Jl
YXRlRGVjb2RlcigpIGNvbnN0CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgUmVzcG9u
c2VUeXBlOjpUZXh0OgogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpKc29uOgotICAgICAgICByZXR1
cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7Cisg
ICAgICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3Ms
ICJVVEYtOCIpOwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpEb2N1bWVudDogewogICAgICAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVzcG9uc2VNSU1FVHlwZSgpLCAidGV4
dC9odG1sIikpCi0gICAgICAgICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRl
KCJ0ZXh0L2h0bWwiLCAiVVRGLTgiKTsKLSAgICAgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKTsKKyAgICAgICAgICAgIHJldHVy
biBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvaHRtbCJfcywgIlVURi04Iik7Cisg
ICAgICAgIGF1dG8gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGlj
YXRpb24veG1sIl9zKTsKICAgICAgICAgLy8gRG9uJ3Qgc3RvcCBvbiBlbmNvZGluZyBlcnJvcnMs
IHVubGlrZSBpdCBpcyBkb25lIGZvciBvdGhlciBraW5kcyBvZiBYTUwgcmVzb3VyY2VzLiBUaGlz
IG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9mIHByZXZpb3VzIFdlYktpdCB2ZXJzaW9ucywgRmlyZWZv
eCBhbmQgT3BlcmEuCiAgICAgICAgIGRlY29kZXItPnVzZUxlbmllbnRYTUxEZWNvZGluZygpOwog
ICAgICAgICByZXR1cm4gZGVjb2RlcjsKQEAgLTEwMzEsNyArMTAzMSw3IEBAIFJlZjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlRGVjb2RlcigpIGNvbnN0CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0
dXJuIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJVVEYtOCIpOwor
ICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsICJV
VEYtOCIpOwogfQogCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCmluZGV4IGUz
MTU2NWViZTc4ZDliZmRhY2MwZjZhMWVhMGE1NzJlODU2MmI4OWQuLjlhMGFiYWZkOTVhMTg5ZWIz
NDhkOTQ4MjkzMjFhN2Q4MjYzYmJhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcApA
QCAtMzA4LDcgKzMwOCw3IEBAIGlubGluZSBQYXJzZXI6OlRva2VuIFBhcnNlcjo6bmV4dFRva2Vu
SW50ZXJuYWwoKQogICAgICAgICBpZiAoaXNCaW5hcnlPcGVyYXRvckNvbnRleHQoKSkKICAgICAg
ICAgICAgIHJldHVybiBtYWtlVG9rZW5BbmRBZHZhbmNlKE1VTE9QLCBOdW1lcmljT3A6Ok9QX011
bCk7CiAgICAgICAgICsrbV9uZXh0UG9zOwotICAgICAgICByZXR1cm4gVG9rZW4oTkFNRVRFU1Qs
ICIqIik7CisgICAgICAgIHJldHVybiBUb2tlbihOQU1FVEVTVCwgIioiX3MpOwogICAgIGNhc2Ug
JyQnOiB7IC8vICQgUU5hbWUKICAgICAgICAgbV9uZXh0UG9zKys7CiAgICAgICAgIFN0cmluZyBu
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwIGIv
U291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCmluZGV4IDNkMWNkNGNkMmNiZThl
MDZkYzA3NTFlMzUzZGUxODA5OTg0NTYyYjEuLmJlNThkNmY3NDQxY2QwODNiMjMyYTRjZDQ1ZDQw
ZTE0ZjQ4YTViYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKQEAgLTEyNSw3
ICsxMjUsNyBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gWFNMVFByb2Nlc3Nvcjo6dHJhbnNm
b3JtVG9GcmFnbWVudChOb2RlJiBzb3VyY2VOb2RlLCBEbwogCiAgICAgLy8gSWYgdGhlIG91dHB1
dCBkb2N1bWVudCBpcyBIVE1MLCBkZWZhdWx0IHRvIEhUTUwgbWV0aG9kLgogICAgIGlmIChvdXRw
dXREb2N1bWVudC5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICByZXN1bHRNSU1FVHlwZSA9ICJ0
ZXh0L2h0bWwiOworICAgICAgICByZXN1bHRNSU1FVHlwZSA9ICJ0ZXh0L2h0bWwiX3M7CiAKICAg
ICBpZiAoIXRyYW5zZm9ybVRvU3RyaW5nKHNvdXJjZU5vZGUsIHJlc3VsdE1JTUVUeXBlLCByZXN1
bHRTdHJpbmcsIHJlc3VsdEVuY29kaW5nKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZl
MDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li41YjJiMDg3Zjg5MDJjNjIwNTk4NmViYTdl
YmVjMDk5ODY5MGMyZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGli
eHNsdC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBYU0xUUHJvY2Vzc29yOjpwYXJzZUVycm9y
RnVuYyh2b2lkKiB1c2VyRGF0YSwgeG1sRXJyb3IqIGVycm9yKQogICAgIH0KIAogICAgIC8vIHht
bEVycm9yLT5pbnQyIGlzIHRoZSBjb2x1bW4gbnVtYmVyIG9mIHRoZSBlcnJvciBvciAwIGlmIE4v
QS4KLSAgICBjb25zb2xlLT5hZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlhNTCwgbGV2ZWwsIGVy
cm9yLT5tZXNzYWdlLCBlcnJvci0+ZmlsZSwgZXJyb3ItPmxpbmUsIGVycm9yLT5pbnQyKTsKKyAg
ICBjb25zb2xlLT5hZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlhNTCwgbGV2ZWwsIFN0cmluZyB7
IGVycm9yLT5tZXNzYWdlIH0sIFN0cmluZyB7IGVycm9yLT5maWxlIH0sIGVycm9yLT5saW5lLCBl
cnJvci0+aW50Mik7CiB9CiAKIC8vIEZJWE1FOiBUaGVyZSBzZWVtcyB0byBiZSBubyB3YXkgdG8g
Y29udHJvbCB0aGUgY3R4dCBwb2ludGVyIGZvciBsb2FkaW5nIGhlcmUsIHRodXMgd2UgaGF2ZSBn
bG9iYWxzLgpAQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVu
Yyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgY2FzZSBYU0xUX0xPQURfRE9DVU1FTlQ6IHsKICAg
ICAgICAgeHNsdFRyYW5zZm9ybUNvbnRleHRQdHIgY29udGV4dCA9ICh4c2x0VHJhbnNmb3JtQ29u
dGV4dFB0ciljdHh0OwogICAgICAgICB4bWxDaGFyKiBiYXNlID0geG1sTm9kZUdldEJhc2UoY29u
dGV4dC0+ZG9jdW1lbnQtPmRvYywgY29udGV4dC0+bm9kZSk7Ci0gICAgICAgIFVSTCB1cmwoVVJM
KHsgfSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYmFzZSkpLCByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPih1cmkpKTsKKyAgICAgICAgVVJMIHVybChVUkwoeyB9LCBTdHJpbmcg
eyByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihiYXNlKSB9KSwgU3RyaW5nIHsgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJpKSB9KTsKICAgICAgICAgeG1sRnJlZShiYXNlKTsK
ICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZTsKQEAgLTMwMCwxMSArMzAwLDExIEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHJlc3Vs
dE1JTUVUeXBlKHhtbERvY1B0ciByZXN1bHREb2MsIHhzbHRTdHlsZXNoZWV0UHRyIHNoZWV0CiAg
ICAgICAgIHJlc3VsdFR5cGUgPSAoY29uc3QgeG1sQ2hhciopImh0bWwiOwogCiAgICAgaWYgKHht
bFN0ckVxdWFsKHJlc3VsdFR5cGUsIChjb25zdCB4bWxDaGFyKikiaHRtbCIpKQotICAgICAgICBy
ZXR1cm4gInRleHQvaHRtbCI7CisgICAgICAgIHJldHVybiAidGV4dC9odG1sIl9zOwogICAgIGlm
ICh4bWxTdHJFcXVhbChyZXN1bHRUeXBlLCAoY29uc3QgeG1sQ2hhciopInRleHQiKSkKLSAgICAg
ICAgcmV0dXJuICJ0ZXh0L3BsYWluIjsKKyAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9zOwog
Ci0gICAgcmV0dXJuICJhcHBsaWNhdGlvbi94bWwiOworICAgIHJldHVybiAiYXBwbGljYXRpb24v
eG1sIl9zOwogfQogCiBib29sIFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvU3RyaW5nKE5vZGUm
IHNvdXJjZU5vZGUsIFN0cmluZyYgbWltZVR5cGUsIFN0cmluZyYgcmVzdWx0U3RyaW5nLCBTdHJp
bmcmIHJlc3VsdEVuY29kaW5nKQpAQCAtMzc0LDcgKzM3NCw3IEBAIGJvb2wgWFNMVFByb2Nlc3Nv
cjo6dHJhbnNmb3JtVG9TdHJpbmcoTm9kZSYgc291cmNlTm9kZSwgU3RyaW5nJiBtaW1lVHlwZSwg
U3RyaW5nCiAKICAgICAgICAgaWYgKChzdWNjZXNzID0gc2F2ZVJlc3VsdFRvU3RyaW5nKHJlc3Vs
dERvYywgc2hlZXQsIHJlc3VsdFN0cmluZykpKSB7CiAgICAgICAgICAgICBtaW1lVHlwZSA9IHJl
c3VsdE1JTUVUeXBlKHJlc3VsdERvYywgc2hlZXQpOwotICAgICAgICAgICAgcmVzdWx0RW5jb2Rp
bmcgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihyZXN1bHREb2MtPmVuY29kaW5nKTsK
KyAgICAgICAgICAgIHJlc3VsdEVuY29kaW5nID0gU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4ocmVzdWx0RG9jLT5lbmNvZGluZykgfTsKICAgICAgICAgfQogICAgICAgICB4
bWxGcmVlRG9jKHJlc3VsdERvYyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA3ZTZiZjRhYTAzNjUxYWQ2MTc5YTJiYjQ5
N2YwYWIzMDhmY2VhNTY2Li4xYWI4YTM1MjRhNmNkMGY5M2ZjNjVmMWJmODFiNWQ3MzIwZWMxNjdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUxlYWZU
ZXh0Tm9kZSgpCiAKICAgICBBU1NFUlQobV9idWZmZXJlZFRleHQuc2l6ZSgpID09IDApOwogICAg
IEFTU0VSVCghbV9sZWFmVGV4dE5vZGUpOwotICAgIG1fbGVhZlRleHROb2RlID0gVGV4dDo6Y3Jl
YXRlKG1fY3VycmVudE5vZGUtPmRvY3VtZW50KCksICIiKTsKKyAgICBtX2xlYWZUZXh0Tm9kZSA9
IFRleHQ6OmNyZWF0ZShtX2N1cnJlbnROb2RlLT5kb2N1bWVudCgpLCBlbXB0eVN0cmluZygpKTsK
ICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZCgqbV9sZWFmVGV4dE5vZGUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0
YzM5Mi4uYmRmN2JmYzY3ZGFlMWQ0MzNhNmJjZDE4YWY2NmJiNDhhNTUzZTM1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcApAQCAtNDU4LDcgKzQ1OCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFy
KiB1cmkpCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIuZG9j
dW1lbnQoKTsKICAgICAvLyBTYW1lIGxvZ2ljIGFzIEhUTUxCYXNlRWxlbWVudDo6aHJlZigpLiBL
ZWVwIHRoZW0gaW4gc3luYy4KICAgICBhdXRvKiBlbmNvZGluZyA9IChkb2N1bWVudCAmJiBkb2N1
bWVudC0+ZGVjb2RlcigpKSA/IGRvY3VtZW50LT5kZWNvZGVyKCktPmVuY29kaW5nRm9yVVJMUGFy
c2luZygpIDogbnVsbHB0cjsKLSAgICBVUkwgdXJsKGRvY3VtZW50ID8gZG9jdW1lbnQtPmZhbGxi
YWNrQmFzZVVSTCgpIDogVVJMKCksIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1
cmkpLCBlbmNvZGluZyk7CisgICAgVVJMIHVybChkb2N1bWVudCA/IGRvY3VtZW50LT5mYWxsYmFj
a0Jhc2VVUkwoKSA6IFVSTCgpLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoU3Ry
aW5nIHsgdXJpIH0pLCBlbmNvZGluZyk7CiAKICAgICBpZiAoIXNob3VsZEFsbG93RXh0ZXJuYWxM
b2FkKHVybCkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4
IGE4ZTc0OTk3ZDZjNDA1MGZiMjBlODBiZDRhZGJiNzJkODE4NDZmNmMuLjZkYmI1MmRhMjU3ZTc0
MDM3MmM2MmRiZDNjMDQ3NzZjNjI3Yjk1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNjcsNyArNjcsNyBAQCBz
dGF0aWMgY29uc3QgY2hhciogaHR0cE5vdEFsbG93ZWRUZXh0ID0gIk5vdCBBbGxvd2VkIjsKIHN0
YXRpYyBjb25zdCBjaGFyKiBodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZVRleHQgPSAi
UmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZSI7CiBzdGF0aWMgY29uc3QgY2hhciogaHR0
cEludGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciI7CiAKLXN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCB3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJl
c291cmNlIjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4g
PSAiV2ViS2l0QmxvYlJlc291cmNlIl9zOwogCiBOZXR3b3JrRGF0YVRhc2tCbG9iOjpOZXR3b3Jr
RGF0YVRhc2tCbG9iKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBCbG9iUmVnaXN0cnlJbXBsJiBi
bG9iUmVnaXN0cnksIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25p
ZmYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4m
IGZpbGVSZWZlcmVuY2VzKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Npb24sIGNsaWVudCwg
cmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlLCBmYWxzZSwgZmFsc2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzZTdm
OWRkZDkxZGE4NjFmNmIxZmExNTAwYWJhMDUzMGVhMmU4ODI2Li5mZDU0MDlkNzVmYjI5Y2Q4YWZi
NGEzODIwNDdlMTFiMzdiYjViNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKQEAgLTIwNzksNyArMjA3OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjplbmFibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3Qg
VXNlCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihTbGVlcERp
c2FibGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgYm9vbCBk
aXNwbGF5KQogewogICAgIE1FU1NBR0VfQ0hFQ0soIXJlYXNvbi5pc051bGwoKSk7Ci0gICAgYXV0
byBzbGVlcERpc2FibGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTbGVlcERpc2FibGVyPihyZWFz
b24udXRmOCgpLmRhdGEoKSwgZGlzcGxheSA/IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6RGlz
cGxheSA6IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6U3lzdGVtKTsKKyAgICBhdXRvIHNsZWVw
RGlzYWJsZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI+KHJlYXNvbiwgZGlz
cGxheSA/IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6RGlzcGxheSA6IFBBTDo6U2xlZXBEaXNh
Ymxlcjo6VHlwZTo6U3lzdGVtKTsKICAgICBtX3NsZWVwRGlzYWJsZXJzLmFkZChpZGVudGlmaWVy
LCBXVEZNb3ZlKHNsZWVwRGlzYWJsZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCmluZGV4IDkwZmJiNmRkODMzZWFhYTE5NTIyYThkY2IwNjI4MTE5OTAwZTUy
NWMuLmNmNTc5YTQzMzcwMmI1YjAwYzM2ZTBlZjUyZjhlNTk5NGRlYzA1MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIFdl
YlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogICAgICAgICB9KTsKICAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmluc3RhbGwoKTsKIAotICAgICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNv
bS5hcHBsZS5XZWJLaXQubG9nTWVtU3RhdHMiLCBbXSB7CisgICAgICAgIFBBTDo6cmVnaXN0ZXJO
b3RpZnlDYWxsYmFjaygiY29tLmFwcGxlLldlYktpdC5sb2dNZW1TdGF0cyJfcywgW10gewogICAg
ICAgICAgICAgV2ViQ29yZTo6bG9nTWVtb3J5U3RhdGlzdGljcyhMb2dNZW1vcnlTdGF0aXN0aWNz
UmVhc29uOjpEZWJ1Z05vdGlmaWNhdGlvbik7CiAgICAgICAgIH0pOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455828</attachid>
            <date>2022-03-25 22:53:05 -0700</date>
            <delta_ts>2022-03-25 23:01:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238408-20220325225304.patch</filename>
            <type>text/plain</type>
            <size>447438</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxOTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ3ZjIwNGU5YmM0NTc0YzQyMjQ1NzE2
MWE1MGI2NTEwYzgzNmNiNWUuLmZjYWQ3OTMxMWYyZjQyYWE1MTM1NzJiMzYzY2VkOWRmYzBmNDFh
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYkNvcmUgZm9yIG1ha2luZyB0aGUgU3Ry
aW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJlcGFyZSBXZWJDb3JlIGZvciBtYWtpbmcg
dGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQuCisgICAgICAgIE1h
a2luZyB0aGlzIGNvbnN0cnVjdG9yIGV4cGxpY2l0IGhlbHBzIGZpbmRpbmdzIGNhc2VzIHdoZXJl
IGEgU3RyaW5nIGlzIGNvbnN0cnVjdGVkCisgICAgICAgIGZyb20gYSBsaXRlcmFsIHdpdGhvdXQg
dGhlICIiX3Mgc3VmZml4LgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAg
ICAgIChXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UpOgorCiAyMDIyLTAzLTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFN0cmluZ1ZpZXc6OnNwbGl0
KCkgaW5zdGVhZCBvZiBTdHJpbmc6OnNwbGl0KCkgaW4gbW9yZSBwbGFjZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAxNTBlMGNkYmRkNTNlMTdlNWU1NGYwYTE2NzhmNGUzNDBmZmYwNjI5Li44OTU2MTQyMDkxN2M2
YTY2YjlkNmM2YWE2ZTc2Mzg2YWIwMTliNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMyIEBA
CisyMDIyLTAzLTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
UHJlcGFyZSBXZWJDb3JlIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3Ry
dWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzODQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFByZXBhcmUgV2ViQ29yZSBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciop
IGNvbnN0cnVjdG9yIGV4cGxpY2l0LgorICAgICAgICBNYWtpbmcgdGhpcyBjb25zdHJ1Y3RvciBl
eHBsaWNpdCBoZWxwcyBmaW5kaW5ncyBjYXNlcyB3aGVyZSBhIFN0cmluZyBpcyBjb25zdHJ1Y3Rl
ZAorICAgICAgICBmcm9tIGEgbGl0ZXJhbCB3aXRob3V0IHRoZSAiIl9zIHN1ZmZpeC4KKworICAg
ICAgICAqIFNjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuY3BwLmVyYjoKKyAgICAg
ICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuY3BwOgorICAgICAg
ICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oOgorICAgICAgICAq
IGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVl
cnlFdmFsdWF0b3I6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcyk6CisgICAgICAgICogZG9tL0Jyb2Fk
Y2FzdENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbDo6cG9z
dE1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bm9ybWFsaXplVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJRU9wRnJvbURyYWdPcCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpjb21wYXRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjaGFyYWN0
ZXJTZXRXaXRoVVRGOEZhbGxiYWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpwcm9jZXNzTWV0YUh0dHBFcXVpdik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0
RG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpleGVjQ29tbWFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cXVlcnlDb21tYW5kRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6cXVlcnlDb21tYW5kSW5kZXRlcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpxdWVyeUNvbW1hbmRTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnF1ZXJ5Q29tbWFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVS
ZXNpemVPYnNlcnZhdGlvbnMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnNldE91dGVySFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjphbmltYXRlKToKKyAgICAgICAgKiBkb20vSW1hZ2VPdmVybGF5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlT3ZlcmxheTo6dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdCk6
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd1Ry
ZWVGb3JUaGlzQWNyb3NzRnJhbWUgY29uc3QpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpj
aGVja1N0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp2aWV3cG9ydEVycm9yTWVzc2FnZVRlbXBsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OnZpZXdwb3J0RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnRvZ2dsZUJvbGQpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjp0b2dnbGVVbmRlcmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU3R5bGVQcmVzZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVUb2dnbGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHREZWNvcmF0aW9uQ2hhbmdlRm9yVG9nZ2xpbmcp
OgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBl
ZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRl
eHRDb21tYW5kOjppbnNlcnRUYWIpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmFkZFNwYWNlc0ZvclNtYXJ0UmVwbGFj
ZSk6CisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6b2JzZXJ2ZVBhcmFn
cmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWtBbmROb3RpZnlBY2Nlc3NpYmls
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNl
cGFyYXRvckFuZE5vdGlmeUFjY2Vzc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5n
Q29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50QW5kTm90aWZ5
QWNjZXNzaWJpbGl0eSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KToKKyAgICAgICAgKiBm
aWxlYXBpL0Jsb2JVUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlVSTDo6Y3JlYXRlSW50
ZXJuYWxVUkwpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlUmVhZGVyTG9hZGVyOjpjb252ZXJ0VG9UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVSZWFkZXJMb2FkZXI6OmNvbnZlcnRUb0RhdGFVUkwpOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpC
YWNrRm9yd2FyZENhY2hlKToKKyAgICAgICAgKiBodG1sL0VtYWlsSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKiBodG1sL0VudGVyS2V5SGludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1
dGVWYWx1ZUZvckVudGVyS2V5SGludCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6
Y3JlYXRlQmFzaWNEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2spOgor
ICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dDo6YmVzdEZpdFNvdXJjZUZyb21QaWN0dXJlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW1hZ2VFbGVtZW50OjpldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5RGVwZW5kZW5jaWVzKToK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6c2hvd1BpY2tlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNsZWVwRGlzYWJs
aW5nKToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKToKKyAgICAgICAg
KiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpj
cmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyb3BwZWRTb3VyY2VSZWN0YW5nbGVX
aXRoRm9ybWF0dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlRnJv
bUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAg
KiBodG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VGcmFnbWVudHMpOgorICAgICAgICAqIGh0bWwvUERG
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OnNlbmRQREZBcnJh
eUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6OkFOR0xFSW5zdGFuY2Vk
QXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQzo6RVhUVGV4dHVy
ZUNvbXByZXNzaW9uUkdUQyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpp
bml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMxOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JH
Qi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6
OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZWJ1
Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TERlcHRoVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6
V2ViR0xEZXB0aFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZXB0aFRleHR1cmU6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0dXBGbGFncyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBY3RpdmVVbmlm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZEV4
dGVuc2lvblN1cHBvcnRlZEZvcm1hdHNBbmRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dEltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWN5Y2xlQ29u
dGV4dCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlh
bGl6ZUZvck51bWJlclR5cGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjppbml0aWF0
b3JGb3IpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdT
Y2FubmVyOjpwcm9jZXNzQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJl
bG9hZFNjYW5uZXIuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2Fk
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlByZWxvYWRSZXF1ZXN0OjpQcmVsb2FkUmVxdWVzdCk6
CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrQ3VlOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVHZW5lcmljQm94
RWxlbWVudDo6YXBwbHlDU1NQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGllcyk6
CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVlRUUGFyc2VyOjpXZWJWVFRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRU
VHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4pOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRDb21wdXRlZFByb3BlcnRp
ZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJs
YXk6OnNldEdyaWRPdmVybGF5Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JP
dmVybGF5OjpjbGVhckdyaWRPdmVybGF5Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JPdmVybGF5OjpzZXRGbGV4T3ZlcmxheUZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheTo6Y2xlYXJGbGV4T3ZlcmxheUZvck5vZGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclN0eWxlOjpidWlsZE9iamVjdEZvclN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OnNlbGVjdG9yc0Zyb21Tb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQ6OnJlc29sdmVBbmltYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OmdldEZvbnREYXRhRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjphZGRSdWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50Ojpy
ZXNvbHZlQ29udGV4dCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0U3VwcG9y
dGVkRXZlbnROYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2hv
d0dyaWRPdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzaG93
RmxleE92ZXJsYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpzZXRFdmVudEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmJyZWFrT25VUkxJZk5lZWRlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpleGVjdXRlU1FMKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6RXhlY3V0YWJsZVdpdGhEYXRhYmFzZTo6c3RhcnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yTGF5ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVzb2x2
ZVdlYlNvY2tldCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb29raWVPYmplY3QpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEluc2VydERPTU5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVE
T01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50OjpidWlsZFBh
dXNlRGF0YUZvckRPTUJyZWFrcG9pbnQpOgorICAgICAgICAqIGxheW91dC9WZXJpZmljYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94
SW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OmNhblVzZUZvckxpbmVMYXlvdXRXaXRoUmVhc29uKToKKyAgICAgICAgKiBsb2FkZXIv
Q29udGVudEZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6dXJsU2No
ZW1lKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6YWxsb3dz
Q3Jvc3NPcmlnaW5NZXRob2QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OnZhbGlkYXRlQ3Jvc3NPcmlnaW5IZWFkZXJzIGNvbnN0
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlTG9hZEVtcHR5KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2hlY2tVUkxTY2hlbWVBc0NPUlNFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3Qp
OgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdWJtaXNz
aW9uOjpwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFu
ZEFkZEV4dHJhRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUG9z
dFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnRE
b2N1bWVudEl0ZW0pOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZWplY3RQcm9taXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRl
cjo6cmVqZWN0RGVjb2RlUHJvbWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpkZWNvZGUp
OgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9NaXhl
ZENvbnRlbnRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ1dhcm5pbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuRGlzcGxheUluc2VjdXJlQ29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpNaXhlZENvbnRlbnRDaGVja2VyOjpjYW5SdW5JbnNl
Y3VyZUNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNlbmRQaW5nKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVGb250SGFzaFNl
dCk6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVDYW52YXNBY3Rpdml0eVJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6ZGVjb2RlSGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2ViQ29yZTo6
ZGVjb2RlRm9udEhhc2hTZXQpOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlQ2FudmFzQWN0aXZp
dHlSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3RyaW5n
IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCk6CisgICAgICAgICogbG9hZGVyL1NlcnZlclRpbWluZ1Bh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2ZXJUaW1pbmdQYXJzZXI6OnBhcnNlU2Vy
dmVyVGltaW5nKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KToKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRDU1NTdHlsZVNoZWV0OjpDYWNoZWRDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmRpZEFkZENsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRDU1NTdHlsZVNoZWV0OjplbmNvZGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
Ojpsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OkNhY2hlZFNWR0RvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZyBjb25zdCk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0
OjplbmNvZGluZyBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6Q2FjaGVk
WFNMU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0Ojpl
bmNvZGluZyBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpNZW1vcnlDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlDYWNoZTo6b3JpZ2luc1dpdGhDYWNoZSBjb25zdCk6CisgICAgICAgICog
bWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydE1hdGhT
aXplSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6
OmNhcHRpb25zVGV4dEVkZ2VDU1MgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cHJpbnQpOgorICAgICAgICAqIHBhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJv
bGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6
ZXh0ZW5kKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6OnByaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWxlcnQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpjb25maXJtRm9yQmluZGluZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwcm9tcHQpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
V2luZG93OjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnQpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRT
b3VyY2U6OmNvbm5lY3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlUmVnRXhwRm9yTGFiZWxzKToKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoTGFi
ZWxzQWdhaW5zdFN0cmluZyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGp1c3RNZWRpYVR5cGVGb3JQcmludGluZyk6CisgICAg
ICAgICogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZVJvb3RNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6
OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Mb2dnZWRJblN0YXR1cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMb2dnZWRJblN0YXR1czo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRv
ckJhc2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9RdWlya3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVp
cmsgY29uc3QpOgorICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VEaWFsb2dGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpib29sRmVh
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpmbG9hdEZlYXR1cmUpOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zb2xl
TWVzc2FnZUZvclZpb2xhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmFsbG93RXZhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3k6OnJlcG9ydEludmFsaWRQbHVnaW5UeXBlcyBjb25zdCk6CisgICAgICAgICogcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzaG91bGRSZXBvcnRT
YW1wbGUgY29uc3QpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzLmNwcDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lcy5oOgorICAgICAgICAqIHBsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lz
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbEJ1aWx0aW5TY2hlbWVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYTWVu
dUxpc3RQb3B1cEFjdGlvblZlcmIpOgorICAgICAgICAoV2ViQ29yZTo6QVhNZW51TGlzdEFjdGlv
blZlcmIpOgorICAgICAgICAoV2ViQ29yZTo6QVhMaXN0SXRlbUFjdGlvblZlcmIpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NsZWVwRGlzYWJsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xlZXBE
aXNhYmxlcjo6U2xlZXBEaXNhYmxlcik6CisgICAgICAgICogcGxhdGZvcm0vU2xlZXBEaXNhYmxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRGF0YWJhc2U6OkhSVEZEYXRhYmFzZSk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Q
cml2YXRlOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRpb1ZpZGVvVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VMaWNlbnNlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlTGljZW5zZVJlbGVhc2VBY2tub3dsZWRnZW1lbnRGb3JtYXQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZGVzY3JpcHRp
b24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6dG9KU09OU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0aWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVjRnJvbUZvcm1hdERlc2NyaXB0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVZpZGVvSW5mb0Zyb21WUDlIZWFkZXJQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlVmlkZW9JbmZvRnJvbVZQOEhlYWRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6Y29kZWMgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
RUJsZW5kOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6Omhhc2hTdHJpbmdXaXRoU2FsdCk6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9SVENOb3RpZmllcnNNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURhdGFDaGFu
bmVsTm90aWZpZXI6OmZpcmUpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyc0Nv
bnRyb2xsZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcnNDb250cm9sbGVy
TW9jazo6bW91c2VFbnRlcmVkQ29udGVudEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyc0NvbnRyb2xsZXJNb2NrOjptb3VzZU1vdmVkSW5Db250ZW50QXJlYSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJzQ29udHJvbGxlck1vY2s6Om1vdXNlRXhpdGVkQ29udGVudEFyZWEp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWltZVR5cGVDYWNoZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9y
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFVUkxEZWNvZGVyOjpEZWNvZGVUYXNrOjpwcm9jZXNzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlU3RydWN0dXJlZEZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVFRQ
SGVhZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VB
Y2Nlc3NRdWlya3MpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OmNoYXJzZXQgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmZpbHRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2luZ1Byb3h5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5l
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2NrZXRT
dHJlYW1IYW5kbGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmFkZENPTk5FQ1RDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6
YXV0aG9yaXplckZ1bmN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVu
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6cmVuZGVyTmFtZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvdW50ZXI6OnJl
bmRlck5hbWUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OnJlbmRlck5hbWUgY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6cmVuZGVyTmFt
ZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZyYWdtZW50ZWRGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1l
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZW5kZXJOYW1lIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJIVE1MQ2FudmFzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpyZW5kZXJO
YW1lIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0ZVByaW1hcnlHcmFwaGljc0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6ZW5zdXJlQ2xpcHBpbmdTdGFja0xheWVycyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURlc2NlbmRhbnRD
bGlwcGluZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZU1hc2tpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZUNoaWxkQ2xpcHBpbmdTdHJhdGVneSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVNjcm9sbGluZ0xheWVycyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTWVkaWEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTW9kZWwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uRmxvdzo6cmVuZGVyTmFtZSBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6cmVuZGVyTmFtZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpyZW5kZXJOYW1lIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6b3V0cHV0UmVuZGVyT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclByb2dy
ZXNzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3RlLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxp
Y2EuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJSdWJ5QmFzZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5UnVu
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
YWJsZUNvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpyZW5kZXJOYW1l
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFRhZ05hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWaWRlby5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmg6CisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxQYWRkZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
b3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1No
YXBlT3V0c2lkZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tTaGFwZUltYWdlT3Jp
Z2luKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSZWN0Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSb290Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9M
ZWdhY3lSZW5kZXJTVkdTaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Q29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFya2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVJhZGlhbEdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQ
YXRoLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5l
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHQ29udGFpbmVyTGF5b3V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0NvbnRhaW5lckxheW91dDo6dmVyaWZ5TGF5b3V0TG9jYXRpb25D
b25zaXN0ZW5jeSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRTdHJlYW1TZXBhcmF0b3I6OlRleHRTdHJlYW1T
ZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdGaWxsUGFpbnRpbmdSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVNWR1N0cm9rZVBhaW50aW5nUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6d3JpdGVTdGFuZGFyZFByZWZpeCk6CisgICAgICAgICogc3ZnL0xp
bmVhckdyYWRpZW50QXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZWFyR3JhZGll
bnRBdHRyaWJ1dGVzOjpMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHN2Zy9S
YWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlhbEdyYWRp
ZW50QXR0cmlidXRlczo6UmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcv
U1ZHRml0VG9WaWV3Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpdFRvVmlld0JveDo6
cGFyc2VWaWV3Qm94R2VuZXJpYyk6CisgICAgICAgICogc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHZW9tZXRyeUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZVZhbGlkaXR5VG9Ub1N0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpyZXNwb25zZVNvdXJjZVRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjplbGVtZW50QnVmZmVyaW5nUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6Y3JlYXRlU2xlZXBEaXNhYmxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmxvYWRBcnR3b3JrSW1hZ2UpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzTWFwTGlr
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHNNYXBMaWtlOjpJbnRlcm5hbHNNYXBM
aWtlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBvc2l0aW9u
U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpwbGF5YmFja1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnRyYWNrSWRlbnRpZmllckNoYW5nZWQpOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmg6CisgICAgICAg
ICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpsYXllclRyZWVBc1RleHQpOgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpu
b3RpZnlFcnJvcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRk
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjplbnN1cmVWYWxpZFJlY29yZHNUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVWaWFD
YWNoZVRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmtlclR5cGVUb1N0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OmNyZWF0
ZSk6CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgor
ICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnVzZXJBZ2VudCBjb25zdCk6CisgICAgICAgICogeG1s
L1hNTEVycm9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxFcnJvcnM6OmhhbmRsZUVycm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEVycm9yczo6YXBwZW5kRXJyb3JNZXNzYWdlKToKKyAg
ICAgICAgKiB4bWwvWE1MRXJyb3JzLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VDaGFyc2V0SW5NZWRpYVR5cGVJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0VGltZW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVEZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKiB4bWwvWFBhdGhQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlBhcnNlcjo6bmV4dFRva2VuSW50ZXJuYWwp
OgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhT
TFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvRnJhZ21lbnQpOgorICAgICAgICAqIHhtbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpwYXJz
ZUVycm9yRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OnJlc3VsdE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNz
b3I6OnRyYW5zZm9ybVRvU3RyaW5nKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGVM
ZWFmVGV4dE5vZGUpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GdW5jKToKKwogMjAyMi0wMy0yNSAgTmlr
b2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNv
cnJlY3QgaGFuZGxpbmcgb2YgTmFOIGluc2lkZSBjYWxjKCkgZm9yIHRvcC1sZXZlbCBjYWxjdWxh
dGlvbgpAQCAtMzA2LDYgKzkzNSwxMiBAQAogICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwOgogICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOjpwYWludFRvVGV4dHVyZU1hcHBlcik6
CiAKKzIwMjItMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBVbnJldmlld2VkLCB1cGRhdGUgRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QuCisK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKwogMjAyMi0wMy0y
NSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IEFkZCBjc3MtdHlwZWQtb20gY29sb3IgSURMIHNrZWxldG9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5k
ZXggOWExOGZjNmRhZTU1ZDdiZTdmMmY4MzY0Mjk2MzFjY2Y1ODRmOTljYy4uZjUwOWNlOGNhMGVj
MjA5ZWZlYzk5MDljOGVhMzc0MTcxYTEyZDRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzEgQEAKKzIwMjItMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBQcmVwYXJlIFdlYkNvcmUgZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIq
KSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM4NDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUHJlcGFyZSBXZWJDb3JlIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25z
dCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQuCisgICAgICAgIE1ha2luZyB0aGlzIGNvbnN0
cnVjdG9yIGV4cGxpY2l0IGhlbHBzIGZpbmRpbmdzIGNhc2VzIHdoZXJlIGEgU3RyaW5nIGlzIGNv
bnN0cnVjdGVkCisgICAgICAgIGZyb20gYSBsaXRlcmFsIHdpdGhvdXQgdGhlICIiX3Mgc3VmZml4
LgorCisgICAgICAgICogcGFsL0xvZ2dpbmcuY3BwOgorICAgICAgICAoUEFMOjpyZWdpc3Rlck5v
dGlmeUNhbGxiYWNrKToKKyAgICAgICAgKiBwYWwvTG9nZ2luZy5oOgorICAgICAgICAqIHBhbC9z
eXN0ZW0vU2xlZXBEaXNhYmxlci5jcHA6CisgICAgICAgIChQQUw6OlNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChQQUw6OlNsZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIpOgorICAg
ICAgICAqIHBhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5oOgorICAgICAgICAqIHBhbC9zeXN0ZW0v
Y29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmNwcDoKKyAgICAgICAgKFBBTDo6U2xlZXBEaXNhYmxl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFBBTDo6U2xlZXBEaXNhYmxlckNvY29hOjpTbGVlcERpc2Fi
bGVyQ29jb2EpOgorICAgICAgICAqIHBhbC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29h
Lmg6CisgICAgICAgICogcGFsL3N5c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmNwcDoKKyAg
ICAgICAgKFBBTDo6U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKToKKyAgICAgICAgKFBBTDo6U2xlZXBE
aXNhYmxlckdMaWI6OlNsZWVwRGlzYWJsZXJHTGliKToKKyAgICAgICAgKFBBTDo6U2xlZXBEaXNh
YmxlckdMaWI6OmFjcXVpcmVJbmhpYml0b3IpOgorICAgICAgICAqIHBhbC9zeXN0ZW0vZ2xpYi9T
bGVlcERpc2FibGVyR0xpYi5oOgorCiAyMDIyLTAzLTI0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBSRUdSRVNTSU9OKHIyODEyOTEp
OiBXaGVuIGFjY2Vzc2liaWxpdHkgYm9sZCBpcyBlbmFibGVkLCBmb250LWZhbWlseTpzeXN0ZW0t
dWkgaXMgc3VwcG9zZWQgdG8gYmUgYm9sZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZWRkMTJmZDgwOTUxYjk4OWIz
MTY4M2JkYzRjMWEyN2YyMTRlOGZjLi40OGI4ZDM0Mjg5Yjk4M2ZiOTdkNDg2MTlmOWEzOWU3OWNh
M2ZlYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAzLTI1ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlcGFyZSBXZWJDb3JlIGZvciBtYWtp
bmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODQwOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXBhcmUgV2ViQ29yZSBm
b3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIGV4cGxpY2l0Lgor
ICAgICAgICBNYWtpbmcgdGhpcyBjb25zdHJ1Y3RvciBleHBsaWNpdCBoZWxwcyBmaW5kaW5ncyBj
YXNlcyB3aGVyZSBhIFN0cmluZyBpcyBjb25zdHJ1Y3RlZAorICAgICAgICBmcm9tIGEgbGl0ZXJh
bCB3aXRob3V0IHRoZSAiIl9zIHN1ZmZpeC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVNsZWVw
RGlzYWJsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAyMi0wMy0y
NSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBUZW1w
b3JhcmlseSBkaXNhYmxlIGFzc2VydGlvbiBpbiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJ
bXBsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDU5NmJiNTAzYzY2ZGIwNDI4MThjZmRi
NGE1MWU4YzJhZWViOWM1YjguLjEwZmVjZDg5NjBmOWYyNTE2YjEyY2UxMDU5MDUyMmE3YjA2Zjlm
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMzcxLDYgKzM3MSw3IEBAIHRlbXBsYXRl
PHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0
b3I8Y2hhciwgaW5saW5lCiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5l
Q2FwYWNpdHk+JiBiKSB7IHJldHVybiBiICE9IGE7IH0KIAogYm9vbCBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IFN0cmluZyYsIEFTQ0lJTGl0ZXJhbCk7CiBib29sIGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOwogCiB0ZW1wbGF0ZTx1bnNp
Z25lZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3Ry
aW5nJiwgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pOwpAQCAtNTk4LDYg
KzU5OSwxMSBAQCBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
ZyYgYSwgY29uc3QgY2hhciogYikKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShh
LmltcGwoKSwgYik7CiB9CiAKK2lubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgU3RyaW5nJiBhLCBBU0NJSUxpdGVyYWwgYikKK3sKKyAgICByZXR1cm4gZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShhLmltcGwoKSwgYi5jaGFyYWN0ZXJzKCkpOworfQorCiB0ZW1wbGF0ZTx1bnNp
Z25lZCBsZW5ndGg+IGlubGluZSBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVts
ZW5ndGhdKQogewogICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZy5pbXBsKCksIGxvd2VyY2FzZUxldHRlcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9Mb2dnaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2lu
Zy5jcHAKaW5kZXggMDBiN2VkODQ1OGI3ZjNlYTg1NGMxZWJhYWJjNmEzNDY0NmU4MGJjYS4uMjZj
M2M2OGIwMTcyNmQ0YWM3MjM0ZGNjY2ZiNGFjNDkwMzM5NDRlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9Mb2dnaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L0xvZ2dpbmcuY3BwCkBAIC0zNSwxMSArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFBBTCB7CiAKLXZv
aWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmIG5vdGlmeUlELCBGdW5jdGlv
bjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soQVNDSUlM
aXRlcmFsIG5vdGlmeUlELCBGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgaW50IHRva2VuOwotICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRj
aChub3RpZnlJRC51dGY4KCkuZGF0YSgpLCAmdG9rZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIG1ha2VCbG9ja1B0cihbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oaW50KSB7Cisg
ICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKG5vdGlmeUlELmNoYXJhY3RlcnMoKSwgJnRva2Vu
LCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGludCkgewogICAgICAgICBjYWxsYmFjaygpOwogICAgIH0pLmdldCgp
KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5oCmluZGV4IDMwYThlNWUxMzFkNmIzOGQ0
YThlZDYzZWI1ZGM5ZDU0ZDM5ODg0YjMuLjkxYjVlNWI1N2UyZGJlNWQyYzYwYWU4ZWE0YjczZWVi
MjViMWQ0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5oCkBAIC0yOSw3ICsyOSw3IEBACiAK
IG5hbWVzcGFjZSBQQUwgewogCi1QQUxfRVhQT1JUIHZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFj
ayhjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKCk+JiYpOworUEFMX0VYUE9SVCB2b2lkIHJl
Z2lzdGVyTm90aWZ5Q2FsbGJhY2soQVNDSUlMaXRlcmFsLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwog
CiB9IC8vIG5hbWVzcGFjZSBQQUwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3Rl
bS9TbGVlcERpc2FibGVyLmNwcAppbmRleCA0NmRiNThmNTY0MDJlYTgyNzgyNjQxMWU5M2Q5MzBl
ZjhmZWViNDRiLi44NGIzODg4MDY2ZGQxYmUxMDdlYTRhZjc5MDA1NzhkNWNiYmRiMjI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9TbGVlcERpc2FibGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9TbGVlcERpc2FibGVyLmNwcApAQCAt
MjYsMTYgKzI2LDE4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2xlZXBEaXNh
Ymxlci5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKIG5hbWVzcGFjZSBQ
QUwgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEdMSUIpCi1zdGQ6OnVuaXF1ZV9w
dHI8U2xlZXBEaXNhYmxlcj4gU2xlZXBEaXNhYmxlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNv
biwgVHlwZSB0eXBlKQorc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+IFNsZWVwRGlzYWJs
ZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHJlYXNvbiwgVHlwZSB0eXBlKQogewogICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4obmV3IFNsZWVwRGlzYWJsZXIocmVhc29u
LCB0eXBlKSk7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEdMSUIpCiAK
LVNsZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciosIFR5cGUgdHlwZSkKK1Ns
ZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIoY29uc3QgU3RyaW5nJiwgVHlwZSB0eXBlKQogICAg
IDogbV90eXBlKHR5cGUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3N5c3RlbS9TbGVlcERpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9T
bGVlcERpc2FibGVyLmgKaW5kZXggZGMwOWU5NDk5NGE4ZDQ0NTZlNTIzMTdkMDFkN2RjY2FjMDMx
ZWJiYS4uNmI5ZjRlMjc1ODg4YTI4NzExZTZkOTExNDk3YzdhNzcxNDA4MjUyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL1NsZWVwRGlzYWJsZXIuaApAQCAtMjUsNiArMjUs
OCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVz
cGFjZSBQQUwgewogCiBjbGFzcyBTbGVlcERpc2FibGVyIHsKQEAgLTMzLDEzICszNSwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIFN5c3RlbSwKICAgICAgICAgRGlzcGxheSwKICAgICB9OwotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gY3JlYXRlKGNvbnN0IGNoYXIqLCBU
eXBlKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+IGNyZWF0ZShj
b25zdCBTdHJpbmcmLCBUeXBlKTsKICAgICBQQUxfRVhQT1JUIHZpcnR1YWwgflNsZWVwRGlzYWJs
ZXIoKTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgUEFMX0VYUE9SVCBTbGVlcERpc2FibGVyKGNvbnN0IGNoYXIqLCBUeXBlKTsK
KyAgICBQQUxfRVhQT1JUIFNsZWVwRGlzYWJsZXIoY29uc3QgU3RyaW5nJiwgVHlwZSk7CiAgICAg
VHlwZSBtX3R5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5
c3RlbS9jb2NvYS9TbGVlcERpc2FibGVyQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmNwcAppbmRleCBlMWMwZDIwMDkwZDM2
YTY3Y2U5YjUxMGEwYmYwMTAwYjk5MTc4NDg4Li5kOTBmMGQ2YTRmYTMxODA3MWJlMDk4M2E3YTAw
M2I1NDE4M2RlOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9j
b2NvYS9TbGVlcERpc2FibGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3lzdGVtL2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5jcHAKQEAgLTMwLDE4ICszMCwxOSBAQAog
CiAjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1BNTGliU1BJLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
UEFMIHsKIAotc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+IFNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZShjb25zdCBjaGFyKiByZWFzb24sIFR5cGUgdHlwZSkKK3N0ZDo6dW5pcXVlX3B0cjxTbGVl
cERpc2FibGVyPiBTbGVlcERpc2FibGVyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiByZWFzb24sIFR5
cGUgdHlwZSkKIHsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+KG5l
dyBTbGVlcERpc2FibGVyQ29jb2EocmVhc29uLCB0eXBlKSk7CiB9CiAKLVNsZWVwRGlzYWJsZXJD
b2NvYTo6U2xlZXBEaXNhYmxlckNvY29hKGNvbnN0IGNoYXIqIHJlYXNvbiwgVHlwZSB0eXBlKQor
U2xlZXBEaXNhYmxlckNvY29hOjpTbGVlcERpc2FibGVyQ29jb2EoY29uc3QgU3RyaW5nJiByZWFz
b24sIFR5cGUgdHlwZSkKICAgICA6IFNsZWVwRGlzYWJsZXIocmVhc29uLCB0eXBlKQogewotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVhc29uQ0YgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVhc29uLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgpKTsKKyAgICBhdXRvIHJlYXNvbkNGID0gcmVhc29uLmNyZWF0ZUNGU3RyaW5nKCk7CiAK
ICAgICBDRlN0cmluZ1JlZiBhc3NlcnRpb25UeXBlOwogICAgIHN3aXRjaCAodHlwZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxl
ckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9jb2NvYS9TbGVlcERpc2Fi
bGVyQ29jb2EuaAppbmRleCBhODFhN2U3ODdiMTMxMDJlYTMxMTlhNGY1YTg5YzA3MzkzYTU5M2Vh
Li4wMGMyNGZiNTQ1NjEzNzVjYTcyODA1YWU3MWVhOWE3YzdjYzJmODcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9jb2NvYS9TbGVlcERpc2FibGVyQ29jb2EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9jb2NvYS9TbGVlcERpc2FibGVyQ29j
b2EuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgUEFMIHsKIAogY2xhc3MgU2xlZXBEaXNh
YmxlckNvY29hIDogcHVibGljIFNsZWVwRGlzYWJsZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0
IFNsZWVwRGlzYWJsZXJDb2NvYShjb25zdCBjaGFyKiwgVHlwZSk7CisgICAgZXhwbGljaXQgU2xl
ZXBEaXNhYmxlckNvY29hKGNvbnN0IFN0cmluZyYsIFR5cGUpOwogICAgIHZpcnR1YWwgflNsZWVw
RGlzYWJsZXJDb2NvYSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zeXN0ZW0vZ2xpYi9TbGVlcERpc2FibGVyR0xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3N5c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmNwcAppbmRleCA5MTUxY2Rk
OWI4ODMzMWRkZTRlZTJkZDMzNTk0ODE0MmY2MGYzOTYwLi5kOGMyNDEwODM2MzVkMGY0MmM3NDdl
MjQyMmQ5MWYwZWY3OTRhNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5
c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3N5c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmNwcApAQCAtMzIsMTIgKzMyLDEyIEBA
CiAKIG5hbWVzcGFjZSBQQUwgewogCi1zdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gU2xl
ZXBEaXNhYmxlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNvbiwgVHlwZSB0eXBlKQorc3RkOjp1
bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+IFNsZWVwRGlzYWJsZXI6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIHJlYXNvbiwgVHlwZSB0eXBlKQogewogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U2xl
ZXBEaXNhYmxlcj4obmV3IFNsZWVwRGlzYWJsZXJHTGliKHJlYXNvbiwgdHlwZSkpOwogfQogCi1T
bGVlcERpc2FibGVyR0xpYjo6U2xlZXBEaXNhYmxlckdMaWIoY29uc3QgY2hhciogcmVhc29uLCBU
eXBlIHR5cGUpCitTbGVlcERpc2FibGVyR0xpYjo6U2xlZXBEaXNhYmxlckdMaWIoY29uc3QgU3Ry
aW5nJiByZWFzb24sIFR5cGUgdHlwZSkKICAgICA6IFNsZWVwRGlzYWJsZXIocmVhc29uLCB0eXBl
KQogICAgICwgbV9jYW5jZWxsYWJsZShhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSkpCiAg
ICAgLCBtX3JlYXNvbihyZWFzb24pCkBAIC04OSwxMCArODksMTAgQEAgdm9pZCBTbGVlcERpc2Fi
bGVyR0xpYjo6YWNxdWlyZUluaGliaXRvcigpCiAgICAgaWYgKHNob3VsZFVzZVBvcnRhbCgpKSB7
CiAgICAgICAgIEdWYXJpYW50QnVpbGRlciBidWlsZGVyOwogICAgICAgICBnX3ZhcmlhbnRfYnVp
bGRlcl9pbml0KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKLSAgICAgICAgZ192
YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2fSIsICJyZWFzb24iLCBnX3ZhcmlhbnRf
bmV3X3N0cmluZyhtX3JlYXNvbi5kYXRhKCkpKTsKKyAgICAgICAgZ192YXJpYW50X2J1aWxkZXJf
YWRkKCZidWlsZGVyLCAie3N2fSIsICJyZWFzb24iLCBnX3ZhcmlhbnRfbmV3X3N0cmluZyhtX3Jl
YXNvbi51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIHBhcmFtZXRlcnMgPSBnX3ZhcmlhbnRfbmV3
KCIoc3VAYXtzdn0pIiwgIiIgLyogbm8gd2luZG93ICovLCA4IC8qIGlkbGUgKi8sIGdfdmFyaWFu
dF9idWlsZGVyX2VuZCgmYnVpbGRlcikpOwogICAgIH0gZWxzZQotICAgICAgICBwYXJhbWV0ZXJz
ID0gZ192YXJpYW50X25ldygiKHNzKSIsIGdfZ2V0X3ByZ25hbWUoKSwgbV9yZWFzb24uZGF0YSgp
KTsKKyAgICAgICAgcGFyYW1ldGVycyA9IGdfdmFyaWFudF9uZXcoIihzcykiLCBnX2dldF9wcmdu
YW1lKCksIG1fcmVhc29uLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgZ19kYnVzX3Byb3h5X2NhbGwo
bV9zY3JlZW5TYXZlclByb3h5LmdldCgpLCAiSW5oaWJpdCIsIHBhcmFtZXRlcnMsIEdfREJVU19D
QUxMX0ZMQUdTX05PTkUsIC0xLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBbXShHT2JqZWN0KiBwcm94
eSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3lzdGVtL2dsaWIvU2xlZXBEaXNhYmxlckdMaWIuaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3lzdGVtL2dsaWIvU2xlZXBEaXNhYmxlckdMaWIuaAppbmRleCA4ZGJmOTU3OTRjMTk5
NjEwNTkyYzg3ZDFmYWE3NDkyZTgxYjU2YjE5Li4yNjQ0MmM3OTUzZjJjMWVlMjM5NTQ2N2E0NWE0
NDYxZWRhNTg2Mzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9n
bGliL1NsZWVwRGlzYWJsZXJHTGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0
ZW0vZ2xpYi9TbGVlcERpc2FibGVyR0xpYi5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBQ
QUwgewogCiBjbGFzcyBTbGVlcERpc2FibGVyR0xpYiBmaW5hbCA6IHB1YmxpYyBTbGVlcERpc2Fi
bGVyIHsKIHB1YmxpYzoKLSAgICBTbGVlcERpc2FibGVyR0xpYihjb25zdCBjaGFyKiwgVHlwZSk7
CisgICAgU2xlZXBEaXNhYmxlckdMaWIoY29uc3QgU3RyaW5nJiwgVHlwZSk7CiAgICAgdmlydHVh
bCB+U2xlZXBEaXNhYmxlckdMaWIoKTsKIAogcHJpdmF0ZToKQEAgLTUzLDcgKzUzLDcgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX3NjcmVlblNhdmVyQ29va2llIHsgMCB9OwogICAgIEdVbmlx
dWVPdXRQdHI8Y2hhcj4gbV9pbmhpYml0UG9ydGFsUmVxdWVzdE9iamVjdFBhdGg7CiAgICAgR1Jl
ZlB0cjxHQ2FuY2VsbGFibGU+IG1fY2FuY2VsbGFibGU7Ci0gICAgQ1N0cmluZyBtX3JlYXNvbjsK
KyAgICBTdHJpbmcgbV9yZWFzb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuY3Bw
LmVyYiBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3Mu
Y3BwLmVyYgppbmRleCA3ZTkxZDM1YzM5YmU0NjIwYjczNGRjNjc0ZjJiMWFmNjE3YmY4MzVkLi5h
MTU3NTljMDNjYmI1YmU5ZWVhYjlkNjZjNGJkZTFmMzZmYzRiNmIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1NldHRpbmdzLmNwcC5lcmIKKysr
IGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5ncy5jcHAu
ZXJiCkBAIC0zOCw3ICszOCwxMSBAQAogI2lmIDwlPSBAc2V0dGluZy5jb25kaXRpb24gJT4KIDwl
LSAgIGVuZCAtJT4KIDwlLSAgIGlmIEBzZXR0aW5nLmRlZmF1bHRWYWx1ZXMuc2l6ZSgpID09IDEg
LSU+Cis8JS0gICAgIGlmIEBzZXR0aW5nLnR5cGUgPT0gIlN0cmluZyIgYW5kIEBzZXR0aW5nLmRl
ZmF1bHRWYWx1ZXNbJ2RlZmF1bHQnXVstMV0gPT0gIlwiIiAtJT4KKyNkZWZpbmUgU0VUVElOR19E
RUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHNldHRpbmcubmFtZSAlPiA8JT0gQHNldHRpbmcuZGVmYXVs
dFZhbHVlc1snZGVmYXVsdCddICU+X3MKKzwlLSAgICAgZWxzZSAtJT4KICNkZWZpbmUgU0VUVElO
R19ERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHNldHRpbmcubmFtZSAlPiA8JT0gQHNldHRpbmcuZGVm
YXVsdFZhbHVlc1snZGVmYXVsdCddICU+Cis8JS0gICAgIGVuZCAtJT4KIDwlLSAgIGVsc2UgLSU+
CiA8JS0gICAgIEBzZXR0aW5nLmRlZmF1bHRWYWx1ZXMuZWFjaF93aXRoX2luZGV4IGRvIHwoa2V5
LCB2YWx1ZSksIGluZGV4fCAtJT4KIDwlLSAgICAgICBpZiBpbmRleCA9PSAwIC0lPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVy
cm9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25FcnJvci5jcHAKaW5kZXggNjQ5YmQ3MGY2NTEwNDUzOGRjMTg4ZjQ0OGNlMTRmNmFlNDA4NGFm
YS4uNGYyMTE2NTc2ZGE1OWMxZGEyMTIxYjIwY2U5MDdiNzY3OWM2NjY0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
RXJyb3IuY3BwCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3Bh
Y2UgQ29udGVudEV4dGVuc2lvbnMgewogCi1jb25zdCBjaGFyKiBXZWJLaXRDb250ZW50QmxvY2tl
ckRvbWFpbiA9ICJXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbiI7CitBU0NJSUxpdGVyYWwgV2Vi
S2l0Q29udGVudEJsb2NrZXJEb21haW4gPSAiV2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4iX3M7
CiAKIGNvbnN0IHN0ZDo6ZXJyb3JfY2F0ZWdvcnkmIGNvbnRlbnRFeHRlbnNpb25FcnJvckNhdGVn
b3J5KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25FcnJvci5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbkVycm9yLmgKaW5kZXggYTI0NWQ5M2U1MDI0ZDIzOWU2M2Q0Y2Q2MmNj
YjE4ZTZkMTU5OTczMi4uZThhZDM1MzlkYjhlNWI3YjE4NzljYTk2NGUxNjFkMTFhYmM1YjYzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbkVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkVycm9yLmgKQEAgLTg0LDcgKzg0LDcgQEAgZW51bSBjbGFzcyBDb250ZW50RXh0
ZW5zaW9uRXJyb3IgewogICAgIEVycm9yV3JpdGluZ1NlcmlhbGl6ZWRORkEsCiB9OwogCi1leHRl
cm4gY29uc3QgY2hhciogV2ViS2l0Q29udGVudEJsb2NrZXJEb21haW47CitleHRlcm4gQVNDSUlM
aXRlcmFsIFdlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluOwogICAgIAogV0VCQ09SRV9FWFBPUlQg
Y29uc3Qgc3RkOjplcnJvcl9jYXRlZ29yeSYgY29udGVudEV4dGVuc2lvbkVycm9yQ2F0ZWdvcnko
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IGQ5
OTQ4NjMwMjMxOGM3NmY5NjgzYmEyMWM5MWJiYjIwYTBhMzQ0NzguLjZjODdlNGY4OTQxYWJjOGRh
OTgyOTgzM2E5Mjc1OTc1ZGRjMmM5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eUV2YWx1YXRvci5jcHAKQEAgLTk1Myw3ICs5NTMsNyBAQCBib29sIE1lZGlhUXVlcnlFdmFsdWF0
b3I6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZwogewogICAgIEFTU0VSVChkb2N1bWVudC5yZW5kZXJWaWV3KCkpOwogICAgIGF1dG8gbWVkaWFR
dWVyaWVzID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKGF0dHJpYnV0ZVZhbHVlLCBNZWRpYVF1ZXJ5
UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwotICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9y
IHsgInNjcmVlbiIsIGRvY3VtZW50LCAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIH0u
ZXZhbHVhdGUobWVkaWFRdWVyaWVzLmdldCgpKTsKKyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1
YXRvciB7ICJzY3JlZW4iX3MsIGRvY3VtZW50LCAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHls
ZSgpIH0uZXZhbHVhdGUobWVkaWFRdWVyaWVzLmdldCgpKTsKIH0KIAogfSAvLyBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5jcHAKaW5kZXggYjg0Yjc0ZTk2MmIxODg1
MzYxOThiM2IxYmZlMmMyODA2ZjY4NWRhNS4uY2ZjOWFiOGQzYWZkYzA2NDc4MTlhMzc2NzljZTYx
NzhkMjJkM2QzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcApAQCAt
MTg3LDcgKzE4Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEJyb2FkY2FzdENoYW5uZWw6OnBvc3RN
ZXNzYWdlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjCiAgICAgICAgIHJldHVybiB7
IH07CiAKICAgICBpZiAobV9pc0Nsb3NlZCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiVGhpcyBCcm9hZGNhc3RDaGFubmVsIGlzIGNsb3NlZCIgfTsKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiVGhpcyBCcm9hZGNh
c3RDaGFubmVsIGlzIGNsb3NlZCJfcyB9OwogCiAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+IHBvcnRzOwogICAgIGF1dG8gbWVzc2FnZURhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1lc3NhZ2UsIHsgfSwgcG9ydHMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVyLmNwcAppbmRleCA4NmFiODg5YmMwZWExNWE1NDczNTdmYjY0ZGZmOWYxMGI4
NjJkYzU0Li5hY2FmMDhjYmQxNTg1ODkzZDI2OGFmOWNjYmVhYjM0NmMwMGE5MzY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMTI3LDExICsxMjcsMTEgQEAgc3RhdGljIFN0
cmluZyBub3JtYWxpemVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogICAgIFN0cmluZyBsb3dl
cmNhc2VUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHR5cGUpLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAgICAgaWYgKGxvd2VyY2FzZVR5cGUgPT0gInRleHQiIHx8
IGxvd2VyY2FzZVR5cGUuc3RhcnRzV2l0aCgidGV4dC9wbGFpbjsiKSkKLSAgICAgICAgcmV0dXJu
ICJ0ZXh0L3BsYWluIjsKKyAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9zOwogICAgIGlmIChs
b3dlcmNhc2VUeXBlID09ICJ1cmwiIHx8IGxvd2VyY2FzZVR5cGUuc3RhcnRzV2l0aCgidGV4dC91
cmktbGlzdDsiKSkKLSAgICAgICAgcmV0dXJuICJ0ZXh0L3VyaS1saXN0IjsKKyAgICAgICAgcmV0
dXJuICJ0ZXh0L3VyaS1saXN0Il9zOwogICAgIGlmIChsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgo
InRleHQvaHRtbDsiKSkKLSAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiOworICAgICAgICByZXR1
cm4gInRleHQvaHRtbCJfczsKIAogICAgIHJldHVybiBsb3dlcmNhc2VUeXBlOwogfQpAQCAtNjMx
LDI1ICs2MzEsMjUgQEAgc3RhdGljIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFnT3BGcm9t
SUVPcChjb25zdCBTdHJpbmcmIG9wZXJhdGlvbikKICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9u
OjpQcml2YXRlIH07IC8vIFJlYWxseSBhIG1hcmtlciBmb3IgIm5vIGNvbnZlcnNpb24iLgogfQog
Ci1zdGF0aWMgY29uc3QgY2hhciogSUVPcEZyb21EcmFnT3AoT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IG9wZXJhdGlvbk1hc2spCitzdGF0aWMgQVNDSUlMaXRlcmFsIElFT3BGcm9tRHJhZ09wKE9w
dGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrKQogewogICAgIGJvb2wgaXNHZW5l
cmljTW92ZSA9IG9wZXJhdGlvbk1hc2suY29udGFpbnNBbnkoeyBEcmFnT3BlcmF0aW9uOjpHZW5l
cmljLCBEcmFnT3BlcmF0aW9uOjpNb3ZlIH0pOwogCiAgICAgaWYgKChpc0dlbmVyaWNNb3ZlICYm
IG9wZXJhdGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0aW9uOjpDb3B5LCBEcmFnT3Bl
cmF0aW9uOjpMaW5rIH0pKSB8fCBvcGVyYXRpb25NYXNrLmNvbnRhaW5zQWxsKHsgRHJhZ09wZXJh
dGlvbjo6Q29weSwgRHJhZ09wZXJhdGlvbjo6TGluaywgRHJhZ09wZXJhdGlvbjo6R2VuZXJpYywg
RHJhZ09wZXJhdGlvbjo6UHJpdmF0ZSwgRHJhZ09wZXJhdGlvbjo6TW92ZSwgRHJhZ09wZXJhdGlv
bjo6RGVsZXRlIH0pKQotICAgICAgICByZXR1cm4gImFsbCI7CisgICAgICAgIHJldHVybiAiYWxs
Il9zOwogICAgIGlmIChpc0dlbmVyaWNNb3ZlICYmIG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJh
Z09wZXJhdGlvbjo6Q29weSkpCi0gICAgICAgIHJldHVybiAiY29weU1vdmUiOworICAgICAgICBy
ZXR1cm4gImNvcHlNb3ZlIl9zOwogICAgIGlmIChpc0dlbmVyaWNNb3ZlICYmIG9wZXJhdGlvbk1h
c2suY29udGFpbnMoRHJhZ09wZXJhdGlvbjo6TGluaykpCi0gICAgICAgIHJldHVybiAibGlua01v
dmUiOworICAgICAgICByZXR1cm4gImxpbmtNb3ZlIl9zOwogICAgIGlmIChvcGVyYXRpb25NYXNr
LmNvbnRhaW5zQWxsKHsgRHJhZ09wZXJhdGlvbjo6Q29weSwgRHJhZ09wZXJhdGlvbjo6TGluayB9
KSkKLSAgICAgICAgcmV0dXJuICJjb3B5TGluayI7CisgICAgICAgIHJldHVybiAiY29weUxpbmsi
X3M7CiAgICAgaWYgKGlzR2VuZXJpY01vdmUpCi0gICAgICAgIHJldHVybiAibW92ZSI7CisgICAg
ICAgIHJldHVybiAibW92ZSJfczsKICAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFn
T3BlcmF0aW9uOjpDb3B5KSkKLSAgICAgICAgcmV0dXJuICJjb3B5IjsKKyAgICAgICAgcmV0dXJu
ICJjb3B5Il9zOwogICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb246
OkxpbmspKQotICAgICAgICByZXR1cm4gImxpbmsiOwotICAgIHJldHVybiAibm9uZSI7CisgICAg
ICAgIHJldHVybiAibGluayJfczsKKyAgICByZXR1cm4gIm5vbmUiX3M7CiB9CiAKIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiBEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJhdGlvbk1hc2soKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZmRjY2Y3Nzc4YWU3OGViNGEzMTRjMzY0NzYx
NWMyM2Y3ZmNhYTZjNS4uNmQ5OTk2ZjYzYmE3MjZhZWNmYmIzMWM2NDZlM2IyODlhZWIzMWEzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC05MzEsNyArOTMxLDcgQEAgdm9pZCBEb2N1bWVu
dDo6c2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZSBtb2RlKQog
CiBTdHJpbmcgRG9jdW1lbnQ6OmNvbXBhdE1vZGUoKSBjb25zdAogewotICAgIHJldHVybiBpblF1
aXJrc01vZGUoKSA/ICJCYWNrQ29tcGF0IiA6ICJDU1MxQ29tcGF0IjsKKyAgICByZXR1cm4gaW5R
dWlya3NNb2RlKCkgPyAiQmFja0NvbXBhdCJfcyA6ICJDU1MxQ29tcGF0Il9zOwogfQogCiBjb25z
dCBDb2xvciYgRG9jdW1lbnQ6OnRoZW1lQ29sb3IoKQpAQCAtMTQ5Myw3ICsxNDkzLDcgQEAgU3Ry
aW5nIERvY3VtZW50OjpjaGFyYWN0ZXJTZXRXaXRoVVRGOEZhbGxiYWNrKCkgY29uc3QKICAgICBB
dG9tU3RyaW5nIG5hbWUgPSBlbmNvZGluZygpOwogICAgIGlmICghbmFtZS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIG5hbWU7Ci0gICAgcmV0dXJuIFBBTDo6VVRGOEVuY29kaW5nKCkuZG9tTmFt
ZSgpOworICAgIHJldHVybiBTdHJpbmcgeyBQQUw6OlVURjhFbmNvZGluZygpLmRvbU5hbWUoKSB9
OwogfQogCiBTdHJpbmcgRG9jdW1lbnQ6OmRlZmF1bHRDaGFyc2V0Rm9yTGVnYWN5QmluZGluZ3Mo
KSBjb25zdApAQCAtMzgxOSwxOSArMzgxOSwxOSBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzTWV0
YUh0dHBFcXVpdihjb25zdCBTdHJpbmcmIGVxdWl2LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsCiAK
ICAgICBIdHRwRXF1aXZQb2xpY3kgcG9saWN5ID0gaHR0cEVxdWl2UG9saWN5KCk7CiAgICAgaWYg
KHBvbGljeSAhPSBIdHRwRXF1aXZQb2xpY3k6OkVuYWJsZWQpIHsKLSAgICAgICAgU3RyaW5nIHJl
YXNvbjsKKyAgICAgICAgQVNDSUlMaXRlcmFsIHJlYXNvbiA9ICIiX3M7CiAgICAgICAgIHN3aXRj
aCAocG9saWN5KSB7CiAgICAgICAgIGNhc2UgSHR0cEVxdWl2UG9saWN5OjpFbmFibGVkOgogICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBIdHRwRXF1aXZQb2xpY3k6OkRpc2FibGVkQnlTZXR0aW5nczoKLSAgICAgICAgICAg
IHJlYXNvbiA9ICJieSB0aGUgZW1iZWRkZXIuIjsKKyAgICAgICAgICAgIHJlYXNvbiA9ICJieSB0
aGUgZW1iZWRkZXIuIl9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSHR0cEVx
dWl2UG9saWN5OjpEaXNhYmxlZEJ5Q29udGVudERpc3Bvc2l0aW9uQXR0YWNobWVudFNhbmRib3g6
Ci0gICAgICAgICAgICByZWFzb24gPSAiZm9yIGRvY3VtZW50cyB3aXRoIENvbnRlbnQtRGlzcG9z
aXRpb246IGF0dGFjaG1lbnQuIjsKKyAgICAgICAgICAgIHJlYXNvbiA9ICJmb3IgZG9jdW1lbnRz
IHdpdGggQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudC4iX3M7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQotICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJodHRwLWVxdWl2ICci
ICsgZXF1aXYgKyAiJyBpcyBkaXNhYmxlZCAiICsgcmVhc29uOworICAgICAgICBTdHJpbmcgbWVz
c2FnZSA9IG1ha2VTdHJpbmcoImh0dHAtZXF1aXYgJyIsIGVxdWl2LCAiJyBpcyBkaXNhYmxlZCAi
LCByZWFzb24pOwogICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1
cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC01NDAzLDEwICs1NDAzLDEwIEBAIFN0cmluZyBEb2N1bWVudDo6ZG9tYWluKCkgY29u
c3QKIEV4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50OjpzZXREb21haW4oY29uc3QgU3RyaW5nJiBu
ZXdEb21haW4pCiB7CiAgICAgaWYgKCFmcmFtZSgpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgU2VjdXJpdHlFcnJvciwgIkEgYnJvd3NpbmcgY29udGV4dCBpcyByZXF1aXJlZCB0byBzZXQg
YSBkb21haW4uIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwg
IkEgYnJvd3NpbmcgY29udGV4dCBpcyByZXF1aXJlZCB0byBzZXQgYSBkb21haW4uIl9zIH07CiAK
ICAgICBpZiAoaXNTYW5kYm94ZWQoU2FuZGJveERvY3VtZW50RG9tYWluKSkKLSAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJBc3NpZ25tZW50IGlzIGZvcmJpZGRlbiBm
b3Igc2FuZGJveGVkIGlmcmFtZXMuIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2Vj
dXJpdHlFcnJvciwgIkFzc2lnbm1lbnQgaXMgZm9yYmlkZGVuIGZvciBzYW5kYm94ZWQgaWZyYW1l
cy4iX3MgfTsKIAogICAgIGlmIChMZWdhY3lTY2hlbWVSZWdpc3RyeTo6aXNEb21haW5SZWxheGF0
aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKHNlY3VyaXR5T3JpZ2luKCkucHJvdG9jb2woKSkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CkBAIC01NDE1LDEwICs1
NDE1LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50OjpzZXREb21haW4oY29uc3QgU3Ry
aW5nJiBuZXdEb21haW4pCiAKICAgICBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURvbWFpbiA9IGRv
bWFpbigpOwogICAgIGlmIChlZmZlY3RpdmVEb21haW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlRoZSBkb2N1bWVudCBoYXMgYSBudWxsIGVm
ZmVjdGl2ZURvbWFpbi4iIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVy
cm9yLCAiVGhlIGRvY3VtZW50IGhhcyBhIG51bGwgZWZmZWN0aXZlRG9tYWluLiJfcyB9OwogCiAg
ICAgaWYgKCFzZWN1cml0eU9yaWdpbigpLmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpblN1ZmZp
eChuZXdEb21haW4sIHNldHRpbmdzKCkudHJlYXRJUEFkZHJlc3NBc0RvbWFpbigpKSkKLSAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJBdHRlbXB0ZWQgdG8gdXNlIGEg
bm9uLXJlZ2lzdHJhYmxlIGRvbWFpbi4iIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
ZWN1cml0eUVycm9yLCAiQXR0ZW1wdGVkIHRvIHVzZSBhIG5vbi1yZWdpc3RyYWJsZSBkb21haW4u
Il9zIH07CiAKICAgICBzZWN1cml0eU9yaWdpbigpLnNldERvbWFpbkZyb21ET00obmV3RG9tYWlu
KTsKICAgICByZXR1cm4geyB9OwpAQCAtNTg3Nyw3ICs1ODc3LDcgQEAgc3RhdGljIEVkaXRvcjo6
Q29tbWFuZCBjb21tYW5kKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjb21tYW5k
TmFtZSwgYm8KIEV4Y2VwdGlvbk9yPGJvb2w+IERvY3VtZW50OjpleGVjQ29tbWFuZChjb25zdCBT
dHJpbmcmIGNvbW1hbmROYW1lLCBib29sIHVzZXJJbnRlcmZhY2UsIGNvbnN0IFN0cmluZyYgdmFs
dWUpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpc0hUTUxEb2N1bWVudCgpICYmICFpc1hIVE1MRG9j
dW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
ImV4ZWNDb21tYW5kIGlzIG9ubHkgc3VwcG9ydGVkIG9uIEhUTUwgZG9jdW1lbnRzLiIgfTsKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiZXhlY0NvbW1hbmQg
aXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBkb2N1bWVudHMuIl9zIH07CiAKICAgICBFdmVudFF1
ZXVlU2NvcGUgZXZlbnRRdWV1ZVNjb3BlOwogICAgIHJldHVybiBjb21tYW5kKHRoaXMsIGNvbW1h
bmROYW1lLCB1c2VySW50ZXJmYWNlKS5leGVjdXRlKHZhbHVlKTsKQEAgLTU4ODYsMzUgKzU4ODYs
MzUgQEAgRXhjZXB0aW9uT3I8Ym9vbD4gRG9jdW1lbnQ6OmV4ZWNDb21tYW5kKGNvbnN0IFN0cmlu
ZyYgY29tbWFuZE5hbWUsIGJvb2wgdXNlckludGUKIEV4Y2VwdGlvbk9yPGJvb2w+IERvY3VtZW50
OjpxdWVyeUNvbW1hbmRFbmFibGVkKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUpCiB7CiAgICAg
aWYgKFVOTElLRUxZKCFpc0hUTUxEb2N1bWVudCgpICYmICFpc1hIVE1MRG9jdW1lbnQoKSkpCi0g
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgInF1ZXJ5Q29tbWFu
ZEVuYWJsZWQgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBkb2N1bWVudHMuIiB9OworICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJxdWVyeUNvbW1hbmRFbmFi
bGVkIGlzIG9ubHkgc3VwcG9ydGVkIG9uIEhUTUwgZG9jdW1lbnRzLiJfcyB9OwogICAgIHJldHVy
biBjb21tYW5kKHRoaXMsIGNvbW1hbmROYW1lKS5pc0VuYWJsZWQoKTsKIH0KIAogRXhjZXB0aW9u
T3I8Ym9vbD4gRG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZEluZGV0ZXJtKGNvbnN0IFN0cmluZyYgY29t
bWFuZE5hbWUpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpc0hUTUxEb2N1bWVudCgpICYmICFpc1hI
VE1MRG9jdW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciwgInF1ZXJ5Q29tbWFuZEluZGV0ZXJtIGlzIG9ubHkgc3VwcG9ydGVkIG9uIEhUTUwgZG9j
dW1lbnRzLiIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCAicXVlcnlDb21tYW5kSW5kZXRlcm0gaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBkb2N1bWVu
dHMuIl9zIH07CiAgICAgcmV0dXJuIGNvbW1hbmQodGhpcywgY29tbWFuZE5hbWUpLnN0YXRlKCkg
PT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIEV4Y2VwdGlvbk9yPGJvb2w+IERvY3Vt
ZW50OjpxdWVyeUNvbW1hbmRTdGF0ZShjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQogewogICAg
IGlmIChVTkxJS0VMWSghaXNIVE1MRG9jdW1lbnQoKSAmJiAhaXNYSFRNTERvY3VtZW50KCkpKQot
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJxdWVyeUNvbW1h
bmRTdGF0ZSBpcyBvbmx5IHN1cHBvcnRlZCBvbiBIVE1MIGRvY3VtZW50cy4iIH07CisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgInF1ZXJ5Q29tbWFuZFN0YXRl
IGlzIG9ubHkgc3VwcG9ydGVkIG9uIEhUTUwgZG9jdW1lbnRzLiJfcyB9OwogICAgIHJldHVybiBj
b21tYW5kKHRoaXMsIGNvbW1hbmROYW1lKS5zdGF0ZSgpID09IFRyaVN0YXRlOjpUcnVlOwogfQog
CiBFeGNlcHRpb25Pcjxib29sPiBEb2N1bWVudDo6cXVlcnlDb21tYW5kU3VwcG9ydGVkKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpc0hUTUxEb2N1bWVu
dCgpICYmICFpc1hIVE1MRG9jdW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciwgInF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCBpcyBvbmx5IHN1cHBvcnRl
ZCBvbiBIVE1MIGRvY3VtZW50cy4iIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgInF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCBpcyBvbmx5IHN1cHBvcnRlZCBv
biBIVE1MIGRvY3VtZW50cy4iX3MgfTsKICAgICByZXR1cm4gY29tbWFuZCh0aGlzLCBjb21tYW5k
TmFtZSkuaXNTdXBwb3J0ZWQoKTsKIH0KIAogRXhjZXB0aW9uT3I8U3RyaW5nPiBEb2N1bWVudDo6
cXVlcnlDb21tYW5kVmFsdWUoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkKIHsKICAgICBpZiAo
VU5MSUtFTFkoIWlzSFRNTERvY3VtZW50KCkgJiYgIWlzWEhUTUxEb2N1bWVudCgpKSkKLSAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAicXVlcnlDb21tYW5kVmFs
dWUgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBkb2N1bWVudHMuIiB9OworICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJxdWVyeUNvbW1hbmRWYWx1ZSBpcyBv
bmx5IHN1cHBvcnRlZCBvbiBIVE1MIGRvY3VtZW50cy4iX3MgfTsKICAgICByZXR1cm4gY29tbWFu
ZCh0aGlzLCBjb21tYW5kTmFtZSkudmFsdWUoKTsKIH0KIApAQCAtODI1OSw3ICs4MjU5LDcgQEAg
dm9pZCBEb2N1bWVudDo6dXBkYXRlUmVzaXplT2JzZXJ2YXRpb25zKFBhZ2UmIHBhZ2UpCiAgICAg
ICAgIHVuc2lnbmVkIGxpbmUgPSAwOwogICAgICAgICB1bnNpZ25lZCBjb2x1bW4gPSAwOwogICAg
ICAgICBnZXRQYXJzZXJMb2NhdGlvbih1cmwsIGxpbmUsIGNvbHVtbik7Ci0gICAgICAgIHJlcG9y
dEV4Y2VwdGlvbigiUmVzaXplT2JzZXJ2ZXIgbG9vcCBjb21wbGV0ZWQgd2l0aCB1bmRlbGl2ZXJl
ZCBub3RpZmljYXRpb25zLiIsIGxpbmUsIGNvbHVtbiwgdXJsLCBudWxscHRyLCBudWxscHRyKTsK
KyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCJSZXNpemVPYnNlcnZlciBsb29wIGNvbXBsZXRlZCB3
aXRoIHVuZGVsaXZlcmVkIG5vdGlmaWNhdGlvbnMuIl9zLCBsaW5lLCBjb2x1bW4sIHVybCwgbnVs
bHB0ciwgbnVsbHB0cik7CiAgICAgICAgIC8vIFN0YXJ0aW5nIGEgbmV3IHNjaGVkdWxlIHRoZSBu
ZXh0IHJvdW5kIG9mIG5vdGlmeS4KICAgICAgICAgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVu
ZGVyaW5nVXBkYXRlU3RlcDo6UmVzaXplT2JzZXJ2YXRpb25zKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKaW5kZXggYjk5N2JmZDBmZGI5ZmVlZjQ0M2Y4YjNjY2E0ZDIwZTYxYzBiN2M5Yy4u
NGIwMmEyNjg2NmZjZmVjODg0ZDMwMjg4MzRiNDExMDQ4YmRjMmMzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtMzI4NSw4ICszMjg1LDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gRWxlbWVudDo6
c2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCkKICAgICBSZWZQdHIgcGFyZW50ID0gcGFy
ZW50RWxlbWVudCgpOwogICAgIGlmIChVTkxJS0VMWSghcGFyZW50KSkgewogICAgICAgICBpZiAo
IXBhcmVudE5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNh
dGlvbkFsbG93ZWRFcnJvciwgIkNhbm5vdCBzZXQgb3V0ZXJIVE1MIG9uIGVsZW1lbnQgYmVjYXVz
ZSBpdCBkb2Vzbid0IGhhdmUgYSBwYXJlbnQiIH07Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciwgIkNhbm5vdCBzZXQgb3V0ZXJIVE1MIG9uIGVs
ZW1lbnQgYmVjYXVzZSBpdHMgcGFyZW50IGlzIG5vdCBhbiBFbGVtZW50IiB9OworICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yLCAiQ2Fubm90
IHNldCBvdXRlckhUTUwgb24gZWxlbWVudCBiZWNhdXNlIGl0IGRvZXNuJ3QgaGF2ZSBhIHBhcmVu
dCJfcyB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2Vk
RXJyb3IsICJDYW5ub3Qgc2V0IG91dGVySFRNTCBvbiBlbGVtZW50IGJlY2F1c2UgaXRzIHBhcmVu
dCBpcyBub3QgYW4gRWxlbWVudCJfcyB9OwogICAgIH0KIAogICAgIFJlZlB0cjxOb2RlPiBwcmV2
ID0gcHJldmlvdXNTaWJsaW5nKCk7CkBAIC00Njk3LDcgKzQ2OTcsNyBAQCBFbGVtZW50KiBFbGVt
ZW50OjpmaW5kQW5jaG9yRWxlbWVudEZvckxpbmsoU3RyaW5nJiBvdXRBbmNob3JOYW1lKQogCiBF
eGNlcHRpb25PcjxSZWY8V2ViQW5pbWF0aW9uPj4gRWxlbWVudDo6YW5pbWF0ZShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0
PiYmIGtleWZyYW1lcywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8ZG91YmxlLCBLZXlmcmFt
ZUFuaW1hdGlvbk9wdGlvbnM+PiYmIG9wdGlvbnMpCiB7Ci0gICAgU3RyaW5nIGlkID0gIiI7Cisg
ICAgU3RyaW5nIGlkID0gZW1wdHlTdHJpbmcoKTsKICAgICBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxB
bmltYXRpb25UaW1lbGluZT4+IHRpbWVsaW5lOwogICAgIHN0ZDo6dmFyaWFudDxGcmFtZXNQZXJT
ZWNvbmQsIEFuaW1hdGlvbkZyYW1lUmF0ZVByZXNldD4gZnJhbWVSYXRlID0gQW5pbWF0aW9uRnJh
bWVSYXRlUHJlc2V0OjpBdXRvOwogICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PGRvdWJs
ZSwgS2V5ZnJhbWVFZmZlY3RPcHRpb25zPj4ga2V5ZnJhbWVFZmZlY3RPcHRpb25zOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vSW1hZ2VPdmVybGF5LmNwcAppbmRleCA4OGI5Njg1M2NlMTc5YjlmZmRjYTU0NjYzMmJk
M2E2Njk0YjFmNTc3Li4wNTdmMjBmOGJjNTlkMzIzYTRkMmMxZjE1YjU3NThlZDk3NjQ2MzlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNwcApAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQg
dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChIVE1MRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgVGV4dFJlY29nbml0aW9uCiAKICAgICAgICAgICAgIEZsb2F0U2l6ZSB0YXJnZXRTaXplIHsg
aG9yaXpvbnRhbEV4dGVudCAtIGhvcml6b250YWxPZmZzZXQsIGxpbmVCb3VuZHMuc2l6ZS5oZWln
aHQoKSB9OwogICAgICAgICAgICAgaWYgKHRhcmdldFNpemUuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICAgICAgdGV4dENvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eVRyYW5zZm9ybSwgInNjYWxlKDAsIDApIik7CisgICAgICAgICAgICAgICAgdGV4dENvbnRhaW5l
ci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSwgInNjYWxlKDAs
IDApIl9zKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIApAQCAt
NTQ2LDcgKzU0Niw3IEBAIHZvaWQgdXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChIVE1M
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uCiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmIChzaXplQmVmb3JlVHJhbnNmb3JtLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgICAgIHRleHRDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlUcmFuc2Zvcm0sICJzY2FsZSgwLCAwKSIpOworICAgICAgICAgICAgICAgIHRleHRDb250YWlu
ZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0sICJzY2FsZSgw
LCAwKSJfcyk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAppbmRleCBiMWFmNDVmN2VjMmYxMGQyZTBkMjRjYzgwYzU3MGE2MWMzZGQ5MWM2
Li5kMmUyN2Q4NDkwMWQ1NTk5Mjk0NThjNDY3ZDkxZjdmNjRhN2I4MDMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCkBAIC0xOTMwLDcgKzE5MzAsNyBAQCB2b2lkIE5vZGU6OnNob3dUcmVlRm9yVGhpc0Fjcm9z
c0ZyYW1lKCkgY29uc3QKICAgICBOb2RlKiByb290Tm9kZSA9IGNvbnN0X2Nhc3Q8Tm9kZSo+KHRo
aXMpOwogICAgIHdoaWxlIChwYXJlbnRPclNoYWRvd0hvc3RPckZyYW1lT3duZXIocm9vdE5vZGUp
KQogICAgICAgICByb290Tm9kZSA9IHBhcmVudE9yU2hhZG93SG9zdE9yRnJhbWVPd25lcihyb290
Tm9kZSk7Ci0gICAgc2hvd1N1YlRyZWVBY3Jvc3NGcmFtZShyb290Tm9kZSwgdGhpcywgIiIpOwor
ICAgIHNob3dTdWJUcmVlQWNyb3NzRnJhbWUocm9vdE5vZGUsIHRoaXMsIGVtcHR5U3RyaW5nKCkp
OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFRSRUVfREVCVUdHSU5HKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAppbmRleCAxOGQ4NzcyYmVlYTRiMzY4YmVm
NDM5YzllZjU5OGEwMWNjNmY5NzM3Li4wMWE2MjQwZDRjMzI5NGIxMmY4MTBiZDZkMWQzMmU0Mjlj
MDkzZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNw
cApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHls
ZVNoZWV0KCkKICAgICAgICAgYXV0byBhdHRyaWJ1dGVzID0gcGFyc2VBdHRyaWJ1dGVzKGRhdGEo
KSk7CiAgICAgICAgIGlmICghYXR0cmlidXRlcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgU3RyaW5nIHR5cGUgPSBhdHRyaWJ1dGVzLT5nZXQoInR5cGUiKTsKKyAgICAgICAgU3RyaW5n
IHR5cGUgPSBhdHRyaWJ1dGVzLT5nZXQoInR5cGUiX3MpOwogCiAgICAgICAgIG1faXNDU1MgPSB0
eXBlLmlzRW1wdHkoKSB8fCB0eXBlID09ICJ0ZXh0L2NzcyI7CiAjaWYgRU5BQkxFKFhTTFQpCkBA
IC0xMDMsMTEgKzEwMywxMSBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHls
ZVNoZWV0KCkKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFN0cmluZyBo
cmVmID0gYXR0cmlidXRlcy0+Z2V0KCJocmVmIik7Ci0gICAgICAgIFN0cmluZyBhbHRlcm5hdGUg
PSBhdHRyaWJ1dGVzLT5nZXQoImFsdGVybmF0ZSIpOworICAgICAgICBTdHJpbmcgaHJlZiA9IGF0
dHJpYnV0ZXMtPmdldCgiaHJlZiJfcyk7CisgICAgICAgIFN0cmluZyBhbHRlcm5hdGUgPSBhdHRy
aWJ1dGVzLT5nZXQoImFsdGVybmF0ZSJfcyk7CiAgICAgICAgIG1fYWx0ZXJuYXRlID0gYWx0ZXJu
YXRlID09ICJ5ZXMiOwotICAgICAgICBtX3RpdGxlID0gYXR0cmlidXRlcy0+Z2V0KCJ0aXRsZSIp
OwotICAgICAgICBtX21lZGlhID0gYXR0cmlidXRlcy0+Z2V0KCJtZWRpYSIpOworICAgICAgICBt
X3RpdGxlID0gYXR0cmlidXRlcy0+Z2V0KCJ0aXRsZSJfcyk7CisgICAgICAgIG1fbWVkaWEgPSBh
dHRyaWJ1dGVzLT5nZXQoIm1lZGlhIl9zKTsKIAogICAgICAgICBpZiAobV9hbHRlcm5hdGUgJiYg
bV90aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTYsNyArMTU2LDcg
QEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCiAgICAgICAg
ICAgICB9IGVsc2UKICNlbmRpZgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFN0cmlu
ZyBjaGFyc2V0ID0gYXR0cmlidXRlcy0+Z2V0KCJjaGFyc2V0Iik7CisgICAgICAgICAgICAgICAg
U3RyaW5nIGNoYXJzZXQgPSBhdHRyaWJ1dGVzLT5nZXQoImNoYXJzZXQiX3MpOwogICAgICAgICAg
ICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGRvY3VtZW50KCkuY29tcGxldGVV
UkwoaHJlZiksIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRp
b25zKCksIHN0ZDo6bnVsbG9wdCwgY2hhcnNldC5pc0VtcHR5KCkgPyBkb2N1bWVudCgpLmNoYXJz
ZXQoKSA6IFdURk1vdmUoY2hhcnNldCkpOwogCiAgICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVl
dCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVl
dChXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Vmlld3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IGQ0NjNkZTAzYTQyZGUxNDhhYjZlYjc3NTQwNjdl
ZjdlZDU2NGJhN2QuLjgzNjA2YTdhZjUwNGZmMDYzYmMxODJkZjg0ZmE2ODIxMTYyZWNjNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcApAQCAtMzk2LDEzICszOTYs
MTMgQEAgc3RhdGljIFZpZXdwb3J0Rml0IHBhcnNlVmlld3BvcnRGaXRWYWx1ZShTdHJpbmdWaWV3
IGtleSwgU3RyaW5nVmlldyB2YWx1ZSwgY29uc3QKICAgICByZXR1cm4gVmlld3BvcnRGaXQ6OkF1
dG87CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiB2aWV3cG9ydEVycm9yTWVzc2FnZVRlbXBsYXRl
KFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSkKK3N0YXRpYyBBU0NJSUxpdGVyYWwgdmlld3Bv
cnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCiB7Ci0g
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVycm9yc1tdID0gewotICAgICAgICAiVmlld3Bv
cnQgYXJndW1lbnQga2V5IFwiJXJlcGxhY2VtZW50MVwiIG5vdCByZWNvZ25pemVkIGFuZCBpZ25v
cmVkLiIsCi0gICAgICAgICJWaWV3cG9ydCBhcmd1bWVudCB2YWx1ZSBcIiVyZXBsYWNlbWVudDFc
IiBmb3Iga2V5IFwiJXJlcGxhY2VtZW50MlwiIGlzIGludmFsaWQsIGFuZCBoYXMgYmVlbiBpZ25v
cmVkLiIsCi0gICAgICAgICJWaWV3cG9ydCBhcmd1bWVudCB2YWx1ZSBcIiVyZXBsYWNlbWVudDFc
IiBmb3Iga2V5IFwiJXJlcGxhY2VtZW50MlwiIHdhcyB0cnVuY2F0ZWQgdG8gaXRzIG51bWVyaWMg
cHJlZml4LiIsCi0gICAgICAgICJWaWV3cG9ydCBtYXhpbXVtLXNjYWxlIGNhbm5vdCBiZSBsYXJn
ZXIgdGhhbiAxMC4wLiBUaGUgbWF4aW11bS1zY2FsZSB3aWxsIGJlIHNldCB0byAxMC4wLiIKKyAg
ICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBlcnJvcnNbXSA9IHsKKyAgICAgICAgIlZp
ZXdwb3J0IGFyZ3VtZW50IGtleSBcIiVyZXBsYWNlbWVudDFcIiBub3QgcmVjb2duaXplZCBhbmQg
aWdub3JlZC4iX3MsCisgICAgICAgICJWaWV3cG9ydCBhcmd1bWVudCB2YWx1ZSBcIiVyZXBsYWNl
bWVudDFcIiBmb3Iga2V5IFwiJXJlcGxhY2VtZW50MlwiIGlzIGludmFsaWQsIGFuZCBoYXMgYmVl
biBpZ25vcmVkLiJfcywKKyAgICAgICAgIlZpZXdwb3J0IGFyZ3VtZW50IHZhbHVlIFwiJXJlcGxh
Y2VtZW50MVwiIGZvciBrZXkgXCIlcmVwbGFjZW1lbnQyXCIgd2FzIHRydW5jYXRlZCB0byBpdHMg
bnVtZXJpYyBwcmVmaXguIl9zLAorICAgICAgICAiVmlld3BvcnQgbWF4aW11bS1zY2FsZSBjYW5u
b3QgYmUgbGFyZ2VyIHRoYW4gMTAuMC4gVGhlIG1heGltdW0tc2NhbGUgd2lsbCBiZSBzZXQgdG8g
MTAuMC4iX3MKICAgICB9OwogCiAgICAgcmV0dXJuIGVycm9yc1tlcnJvckNvZGVdOwpAQCAtNDMz
LDcgKzQzMyw3IEBAIHN0YXRpYyBTdHJpbmcgdmlld3BvcnRFcnJvck1lc3NhZ2UoVmlld3BvcnRF
cnJvckNvZGUgZXJyb3JDb2RlLCBTdHJpbmdWaWV3IHJlcGxhCiAgICAgICAgIG1lc3NhZ2UucmVw
bGFjZSgiJXJlcGxhY2VtZW50MiIsIHJlcGxhY2VtZW50Mi50b1N0cmluZ1dpdGhvdXRDb3B5aW5n
KCkpOwogCiAgICAgaWYgKChlcnJvckNvZGUgPT0gVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVu
dFZhbHVlRXJyb3IgfHwgZXJyb3JDb2RlID09IFRydW5jYXRlZFZpZXdwb3J0QXJndW1lbnRWYWx1
ZUVycm9yKSAmJiByZXBsYWNlbWVudDEuY29udGFpbnMoJzsnKSkKLSAgICAgICAgbWVzc2FnZS5h
cHBlbmQoIiBOb3RlIHRoYXQgJzsnIGlzIG5vdCBhIHNlcGFyYXRvciBpbiB2aWV3cG9ydCB2YWx1
ZXMuIFRoZSBsaXN0IHNob3VsZCBiZSBjb21tYS1zZXBhcmF0ZWQuIik7CisgICAgICAgIG1lc3Nh
Z2UuYXBwZW5kKCIgTm90ZSB0aGF0ICc7JyBpcyBub3QgYSBzZXBhcmF0b3IgaW4gdmlld3BvcnQg
dmFsdWVzLiBUaGUgbGlzdCBzaG91bGQgYmUgY29tbWEtc2VwYXJhdGVkLiJfcyk7CiAKICAgICBy
ZXR1cm4gbWVzc2FnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBjYzk1ZDUy
MWZkODMwM2Q5NTVjZWJhY2RhNDExNzcwNjMzZjAxMWM0Li4wMTgwODZkM2NjYjBiMmIwYmIzMjgy
MzQ3Y2M4YmMzYWM2NzQ3ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xOTAz
LDEyICsxOTAzLDEyIEBAIHZvaWQgRWRpdG9yOjpkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCgpCiAKIHZvaWQgRWRpdG9yOjp0b2dnbGVCb2xkKCkKIHsKLSAgICBjb21tYW5kKCJUb2dnbGVC
b2xkIikuZXhlY3V0ZSgpOworICAgIGNvbW1hbmQoIlRvZ2dsZUJvbGQiX3MpLmV4ZWN1dGUoKTsK
IH0KIAogdm9pZCBFZGl0b3I6OnRvZ2dsZVVuZGVybGluZSgpCiB7Ci0gICAgY29tbWFuZCgiVG9n
Z2xlVW5kZXJsaW5lIikuZXhlY3V0ZSgpOworICAgIGNvbW1hbmQoIlRvZ2dsZVVuZGVybGluZSJf
cykuZXhlY3V0ZSgpOwogfQogCiB2b2lkIEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24o
V3JpdGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC0xOTI1LDcgKzE5MjUsNyBAQCB2b2lkIEVk
aXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24p
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byYgZm9jdXNlZEZvcm1FbGVtZW50
ID0gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpmb2N1c2VkRWxlbWVudCk7
Ci0gICAgICAgIGF1dG8gZGlyZWN0aW9uVmFsdWUgPSBkaXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVj
dGlvbjo6TGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOworICAgICAgICBhdXRvIGRpcmVjdGlv
blZhbHVlID0gZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0ID8gImx0
ciJfcyA6ICJydGwiX3M7CiAgICAgICAgIGF1dG8gd3JpdGluZ0RpcmVjdGlvbklucHV0VHlwZU5h
bWUgPSBpbnB1dFR5cGVOYW1lRm9yRWRpdGluZ0FjdGlvbihFZGl0QWN0aW9uOjpTZXRCbG9ja1dy
aXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBpZiAoIWRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudChm
b2N1c2VkRm9ybUVsZW1lbnQsIHdyaXRpbmdEaXJlY3Rpb25JbnB1dFR5cGVOYW1lLCBkaXJlY3Rp
b25WYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xOTM3LDcgKzE5MzcsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXJlY3Rp
b24pCiAgICAgfQogCiAgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNy
ZWF0ZSgpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGly
ZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0ID8gImx0ciIgOiBkaXJlY3Rp
b24gPT0gV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRUb0xlZnQgPyAicnRsIiA6ICJpbmhlcml0Iiwg
ZmFsc2UpOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGly
ZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0ID8gImx0ciJfcyA6IGRpcmVj
dGlvbiA9PSBXcml0aW5nRGlyZWN0aW9uOjpSaWdodFRvTGVmdCA/ICJydGwiX3MgOiAiaW5oZXJp
dCJfcywgZmFsc2UpOwogICAgIGFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5w
dHIoKSwgRWRpdEFjdGlvbjo6U2V0QmxvY2tXcml0aW5nRGlyZWN0aW9uKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggNjFhMWVhNmI5NzU3YzdiYjc1
NWY5NDJkZWFjODgwMTE1ZTdkNGRhYy4uYjAzZjkzZDkwYzM3MmExMDg2NGRiZDUzMmRiMDliZDJk
M2U0Y2ZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0x
MTYsNyArMTE2LDcgQEAgc3RhdGljIGJvb2wgYXBwbHlDb21tYW5kVG9GcmFtZShGcmFtZSYgZnJh
bWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWMKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXN0YXRpYyBib29sIGlzU3R5bGVQcmVzZW50KEVkaXRvciYgZWRpdG9yLCBDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqIG9uVmFsdWUpCitzdGF0aWMgYm9vbCBpc1N0
eWxlUHJlc2VudChFZGl0b3ImIGVkaXRvciwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBBU0NJ
SUxpdGVyYWwgb25WYWx1ZSkKIHsKICAgICAvLyBTdHlsZSBpcyBjb25zaWRlcmVkIHByZXNlbnQg
d2hlbgogICAgIC8vIE1hYzogcHJlc2VudCBhdCB0aGUgYmVnaW5uaW5nIG9mIHNlbGVjdGlvbgpA
QCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVBcHBseVN0eWxlKEZyYW1lJiBm
cmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3RpCiAgICAgcmV0dXJuIGFw
cGx5Q29tbWFuZFRvRnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBFZGl0aW5nU3R5bGU6OmNy
ZWF0ZShwcm9wZXJ0eUlELCBwcm9wZXJ0eVZhbHVlKSk7CiB9CiAKLXN0YXRpYyBib29sIGV4ZWN1
dGVUb2dnbGVTdHlsZShGcmFtZSYgZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBF
ZGl0QWN0aW9uIGFjdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBjaGFyKiBv
ZmZWYWx1ZSwgY29uc3QgY2hhciogb25WYWx1ZSkKK3N0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVT
dHlsZShGcmFtZSYgZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9u
IGFjdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBBU0NJSUxpdGVyYWwgb2ZmVmFsdWUs
IEFTQ0lJTGl0ZXJhbCBvblZhbHVlKQogewogICAgIGJvb2wgc3R5bGVJc1ByZXNlbnQgPSBpc1N0
eWxlUHJlc2VudChmcmFtZS5lZGl0b3IoKSwgcHJvcGVydHlJRCwgb25WYWx1ZSk7CiAgICAgcmV0
dXJuIGFwcGx5Q29tbWFuZFRvRnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBFZGl0aW5nU3R5
bGU6OmNyZWF0ZShwcm9wZXJ0eUlELCBzdHlsZUlzUHJlc2VudCA/IG9mZlZhbHVlIDogb25WYWx1
ZSkpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3Jh
bnVsYXJpdHkoRnJhbWUmIGZyYW1lLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlKEZyYW1lJiBmcmFtZSwg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBjaGFyKiBkZXNpcmVkVmFsdWUpCitzdGF0
aWMgVHJpU3RhdGUgc3RhdGVTdHlsZShGcmFtZSYgZnJhbWUsIENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCwgQVNDSUlMaXRlcmFsIGRlc2lyZWRWYWx1ZSkKIHsKICAgICBpZiAoZnJhbWUuZWRpdG9y
KCkuYmVoYXZpb3IoKS5zaG91bGRUb2dnbGVTdHlsZUJhc2VkT25TdGFydE9mU2VsZWN0aW9uKCkp
CiAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKHBy
b3BlcnR5SUQsIGRlc2lyZWRWYWx1ZSkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxz
ZTsKQEAgLTEwODUsNyArMTA4NSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVTZXRNYXJrKEZyYW1l
JiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBUZXh0RGVjb3JhdGlvbkNoYW5nZSB0ZXh0RGVjb3JhdGlv
bkNoYW5nZUZvclRvZ2dsaW5nKEVkaXRvciYgZWRpdG9yLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SUQsIGNvbnN0IGNoYXIqIG9uVmFsdWUpCitzdGF0aWMgVGV4dERlY29yYXRpb25DaGFuZ2UgdGV4
dERlY29yYXRpb25DaGFuZ2VGb3JUb2dnbGluZyhFZGl0b3ImIGVkaXRvciwgQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlELCBBU0NJSUxpdGVyYWwgb25WYWx1ZSkKIHsKICAgICByZXR1cm4gaXNTdHls
ZVByZXNlbnQoZWRpdG9yLCBwcm9wZXJ0eUlELCBvblZhbHVlKSA/IFRleHREZWNvcmF0aW9uQ2hh
bmdlOjpSZW1vdmUgOiBUZXh0RGVjb3JhdGlvbkNoYW5nZTo6QWRkOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKaW5kZXggNTk2N2Q0
NGNmOWYwNzRlMDUwODBjNmRlZWY3YjEzZDcyYzVhYmJlNi4uM2UzMzczYWMzZjZmZDMxYTBhYzA0
ZDQ2MWRhOGM2NzEzOWEwMDA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0lu
c2VydExpbmVCcmVha0NvbW1hbmQuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgSW5zZXJ0TGlu
ZUJyZWFrQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgaWYgKHNob3VsZFVzZUJyZWFrRWxlbWVudChw
b3NpdGlvbikpCiAgICAgICAgIG5vZGVUb0luc2VydCA9IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCgpKTsKICAgICBlbHNlCi0gICAgICAgIG5vZGVUb0luc2VydCA9IGRvY3VtZW50KCku
Y3JlYXRlVGV4dE5vZGUoIlxuIik7CisgICAgICAgIG5vZGVUb0luc2VydCA9IGRvY3VtZW50KCku
Y3JlYXRlVGV4dE5vZGUoIlxuIl9zKTsKICAgICAKICAgICAvLyBGSVhNRTogTmVlZCB0byBtZXJn
ZSB0ZXh0IG5vZGVzIHdoZW4gaW5zZXJ0aW5nIGp1c3QgYWZ0ZXIgb3IgYmVmb3JlIHRleHQuCiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCmluZGV4
IDYxYTc3ZjUxMGZmMjJmN2VhYzhlY2VlOGZiM2E0MzIzNzA5M2JlNzkuLjcxZmNhMjM1ZWFlZWI1
ZGUzZmM0YWRjZDMxNjkxMzE5MWI4ZmVjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0VGV4dENvbW1hbmQuY3BwCkBAIC0yNDgsNyArMjQ4LDcgQEAgUG9zaXRpb24gSW5zZXJ0
VGV4dENvbW1hbmQ6Omluc2VydFRhYihjb25zdCBQb3NpdGlvbiYgcG9zKQogICAgIC8vIGtlZXAg
dGFicyBjb2FsZXNjZWQgaW4gdGFiIHNwYW4KICAgICBpZiAoaXNUYWJTcGFuVGV4dE5vZGUobm9k
ZSkpIHsKICAgICAgICAgUmVmPFRleHQ+IHRleHROb2RlID0gZG93bmNhc3Q8VGV4dD4oKm5vZGUp
OwotICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUodGV4dE5vZGUsIG9mZnNldCwgIlx0Iik7Cisg
ICAgICAgIGluc2VydFRleHRJbnRvTm9kZSh0ZXh0Tm9kZSwgb2Zmc2V0LCAiXHQiX3MpOwogICAg
ICAgICByZXR1cm4gUG9zaXRpb24odGV4dE5vZGUucHRyKCksIG9mZnNldCArIDEpOwogICAgIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAKaW5kZXggZmMzNmI2MzRmYzBmMjk4N2E4Mjc4N2E3NjljYmIzN2Y1MGQxMzA2Ni4u
MzBiYTNmMzgyZDM4MmE3MzUxNjJhMTczNjQwNTUyOWI2OTk1YzlhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTcxNiw5
ICs3MTYsOSBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRT
dHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKEluc2VydAogCiAgICAgICAgICAgICAvLyBNdXRh
dGUgdXNpbmcgdGhlIENTU09NIHdyYXBwZXIgc28gd2UgZ2V0IHRoZSBzYW1lIGV2ZW50IGJlaGF2
aW9yIGFzIGEgc2NyaXB0LgogICAgICAgICAgICAgaWYgKGlzQmxvY2soZWxlbWVudCkpCi0gICAg
ICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NT
UHJvcGVydHlEaXNwbGF5LCAiaW5saW5lIiwgZmFsc2UpOworICAgICAgICAgICAgICAgIGVsZW1l
bnQtPmNzc29tU3R5bGUoKS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RGlzcGxheSwg
ImlubGluZSJfcywgZmFsc2UpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVyKCkg
JiYgZWxlbWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKS5pc0Zsb2F0aW5nKCkpCi0gICAgICAgICAg
ICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVy
dHlGbG9hdCwgIm5vbmUiLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21T
dHlsZSgpLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgIm5vbmUiX3MsIGZh
bHNlKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE1OTQsMTEgKzE1OTQsMTEgQEAgdm9pZCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6YWRkU3BhY2VzRm9yU21hcnRSZXBsYWNlKCkKICAgICBp
ZiAobmVlZHNUcmFpbGluZ1NwYWNlICYmIGVuZE5vZGUpIHsKICAgICAgICAgYm9vbCBjb2xsYXBz
ZVdoaXRlU3BhY2UgPSAhZW5kTm9kZS0+cmVuZGVyZXIoKSB8fCBlbmROb2RlLT5yZW5kZXJlcigp
LT5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpOwogICAgICAgICBpZiAoaXM8VGV4dD4oKmVu
ZE5vZGUpKSB7Ci0gICAgICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUoZG93bmNhc3Q8VGV4dD4o
KmVuZE5vZGUpLCBlbmRPZmZzZXQsIGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3Bh
Y2VTdHJpbmcoKSA6ICIgIik7CisgICAgICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUoZG93bmNh
c3Q8VGV4dD4oKmVuZE5vZGUpLCBlbmRPZmZzZXQsIGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJy
ZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIgIl9zKTsKICAgICAgICAgICAgIGlmIChtX2VuZE9mSW5z
ZXJ0ZWRDb250ZW50LmNvbnRhaW5lck5vZGUoKSA9PSBlbmROb2RlKQogICAgICAgICAgICAgICAg
IG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQubW92ZVRvT2Zmc2V0KG1fZW5kT2ZJbnNlcnRlZENvbnRl
bnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgKyAxKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGF1dG8gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKGNvbGxh
cHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIgIik7CisgICAgICAg
ICAgICBhdXRvIG5vZGUgPSBkb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBz
ZVdoaXRlU3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICJfcyk7CiAgICAgICAg
ICAgICBpbnNlcnROb2RlQWZ0ZXIobm9kZS5jb3B5UmVmKCksICplbmROb2RlKTsKICAgICAgICAg
ICAgIHVwZGF0ZU5vZGVzSW5zZXJ0ZWQobm9kZS5wdHIoKSk7CiAgICAgICAgIH0KQEAgLTE2MTgs
MTEgKzE2MTgsMTEgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6YWRkU3BhY2VzRm9y
U21hcnRSZXBsYWNlKCkKICAgICBpZiAobmVlZHNMZWFkaW5nU3BhY2UgJiYgc3RhcnROb2RlKSB7
CiAgICAgICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlID0gIXN0YXJ0Tm9kZS0+cmVuZGVyZXIo
KSB8fCBzdGFydE5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCk7
CiAgICAgICAgIGlmIChpczxUZXh0Pigqc3RhcnROb2RlKSkgewotICAgICAgICAgICAgaW5zZXJ0
VGV4dEludG9Ob2RlKGRvd25jYXN0PFRleHQ+KCpzdGFydE5vZGUpLCBzdGFydE9mZnNldCwgY29s
bGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIDogIiAiKTsKKyAgICAg
ICAgICAgIGluc2VydFRleHRJbnRvTm9kZShkb3duY2FzdDxUZXh0Pigqc3RhcnROb2RlKSwgc3Rh
cnRPZmZzZXQsIGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6
ICIgIl9zKTsKICAgICAgICAgICAgIGlmIChtX2VuZE9mSW5zZXJ0ZWRDb250ZW50LmNvbnRhaW5l
ck5vZGUoKSA9PSBzdGFydE5vZGUgJiYgbV9lbmRPZkluc2VydGVkQ29udGVudC5vZmZzZXRJbkNv
bnRhaW5lck5vZGUoKSkKICAgICAgICAgICAgICAgICBtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm1v
dmVUb09mZnNldChtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm9mZnNldEluQ29udGFpbmVyTm9kZSgp
ICsgMSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIG5vZGUgPSBkb2N1bWVu
dCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3BhY2UgPyBub25CcmVha2lu
Z1NwYWNlU3RyaW5nKCkgOiAiICIpOworICAgICAgICAgICAgYXV0byBub2RlID0gZG9jdW1lbnQo
KS5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoY29sbGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdT
cGFjZVN0cmluZygpIDogIiAiX3MpOwogICAgICAgICAgICAgLy8gRG9uJ3QgdXBkYXRlTm9kZXNJ
bnNlcnRlZC4gRG9pbmcgc28gd291bGQgc2V0IG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQgdG8gYmUg
dGhlIG5vZGUgY29udGFpbmluZyB0aGUgbGVhZGluZyBzcGFjZSwKICAgICAgICAgICAgIC8vIGJ1
dCBtX2VuZE9mSW5zZXJ0ZWRDb250ZW50IGlzIHN1cHBvc2VkIHRvIG1hcmsgdGhlIGVuZCBvZiBw
YXN0ZWQgY29udGVudC4KICAgICAgICAgICAgIGluc2VydE5vZGVCZWZvcmUobm9kZSwgKnN0YXJ0
Tm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXIuY3BwCmluZGV4IGM1YjJiMmQ1OTViNzc3MjQ5MGZhOGY2MDMzNDMzMTgzZTJh
OThlZTAuLjAxYzZlZWFlOTE2ZWE1YWEyMzQyM2VmMzEyM2ExN2MwZGRiMjZmMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIu
Y3BwCkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
b2JzZXJ2ZVBhcmFncmFwaHMoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdAogCiAgICAgICAg
IGlmIChjb250ZW50LmlzUmVwbGFjZWRDb250ZW50KSB7CiAgICAgICAgICAgICBpZiAoIXVuaXRz
SW5DdXJyZW50UGFyYWdyYXBoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICB1bml0c0luQ3Vy
cmVudFBhcmFncmFwaC5hcHBlbmQoTWFuaXB1bGF0aW9uVW5pdCB7ICpjb250ZW50Tm9kZSwgeyBN
YW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVyYXRlKCksICJbXSIsIHRv
a2VuSW5mbyhjb250ZW50Lm5vZGUuZ2V0KCkpLCB0cnVlIH0gfSB9KTsKKyAgICAgICAgICAgICAg
ICB1bml0c0luQ3VycmVudFBhcmFncmFwaC5hcHBlbmQoTWFuaXB1bGF0aW9uVW5pdCB7ICpjb250
ZW50Tm9kZSwgeyBNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVyYXRl
KCksICJbXSJfcywgdG9rZW5JbmZvKGNvbnRlbnQubm9kZS5nZXQoKSksIHRydWUgfSB9IH0pOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VHlwaW5nQ29tbWFuZC5jcHAKaW5kZXggMjI3MmViYjMwZGU3OTIxNjM2NmZiMTE5MzY1ODFiOTI1
OGJkY2ExZS4uOWU3YzBhYzRhNGFkOTA1NGRmM2U0MjE3MDgwZjQyOTE1YjNhMTgwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC01NTcsNyArNTU3LDcgQEAg
dm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWtBbmROb3RpZnlBY2Nlc3NpYmlsaXR5
KCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5UmVwbGFjZWRUZXh0IHJlcGxhY2VkVGV4dChkb2N1bWVu
dCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAgICBpbnNlcnRMaW5lQnJlYWsoKTsKLSAg
ICByZXBsYWNlZFRleHQucG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihkb2N1bWVudCgp
LmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpLCBBWFRleHRFZGl0VHlwZVR5cGluZywgIlxuIiwgZG9j
dW1lbnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CisgICAgcmVwbGFjZWRUZXh0LnBvc3RU
ZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2Fj
aGUoKSwgQVhUZXh0RWRpdFR5cGVUeXBpbmcsICJcbiJfcywgZG9jdW1lbnQoKS5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKSk7CiAgICAgY29tcG9zaXRpb24oKS0+c2V0UmFuZ2VEZWxldGVkQnlVbmFw
cGx5KHJlcGxhY2VkVGV4dC5yZXBsYWNlZFJhbmdlKCkpOwogfQogCkBAIC01NzcsNyArNTc3LDcg
QEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JBbmROb3RpZnlB
Y2Nlc3NpYmlsaXR5KCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5UmVwbGFjZWRUZXh0IHJlcGxhY2Vk
VGV4dChkb2N1bWVudCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAgICBpbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3IoKTsKLSAgICByZXBsYWNlZFRleHQucG9zdFRleHRTdGF0ZUNoYW5nZU5v
dGlmaWNhdGlvbihkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpLCBBWFRleHRFZGl0
VHlwZVR5cGluZywgIlxuIiwgZG9jdW1lbnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7Cisg
ICAgcmVwbGFjZWRUZXh0LnBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oZG9jdW1lbnQo
KS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSwgQVhUZXh0RWRpdFR5cGVUeXBpbmcsICJcbiJfcywg
ZG9jdW1lbnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CiAgICAgY29tcG9zaXRpb24oKS0+
c2V0UmFuZ2VEZWxldGVkQnlVbmFwcGx5KHJlcGxhY2VkVGV4dC5yZXBsYWNlZFJhbmdlKCkpOwog
fQogCkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnRBbmROb3RpZnlBY2Nlc3NpYmlsaXQKIHsKICAgICBB
Y2Nlc3NpYmlsaXR5UmVwbGFjZWRUZXh0IHJlcGxhY2VkVGV4dChkb2N1bWVudCgpLnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpKTsKICAgICBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENv
bnRlbnQoKTsKLSAgICByZXBsYWNlZFRleHQucG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlv
bihkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpLCBBWFRleHRFZGl0VHlwZVR5cGlu
ZywgIlxuIiwgZG9jdW1lbnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CisgICAgcmVwbGFj
ZWRUZXh0LnBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oZG9jdW1lbnQoKS5leGlzdGlu
Z0FYT2JqZWN0Q2FjaGUoKSwgQVhUZXh0RWRpdFR5cGVUeXBpbmcsICJcbiJfcywgZG9jdW1lbnQo
KS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CiAgICAgY29tcG9zaXRpb24oKS0+c2V0UmFuZ2VE
ZWxldGVkQnlVbmFwcGx5KHJlcGxhY2VkVGV4dC5yZXBsYWNlZFJhbmdlKCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMjBiM2ZjZjhkZGY5NTQ0MzQ5YjE4NjRlZjlkOWJm
MGZiNGFlZTY0Ni4uMmQ4ZjhiMzM1OTMwZDA3ZGQzMzI2YjgxMDY1ZjJkNGZkODM1YWNhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTk2LDEyICsxOTYsMTIgQEAgc3RkOjp1bmlx
dWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpCiAgICAgZnJh
bWUuaW5pdCgpOwogCiAgICAgRnJhbWVMb2FkZXImIGxvYWRlciA9IGZyYW1lLmxvYWRlcigpOwot
ICAgIHN0YXRpYyBjaGFyIG1hcmt1cFtdID0gIjwhRE9DVFlQRSBodG1sPjxodG1sPjxib2R5Pjwv
Ym9keT48L2h0bWw+IjsKKyAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBtYXJrdXAg
PSAiPCFET0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4iX3M7CiAgICAgQVNT
RVJUKGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpKTsKICAgICBhdXRvJiB3cml0ZXIgPSBs
b2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCk7Ci0gICAgd3JpdGVyLnNldE1J
TUVUeXBlKCJ0ZXh0L2h0bWwiKTsKKyAgICB3cml0ZXIuc2V0TUlNRVR5cGUoInRleHQvaHRtbCJf
cyk7CiAgICAgd3JpdGVyLmJlZ2luKCk7Ci0gICAgd3JpdGVyLmluc2VydERhdGFTeW5jaHJvbm91
c2x5KFN0cmluZyhtYXJrdXApKTsKKyAgICB3cml0ZXIuaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHko
bWFya3VwKTsKICAgICB3cml0ZXIuZW5kKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocGFnZS0+bWFp
bkZyYW1lKCkuZG9jdW1lbnQoKS0+Ym9keSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5j
cHAKaW5kZXggM2UxZWYzZmIzNjJiYWZjNDMwNjFlMThjYzBjMTNlZDk1ZGU2OWZhZC4uNDQ1ODkx
MmJhMDhjNjU2MTc3NmUzMmM3NzE0Y2QzZTg5NzVkZWEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2JVUkwuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFVSTCBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwo
U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQogCiBVUkwgQmxvYlVSTDo6Y3JlYXRlSW50
ZXJuYWxVUkwoKQogewotICAgIHJldHVybiBjcmVhdGVCbG9iVVJMKCJibG9iaW50ZXJuYWw6Ly8i
KTsKKyAgICByZXR1cm4gY3JlYXRlQmxvYlVSTCgiYmxvYmludGVybmFsOi8vIl9zKTsKIH0KIAog
c3RhdGljIGNvbnN0IERvY3VtZW50KiBibG9iT3duZXIoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGJs
b2JPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApp
bmRleCAyZmU1YWYxZjk4ZDM2ZGRjODlmMzljY2MxN2Q3YjcwZWM5MzM5ZThiLi5hY2Y0ZmY5YjE4
OGZmNmJlNjI4NDEyNWQzODkxMDY1ODRhYzkyNDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBGaWxlUmVhZGVy
TG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBjb24KIAogICAgIC8vIENvbnN0cnVjdCBhbmQgbG9hZCB0aGUgcmVxdWVzdC4KICAgICBS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybEZvclJlYWRpbmcpOwotICAgIHJlcXVlc3Quc2V0
SFRUUE1ldGhvZCgiR0VUIik7CisgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwog
CiAgICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLnNlbmRM
b2FkQ2FsbGJhY2tzID0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzOwpAQCAtMzQw
LDcgKzM0MCw3IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6Y29udmVydFRvVGV4dCgpCiAgICAg
Ly8gcHJvdmlkZWQgZW5jb2RpbmcuICAgICAKICAgICAvLyBGSVhNRTogY29uc2lkZXIgc3VwcG9y
dGluZyBpbmNyZW1lbnRhbCBkZWNvZGluZyB0byBpbXByb3ZlIHRoZSBwZXJmLgogICAgIGlmICgh
bV9kZWNvZGVyKQotICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUoInRleHQvcGxhaW4iLCBtX2VuY29kaW5nLmlzVmFsaWQoKSA/IG1fZW5jb2RpbmcgOiBQQUw6
OlVURjhFbmNvZGluZygpKTsKKyAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCBtX2VuY29kaW5nLmlzVmFsaWQoKSA/IG1fZW5jb2Rp
bmcgOiBQQUw6OlVURjhFbmNvZGluZygpKTsKICAgICBpZiAoaXNDb21wbGV0ZWQoKSkKICAgICAg
ICAgbV9zdHJpbmdSZXN1bHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihtX3Jhd0RhdGEtPmRhdGEoKSksIG1fYnl0ZXNMb2FkZWQpOwogICAgIGVs
c2UKQEAgLTM1NCw3ICszNTQsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmNvbnZlcnRUb0Rh
dGFVUkwoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zdHJpbmdSZXN1bHQgPSBt
YWtlU3RyaW5nKCJkYXRhOiIsIG1fZGF0YVR5cGUuaXNFbXB0eSgpID8gImFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbSIgOiBtX2RhdGFUeXBlLCAiO2Jhc2U2NCwiLCBiYXNlNjRFbmNvZGVkKG1fcmF3
RGF0YS0+ZGF0YSgpLCBtX2J5dGVzTG9hZGVkKSk7CisgICAgbV9zdHJpbmdSZXN1bHQgPSBtYWtl
U3RyaW5nKCJkYXRhOiIsIG1fZGF0YVR5cGUuaXNFbXB0eSgpID8gImFwcGxpY2F0aW9uL29jdGV0
LXN0cmVhbSJfcyA6IG1fZGF0YVR5cGUsICI7YmFzZTY0LCIsIGJhc2U2NEVuY29kZWQobV9yYXdE
YXRhLT5kYXRhKCksIG1fYnl0ZXNMb2FkZWQpKTsKIH0KIAogYm9vbCBGaWxlUmVhZGVyTG9hZGVy
Ojppc0NvbXBsZXRlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2Fy
ZENhY2hlLmNwcAppbmRleCA2ZDFhOTg5NWI0ODc1ZmQwMDZmZDUyNjE0NWEwZGRiMjk3OGNhNzdl
Li4wOWFlN2Q5NjMyZTEzMmI4Y2M0MzNlZjdkYWYyMDkxMTNhODcyN2I3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCBC
YWNrRm9yd2FyZENhY2hlOjpCYWNrRm9yd2FyZENhY2hlKCkKIHsKICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAg
ICAgICAgUEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dC
YWNrRm9yd2FyZENhY2hlIiwgW10geworICAgICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJh
Y2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd0JhY2tGb3J3YXJkQ2FjaGUiX3MsIFtdIHsKICAgICAg
ICAgICAgIEJhY2tGb3J3YXJkQ2FjaGU6OnNpbmdsZXRvbigpLmR1bXAoKTsKICAgICAgICAgfSk7
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCmluZGV4IDc5NjY1
NzA4YzUxNTIxMjA0NTcyNjZkOGE5NWVkNDcxNzA2YzNmODYuLjUwODQ1ZGM3NzRjYTI4MDI0NzBm
OGU0MDA4NWUzNGU0NTM5MjJkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1h
aWxJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUu
Y3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZyb20gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdmFsaWQtZS1tYWlsLWFkZHJlc3MuCi1zdGF0aWMg
Y29uc3QgY2hhciBlbWFpbFBhdHRlcm5bXSA9ICJeW2EtekEtWjAtOS4hIyQlJicqK1xcLz0/Xl9g
e3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpc
XC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQiOworc3Rh
dGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgZW1haWxQYXR0ZXJuID0gIl5bYS16QS1aMC05LiEj
JCUmJyorXFwvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2Et
ekEtWjAtOV0pPyg/OlxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAt
OV0pPykqJCJfczsKIAogc3RhdGljIGJvb2wgaXNWYWxpZEVtYWlsQWRkcmVzcyhjb25zdCBTdHJp
bmcmIGFkZHJlc3MpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0VudGVyS2V5
SGludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0VudGVyS2V5SGludC5jcHAKaW5kZXggZGRi
YzQ5MjY0OTYxZjA0YTk2YTE4MDcyODdhOTk5MDk4ZWY4MjU0Ni4uOTcwMzgxNGM4NGY0NjljZDRm
YjEzNjVlMTEzZDY3MzJhMGVlNjk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9F
bnRlcktleUhpbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW50ZXJLZXlIaW50LmNw
cApAQCAtNTMsMTkgKzUzLDE5IEBAIFN0cmluZyBhdHRyaWJ1dGVWYWx1ZUZvckVudGVyS2V5SGlu
dChFbnRlcktleUhpbnQgaGludCkKICAgICBjYXNlIEVudGVyS2V5SGludDo6VW5zcGVjaWZpZWQ6
CiAgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKICAgICBjYXNlIEVudGVyS2V5SGludDo6RW50
ZXI6Ci0gICAgICAgIHJldHVybiAiZW50ZXIiOworICAgICAgICByZXR1cm4gImVudGVyIl9zOwog
ICAgIGNhc2UgRW50ZXJLZXlIaW50OjpEb25lOgotICAgICAgICByZXR1cm4gImRvbmUiOworICAg
ICAgICByZXR1cm4gImRvbmUiX3M7CiAgICAgY2FzZSBFbnRlcktleUhpbnQ6OkdvOgotICAgICAg
ICByZXR1cm4gImdvIjsKKyAgICAgICAgcmV0dXJuICJnbyJfczsKICAgICBjYXNlIEVudGVyS2V5
SGludDo6TmV4dDoKLSAgICAgICAgcmV0dXJuICJuZXh0IjsKKyAgICAgICAgcmV0dXJuICJuZXh0
Il9zOwogICAgIGNhc2UgRW50ZXJLZXlIaW50OjpQcmV2aW91czoKLSAgICAgICAgcmV0dXJuICJw
cmV2aW91cyI7CisgICAgICAgIHJldHVybiAicHJldmlvdXMiX3M7CiAgICAgY2FzZSBFbnRlcktl
eUhpbnQ6OlNlYXJjaDoKLSAgICAgICAgcmV0dXJuICJzZWFyY2giOworICAgICAgICByZXR1cm4g
InNlYXJjaCJfczsKICAgICBjYXNlIEVudGVyS2V5SGludDo6U2VuZDoKLSAgICAgICAgcmV0dXJu
ICJzZW5kIjsKKyAgICAgICAgcmV0dXJuICJzZW5kIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbEF0b20oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggODQ0Y2Y2MDUyMWZiNjQxNTRjNWNmOTVl
MGM1NTQ5ODM3YzRmYmUyYS4uN2MyMmRkNTcxZjZiYzMyYjIzZmJiYjVjYjAxOWZmYjljNzczMWM2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAg
LTMzNyw3ICszMzcsNyBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpjcmVhdGVC
YXNpY0RvY3VtZW50KCkKIAogICAgIGJvZHlFbGVtZW50LT5hcHBlbmRDaGlsZCgqbV90YWJsZUVs
ZW1lbnQpOwogCi0gICAgZG9jdW1lbnQucHJvY2Vzc1ZpZXdwb3J0KCJ3aWR0aD1kZXZpY2Utd2lk
dGgiLCBWaWV3cG9ydEFyZ3VtZW50czo6Vmlld3BvcnRNZXRhKTsKKyAgICBkb2N1bWVudC5wcm9j
ZXNzVmlld3BvcnQoIndpZHRoPWRldmljZS13aWR0aCJfcywgVmlld3BvcnRBcmd1bWVudHM6OlZp
ZXdwb3J0TWV0YSk7CiB9CiAKIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmFwcGVu
ZChSZWZQdHI8U3RyaW5nSW1wbD4mJiBpbnB1dFNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggMjJmYzk5NTlhNzJmMjExMGVmYjFhNTk5NTFjMDhh
YWI2NzUxOTViZS4uYzk5ZTk3NjZiNDgyOTlmOTQ1MWY0MzhiNDUzMGRmZDU1OGE4NTBkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTU4Miw3ICs1ODIs
NyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVDbGljayhFdmVudCYgZXZlbnQpCiAg
ICAgICAgIGlmIChpc1NhbWVPcmlnaW4pCiAgICAgICAgICAgICBkb3dubG9hZEF0dHJpYnV0ZSA9
IFJlc291cmNlUmVzcG9uc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUoYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihkb3dubG9hZEF0dHIpKTsKICAgICAgICAgZWxzZSBpZiAoaGFz
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkb3dubG9hZEF0dHIpKQotICAgICAgICAg
ICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwg
TWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiVGhlIGRvd25sb2FkIGF0dHJpYnV0ZSBvbiBhbmNob3Ig
d2FzIGlnbm9yZWQgYmVjYXVzZSBpdHMgaHJlZiBVUkwgaGFzIGEgZGlmZmVyZW50IHNlY3VyaXR5
IG9yaWdpbi4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIlRoZSBkb3dubG9h
ZCBhdHRyaWJ1dGUgb24gYW5jaG9yIHdhcyBpZ25vcmVkIGJlY2F1c2UgaXRzIGhyZWYgVVJMIGhh
cyBhIGRpZmZlcmVudCBzZWN1cml0eSBvcmlnaW4uIl9zKTsKICAgICB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAppbmRleCA3YzU3NDE1
N2ExODU1ZDk5NTY2MGNiYWE0Yjg2ZDVhY2Y4YTIzYjBhLi4zNDYyNmIwMmFjNTM0MmQ4ZjFjZTg1
ZmVmMDI1YjdiNjg3Y2JmYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVs
ZW1lbnRCYXNlLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJh
c2U6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
CiAgICAgICAgICAgICBpZiAoIXNyY1ZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHNl
dExvY2F0aW9uKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhzcmNWYWx1ZSkpOwog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNldExvY2F0aW9uKCJhYm91dDpzcmNkb2MiKTsK
KyAgICAgICAgICAgIHNldExvY2F0aW9uKCJhYm91dDpzcmNkb2MiX3MpOwogICAgIH0gZWxzZSBp
ZiAobmFtZSA9PSBzcmNBdHRyICYmICFoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KHNyY2RvY0F0dHIpKQogICAgICAgICBzZXRMb2NhdGlvbihzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXModmFsdWUpKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcAppbmRleCA3OThmZTg2YmM0ZjMyMDI2NzFjZDJkNzE0NjYwMDBiNmViYWJi
NmJmLi5kZmY0NmEzZjEyNjAxNzVjOGQzYWY0NTk4ODg2NWEwMWRjZTM0NGY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCBJbWFn
ZUNhbmRpZGF0ZSBIVE1MSW1hZ2VFbGVtZW50OjpiZXN0Rml0U291cmNlRnJvbVBpY3R1cmVFbGVt
ZW50KCkKICAgICAgICAgfQogCiAgICAgICAgIFJlZlB0ciBkb2N1bWVudEVsZW1lbnQgPSBkb2N1
bWVudCgpLmRvY3VtZW50RWxlbWVudCgpOwotICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIGV2
YWx1YXRvciB7IGRvY3VtZW50KCkucHJpbnRpbmcoKSA/ICJwcmludCIgOiAic2NyZWVuIiwgZG9j
dW1lbnQoKSwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0eWxl
KCkgOiBudWxscHRyIH07CisgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgZXZhbHVhdG9yIHsg
ZG9jdW1lbnQoKS5wcmludGluZygpID8gInByaW50Il9zIDogInNjcmVlbiJfcywgZG9jdW1lbnQo
KSwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0eWxlKCkgOiBu
dWxscHRyIH07CiAgICAgICAgIGF1dG8qIHF1ZXJpZXMgPSBzb3VyY2UucGFyc2VkTWVkaWFBdHRy
aWJ1dGUoZG9jdW1lbnQoKSk7CiAgICAgICAgIExPRyhNZWRpYVF1ZXJpZXMsICJIVE1MSW1hZ2VF
bGVtZW50ICVwIGJlc3RGaXRTb3VyY2VGcm9tUGljdHVyZUVsZW1lbnQgZXZhbHVhdGluZyBtZWRp
YSBxdWVyaWVzIiwgdGhpcyk7CiAKQEAgLTIzNiw3ICsyMzYsNyBAQCBJbWFnZUNhbmRpZGF0ZSBI
VE1MSW1hZ2VFbGVtZW50OjpiZXN0Rml0U291cmNlRnJvbVBpY3R1cmVFbGVtZW50KCkKIHZvaWQg
SFRNTEltYWdlRWxlbWVudDo6ZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyeURlcGVuZGVuY2llcygp
CiB7CiAgICAgUmVmUHRyIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50KCkuZG9jdW1lbnRFbGVt
ZW50KCk7Ci0gICAgTWVkaWFRdWVyeUV2YWx1YXRvciBldmFsdWF0b3IgeyBkb2N1bWVudCgpLnBy
aW50aW5nKCkgPyAicHJpbnQiIDogInNjcmVlbiIsIGRvY3VtZW50KCksIGRvY3VtZW50RWxlbWVu
dCA/IGRvY3VtZW50RWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgpIDogbnVsbHB0ciB9OworICAgIE1l
ZGlhUXVlcnlFdmFsdWF0b3IgZXZhbHVhdG9yIHsgZG9jdW1lbnQoKS5wcmludGluZygpID8gInBy
aW50Il9zIDogInNjcmVlbiJfcywgZG9jdW1lbnQoKSwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1l
bnRFbGVtZW50LT5jb21wdXRlZFN0eWxlKCkgOiBudWxscHRyIH07CiAKICAgICBpZiAoIWV2YWx1
YXRvci5ldmFsdWF0ZUZvckNoYW5nZXMobV9tZWRpYVF1ZXJ5RHluYW1pY1Jlc3VsdHMpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRl
eCA5YTA4NzQxYjFjNDBkYTY5OGZhNjhjOGE3MzA4Mzg2ZDg1NWQyODRkLi45ZmVmYmFiZDYxYTM2
Mzk3YjVmN2I1Y2VmZDcyMjEzMGZiNTk5MTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTEyOTQsMTIgKzEyOTQsMTIgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
SFRNTElucHV0RWxlbWVudDo6c2hvd1BpY2tlcigpCiAgICAgaWYgKCFtX2lucHV0VHlwZS0+YWxs
b3dzU2hvd1BpY2tlckFjcm9zc0ZyYW1lcygpKSB7CiAgICAgICAgIEZyYW1lJiB0b3BGcmFtZSA9
IGZyYW1lLT50cmVlKCkudG9wKCk7CiAgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCkuaXNTYW1lT3JpZ2luQXModG9wRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSkpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJv
ciwgIklucHV0IHNob3dQaWNrZXIoKSBjYWxsZWQgZnJvbSBjcm9zcy1vcmlnaW4gaWZyYW1lLiIg
fTsKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiSW5wdXQg
c2hvd1BpY2tlcigpIGNhbGxlZCBmcm9tIGNyb3NzLW9yaWdpbiBpZnJhbWUuIl9zIH07CiAgICAg
fQogCiAgICAgYXV0byogd2luZG93ID0gZnJhbWUtPndpbmRvdygpOwogICAgIGlmICghd2luZG93
IHx8ICF3aW5kb3ctPmhhc1RyYW5zaWVudEFjdGl2YXRpb24oKSkKLSAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIklucHV0IHNob3dQaWNrZXIoKSByZXF1aXJlcyBh
IHVzZXIgZ2VzdHVyZS4iIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RBbGxvd2Vk
RXJyb3IsICJJbnB1dCBzaG93UGlja2VyKCkgcmVxdWlyZXMgYSB1c2VyIGdlc3R1cmUuIl9zIH07
CiAKICAgICBtX2lucHV0VHlwZS0+c2hvd1BpY2tlcigpOwogICAgIHJldHVybiB7IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBkMzczMmI4MThjYjI2MWUy
NWRjYTMyN2MzMDk5MGI2ZTQ3ODdkZDU2Li4yZjJlNDA0NTM0NTIxNzJhMTIxNmQwMDBjMmJiNmFj
Y2UzYzBmNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTM2ODIsNyArMzY4Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheShET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogCiAgICAgaWYgKG1fZXJyb3IgJiYgbV9lcnJvci0+
Y29kZSgpID09IE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9TUkNfTk9UX1NVUFBPUlRFRCkgewogICAg
ICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInJlamVjdGluZyBwcm9taXNlIGJlY2F1c2Ug
b2YgZXJyb3IiKTsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoTm90U3VwcG9ydGVkRXJyb3IsICJU
aGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuIik7CisgICAgICAgIHByb21pc2UucmVqZWN0
KE5vdFN1cHBvcnRlZEVycm9yLCAiVGhlIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiJfcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ4OTQsNyArNDg5NCw3IEBAIFVSTCBIVE1M
TWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUqIGNvbnRlbnRU
eXBlLCBTdHJpbmcqIGtlCiAgICAgICAgICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwg
IidtZWRpYScgaXMgIiwgc291cmNlLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1l
ZGlhQXR0cikpOwogICAgICAgICAgICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
OwogICAgICAgICAgICAgTE9HKE1lZGlhUXVlcmllcywgIkhUTUxNZWRpYUVsZW1lbnQgJXAgc2Vs
ZWN0TmV4dFNvdXJjZUNoaWxkIGV2YWx1YXRpbmcgbWVkaWEgcXVlcmllcyIsIHRoaXMpOwotICAg
ICAgICAgICAgaWYgKCFNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIsIGRvY3VtZW50KCks
IHJlbmRlcmVyID8gJnJlbmRlcmVyLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKCptZWRp
YSkpCisgICAgICAgICAgICBpZiAoIU1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIl9zLCBk
b2N1bWVudCgpLCByZW5kZXJlciA/ICZyZW5kZXJlci0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFs
dWF0ZSgqbWVkaWEpKQogICAgICAgICAgICAgICAgIGdvdG8gQ2hlY2tBZ2FpbjsKICAgICAgICAg
fQogCkBAIC03MTU4LDcgKzcxNTgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNs
ZWVwRGlzYWJsaW5nKCkKICAgICBlbHNlIGlmIChzaG91bGREaXNhYmxlU2xlZXAgIT0gU2xlZXBU
eXBlOjpOb25lKSB7CiAgICAgICAgIGF1dG8gdHlwZSA9IHNob3VsZERpc2FibGVTbGVlcCA9PSBT
bGVlcFR5cGU6OkRpc3BsYXkgPyBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5cGU6OkRpc3BsYXkgOiBQ
QUw6OlNsZWVwRGlzYWJsZXI6OlR5cGU6OlN5c3RlbTsKICAgICAgICAgaWYgKCFtX3NsZWVwRGlz
YWJsZXIgfHwgbV9zbGVlcERpc2FibGVyLT50eXBlKCkgIT0gdHlwZSkKLSAgICAgICAgICAgIG1f
c2xlZXBEaXNhYmxlciA9IG1ha2VVbmlxdWU8U2xlZXBEaXNhYmxlcj4oImNvbS5hcHBsZS5XZWJD
b3JlOiBIVE1MTWVkaWFFbGVtZW50IHBsYXliYWNrIiwgdHlwZSk7CisgICAgICAgICAgICBtX3Ns
ZWVwRGlzYWJsZXIgPSBtYWtlVW5pcXVlPFNsZWVwRGlzYWJsZXI+KCJjb20uYXBwbGUuV2ViQ29y
ZTogSFRNTE1lZGlhRWxlbWVudCBwbGF5YmFjayJfcywgdHlwZSk7CiAgICAgfQogCiAgICAgaWYg
KG1fcGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRl
eCBkYzFiODczZTk3Mjg4NzMzYThmNjU1ZDdiNWMxMmQ4OWQ2OWNkZTIyLi4zNzNkNDM1NWI2MjRm
ZTc4ZmEzMTU5MzkzNzBmZTliM2Q3ODhhMzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1l
bnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3Rv
cjxTCiAgICAgLy8gZWxzZSBvdXIgSmF2YSBwbHVnaW4gd2lsbCBtaXNpbnRlcnByZXQgaXQuIFs0
MDA0NTMxXQogICAgIFN0cmluZyBjb2RlYmFzZTsKICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6
aXNKYXZhQXBwbGV0TUlNRVR5cGUoc2VydmljZVR5cGUpKSB7Ci0gICAgICAgIGNvZGViYXNlID0g
ImNvZGViYXNlIjsKKyAgICAgICAgY29kZWJhc2UgPSAiY29kZWJhc2UiX3M7CiAgICAgICAgIHVu
aXF1ZVBhcmFtTmFtZXMuYWRkKGNvZGViYXNlLmltcGwoKSk7IC8vIHByZXRlbmQgd2UgZm91bmQg
aXQgaW4gYSBQQVJBTSBhbHJlYWR5CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0
bWFwLmNwcAppbmRleCA1OWJmYzZlMGYxZTU5MDQzZGNjNWJiZGEyZDIyYWFlMzY1YTYxMzE0Li5h
Y2NlYWE1M2JjYmNmMzgzN2JkNGI5OTJkNmUyYWE1NDc5NDI5MDlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlQml0bWFwLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNy
ZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwKICAgICAvLyAxLiBJZiBlaXRoZXIgdGhlIHN3IG9yIHNoIGFyZ3VtZW50cyBhcmUgc3BlY2lm
aWVkIGJ1dCB6ZXJvLCByZXR1cm4gYSBwcm9taXNlCiAgICAgLy8gICAgcmVqZWN0ZWQgd2l0aCBh
biAiUmFuZ2VFcnJvciIgRE9NRXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBp
ZiAoIXN3IHx8ICFzaCkgewotICAgICAgICBwcm9taXNlLnJlamVjdChSYW5nZUVycm9yLCAiQ2Fu
bm90IGNyZWF0ZSBJbWFnZUJpdG1hcCB3aXRoIGEgd2lkdGggb3IgaGVpZ2h0IG9mIDAiKTsKKyAg
ICAgICAgcHJvbWlzZS5yZWplY3QoUmFuZ2VFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRt
YXAgd2l0aCBhIHdpZHRoIG9yIGhlaWdodCBvZiAwIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxJbnRSZWN0PiBjcm9w
cGVkU291cmNlUmVjdGFuZ2xlV2l0aEZvcm1hdHRpbmcoSW50U2l6ZSBpbnB1dFNpCiAgICAgLy8g
ICAgdGhhbiBvciBlcXVhbCB0byAwLCB0aGVuIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0
aCAiSW52YWxpZFN0YXRlRXJyb3IiCiAgICAgLy8gICAgRE9NRXhjZXB0aW9uIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KICAgICBpZiAoKG9wdGlvbnMucmVzaXplV2lkdGggJiYgb3B0aW9ucy5yZXNp
emVXaWR0aC52YWx1ZSgpIDw9IDApIHx8IChvcHRpb25zLnJlc2l6ZUhlaWdodCAmJiBvcHRpb25z
LnJlc2l6ZUhlaWdodC52YWx1ZSgpIDw9IDApKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJJbnZhbGlkIHJlc2l6ZSBkaW1lbnNpb25zIiB9OworICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJJbnZhbGlkIHJlc2l6ZSBk
aW1lbnNpb25zIl9zIH07CiAKICAgICAvLyAzLiBJZiBzeCwgc3ksIHN3IGFuZCBzaCBhcmUgc3Bl
Y2lmaWVkLCBsZXQgc291cmNlUmVjdGFuZ2xlIGJlIGEgcmVjdGFuZ2xlIHdob3NlCiAgICAgLy8g
ICAgY29ybmVycyBhcmUgdGhlIGZvdXIgcG9pbnRzIChzeCwgc3kpLCAoc3grc3csIHN5KSwoc3gr
c3csIHN5K3NoKSwgKHN4LHN5K3NoKS4KQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIEltYWdlQml0
bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsCiAKICAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC0+Y2FjaGVk
SW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8ICFpbWFnZUVsZW1lbnQtPmNvbXBsZXRl
KCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3Qg
Y3JlYXRlIEltYWdlQml0bWFwIHRoYXQgaXMgbm90IGNvbXBsZXRlbHkgYXZhaWxhYmxlIik7Cisg
ICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJ
bWFnZUJpdG1hcCB0aGF0IGlzIG5vdCBjb21wbGV0ZWx5IGF2YWlsYWJsZSJfcyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpj
cmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsCiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IGNhY2hlZEltYWdlLT5pbWFnZVNpemVGb3JSZW5k
ZXJlcihpbWFnZUVsZW1lbnQtPnJlbmRlcmVyKCksIDEuMGYpOwogICAgIGlmICgoIWltYWdlU2l6
ZS53aWR0aCgpIHx8ICFpbWFnZVNpemUuaGVpZ2h0KCkpICYmICghb3B0aW9ucy5yZXNpemVXaWR0
aCB8fCAhb3B0aW9ucy5yZXNpemVIZWlnaHQpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KElu
dmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGEgc291cmNl
IHdpdGggbm8gaW50cmluc2ljIHNpemUgd2l0aG91dCBwcm92aWRpbmcgcmVzaXplIGRpbWVuc2lv
bnMiKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3Qg
Y3JlYXRlIEltYWdlQml0bWFwIGZyb20gYSBzb3VyY2Ugd2l0aCBubyBpbnRyaW5zaWMgc2l6ZSB3
aXRob3V0IHByb3ZpZGluZyByZXNpemUgZGltZW5zaW9ucyJfcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9t
aXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAg
Ly8gd2lkdGggYW5kIGhlaWdodCBmb3IgdGhlIGltYWdlLgogCiAgICAgaWYgKCFyZWN0ICYmICgh
aW1hZ2VTaXplLndpZHRoKCkgfHwgIWltYWdlU2l6ZS5oZWlnaHQoKSkpIHsKLSAgICAgICAgcHJv
bWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFw
IGZyb20gYSBzb3VyY2Ugd2l0aCBubyBpbnRyaW5zaWMgc2l6ZSB3aXRob3V0IHByb3ZpZGluZyBk
aW1lbnNpb25zIik7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAi
Q2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGEgc291cmNlIHdpdGggbm8gaW50cmluc2lj
IHNpemUgd2l0aG91dCBwcm92aWRpbmcgZGltZW5zaW9ucyJfcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9t
aXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAKICAg
ICBhdXRvIGltYWdlRm9yUmVuZGVyZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihp
bWFnZUVsZW1lbnQtPnJlbmRlcmVyKCkpOwogICAgIGlmICghaW1hZ2VGb3JSZW5kZXJlcikgewot
ICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUg
SW1hZ2VCaXRtYXAgZnJvbSBpbWFnZSB0aGF0IGNhbid0IGJlIHJlbmRlcmVkIik7CisgICAgICAg
IHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJp
dG1hcCBmcm9tIGltYWdlIHRoYXQgY2FuJ3QgYmUgcmVuZGVyZWQiX3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRl
UHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAog
ICAgIC8vICAgIERPTUV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgYXV0byBz
aXplID0gY2FudmFzLnNpemUoKTsKICAgICBpZiAoIXNpemUud2lkdGgoKSB8fCAhc2l6ZS5oZWln
aHQoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5v
dCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBhIGNhbnZhcyB0aGF0IGhhcyB6ZXJvIHdpZHRoIG9y
IGhlaWdodCIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNh
bm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBhIGNhbnZhcyB0aGF0IGhhcyB6ZXJvIHdpZHRo
IG9yIGhlaWdodCJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQzOCw3ICs0Mzgs
NyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAKICAgICBhdXRvIGltYWdlRm9yUmVuZGVyID0g
Y2FudmFzLmNvcGllZEltYWdlKCk7CiAgICAgaWYgKCFpbWFnZUZvclJlbmRlcikgewotICAgICAg
ICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VC
aXRtYXAgZnJvbSBjYW52YXMgdGhhdCBjYW4ndCBiZSByZW5kZXJlZCIpOworICAgICAgICBwcm9t
aXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAg
ZnJvbSBjYW52YXMgdGhhdCBjYW4ndCBiZSByZW5kZXJlZCJfcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQ4MywxNCArNDgzLDE0IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVBy
b21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAg
ICAvLyAgICBvciByZXR1cm5zIGJhZCwgdGhlbiByZXR1cm4gcCByZWplY3RlZCB3aXRoIGFuICJJ
bnZhbGlkU3RhdGVFcnJvciIKICAgICAvLyAgICBET01FeGNlcHRpb24uCiAgICAgaWYgKHZpZGVv
LT5yZWFkeVN0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVudDo6SEFWRV9OT1RISU5HIHx8IHZpZGVv
LT5yZWFkeVN0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVudDo6SEFWRV9NRVRBREFUQSkgewotICAg
ICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1h
Z2VCaXRtYXAgYmVmb3JlIHRoZSBIVE1MVmlkZW9FbGVtZW50IGhhcyBkYXRhIik7CisgICAgICAg
IHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJp
dG1hcCBiZWZvcmUgdGhlIEhUTUxWaWRlb0VsZW1lbnQgaGFzIGRhdGEiX3MpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgLy8gNi4xLiBJZiBpbWFnZSdzIG5ldHdvcmtTdGF0ZSBhdHRy
aWJ1dGUgaXMgTkVUV09SS19FTVBUWSwgdGhlbiByZXR1cm4gcAogICAgIC8vICAgICAgcmVqZWN0
ZWQgd2l0aCBhbiAiSW52YWxpZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlvbi4KICAgICBpZiAodmlk
ZW8tPm5ldHdvcmtTdGF0ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6Ok5FVFdPUktfRU1QVFkpIHsK
LSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRl
IEltYWdlQml0bWFwIGJlZm9yZSB0aGUgSFRNTFZpZGVvRWxlbWVudCBoYXMgZGF0YSIpOworICAg
ICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1h
Z2VCaXRtYXAgYmVmb3JlIHRoZSBIVE1MVmlkZW9FbGVtZW50IGhhcyBkYXRhIl9zKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6
OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwKICNpZiBFTkFCTEUoQ1NTX1RZUEVEX09NKQogdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRl
UHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPENTU1N0eWxlSW1hZ2VWYWx1
ZT4mLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiwgSW1hZ2VC
aXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewotICAgIHByb21pc2UucmVqZWN0KEludmFsaWRT
dGF0ZUVycm9yLCAiTm90IGltcGxlbWVudGVkIik7CisgICAgcHJvbWlzZS5yZWplY3QoSW52YWxp
ZFN0YXRlRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MpOwogfQogI2VuZGlmCiAKQEAgLTU2NSw3
ICs1NjUsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgLy8gMi4gSWYgaW1hZ2UncyBb
W0RldGFjaGVkXV0gaW50ZXJuYWwgc2xvdCB2YWx1ZSBpcyB0cnVlLCByZXR1cm4gYSBwcm9taXNl
CiAgICAgLy8gICAgcmVqZWN0ZWQgd2l0aCBhbiAiSW52YWxpZFN0YXRlRXJyb3IiIERPTUV4Y2Vw
dGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKGV4aXN0aW5nSW1hZ2VCaXRtYXAt
PmlzRGV0YWNoZWQoKSB8fCAhZXhpc3RpbmdJbWFnZUJpdG1hcC0+YnVmZmVyKCkpIHsKLSAgICAg
ICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdl
Qml0bWFwIGZyb20gYSBkZXRhY2hlZCBJbWFnZUJpdG1hcCIpOworICAgICAgICBwcm9taXNlLnJl
amVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBh
IGRldGFjaGVkIEltYWdlQml0bWFwIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
NzIyLDcgKzcyMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0pOwogCiAgICAgICAgIGlmICghbV9h
cnJheUJ1ZmZlclRvUHJvY2VzcykgewotICAgICAgICAgICAgbV9wcm9taXNlLnJlamVjdChJbnZh
bGlkU3RhdGVFcnJvciwgIkFuIGVycm9yIG9jY3VyZWQgcmVhZGluZyB0aGUgQmxvYiBhcmd1bWVu
dCB0byBjcmVhdGVJbWFnZUJpdG1hcCIpOworICAgICAgICAgICAgbV9wcm9taXNlLnJlamVjdChJ
bnZhbGlkU3RhdGVFcnJvciwgIkFuIGVycm9yIG9jY3VyZWQgcmVhZGluZyB0aGUgQmxvYiBhcmd1
bWVudCB0byBjcmVhdGVJbWFnZUJpdG1hcCJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtNzQxLDcgKzc0MSw3IEBAIHByaXZhdGU6CiB2b2lkIEltYWdlQml0bWFwOjpj
cmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwgU3RyaW5nIG1pbWVUeXBlLCBs
b25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgSW1h
Z2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiByZWN0LCBQ
cm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBpZiAoIWFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
IHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3Jl
YXRlIGFuIEltYWdlQml0bWFwIGZyb20gYW4gZW1wdHkgYnVmZmVyIik7CisgICAgICAgIHByb21p
c2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBhbiBJbWFnZUJpdG1h
cCBmcm9tIGFuIGVtcHR5IGJ1ZmZlciJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTc1MCw3ICs3NTAsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIGF1dG8gaW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKG9ic2VydmVyLnB0cigpKTsKICAgICBhdXRvIHJlc3VsdCA9
IGltYWdlLT5zZXREYXRhKHNoYXJlZEJ1ZmZlci5jb3B5UmVmKCksIHRydWUpOwogICAgIGlmIChy
ZXN1bHQgIT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlIHx8IGltYWdlLT5pc051bGwoKSkg
ewotICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBkZWNv
ZGUgdGhlIGRhdGEgaW4gdGhlIGFyZ3VtZW50IHRvIGNyZWF0ZUltYWdlQml0bWFwIik7CisgICAg
ICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGRlY29kZSB0aGUg
ZGF0YSBpbiB0aGUgYXJndW1lbnQgdG8gY3JlYXRlSW1hZ2VCaXRtYXAiX3MpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC03NjMsNyArNzYzLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3Jl
YXRlRnJvbUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250
ZXgKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291cmNlUmVjdGFuZ2xlKHNv
dXJjZVJlY3RhbmdsZS5yZXR1cm5WYWx1ZSgpLCBvcHRpb25zKTsKICAgICBhdXRvIGJpdG1hcERh
dGEgPSBjcmVhdGVJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBvdXRwdXRTaXpl
LCBidWZmZXJSZW5kZXJpbmdNb2RlLCBpbWFnZS0+Y29sb3JTcGFjZSgpKTsKICAgICBpZiAoIWJp
dG1hcERhdGEpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJD
YW5ub3QgY3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBmcm9tIHRoZSBhcmd1bWVudCB0byBjcmVhdGVJ
bWFnZUJpdG1hcCIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwg
IkNhbm5vdCBjcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGZyb20gdGhlIGFyZ3VtZW50IHRvIGNyZWF0
ZUltYWdlQml0bWFwIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzkyLDcgKzc5
Miw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICAvLyA2LjIuIElmIElzRGV0YWNoZWRC
dWZmZXIoYnVmZmVyKSBpcyB0cnVlLCB0aGVuIHJldHVybiBwIHJlamVjdGVkIHdpdGggYW4KICAg
ICAvLyAgICAgICJJbnZhbGlkU3RhdGVFcnJvciIgRE9NRXhjZXB0aW9uLgogICAgIGlmIChpbWFn
ZURhdGEtPmRhdGEoKS5pc0RldGFjaGVkKCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52
YWxpZFN0YXRlRXJyb3IsICJJbWFnZURhdGEncyB2aWV3ZWQgYnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIik7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiSW1hZ2VE
YXRhJ3Mgdmlld2VkIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCJfcyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDRkMTBm
YjA1NzcyNDYyODU3Njg4NTAzZDY2NDc2OTdmMGNiMDRiYTEuLjIwNmM2NmI3YmExOTdiYjYzMjM0
NDk1MTk2MTJjNmQ2OTk2M2QyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNw
cApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRT
dHJ1Y3R1cmUoKQogICAgIGF1dG8gYm9keSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKCp0aGlz
KTsKICAgICBib2R5LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAibWFyZ2luOiAwcHgiKTsKICAg
ICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZShkb2N1bWVudCgpLmxvYWRlcigp
LT5yZXNwb25zZU1JTUVUeXBlKCkpKQotICAgICAgICBib2R5LT5zZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAid2hpdGUiKTsKKyAgICAgICAgYm9keS0+
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgIndoaXRl
Il9zKTsKICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoYm9keSk7CiAgICAgCiAgICAgYXV0
byBpbWFnZUVsZW1lbnQgPSBJbWFnZURvY3VtZW50RWxlbWVudDo6Y3JlYXRlKCp0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCmluZGV4IDY0
NGVmN2I3NTI2NzZiNTkzZWM5Nzc4Nzg4MWVmYjRmYzcxMDEzYjkuLjA2NWE3MGRlMmRhMzdjZjcz
ZTYwNTNmOTcyNWYzODI4YjgwMjEwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUZyYWdtZW50VVJJUGFyc2VyLmNwcApAQCAtMTM0LDExICsxMzQsMTEgQEAgdm9pZCBNZWRpYUZy
YWdtZW50VVJJUGFyc2VyOjpwYXJzZUZyYWdtZW50cygpCiAgICAgICAgIC8vICAgICBuYW1lIG9y
IHZhbHVlIGFyZSBub3QgdmFsaWQgVVRGLTggc3RyaW5ncywgdGhlbiByZW1vdmUgdGhlIG5hbWUt
dmFsdWUgcGFpciBmcm9tIHRoZSBsaXN0LgogICAgICAgICBib29sIHZhbGlkVVRGOCA9IGZhbHNl
OwogICAgICAgICBpZiAoIW5hbWUuaXNFbXB0eSgpICYmICF2YWx1ZS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIG5hbWUgPSBuYW1lLnV0ZjgoU3RyaWN0Q29udmVyc2lvbikuZGF0YSgpOworICAg
ICAgICAgICAgbmFtZSA9IFN0cmluZyB7IG5hbWUudXRmOChTdHJpY3RDb252ZXJzaW9uKS5kYXRh
KCkgfTsKICAgICAgICAgICAgIHZhbGlkVVRGOCA9ICFuYW1lLmlzRW1wdHkoKTsKIAogICAgICAg
ICAgICAgaWYgKHZhbGlkVVRGOCkgewotICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudXRm
OChTdHJpY3RDb252ZXJzaW9uKS5kYXRhKCk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBTdHJp
bmcgeyB2YWx1ZS51dGY4KFN0cmljdENvbnZlcnNpb24pLmRhdGEoKSB9OwogICAgICAgICAgICAg
ICAgIHZhbGlkVVRGOCA9ICF2YWx1ZS5pc0VtcHR5KCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5jcHAKaW5kZXggNTk2YTY1MTgzZjFmZjc3NzU4
NmE2YTY2N2MzNTRlZjRlN2I0YjhlMC4uNGUxOTQ2MTZlY2UyNTNjOTQxMjRjZmJlNzI0NThhYmJi
ZDg1M2IwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5jcHAKQEAgLTE4Niw3ICsxODYs
NyBAQCB2b2lkIFBERkRvY3VtZW50OjpzZW5kUERGQXJyYXlCdWZmZXIoKQogCiAgICAgYXV0byog
ZnJhbWUgPSBtX2lmcmFtZS0+Y29udGVudEZyYW1lKCk7CiAgICAgLy8gRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY2NjggLSBVc2UgcG9zdE1lc3NhZ2UK
LSAgICBhdXRvIG9wZW5GdW5jdGlvbiA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SWdu
b3JpbmdFeGNlcHRpb24oIlBERkpTQ29udGVudFNjcmlwdC5vcGVuIikuZ2V0T2JqZWN0KCk7Cisg
ICAgYXV0byBvcGVuRnVuY3Rpb24gPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9y
aW5nRXhjZXB0aW9uKCJQREZKU0NvbnRlbnRTY3JpcHQub3BlbiJfcykuZ2V0T2JqZWN0KCk7CiAK
ICAgICBhdXRvIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwogICAgIGF1dG8m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCmluZGV4IDg3NTM3ZTJiYjkzZTRiNjk5OTc3
MDBhZmZjMTg3ZjZjZjViYmVhYjUuLjRlNjhlZDUxM2NhMzgxN2E3MTA2Nzc3NjI3MzdiYWIzZDYw
NTc1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFu
Y2VkQXJyYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3Rh
bmNlZEFycmF5cy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgQU5HTEVJbnN0YW5jZWRBcnJheXM6OkFO
R0xFSW5zdGFuY2VkQXJyYXlzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAg
ICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogI2lmIFVTRShBTkdMRSkKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xF
X2luc3RhbmNlZF9hcnJheXMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwogI2Vu
ZGlmCiB9CiAKQEAgLTUyLDcgKzUyLDcgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUg
QU5HTEVJbnN0YW5jZWRBcnJheXM6OmdldE5hbWUoKSBjb25zdAogYm9vbCBBTkdMRUluc3RhbmNl
ZEFycmF5czo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewogI2lmIFVT
RShBTkdMRSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0gICAgcmV0dXJuIGNv
bnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKKyAg
ICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfaW5zdGFuY2VkX2Fy
cmF5cyJfcyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJl
Q29tcHJlc3Npb25SR1RDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1
cmVDb21wcmVzc2lvblJHVEMuY3BwCmluZGV4IDQ2Yzk2MGYxOTE2NGE3NWY2ODdjYTkyNmQ0ZjVm
NjExODMwMjVhYmIuLjM0YWIxMGY3ZTRhY2IxYWU1MzhkNjA3N2YyNDU5ZGNlMWE5MWU5NDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lv
blJHVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21w
cmVzc2lvblJHVEMuY3BwCkBAIC0zNyw3ICszNyw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKTsKIEVYVFRleHR1cmVDb21wcmVzc2lvblJH
VEM6OkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
Y29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9yZ3RjIik7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5l
bnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9z
KTsKIAogICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0R0w6OkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCk7CiAgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVE
X1JHVEMxX0VYVCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDZkMGE4NzI4NWE4MDYxYzUwZTY2OTE2ZDUyMTQ0
YmVjNWY0NDZlYmUuLjI0MjI4ZDNiZTYwNzVlN2RmNTgxMDg5YjEyZjMxMDI5ZjExMDBjNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwCkBAIC0yMzksMTAgKzIzOSwxMCBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMoKQogdm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucygpCiB7CiAgICAgLy8gRklYTUU6IHRo
ZXNlIGFyZSBpbiB0aGUgV2ViR0wgMi4wIGNvcmUgQVBJIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4K
LSAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9k
ZXJpdmF0aXZlcyIpOwotICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
RVhUX2RyYXdfYnVmZmVycyIpOwotICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpOwotICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBtX2NvbnRleHQtPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyJfcyk7CisgICAg
bV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIl9z
KTsKKyAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9zaGFkZXJf
dGV4dHVyZV9sb2QiX3MpOworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfRVhUX2ZyYWdfZGVwdGgiX3MpOwogfQogCiBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnZhbGlkYXRlQnVmZmVyVGFyZ2V0KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0g
dGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDLmNwcAppbmRleCBiYzNlYmUyZDVlNzUzYjE4OWNhNTcyYTU0YTkx
ZDYyZjkxOWRhMmE4Li4xN2E3YjI0ZGZmMTA2NmMzOTYxYzk5ZjgzYjg0MTEyNWViMmRmM2Y5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDLmNwcApAQCAtMzgsNyArMzgsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyk7CiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQu
Z3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU1EX2NvbXBy
ZXNzZWRfQVRDX3RleHR1cmUiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIl9zKTsK
IAogICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfQVRDX1JHQl9BTUQpOwogICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfQVRDX1JHQkFfRVhQTElD
SVRfQUxQSEFfQU1EKTsKQEAgLTU0LDcgKzU0LDcgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lv
bk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJvb2wg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBj
b250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTURf
Y29tcHJlc3NlZF9BVENfdGV4dHVyZSIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZSJfcyk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHAKaW5kZXggOTE1ZGIyYWUzZTQzZmRiNzk2ZjA2
NTEwZDQzNzA3OTY2YjlmMzQ5YS4uMTU2NWMxMTI3YjViMzA5MjIxYjA0NDU3Y2IwYmVkZDdkOTc5
MGYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUVUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMpOwogV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FO
R0xFX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2NvbXByZXNzZWRfdGV4dHVy
ZV9ldGMiX3MpOwogCiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SMTFfRUFDKTsKICAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NJR05FRF9S
MTFfRUFDKTsKQEAgLTYxLDcgKzYxLDcgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJvb2wgV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0
KQogewotICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV9jb21w
cmVzc2VkX3RleHR1cmVfZXRjIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNp
b24oIkdMX0FOR0xFX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiX3MpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHAKaW5kZXggYWQxYmYyZmM5ODI0OGJmMTc3MGEz
YjYxOTBiMTcwOTJmNjA4MDliNy4uOGUxZjVlYmQ2N2Q5YTgxYzY4YWU0ZGZlOTczNWU5ZjI2ODNl
MDk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUVUQzEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcApAQCAtMzgsNyArMzgsNyBAQCBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEpOwogV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUVUQzE6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewot
ICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKKyAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19jb21wcmVzc2Vk
X0VUQzFfUkdCOF90ZXh0dXJlIl9zKTsKIAogICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkVUQzFfUkdCOF9PRVMpOwogfQpAQCAtNTIsNyAr
NTIsNyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDMTo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
QzE6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4g
Y29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3Rl
eHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2Nv
bXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUFZSVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDLmNwcAppbmRleCA1YTg0OTllOWU0Y2ZjYjkxODlhY2Y0ZjhiZjc3
MGM4ZTk1NGI0NGU3Li40N2E0YjRlZWRjNzdhMjJiZWI3ZjI5NzcxNzhiNTY0MjBlYmRmMDNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUFZSVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVQVlJUQy5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQyk7CiBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAg
ICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIik7CisgICAgY29udGV4dC5ncmFwaGljc0Nv
bnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVz
c2lvbl9wdnJ0YyJfcyk7CiAKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HKTsKICAg
ICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpD
T01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HKTsKQEAgLTU2LDcgKzU2LDcgQEAgV2ViR0xF
eHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpnZXRO
YW1lKCkgY29uc3QKIAogYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKKyAgICBy
ZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Np
b25fcHZydGMiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5j
cHAKaW5kZXggZmE3MDgxMWU3NTM3MGU3MjhkZTQ3Y2RiMTBhOTE4NmEzYTUwMjA5Yy4uMmY5OGJi
MjFmMjU0NGIzN2VjMTk5NDhjNWRlM2E2ZjRiMjk3OGY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcApA
QCAtNDAsOSArNDAsOSBAQCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZQogICAgIDogV2ViR0xFeHRl
bnNpb24oY29udGV4dCkKIHsKICAgICBhdXRvKiBnY2dsID0gY29udGV4dC5ncmFwaGljc0NvbnRl
eHRHTCgpOwotICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDEiKTsKLSAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJH
TF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKTsKLSAgICBnY2dsLT5lbnN1cmVFeHRl
bnNpb25FbmFibGVkKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKKyAgICBn
Y2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQxIl9zKTsKKyAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV90ZXh0
dXJlX2NvbXByZXNzaW9uX2R4dDMiX3MpOworICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSJfcyk7CiAKICAgICBjb250ZXh0
LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VE
X1JHQl9TM1RDX0RYVDFfRVhUKTsKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7CkBA
IC02MCwxMiArNjAsMTIgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEM6OmdldE5hbWUoKSBjb25zdAogYm9vbCBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewogI2lm
IFVTRShBTkdMRSkKLSAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhU
X3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpCi0gICAgICAgICYmIGNvbnRleHQuc3VwcG9ydHNF
eHRlbnNpb24oIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIpCi0gICAgICAgICYm
IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25f
ZHh0NSIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4
dHVyZV9jb21wcmVzc2lvbl9keHQxIl9zKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiX3MpCisgICAgICAgICYm
IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25f
ZHh0NSJfcyk7CiAjZWxzZQotICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIikKLSAgICAgICAgfHwgY29udGV4dC5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpOworICAgIHJl
dHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9zM3RjIl9zKQorICAgICAgICB8fCBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIl9zKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VENzUkdCLmNwcAppbmRleCBmNjVmNDJhZTIyYWM3MzEyZTEyODRkZjFjYzIxZjRlNjYwMWY2NjM5
Li40NTZjMjA0YWJlYzI0ZjQ3N2EwMGE0YmUzYzU0YWY4NjQ2ODRiNDg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDc1JHQi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQik7CiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQ3NSR0I6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQihXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsK
LSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
IkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYiIpOworICAgIGNvbnRleHQuZ3Jh
cGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fczN0Y19zcmdiIl9zKTsKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VY
VCk7CiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRl
eHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQpOwogICAgIGNvbnRleHQu
YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
U1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUKTsKQEAgLTU0LDcgKzU0LDcgQEAgV2ViR0xFeHRlbnNp
b246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpnZXROYW1l
KCkgY29uc3QKIAogYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiIik7Cisg
ICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGNfc3JnYiJfcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcAppbmRleCBh
NjlkYTI5MDM4NDE2MTYwODc5ZDc4YjhiZmNhZTA3ZDBkNDU3NWE5Li4zYzk0ZTI5NTdjYzU5ZGMz
MDFjNzcyMzk5YWM5MmIwMDFmNzBiOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChXZWJHTERlYnVnU2hhZGVycyk7CiBXZWJHTERlYnVnU2hhZGVyczo6
V2ViR0xEZWJ1Z1NoYWRlcnMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAg
ICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRl
eHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRl
cl9zb3VyY2UiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVu
c2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSJfcyk7CiB9CiAK
IFdlYkdMRGVidWdTaGFkZXJzOjp+V2ViR0xEZWJ1Z1NoYWRlcnMoKSA9IGRlZmF1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKaW5kZXgg
OTE1NjNiY2FlMmYxMTg5MTI0Y2Y1YzhmMzZmZjMyYTkzZjU1ODBhMC4uZThhMjg0OTlmMjlkYjI3
Mzc0ODRiODBmZWY2YmM3Yzg3ZGM2ZTk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcApAQCAtMzksOCArMzksOCBAQCBXZWJHTERlcHRo
VGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiAgICAgYXV0byogZ2NnbCA9
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKLSAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25F
bmFibGVkKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpOwotICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZCgiR0xfT0VTX2RlcHRoX3RleHR1cmUiX3MpOworICAgIGdjZ2wtPmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIl9zKTsKIH0KIAogV2ViR0xEZXB0
aFRleHR1cmU6On5XZWJHTERlcHRoVGV4dHVyZSgpID0gZGVmYXVsdDsKQEAgLTUyLDggKzUyLDgg
QEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xEZXB0aFRleHR1cmU6OmdldE5h
bWUoKSBjb25zdAogCiBib29sIFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoR3JhcGhpY3ND
b250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNp
b24oIkdMX09FU19kZXB0aF90ZXh0dXJlIikKLSAgICAgICAgfHwgY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfT0VTX2RlcHRoX3RleHR1cmUiX3MpCisgICAgICAgIHx8IGNvbnRl
eHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9kZXB0aF90ZXh0dXJlIl9zKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TERyYXdCdWZmZXJzLmNwcAppbmRleCAwNjcwYTQ3NjQyYmZiZmVjYmRlZjU2Mzc4YTJiZWI1YjE4
Yzk1Y2JjLi45YjE0ZDhmMjhjYjVkNzU0ZTIxMjY3Nzg2NmU2YzY4OGQ5MTk1YWVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcApAQCAtMzcs
NyArMzcsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xEcmF3QnVmZmVycyk7
CiBXZWJHTERyYXdCdWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X2RyYXdfYnVmZmVycyIpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyJfcyk7CiB9CiAKIFdlYkdMRHJh
d0J1ZmZlcnM6On5XZWJHTERyYXdCdWZmZXJzKCkgPSBkZWZhdWx0OwpAQCAtNTAsOSArNTAsOSBA
QCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERyYXdCdWZmZXJzOjpnZXROYW1l
KCkgY29uc3QKIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQpCiB7CiAjaWYgVVNFKEFOR0xFKQotICAgIHJldHVybiBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfZHJhd19i
dWZmZXJzIik7CisgICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+c3VwcG9y
dHNFeHRlbnNpb24oIkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpOwogI2Vsc2UKLSAgICByZXR1cm4g
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2Ry
YXdfYnVmZmVycyIpCisgICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+c3Vw
cG9ydHNFeHRlbnNpb24oIkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpCiAgICAgICAgICYmIHNhdGlz
Zmllc1dlYkdMUmVxdWlyZW1lbnRzKGNvbnRleHQpOwogI2VuZGlmCiB9CkBAIC0xMDYsMTAgKzEw
NiwxMCBAQCBib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRz
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIHdlYgogICAgIGNvbnRleHQtPmJpbmRGcmFtZWJ1
ZmZlcihHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIGZibyk7CiAKICAgICBjb25zdCB1
bnNpZ25lZCBjaGFyIGJ1ZmZlcls0XSA9IHsgMCwgMCwgMCwgMCB9OyAvLyB0ZXh0dXJlcyBhcmUg
cmVxdWlyZWQgdG8gYmUgaW5pdGlhbGl6ZWQgZm9yIG90aGVyIHBvcnRzLgotICAgIGJvb2wgc3Vw
cG9ydHNEZXB0aCA9IGNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZGVwdGhfdGV4
dHVyZSIpCi0gICAgICAgIHx8IGNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfZGVw
dGhfdGV4dHVyZSIpOwotICAgIGJvb2wgc3VwcG9ydHNEZXB0aFN0ZW5jaWwgPSAoY29udGV4dC0+
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpCi0gICAgICAg
IHx8IGNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKSk7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+c3VwcG9ydHNFeHRlbnNp
b24oIkdMX09FU19kZXB0aF90ZXh0dXJlIl9zKQorICAgICAgICB8fCBjb250ZXh0LT5zdXBwb3J0
c0V4dGVuc2lvbigiR0xfQVJCX2RlcHRoX3RleHR1cmUiX3MpOworICAgIGJvb2wgc3VwcG9ydHNE
ZXB0aFN0ZW5jaWwgPSAoY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF9wYWNrZWRf
ZGVwdGhfc3RlbmNpbCJfcykKKyAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24o
IkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpOwogICAgIFBsYXRmb3JtR0xPYmplY3Qg
ZGVwdGhTdGVuY2lsID0gMDsKICAgICBpZiAoc3VwcG9ydHNEZXB0aFN0ZW5jaWwpIHsKICAgICAg
ICAgZGVwdGhTdGVuY2lsID0gY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAppbmRleCBlNjlmOTYxYzdjYjJhMWJmYzIzZGNjYjk4NGMzMzNkZWI0YTE0YzQzLi44YWNmYzA3
M2NmZjU0Njk5YjI3NThjYzU3Y2M4NTQxYjU2YjZhMTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAt
ODU1LDcgKzg1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoQ2FuCiAgICAgICAgIC8vIHBhcnRp
Y3VsYXIsIGlmIFdlYkdMIGNvbnRleHRzIHdlcmUgbG9zdCBvbmUgb3IgbW9yZSB0aW1lcyB2aWEg
dGhlIEdMX0FSQl9yb2J1c3RuZXNzIGV4dGVuc2lvbi4KICAgICAgICAgaWYgKCFmcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkuYWxsb3dXZWJHTChmcmFtZS0+c2V0dGluZ3MoKS53ZWJHTEVuYWJsZWQo
KSkpIHsKICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQtPmRpc3BhdGNoRXZlbnQoV2ViR0xDb250
ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvckV2
ZW50LAotICAgICAgICAgICAgICAgIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpZZXMsICJXZWIgcGFnZSB3YXMgbm90IGFsbG93ZWQgdG8gY3JlYXRlIGEgV2ViR0wg
Y29udGV4dC4iKSk7CisgICAgICAgICAgICAgICAgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50
OjpJc0NhbmNlbGFibGU6OlllcywgIldlYiBwYWdlIHdhcyBub3QgYWxsb3dlZCB0byBjcmVhdGUg
YSBXZWJHTCBjb250ZXh0LiJfcykpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIH0KIApAQCAtOTI0LDcgKzkyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoQ2FuCiAgICAg
aWYgKCFjb250ZXh0KSB7CiAgICAgICAgIGlmIChjYW52YXNFbGVtZW50KSB7CiAgICAgICAgICAg
ICBjYW52YXNFbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdlYkdMQ29udGV4dEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JFdmVudCwKLSAgICAgICAgICAg
ICAgICBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCAiQ291
bGQgbm90IGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIikpOworICAgICAgICAgICAgICAgIEV2ZW50
OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsICJDb3VsZCBub3QgY3Jl
YXRlIGEgV2ViR0wgY29udGV4dC4iX3MpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CkBAIC0xMTQzLDE3ICsxMTQzLDE3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6c2V0dXBGbGFncygpCiAgICAgLy8gdHVybmluZyBpdCBvZmYgY2F1c2VzIHBy
b2JsZW1zLgogICAgIG1faXNHTEVTMkNvbXBsaWFudCA9IG1fY29udGV4dC0+aXNHTEVTMkNvbXBs
aWFudCgpOwogICAgIGlmIChtX2lzR0xFUzJDb21wbGlhbnQpIHsKLSAgICAgICAgbV9pc0dMRVMy
TlBPVFN0cmljdCA9ICFtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3RleHR1
cmVfbnBvdCIpOwotICAgICAgICBtX2lzRGVwdGhTdGVuY2lsU3VwcG9ydGVkID0gbV9jb250ZXh0
LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpIHx8IG1f
Y29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9kZXB0aF90ZXh0dXJlIik7Cisg
ICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJs
ZWQoIkdMX09FU190ZXh0dXJlX25wb3QiX3MpOworICAgICAgICBtX2lzRGVwdGhTdGVuY2lsU3Vw
cG9ydGVkID0gbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVw
dGhfc3RlbmNpbCJfcykgfHwgbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xF
X2RlcHRoX3RleHR1cmUiX3MpOwogICAgIH0gZWxzZSB7CiAjaWYgVVNFKEFOR0xFKQogICAgICAg
ICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gdHJ1ZTsKICNlbHNlCi0gICAgICAgIG1faXNHTEVTMk5Q
T1RTdHJpY3QgPSAhbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FSQl90ZXh0dXJl
X25vbl9wb3dlcl9vZl90d28iKTsKKyAgICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2Nv
bnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQVJCX3RleHR1cmVfbm9uX3Bvd2VyX29mX3R3
byJfcyk7CiAjZW5kaWYKLSAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29u
dGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSB8
fCBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSIp
OworICAgICAgICBtX2lzRGVwdGhTdGVuY2lsU3VwcG9ydGVkID0gbV9jb250ZXh0LT5pc0V4dGVu
c2lvbkVuYWJsZWQoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykgfHwgbV9jb250ZXh0
LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRoX3RleHR1cmUiX3MpOwogICAgIH0K
LSAgICBtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCA9IG1fY29udGV4dC0+aXNFeHRlbnNpb25F
bmFibGVkKCJHTF9FWFRfcm9idXN0bmVzcyIpOworICAgIG1faXNSb2J1c3RuZXNzRVhUU3VwcG9y
dGVkID0gbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIl9z
KTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChHQ0dMZW51bSBmb3JtYXQpCkBAIC0zMDY3LDcgKzMwNjcsNyBAQCBSZWZQdHI8
V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBY3RpdmVVbmlm
b3JtKFdlYkdMUHJvZ3JhbQogICAgIC8vIEZJWE1FOiBEbyB3ZSBzdGlsbCBuZWVkIHRoaXMgZm9y
IHRoZSBBTkdMRSBiYWNrZW5kPwogICAgIGlmICghaXNHTEVTMkNvbXBsaWFudCgpKQogICAgICAg
ICBpZiAoaW5mby5zaXplID4gMSAmJiAhaW5mby5uYW1lLmVuZHNXaXRoKCJbMF0iKSkKLSAgICAg
ICAgICAgIGluZm8ubmFtZS5hcHBlbmQoIlswXSIpOworICAgICAgICAgICAgaW5mby5uYW1lLmFw
cGVuZCgiWzBdIl9zKTsKIAogICAgIExPRyhXZWJHTCwgIlJldHVybmluZyBhY3RpdmUgdW5pZm9y
bSAlZDogJXMiLCBpbmRleCwgaW5mby5uYW1lLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC01NjE3LDE3
ICs1NjE3LDE3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhG
dW5jUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hCiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6YWRkRXh0ZW5zaW9uU3VwcG9ydGVkRm9ybWF0c0FuZFR5cGVzKCkKIHsK
LSAgICBpZiAoIW1fYXJlT0VTVGV4dHVyZUZsb2F0Rm9ybWF0c0FuZFR5cGVzQWRkZWQgJiYgZXh0
ZW5zaW9uSXNFbmFibGVkKCJPRVNfdGV4dHVyZV9mbG9hdCIpKSB7CisgICAgaWYgKCFtX2FyZU9F
U1RleHR1cmVGbG9hdEZvcm1hdHNBbmRUeXBlc0FkZGVkICYmIGV4dGVuc2lvbklzRW5hYmxlZCgi
T0VTX3RleHR1cmVfZmxvYXQiX3MpKSB7CiAgICAgICAgIEFERF9WQUxVRVNfVE9fU0VUKG1fc3Vw
cG9ydGVkVGV4SW1hZ2VTb3VyY2VUeXBlcywgU3VwcG9ydGVkVHlwZXNPRVNUZXh0dXJlRmxvYXQp
OwogICAgICAgICBtX2FyZU9FU1RleHR1cmVGbG9hdEZvcm1hdHNBbmRUeXBlc0FkZGVkID0gdHJ1
ZTsKICAgICB9CiAKLSAgICBpZiAoIW1fYXJlT0VTVGV4dHVyZUhhbGZGbG9hdEZvcm1hdHNBbmRU
eXBlc0FkZGVkICYmIGV4dGVuc2lvbklzRW5hYmxlZCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIp
KSB7CisgICAgaWYgKCFtX2FyZU9FU1RleHR1cmVIYWxmRmxvYXRGb3JtYXRzQW5kVHlwZXNBZGRl
ZCAmJiBleHRlbnNpb25Jc0VuYWJsZWQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiX3MpKSB7CiAg
ICAgICAgIEFERF9WQUxVRVNfVE9fU0VUKG1fc3VwcG9ydGVkVGV4SW1hZ2VTb3VyY2VUeXBlcywg
U3VwcG9ydGVkVHlwZXNPRVNUZXh0dXJlSGFsZkZsb2F0KTsKICAgICAgICAgbV9hcmVPRVNUZXh0
dXJlSGFsZkZsb2F0Rm9ybWF0c0FuZFR5cGVzQWRkZWQgPSB0cnVlOwogICAgIH0KIAotICAgIGlm
ICghbV9hcmVFWFRzUkdCRm9ybWF0c0FuZFR5cGVzQWRkZWQgJiYgZXh0ZW5zaW9uSXNFbmFibGVk
KCJFWFRfc1JHQiIpKSB7CisgICAgaWYgKCFtX2FyZUVYVHNSR0JGb3JtYXRzQW5kVHlwZXNBZGRl
ZCAmJiBleHRlbnNpb25Jc0VuYWJsZWQoIkVYVF9zUkdCIl9zKSkgewogICAgICAgICBBRERfVkFM
VUVTX1RPX1NFVChtX3N1cHBvcnRlZFRleEltYWdlU291cmNlSW50ZXJuYWxGb3JtYXRzLCBTdXBw
b3J0ZWRJbnRlcm5hbEZvcm1hdHNFWFRzUkdCKTsKICAgICAgICAgQUREX1ZBTFVFU19UT19TRVQo
bV9zdXBwb3J0ZWRUZXhJbWFnZVNvdXJjZUZvcm1hdHMsIFN1cHBvcnRlZEZvcm1hdHNFWFRzUkdC
KTsKICAgICAgICAgbV9hcmVFWFRzUkdCRm9ybWF0c0FuZFR5cGVzQWRkZWQgPSB0cnVlOwpAQCAt
NjQ1Miw3ICs2NDUyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29u
dGV4dEltcGwoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TG9zdEMKICAgICBpZiAoaXNDb250
ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKG1vZGUgPT0gUmVhbExvc3RDb250
ZXh0KQotICAgICAgICBwcmludFRvQ29uc29sZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6
IGNvbnRleHQgbG9zdC4iKTsKKyAgICAgICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpF
cnJvciwgIldlYkdMOiBjb250ZXh0IGxvc3QuIl9zKTsKIAogICAgIG1fY29udGV4dExvc3RTdGF0
ZSA9IENvbnRleHRMb3N0U3RhdGUgeyBtb2RlIH07CiAgICAgbV9jb250ZXh0TG9zdFN0YXRlLT5l
cnJvcnMuYWRkKEdyYXBoaWNzQ29udGV4dEdMOjpDT05URVhUX0xPU1RfV0VCR0wpOwpAQCAtNzMy
OCw3ICs3MzI4LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludFRvQ29u
c29sZShNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYKIAogICAgIC0tbV9udW1HTEVy
cm9yc1RvQ29uc29sZUFsbG93ZWQ7CiAgICAgaWYgKCFtX251bUdMRXJyb3JzVG9Db25zb2xlQWxs
b3dlZCkKLSAgICAgICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiV2Vi
R0w6IHRvbyBtYW55IGVycm9ycywgbm8gbW9yZSBlcnJvcnMgd2lsbCBiZSByZXBvcnRlZCB0byB0
aGUgY29uc29sZSBmb3IgdGhpcyBjb250ZXh0LiIpOworICAgICAgICBwcmludFRvQ29uc29sZShN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJXZWJHTDogdG9vIG1hbnkgZXJyb3JzLCBubyBtb3JlIGVy
cm9ycyB3aWxsIGJlIHJlcG9ydGVkIHRvIHRoZSBjb25zb2xlIGZvciB0aGlzIGNvbnRleHQuIl9z
KTsKIH0KIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUZyYW1lYnVm
ZmVyVGFyZ2V0KEdDR0xlbnVtIHRhcmdldCkKQEAgLTc3NzgsNyArNzc3OCw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAgICAgIGlm
IChtX2NvbnRleHRMb3N0U3RhdGUtPm1vZGUgPT0gUmVhbExvc3RDb250ZXh0KQogICAgICAgICAg
ICAgbV9yZXN0b3JlVGltZXIuc3RhcnRPbmVTaG90KHNlY29uZHNCZXR3ZWVuUmVzdG9yZUF0dGVt
cHRzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxl
dmVsOjpFcnJvciwgIldlYkdMOiBlcnJvciByZXN0b3JpbmcgbG9zdCBjb250ZXh0LiIpOworICAg
ICAgICAgICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpFcnJvciwgIldlYkdMOiBlcnJv
ciByZXN0b3JpbmcgbG9zdCBjb250ZXh0LiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTgxNDMsNyArODE0Myw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Zm9y
Y2VDb250ZXh0TG9zdCgpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVjeWNs
ZUNvbnRleHQoKQogewotICAgIHByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJU
aGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIFdlYkdMIGNvbnRleHRzIG9uIHRoaXMgcGFnZSwgdGhl
IG9sZGVzdCBjb250ZXh0IHdpbGwgYmUgbG9zdC4iKTsKKyAgICBwcmludFRvQ29uc29sZShNZXNz
YWdlTGV2ZWw6OkVycm9yLCAiVGhlcmUgYXJlIHRvbyBtYW55IGFjdGl2ZSBXZWJHTCBjb250ZXh0
cyBvbiB0aGlzIHBhZ2UsIHRoZSBvbGRlc3QgY29udGV4dCB3aWxsIGJlIGxvc3QuIl9zKTsKICAg
ICAvLyBVc2luZyBTeW50aGV0aWNMb3N0Q29udGV4dCBtZWFucyB0aGUgZGV2ZWxvcGVyIHdvbid0
IGJlIGFibGUgdG8gZm9yY2UgdGhlIHJlc3RvcmF0aW9uCiAgICAgLy8gb2YgdGhlIGNvbnRleHQg
YnkgY2FsbGluZyBwcmV2ZW50RGVmYXVsdCgpIGluIGEgIndlYmdsY29udGV4dGxvc3QiIGV2ZW50
IGhhbmRsZXIuCiAgICAgZm9yY2VMb3N0Q29udGV4dChTeW50aGV0aWNMb3N0Q29udGV4dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKaW5k
ZXggZjllZWZjNTMyYTU0OGZlNTNiMzY3M2FmYzIwZjI2OTE2NTAyZTVmMy4uYTg1NDg1MjA5MTE4
ZGQzMzE5NmIzM2FkNDAyYWI3NzY2ZWNkNDcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcApAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQg
Q1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKCkKICAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgp
ICYmIGhhc1ZhbGlkSW1wb3J0Q29uZGl0aW9ucyhjb25kaXRpb25zKSkgewogICAgICAgICAgICAg
VVJMIGJhc2VFbGVtZW50VVJMOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcGFzc2VkIGluIGZy
b20gdGhlIEhUTUxQcmVsb2FkU2Nhbm5lciB2aWEgc2NhbigpOiB3aXRob3V0IGl0IHdlIHdpbGwg
Z2V0IHJlbGF0aXZlIFVSTHMgd3JvbmcuCiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRo
aXMgYmUgaW5jbHVkaW5nIHRoZSBjaGFyc2V0IGluIHRoZSBwcmVsb2FkIHJlcXVlc3Q/Ci0gICAg
ICAgICAgICBtX3JlcXVlc3RzLT5hcHBlbmQobWFrZVVuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oImNz
cyIsIHVybCwgYmFzZUVsZW1lbnRVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNo
ZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJlcXVlc3Q6Ok1vZHVsZVNjcmlwdDo6Tm8sIFJlZmVycmVy
UG9saWN5OjpFbXB0eVN0cmluZykpOworICAgICAgICAgICAgbV9yZXF1ZXN0cy0+YXBwZW5kKG1h
a2VVbmlxdWU8UHJlbG9hZFJlcXVlc3Q+KCJjc3MiX3MsIHVybCwgYmFzZUVsZW1lbnRVUkwsIENh
Y2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJlcXVl
c3Q6Ok1vZHVsZVNjcmlwdDo6Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZykpOwogICAg
ICAgICB9CiAgICAgICAgIG1fc3RhdGUgPSBJbml0aWFsOwogICAgIH0gZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocnVsZSwgImNoYXJzZXQiKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggOWQ2YTZjY2FkZTBi
NGQ1ZWE0MDAyYjUyMmNmZmJkNDEzZjA1NmUxZS4uNjFjNmE3YjM0YTk1NDRjODNkOWQ3ZWY1MDEw
YzQ3ZmI2OTI3ZGFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlcklkaW9tcy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgU3RyaW5nIHNlcmlhbGl6ZUZvck51bWJl
clR5cGUoY29uc3QgRGVjaW1hbCYgbnVtYmVyKQogewogICAgIGlmIChudW1iZXIuaXNaZXJvKCkp
IHsKICAgICAgICAgLy8gRGVjaW1hbDo6dG9TdHJpbmcgYXBwZW5kcyBleHBvbmVudCwgZS5nLiAi
MGUtMTgiCi0gICAgICAgIHJldHVybiBudW1iZXIuaXNOZWdhdGl2ZSgpID8gIi0wIiA6ICIwIjsK
KyAgICAgICAgcmV0dXJuIG51bWJlci5pc05lZ2F0aXZlKCkgPyAiLTAiX3MgOiAiMCJfczsKICAg
ICB9CiAgICAgcmV0dXJuIG51bWJlci50b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggMjg5NjI4YWVhODk1
YmIyOGNkMDYzMjY1YjVlNDViNjUzYTUwNThmNS4uMGEyNzFlZmVkYmM2ZWQ0MmZiMzQ1ZmFmZWJi
ZGVjYjdiNjFjYTc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UHJlbG9hZFNjYW5uZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIFRva2VuUHJlbG9hZFNjYW5uZXI6
OlRhZ0lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnRhZ0lkRm9yKGNvbnN0IEhUTUxUb2tlbjo6RGF0
YVZlCiAgICAgcmV0dXJuIFRhZ0lkOjpVbmtub3duOwogfQogCi1TdHJpbmcgVG9rZW5QcmVsb2Fk
U2Nhbm5lcjo6aW5pdGlhdG9yRm9yKFRhZ0lkIHRhZ0lkKQorQVNDSUlMaXRlcmFsIFRva2VuUHJl
bG9hZFNjYW5uZXI6OmluaXRpYXRvckZvcihUYWdJZCB0YWdJZCkKIHsKICAgICBzd2l0Y2ggKHRh
Z0lkKSB7CiAgICAgY2FzZSBUYWdJZDo6U291cmNlOgpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYXV0byBtZWRpYVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0
ZShhdHRyaWJ1dGVWYWx1ZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQobV9kb2N1bWVudCkpOwog
ICAgICAgICAgICAgICAgIFJlZlB0ciBkb2N1bWVudEVsZW1lbnQgPSBtX2RvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudCgpOwogICAgICAgICAgICAgICAgIExPRyhNZWRpYVF1ZXJpZXMsICJIVE1MUHJl
bG9hZFNjYW5uZXIgJXAgcHJvY2Vzc0F0dHJpYnV0ZSBldmFsdWF0aW5nIG1lZGlhIHF1ZXJpZXMi
LCB0aGlzKTsKLSAgICAgICAgICAgICAgICBtX21lZGlhTWF0Y2hlZCA9IE1lZGlhUXVlcnlFdmFs
dWF0b3IgeyBtX2RvY3VtZW50LnByaW50aW5nKCkgPyAicHJpbnQiIDogInNjcmVlbiIsIG1fZG9j
dW1lbnQsIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgp
IDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhU2V0LmdldCgpKTsKKyAgICAgICAgICAgICAgICBt
X21lZGlhTWF0Y2hlZCA9IE1lZGlhUXVlcnlFdmFsdWF0b3IgeyBtX2RvY3VtZW50LnByaW50aW5n
KCkgPyAicHJpbnQiX3MgOiAic2NyZWVuIl9zLCBtX2RvY3VtZW50LCBkb2N1bWVudEVsZW1lbnQg
PyBkb2N1bWVudEVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZSht
ZWRpYVNldC5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobWF0Y2goYXR0
cmlidXRlTmFtZSwgdHlwZUF0dHIpICYmIG1fdHlwZUF0dHJpYnV0ZS5pc051bGwoKSkgewogICAg
ICAgICAgICAgICAgIC8vIHdoZW4gbXVsdGlwbGUgdHlwZSBhdHRyaWJ1dGVzIHByZXNlbnQ6IGZp
cnN0IHZhbHVlIHdpbnMsIGlnbm9yZSBzdWJzZXF1ZW50ICh0byBtYXRjaCBJbWFnZUVsZW1lbnQg
cGFyc2VyIGFuZCBCbGluayBiZWhhdmlvdXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaAppbmRleCAzOWM3MDQ4Y2IxOGUyNGU0ZmVjM2FmZTYy
YjRkOWY1NzVjYzBmMzQ4Li41NzYxMWJkNmZjYTE5MjRiNDRmNWI4YzEyZTg0YmVhMzIyMDExYmJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
aApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIFRhZ0lkIHRhZ0lkRm9y
KGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlY3RvciYpOwogCi0gICAgc3RhdGljIFN0cmluZyBpbml0
aWF0b3JGb3IoVGFnSWQpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgaW5pdGlhdG9yRm9yKFRh
Z0lkKTsKIAogICAgIHZvaWQgdXBkYXRlUHJlZGljdGVkQmFzZVVSTChjb25zdCBIVE1MVG9rZW4m
LCBib29sIHNob3VsZFJlc3RyaWN0QmFzZVVSTFNjaGVtZXMpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oCmluZGV4IDljNDQ2MTg5
MTM2YjFjNTE4ZDhlZDljMTdkOTc1NjhkYmZlMzFlNzMuLjhkYWY5MzQzYWMwYjg1YWU2ZTFmNjFm
ZDM0MmU0Mjk1YmRjYmRiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxSZXNvdXJjZVByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxSZXNvdXJjZVByZWxvYWRlci5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgWWVzLAogICAgICAgICBObywKICAgICB9OwotICAgIFByZWxvYWRSZXF1ZXN0KGNvbnN0IFN0
cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBjb25zdCBVUkwmIGJh
c2VVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSwgY29uc3QgU3RyaW5nJiBt
ZWRpYUF0dHJpYnV0ZSwgTW9kdWxlU2NyaXB0IG1vZHVsZVNjcmlwdCwgY29uc3QgUmVmZXJyZXJQ
b2xpY3kmIHJlZmVycmVyUG9saWN5KQorICAgIFByZWxvYWRSZXF1ZXN0KEFTQ0lJTGl0ZXJhbCBp
bml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIGNvbnN0IFVSTCYgYmFzZVVSTCwg
Q2FjaGVkUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VUeXBlLCBjb25zdCBTdHJpbmcmIG1lZGlhQXR0
cmlidXRlLCBNb2R1bGVTY3JpcHQgbW9kdWxlU2NyaXB0LCBjb25zdCBSZWZlcnJlclBvbGljeSYg
cmVmZXJyZXJQb2xpY3kpCiAgICAgICAgIDogbV9pbml0aWF0b3IoaW5pdGlhdG9yKQogICAgICAg
ICAsIG1fcmVzb3VyY2VVUkwocmVzb3VyY2VVUkwpCiAgICAgICAgICwgbV9iYXNlVVJMKGJhc2VV
UkwuaXNvbGF0ZWRDb3B5KCkpCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgVVJMIGNvbXBsZXRlVVJMKERvY3VtZW50Jik7CiAKLSAgICBTdHJpbmcgbV9pbml0aWF0b3I7
CisgICAgQVNDSUlMaXRlcmFsIG1faW5pdGlhdG9yOwogICAgIFN0cmluZyBtX3Jlc291cmNlVVJM
OwogICAgIFVSTCBtX2Jhc2VVUkw7CiAgICAgU3RyaW5nIG1fY2hhcnNldDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCAxOWZjODVjZDg5N2E3Y2VhZGI0
MWQ1MDI1YTc5YWI5Mjg3N2RmMTZhLi5iY2Y4ZTE3MmE2NzMyMGY2Njg4MTIwNzQ3OWRmN2E4MGFi
YWMxN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBA
IC0xODIsNyArMTgyLDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlUHNldWRvQXR0cmlidXRlcyhOb2Rl
JiBub2RlKQogRXhjZXB0aW9uT3I8UmVmPFRleHRUcmFja0N1ZT4+IFRleHRUcmFja0N1ZTo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBEb2N1bWVu
dEZyYWdtZW50JiBjdWVGcmFnbWVudCkKIHsKICAgICBpZiAoIWN1ZUZyYWdtZW50LmZpcnN0Q2hp
bGQoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWROb2RlVHlwZUVycm9yLCAi
RW1wdHkgY3VlIGZyYWdtZW50IiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZE5vZGVUeXBlRXJyb3IsICJFbXB0eSBjdWUgZnJhZ21lbnQiX3MgfTsKIAogICAgIGZvciAoTm9k
ZSogbm9kZSA9IGN1ZUZyYWdtZW50LmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5l
eHRTaWJsaW5nKCkpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBjaGVja0ZvckludmFsaWROb2Rl
VHlwZXMoKm5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWVHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlR2VuZXJpYy5jcHAKaW5kZXggNWU1OGM3OTc0YzM5MWI4ZmQ1YWFlMzA1ZjU0ZDkxYWU5Y2Qw
NmMxNi4uNGVkMGZjYTQ1OWZjZjIwMzY2NTIzNTNlZWFlNTI0NzUyMjYwN2ZiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwCkBAIC0x
MjIsMTAgKzEyMiwxMCBAQCB2b2lkIFRleHRUcmFja0N1ZUdlbmVyaWNCb3hFbGVtZW50OjphcHBs
eUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplKQogICAgICAgICBtYXhTaXpl
ID0gMTAwLjAgLSB0ZXh0UG9zaXRpb247CiAKICAgICBpZiAoY3VlLT5nZXRXcml0aW5nRGlyZWN0
aW9uKCkgPT0gVlRUQ3VlOjpIb3Jpem9udGFsKSB7Ci0gICAgICAgIHNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlNaW5XaWR0aCwgIm1pbi1jb250ZW50Iik7CisgICAgICAgIHNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNaW5XaWR0aCwgIm1pbi1jb250ZW50Il9zKTsK
ICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heFdpZHRoLCBtYXhT
aXplLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNaW5IZWlnaHQsICJtaW4tY29udGVu
dCIpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWluSGVpZ2h0
LCAibWluLWNvbnRlbnQiX3MpOwogICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5TWF4SGVpZ2h0LCBtYXhTaXplLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCmluZGV4IDAwODhiZmFlMDkz
NGM5YjRhY2YwZDA0MmUxOTIwMzU0NDUyMGMwMGQuLmZjYjFkODQ0ODliYTJhZjEwNzYxNzBlYzM4
YmJlYzI0NGNmNDhlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRU
Q3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTIx
OCwxNCArMjE4LDE0IEBAIHZvaWQgVlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMoY29uc3Qg
SW50U2l6ZSYgdmlkZW9TaXplKQogICAgIGlmIChjdWUtPnZlcnRpY2FsKCkgPT0gaG9yaXpvbnRh
bEtleXdvcmQoKSkgewogICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
V2lkdGgsIG5ld0N1ZVNpemUsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAg
IHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIENTU1ZhbHVlQXV0byk7
Ci0gICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNaW5XaWR0aCwgIm1p
bi1jb250ZW50Iik7CisgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlN
aW5XaWR0aCwgIm1pbi1jb250ZW50Il9zKTsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eU1heFdpZHRoLCBtYXhTaXplLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRB
R0UpOwogICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1l
bnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxpZXIgIT0gMS4wICYmIHBvc2l0aW9uLmZp
cnN0KQogICAgICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQs
IHN0YXRpY19jYXN0PGRvdWJsZT4oKnBvc2l0aW9uLmZpcnN0IC0gKG5ld0N1ZVNpemUgLSBjdWUt
PmdldENTU1NpemUoKSkgLyAyKSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKICAgICB9
IGVsc2UgewogICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgs
IENTU1ZhbHVlQXV0byk7CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlIZWlnaHQsIG5ld0N1ZVNpemUsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7Ci0gICAg
ICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNaW5IZWlnaHQsICJtaW4tY29u
dGVudCIpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWluSGVp
Z2h0LCAibWluLWNvbnRlbnQiX3MpOwogICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5TWF4SGVpZ2h0LCBtYXhTaXplLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0Up
OwogICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1lbnQg
PT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxpZXIgIT0gMS4wICYmIHBvc2l0aW9uLnNlY29u
ZCkKICAgICAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHN0
YXRpY19jYXN0PGRvdWJsZT4oKnBvc2l0aW9uLnNlY29uZCAtIChuZXdDdWVTaXplIC0gY3VlLT5n
ZXRDU1NTaXplKCkpIC8gMiksIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMDY5MTI3M2E0YTA4MzBh
ZDdmZTMxNGM4NTY3YmQ0ZmZiYWVmYTJiMC4uOWY1ZGE1MWJlNzhmZGFhNjFiN2U1MDk1ODM0NWRm
NDNiNWYwYmQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNw
cApAQCAtOTIsNyArOTIsNyBAQCBib29sIFdlYlZUVFBhcnNlcjo6cGFyc2VGbG9hdFBlcmNlbnRh
Z2VWYWx1ZVBhaXIoVlRUU2Nhbm5lciYgdmFsdWVTY2FubmVyLCBjaGFyCiAKIFdlYlZUVFBhcnNl
cjo6V2ViVlRUUGFyc2VyKFdlYlZUVFBhcnNlckNsaWVudCYgY2xpZW50LCBEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9kZWNvZGVyKFRleHRS
ZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsIFBBTDo6VVRGOEVuY29kaW5nKCkp
KQorICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFp
biJfcywgUEFMOjpVVEY4RW5jb2RpbmcoKSkpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiB7CiB9
CkBAIC03MDgsNyArNzA4LDcgQEAgdm9pZCBXZWJWVFRUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJl
ZUZyb21Ub2tlbihEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgICAgIFN0cmluZyBjaGFyYWN0ZXJz
U3RyaW5nID0gbV90b2tlbi5jaGFyYWN0ZXJzKCk7CiAgICAgICAgIE1lZGlhVGltZSBwYXJzZWRU
aW1lU3RhbXA7CiAgICAgICAgIGlmIChXZWJWVFRQYXJzZXI6OmNvbGxlY3RUaW1lU3RhbXAoY2hh
cmFjdGVyc1N0cmluZywgcGFyc2VkVGltZVN0YW1wKSkKLSAgICAgICAgICAgIG1fY3VycmVudE5v
ZGUtPnBhcnNlckFwcGVuZENoaWxkKFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKGRvY3Vt
ZW50LCAidGltZXN0YW1wIiwgY2hhcmFjdGVyc1N0cmluZykpOworICAgICAgICAgICAgbV9jdXJy
ZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQoUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUo
ZG9jdW1lbnQsICJ0aW1lc3RhbXAiX3MsIGNoYXJhY3RlcnNTdHJpbmcpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4
IDMwOTNmOWM5MjAzMTI0OWRhOWNjOTRjMzJkZTg5MTVjMmNiNzk1OTAuLjZhYTYxMjZkZDdjYWM2
ODAxMTdiMjc3YjQ0YTZjMTg2ZWMzNzA1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CkBAIC0xOTksOSArMTk5LDkgQEAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxJbnNwZWN0b3JB
dWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OkNvbXB1dGVkUHJvcGVydGllcz4KICAgICAgICAgICAg
IFN0cmluZyBhcmlhUmVsZXZhbnRBdHRyVmFsdWUgPSBheE9iamVjdC0+bGl2ZVJlZ2lvblJlbGV2
YW50KCk7CiAgICAgICAgICAgICBpZiAoIWFyaWFSZWxldmFudEF0dHJWYWx1ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBsaXZlUmVnaW9uUmVsZXZhbnQ7Ci0g
ICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudEFkZGl0aW9ucyA9ICJhZGRpdGlvbnMi
OwotICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZhbnRSZW1vdmFscyA9ICJyZW1vdmFs
cyI7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudFRleHQgPSAidGV4dCI7Cisg
ICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudEFkZGl0aW9ucyA9ICJhZGRpdGlvbnMi
X3M7CisgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudFJlbW92YWxzID0gInJlbW92
YWxzIl9zOworICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZhbnRUZXh0ID0gInRleHQi
X3M7CiAKICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiB2YWx1ZXMgPSBTcGFjZVNwbGl0U3Ry
aW5nKGFyaWFSZWxldmFudEF0dHJWYWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKHZh
bHVlcy5jb250YWlucygiYWxsIikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHAKaW5kZXggYmJjYzc5YWJjMzg2OTVlYzA5YTQwYjgyNTE2ZWM5YTk2NGVj
NjZiZC4uNGRmZGU2NjNlOGJiODMzMjlmNTYyMDUxMzM0OTVhN2FiYjMyYmNkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKQEAgLTExMDAsNyArMTEw
MCw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFy
aWFudCBkYXRhKQogICAgICAgICAgICAgICAgIGlmIChpbWFnZSAmJiBpbWFnZSAhPSAmSW1hZ2U6
Om51bGxJbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFn
ZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwotICAgICAgICAgICAgICAgICAgICBkYXRhVVJM
ID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAgICAgICAgICAgICAg
ICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtMTExNSw3ICsxMTE1LDcgQEAgaW50
IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEp
CiAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9h
dFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKICAgICAgICAgICAgIGlmIChpbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgICAgIHZpZGVv
RWxlbWVudC0+cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoaW1hZ2VCdWZmZXItPmNvbnRleHQo
KSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSk7Ci0gICAgICAgICAg
ICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAg
ICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmci
X3MpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpbmRleCA9IGluZGV4Rm9yRGF0YShk
YXRhVVJMKTsKQEAgLTExMzQsNyArMTEzNCw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4
Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFyaWFudCBkYXRhKQogICAgICAgICBbJl0gKGNvbnN0IFJl
ZlB0cjxDYW52YXNQYXR0ZXJuPiYgY2FudmFzUGF0dGVybikgeyBpdGVtID0gYnVpbGRBcnJheUZv
ckNhbnZhc1BhdHRlcm4oKmNhbnZhc1BhdHRlcm4pOyB9LAogICAgICAgICBbJl0gKGNvbnN0IFJl
ZlB0cjxJbWFnZURhdGE+JiBpbWFnZURhdGEpIHsgaXRlbSA9IGJ1aWxkQXJyYXlGb3JJbWFnZURh
dGEoKmltYWdlRGF0YSk7IH0sCiAgICAgICAgIFsmXSAoUmVmUHRyPEltYWdlQml0bWFwPiYgaW1h
Z2VCaXRtYXApIHsKLSAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGltYWdlQml0bWFw
LT5idWZmZXIoKS0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKSk7CisgICAgICAgICAgICBpbmRleCA9
IGluZGV4Rm9yRGF0YShpbWFnZUJpdG1hcC0+YnVmZmVyKCktPnRvRGF0YVVSTCgiaW1hZ2UvcG5n
Il9zKSk7CiAgICAgICAgIH0sCiAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPFNjcmlwdENhbGxT
dGFjaz4mIHNjcmlwdENhbGxTdGFjaykgewogICAgICAgICAgICAgYXV0byBhcnJheSA9IEpTT046
OkFycmF5T2Y8ZG91YmxlPjo6Y3JlYXRlKCk7CkBAIC0xMTUxLDcgKzExNTEsNyBAQCBpbnQgSW5z
cGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkKICAg
ICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0gJkltYWdlOjpudWxsSW1hZ2UoKSkg
ewogICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAg
ICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBGbG9h
dFBvaW50KDAsIDApKTsKLSAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVy
LT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0g
aW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAKQEAgLTEzOTAsNyArMTM5MCw3IEBAIFJlZjxKU09OOjpBcnJheU9m
PEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVy
bihjb25zCiAgICAgICAgIHJlcGVhdCA9ICJuby1yZXBlYXQiX3M7CiAKICAgICBhdXRvIGFycmF5
ID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwotICAgIGFycmF5LT5hZGRJ
dGVtKGluZGV4Rm9yRGF0YShpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKSkpOwor
ICAgIGFycmF5LT5hZGRJdGVtKGluZGV4Rm9yRGF0YShpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJp
bWFnZS9wbmciX3MpKSk7CiAgICAgYXJyYXktPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKHJlcGVhdCkp
OwogICAgIHJldHVybiBhcnJheTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCBiNThlNzNlNzA0
ZjQzNDFjNTM3NTk2MjI5MTZkYzdjMWQ5ZWJlNDI0Li45MGNlNWU3Y2I5NmRmNjI1YjA3YjQyM2Jm
OTVkZDhiN2Y3NmZjMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC02Miw3ICs2Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAotc3RhdGlj
IGNvbnN0IGNoYXIqIGluc3BlY3RvckF0dGFjaGVkSGVpZ2h0U2V0dGluZyA9ICJpbnNwZWN0b3JB
dHRhY2hlZEhlaWdodCI7CitzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBpbnNwZWN0b3JB
dHRhY2hlZEhlaWdodFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHQiX3M7CiBzdGF0
aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdEF0dGFjaGVkSGVpZ2h0ID0gMzAwOwogc3RhdGljIGNv
bnN0IGZsb2F0IG1pbmltdW1BdHRhY2hlZEhlaWdodCA9IDI1MC4wZjsKIHN0YXRpYyBjb25zdCBm
bG9hdCBtYXhpbXVtQXR0YWNoZWRIZWlnaHRSYXRpbyA9IDAuNzVmOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCBhODA5OWM4
MWNjZTYyMmM2MTM0M2ZlYmYyOTIwNmQ2NGJhMTJlNjdkLi5lOTIwYWQxNjljNzQxZGEzZjNjYzI1
ZWEzMTI4YTQzNGJkMThmZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKFByb2Nlc3Np
bmdVc2VyR2VzdHVyZSwgZHluYW1pY0Rvd25jYXN0PERvY3VtZW50PihleGVjdXRpb25Db250ZXh0
KG1fZnJvbnRlbmRBcGlPYmplY3QuZ2xvYmFsT2JqZWN0KCkpKSk7CiAgICAgICAgICAgICBpbnQg
aXRlbU51bWJlciA9IGFjdGlvbiAtIENvbnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWc7CiAKLSAg
ICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2Zyb250
ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQiLCBXZWJDb3JlOjpmdW5jdGlv
bkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CisgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3Jp
cHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9mcm9udGVuZEFwaU9iamVjdCwgImNvbnRleHRNZW51
SXRlbVNlbGVjdGVkIl9zLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVh
ZCk7CiAgICAgICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChpdGVtTnVtYmVyKTsKICAg
ICAgICAgICAgIGZ1bmN0aW9uLmNhbGwoKTsKICAgICAgICAgfQpAQCAtMTIwLDcgKzEyMCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjb250ZXh0TWVudUNsZWFyZWQoKSBvdmVycmlkZQogICAgIHsK
ICAgICAgICAgaWYgKG1fZnJvbnRlbmRIb3N0KSB7Ci0gICAgICAgICAgICBEZXByZWNhdGVkOjpT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9mcm9udGVuZEFwaU9iamVjdCwgImNvbnRleHRN
ZW51Q2xlYXJlZCIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsK
KyAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2Zy
b250ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVDbGVhcmVkIl9zLCBXZWJDb3JlOjpmdW5jdGlv
bkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgICAgICAgICBmdW5jdGlvbi5jYWxsKCk7
CiAKICAgICAgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5tX21lbnVQcm92aWRlciA9IG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXgg
NGY2M2FkY2U5MzkxNmRiMjMyMGU5Njc4YWFiZmUwZjNjZDk5NzYyYi4uNzcxMGExYjVkODJiNGVj
YmM2YjhmZTYyODRjZDc2ZTQ0OTg3M2ZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIEVycm9yU3RyaW5nT3I8
dm9pZD4gSW5zcGVjdG9yT3ZlcmxheTo6c2V0R3JpZE92ZXJsYXlGb3JOb2RlKE5vZGUmIG5vZGUs
IGNvbnN0IEluCiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUucmVuZGVyZXIo
KTsKICAgICBpZiAoIWlzPFJlbmRlckdyaWQ+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKCJOb2RlIGRvZXMgbm90IGluaXRpYXRlIGEgZ3JpZCBjb250ZXh0Iik7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm9kZSBkb2VzIG5vdCBpbml0aWF0ZSBhIGdy
aWQgY29udGV4dCJfcyk7CiAKICAgICByZW1vdmVHcmlkT3ZlcmxheUZvck5vZGUobm9kZSk7CiAK
QEAgLTYyNyw3ICs2MjcsNyBAQCBFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck92ZXJsYXk6
OnNldEdyaWRPdmVybGF5Rm9yTm9kZShOb2RlJiBub2RlLCBjb25zdCBJbgogRXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JPdmVybGF5OjpjbGVhckdyaWRPdmVybGF5Rm9yTm9kZShOb2RlJiBu
b2RlKQogewogICAgIGlmICghcmVtb3ZlR3JpZE92ZXJsYXlGb3JOb2RlKG5vZGUpKQotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vIGdyaWQgb3ZlcmxheSBleGlzdHMgZm9yIHRoZSBu
b2RlLCBzbyBjYW5ub3QgY2xlYXIuIik7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgi
Tm8gZ3JpZCBvdmVybGF5IGV4aXN0cyBmb3IgdGhlIG5vZGUsIHNvIGNhbm5vdCBjbGVhci4iX3Mp
OwogCiAgICAgdXBkYXRlKCk7CiAKQEAgLTY1Miw3ICs2NTIsNyBAQCBib29sIEluc3BlY3Rvck92
ZXJsYXk6OnJlbW92ZUZsZXhPdmVybGF5Rm9yTm9kZShOb2RlJiBub2RlKQogRXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JPdmVybGF5OjpzZXRGbGV4T3ZlcmxheUZvck5vZGUoTm9kZSYgbm9k
ZSwgY29uc3QgSW5zcGVjdG9yT3ZlcmxheTo6RmxleDo6Q29uZmlnJiBmbGV4T3ZlcmxheUNvbmZp
ZykKIHsKICAgICBpZiAoIWlzPFJlbmRlckZsZXhpYmxlQm94Pihub2RlLnJlbmRlcmVyKCkpKQot
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vZGUgZG9lcyBub3QgaW5pdGlhdGUgYSBm
bGV4IGNvbnRleHQiKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb2RlIGRvZXMg
bm90IGluaXRpYXRlIGEgZmxleCBjb250ZXh0Il9zKTsKIAogICAgIHJlbW92ZUZsZXhPdmVybGF5
Rm9yTm9kZShub2RlKTsKIApAQCAtNjY2LDcgKzY2Niw3IEBAIEVycm9yU3RyaW5nT3I8dm9pZD4g
SW5zcGVjdG9yT3ZlcmxheTo6c2V0RmxleE92ZXJsYXlGb3JOb2RlKE5vZGUmIG5vZGUsIGNvbnN0
IEluCiBFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck92ZXJsYXk6OmNsZWFyRmxleE92ZXJs
YXlGb3JOb2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKCFyZW1vdmVGbGV4T3ZlcmxheUZvck5v
ZGUobm9kZSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm8gZmxleCBvdmVybGF5
IGV4aXN0cyBmb3IgdGhlIG5vZGUsIHNvIGNhbm5vdCBjbGVhci4iKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKCJObyBmbGV4IG92ZXJsYXkgZXhpc3RzIGZvciB0aGUgbm9kZSwgc28g
Y2Fubm90IGNsZWFyLiJfcyk7CiAKICAgICB1cGRhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDBhMGRjMTRiOTEyNTAy
MmIzYjRiYTYwNWQ2NzgwZTU2MDA0NzBlNWIuLjc3MGFkYTRjZGE3ZGE5YTE3OGY5OThiOWFmOWEx
NzcxOWI3MmNjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAKQEAgLTU1NCw4ICs1NTQsOCBAQCBSZWY8UHJvdG9jb2w6OkNTUzo6Q1NT
U3R5bGU+IEluc3BlY3RvclN0eWxlOjpidWlsZE9iamVjdEZvclN0eWxlKCkgY29uc3QKICAgICBp
ZiAoYXV0byBzdHlsZUlkID0gbV9zdHlsZUlkLmFzUHJvdG9jb2xWYWx1ZTxQcm90b2NvbDo6Q1NT
OjpDU1NTdHlsZUlkPigpKQogICAgICAgICByZXN1bHQtPnNldFN0eWxlSWQoc3R5bGVJZC5yZWxl
YXNlTm9uTnVsbCgpKTsKIAotICAgIHJlc3VsdC0+c2V0V2lkdGgobV9zdHlsZS0+Z2V0UHJvcGVy
dHlWYWx1ZSgid2lkdGgiKSk7Ci0gICAgcmVzdWx0LT5zZXRIZWlnaHQobV9zdHlsZS0+Z2V0UHJv
cGVydHlWYWx1ZSgiaGVpZ2h0IikpOworICAgIHJlc3VsdC0+c2V0V2lkdGgobV9zdHlsZS0+Z2V0
UHJvcGVydHlWYWx1ZSgid2lkdGgiX3MpKTsKKyAgICByZXN1bHQtPnNldEhlaWdodChtX3N0eWxl
LT5nZXRQcm9wZXJ0eVZhbHVlKCJoZWlnaHQiX3MpKTsKIAogICAgIGlmIChhdXRvIHNvdXJjZURh
dGEgPSBleHRyYWN0U291cmNlRGF0YSgpKSB7CiAgICAgICAgIGlmIChhdXRvIHJhbmdlID0gYnVp
bGRTb3VyY2VSYW5nZU9iamVjdChzb3VyY2VEYXRhLT5ydWxlQm9keVJhbmdlLCBtX3BhcmVudFN0
eWxlU2hlZXQtPmxpbmVFbmRpbmdzKCkpKQpAQCAtNjg2LDcgKzY4Niw3IEBAIFJlZjxQcm90b2Nv
bDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBj
b25zdAogCiAgICAgICAgIC8vIERlZmF1bHQgInByaW9yaXR5IiA9PSAiIi4KICAgICAgICAgaWYg
KHByb3BlcnR5RW50cnkuaW1wb3J0YW50KQotICAgICAgICAgICAgcHJvcGVydHktPnNldFByaW9y
aXR5KCJpbXBvcnRhbnQiKTsKKyAgICAgICAgICAgIHByb3BlcnR5LT5zZXRQcmlvcml0eSgiaW1w
b3J0YW50Il9zKTsKIAogICAgICAgICBpZiAoaXQtPmhhc1NvdXJjZSkgewogICAgICAgICAgICAg
Ly8gVGhlIHByb3BlcnR5IHJhbmdlIGlzIHJlbGF0aXZlIHRvIHRoZSBzdHlsZSBib2R5IHN0YXJ0
LgpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgc3RhdGljIFJlZjxQcm90b2NvbDo6Q1NTOjpDU1NTZWxl
Y3Rvcj4gYnVpbGRPYmplY3RGb3JTZWxlY3RvckhlbHBlcihjb25zdCBTdHJpbmcKIAogc3RhdGlj
IFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPj4gc2VsZWN0b3Jz
RnJvbVNvdXJjZShjb25zdCBDU1NSdWxlU291cmNlRGF0YSogc291cmNlRGF0YSwgY29uc3QgU3Ry
aW5nJiBzaGVldFRleHQsIGNvbnN0IFZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+IHNlbGVjdG9y
cykKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVz
c2lvbj4gY29tbWVudCgiL1xcKlteXSo/XFwqLyIsIEpTQzo6WWFycjo6VGV4dENhc2VTZW5zaXRp
dmUsIEpTQzo6WWFycjo6TXVsdGlsaW5lRW5hYmxlZCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24+IGNvbW1lbnQoIi9cXCpbXl0qP1xcKi8i
X3MsIEpTQzo6WWFycjo6VGV4dENhc2VTZW5zaXRpdmUsIEpTQzo6WWFycjo6TXVsdGlsaW5lRW5h
YmxlZCk7CiAKICAgICBhdXRvIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkNTUzo6
Q1NTU2VsZWN0b3I+OjpjcmVhdGUoKTsKICAgICB1bnNpZ25lZCBzZWxlY3RvckluZGV4ID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5p
bWF0aW9uQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBbmltYXRpb25BZ2VudC5jcHAKaW5kZXggMGJiY2M1MWE5Mzc0ODk4ODU1ZWE5MmY4YjNjYTdi
MDUxMTU5NDdjNi4uYTJjMWI5MjQwOTYxZmVhZTMyMTM5NjU5YjkzZTZhYmNkYjFjZjljNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRp
b25BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBbmltYXRpb25BZ2VudC5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+IEluc3BlY3RvckFu
aW1hdGlvbgogCiAgICAgYXV0byBvYmplY3QgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KHZh
bHVlLCBvYmplY3RHcm91cCk7CiAgICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IHVuYWJsZSB0byBjYXN0IEFuaW1hdGlvbiIpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludGVybmFsIGVycm9yOiB1bmFibGUgdG8g
Y2FzdCBBbmltYXRpb24iX3MpOwogCiAgICAgcmV0dXJuIG9iamVjdC5yZWxlYXNlTm9uTnVsbCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNTU0FnZW50LmNwcAppbmRleCAxNTkxMjAyNmQyYzE1MWY0MTk0OTQ0YTlmMGZhZGExODk4MDRm
ZmUzLi4yZWI5YjczY2JlZTdiZDdmMDQ2MGY0MzRmZjZhZmJlNTBhODFlMjdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNw
cApAQCAtNjA1LDcgKzYwNSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxQcm90b2Nv
bDo6Q1NTOjpGb250Pj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEZvbnREYXRhCiAgICAgCiAgICAg
YXV0byogY29tcHV0ZWRTdHlsZSA9IG5vZGUtPmNvbXB1dGVkU3R5bGUoKTsKICAgICBpZiAoIWNv
bXB1dGVkU3R5bGUpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm8gY29tcHV0ZWQg
c3R5bGUgZm9yIG5vZGUuIik7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm8gY29t
cHV0ZWQgc3R5bGUgZm9yIG5vZGUuIl9zKTsKICAgICAKICAgICByZXR1cm4gYnVpbGRPYmplY3RG
b3JGb250KGNvbXB1dGVkU3R5bGUtPmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKSk7CiB9CkBA
IC02NjUsNyArNjY1LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpD
U1M6OkNTU1N0eWxlU2hlZXRCb2R5Pj4gSW5zcGVjdG9yQ1NTQWdlbnQKIAogICAgIGF1dG8gc3R5
bGVTaGVldCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgp
OwogICAgIGlmICghc3R5bGVTaGVldCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJ
bnRlcm5hbCBlcnJvcjogbWlzc2luZyBzdHlsZSBzaGVldCIpOworICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIkludGVybmFsIGVycm9yOiBtaXNzaW5nIHN0eWxlIHNoZWV0Il9zKTsKIAog
ICAgIHJldHVybiBzdHlsZVNoZWV0LnJlbGVhc2VOb25OdWxsKCk7CiB9CkBAIC03NDcsNyArNzQ3
LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpDU1M6OkNTU1J1bGU+
PiBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVMKIAogICAgIGF1dG8gcnVsZSA9IGluc3BlY3Rv
clN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yUnVsZShpbnNwZWN0b3JTdHlsZVNoZWV0LT5ydWxl
Rm9ySWQoY29tcG91bmRJZCkpOwogICAgIGlmICghcnVsZSkKLSAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKCJJbnRlcm5hbCBlcnJvcjogbWlzc2luZyBzdHlsZSBzaGVldCIpOworICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludGVybmFsIGVycm9yOiBtaXNzaW5nIHN0eWxlIHNo
ZWV0Il9zKTsKIAogICAgIHJldHVybiBydWxlLnJlbGVhc2VOb25OdWxsKCk7CiB9CkBAIC04MzYs
NyArODM2LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpDU1M6OkNT
U1J1bGU+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZSgKIAogICAgIGF1dG8gcnVsZSA9IGlu
c3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yUnVsZShpbnNwZWN0b3JTdHlsZVNoZWV0
LT5ydWxlRm9ySWQocmF3QWN0aW9uLm5ld1J1bGVJZCgpKSk7CiAgICAgaWYgKCFydWxlKQotICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludGVybmFsIGVycm9yOiBtaXNzaW5nIHN0eWxl
IHNoZWV0Iik7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6
IG1pc3Npbmcgc3R5bGUgc2hlZXQiX3MpOwogCiAgICAgcmV0dXJuIHJ1bGUucmVsZWFzZU5vbk51
bGwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggMWMxNjY4ZDk5YzdhZGFjYjBlMGYwYjUwOGMy
MWVjZmU2MTE5NzA0Yi4uZjVkMDAyOWQxZDBlOWYyOTYwOTNjMzkwN2Y2NjU3MjYxMmQ2NzE2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+IEluc3BlY3RvckNhbnZh
c0FnZQogCiAgICAgYXV0byByZXN1bHQgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KHZhbHVl
LCBvYmplY3RHcm91cCk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IHVuYWJsZSB0byBjYXN0IENvbnRleHQiKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRlcm5hbCBlcnJvcjogdW5hYmxlIHRvIGNhc3Qg
Q29udGV4dCJfcyk7CiAKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCmluZGV4IDYwOGYyZWI2NWY0MGU2YzE5Y2FjM2YxZGYwZTM1YzY4OWFiMWYxMDIuLmYw
NDY2ODgwZTg4YmIwMTNlNDE4MTc1YTA3YTA1ODIxZmZkYmVmNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC05
NTQsNyArOTU0LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8
U3RyaW5nPj4+IEluc3BlY3RvckRPTUFnZW50OjpnZXRTdXBwb3IKIHsKICAgICBhdXRvIGV2ZW50
TmFtZXMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwogCi0jZGVmaW5lIERPTV9F
VkVOVF9OQU1FU19BREQobmFtZSkgZXZlbnROYW1lcy0+YWRkSXRlbSgjbmFtZSk7CisjZGVmaW5l
IERPTV9FVkVOVF9OQU1FU19BREQobmFtZSkgZXZlbnROYW1lcy0+YWRkSXRlbSgjbmFtZSIiX3Mp
OwogICAgIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSChET01fRVZFTlRfTkFNRVNfQUREKQogI3Vu
ZGVmIERPTV9FVkVOVF9OQU1FU19BREQKIApAQCAtMTUyOSw3ICsxNTI5LDcgQEAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6c2hvd0dy
aWRPdmVybGF5KEluc3AKIAogICAgIGF1dG8gcGFyc2VkQ29sb3IgPSBwYXJzZUNvbG9yKFdURk1v
dmUoZ3JpZENvbG9yKSk7CiAgICAgaWYgKCFwYXJzZWRDb2xvcikKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKCJJbnZhbGlkIGNvbG9yIGNvdWxkIG5vdCBiZSBwYXJzZWQuIik7CisgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW52YWxpZCBjb2xvciBjb3VsZCBub3QgYmUgcGFy
c2VkLiJfcyk7CiAKICAgICBJbnNwZWN0b3JPdmVybGF5OjpHcmlkOjpDb25maWcgY29uZmlnOwog
ICAgIGNvbmZpZy5ncmlkQ29sb3IgPSAqcGFyc2VkQ29sb3I7CkBAIC0xNTY5LDcgKzE1NjksNyBA
QCBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFn
ZW50OjpzaG93RmxleE92ZXJsYXkoSW5zcAogCiAgICAgYXV0byBwYXJzZWRDb2xvciA9IHBhcnNl
Q29sb3IoV1RGTW92ZShmbGV4Q29sb3IpKTsKICAgICBpZiAoIXBhcnNlZENvbG9yKQotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludmFsaWQgY29sb3IgY291bGQgbm90IGJlIHBhcnNl
ZC4iKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnZhbGlkIGNvbG9yIGNvdWxk
IG5vdCBiZSBwYXJzZWQuIl9zKTsKIAogICAgIEluc3BlY3Rvck92ZXJsYXk6OkZsZXg6OkNvbmZp
ZyBjb25maWc7CiAgICAgY29uZmlnLmZsZXhDb2xvciA9ICpwYXJzZWRDb2xvcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQuY3BwCmluZGV4IDgwMjZlMmNlZDBiMmQyMWIyMTNlNGRiNDllODUxM2RkNDMz
MTQ5MzUuLjVhMDIwNzVlMWZhMDM3ZWRhODFjMjdhMzJmMDliMDVkZGQ3MjE0NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50QnJlYWtwb2lu
dChQcm90CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKCJOb3Qgc3VwcG9ydGVkIik7CisgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KCJOb3Qgc3VwcG9ydGVkIl9zKTsKIH0KIAogUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRCcmVha3BvaW50KFByb3RvY29s
OjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZSBicmVha3BvaW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBldmVudE5hbWUpCkBAIC0yMTUsNyArMjE1LDcgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRCcmVha3Bv
aW50KFAKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQiKTsKKyAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
Ik5vdCBzdXBwb3J0ZWQiX3MpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OndpbGxIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBFdmVudCYgZXZlbnQsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lcikKQEAgLTQxMCw4ICs0MTAsOCBAQCB2b2lkIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OmJyZWFrT25VUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIHVybCwgVVJM
QnJlYWtwbwogICAgIH0KIAogICAgIFJlZjxKU09OOjpPYmplY3Q+IGV2ZW50RGF0YSA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJyZWFrcG9pbnRV
UkwiLCBicmVha3BvaW50VVJMKTsKLSAgICBldmVudERhdGEtPnNldFN0cmluZygidXJsIiwgdXJs
KTsKKyAgICBldmVudERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFVSTCJfcywgYnJlYWtwb2lu
dFVSTCk7CisgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoInVybCJfcywgdXJsKTsKICAgICBtX2Rl
YnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShicmVha1JlYXNvbiwgV1RGTW92ZShldmVudERhdGEp
LCBXVEZNb3ZlKGJyZWFrcG9pbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4
IDEzZmMwYjgxZWY4NzZiNTllOTE4ZjE5ZGQ5ODY5OWM0NWZmNjMwMjAuLmM0NmY5YWJhNjIyOGY2
YzcwNjhiYTUwYzczYzMyMzY4ZTZjMTljMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAg
LTE5NywxMyArMTk3LDEzIEBAIFJlZlB0cjxTdG9yYWdlQXJlYT4gSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEoUHJvdG9jb2w6OkVycm9yU3RyCiB7CiAgICAgYXV0byBz
ZWN1cml0eU9yaWdpbiA9IHN0b3JhZ2VJZC0+Z2V0U3RyaW5nKFByb3RvY29sOjpET01TdG9yYWdl
OjpTdG9yYWdlSWQ6OnNlY3VyaXR5T3JpZ2luS2V5KTsKICAgICBpZiAoIXNlY3VyaXR5T3JpZ2lu
KSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcgc2VjdXJpdHlPcmlnaW4gaW4gZ2l2
ZW4gc3RvcmFnZUlkIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBzZWN1cml0eU9y
aWdpbiBpbiBnaXZlbiBzdG9yYWdlSWQiX3M7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAogICAgIGF1dG8gaXNMb2NhbFN0b3JhZ2UgPSBzdG9yYWdlSWQtPmdldEJvb2xlYW4oUHJv
dG9jb2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6aXNMb2NhbFN0b3JhZ2VLZXkpOwogICAgIGlm
ICghaXNMb2NhbFN0b3JhZ2UpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBpc0xv
Y2FsU3RvcmFnZSBpbiBnaXZlbiBzdG9yYWdlSWQiOworICAgICAgICBlcnJvclN0cmluZyA9ICJN
aXNzaW5nIGlzTG9jYWxTdG9yYWdlIGluIGdpdmVuIHN0b3JhZ2VJZCJfczsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBmMGYzYzc2ZDg0
ZjI1NTc4OGEyZWI1OWYwNTQyMGI5ZDlhMjcyMTYxLi5hY2FmMTZjZDk0NWYyOGFkZTQzNTdkY2Rm
MGNmMzJkZTBmODYzNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTI4MCw3ICsyODAsNyBA
QCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmV4ZWN1dGVTUUwoY29uc3QgUHJvdG9jb2w6
OkRhdGFiYXNlOjpEYXRhYmFzZUlkJiBkYQogCiAgICAgYXV0byogZGF0YWJhc2UgPSBkYXRhYmFz
ZUZvcklkKGRhdGFiYXNlSWQpOwogICAgIGlmICghZGF0YWJhc2UpIHsKLSAgICAgICAgcmVxdWVz
dENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiTWlzc2luZyBkYXRhYmFzZSBmb3IgZ2l2ZW4gZGF0YWJh
c2VJZCIpOworICAgICAgICByZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJNaXNzaW5nIGRh
dGFiYXNlIGZvciBnaXZlbiBkYXRhYmFzZUlkIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA1ZDUxMmU3OGUyMDAzMjg4ZDAxNTMxMzY4N2U2
ODM4OTkwOGI3M2U3Li44NzY5OTIwNDI3OTA4ZjRjMzRhNjBjZGFmMTU5OGNjYzJlYjgzMzE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBFdmVudCYgZXZlbnQpIGZp
bmFsCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5zdWNj
ZXNzRXZlbnQpIHsKLSAgICAgICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+cmVxdWVz
dENhbGxiYWNrKCkuc2VuZEZhaWx1cmUoIlVuZXhwZWN0ZWQgZXZlbnQgdHlwZS4iKTsKKyAgICAg
ICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+cmVxdWVzdENhbGxiYWNrKCkuc2VuZEZh
aWx1cmUoIlVuZXhwZWN0ZWQgZXZlbnQgdHlwZS4iX3MpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTExMSwxMyArMTExLDEzIEBAIHB1YmxpYzoKIAogICAgICAgICBhdXRv
IHJlc3VsdCA9IHJlcXVlc3QucmVzdWx0KCk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpIHsKLSAgICAgICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+cmVxdWVzdENh
bGxiYWNrKCkuc2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgcmVzdWx0IGluIGNhbGxiYWNrLiIp
OworICAgICAgICAgICAgbV9leGVjdXRhYmxlV2l0aERhdGFiYXNlLT5yZXF1ZXN0Q2FsbGJhY2so
KS5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCByZXN1bHQgaW4gY2FsbGJhY2suIl9zKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gcmVzdWx0VmFsdWUg
PSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWZQdHI8SURCRGF0YWJhc2U+PihyZXN1bHRWYWx1ZSkpIHsKLSAgICAgICAg
ICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+cmVxdWVzdENhbGxiYWNrKCkuc2VuZEZhaWx1
cmUoIlVuZXhwZWN0ZWQgcmVzdWx0IHR5cGUuIik7CisgICAgICAgICAgICBtX2V4ZWN1dGFibGVX
aXRoRGF0YWJhc2UtPnJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVkIHJl
c3VsdCB0eXBlLiJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTM2
LDEzICsxMzYsMTMgQEAgcHJpdmF0ZToKIHZvaWQgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZTo6c3Rh
cnQoSURCRmFjdG9yeSogaWRiRmFjdG9yeSwgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSkKIHsKICAgICBpZiAoIWNvbnRleHQoKSkgewotICAgICAgICByZXF1ZXN0
Q2FsbGJhY2soKS5zZW5kRmFpbHVyZSgiQ291bGQgbm90IG9wZW4gZGF0YWJhc2UuIik7CisgICAg
ICAgIHJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qgb3BlbiBkYXRhYmFz
ZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byByZXN1bHQgPSBpZGJG
YWN0b3J5LT5vcGVuKCpjb250ZXh0KCksIGRhdGFiYXNlTmFtZSwgc3RkOjpudWxsb3B0KTsKICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgIHJlcXVlc3RDYWxsYmFjaygp
LnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qgb3BlbiBkYXRhYmFzZS4iKTsKKyAgICAgICAgcmVxdWVz
dENhbGxiYWNrKCkuc2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBvcGVuIGRhdGFiYXNlLiJfcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM0OSw3ICszNDksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBFdmVudCYg
ZXZlbnQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudHlwZSgpICE9IGV2ZW50
TmFtZXMoKS5zdWNjZXNzRXZlbnQpIHsKLSAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5z
ZW5kRmFpbHVyZSgiVW5leHBlY3RlZCBldmVudCB0eXBlLiIpOworICAgICAgICAgICAgbV9yZXF1
ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVkIGV2ZW50IHR5cGUuIl9zKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0zNTcsNyArMzU3LDcgQEAgcHVibGlj
OgogCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gcmVxdWVzdC5yZXN1bHQoKTsKICAgICAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2st
PnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0IHJlc3VsdCBpbiBjYWxsYmFjay4iKTsKKyAgICAg
ICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCByZXN1
bHQgaW4gY2FsbGJhY2suIl9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTM3MSw3ICszNzEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgaWYgKG1fc2tpcENv
dW50KSB7CiAgICAgICAgICAgICBpZiAoY3Vyc29yLT5hZHZhbmNlKG1fc2tpcENvdW50KS5oYXNF
eGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1
cmUoIkNvdWxkIG5vdCBhZHZhbmNlIGN1cnNvci4iKTsKKyAgICAgICAgICAgICAgICBtX3JlcXVl
c3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBhZHZhbmNlIGN1cnNvci4iX3MpOwog
ICAgICAgICAgICAgbV9za2lwQ291bnQgPSAwOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC0zODMsNyArMzgzLDcgQEAgcHVibGljOgogCiAgICAgICAgIC8vIENvbnRpbnVlIGN1
cnNvciBiZWZvcmUgbWFraW5nIGluamVjdGVkIHNjcmlwdCBjYWxscywgb3RoZXJ3aXNlIHRyYW5z
YWN0aW9uIG1pZ2h0IGJlIGZpbmlzaGVkLgogICAgICAgICBpZiAoY3Vyc29yLT5jb250aW51ZUZ1
bmN0aW9uKG51bGxwdHIpLmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICBtX3JlcXVlc3RD
YWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBjb250aW51ZSBjdXJzb3IuIik7CisgICAg
ICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBjb250aW51
ZSBjdXJzb3IuIl9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC00NDks
MTMgKzQ0OSwxMyBAQCBwdWJsaWM6CiAKICAgICAgICAgYXV0byBpZGJUcmFuc2FjdGlvbiA9IHRy
YW5zYWN0aW9uRm9yRGF0YWJhc2UoJmRhdGFiYXNlLCBtX29iamVjdFN0b3JlTmFtZSk7CiAgICAg
ICAgIGlmICghaWRiVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNr
LT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCB0cmFuc2FjdGlvbiIpOworICAgICAgICAgICAg
bV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0IHRyYW5zYWN0aW9u
Il9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gaWRi
T2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZUZvclRyYW5zYWN0aW9uKGlkYlRyYW5zYWN0aW9uLmdl
dCgpLCBtX29iamVjdFN0b3JlTmFtZSk7CiAgICAgICAgIGlmICghaWRiT2JqZWN0U3RvcmUpIHsK
LSAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdl
dCBvYmplY3Qgc3RvcmUiKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFp
bHVyZSgiQ291bGQgbm90IGdldCBvYmplY3Qgc3RvcmUiX3MpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgh
bV9pbmRleE5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvIGlkYkluZGV4ID0gaW5k
ZXhGb3JPYmplY3RTdG9yZShpZGJPYmplY3RTdG9yZS5nZXQoKSwgbV9pbmRleE5hbWUpOwogICAg
ICAgICAgICAgaWYgKCFpZGJJbmRleCkgewotICAgICAgICAgICAgICAgIG1fcmVxdWVzdENhbGxi
YWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCBpbmRleCIpOworICAgICAgICAgICAgICAg
IG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCBpbmRleCJfcyk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC00NzgsNyArNDc4
LDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFpZGJSZXF1ZXN0KSB7Ci0g
ICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBvcGVu
IGN1cnNvciB0byBwb3B1bGF0ZSBkYXRhYmFzZSBkYXRhIik7CisgICAgICAgICAgICBtX3JlcXVl
c3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBvcGVuIGN1cnNvciB0byBwb3B1bGF0
ZSBkYXRhYmFzZSBkYXRhIl9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC02NTMsNyArNjUzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fcmVxdWVzdENhbGxiYWNr
LT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoZXZlbnQudHlw
ZSgpICE9IGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50KSB7Ci0gICAgICAgICAgICBtX3JlcXVl
c3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIlVuZXhwZWN0ZWQgZXZlbnQgdHlwZS4iKTsKKyAgICAg
ICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiVW5leHBlY3RlZCBldmVudCB0
eXBlLiJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNjkwLDEzICs2
OTAsMTMgQEAgcHVibGljOgogCiAgICAgICAgIGF1dG8gaWRiVHJhbnNhY3Rpb24gPSB0cmFuc2Fj
dGlvbkZvckRhdGFiYXNlKCZkYXRhYmFzZSwgbV9vYmplY3RTdG9yZU5hbWUsIElEQlRyYW5zYWN0
aW9uTW9kZTo6UmVhZHdyaXRlKTsKICAgICAgICAgaWYgKCFpZGJUcmFuc2FjdGlvbikgewotICAg
ICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0IHRy
YW5zYWN0aW9uIik7CisgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUo
IkNvdWxkIG5vdCBnZXQgdHJhbnNhY3Rpb24iX3MpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgYXV0byBpZGJPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlRm9yVHJh
bnNhY3Rpb24oaWRiVHJhbnNhY3Rpb24uZ2V0KCksIG1fb2JqZWN0U3RvcmVOYW1lKTsKICAgICAg
ICAgaWYgKCFpZGJPYmplY3RTdG9yZSkgewotICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2st
PnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0IG9iamVjdCBzdG9yZSIpOworICAgICAgICAgICAg
bV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0IG9iamVjdCBzdG9y
ZSJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50
LmNwcAppbmRleCA0YTZmNjMyYjZmOTcxMTQyYzQwMGM0ZGI4MDUzYjRkMGYxOTQ2ODU5Li4zNDRm
NmZlNTAwZWQ1ZWNjYjg1ZDZiN2Q0NjU1NzE2MDIzOGMzNWMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50
LmNwcApAQCAtMTkyLDkgKzE5Miw5IEBAIFJlZjxQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4g
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIoUmVuCiAgICAgICAg
IGxheWVyT2JqZWN0LT5zZXRJc0dlbmVyYXRlZENvbnRlbnQodHJ1ZSk7CiAgICAgICAgIGxheWVy
T2JqZWN0LT5zZXRQc2V1ZG9FbGVtZW50SWQoYmluZFBzZXVkb0VsZW1lbnQoZG93bmNhc3Q8UHNl
dWRvRWxlbWVudD4ocmVuZGVyZXItPm5vZGUoKSkpKTsKICAgICAgICAgaWYgKHJlbmRlcmVyLT5p
c0JlZm9yZUNvbnRlbnQoKSkKLSAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9FbGVt
ZW50KCJiZWZvcmUiKTsKKyAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9FbGVtZW50
KCJiZWZvcmUiX3MpOwogICAgICAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNBZnRlckNvbnRlbnQo
KSkKLSAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9FbGVtZW50KCJhZnRlciIpOwor
ICAgICAgICAgICAgbGF5ZXJPYmplY3QtPnNldFBzZXVkb0VsZW1lbnQoImFmdGVyIl9zKTsKICAg
ICB9CiAKICAgICAvLyBGSVhNRTogUmVuZGVyVmlldyBpcyBub3cgcmVhbGx5IGFub255bW91cyBi
dXQgZG9uJ3QgdGVsbCBhYm91dCBpdCB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIG1ha2luZyBzdXJl
IGl0IGNhbiBoYW5kbGUgaXQuCkBAIC0yMDIsOSArMjAyLDkgQEAgUmVmPFByb3RvY29sOjpMYXll
clRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JMYXll
cihSZW4KICAgICAgICAgbGF5ZXJPYmplY3QtPnNldElzQW5vbnltb3VzKHRydWUpOwogICAgICAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKICAgICAgICAg
aWYgKHN0eWxlLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpGaXJzdExldHRlcikKLSAgICAgICAg
ICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9FbGVtZW50KCJmaXJzdC1sZXR0ZXIiKTsKKyAgICAg
ICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9FbGVtZW50KCJmaXJzdC1sZXR0ZXIiX3MpOwog
ICAgICAgICBlbHNlIGlmIChzdHlsZS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Rmlyc3RMaW5l
KQotICAgICAgICAgICAgbGF5ZXJPYmplY3QtPnNldFBzZXVkb0VsZW1lbnQoImZpcnN0LWxpbmUi
KTsKKyAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9FbGVtZW50KCJmaXJzdC1saW5l
Il9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbGF5ZXJPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAK
aW5kZXggNmU1YTVmYzg5Y2NlZjA1YjczY2VkYTI1N2Q2YzU5Y2IwZTgyODYxYy4uZDgxMjk0YzQ1
YWNkYjA4MWQxZDFmYTI0ZGNlZDI4OWY5ZWM3NjZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAt
MTAzMiw3ICsxMDMyLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+PiBJbnNwZWN0b3JOZXR3b3JrQWcKIAogICAgIC8vIEZJWE1F
OiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTY4NDc1PiBXZWIgSW5zcGVjdG9yOiBDb3JyZWN0bHkg
ZGlzcGxheSBpZnJhbWUncyBhbmQgd29ya2VyJ3MgV2ViU29ja2V0cwogICAgIGlmICghaXM8RG9j
dW1lbnQ+KHdlYlNvY2tldC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKLSAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKCJOb3Qgc3VwcG9ydGVkIik7CisgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCJfcyk7CiAKICAgICBhdXRvKiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAg
ICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKQEAgLTEwNDUsNyArMTA0NSw3IEBA
IFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0Pj4gSW5zcGVjdG9yTmV0d29ya0FnCiAKICAgICBhdXRvIG9iamVjdCA9IGluamVjdGVkU2Ny
aXB0LndyYXBPYmplY3Qod2ViU29ja2V0QXNTY3JpcHRWYWx1ZShnbG9iYWxPYmplY3QsIHdlYlNv
Y2tldCksIG9iamVjdEdyb3VwKTsKICAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKCJJbnRlcm5hbCBlcnJvcjogdW5hYmxlIHRvIGNhc3QgV2ViU29ja2V0Iik7
CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IHVuYWJsZSB0
byBjYXN0IFdlYlNvY2tldCJfcyk7CiAKICAgICByZXR1cm4gb2JqZWN0LnJlbGVhc2VOb25OdWxs
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggZDFiMjY5ZjhmYTdkNjVhYTQ4NDIwNWZkNTAyOGQ4OTQ1
N2UzYWYxNy4uYWYzNWUwYTk1ZWE4MTQ5YWE1NDkzMmIwOWZhZGRiZWFiNTIwMDRmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtNTcwLDMxICs1NzAsMzEgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29va2ll
PiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KIAog
ICAgIGNvb2tpZS5uYW1lID0gY29va2llT2JqZWN0LT5nZXRTdHJpbmcoUHJvdG9jb2w6OlBhZ2U6
OkNvb2tpZTo6bmFtZUtleSk7CiAgICAgaWYgKCFjb29raWUubmFtZSkgewotICAgICAgICBlcnJv
clN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgbmFtZSBpbiBnaXZlbiBjb29raWUiOwor
ICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgbmFtZSBpbiBnaXZl
biBjb29raWUiX3M7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
Y29va2llLnZhbHVlID0gY29va2llT2JqZWN0LT5nZXRTdHJpbmcoUHJvdG9jb2w6OlBhZ2U6OkNv
b2tpZTo6dmFsdWVLZXkpOwogICAgIGlmICghY29va2llLnZhbHVlKSB7Ci0gICAgICAgIGVycm9y
U3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSB2YWx1ZSBpbiBnaXZlbiBjb29raWUiOwor
ICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgdmFsdWUgaW4gZ2l2
ZW4gY29va2llIl9zOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAg
IGNvb2tpZS5kb21haW4gPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6UGFnZTo6
Q29va2llOjpkb21haW5LZXkpOwogICAgIGlmICghY29va2llLmRvbWFpbikgewotICAgICAgICBl
cnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgZG9tYWluIGluIGdpdmVuIGNvb2tp
ZSI7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBkb21haW4g
aW4gZ2l2ZW4gY29va2llIl9zOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIGNvb2tpZS5wYXRoID0gY29va2llT2JqZWN0LT5nZXRTdHJpbmcoUHJvdG9jb2w6OlBh
Z2U6OkNvb2tpZTo6cGF0aEtleSk7CiAgICAgaWYgKCFjb29raWUucGF0aCkgewotICAgICAgICBl
cnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgcGF0aCBpbiBnaXZlbiBjb29raWUi
OworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgcGF0aCBpbiBn
aXZlbiBjb29raWUiX3M7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgYXV0byBodHRwT25seSA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6UGFn
ZTo6Q29va2llOjpodHRwT25seUtleSk7CiAgICAgaWYgKCFodHRwT25seSkgewotICAgICAgICBl
cnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgaHR0cE9ubHkgaW4gZ2l2ZW4gY29v
a2llIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IGh0dHBP
bmx5IGluIGdpdmVuIGNvb2tpZSJfczsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKQEAgLTYwMiw3ICs2MDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb29raWU+IHBh
cnNlQ29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogCiAgICAg
YXV0byBzZWN1cmUgPSBjb29raWVPYmplY3QtPmdldEJvb2xlYW4oUHJvdG9jb2w6OlBhZ2U6OkNv
b2tpZTo6c2VjdXJlS2V5KTsKICAgICBpZiAoIXNlY3VyZSkgewotICAgICAgICBlcnJvclN0cmlu
ZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgc2VjdXJlIGluIGdpdmVuIGNvb2tpZSI7CisgICAg
ICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBzZWN1cmUgaW4gZ2l2ZW4g
Y29va2llIl9zOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIApAQCAtNjEx
LDcgKzYxMSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVPYmpl
Y3QoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluCiAgICAgYXV0byBzZXNzaW9uID0g
Y29va2llT2JqZWN0LT5nZXRCb29sZWFuKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlc3Npb25L
ZXkpOwogICAgIGNvb2tpZS5leHBpcmVzID0gY29va2llT2JqZWN0LT5nZXREb3VibGUoUHJvdG9j
b2w6OlBhZ2U6OkNvb2tpZTo6ZXhwaXJlc0tleSk7CiAgICAgaWYgKCFzZXNzaW9uICYmICFjb29r
aWUuZXhwaXJlcykgewotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBr
ZXkgZXhwaXJlcyBpbiBnaXZlbiBjb29raWUiOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZh
bGlkIHZhbHVlIGZvciBrZXkgZXhwaXJlcyBpbiBnaXZlbiBjb29raWUiX3M7CiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCkBAIC02MTksMTMgKzYxOSwxMyBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0
cmluZyYgZXJyb3JTdHJpbgogCiAgICAgYXV0byBzYW1lU2l0ZVN0cmluZyA9IGNvb2tpZU9iamVj
dC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNhbWVTaXRlS2V5KTsKICAgICBp
ZiAoIXNhbWVTaXRlU3RyaW5nKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFs
dWUgZm9yIGtleSBzYW1lU2l0ZSBpbiBnaXZlbiBjb29raWUiOworICAgICAgICBlcnJvclN0cmlu
ZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgc2FtZVNpdGUgaW4gZ2l2ZW4gY29va2llIl9zOwog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gc2FtZVNpdGUg
PSBQcm90b2NvbDo6SGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpQ
YWdlOjpDb29raWVTYW1lU2l0ZVBvbGljeT4oc2FtZVNpdGVTdHJpbmcpOwogICAgIGlmICghc2Ft
ZVNpdGUpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNh
bWVTaXRlIGluIGdpdmVuIGNvb2tpZSI7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQg
dmFsdWUgZm9yIGtleSBzYW1lU2l0ZSBpbiBnaXZlbiBjb29raWUiX3M7CiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCBk
YWQ1MDQxODg2NGU5NWVjMjEzMzAyMDNlNmQzOWZhY2ZhYjA1ZTFjLi42MjYwZWE3ODZjMTg4NTVh
ODg0OTZiYTI4OWE2Y2VkN2MwOWEyYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAg
LTEwMiw3ICsxMDIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBQYWdlRE9NRGVi
dWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludChQcm90b2NvbDo6RAogICAgIH0KIAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBv
cnRlZCIpOworICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCJfcyk7CiB9
CiAKIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IFBhZ2VET01EZWJ1Z2dlckFnZW50Ojpy
ZW1vdmVET01CcmVha3BvaW50KFByb3RvY29sOjpET006Ok5vZGVJZCBub2RlSWQsIFByb3RvY29s
OjpET01EZWJ1Z2dlcjo6RE9NQnJlYWtwb2ludFR5cGUgdHlwZSkKQEAgLTEzNSw3ICsxMzUsNyBA
QCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBQYWdlRE9NRGVidWdnZXJBZ2VudDo6cmVt
b3ZlRE9NQnJlYWtwb2ludChQcm90b2NvbAogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCIpOworICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCJfcyk7CiB9CiAKIHZvaWQgUGFnZURP
TURlYnVnZ2VyQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRlZCgpCkBAIC0yMDMsNyArMjAzLDcgQEAg
dm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEluc2VydERPTU5vZGUoTm9kZSYgcGFyZW50
KQogICAgIEFTU0VSVChjbG9zZXN0QnJlYWtwb2ludE93bmVyKTsKIAogICAgIGF1dG8gcGF1c2VE
YXRhID0gYnVpbGRQYXVzZURhdGFGb3JET01CcmVha3BvaW50KFByb3RvY29sOjpET01EZWJ1Z2dl
cjo6RE9NQnJlYWtwb2ludFR5cGU6OlN1YnRyZWVNb2RpZmllZCwgKmNsb3Nlc3RCcmVha3BvaW50
T3duZXIpOwotICAgIHBhdXNlRGF0YS0+c2V0Qm9vbGVhbigiaW5zZXJ0aW9uIiwgdHJ1ZSk7Cisg
ICAgcGF1c2VEYXRhLT5zZXRCb29sZWFuKCJpbnNlcnRpb24iX3MsIHRydWUpOwogICAgIC8vIEZJ
WE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEzNDk5PiBXZWIgSW5zcGVjdG9yOiBhbGxvdyBE
T00gbm9kZXMgdG8gYmUgaW5zdHJ1bWVudGVkIGF0IGFueSBwb2ludCwgcmVnYXJkbGVzcyBvZiB3
aGV0aGVyIHRoZSBtYWluIGRvY3VtZW50IGhhcyBhbHNvIGJlZW4gaW5zdHJ1bWVudGVkCiAgICAg
Ly8gSW5jbHVkZSB0aGUgbmV3IGNoaWxkIG5vZGUgSUQgc28gdGhlIGZyb250ZW5kIGNhbiBzaG93
IHRoZSBub2RlIHRoYXQncyBhYm91dCB0byBiZSBpbnNlcnRlZC4KICAgICBtX2RlYnVnZ2VyQWdl
bnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpS
ZWFzb246OkRPTSwgV1RGTW92ZShwYXVzZURhdGEpLCBXVEZNb3ZlKGNsb3Nlc3RCcmVha3BvaW50
KSk7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbFJl
bW92ZURPTU5vZGUoTm9kZSYgbm9kZSkKICAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpIHsKICAgICAgICAgaWYgKCZub2Rl
ICE9IGNsb3Nlc3RCcmVha3BvaW50T3duZXIpIHsKICAgICAgICAgICAgIGlmIChhdXRvIHRhcmdl
dE5vZGVJZCA9IGRvbUFnZW50LT5wdXNoTm9kZVRvRnJvbnRlbmQoJm5vZGUpKQotICAgICAgICAg
ICAgICAgIHBhdXNlRGF0YS0+c2V0SW50ZWdlcigidGFyZ2V0Tm9kZUlkIiwgdGFyZ2V0Tm9kZUlk
KTsKKyAgICAgICAgICAgICAgICBwYXVzZURhdGEtPnNldEludGVnZXIoInRhcmdldE5vZGVJZCJf
cywgdGFyZ2V0Tm9kZUlkKTsKICAgICAgICAgfQogICAgIH0KICAgICBtX2RlYnVnZ2VyQWdlbnQt
PmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFz
b246OkRPTSwgV1RGTW92ZShwYXVzZURhdGEpLCBXVEZNb3ZlKGNsb3Nlc3RCcmVha3BvaW50KSk7
CkBAIC0zNTAsMTAgKzM1MCwxMCBAQCBSZWY8SlNPTjo6T2JqZWN0PiBQYWdlRE9NRGVidWdnZXJB
Z2VudDo6YnVpbGRQYXVzZURhdGFGb3JET01CcmVha3BvaW50KFByb3RvY29sOgogICAgIEFTU0VS
VChtX2RvbVN1YnRyZWVNb2RpZmllZEJyZWFrcG9pbnRzLmNvbnRhaW5zKCZicmVha3BvaW50T3du
ZXIpIHx8IG1fZG9tQXR0cmlidXRlTW9kaWZpZWRCcmVha3BvaW50cy5jb250YWlucygmYnJlYWtw
b2ludE93bmVyKSB8fCBtX2RvbU5vZGVSZW1vdmVkQnJlYWtwb2ludHMuY29udGFpbnMoJmJyZWFr
cG9pbnRPd25lcikpOwogCiAgICAgYXV0byBwYXVzZURhdGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0
ZSgpOwotICAgIHBhdXNlRGF0YS0+c2V0U3RyaW5nKCJ0eXBlIiwgUHJvdG9jb2w6OkhlbHBlcnM6
OmdldEVudW1Db25zdGFudFZhbHVlKGJyZWFrcG9pbnRUeXBlKSk7CisgICAgcGF1c2VEYXRhLT5z
ZXRTdHJpbmcoInR5cGUiX3MsIFByb3RvY29sOjpIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1
ZShicmVha3BvaW50VHlwZSkpOwogICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkgewogICAgICAgICBpZiAoYXV0byBicmVh
a3BvaW50T3duZXJOb2RlSWQgPSBkb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKCZicmVha3Bv
aW50T3duZXIpKQotICAgICAgICAgICAgcGF1c2VEYXRhLT5zZXRJbnRlZ2VyKCJub2RlSWQiLCBi
cmVha3BvaW50T3duZXJOb2RlSWQpOworICAgICAgICAgICAgcGF1c2VEYXRhLT5zZXRJbnRlZ2Vy
KCJub2RlSWQiX3MsIGJyZWFrcG9pbnRPd25lck5vZGVJZCk7CiAgICAgfQogICAgIHJldHVybiBw
YXVzZURhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCmluZGV4IDUz
MWQyNGM0M2VmYjE0YTI3ODY0ZmY1Zjk2MGUyMTA5OTBjNWRjMmUuLmU2OWRkMTIwNTA2NDI2MTFk
OWI1MmJmOTYwOWU3YThkODExNjljYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9WZXJpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRp
b24uY3BwCkBAIC0xNjcsMTQgKzE2NywxNCBAQCBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGlu
Z0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sCiBzdGF0
aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0
U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgUmVu
ZGVyQm94JiByZW5kZXJlciwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgYm9vbCBmaXJz
dE1pc21hdGNoaW5nUmVjdCA9IHRydWU7Ci0gICAgYXV0byBvdXRwdXRSZWN0ID0gWyZdIChjb25z
dCBTdHJpbmcmIHByZWZpeCwgY29uc3QgTGF5b3V0UmVjdCYgcmVuZGVyZXJSZWN0LCBjb25zdCBM
YXlvdXRSZWN0JiBsYXlvdXRSZWN0KSB7CisgICAgYXV0byBvdXRwdXRSZWN0ID0gWyZdIChBU0NJ
SUxpdGVyYWwgcHJlZml4LCBjb25zdCBMYXlvdXRSZWN0JiByZW5kZXJlclJlY3QsIGNvbnN0IExh
eW91dFJlY3QmIGxheW91dFJlY3QpIHsKICAgICAgICAgaWYgKGZpcnN0TWlzbWF0Y2hpbmdSZWN0
KSB7Ci0gICAgICAgICAgICBzdHJlYW0gPDwgKHJlbmRlcmVyLmVsZW1lbnQoKSA/IHJlbmRlcmVy
LmVsZW1lbnQoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpIDogIiIpIDw8ICIgIiA8PCByZW5k
ZXJlci5yZW5kZXJOYW1lKCkgPDwgIigiIDw8ICZyZW5kZXJlciA8PCAiKSBsYXlvdXRCb3goIiA8
PCAmbGF5b3V0Qm94IDw8ICIpIjsKKyAgICAgICAgICAgIHN0cmVhbSA8PCAocmVuZGVyZXIuZWxl
bWVudCgpID8gcmVuZGVyZXIuZWxlbWVudCgpLT5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCkgOiAi
IikgPDwgIiAiIDw8IHJlbmRlcmVyLnJlbmRlck5hbWUoKS5jaGFyYWN0ZXJzKCkgPDwgIigiIDw8
ICZyZW5kZXJlciA8PCAiKSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIjsKICAgICAg
ICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOwogICAgICAgICAgICAgZmlyc3RNaXNtYXRjaGluZ1Jl
Y3QgPSBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIHN0cmVhbSAgPDwgcHJlZml4LnV0Zjgo
KS5kYXRhKCkgPDwgIlx0cmVuZGVyZXItPigiIDw8IHJlbmRlcmVyUmVjdC54KCkgPDwgIiwiIDw8
IHJlbmRlcmVyUmVjdC55KCkgPDwgIikgKCIgPDwgcmVuZGVyZXJSZWN0LndpZHRoKCkgPDwgIngi
IDw8IHJlbmRlcmVyUmVjdC5oZWlnaHQoKSA8PCAiKSIKKyAgICAgICAgc3RyZWFtICA8PCBwcmVm
aXguY2hhcmFjdGVycygpIDw8ICJcdHJlbmRlcmVyLT4oIiA8PCByZW5kZXJlclJlY3QueCgpIDw8
ICIsIiA8PCByZW5kZXJlclJlY3QueSgpIDw8ICIpICgiIDw8IHJlbmRlcmVyUmVjdC53aWR0aCgp
IDw8ICJ4IiA8PCByZW5kZXJlclJlY3QuaGVpZ2h0KCkgPDwgIikiCiAgICAgICAgICAgICA8PCAi
XHRsYXlvdXQtPigiIDw8IGxheW91dFJlY3QueCgpIDw8ICIsIiA8PCBsYXlvdXRSZWN0LnkoKSA8
PCAiKSAoIiA8PCBsYXlvdXRSZWN0LndpZHRoKCkgPDwgIngiIDw8IGxheW91dFJlY3QuaGVpZ2h0
KCkgPDwgIikiOyAKICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAgfTsKQEAgLTIzNywx
OSArMjM3LDE5IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJbmZvcm1h
dGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIGlmICghYXJlRXNzZW50aWFsbHlFcXVhbChmcmFtZVJlY3QsIEJv
eEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGJveEdlb21ldHJ5KSkpIHsKLSAgICAgICAgb3V0cHV0
UmVjdCgiZnJhbWVCb3giLCByZW5kZXJlci5mcmFtZVJlY3QoKSwgQm94R2VvbWV0cnk6OmJvcmRl
ckJveFJlY3QoYm94R2VvbWV0cnkpKTsKKyAgICAgICAgb3V0cHV0UmVjdCgiZnJhbWVCb3giX3Ms
IHJlbmRlcmVyLmZyYW1lUmVjdCgpLCBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChib3hHZW9t
ZXRyeSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoIWFyZUVzc2Vu
dGlhbGx5RXF1YWwocmVuZGVyZXIuYm9yZGVyQm94UmVjdCgpLCBib3hHZW9tZXRyeS5ib3JkZXJC
b3goKSkpIHsKLSAgICAgICAgb3V0cHV0UmVjdCgiYm9yZGVyQm94IiwgcmVuZGVyZXIuYm9yZGVy
Qm94UmVjdCgpLCBib3hHZW9tZXRyeS5ib3JkZXJCb3goKSk7CisgICAgICAgIG91dHB1dFJlY3Qo
ImJvcmRlckJveCJfcywgcmVuZGVyZXIuYm9yZGVyQm94UmVjdCgpLCBib3hHZW9tZXRyeS5ib3Jk
ZXJCb3goKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8vIFdoZW4gdGhl
IHRhYmxlIHJvdyBib3JkZXIgb3ZlcmZsb3dzIHRoZSByb3csIHBhZGRpbmcgYm94IGJlY29tZXMg
bmVnYXRpdmUgYW5kIGNvbnRlbnQgYm94IGlzIGluY29ycmVjdC4KICAgICBhdXRvIHNob3VsZENo
ZWNrUGFkZGluZ0FuZENvbnRlbnRCb3ggPSAhaXM8UmVuZGVyVGFibGVSb3c+KHJlbmRlcmVyKSB8
fCByZW5kZXJlci5wYWRkaW5nQm94UmVjdCgpLndpZHRoKCkgPj0gMDsKICAgICBpZiAoc2hvdWxk
Q2hlY2tQYWRkaW5nQW5kQ29udGVudEJveCAmJiAhYXJlRXNzZW50aWFsbHlFcXVhbChyZW5kZXJl
ci5wYWRkaW5nQm94UmVjdCgpLCBib3hHZW9tZXRyeS5wYWRkaW5nQm94KCkpKSB7Ci0gICAgICAg
IG91dHB1dFJlY3QoInBhZGRpbmdCb3giLCByZW5kZXJlci5wYWRkaW5nQm94UmVjdCgpLCBib3hH
ZW9tZXRyeS5wYWRkaW5nQm94KCkpOworICAgICAgICBvdXRwdXRSZWN0KCJwYWRkaW5nQm94Il9z
LCByZW5kZXJlci5wYWRkaW5nQm94UmVjdCgpLCBib3hHZW9tZXRyeS5wYWRkaW5nQm94KCkpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMg
Ym9vbCBvdXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3Ry
ZWFtJiBzdHJlYW0sIGNvbgogICAgICAgICByZXR1cm4gIWlzPFJlbmRlclRhYmxlPihyZW5kZXJl
cikgfHwgIWRvd25jYXN0PFJlbmRlclRhYmxlPihyZW5kZXJlcikuY29sbGFwc2VCb3JkZXJzKCk7
CiAgICAgfSgpOwogICAgIGlmIChzaG91bGRDaGVja0NvbnRlbnRCb3ggJiYgIWFyZUVzc2VudGlh
bGx5RXF1YWwocmVuZGVyZXIuY29udGVudEJveFJlY3QoKSwgYm94R2VvbWV0cnkuY29udGVudEJv
eCgpKSkgewotICAgICAgICBvdXRwdXRSZWN0KCJjb250ZW50Qm94IiwgcmVuZGVyZXIuY29udGVu
dEJveFJlY3QoKSwgYm94R2VvbWV0cnkuY29udGVudEJveCgpKTsKKyAgICAgICAgb3V0cHV0UmVj
dCgiY29udGVudEJveCJfcywgcmVuZGVyZXIuY29udGVudEJveFJlY3QoKSwgYm94R2VvbWV0cnku
Y29udGVudEJveCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yNzYsNyAr
Mjc2LDcgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9u
SWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb24KICAgICAgICAgICAgICYmIGJveEdlb21l
dHJ5Lm1hcmdpbkVuZCgpID09IHJlbmRlcmVyLm1hcmdpbkVuZCgpOwogCiAgICAgICAgIGlmICgh
bWFyZ2luc01hdGNoKSB7Ci0gICAgICAgICAgICBvdXRwdXRSZWN0KCJtYXJnaW5Cb3giLCByZW5k
ZXJlci5tYXJnaW5Cb3hSZWN0KCksIHJlbmRlckJveExpa2VNYXJnaW5Cb3goYm94R2VvbWV0cnkp
KTsKKyAgICAgICAgICAgIG91dHB1dFJlY3QoIm1hcmdpbkJveCJfcywgcmVuZGVyZXIubWFyZ2lu
Qm94UmVjdCgpLCByZW5kZXJCb3hMaWtlTWFyZ2luQm94KGJveEdlb21ldHJ5KSk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVy
YWdlLmNwcAppbmRleCA3NjJjOWRlOWIwNDcyMDM0ZTY2NTcyZmYyMGY3YThkODMzNzM3ZTVjLi4y
MzFkMzZiYzBhMzcxZDQ5NjU1N2NiYjUyZDBlNzMxODEwOGM2MGI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uQ292ZXJhZ2UuY3BwCkBAIC01NTMsOCArNTUzLDggQEAgT3B0aW9uU2V0PEF2b2lkYW5jZVJl
YXNvbj4gY2FuVXNlRm9yTGluZUxheW91dFdpdGhSZWFzb24oY29uc3QgUmVuZGVyQmxvY2tGbG93
JgogI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgUEFMOjpyZWdpc3Rlck5v
dGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dNb2Rlcm5MaW5lTGF5b3V0Q292ZXJh
Z2UiLCBGdW5jdGlvbjx2b2lkKCk+IHsgcHJpbnRNb2Rlcm5MaW5lTGF5b3V0Q292ZXJhZ2UgfSk7
Ci0gICAgICAgIFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjaygiY29tLmFwcGxlLldlYktpdC5z
aG93TW9kZXJuTGluZUxheW91dFJlYXNvbnMiLCBGdW5jdGlvbjx2b2lkKCk+IHsgcHJpbnRNb2Rl
cm5MaW5lTGF5b3V0QmxvY2tMaXN0IH0pOworICAgICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2Fs
bGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd01vZGVybkxpbmVMYXlvdXRDb3ZlcmFnZSJfcywg
RnVuY3Rpb248dm9pZCgpPiB7IHByaW50TW9kZXJuTGluZUxheW91dENvdmVyYWdlIH0pOworICAg
ICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd01v
ZGVybkxpbmVMYXlvdXRSZWFzb25zIl9zLCBGdW5jdGlvbjx2b2lkKCk+IHsgcHJpbnRNb2Rlcm5M
aW5lTGF5b3V0QmxvY2tMaXN0IH0pOwogICAgIH0pOwogI2VuZGlmCiAgICAgT3B0aW9uU2V0PEF2
b2lkYW5jZVJlYXNvbj4gcmVhc29uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5o
CmluZGV4IDExODRiN2MzOTYxZjY0OGRkZWJkNmQ0ZGJkZGE0NmEzZjFlNDYyNTQuLjE3YzQ0M2Y3
Nzk4ZDA0MTMzODJiMWY2ZDJiMjljZWY5ZDllMTQyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBjcmVhdGUoQ29udGVudEZp
bHRlckNsaWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Db250ZW50RmlsdGVyKCk7CiAKLSAg
ICBzdGF0aWMgY29uc3QgY2hhciogdXJsU2NoZW1lKCkgeyByZXR1cm4gIngtYXBwbGUtY29udGVu
dC1maWx0ZXIiOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgdXJsU2NoZW1l
KCkgeyByZXR1cm4gIngtYXBwbGUtY29udGVudC1maWx0ZXIiX3M7IH0KIAogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZShjb25zdCBVUkwmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKaW5kZXgg
ZDljYTZmY2Q5NDU2OTk4ZjU4YzYyNDU3ZDIxNjYyMjUyNjUyYTczYi4uOTIyM2UwNDQwZmEzYTFj
MDhmMmZlNmVkNjQ2Nzc4MzNmNzIxZTI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgUmVzb3Vy
Y2VSZXF1ZXN0IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWUKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHBsYXRmb3JtRGVmYXVs
dFRpbWVvdXQgPSAwOwogICAgIHByZWZsaWdodFJlcXVlc3Quc2V0VGltZW91dEludGVydmFsKHBs
YXRmb3JtRGVmYXVsdFRpbWVvdXQpOwogICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9s
KHByZWZsaWdodFJlcXVlc3QsIHNlY3VyaXR5T3JpZ2luLCBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eTo6RG9Ob3RVc2UpOwotICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiT1BUSU9O
UyIpOworICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiT1BUSU9OUyJfcyk7CiAg
ICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFj
Y2Vzc0NvbnRyb2xSZXF1ZXN0TWV0aG9kLCByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CiAgICAgcHJl
ZmxpZ2h0UmVxdWVzdC5zZXRQcmlvcml0eShyZXF1ZXN0LnByaW9yaXR5KCkpOwogICAgIHByZWZs
aWdodFJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMocmVxdWVzdC5maXJzdFBhcnR5Rm9y
Q29va2llcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
blByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAppbmRleCBjNGY4Y2FiNmVlM2ExZmRiOTI2YmNl
Yzk4YTMxMzJiZTUzZjdmMzUzLi5lZjRkNThjYTczMDVkYTY3ODU1NjE1N2E0Njk0YWEwZjk0NDFm
NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2lu
UHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCkBAIC04NSwxMiArODUsMTIgQEAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjp2YWxpZGF0ZU1l
dGhvZEFuZEhlYWQKIAogYm9vbCBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6
YWxsb3dzQ3Jvc3NPcmlnaW5NZXRob2QoY29uc3QgU3RyaW5nJiBtZXRob2QsIFN0b3JlZENyZWRl
bnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSBjb25zdAogewotICAgIHJldHVy
biBtX21ldGhvZHMuY29udGFpbnMobWV0aG9kKSB8fCAobV9tZXRob2RzLmNvbnRhaW5zKCIqIikg
JiYgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgIT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVz
ZSkgfHwgaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0aG9kQWxsb3dsaXN0KG1ldGhv
ZCk7CisgICAgcmV0dXJuIG1fbWV0aG9kcy5jb250YWlucyhtZXRob2QpIHx8IChtX21ldGhvZHMu
Y29udGFpbnMoIioiX3MpICYmIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ICE9IFN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpVc2UpIHx8IGlzT25BY2Nlc3NDb250cm9sU2ltcGxlUmVxdWVzdE1ldGhv
ZEFsbG93bGlzdChtZXRob2QpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OnZhbGlkYXRlQ3Jvc3NPcmlnaW5IZWFkZXJzKGNv
bnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzLCBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgY29uc3QKIHsKLSAgICBib29sIHZhbGlkV2lsZGNh
cmQgPSBtX2hlYWRlcnMuY29udGFpbnMoIioiKSAmJiBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSAh
PSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOworICAgIGJvb2wgdmFsaWRXaWxkY2FyZCA9
IG1faGVhZGVycy5jb250YWlucygiKiJfcykgJiYgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgIT0g
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGhlYWRl
ciA6IHJlcXVlc3RIZWFkZXJzKSB7CiAgICAgICAgIGlmIChoZWFkZXIua2V5QXNIVFRQSGVhZGVy
TmFtZSAmJiBpc0Nyb3NzT3JpZ2luU2FmZVJlcXVlc3RIZWFkZXIoaGVhZGVyLmtleUFzSFRUUEhl
YWRlck5hbWUudmFsdWUoKSwgaGVhZGVyLnZhbHVlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMjhkZTczMzc0MzRi
ZWM4OThlMTY1MWRhYzQyZDk3NzM3NDkwODRlZS4uODc4NmM1MjU5Yjg5ODAxMjgzNTc0NDUyMGZl
ZjU5YmFjMDY0Zjk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CkBAIC0yMDA0LDcgKzIwMDQsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0
eSgpCiAgICAgICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5kaXNwYXRjaERpZENoYW5n
ZVByb3Zpc2lvbmFsVVJMKCk7CiAgICAgfQogCi0gICAgU3RyaW5nIG1pbWVUeXBlID0gc2hvdWxk
TG9hZEVtcHR5ID8gInRleHQvaHRtbCIgOiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5nZW5lcmF0
ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShtX3JlcXVlc3QudXJsKCkucHJvdG9jb2woKS50b1N0cmlu
Z1dpdGhvdXRDb3B5aW5nKCkpOworICAgIFN0cmluZyBtaW1lVHlwZSA9IHNob3VsZExvYWRFbXB0
eSA/ICJ0ZXh0L2h0bWwiX3MgOiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5nZW5lcmF0ZWRNSU1F
VHlwZUZvclVSTFNjaGVtZShtX3JlcXVlc3QudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhv
dXRDb3B5aW5nKCkpOwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKG1fcmVxdWVz
dC51cmwoKSwgbWltZVR5cGUsIDAsICJVVEYtOCJfcyk7CiAKICAgICBpZiAoIWZyYW1lTG9hZGVy
KCktPnN0YXRlTWFjaGluZSgpLmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAKaW5kZXggN2JjMmI3NzcxMGVjODAxNWY5NjA0NTFkZGVjNTA3ZjRlMGJhMGU0Ny4uMTM0NDYy
ODliNWZmZmJmMDQyMTBjMWYyMzAxZTljMjY3ZGJlZTRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTEzNiw3ICsxMzYs
NyBAQCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihE
b2N1bWVudCYgZG9jdW1lbnQsIFRocmVhZGFibAogCiAgICAgaWYgKGRvY3VtZW50LnNldHRpbmdz
KCkuZGlzYWxsb3dTeW5jWEhSRHVyaW5nUGFnZURpc21pc3NhbEVuYWJsZWQoKSAmJiAhbV9hc3lu
YyAmJiAoIWRvY3VtZW50LnBhZ2UoKSB8fCAhZG9jdW1lbnQucGFnZSgpLT5hcmVTeW5jaHJvbm91
c0xvYWRzQWxsb3dlZCgpKSkgewogICAgICAgICBkb2N1bWVudC5kaWRSZWplY3RTeW5jWEhSRHVy
aW5nUGFnZURpc21pc3NhbCgpOwotICAgICAgICBsb2dFcnJvckFuZEZhaWwoUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLCAiU3luY2hyb25v
dXMgbG9hZHMgYXJlIG5vdCBhbGxvd2VkIGF0IHRoaXMgdGltZSIpKTsKKyAgICAgICAgbG9nRXJy
b3JBbmRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVx
dWVzdC51cmwoKSwgIlN5bmNocm9ub3VzIGxvYWRzIGFyZSBub3QgYWxsb3dlZCBhdCB0aGlzIHRp
bWUiX3MpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTc5LDcgKzE3OSw3IEBAIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKERvY3VtZW50
JiBkb2N1bWVudCwgVGhyZWFkYWJsCiAgICAgfQogCiAgICAgaWYgKG1fb3B0aW9ucy5tb2RlID09
IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbikgewotICAgICAgICBsb2dFcnJvckFuZEZh
aWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVy
bCgpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIHNh
bWUtb3JpZ2luIGZldGNoIG1vZGUuIikpOworICAgICAgICBsb2dFcnJvckFuZEZhaWwoUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLCAiQ3Jv
c3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIHNhbWUtb3JpZ2lu
IGZldGNoIG1vZGUuIl9zKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE5MCw3ICsx
OTAsNyBAQCBib29sIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2hlY2tVUkxTY2hlbWVBc0NP
UlNFbmFibGVkKGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIENyb3NzLW9yaWdpbiByZXF1ZXN0
cyBhcmUgb25seSBhbGxvd2VkIGZvciBIVFRQIGFuZCByZWdpc3RlcmVkIHNjaGVtZXMuIFdlIHdv
dWxkIGNhdGNoIHRoaXMgd2hlbiBjaGVja2luZyByZXNwb25zZSBoZWFkZXJzIGxhdGVyLCBidXQg
dGhlcmUgaXMgbm8gcmVhc29uIHRvIHNlbmQgYSByZXF1ZXN0IHRoYXQncyBndWFyYW50ZWVkIHRv
IGJlIGRlbmllZC4KICAgICBpZiAoIUxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVS
TFNjaGVtZUFzQ09SU0VuYWJsZWQodXJsLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWlu
ZygpKSkgewotICAgICAgICBsb2dFcnJvckFuZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFp
bldlYktpdEludGVybmFsLCAwLCB1cmwsICJDcm9zcyBvcmlnaW4gcmVxdWVzdHMgYXJlIG9ubHkg
c3VwcG9ydGVkIGZvciBIVFRQLiIsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wp
KTsKKyAgICAgICAgbG9nRXJyb3JBbmRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJL
aXRJbnRlcm5hbCwgMCwgdXJsLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBvbmx5IHN1cHBv
cnRlZCBmb3IgSFRUUC4iX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI2NCw3
ICsyNjQsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKCkKICAgICAv
LyBDYW5jZWwgY2FuIHJlLWVudGVyIGFuZCBtX3Jlc291cmNlIG1pZ2h0IGJlIG51bGwgaGVyZSBh
cyBhIHJlc3VsdC4KICAgICBpZiAobV9jbGllbnQgJiYgbV9yZXNvdXJjZSkgewogICAgICAgICAv
LyBGSVhNRTogVGhpcyBlcnJvciBpcyBzZW50IHRvIHRoZSBjbGllbnQgaW4gZGlkRmFpbCgpLCBz
byBpdCBzaG91bGQgbm90IGJlIGFuIGludGVybmFsIG9uZS4gVXNlIEZyYW1lTG9hZGVyQ2xpZW50
OjpjYW5jZWxsZWRFcnJvcigpIGluc3RlYWQuCi0gICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3Io
ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbV9yZXNvdXJjZS0+dXJsKCksICJMb2FkIGNh
bmNlbGxlZCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CisgICAgICAgIFJl
c291cmNlRXJyb3IgZXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbV9yZXNvdXJj
ZS0+dXJsKCksICJMb2FkIGNhbmNlbGxlZCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2Vs
bGF0aW9uKTsKICAgICAgICAgbV9jbGllbnQtPmRpZEZhaWwoZXJyb3IpOwogICAgIH0KICAgICBj
bGVhclJlc291cmNlKCk7CkBAIC02MzEsNyArNjMxLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5
Q2gKICAgICB9CiAKICAgICBpZiAocmVzcG9uc2UuY29udGFpbnNJbnZhbGlkSFRUUEhlYWRlcnMo
KSkgewotICAgICAgICBkaWRGYWlsKGlkZW50aWZpZXIsIFJlc291cmNlRXJyb3IoZXJyb3JEb21h
aW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC51cmwoKSwgIlJlc3BvbnNlIGNvbnRhaW5lZCBp
bnZhbGlkIEhUVFAgaGVhZGVycyIsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwpKTsKKyAg
ICAgICAgZGlkRmFpbChpZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHJlcXVlc3QudXJsKCksICJSZXNwb25zZSBjb250YWluZWQgaW52YWxpZCBI
VFRQIGhlYWRlcnMiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAK
aW5kZXggY2VlODJhM2YwNzEzYWM0MDJlNTJlZmFkOGI1YTBmODVhMzQ4ZTg0MS4uZTY0ZDliYmE4
ZjE0MTIzODRlMDA2OTAxMGEyOWNjY2YxOTk5MWExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAgUmVmPEZvcm1TdWJtaXNzaW9u
PiBGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKEhUTUxGb3JtRWxlbWVudCYgZm9ybSwgSFRNTEZvcm1D
b250cm8KICAgICBpZiAoY29waWVkQXR0cmlidXRlcy5tZXRob2QoKSA9PSBNZXRob2Q6OlBvc3Qp
IHsKICAgICAgICAgaXNNdWx0aVBhcnRGb3JtID0gY29waWVkQXR0cmlidXRlcy5pc011bHRpUGFy
dEZvcm0oKTsKICAgICAgICAgaWYgKGlzTXVsdGlQYXJ0Rm9ybSAmJiBpc01haWx0b0Zvcm0pIHsK
LSAgICAgICAgICAgIGVuY29kaW5nVHlwZSA9ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVu
Y29kZWQiOworICAgICAgICAgICAgZW5jb2RpbmdUeXBlID0gImFwcGxpY2F0aW9uL3gtd3d3LWZv
cm0tdXJsZW5jb2RlZCJfczsKICAgICAgICAgICAgIGlzTXVsdGlQYXJ0Rm9ybSA9IGZhbHNlOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMjIxLDcgKzIyMSw3IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4g
Rm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1MRm9ybUVsZW1lbnQmIGZvcm0sIEhUTUxGb3JtQ29u
dHJvCiAKICAgICBpZiAoaXNNdWx0aVBhcnRGb3JtKSB7CiAgICAgICAgIGZvcm1EYXRhID0gRm9y
bURhdGE6OmNyZWF0ZU11bHRpUGFydChkb21Gb3JtRGF0YSk7Ci0gICAgICAgIGJvdW5kYXJ5ID0g
Zm9ybURhdGEtPmJvdW5kYXJ5KCkuZGF0YSgpOworICAgICAgICBib3VuZGFyeSA9IFN0cmluZyB7
IGZvcm1EYXRhLT5ib3VuZGFyeSgpLmRhdGEoKSB9OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZv
cm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZShkb21Gb3JtRGF0YSwgYXR0cmlidXRlcy5tZXRob2Qo
KSA9PSBNZXRob2Q6OkdldCA/IEZvcm1EYXRhOjpGb3JtVVJMRW5jb2RlZCA6IEZvcm1EYXRhOjpw
YXJzZUVuY29kaW5nVHlwZShlbmNvZGluZ1R5cGUpKTsKICAgICAgICAgaWYgKGNvcGllZEF0dHJp
YnV0ZXMubWV0aG9kKCkgPT0gTWV0aG9kOjpQb3N0ICYmIGlzTWFpbHRvRm9ybSkgewpAQCAtMjYy
LDcgKzI2Miw3IEBAIHZvaWQgRm9ybVN1Ym1pc3Npb246OnBvcHVsYXRlRnJhbWVMb2FkUmVxdWVz
dChGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZVJlcXVlc3QpCiAgICAgICAgIGZyYW1lUmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQUmVmZXJyZXIobV9yZWZlcnJlcik7CiAKICAgICBpZiAo
bV9tZXRob2QgPT0gTWV0aG9kOjpQb3N0KSB7Ci0gICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CisgICAgICAgIGZyYW1lUmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKCJQT1NUIl9zKTsKICAgICAgICAgZnJhbWVS
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBCb2R5KG1fZm9ybURhdGEuY29weVJlZigp
KTsKIAogICAgICAgICAvLyBjb25zdHJ1Y3Qgc29tZSB1c2VyIGhlYWRlcnMgaWYgbmVjZXNzYXJ5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA5NmU2MmJhNTk1ZDNjMTMy
MDYzYjVhNGE5YmUxNjZhMDQzZDFjMTE5Li45ZWQ4MDZiNGMzY2IxODI2YTc0MzJhNmQ2OGZiNjNm
ZjA3NTI5YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI5NzEs
NyArMjk3MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZp
ZWxkcyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIElzTWFpCiAgICAgLy8gT25seSBzZXQgZmFs
bGJhY2sgYXJyYXkgaWYgaXQncyBzdGlsbCBlbXB0eSAobGF0ZXIgYXR0ZW1wdHMgbWF5IGJlIGlu
Y29ycmVjdCwgc2VlIGJ1ZyAxMTc4MTgpLgogICAgIGlmIChyZXF1ZXN0LnJlc3BvbnNlQ29udGVu
dERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCkuaXNFbXB0eSgpKSB7CiAgICAgICAg
IC8vIEFsd2F5cyB0cnkgVVRGLTguIElmIHRoYXQgZmFpbHMsIHRyeSBmcmFtZSBlbmNvZGluZyAo
aWYgYW55KSBhbmQgdGhlbiB0aGUgZGVmYXVsdC4KLSAgICAgICAgcmVxdWVzdC5zZXRSZXNwb25z
ZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgiVVRGLTgiLCBtX2ZyYW1l
LmRvY3VtZW50KCktPmVuY29kaW5nKCksIG1fZnJhbWUuc2V0dGluZ3MoKS5kZWZhdWx0VGV4dEVu
Y29kaW5nTmFtZSgpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRSZXNwb25zZUNvbnRlbnREaXNwb3Np
dGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgiVVRGLTgiX3MsIG1fZnJhbWUuZG9jdW1lbnQoKS0+
ZW5jb2RpbmcoKSwgbV9mcmFtZS5zZXR0aW5ncygpLmRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCkp
OwogICAgIH0KIAogICAgIGlmIChzaG91bGRVcGRhdGUgPT0gU2hvdWxkVXBkYXRlQXBwSW5pdGlh
dGVkVmFsdWU6OlllcyAmJiBtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCkpCkBAIC0zMDYxLDcgKzMwNjEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJl
cXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAg
IGlmICghcmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAgICB3b3JraW5nUmVzb3VyY2VSZXF1ZXN0
LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5z
ZXRIVFRQT3JpZ2luKG9yaWdpbik7Ci0gICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQ
TWV0aG9kKCJQT1NUIik7CisgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQTWV0aG9k
KCJQT1NUIl9zKTsKICAgICB3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBCb2R5KGluUmVx
dWVzdC5odHRwQm9keSgpKTsKICAgICB3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBDb250
ZW50VHlwZShjb250ZW50VHlwZSk7CiAgICAgdXBkYXRlUmVxdWVzdEFuZEFkZEV4dHJhRmllbGRz
KHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIElzTWFpblJlc291cmNlOjpZZXMsIGxvYWRUeXBlLCBT
aG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZTo6WWVzLCBGcmFtZUxvYWRlcjo6SXNTZXJ2aWNl
V29ya2VyTmF2aWdhdGlvbkxvYWQ6Ok5vLCAmcmVxdWVzdC5yZXF1ZXN0ZXIoKSk7CkBAIC0zODE4
LDcgKzM4MTgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVt
KEhpc3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5SXRlbSogZnJvbQogICAgIC8vIElmIHRoaXMgd2Fz
IGEgcmVwb3N0IHRoYXQgZmFpbGVkIHRoZSBwYWdlIGNhY2hlLCB3ZSBtaWdodCB0cnkgdG8gcmVw
b3N0IHRoZSBmb3JtLgogICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uOwogICAgIGlmIChmb3Jt
RGF0YSkgewotICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiKTsKKyAgICAgICAg
cmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIl9zKTsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
Qm9keShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRU
eXBlKGl0ZW0uZm9ybUNvbnRlbnRUeXBlKCkpOwogICAgICAgICBhdXRvIHNlY3VyaXR5T3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoaXRlbS5yZWZlcnJlcigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IGMzY2I2ZDQ4MjkwYjIxYWJhMTg2
NWVkY2FkNDUzZWRkNmE3NzMzNDUuLmNiMzM2ZjhjYjAxY2FiZDUzYWEyNzk4Y2U2ODA4OTg3Y2Y2
NjA5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApAQCAtMzI4LDcgKzMy
OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNvbHZlUHJvbWlzZXMoVmVjdG9yPFJlZlB0cjxE
ZWZlcnJlZFByb21pc2U+PiYgcHJvbWlzZXMpCiAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsK
IH0KIAotc3RhdGljIGlubGluZSB2b2lkIHJlamVjdFByb21pc2VzKFZlY3RvcjxSZWZQdHI8RGVm
ZXJyZWRQcm9taXNlPj4mIHByb21pc2VzLCBjb25zdCBjaGFyKiBtZXNzYWdlKQorc3RhdGljIGlu
bGluZSB2b2lkIHJlamVjdFByb21pc2VzKFZlY3RvcjxSZWZQdHI8RGVmZXJyZWRQcm9taXNlPj4m
IHByb21pc2VzLCBBU0NJSUxpdGVyYWwgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIXByb21pc2Vz
LmlzRW1wdHkoKSk7CiAgICAgYXV0byBwcm9taXNlc1RvQmVSZWplY3RlZCA9IHN0ZDo6ZXhjaGFu
Z2UocHJvbWlzZXMsIHsgfSk7CkBAIC0zNDEsNyArMzQxLDcgQEAgaW5saW5lIHZvaWQgSW1hZ2VM
b2FkZXI6OnJlc29sdmVEZWNvZGVQcm9taXNlcygpCiAgICAgcmVzb2x2ZVByb21pc2VzKG1fZGVj
b2RpbmdQcm9taXNlcyk7CiB9CiAKLWlubGluZSB2b2lkIEltYWdlTG9hZGVyOjpyZWplY3REZWNv
ZGVQcm9taXNlcyhjb25zdCBjaGFyKiBtZXNzYWdlKQoraW5saW5lIHZvaWQgSW1hZ2VMb2FkZXI6
OnJlamVjdERlY29kZVByb21pc2VzKEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQogewogICAgIHJlamVj
dFByb21pc2VzKG1fZGVjb2RpbmdQcm9taXNlcywgbWVzc2FnZSk7CiB9CkBAIC0zNzUsNyArMzc1
LDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHIKICAgICAgICAgZWxlbWVudCgpLmRvY3VtZW50
KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIG1lc3NhZ2UpOwogCiAgICAgICAgIGlmIChoYXNQZW5kaW5nRGVjb2RlUHJvbWlz
ZXMoKSkKLSAgICAgICAgICAgIHJlamVjdERlY29kZVByb21pc2VzKCJBY2Nlc3MgY29udHJvbCBl
cnJvci4iKTsKKyAgICAgICAgICAgIHJlamVjdERlY29kZVByb21pc2VzKCJBY2Nlc3MgY29udHJv
bCBlcnJvci4iX3MpOwogICAgICAgICAKICAgICAgICAgQVNTRVJUKCFtX2hhc1BlbmRpbmdMb2Fk
RXZlbnQpOwogCkBAIC0zODcsNyArMzg3LDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHIKIAog
ICAgIGlmIChtX2ltYWdlLT53YXNDYW5jZWxlZCgpKSB7CiAgICAgICAgIGlmIChoYXNQZW5kaW5n
RGVjb2RlUHJvbWlzZXMoKSkKLSAgICAgICAgICAgIHJlamVjdERlY29kZVByb21pc2VzKCJMb2Fk
aW5nIHdhcyBjYW5jZWxlZC4iKTsKKyAgICAgICAgICAgIHJlamVjdERlY29kZVByb21pc2VzKCJM
b2FkaW5nIHdhcyBjYW5jZWxlZC4iX3MpOwogICAgICAgICBtX2hhc1BlbmRpbmdMb2FkRXZlbnQg
PSBmYWxzZTsKICAgICAgICAgLy8gT25seSBjb25zaWRlciB1cGRhdGluZyB0aGUgcHJvdGVjdGlv
biByZWYtY291bnQgb2YgdGhlIEVsZW1lbnQgaW1tZWRpYXRlbHkgYmVmb3JlIHJldHVybmluZwog
ICAgICAgICAvLyBmcm9tIHRoaXMgZnVuY3Rpb24gYXMgZG9pbmcgc28gbWlnaHQgcmVzdWx0IGlu
IHRoZSBkZXN0cnVjdGlvbiBvZiB0aGlzIEltYWdlTG9hZGVyLgpAQCAtNDY0LDEzICs0NjQsMTMg
QEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGVjb2RlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKICAgICBtX2RlY29kaW5nUHJvbWlzZXMuYXBwZW5kKFdURk1vdmUocHJvbWlzZSkpOwogCiAg
ICAgaWYgKCFlbGVtZW50KCkuZG9jdW1lbnQoKS5kb21XaW5kb3coKSkgewotICAgICAgICByZWpl
Y3REZWNvZGVQcm9taXNlcygiSW5hY3RpdmUgZG9jdW1lbnQuIik7CisgICAgICAgIHJlamVjdERl
Y29kZVByb21pc2VzKCJJbmFjdGl2ZSBkb2N1bWVudC4iX3MpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgQXRvbVN0cmluZyBhdHRyID0gZWxlbWVudCgpLmltYWdlU291cmNlVVJMKCk7
CiAgICAgaWYgKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyKS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgcmVqZWN0RGVjb2RlUHJvbWlzZXMoIk1pc3Npbmcgc291cmNlIFVSTC4i
KTsKKyAgICAgICAgcmVqZWN0RGVjb2RlUHJvbWlzZXMoIk1pc3Npbmcgc291cmNlIFVSTC4iX3Mp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00ODMsMTIgKzQ4MywxMiBAQCB2b2lkIElt
YWdlTG9hZGVyOjpkZWNvZGUoKQogICAgIEFTU0VSVChoYXNQZW5kaW5nRGVjb2RlUHJvbWlzZXMo
KSk7CiAgICAgCiAgICAgaWYgKCFlbGVtZW50KCkuZG9jdW1lbnQoKS5kb21XaW5kb3coKSkgewot
ICAgICAgICByZWplY3REZWNvZGVQcm9taXNlcygiSW5hY3RpdmUgZG9jdW1lbnQuIik7CisgICAg
ICAgIHJlamVjdERlY29kZVByb21pc2VzKCJJbmFjdGl2ZSBkb2N1bWVudC4iX3MpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFtX2ltYWdlIHx8ICFtX2ltYWdlLT5pbWFnZSgp
IHx8IG1faW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkgewotICAgICAgICByZWplY3REZWNvZGVQcm9t
aXNlcygiTG9hZGluZyBlcnJvci4iKTsKKyAgICAgICAgcmVqZWN0RGVjb2RlUHJvbWlzZXMoIkxv
YWRpbmcgZXJyb3IuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuaAppbmRleCBhYWExNDE0OTg4ZWRjODY4MzU2MmNlN2M2MDAyMTRmZWU5
M2Y1MTY3Li4xNTg3ZGFmYWQxOWQ2ZTM0N2E0MzA2MTJlOTUwNjE4N2VlN2MzYzc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaApAQCAtMTEzLDcgKzExMyw3IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIGhhc1BlbmRpbmdEZWNvZGVQcm9taXNlcygpIGNvbnN0IHsgcmV0dXJuICFtX2Rl
Y29kaW5nUHJvbWlzZXMuaXNFbXB0eSgpOyB9CiAgICAgdm9pZCByZXNvbHZlRGVjb2RlUHJvbWlz
ZXMoKTsKLSAgICB2b2lkIHJlamVjdERlY29kZVByb21pc2VzKGNvbnN0IGNoYXIqIG1lc3NhZ2Up
OworICAgIHZvaWQgcmVqZWN0RGVjb2RlUHJvbWlzZXMoQVNDSUlMaXRlcmFsIG1lc3NhZ2UpOwog
ICAgIHZvaWQgZGVjb2RlKCk7CiAgICAgCiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKaW5kZXggMjE5MGQ5N2I4
ZDhhMWRkZTIxYjM3YWIyODQyMTFhYmI1MTVjOTRmMC4uZjRjNWEyNWZhMmFjYjgxNThmZWIyYmU4
Yjg4MzY1YzFjNTVkMzdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVk
Q29udGVudENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRl
bnRDaGVja2VyLmNwcApAQCAtNTIsMTAgKzUyLDEwIEBAIGJvb2wgTWl4ZWRDb250ZW50Q2hlY2tl
cjo6aXNNaXhlZENvbnRlbnQoU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBV
CiAgICAgcmV0dXJuICFTZWN1cml0eU9yaWdpbjo6aXNTZWN1cmUodXJsKTsKIH0KIAotc3RhdGlj
IHZvaWQgbG9nV2FybmluZyhjb25zdCBGcmFtZSYgZnJhbWUsIGJvb2wgYWxsb3dlZCwgY29uc3Qg
U3RyaW5nJiBhY3Rpb24sIGNvbnN0IFVSTCYgdGFyZ2V0KQorc3RhdGljIHZvaWQgbG9nV2Fybmlu
Zyhjb25zdCBGcmFtZSYgZnJhbWUsIGJvb2wgYWxsb3dlZCwgQVNDSUlMaXRlcmFsIGFjdGlvbiwg
Y29uc3QgVVJMJiB0YXJnZXQpCiB7CiAgICAgY29uc3QgY2hhciogZXJyb3JTdHJpbmcgPSBhbGxv
d2VkID8gIiB3YXMgYWxsb3dlZCB0byAiIDogIiB3YXMgbm90IGFsbG93ZWQgdG8gIjsKLSAgICBh
dXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKChhbGxvd2VkID8gU3RyaW5nKCkgOiAiW2Jsb2NrZWRd
ICIpLCAiVGhlIHBhZ2UgYXQgIiwgZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVy
RWxsaXBzaXplZFRvTGVuZ3RoKCksIGVycm9yU3RyaW5nLCBhY3Rpb24sICIgaW5zZWN1cmUgY29u
dGVudCBmcm9tICIsIHRhcmdldC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIi5c
biIpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoKGFsbG93ZWQgPyAiIiA6ICJbYmxv
Y2tlZF0gIiksICJUaGUgcGFnZSBhdCAiLCBmcmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdD
ZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgZXJyb3JTdHJpbmcsIGFjdGlvbiwgIiBpbnNlY3Vy
ZSBjb250ZW50IGZyb20gIiwgdGFyZ2V0LnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
LCAiLlxuIik7CiAgICAgZnJhbWUuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSk7CiB9CiAK
QEAgLTcyLDcgKzcyLDcgQEAgYm9vbCBNaXhlZENvbnRlbnRDaGVja2VyOjpjYW5EaXNwbGF5SW5z
ZWN1cmVDb250ZW50KEZyYW1lJiBmcmFtZSwgU2VjdXJpdHlPcmlnaW4KICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBib29sIGFsbG93ZWQgPSAhaXNTdHJpY3RNb2RlICYmIChmcmFtZS5zZXR0
aW5ncygpLmFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KCkgfHwgdHlwZSA9PSBDb250ZW50
VHlwZTo6QWN0aXZlQ2FuV2FybikgJiYgIWZyYW1lLmRvY3VtZW50KCktPmdlb2xvY2F0aW9uQWNj
ZXNzZWQoKTsKLSAgICBsb2dXYXJuaW5nKGZyYW1lLCBhbGxvd2VkLCAiZGlzcGxheSIsIHVybCk7
CisgICAgbG9nV2FybmluZyhmcmFtZSwgYWxsb3dlZCwgImRpc3BsYXkiX3MsIHVybCk7CiAKICAg
ICBpZiAoYWxsb3dlZCkgewogICAgICAgICBmcmFtZS5kb2N1bWVudCgpLT5zZXRGb3VuZE1peGVk
Q29udGVudChTZWN1cml0eUNvbnRleHQ6Ok1peGVkQ29udGVudFR5cGU6OkluYWN0aXZlKTsKQEAg
LTkxLDcgKzkxLDcgQEAgYm9vbCBNaXhlZENvbnRlbnRDaGVja2VyOjpjYW5SdW5JbnNlY3VyZUNv
bnRlbnQoRnJhbWUmIGZyYW1lLCBTZWN1cml0eU9yaWdpbiYgc2UKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgYm9vbCBhbGxvd2VkID0gIWZyYW1lLmRvY3VtZW50KCktPmlzU3RyaWN0TWl4
ZWRDb250ZW50TW9kZSgpICYmIGZyYW1lLnNldHRpbmdzKCkuYWxsb3dSdW5uaW5nT2ZJbnNlY3Vy
ZUNvbnRlbnQoKSAmJiAhZnJhbWUuZG9jdW1lbnQoKS0+Z2VvbG9jYXRpb25BY2Nlc3NlZCgpICYm
ICFmcmFtZS5kb2N1bWVudCgpLT5zZWN1cmVDb29raWVzQWNjZXNzZWQoKTsKLSAgICBsb2dXYXJu
aW5nKGZyYW1lLCBhbGxvd2VkLCAicnVuIiwgdXJsKTsKKyAgICBsb2dXYXJuaW5nKGZyYW1lLCBh
bGxvd2VkLCAicnVuIl9zLCB1cmwpOwogCiAgICAgaWYgKGFsbG93ZWQpIHsKICAgICAgICAgZnJh
bWUuZG9jdW1lbnQoKS0+c2V0Rm91bmRNaXhlZENvbnRlbnQoU2VjdXJpdHlDb250ZXh0OjpNaXhl
ZENvbnRlbnRUeXBlOjpBY3RpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BpbmdMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmlu
ZGV4IDY2ZTdhMzkzZjM0Y2UzNzJlYzMwZmZjYjU0NjgwNzdlMTIzODE4Y2YuLjBlMmEzZDNkMmMw
YTRmNDVlYTdhOTM4OTBmZDJhODc4ODI5ZTAxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9QaW5nTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xv
YWRlci5jcHAKQEAgLTEzNCw4ICsxMzQsOCBAQCB2b2lkIFBpbmdMb2FkZXI6OnNlbmRQaW5nKEZy
YW1lJiBmcmFtZSwgY29uc3QgVVJMJiBwaW5nVVJMLCBjb25zdCBVUkwmIGRlc3RpbmF0aQogICAg
IGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CiAgICAgZG9jdW1lbnQuY29udGVu
dFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChyZXF1ZXN0
LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQpOwogCi0g
ICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7Ci0gICAgcmVxdWVzdC5zZXRIVFRQQ29u
dGVudFR5cGUoInRleHQvcGluZyIpOworICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCJf
cyk7CisgICAgcmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoInRleHQvcGluZyJfcyk7CiAgICAg
cmVxdWVzdC5zZXRIVFRQQm9keShGb3JtRGF0YTo6Y3JlYXRlKCJQSU5HIikpOwogICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wsIEhUVFBI
ZWFkZXJWYWx1ZXM6Om1heEFnZTAoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAppbmRleCBlNTU1YjI3OTdkOGM1Y2Y3Mjk4ZTc3MDk5
NWQ2YmZkMDBkYWIzNzkzLi40NmI1YzllMjNkNTI1YmVkMWNmNzI2ODA5Mzk1NmU0NTdhYTAwNjRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3Mu
Y3BwCkBAIC03MiwxNSArNzIsMTUgQEAgc3RhdGljIHZvaWQgZW5jb2RlSGFzaFNldChLZXllZEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsICBjb25zdCBTdHIKIAogc3RhdGlj
IHZvaWQgZW5jb2RlRm9udEhhc2hTZXQoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGhhc2hTZXQpCiB7Ci0gICAgZW5jb2Rl
SGFzaFNldChlbmNvZGVyLCBsYWJlbCwgImZvbnQiLCBoYXNoU2V0KTsKKyAgICBlbmNvZGVIYXNo
U2V0KGVuY29kZXIsIGxhYmVsLCAiZm9udCJfcywgaGFzaFNldCk7CiB9CiAgICAgCiBzdGF0aWMg
dm9pZCBlbmNvZGVDYW52YXNBY3Rpdml0eVJlY29yZChLZXllZEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IENhbnZhc0FjdGl2aXR5UmVjb3JkJiBjYW52YXNBY3Rp
dml0eVJlY29yZCkKIHsKICAgICBlbmNvZGVyLmVuY29kZU9iamVjdChsYWJlbCwgY2FudmFzQWN0
aXZpdHlSZWNvcmQsIFtdIChLZXllZEVuY29kZXImIGVuY29kZXJJbm5lciwgY29uc3QgQ2FudmFz
QWN0aXZpdHlSZWNvcmQmIGNhbnZhc0FjdGl2aXR5UmVjb3JkKSB7Ci0gICAgICAgIGVuY29kZXJJ
bm5lci5lbmNvZGVCb29sKCJ3YXNEYXRhUmVhZCIsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLndhc0Rh
dGFSZWFkKTsKLSAgICAgICAgZW5jb2RlcklubmVyLmVuY29kZU9iamVjdHMoInRleHRXcml0dGVu
IiwgY2FudmFzQWN0aXZpdHlSZWNvcmQudGV4dFdyaXR0ZW4uYmVnaW4oKSwgY2FudmFzQWN0aXZp
dHlSZWNvcmQudGV4dFdyaXR0ZW4uZW5kKCksIFtdIChLZXllZEVuY29kZXImIGVuY29kZXJJbm5l
cjIsIGNvbnN0IFN0cmluZyYgdGV4dCkgewotICAgICAgICAgICAgZW5jb2RlcklubmVyMi5lbmNv
ZGVTdHJpbmcoInRleHQiLCB0ZXh0KTsKKyAgICAgICAgZW5jb2RlcklubmVyLmVuY29kZUJvb2wo
Indhc0RhdGFSZWFkIl9zLCBjYW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCk7CisgICAg
ICAgIGVuY29kZXJJbm5lci5lbmNvZGVPYmplY3RzKCJ0ZXh0V3JpdHRlbiJfcywgY2FudmFzQWN0
aXZpdHlSZWNvcmQudGV4dFdyaXR0ZW4uYmVnaW4oKSwgY2FudmFzQWN0aXZpdHlSZWNvcmQudGV4
dFdyaXR0ZW4uZW5kKCksIFtdIChLZXllZEVuY29kZXImIGVuY29kZXJJbm5lcjIsIGNvbnN0IFN0
cmluZyYgdGV4dCkgeworICAgICAgICAgICAgZW5jb2RlcklubmVyMi5lbmNvZGVTdHJpbmcoInRl
eHQiX3MsIHRleHQpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTEwMyw5ICsxMDMsOSBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmVuY29kZShLZXllZEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgLy8gVG9wIGZyYW1lIHN0YXRzCiAgICAgZW5jb2RlSGFzaFNldChlbmNv
ZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcywgImRvbWFpbiJfcywgdG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNUbyk7CiAgICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCAidG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNGcm9tIl9zLCAiZG9tYWluIl9zLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c0Zyb20pOwotICAgIGVuY29kZUhhc2hTZXQoZW5jb2RlciwgInRvcEZyYW1lTGlua0RlY29yYXRp
b25zRnJvbSJfcywgImRvbWFpbiIsIHRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSk7CisgICAg
ZW5jb2RlSGFzaFNldChlbmNvZGVyLCAidG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIl9zLCAi
ZG9tYWluIl9zLCB0b3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20pOwogICAgIGVuY29kZXIuZW5j
b2RlQm9vbCgiZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2UiX3MsIGdvdExp
bmtEZWNvcmF0aW9uRnJvbVByZXZhbGVudFJlc291cmNlKTsKLSAgICBlbmNvZGVIYXNoU2V0KGVu
Y29kZXIsICJ0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIl9zLCAiZG9tYWluIiwgdG9w
RnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyk7CisgICAgZW5jb2RlSGFzaFNldChlbmNvZGVy
LCAidG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyJfcywgImRvbWFpbiJfcywgdG9wRnJh
bWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyk7CiAKICAgICAvLyBTdWJmcmFtZSBzdGF0cwogICAg
IGVuY29kZUhhc2hTZXQoZW5jb2RlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiX3Ms
ICJkb21haW4iX3MsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMpOwpAQCAtMTI0LDEyICsx
MjQsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNvZGUoS2V5ZWRFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIuZW5jb2RlVUludDMyKCJ0aW1lc0FjY2Vzc2Vk
QXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJIl9zLCB0aW1lc0FjY2Vzc2VkQXNGaXJz
dFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJKTsKIAogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJ
U1RJQ1MpCi0gICAgZW5jb2RlRm9udEhhc2hTZXQoZW5jb2RlciwgImZvbnRzRmFpbGVkVG9Mb2Fk
IiwgZm9udHNGYWlsZWRUb0xvYWQpOwotICAgIGVuY29kZUZvbnRIYXNoU2V0KGVuY29kZXIsICJm
b250c1N1Y2Nlc3NmdWxseUxvYWRlZCIsIGZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkKTsKLSAgICBl
bmNvZGVIYXNoU2V0KGVuY29kZXIsICJ0b3BGcmFtZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNj
ZXNzZWRXZWJBUElzIiwgImRvbWFpbiIsIHRvcEZyYW1lUmVnaXN0cmFibGVEb21haW5zV2hpY2hB
Y2Nlc3NlZFdlYkFQSXMpOwotICAgIGVuY29kZUNhbnZhc0FjdGl2aXR5UmVjb3JkKGVuY29kZXIs
ICJjYW52YXNBY3Rpdml0eVJlY29yZCIsIGNhbnZhc0FjdGl2aXR5UmVjb3JkKTsKLSAgICBlbmNv
ZGVPcHRpb25TZXQoZW5jb2RlciwgIm5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkQml0TWFzayIs
IG5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkKTsKLSAgICBlbmNvZGVPcHRpb25TZXQoZW5jb2Rl
ciwgInNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkQml0TWFzayIsIHNjcmVlbkZ1bmN0aW9uc0FjY2Vz
c2VkKTsKKyAgICBlbmNvZGVGb250SGFzaFNldChlbmNvZGVyLCAiZm9udHNGYWlsZWRUb0xvYWQi
X3MsIGZvbnRzRmFpbGVkVG9Mb2FkKTsKKyAgICBlbmNvZGVGb250SGFzaFNldChlbmNvZGVyLCAi
Zm9udHNTdWNjZXNzZnVsbHlMb2FkZWQiX3MsIGZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkKTsKKyAg
ICBlbmNvZGVIYXNoU2V0KGVuY29kZXIsICJ0b3BGcmFtZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNo
QWNjZXNzZWRXZWJBUElzIl9zLCAiZG9tYWluIl9zLCB0b3BGcmFtZVJlZ2lzdHJhYmxlRG9tYWlu
c1doaWNoQWNjZXNzZWRXZWJBUElzKTsKKyAgICBlbmNvZGVDYW52YXNBY3Rpdml0eVJlY29yZChl
bmNvZGVyLCAiY2FudmFzQWN0aXZpdHlSZWNvcmQiX3MsIGNhbnZhc0FjdGl2aXR5UmVjb3JkKTsK
KyAgICBlbmNvZGVPcHRpb25TZXQoZW5jb2RlciwgIm5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2Vk
Qml0TWFzayJfcywgbmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWQpOworICAgIGVuY29kZU9wdGlv
blNldChlbmNvZGVyLCAic2NyZWVuRnVuY3Rpb25zQWNjZXNzZWRCaXRNYXNrIl9zLCBzY3JlZW5G
dW5jdGlvbnNBY2Nlc3NlZCk7CiAjZW5kaWYKIH0KIApAQCAtMTM4LDExICsxMzgsMTEgQEAgc3Rh
dGljIHZvaWQgZGVjb2RlSGFzaENvdW50ZWRTZXQoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBjb25z
dCBTdHJpbmcmIGxhYmVsLCBIYXMKICAgICBWZWN0b3I8U3RyaW5nPiBpZ25vcmVkOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnVzZWQtcmVzdWx0IikKICAgICBkZWNvZGVyLmRlY29kZU9iamVj
dHMobGFiZWwsIGlnbm9yZWQsIFsmaGFzaENvdW50ZWRTZXRdKEtleWVkRGVjb2RlciYgZGVjb2Rl
cklubmVyLCBTdHJpbmcmIGRvbWFpbikgewotICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNv
ZGVTdHJpbmcoIm9yaWdpbiIsIGRvbWFpbikpCisgICAgICAgIGlmICghZGVjb2RlcklubmVyLmRl
Y29kZVN0cmluZygib3JpZ2luIl9zLCBkb21haW4pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgY291bnQ7Ci0gICAgICAgIGlmICghZGVjb2Rl
cklubmVyLmRlY29kZVVJbnQzMigiY291bnQiLCBjb3VudCkpCisgICAgICAgIGlmICghZGVjb2Rl
cklubmVyLmRlY29kZVVJbnQzMigiY291bnQiX3MsIGNvdW50KSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICBoYXNoQ291bnRlZFNldC5hZGQoUmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhkb21haW4pLCBjb3Vu
dCk7CkBAIC0xOTAsMTggKzE5MCwxOCBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAKIHN0YXRpYyB2
b2lkIGRlY29kZUZvbnRIYXNoU2V0KEtleWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5n
JiBsYWJlbCwgSGFzaFNldDxTdHJpbmc+JiBoYXNoU2V0KQogewotICAgIGRlY29kZUhhc2hTZXQo
ZGVjb2RlciwgbGFiZWwsICJmb250IiwgaGFzaFNldCk7CisgICAgZGVjb2RlSGFzaFNldChkZWNv
ZGVyLCBsYWJlbCwgImZvbnQiX3MsIGhhc2hTZXQpOwogfQogICAgIAogc3RhdGljIHZvaWQgZGVj
b2RlQ2FudmFzQWN0aXZpdHlSZWNvcmQoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDYW52YXNBY3Rpdml0eVJlY29yZCYgY2FudmFzQWN0aXZpdHlSZWNvcmQpCiB7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVudXNlZC1yZXN1bHQiKQogICAgIGRlY29kZXIuZGVj
b2RlT2JqZWN0KGxhYmVsLCBjYW52YXNBY3Rpdml0eVJlY29yZCwgW10gKEtleWVkRGVjb2RlciYg
ZGVjb2RlcklubmVyLCBDYW52YXNBY3Rpdml0eVJlY29yZCYgY2FudmFzQWN0aXZpdHlSZWNvcmQp
IHsKLSAgICAgICAgaWYgKCFkZWNvZGVySW5uZXIuZGVjb2RlQm9vbCgid2FzRGF0YVJlYWQiLCBj
YW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCkpCisgICAgICAgIGlmICghZGVjb2Rlcklu
bmVyLmRlY29kZUJvb2woIndhc0RhdGFSZWFkIl9zLCBjYW52YXNBY3Rpdml0eVJlY29yZC53YXNE
YXRhUmVhZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFZlY3RvcjxTdHJp
bmc+IGlnbm9yZTsKLSAgICAgICAgZGVjb2RlcklubmVyLmRlY29kZU9iamVjdHMoInRleHRXcml0
dGVuIiwgaWdub3JlLCBbJmNhbnZhc0FjdGl2aXR5UmVjb3JkXSAoS2V5ZWREZWNvZGVyJiBkZWNv
ZGVySW5uZXIyLCBTdHJpbmcmIHRleHQpIHsKLSAgICAgICAgICAgIGlmICghZGVjb2RlcklubmVy
Mi5kZWNvZGVTdHJpbmcoInRleHQiLCB0ZXh0KSkKKyAgICAgICAgZGVjb2RlcklubmVyLmRlY29k
ZU9iamVjdHMoInRleHRXcml0dGVuIl9zLCBpZ25vcmUsIFsmY2FudmFzQWN0aXZpdHlSZWNvcmRd
IChLZXllZERlY29kZXImIGRlY29kZXJJbm5lcjIsIFN0cmluZyYgdGV4dCkgeworICAgICAgICAg
ICAgaWYgKCFkZWNvZGVySW5uZXIyLmRlY29kZVN0cmluZygidGV4dCJfcywgdGV4dCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY2FudmFzQWN0aXZpdHlSZWNv
cmQudGV4dFdyaXR0ZW4uYWRkKHRleHQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0y
MTYsODEgKzIxNiw4MSBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmRlY29kZShLZXll
ZERlY29kZXImIGRlY29kZXIsIHVuc2lnbmVkIG1vZGVsVmVyc2lvbgogewogICAgIFN0cmluZyBy
ZWdpc3RyYWJsZURvbWFpbkFzU3RyaW5nOwogICAgIGlmIChtb2RlbFZlcnNpb24gPj0gMTUpIHsK
LSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVN0cmluZygiUHJldmFsZW50UmVzb3VyY2VEb21h
aW4iLCByZWdpc3RyYWJsZURvbWFpbkFzU3RyaW5nKSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZVN0cmluZygiUHJldmFsZW50UmVzb3VyY2VEb21haW4iX3MsIHJlZ2lzdHJhYmxlRG9tYWlu
QXNTdHJpbmcpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwg
cmVnaXN0cmFibGVEb21haW5Bc1N0cmluZykpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVT
dHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIl9zLCByZWdpc3RyYWJsZURvbWFpbkFzU3Ry
aW5nKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmVnaXN0cmFibGVE
b21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxl
RG9tYWluU3RyaW5nKHJlZ2lzdHJhYmxlRG9tYWluQXNTdHJpbmcpOwogCiAgICAgLy8gVXNlciBp
bnRlcmFjdGlvbgotICAgIGlmICghZGVjb2Rlci5kZWNvZGVCb29sKCJoYWRVc2VySW50ZXJhY3Rp
b24iLCBoYWRVc2VySW50ZXJhY3Rpb24pKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGVCb29sKCJo
YWRVc2VySW50ZXJhY3Rpb24iX3MsIGhhZFVzZXJJbnRlcmFjdGlvbikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCiAgICAgaWYgKG1vZGVsVmVyc2lvbiA+
PSAxNSkKLSAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3RvcmFnZUFjY2Vzc1VuZGVy
VG9wRnJhbWVEb21haW5zIiwgImRvbWFpbiIsIHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9t
YWlucyk7CisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN0b3JhZ2VBY2Nlc3NVbmRl
clRvcEZyYW1lRG9tYWlucyJfcywgImRvbWFpbiJfcywgc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJh
bWVEb21haW5zKTsKICAgICBlbHNlCi0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN0
b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2lucyIsICJvcmlnaW4iLCBzdG9yYWdlQWNjZXNz
VW5kZXJUb3BGcmFtZURvbWFpbnMpOworICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJz
dG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMiX3MsICJvcmlnaW4iX3MsIHN0b3JhZ2VB
Y2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyk7CiAKICAgICAvLyBUb3AgZnJhbWUgc3RhdHMKICAg
ICBpZiAobW9kZWxWZXJzaW9uID49IDE1KSB7Ci0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2Rl
ciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iLCAiZG9tYWluIiwgdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbyk7Ci0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzRnJvbSIsICJkb21haW4iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20p
OworICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c1RvIl9zLCAiZG9tYWluIl9zLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAgICAgICAg
ZGVjb2RlSGFzaFNldChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLCAi
ZG9tYWluIl9zLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOwogICAgIH0gZWxzZSBpZiAo
bW9kZWxWZXJzaW9uID49IDExKSB7CiAgICAgICAgIEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPiB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRlZDsKLSAgICAgICAgZGVjb2Rl
SGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iLCB0b3BG
cmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRlZCk7CisgICAgICAgIGRlY29kZUhhc2hDb3VudGVk
U2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLCB0b3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c1RvQ291bnRlZCk7CiAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogdG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQudmFsdWVzKCkpCiAgICAgICAgICAgICB0b3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZChkb21haW4pOwogICAgICAgICAKICAgICAgICAgSGFzaENv
dW50ZWRTZXQ8UmVnaXN0cmFibGVEb21haW4+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbUNv
dW50ZWQ7Ci0gICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c0Zyb20iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21Db3VudGVkKTsK
KyAgICAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzRnJvbSJfcywgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tQ291bnRlZCk7CiAgICAg
ICAgIGZvciAoYXV0byYgZG9tYWluIDogdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tQ291bnRl
ZC52YWx1ZXMoKSkKICAgICAgICAgICAgIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbS5hZGQo
ZG9tYWluKTsKICAgICB9CiAKICAgICBpZiAobW9kZWxWZXJzaW9uID49IDE2KSB7Ci0gICAgICAg
IGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSIsICJk
b21haW4iLCB0b3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20pOwotICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlQm9vbCgiZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2UiLCBn
b3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSkpCisgICAgICAgIGRlY29kZUhh
c2hTZXQoZGVjb2RlciwgInRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSJfcywgImRvbWFpbiJf
cywgdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tKTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZUJvb2woImdvdExpbmtEZWNvcmF0aW9uRnJvbVByZXZhbGVudFJlc291cmNlIl9zLCBnb3RM
aW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAxNykgewogICAgICAgICBI
YXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5
U2NyaXB0c0NvdW50ZWQ7Ci0gICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJ0
b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIiwgdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5
U2NyaXB0c0NvdW50ZWQpOworICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAi
dG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyJfcywgdG9wRnJhbWVMb2FkZWRUaGlyZFBh
cnR5U2NyaXB0c0NvdW50ZWQpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHRvcEZyYW1l
TG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNDb3VudGVkLnZhbHVlcygpKQogICAgICAgICAgICAgdG9w
RnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cy5hZGQoZG9tYWluKTsKICAgICB9CiAKICAgICAv
LyBTdWJmcmFtZSBzdGF0cwogICAgIGlmIChtb2RlbFZlcnNpb24gPj0gMTUpCi0gICAgICAgIGRl
Y29kZUhhc2hTZXQoZGVjb2RlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiLCAiZG9t
YWluIiwgc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyk7CisgICAgICAgIGRlY29kZUhhc2hT
ZXQoZGVjb2RlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsICJkb21haW4iX3Ms
IHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogICAgIGVsc2UgaWYgKG1vZGVsVmVyc2lv
biA+PSAxNCkgewogICAgICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQ7Ci0gICAgICAgIGRlY29kZUhhc2hDb3Vu
dGVkU2V0KGRlY29kZXIsICJzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQpOworICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNl
dChkZWNvZGVyLCAic3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyJfcywgc3ViZnJhbWVVbmRl
clRvcEZyYW1lRG9tYWluc0NvdW50ZWQpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHN1
YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkLnZhbHVlcygpKQogICAgICAgICAgICAg
c3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQoZG9tYWluKTsKICAgICB9CiAKICAgICAv
LyBTdWJyZXNvdXJjZSBzdGF0cwogICAgIGlmIChtb2RlbFZlcnNpb24gPj0gMTUpIHsKLSAgICAg
ICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlu
cyIsICJkb21haW4iLCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zKTsKLSAgICAgICAg
ZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyIsICJk
b21haW4iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKLSAgICAgICAgZGVjb2RlSGFz
aFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIiwgImRvbWFpbiIs
IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSk7CisgICAgICAgIGRlY29kZUhhc2hTZXQo
ZGVjb2RlciwgInN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsICJkb21haW4iX3Ms
IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMpOworICAgICAgICBkZWNvZGVIYXNoU2V0
KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLCAiZG9tYWluIl9zLCBz
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAgICAgICAgZGVjb2RlSGFzaFNldChkZWNv
ZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLCAiZG9tYWluIl9zLCBzdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEhhc2hD
b3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21h
aW5zQ291bnRlZDsKLSAgICAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21h
aW5zQ291bnRlZCk7CisgICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJzdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zIl9zLCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVE
b21haW5zQ291bnRlZCk7CiAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogc3VicmVzb3VyY2VV
bmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQudmFsdWVzKCkpCiAgICAgICAgICAgICBzdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVEb21haW5zLmFkZChkb21haW4pOwogCiAgICAgICAgIEhhc2hDb3Vu
dGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvQ291
bnRlZDsKLSAgICAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzVG8iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRlZCk7
CisgICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvIl9zLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRlZCk7CiAg
ICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0Nv
dW50ZWQudmFsdWVzKCkpCiAgICAgICAgICAgICBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
LmFkZChkb21haW4pOwogICAgICAgICBpZiAobW9kZWxWZXJzaW9uID49IDExKSB7CiAgICAgICAg
ICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gc3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNGcm9tQ291bnRlZDsKLSAgICAgICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRl
Y29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCBzdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c0Zyb21Db3VudGVkKTsKKyAgICAgICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0
KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iX3MsIHN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzRnJvbUNvdW50ZWQpOwogICAgICAgICAgICAgZm9yIChhdXRvJiBkb21h
aW4gOiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21Db3VudGVkLnZhbHVlcygpKQogICAg
ICAgICAgICAgICAgIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS5hZGQoZG9tYWluKTsK
ICAgICAgICAgfQpAQCAtMjk4LDExICsyOTgsMTEgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCB1bnNpZ25lZCBtb2RlbFZlcnNpb24K
IAogCiAgICAgLy8gUHJldmFsZW50IFJlc291cmNlCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUJv
b2woImlzUHJldmFsZW50UmVzb3VyY2UiLCBpc1ByZXZhbGVudFJlc291cmNlKSkKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlQm9vbCgiaXNQcmV2YWxlbnRSZXNvdXJjZSJfcywgaXNQcmV2YWxlbnRS
ZXNvdXJjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtb2RlbFZlcnNpb24g
Pj0gMTIpIHsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woImlzVmVyeVByZXZhbGVu
dFJlc291cmNlIiwgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpKQorICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlQm9vbCgiaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UiX3MsIGlzVmVyeVByZXZhbGVu
dFJlc291cmNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTMxMiwz
NyArMzEyLDM3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKEtleWVkRGVj
b2RlciYgZGVjb2RlciwgdW5zaWduZWQgbW9kZWxWZXJzaW9uCiAgICAgICAgIGlzVmVyeVByZXZh
bGVudFJlc291cmNlID0gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJ
bnQzMigiZGF0YVJlY29yZHNSZW1vdmVkIiwgZGF0YVJlY29yZHNSZW1vdmVkKSkKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlVUludDMyKCJkYXRhUmVjb3Jkc1JlbW92ZWQiX3MsIGRhdGFSZWNvcmRz
UmVtb3ZlZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRvdWJsZSBtb3N0UmVjZW50
VXNlckludGVyYWN0aW9uVGltZUFzRG91YmxlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVEb3Vi
bGUoIm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24iLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9u
VGltZUFzRG91YmxlKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRG91YmxlKCJtb3N0UmVjZW50
VXNlckludGVyYWN0aW9uIl9zLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUFzRG91Ymxl
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25U
aW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25U
aW1lQXNEb3VibGUpOwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woImdyYW5kZmF0aGVy
ZWQiLCBncmFuZGZhdGhlcmVkKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlQm9vbCgiZ3JhbmRm
YXRoZXJlZCJfcywgZ3JhbmRmYXRoZXJlZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGRvdWJsZSBsYXN0U2VlblRpbWVBc0RvdWJsZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRG91
YmxlKCJsYXN0U2VlbiIsIGxhc3RTZWVuVGltZUFzRG91YmxlKSkKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlRG91YmxlKCJsYXN0U2VlbiJfcywgbGFzdFNlZW5UaW1lQXNEb3VibGUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgbGFzdFNlZW4gPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMo
bGFzdFNlZW5UaW1lQXNEb3VibGUpOwogCiAgICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAxMSkgewot
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlVUludDMyKCJ0aW1lc0FjY2Vzc2VkQXNGaXJzdFBh
cnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24iLCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9V
c2VySW50ZXJhY3Rpb24pKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlVUludDMyKCJ0aW1l
c0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24iX3MsIHRpbWVzQWNjZXNz
ZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbikpCiAgICAgICAgICAgICB0aW1lc0Fj
Y2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24gPSAwOwotICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlVUludDMyKCJ0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9y
YWdlQWNjZXNzQVBJIiwgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vz
c0FQSSkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVVSW50MzIoInRpbWVzQWNjZXNzZWRB
c0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkiX3MsIHRpbWVzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkpKQogICAgICAgICAgICAgdGltZXNBY2Nlc3NlZEFz
Rmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSA9IDA7CiAgICAgfQogCiAjaWYgRU5BQkxF
KFdFQl9BUElfU1RBVElTVElDUykKICAgICBpZiAobW9kZWxWZXJzaW9uID49IDEzKSB7Ci0gICAg
ICAgIGRlY29kZUZvbnRIYXNoU2V0KGRlY29kZXIsICJmb250c0ZhaWxlZFRvTG9hZCIsIGZvbnRz
RmFpbGVkVG9Mb2FkKTsKLSAgICAgICAgZGVjb2RlRm9udEhhc2hTZXQoZGVjb2RlciwgImZvbnRz
U3VjY2Vzc2Z1bGx5TG9hZGVkIiwgZm9udHNTdWNjZXNzZnVsbHlMb2FkZWQpOwotICAgICAgICBk
ZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNj
ZXNzZWRXZWJBUElzIiwgImRvbWFpbiIsIHRvcEZyYW1lUmVnaXN0cmFibGVEb21haW5zV2hpY2hB
Y2Nlc3NlZFdlYkFQSXMpOwotICAgICAgICBkZWNvZGVDYW52YXNBY3Rpdml0eVJlY29yZChkZWNv
ZGVyLCAiY2FudmFzQWN0aXZpdHlSZWNvcmQiLCBjYW52YXNBY3Rpdml0eVJlY29yZCk7Ci0gICAg
ICAgIGRlY29kZU9wdGlvblNldChkZWNvZGVyLCAibmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWRC
aXRNYXNrIiwgbmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWQpOwotICAgICAgICBkZWNvZGVPcHRp
b25TZXQoZGVjb2RlciwgInNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkQml0TWFzayIsIHNjcmVlbkZ1
bmN0aW9uc0FjY2Vzc2VkKTsKKyAgICAgICAgZGVjb2RlRm9udEhhc2hTZXQoZGVjb2RlciwgImZv
bnRzRmFpbGVkVG9Mb2FkIl9zLCBmb250c0ZhaWxlZFRvTG9hZCk7CisgICAgICAgIGRlY29kZUZv
bnRIYXNoU2V0KGRlY29kZXIsICJmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCJfcywgZm9udHNTdWNj
ZXNzZnVsbHlMb2FkZWQpOworICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFt
ZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzIl9zLCAiZG9tYWluIl9zLCB0
b3BGcmFtZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzKTsKKyAgICAgICAg
ZGVjb2RlQ2FudmFzQWN0aXZpdHlSZWNvcmQoZGVjb2RlciwgImNhbnZhc0FjdGl2aXR5UmVjb3Jk
Il9zLCBjYW52YXNBY3Rpdml0eVJlY29yZCk7CisgICAgICAgIGRlY29kZU9wdGlvblNldChkZWNv
ZGVyLCAibmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWRCaXRNYXNrIl9zLCBuYXZpZ2F0b3JGdW5j
dGlvbnNBY2Nlc3NlZCk7CisgICAgICAgIGRlY29kZU9wdGlvblNldChkZWNvZGVyLCAic2NyZWVu
RnVuY3Rpb25zQWNjZXNzZWRCaXRNYXNrIl9zLCBzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZCk7CiAg
ICAgfQogI2VuZGlmCiAKQEAgLTQ1MCw0OCArNDUwLDQ4IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzOjp0b1N0cmluZygpIGNvbnN0CiAgICAgYnVpbGRlci5hcHBlbmQoIlJlZ2lzdHJh
YmxlIGRvbWFpbjogIiwgcmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCksICdcbicpOwogCiAgICAg
Ly8gVXNlciBpbnRlcmFjdGlvbgotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImhhZFVzZXJJ
bnRlcmFjdGlvbiIsIGhhZFVzZXJJbnRlcmFjdGlvbik7CisgICAgYXBwZW5kQm9vbGVhbihidWls
ZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIl9zLCBoYWRVc2VySW50ZXJhY3Rpb24pOwogICAgIGJ1
aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgbW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvbjogIiwgaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25UaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkpID8gIndpdGhpbiAyNCBob3Vy
cyIgOiAiLTEiKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb246ICJfcywgaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKG1vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb25UaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkpID8gIndpdGhpbiAyNCBob3VycyIgOiAi
LTEiKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxk
ZXIsICJncmFuZGZhdGhlcmVkIiwgZ3JhbmRmYXRoZXJlZCk7CisgICAgYXBwZW5kQm9vbGVhbihi
dWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCJfcywgZ3JhbmRmYXRoZXJlZCk7CiAgICAgYnVpbGRlci5h
cHBlbmQoJ1xuJyk7CiAKICAgICAvLyBTdG9yYWdlIGFjY2VzcwotICAgIGFwcGVuZEhhc2hTZXQo
YnVpbGRlciwgInN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyIsIHN0b3JhZ2VBY2Nl
c3NVbmRlclRvcEZyYW1lRG9tYWlucyk7CisgICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAic3Rv
cmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIl9zLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BG
cmFtZURvbWFpbnMpOwogCiAgICAgLy8gVG9wIGZyYW1lIHN0YXRzCi0gICAgYXBwZW5kSGFzaFNl
dChidWlsZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyIsIHRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzVG8pOwotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzRnJvbSIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSk7Ci0gICAgYXBwZW5kSGFz
aFNldChidWlsZGVyLCAidG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIiwgdG9wRnJhbWVMaW5r
RGVjb3JhdGlvbnNGcm9tKTsKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJnb3RMaW5rRGVj
b3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSIsIGdvdExpbmtEZWNvcmF0aW9uRnJvbVByZXZh
bGVudFJlc291cmNlKTsKKyAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJ0b3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c1RvIl9zLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAgICBhcHBlbmRI
YXNoU2V0KGJ1aWxkZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iX3MsIHRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzRnJvbSk7CisgICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAidG9wRnJh
bWVMaW5rRGVjb3JhdGlvbnNGcm9tIl9zLCB0b3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20pOwor
ICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImdvdExpbmtEZWNvcmF0aW9uRnJvbVByZXZhbGVu
dFJlc291cmNlIl9zLCBnb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSk7CiAg
ICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAidG9w
RnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIsIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNj
cmlwdHMpOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1lTG9hZGVkVGhpcmRQ
YXJ0eVNjcmlwdHMiX3MsIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMpOwogCiAgICAg
Ly8gU3ViZnJhbWUgc3RhdHMKLSAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJzdWJmcmFtZVVu
ZGVyVG9wRnJhbWVEb21haW5zIiwgc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyk7CisgICAg
YXBwZW5kSGFzaFNldChidWlsZGVyLCAic3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyJfcywg
c3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyk7CiAgICAgCiAgICAgLy8gU3VicmVzb3VyY2Ug
c3RhdHMKLSAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJh
bWVEb21haW5zIiwgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyk7Ci0gICAgYXBwZW5k
SGFzaFNldChidWlsZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyIsIHN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG8pOwotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJv
bSk7CisgICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAic3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
RG9tYWlucyJfcywgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyk7CisgICAgYXBwZW5k
SGFzaFNldChidWlsZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyJfcywgc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAic3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c0Zyb20pOwogCiAgICAgLy8gUHJldmFsZW50IFJlc291cmNlCi0gICAgYXBwZW5kQm9vbGVhbihi
dWlsZGVyLCAiaXNQcmV2YWxlbnRSZXNvdXJjZSIsIGlzUHJldmFsZW50UmVzb3VyY2UpOworICAg
IGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFsZW50UmVzb3VyY2UiX3MsIGlzUHJldmFs
ZW50UmVzb3VyY2UpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGFwcGVuZEJvb2xl
YW4oYnVpbGRlciwgImlzVmVyeVByZXZhbGVudFJlc291cmNlIiwgaXNWZXJ5UHJldmFsZW50UmVz
b3VyY2UpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzVmVyeVByZXZhbGVudFJlc291
cmNlIl9zLCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xu
Jyk7CiAgICAgYnVpbGRlci5hcHBlbmQoIiAgICBkYXRhUmVjb3Jkc1JlbW92ZWQ6ICIsIGRhdGFS
ZWNvcmRzUmVtb3ZlZCk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAKICNpZiBFTkFCTEUo
V0VCX0FQSV9TVEFUSVNUSUNTKQotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgImZvbnRzRmFp
bGVkVG9Mb2FkIiwgZm9udHNGYWlsZWRUb0xvYWQpOwotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRl
ciwgImZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkIiwgZm9udHNTdWNjZXNzZnVsbHlMb2FkZWQpOwot
ICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1lUmVnaXN0cmFibGVEb21haW5zV2hp
Y2hBY2Nlc3NlZFdlYkFQSXMiLCB0b3BGcmFtZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNz
ZWRXZWJBUElzKTsKKyAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJmb250c0ZhaWxlZFRvTG9h
ZCJfcywgZm9udHNGYWlsZWRUb0xvYWQpOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgImZv
bnRzU3VjY2Vzc2Z1bGx5TG9hZGVkIl9zLCBmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCk7CisgICAg
YXBwZW5kSGFzaFNldChidWlsZGVyLCAidG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFj
Y2Vzc2VkV2ViQVBJcyJfcywgdG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2Vk
V2ViQVBJcyk7CiAgICAgYXBwZW5kTmF2aWdhdG9yQVBJT3B0aW9uU2V0KGJ1aWxkZXIsIG5hdmln
YXRvckZ1bmN0aW9uc0FjY2Vzc2VkKTsKICAgICBhcHBlbmRTY3JlZW5BUElPcHRpb25TZXQoYnVp
bGRlciwgc2NyZWVuRnVuY3Rpb25zQWNjZXNzZWQpOwotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRl
ciwgImNhbnZhc1RleHRXcml0dGVuIiwgY2FudmFzQWN0aXZpdHlSZWNvcmQudGV4dFdyaXR0ZW4p
OwotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImNhbnZhc1JlYWREYXRhIiwgY2FudmFzQWN0
aXZpdHlSZWNvcmQud2FzRGF0YVJlYWQpOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgImNh
bnZhc1RleHRXcml0dGVuIl9zLCBjYW52YXNBY3Rpdml0eVJlY29yZC50ZXh0V3JpdHRlbik7Cisg
ICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiY2FudmFzUmVhZERhdGEiX3MsIGNhbnZhc0FjdGl2
aXR5UmVjb3JkLndhc0RhdGFSZWFkKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICBi
dWlsZGVyLmFwcGVuZCgnXG4nKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggNjE5MDgzNTQ5ZjkyZDI5OWY4NTJmMDgxNmZkOTViNzcxZTk0MjFi
Yy4uNDVlZDIxNTIwZjAyZWE5ZmZjZjJkYTQ0Y2ExMjUwYjFiY2U4NTJhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGlz
UERGSlNSZXNvdXJjZUxvYWQoKSkgewotICAgICAgICBCdW5kbGVSZXNvdXJjZUxvYWRlcjo6bG9h
ZFJlc291cmNlRnJvbUJ1bmRsZSgqdGhpcywgInBkZmpzLyIpOworICAgICAgICBCdW5kbGVSZXNv
dXJjZUxvYWRlcjo6bG9hZFJlc291cmNlRnJvbUJ1bmRsZSgqdGhpcywgInBkZmpzLyJfcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTMwMSw3ICszMDEsNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCgpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGlmICghZGVjb2RlUmVzdWx0KSB7CiAgICAgICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNF
X0xPRygibG9hZERhdGFVUkw6IGRlY29kaW5nIG9mIGRhdGEgZmFpbGVkIik7Ci0gICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgdXJsLCAiRGF0YSBVUkwgZGVjb2RpbmcgZmFpbGVkIikpOworICAgICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHVybCwgIkRhdGEgVVJMIGRlY29kaW5nIGZhaWxlZCJfcykpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmICh0aGlzLT53YXNDYW5jZWxsZWQo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZ1BhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2VydmVyVGltaW5nUGFyc2VyLmNwcAppbmRl
eCAwMWJkMDU3M2UzYWI2MDkxZTBjMjkwNjY5OTg0YWFlYzJiZDMzNzU2Li5mYjI0NTM2OTY5Y2Rk
YmZiM2MwYTVhMTgxZjhjMTg1ZGY0ZTg0MjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU2VydmVyVGltaW5nUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U2VydmVyVGltaW5nUGFyc2VyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBWZWN0b3I8U2VydmVyVGlt
aW5nPiBwYXJzZVNlcnZlclRpbWluZyhjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVlKQogICAgICAg
ICAgICAgaWYgKHBhcmFtZXRlck5hbWUuaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9ICIiOworICAgICAgICAgICAgU3RyaW5nIHZh
bHVlID0gZW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAgIGlmICh0b2tlbml6ZXIuY29uc3VtZSgn
PScpKSB7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSB0b2tlbml6ZXIuY29uc3VtZVRva2VuT3JR
dW90ZWRTdHJpbmcoKTsKICAgICAgICAgICAgICAgICB0b2tlbml6ZXIuY29uc3VtZUJlZm9yZUFu
eUNoYXJNYXRjaCh7JywnLCAnOyd9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDdlZmNlY2M0OTNmOGI0MTQ4OTc3MjY1NTE5NGQ2YmFjZjMxNjRm
YzEuLjY1MDhjY2M5NTMyODU3M2JiZjgxMmI2MWEzYzllODljNzc1OTdlOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBA
IHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAgICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2Nv
cGUgY29tcGxldGlvbkhhbmRsZXJDYWxsZXIoV1RGTW92ZShwb2xpY3lDb21wbGV0aW9uSGFuZGxl
cikpOwogCiAgICAgaWYgKHJlc3BvbnNlLmNvbnRhaW5zSW52YWxpZEhUVFBIZWFkZXJzKCkpIHsK
LSAgICAgICAgZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWws
IDAsIHJlcXVlc3QoKS51cmwoKSwgIlJlc3BvbnNlIGNvbnRhaW5lZCBpbnZhbGlkIEhUVFAgaGVh
ZGVycyIsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwpKTsKKyAgICAgICAgZGlkRmFpbChS
ZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QoKS51cmwo
KSwgIlJlc3BvbnNlIGNvbnRhaW5lZCBpbnZhbGlkIEhUVFAgaGVhZGVycyJfcywgUmVzb3VyY2VF
cnJvcjo6VHlwZTo6R2VuZXJhbCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKaW5kZXggNTZkYmM0ZTI5
MDNlMmViYzIwZDYzNDMzNzMwNDRkMDRmNjFiNjQyNS4uMDYxMjhiNmEzYTNjMzczMWUxZmI3MTY5
ZDRlOWYxNTMxZWM4ZDliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRS
ZXNvdXJjZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3Vy
Y2VEZWNvZGVyLmNwcApAQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91
bGRQcmVwZW5kQk9NKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkK
IC8vIGh0dHBzOi8vZW5jb2Rpbmcuc3BlYy53aGF0d2cub3JnLyN1dGYtOC1kZWNvZGUKIFN0cmlu
ZyBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIGF1dG8gZGVjb2RlciA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJVVEYtOCIpOworICAgIGF1dG8gZGVjb2Rl
ciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiJfcywgIlVURi04Iik7
CiAgICAgaWYgKHNob3VsZFByZXBlbmRCT00oZGF0YSwgbGVuZ3RoKSkKICAgICAgICAgZGVjb2Rl
ci0+ZGVjb2RlKCJceGVmXHhiYlx4YmYiLCAzKTsKICAgICByZXR1cm4gZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2goZGF0YSwgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggMDczMjRkZDFlMDBjYTIzZTNk
ZTMwODVhMjcwZjhlYjM1MTc1YTU5Yy4uZGYwNDYyY2YzOTQ3M2IwNjc4NjM3ODFiM2UwYjJkYTNh
MTcwYTc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTUxMiw3ICs1MTIsNyBAQCBSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3Ry
aW5nLCBGcgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKICAgICAgICAgcmVzcG9uc2VV
UkwgPSBVUkwoeyB9LCBlbXB0eVN0cmluZygpKTsKIAotICAgIGF1dG8gbWFpblJlc291cmNlID0g
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihtYXJrdXBTdHJpbmcpLCByZXNwb25z
ZVVSTCwgcmVzcG9uc2UubWltZVR5cGUoKSwgIlVURi04IiwgZnJhbWUudHJlZSgpLnVuaXF1ZU5h
bWUoKSk7CisgICAgYXV0byBtYWluUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1
dGY4QnVmZmVyKG1hcmt1cFN0cmluZyksIHJlc3BvbnNlVVJMLCByZXNwb25zZS5taW1lVHlwZSgp
LCAiVVRGLTgiX3MsIGZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCkpOwogICAgIGlmICghbWFpblJl
c291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNjA4LDcgKzYwOCw3IEBAIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0
aW9uKEZyYW1lKiBmcmFtZSkKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBkb2N1bWVudCBpbiBh
biBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5vdGhlciBkb2N1bWVu
dCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMgb3duKS4gCiAgICAg
U3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9cIiBtYXJnaW53
aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVpZ2h0PVwiOTgl
JVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2Uo
KS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwotICAgIGF1dG8gaWZyYW1lUmVzb3Vy
Y2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4QnVmZmVyKGlmcmFtZU1hcmt1cCksIGFi
b3V0QmxhbmtVUkwoKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIFN0cmluZygpKTsKKyAgICBhdXRv
IGlmcmFtZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJh
bWVNYXJrdXApLCBhYm91dEJsYW5rVVJMKCksICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJfcywgU3Ry
aW5nKCkpOwogCiAgICAgcmV0dXJuIGNyZWF0ZShpZnJhbWVSZXNvdXJjZS5yZWxlYXNlTm9uTnVs
bCgpLCB7IH0sIHsgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Qu
Y3BwCmluZGV4IGU5OWZhNWZjYjJiNzJiMDQzZjg2ODk5NTQ4MDg2ZWUwYTBiZTNkMjIuLmFkMjEw
MGRiYTVkZTU4M2JhNDM0NjYzYzA0ZjgwMTgzMDY2MmFhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAK
QEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFyKiBj
b29raWVKYXIpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBUeXBlOjpB
cHBsaWNhdGlvbk1hbmlmZXN0LCBzZXNzaW9uSUQsIGNvb2tpZUphcikKLSAgICAsIG1fZGVjb2Rl
cihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb24i
LCBQQUw6OlVURjhFbmNvZGluZygpKSkKKyAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNv
ZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb24iX3MsIFBBTDo6VVRGOEVuY29k
aW5nKCkpKQogewogfQogCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdDo6c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBjaHMpCiAKIFN0cmluZyBDYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0OjplbmNvZGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVj
b2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CisgICAgcmV0dXJuIFN0cmluZyB7IG1fZGVjb2Rlci0+
ZW5jb2RpbmcoKS5uYW1lKCkgfTsKIH0KIAogc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlm
ZXN0PiBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZl
c3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiBkb2N1bWVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApp
bmRleCA3MGIzOGY2MWZjMGZmMGViNjIzMmI0NzAxZmZiNjg5YjBlNjE4NjZlLi42M2VjNGQ2Mjc5
OTM3MzNhZmIxZTQxNTkzMWQwZDVjOTU3ZTcwN2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC00MCw3ICs0MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVkQ1NTU3R5bGVTaGVldDo6Q2FjaGVkQ1NTU3R5
bGVTaGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IENvb2tpZUphciogY29va2llSmFyKQogICAgIDogQ2FjaGVkUmVzb3Vy
Y2UoV1RGTW92ZShyZXF1ZXN0KSwgVHlwZTo6Q1NTU3R5bGVTaGVldCwgc2Vzc2lvbklELCBjb29r
aWVKYXIpCi0gICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0
L2NzcyIsIHJlcXVlc3QuY2hhcnNldCgpKSkKKyAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VE
ZWNvZGVyOjpjcmVhdGUoInRleHQvY3NzIl9zLCByZXF1ZXN0LmNoYXJzZXQoKSkpCiB7CiB9CiAK
QEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpkaWRBZGRDbGllbnQo
Q2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRk
Q2xpZW50KGNsaWVudCk7CiAKICAgICBpZiAoIWlzTG9hZGluZygpKQotICAgICAgICBzdGF0aWNf
Y2FzdDxDYWNoZWRTdHlsZVNoZWV0Q2xpZW50Jj4oY2xpZW50KS5zZXRDU1NTdHlsZVNoZWV0KG1f
cmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLCBtX3Jlc3BvbnNlLnVybCgpLCBtX2RlY29k
ZXItPmVuY29kaW5nKCkubmFtZSgpLCB0aGlzKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVk
U3R5bGVTaGVldENsaWVudCY+KGNsaWVudCkuc2V0Q1NTU3R5bGVTaGVldChtX3Jlc291cmNlUmVx
dWVzdC51cmwoKS5zdHJpbmcoKSwgbV9yZXNwb25zZS51cmwoKSwgU3RyaW5nIHsgbV9kZWNvZGVy
LT5lbmNvZGluZygpLm5hbWUoKSB9LCB0aGlzKTsKIH0KIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIGNocykKQEAgLTY5LDcgKzY5LDcgQEAgdm9p
ZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIGNocykKIAog
U3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgbV9k
ZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSB9OwogfQogCiBjb25zdCBTdHJpbmcgQ2FjaGVkQ1NT
U3R5bGVTaGVldDo6c2hlZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50IG1pbWVUeXBlQ2hlY2tIaW50
LCBib29sKiBoYXNWYWxpZE1JTUVUeXBlKSBjb25zdApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFN0eWxlU2hlZXRDbGll
bnQ+IHcobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkU3R5bGVTaGVldENsaWVudCogYyA9
IHcubmV4dCgpKQotICAgICAgICBjLT5zZXRDU1NTdHlsZVNoZWV0KG1fcmVzb3VyY2VSZXF1ZXN0
LnVybCgpLnN0cmluZygpLCBtX3Jlc3BvbnNlLnVybCgpLCBtX2RlY29kZXItPmVuY29kaW5nKCku
bmFtZSgpLCB0aGlzKTsKKyAgICAgICAgYy0+c2V0Q1NTU3R5bGVTaGVldChtX3Jlc291cmNlUmVx
dWVzdC51cmwoKS5zdHJpbmcoKSwgbV9yZXNwb25zZS51cmwoKSwgU3RyaW5nIHsgbV9kZWNvZGVy
LT5lbmNvZGluZygpLm5hbWUoKSB9LCB0aGlzKTsKIH0KIAogU3RyaW5nIENhY2hlZENTU1N0eWxl
U2hlZXQ6OnJlc3BvbnNlTUlNRVR5cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggYmJjMWIzMDU5NTI3ZjRiNWMwZjBjNGU5
NjZkOWNkNDhkZDI4N2FmMS4uNzNiZWE2ZDRjZTdiMzhiNzBiNTBkMjJkMDE5OWMxM2Q2YTRjMTFh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNv
dXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiAgICAgfQogCiAgICAgaWYgKHR5cGUo
KSA9PSBUeXBlOjpMaW5rUHJlZmV0Y2gpCi0gICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UHVycG9zZSwgInByZWZldGNoIik7CisgICAg
ICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
UHVycG9zZSwgInByZWZldGNoIl9zKTsKICAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRQcmlvcml0
eShsb2FkUHJpb3JpdHkoKSk7CiAKICAgICAvLyBOYXZpZ2F0aW9uIGFsZ29yaXRobSBpcyBzZXR0
aW5nIHVwIHRoZSByZXF1ZXN0IGJlZm9yZSBzZW5kaW5nIGl0IHRvIENhY2hlZFJlc291cmNlTG9h
ZGVyP0NhY2hlZFJlc291cmNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggZGI0MzE2MDdhZTU2MzgzMDM4MDBkZDI1OWMxMDM0
Y2QwOTBmY2ZlMS4uZTMzZjc3OTQwZWFiMDgyYmZiMTFhODQyMTE2NGQ5ZmE0NzlkMTc4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3Bw
CkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVkU1ZHRG9jdW1l
bnQ6OkNhY2hlZFNWR0RvY3VtZW50KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFyKiBjb29raWVKYXIsIGNvbnN0
IFNldHRpbmdzJiBzZXR0aW5ncykKICAgICA6IENhY2hlZFJlc291cmNlKFdURk1vdmUocmVxdWVz
dCksIFR5cGU6OlNWR0RvY3VtZW50UmVzb3VyY2UsIHNlc3Npb25JRCwgY29va2llSmFyKQotICAg
ICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1s
IikpCisgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNh
dGlvbi94bWwiX3MpKQogICAgICwgbV9zZXR0aW5ncyhzZXR0aW5ncykKIHsKIH0KQEAgLTQ5LDcg
KzQ5LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5n
JiBjaHMpCiAKIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogewot
ICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOworICAgIHJldHVybiBTdHJp
bmcgeyBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpIH07CiB9CiAKIHZvaWQgQ2FjaGVkU1ZH
RG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGQyYzFkZTQ3ZWZiNzgxMzk4ZjQ0
MzhiN2NhNGVhMjYwZTIyMTk3NjcuLmUyZGJiNGM2ODNjYjI3NDVkNzJhNjg5Y2NmNjZiMDZkMmYw
YzkwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5j
cHAKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250
RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAgICAgICAvLyBXZSBtYXkg
Z2V0IGhlcmUgZHVyaW5nIHJlbmRlciB0cmVlIHVwZGF0ZXMgd2hlbiBldmVudHMgYXJlIGZvcmJp
ZGRlbi4KICAgICAgICAgICAgIC8vIEZyYW1lbGVzcyBkb2N1bWVudCBjYW4ndCBydW4gc2NyaXB0
cyBvciBjYWxsIGJhY2sgdG8gdGhlIGNsaWVudCBzbyB0aGlzIGlzIHNhZmUuCiAgICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1f
c2V0dGluZ3MsIFVSTCgpKTsKLSAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7CisgICAgICAgICAgICBhdXRvIGRl
Y29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCJfcyk7
CiAKICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RGlzYWJsZUFzc2VydGlvbnNJ
blNjb3BlIGRpc2FibGVkU2NvcGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5jcHAKaW5kZXggMjVkMDU4ZjdhNmU2ZDA4NjI3NTM1NTliZmFhMzgyZjQwMzNm
M2I4Ny4uZjI2MWFmZjFhOTQ4MjkzYWMyYjJlYTA5Y2I5ZjM3YTM0YmYyMDFjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTUxLDcgKzUxLDcg
QEAgdm9pZCBDYWNoZWRTY3JpcHQ6OnNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYgY2hzKQogCiBT
dHJpbmcgQ2FjaGVkU2NyaXB0OjplbmNvZGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVj
b2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CisgICAgcmV0dXJuIFN0cmluZyB7IG1fZGVjb2Rlci0+
ZW5jb2RpbmcoKS5uYW1lKCkgfTsKIH0KIAogU3RyaW5nVmlldyBDYWNoZWRTY3JpcHQ6OnNjcmlw
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHAKaW5kZXggMTdlZmQ2YzNmNmVkNmFhZWM3ZmI0YTU1YTg3NzkxMzM5ZWM0OTcwZS4u
MmMzMDA5OTNmNWRlZDFmMjI1NDg5YmExNTZhNjg5YTYzYWI1ZTgwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtMzgs
NyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZFhTTFN0eWxlU2hlZXQ6OkNh
Y2hlZFhTTFN0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXIqIGNvb2tpZUphcikKICAgICA6IENh
Y2hlZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFR5cGU6OlhTTFN0eWxlU2hlZXQsIHNlc3Np
b25JRCwgY29va2llSmFyKQotICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNy
ZWF0ZSgidGV4dC94c2wiKSkKKyAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpj
cmVhdGUoInRleHQveHNsIl9zKSkKIHsKIH0KIApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIENhY2hl
ZFhTTFN0eWxlU2hlZXQ6OnNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYgY2hzKQogCiBTdHJpbmcg
Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtX2Rl
Y29kZXItPmVuY29kaW5nKCkubmFtZSgpOworICAgIHJldHVybiBTdHJpbmcgeyBtX2RlY29kZXIt
PmVuY29kaW5nKCkubmFtZSgpIH07CiB9CiAKIHZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6Zmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcAppbmRleCBiMjAyZmVmNjc5MjZkMWFlOGNmNGNhNmMwMDg3NGZlNDVlYjVi
ZmFkLi4wMzQ0NGIzOTljMzZlNTg2M2E1NmMxZGRlZmJjMDA2OTFkZGIwMGNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
TWVtb3J5Q2FjaGU6Ok1lbW9yeUNhY2hlKCkKIAogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBQQUw6
OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd01lbW9yeUNhY2hl
IiwgW10geworICAgICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5X
ZWJLaXQuc2hvd01lbW9yeUNhY2hlIl9zLCBbXSB7CiAgICAgICAgICAgICBNZW1vcnlDYWNoZTo6
c2luZ2xldG9uKCkuZHVtcFN0YXRzKCk7CiAgICAgICAgICAgICBNZW1vcnlDYWNoZTo6c2luZ2xl
dG9uKCkuZHVtcExSVUxpc3RzKHRydWUpOwogICAgICAgICB9KTsKQEAgLTU1OCw3ICs1NTgsNyBA
QCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IE1lbW9yeUNhY2hlOjpvcmlnaW5zV2l0
aENhY2hlKFBBTDo6U2Vzc2lvbklEIHNlcwogICAgICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSAq
a2V5VmFsdWUudmFsdWU7CiAgICAgICAgICAgICBhdXRvJiBwYXJ0aXRpb25OYW1lID0ga2V5VmFs
dWUua2V5LnNlY29uZDsKICAgICAgICAgICAgIGlmICghcGFydGl0aW9uTmFtZS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0
cCIsIHBhcnRpdGlvbk5hbWUsIDApKTsKKyAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRwIl9zLCBwYXJ0aXRpb25OYW1lLCAwKSk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShyZXNvdXJjZS51cmwoKSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MRWxlbWVudC5jcHAKaW5kZXggNTIzMGE2OGRiNjE0ZTY3ZTY1ZDExYThmZTE0NGVmOTY2ZmNl
ZWM2Yy4uNjdjMDc4ZGNlNDJjMzRiNDFlNDc4ZTI2ZjgzOTI3MGEyMmNmYTA4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcApAQCAtMTE3LDExICsxMTcsMTEgQEAgYm9v
bCBNYXRoTUxFbGVtZW50OjpoYXNQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUKIHN0YXRpYyBTdHJpbmcgY29udmVydE1hdGhTaXplSWZOZWVk
ZWQoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJzbWFsbCIp
Ci0gICAgICAgIHJldHVybiAiMC43NWVtIjsKKyAgICAgICAgcmV0dXJuICIwLjc1ZW0iX3M7CiAg
ICAgaWYgKHZhbHVlID09ICJub3JtYWwiKQotICAgICAgICByZXR1cm4gIjFlbSI7CisgICAgICAg
IHJldHVybiAiMWVtIl9zOwogICAgIGlmICh2YWx1ZSA9PSAiYmlnIikKLSAgICAgICAgcmV0dXJu
ICIxLjVlbSI7CisgICAgICAgIHJldHVybiAiMS41ZW0iX3M7CiAKICAgICAvLyBGSVhNRTogbWF0
aHNpemUgYWNjZXB0cyBhbnkgTWF0aE1MIGxlbmd0aCwgaW5jbHVkaW5nIG5hbWVkIHNwYWNlcyAo
c2VlIHBhcnNlTWF0aE1MTGVuZ3RoKS4KICAgICAvLyBGSVhNRTogTWlnaHQgYmUgYmV0dGVyIHRv
IHVzZSBkb3VibGUgdGhhbiBmbG9hdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXggMGVmZmE2M2YzY2Y0Y2VmNzdj
YTEwMzdlOTI5YzZkNTM2MzUxM2MwNy4uYTc1ZjcwY2U1YjI5N2Y4YWU2YThjMTU0NTUzM2I3Yjcx
Mjk4MWZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzTWVkaWFBRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBTdHJpbmcgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zVGV4dEVkZ2VDU1MoKSBjb25zdAogICAgICAg
ICBhcHBlbmRDU1MoYnVpbGRlciwgQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBtYWtlU3RyaW5nKGVk
Z2VTdHlsZURyb3BTaGFkb3cuZ2V0KCksICIgYmxhY2siKSwgaW1wb3J0YW50KTsKIAogICAgIGlm
ICh0ZXh0RWRnZVN0eWxlID09IGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4dEVkZ2VTdHlsZURyb3BT
aGFkb3cgfHwgdGV4dEVkZ2VTdHlsZSA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5
bGVVbmlmb3JtKSB7Ci0gICAgICAgIGFwcGVuZENTUyhidWlsZGVyLCBDU1NQcm9wZXJ0eVN0cm9r
ZUNvbG9yLCAiYmxhY2siLCBpbXBvcnRhbnQpOworICAgICAgICBhcHBlbmRDU1MoYnVpbGRlciwg
Q1NTUHJvcGVydHlTdHJva2VDb2xvciwgImJsYWNrIl9zLCBpbXBvcnRhbnQpOwogICAgICAgICBh
cHBlbmRDU1MoYnVpbGRlciwgQ1NTUHJvcGVydHlQYWludE9yZGVyLCBnZXRWYWx1ZU5hbWUoQ1NT
VmFsdWVTdHJva2UpLCBpbXBvcnRhbnQpOwogICAgICAgICBhcHBlbmRDU1MoYnVpbGRlciwgQ1NT
UHJvcGVydHlTdHJva2VMaW5lam9pbiwgZ2V0VmFsdWVOYW1lKENTU1ZhbHVlUm91bmQpLCBpbXBv
cnRhbnQpOwogICAgICAgICBhcHBlbmRDU1MoYnVpbGRlciwgQ1NTUHJvcGVydHlTdHJva2VMaW5l
Y2FwLCBnZXRWYWx1ZU5hbWUoQ1NTVmFsdWVSb3VuZCksIGltcG9ydGFudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5jcHAKaW5kZXggZGE3NWNlMDE5NzU0ZjZiNzg0Mzg4ZWZhNDE1NmI4NmJmYmY4NTcxNS4u
N2I1YWViYjliY2YzODk0N2JiNjJlZDlmZGNjNTAyOWIwNTZiOThiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmNwcApAQCAtNDA4LDcgKzQwOCw3IEBAIGJvb2wgQ2hyb21lOjpwcmludChGcmFtZSYgZnJh
bWUpCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGhhdmUgUGFnZUdyb3VwTG9hZERlZmVycmVy
LCBsaWtlIHJ1bk1vZGFsKCkgb3IgcnVuSmF2YVNjcmlwdEFsZXJ0KCksIGJlY2F1c2UgaXQncyBu
byBkaWZmZXJlbnQgZnJvbSB0aG9zZS4KIAogICAgIGlmIChmcmFtZS5kb2N1bWVudCgpLT5pc1Nh
bmRib3hlZChTYW5kYm94TW9kYWxzKSkgewotICAgICAgICBmcmFtZS5kb2N1bWVudCgpLT5kb21X
aW5kb3coKS0+cHJpbnRFcnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cucHJpbnQgaXMgbm90IGFs
bG93ZWQgaW4gYSBzYW5kYm94ZWQgZnJhbWUgd2hlbiB0aGUgYWxsb3ctbW9kYWxzIGZsYWcgaXMg
bm90IHNldC4iKTsKKyAgICAgICAgZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnByaW50
RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LnByaW50IGlzIG5vdCBhbGxvd2VkIGluIGEgc2Fu
ZGJveGVkIGZyYW1lIHdoZW4gdGhlIGFsbG93LW1vZGFscyBmbGFnIGlzIG5vdCBzZXQuIl9zKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IDE0YjFlMzdiZGM2NTFmZTM3ZTYzZGQ4YWI4
ODE2NGQ4YjIyYmM3NWQuLmU5MjhjZTlhMTRmYWJmZWVlZmQ0OTA5ZWRkMWMwZGI5YTRjZmYyYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAg
LTMxNSwxMCArMzE1LDEwIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGZyYW1l
LT5sb2FkZXIoKS5yZWxvYWQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdDdXQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJDdXQiKS5leGVj
dXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJDdXQiX3MpLmV4ZWN1dGUo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdQYXN0ZToKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIikuZXhlY3V0ZSgpOworICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAg
YnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFz
dGVBc1BsYWluVGV4dDoKQEAgLTQxMiwxMCArNDEyLDEwIEBAIHZvaWQgQ29udGV4dE1lbnVDb250
cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24s
IGNvCiAgICAgICAgICAgICBvcGVuTmV3V2luZG93KG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCku
YWJzb2x1dGVMaW5rVVJMKCksICpmcmFtZSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6
U2hvdWxkQWxsb3cpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z0JvbGQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJUb2dnbGVCb2xkIikuZXhl
Y3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiVG9nZ2xlQm9sZCJfcyku
ZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0l0
YWxpYzoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlRvZ2dsZUl0YWxpYyIpLmV4
ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlRvZ2dsZUl0YWxpYyJf
cykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z1VuZGVybGluZToKICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRvZ2dsZVVuZGVybGluZSgpOwpA
QCAtNDQ0LDEzICs0NDQsMTMgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRN
ZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb246OlJp
Z2h0VG9MZWZ0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdU
ZXh0RGlyZWN0aW9uRGVmYXVsdDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1h
a2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIl9zKS5l
eGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4
dERpcmVjdGlvbkxlZnRUb1JpZ2h0OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgi
TWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9S
aWdodCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigp
LmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0IikuZXhlY3V0ZSgp
OworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0
aW9uUmlnaHRUb0xlZnQiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodDoK
QEAgLTEyNDgsMjUgKzEyNDgsMjUgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNr
T3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mIGl0ZW0pIGNvbnN0CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodDoKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDogewotICAgICAgICAgICAg
U3RyaW5nIGRpcmVjdGlvbiA9IGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnTGVm
dFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOworICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9
IGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQgPyAibHRyIl9z
IDogInJ0bCJfczsKICAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNl
bGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJlY3Rpb24pICE9IFRyaVN0
YXRlOjpGYWxzZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IHRydWU7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RleHRE
aXJlY3Rpb25EZWZhdWx0OiB7Ci0gICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFs
Iik7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3Io
KS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIl9zKTsKICAgICAgICAg
ICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5zdGF0ZSgpID09IFRyaVN0YXRlOjpUcnVlOwogICAg
ICAgICAgICAgc2hvdWxkRW5hYmxlID0gY29tbWFuZC5pc0VuYWJsZWQoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dERp
cmVjdGlvbkxlZnRUb1JpZ2h0OiB7Ci0gICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFu
ZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0
VG9SaWdodCIpOworICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+
ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQiX3Mp
OwogICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRlKCkgPT0gVHJpU3RhdGU6
OlRydWU7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBjb21tYW5kLmlzRW5hYmxlZCgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ6IHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29t
bWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0Rp
cmVjdGlvblJpZ2h0VG9MZWZ0Iik7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFu
ZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdo
dFRvTGVmdCJfcyk7CiAgICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9
PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGNvbW1hbmQuaXNF
bmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEzMTEsNyArMTMxMSw3IEBAIHZvaWQg
Q29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJ
dGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6IHsKLSAgICAgICAgICAgIHNob3VsZENoZWNr
ID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4
dERlY29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiKSAhPSBUcmlTdGF0ZTo6RmFsc2U7Cisg
ICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHls
ZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIl9z
KSAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+
ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTEzMjQsMTIgKzEzMjQsMTIgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNr
T3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mIGl0ZW0pIGNvbnN0CiAgICAgICAgICAg
ICBzaG91bGRFbmFibGUgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnSXRhbGljOiB7Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGZy
YW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgIml0
YWxpYyIpICE9IFRyaVN0YXRlOjpGYWxzZTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJh
bWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRh
bGljIl9zKSAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBm
cmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdCb2xkOiB7Ci0gICAgICAgICAg
ICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9w
ZXJ0eUZvbnRXZWlnaHQsICJib2xkIikgIT0gVHJpU3RhdGU6OkZhbHNlOworICAgICAgICAgICAg
c2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVy
dHlGb250V2VpZ2h0LCAiYm9sZCJfcykgIT0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAgICAg
c2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKaW5k
ZXggNmIwNmFhYTIzNTI3ODRiODVlY2RiYzY3MWIwYTBkNDNhMjgxZjM0Zi4uNmVhMGMzNDk1YWI2
Y2M1NDNmOWJmZTY1N2NmMTEyZmI4ZDAxNDlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0
aW9uLmNwcApAQCAtMzQwLDcgKzM0MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVNlbGVjdGlv
bjo6ZXh0ZW5kKE5vZGUmIG5vZGUsIHVuc2lnbmVkIG9mZnNldCkKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAKICAgICBpZiAocmFuZ2VDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiZXh0ZW5kKCkgcmVxdWlyZXMgYSBSYW5nZSB0byBi
ZSBhZGRlZCB0byB0aGUgU2VsZWN0aW9uIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJleHRlbmQoKSByZXF1aXJlcyBhIFJhbmdlIHRvIGJlIGFkZGVk
IHRvIHRoZSBTZWxlY3Rpb24iX3MgfTsKIAogICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS5saXZl
UmFuZ2VTZWxlY3Rpb25FbmFibGVkKCkpIHsKICAgICAgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQo
KS0+Y29udGFpbnMobm9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggNTQ2YjRh
NGRkZWViZGJjM2Q1ODIzYjBiMjc5NzJkNjY3YmM3MjEwZi4uZGQzY2NkYmJkMTM0NWZhYjkyMmY5
ZmYzNjBlMmE4ZWFiOTZmYmZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTA5
NCw3ICsxMDk0LDcgQEAgdm9pZCBET01XaW5kb3c6OnByaW50KCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKCFwYWdlLT5hcmVQcm9tcHRzQWxsb3dlZCgpKSB7Ci0gICAgICAgIHByaW50RXJy
b3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LnByaW50IGlzIG5vdCBhbGxvd2VkIHdoaWxlIHVubG9h
ZGluZyBhIHBhZ2UuIik7CisgICAgICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93
LnByaW50IGlzIG5vdCBhbGxvd2VkIHdoaWxlIHVubG9hZGluZyBhIHBhZ2UuIl9zKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTEyOCw3ICsxMTI4LDcgQEAgdm9pZCBET01XaW5kb3c6
OmFsZXJ0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogICAgIFJlZlB0ciBkb2N1bWVudCA9IHRo
aXMtPmRvY3VtZW50KCk7CiAgICAgaWYgKGRvY3VtZW50LT5pc1NhbmRib3hlZChTYW5kYm94TW9k
YWxzKSkgewotICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5hbGVydCBp
cyBub3QgYWxsb3dlZCBpbiBhIHNhbmRib3hlZCBmcmFtZSB3aGVuIHRoZSBhbGxvdy1tb2RhbHMg
ZmxhZyBpcyBub3Qgc2V0LiIpOworICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdp
bmRvdy5hbGVydCBpcyBub3QgYWxsb3dlZCBpbiBhIHNhbmRib3hlZCBmcmFtZSB3aGVuIHRoZSBh
bGxvdy1tb2RhbHMgZmxhZyBpcyBub3Qgc2V0LiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTExMzcsNyArMTEzNyw3IEBAIHZvaWQgRE9NV2luZG93OjphbGVydChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghcGFnZS0+YXJlUHJvbXB0
c0FsbG93ZWQoKSkgewotICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5h
bGVydCBpcyBub3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRpbmcgYSBwYWdlLiIpOworICAgICAgICBw
cmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5hbGVydCBpcyBub3QgYWxsb3dlZCB3aGls
ZSB1bmxvYWRpbmcgYSBwYWdlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEx
NTcsNyArMTE1Nyw3IEBAIGJvb2wgRE9NV2luZG93Ojpjb25maXJtRm9yQmluZGluZ3MoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogCiAgICAgUmVmUHRyIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQo
KTsKICAgICBpZiAoZG9jdW1lbnQtPmlzU2FuZGJveGVkKFNhbmRib3hNb2RhbHMpKSB7Ci0gICAg
ICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LmNvbmZpcm0gaXMgbm90IGFsbG93
ZWQgaW4gYSBzYW5kYm94ZWQgZnJhbWUgd2hlbiB0aGUgYWxsb3ctbW9kYWxzIGZsYWcgaXMgbm90
IHNldC4iKTsKKyAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cuY29uZmly
bSBpcyBub3QgYWxsb3dlZCBpbiBhIHNhbmRib3hlZCBmcmFtZSB3aGVuIHRoZSBhbGxvdy1tb2Rh
bHMgZmxhZyBpcyBub3Qgc2V0LiJfcyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTExNjYsNyArMTE2Niw3IEBAIGJvb2wgRE9NV2luZG93Ojpjb25maXJtRm9yQmluZGluZ3Mo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
IXBhZ2UtPmFyZVByb21wdHNBbGxvd2VkKCkpIHsKLSAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2Uo
IlVzZSBvZiB3aW5kb3cuY29uZmlybSBpcyBub3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRpbmcgYSBw
YWdlLiIpOworICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5jb25maXJt
IGlzIG5vdCBhbGxvd2VkIHdoaWxlIHVubG9hZGluZyBhIHBhZ2UuIl9zKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTE4Niw3ICsxMTg2LDcgQEAgU3RyaW5nIERPTVdpbmRv
dzo6cHJvbXB0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFs
dWUpCiAKICAgICBSZWZQdHIgZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgIGlmIChk
b2N1bWVudC0+aXNTYW5kYm94ZWQoU2FuZGJveE1vZGFscykpIHsKLSAgICAgICAgcHJpbnRFcnJv
ck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cucHJvbXB0IGlzIG5vdCBhbGxvd2VkIGluIGEgc2FuZGJv
eGVkIGZyYW1lIHdoZW4gdGhlIGFsbG93LW1vZGFscyBmbGFnIGlzIG5vdCBzZXQuIik7CisgICAg
ICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LnByb21wdCBpcyBub3QgYWxsb3dl
ZCBpbiBhIHNhbmRib3hlZCBmcmFtZSB3aGVuIHRoZSBhbGxvdy1tb2RhbHMgZmxhZyBpcyBub3Qg
c2V0LiJfcyk7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKQEAgLTExOTUsNyAr
MTE5NSw3IEBAIFN0cmluZyBET01XaW5kb3c6OnByb21wdChjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
ICAgICBpZiAoIXBhZ2UtPmFyZVByb21wdHNBbGxvd2VkKCkpIHsKLSAgICAgICAgcHJpbnRFcnJv
ck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cucHJvbXB0IGlzIG5vdCBhbGxvd2VkIHdoaWxlIHVubG9h
ZGluZyBhIHBhZ2UuIik7CisgICAgICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93
LnByb21wdCBpcyBub3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRpbmcgYSBwYWdlLiJfcyk7CiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKQEAgLTI2OTAsNyArMjY5MCw3IEBAIHZvaWQg
RE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgZGlhbG9nRmVhCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghcGFnZS0+YXJl
UHJvbXB0c0FsbG93ZWQoKSkgewotICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdp
bmRvdy5zaG93TW9kYWxEaWFsb2cgaXMgbm90IGFsbG93ZWQgd2hpbGUgdW5sb2FkaW5nIGEgcGFn
ZS4iKTsKKyAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cuc2hvd01vZGFs
RGlhbG9nIGlzIG5vdCBhbGxvd2VkIHdoaWxlIHVubG9hZGluZyBhIHBhZ2UuIl9zKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4
IDk5NmUxODE4MjE2MGFkMGYxZjdkNDkwMzcyMzc1ZjNlZmYxZmFjN2UuLmQ2YmEyYjMzMDc2YWJm
NjhmZGQ4OWYzOTJlNGU5YjhhMWZmYmZjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKQEAgLTM3OTIsMTEgKzM3OTIsMTEgQEAgc3RhdGljIHZvaWQgaGFuZGxlS2V5Ym9hcmRT
ZWxlY3Rpb25Nb3ZlbWVudChGcmFtZSYgZnJhbWUsIEtleWJvYXJkRXZlbnQmIGV2ZW50KQogewog
ICAgIEZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKTsKIAotICAg
IGJvb2wgaXNDb21tYW5kZWQgPSBldmVudC5nZXRNb2RpZmllclN0YXRlKCJNZXRhIik7Ci0gICAg
Ym9vbCBpc09wdGlvbmVkID0gZXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZSgiQWx0Iik7CisgICAgYm9v
bCBpc0NvbW1hbmRlZCA9IGV2ZW50LmdldE1vZGlmaWVyU3RhdGUoIk1ldGEiX3MpOworICAgIGJv
b2wgaXNPcHRpb25lZCA9IGV2ZW50LmdldE1vZGlmaWVyU3RhdGUoIkFsdCJfcyk7CiAgICAgYm9v
bCBpc1NlbGVjdGlvbiA9ICFzZWxlY3Rpb24uaXNOb25lKCk7CiAKLSAgICBGcmFtZVNlbGVjdGlv
bjo6RUFsdGVyYXRpb24gYWx0ZXJuYXRpb24gPSBldmVudC5nZXRNb2RpZmllclN0YXRlKCJTaGlm
dCIpID8gRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQgOiBGcmFtZVNlbGVjdGlvbjo6
QWx0ZXJhdGlvbk1vdmU7CisgICAgRnJhbWVTZWxlY3Rpb246OkVBbHRlcmF0aW9uIGFsdGVybmF0
aW9uID0gZXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZSgiU2hpZnQiX3MpID8gRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25FeHRlbmQgOiBGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmU7CiAgICAg
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2Fy
ZDsKICAgICBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNo
YXJhY3RlckdyYW51bGFyaXR5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4
IDEwY2RhY2QwZTZjOTA3ZGY0M2NjOGNlNTIwZGFkMTdlZWE5YTgwODcuLjhkN2Q5ZTY2ZDdiYzFk
NDI5YWE1ZDdmZjQ2Njg1MDQwMDhhYWNkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwCkBAIC05NSw5ICs5NSw5IEBAIHZvaWQgRXZlbnRTb3VyY2U6OmNvbm5lY3QoKQogICAgIEFT
U0VSVCghbV9yZXF1ZXN0SW5GbGlnaHQpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qg
eyBtX3VybCB9OwotICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7Ci0gICAgcmVxdWVz
dC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2VwdCwgInRleHQvZXZlbnQt
c3RyZWFtIik7Ci0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OkNhY2hlQ29udHJvbCwgIm5vLWNhY2hlIik7CisgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJH
RVQiX3MpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpB
Y2NlcHQsICJ0ZXh0L2V2ZW50LXN0cmVhbSJfcyk7CisgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OkNhY2hlQ29udHJvbCwgIm5vLWNhY2hlIl9zKTsKICAgICBp
ZiAoIW1fbGFzdEV2ZW50SWQuaXNFbXB0eSgpKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6TGFzdEV2ZW50SUQsIG1fbGFzdEV2ZW50SWQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCmluZGV4IDlmYWY4YWRmNjliNWNjNTVjMmIzYWZhN2FhNjFjZTJiZGMw
YTA0N2YuLjA1MmNlZDk3YmU1ZjRlNmZjNDVkMWIyOGZlNWJlYTQzMzkyYzY3MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgc3RhdGljIEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24gY3JlYXRlUmVnRXhwRm9yTGFiZWxzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jgog
ICAgIC8vIFJFVklFVy0gdmVyc2lvbiBvZiB0aGlzIGNhbGwgaW4gRnJhbWVNYWMubW0gY2FjaGVz
IGJhc2VkIG9uIHRoZSBOU0FycmF5IHB0cnMgYmVpbmcKICAgICAvLyB0aGUgc2FtZSBhY3Jvc3Mg
Y2FsbHMuICBXZSBjYW4ndCBkbyB0aGF0LgogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpT
Qzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24+IHdvcmRSZWdFeHAoIlxcdyIpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiB3b3JkUmVnRXhw
KCJcXHciX3MpOwogICAgIFN0cmluZ0J1aWxkZXIgcGF0dGVybjsKICAgICBwYXR0ZXJuLmFwcGVu
ZCgnKCcpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIG51bUxhYmVscyA9IGxhYmVscy5zaXpl
KCk7IGkgPCBudW1MYWJlbHM7IGkrKykgewpAQCAtNTAyLDcgKzUwMiw3IEBAIHN0YXRpYyBTdHJp
bmcgbWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMs
IGNvbnN0IFN0cmluCiAgICAgU3RyaW5nIG11dGFibGVTdHJpbmdUb01hdGNoID0gc3RyaW5nVG9N
YXRjaDsKIAogICAgIC8vIE1ha2UgbnVtYmVycyBhbmQgXydzIGluIGZpZWxkIG5hbWVzIGJlaGF2
ZSBsaWtlIHdvcmQgYm91bmRhcmllcywgZS5nLiwgImFkZHJlc3MyIgotICAgIHJlcGxhY2UobXV0
YWJsZVN0cmluZ1RvTWF0Y2gsIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24oIlxcZCIpLCAi
ICIpOworICAgIHJlcGxhY2UobXV0YWJsZVN0cmluZ1RvTWF0Y2gsIEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24oIlxcZCJfcyksICIgIl9zKTsKICAgICBtdXRhYmxlU3RyaW5nVG9NYXRjaC5y
ZXBsYWNlKCdfJywgJyAnKTsKICAgICAKICAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9u
IHJlZ0V4cCA9IGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhsYWJlbHMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCmluZGV4IGM5ZjVkNDhkY2I0NmM4MjRjODFlMjg2NjYzYWZiNzFhNGE1NTJkYjQu
LjIzYjM4NjViZDc3YjhjNDY5MDg5YmU0ZjFjN2Y0MzYxNTMyNWE1MTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKQEAgLTE0MDYsNyArMTQwNiw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1
c3RNZWRpYVR5cGVGb3JQcmludGluZyhib29sIHByaW50aW5nKQogICAgIGlmIChwcmludGluZykg
ewogICAgICAgICBpZiAobV9tZWRpYVR5cGVXaGVuTm90UHJpbnRpbmcuaXNOdWxsKCkpCiAgICAg
ICAgICAgICBtX21lZGlhVHlwZVdoZW5Ob3RQcmludGluZyA9IG1lZGlhVHlwZSgpOwotICAgICAg
ICBzZXRNZWRpYVR5cGUoInByaW50Iik7CisgICAgICAgIHNldE1lZGlhVHlwZSgicHJpbnQiX3Mp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9tZWRpYVR5cGVXaGVuTm90UHJpbnRpbmcu
aXNOdWxsKCkpCiAgICAgICAgICAgICBzZXRNZWRpYVR5cGUobV9tZWRpYVR5cGVXaGVuTm90UHJp
bnRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcApp
bmRleCA1MTBiOWU0MTdjNjcxNjIwNTZhYzVlMTY5NmJhZGVjN2NjMjY4ZTI1Li5kMmFjYWIyOTQ1
YjY1NTM3NzI3NTVhN2NhZTE5YTFlYmNiNmFlOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcApAQCAtNDgsMTYgKzQ4LDE2IEBAIHN0YXRpYyBFeGNl
cHRpb25PcjxMZW5ndGhCb3g+IHBhcnNlUm9vdE1hcmdpbihTdHJpbmcmIHJvb3RNYXJnaW4pCiAg
ICAgVmVjdG9yPExlbmd0aCwgND4gbWFyZ2luczsKICAgICB3aGlsZSAoIXRva2VuUmFuZ2UuYXRF
bmQoKSkgewogICAgICAgICBpZiAobWFyZ2lucy5zaXplKCkgPT0gNCkKLSAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVy
c2VjdGlvbk9ic2VydmVyJzogRXh0cmEgdGV4dCBmb3VuZCBhdCB0aGUgZW5kIG9mIHJvb3RNYXJn
aW4uIiB9OworICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiRmFp
bGVkIHRvIGNvbnN0cnVjdCAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInOiBFeHRyYSB0ZXh0IGZvdW5k
IGF0IHRoZSBlbmQgb2Ygcm9vdE1hcmdpbi4iX3MgfTsKICAgICAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZSA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3Vt
ZUxlbmd0aE9yUGVyY2VudCh0b2tlblJhbmdlLCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdl
OjpBbGwpOwogICAgICAgICBpZiAoIXBhcnNlZFZhbHVlIHx8IHBhcnNlZFZhbHVlLT5pc0NhbGN1
bGF0ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgIkZh
aWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2VjdGlvbk9ic2VydmVyJzogcm9vdE1hcmdpbiBtdXN0
IGJlIHNwZWNpZmllZCBpbiBwaXhlbHMgb3IgcGVyY2VudC4iIH07CisgICAgICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJGYWlsZWQgdG8gY29uc3RydWN0ICdJbnRlcnNl
Y3Rpb25PYnNlcnZlcic6IHJvb3RNYXJnaW4gbXVzdCBiZSBzcGVjaWZpZWQgaW4gcGl4ZWxzIG9y
IHBlcmNlbnQuIl9zIH07CiAgICAgICAgIGlmIChwYXJzZWRWYWx1ZS0+aXNQZXJjZW50YWdlKCkp
CiAgICAgICAgICAgICBtYXJnaW5zLmFwcGVuZChMZW5ndGgocGFyc2VkVmFsdWUtPmRvdWJsZVZh
bHVlKCksIExlbmd0aFR5cGU6OlBlcmNlbnQpKTsKICAgICAgICAgZWxzZSBpZiAocGFyc2VkVmFs
dWUtPmlzUHgoKSkKICAgICAgICAgICAgIG1hcmdpbnMuYXBwZW5kKExlbmd0aChwYXJzZWRWYWx1
ZS0+aW50VmFsdWUoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiRmFpbGVkIHRvIGNvbnN0cnVj
dCAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInOiByb290TWFyZ2luIG11c3QgYmUgc3BlY2lmaWVkIGlu
IHBpeGVscyBvciBwZXJjZW50LiIgfTsKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
eW50YXhFcnJvciwgIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2VjdGlvbk9ic2VydmVyJzog
cm9vdE1hcmdpbiBtdXN0IGJlIHNwZWNpZmllZCBpbiBwaXhlbHMgb3IgcGVyY2VudC4iX3MgfTsK
ICAgICB9CiAgICAgc3dpdGNoIChtYXJnaW5zLnNpemUoKSkgewogICAgIGNhc2UgMDoKQEAgLTEw
OCw3ICsxMDgsNyBAQCBFeGNlcHRpb25PcjxSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXI+PiBJbnRl
cnNlY3Rpb25PYnNlcnZlcjo6Y3JlYXRlKERvY3VtZW50JiBkbwogCiAgICAgZm9yIChhdXRvIHRo
cmVzaG9sZCA6IHRocmVzaG9sZHMpIHsKICAgICAgICAgaWYgKCEodGhyZXNob2xkID49IDAgJiYg
dGhyZXNob2xkIDw9IDEpKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJy
b3IsICJGYWlsZWQgdG8gY29uc3RydWN0ICdJbnRlcnNlY3Rpb25PYnNlcnZlcic6IGFsbCB0aHJl
c2hvbGRzIG11c3QgbGllIGluIHRoZSByYW5nZSBbMC4wLCAxLjBdLiIgfTsKKyAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCAnSW50
ZXJzZWN0aW9uT2JzZXJ2ZXInOiBhbGwgdGhyZXNob2xkcyBtdXN0IGxpZSBpbiB0aGUgcmFuZ2Ug
WzAuMCwgMS4wXS4iX3MgfTsKICAgICB9CiAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnRl
cnNlY3Rpb25PYnNlcnZlcihkb2N1bWVudCwgV1RGTW92ZShjYWxsYmFjayksIHJvb3QuZ2V0KCks
IHJvb3RNYXJnaW5PckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgV1RGTW92ZSh0aHJl
c2hvbGRzKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2dnZWRJblN0YXR1
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvZ2dlZEluU3RhdHVzLmNwcAppbmRleCA0Njcz
OGJkMzQzMjJjZGMxYzI4YWQ2ZjZmYzNjYmE4M2Q5MWY5MjM4Li42NTc1Mjc3YTFhZDI4Y2FkZWM5
ZjAzMWRjZWE4OTNjMGUxNzExNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xv
Z2dlZEluU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvZ2dlZEluU3RhdHVz
LmNwcApAQCAtNDQsMTAgKzQ0LDEwIEBAIEV4Y2VwdGlvbk9yPFVuaXF1ZVJlZjxMb2dnZWRJblN0
YXR1cz4+IExvZ2dlZEluU3RhdHVzOjpjcmVhdGUoY29uc3QgUmVnaXN0cmFibGVECiBFeGNlcHRp
b25PcjxVbmlxdWVSZWY8TG9nZ2VkSW5TdGF0dXM+PiBMb2dnZWRJblN0YXR1czo6Y3JlYXRlKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUsIENy
ZWRlbnRpYWxUb2tlblR5cGUgdG9rZW5UeXBlLCBBdXRoZW50aWNhdGlvblR5cGUgYXV0aFR5cGUs
IFNlY29uZHMgdGltZVRvTGl2ZSkKIHsKICAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJJc0xvZ2dlZEluIHN0YXR1cyBj
YW4gb25seSBiZSBzZXQgZm9yIG9yaWdpbnMgd2l0aCBhIHJlZ2lzdHJhYmxlIGRvbWFpbi4iIH07
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiSXNMb2dnZWRJbiBz
dGF0dXMgY2FuIG9ubHkgYmUgc2V0IGZvciBvcmlnaW5zIHdpdGggYSByZWdpc3RyYWJsZSBkb21h
aW4uIl9zIH07CiAKICAgICBpZiAodXNlcm5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJJc0xvZ2dlZEluIHJlcXVpcmVzIGEgbm9uLWVtcHR5
IHVzZXJuYW1lLiIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAi
SXNMb2dnZWRJbiByZXF1aXJlcyBhIG5vbi1lbXB0eSB1c2VybmFtZS4iX3MgfTsKIAogICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHVzZXJuYW1lLmxlbmd0aCgpOwogICAgIGlmIChsZW5ndGggPiBVc2Vy
bmFtZU1heExlbmd0aCkKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9uT3I8VW5pcXVlUmVmPExv
Z2dlZEluU3RhdHVzPj4gTG9nZ2VkSW5TdGF0dXM6OmNyZWF0ZShjb25zdCBSZWdpc3RyYWJsZUQK
ICAgICAgICAgcmV0dXJuIGlzU3BhY2VPck5ld2xpbmUoY2gpOwogICAgIH0pOwogICAgIGlmIChz
cGFjZU9yTmV3bGluZSAhPSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRDaGFyYWN0ZXJFcnJvciwgIklzTG9nZ2VkSW4gdXNlcm5hbWVzIGNhbm5vdCBjb250YWlu
IHdoaXRlc3BhY2Ugb3IgbmV3bGluZXMuIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZENoYXJhY3RlckVycm9yLCAiSXNMb2dnZWRJbiB1c2VybmFtZXMgY2Fubm90IGNvbnRh
aW4gd2hpdGVzcGFjZSBvciBuZXdsaW5lcy4iX3MgfTsKIAogICAgIHJldHVybiBtYWtlVW5pcXVl
UmVmPExvZ2dlZEluU3RhdHVzPigqbmV3IExvZ2dlZEluU3RhdHVzKGRvbWFpbiwgdXNlcm5hbWUs
IHRva2VuVHlwZSwgYXV0aFR5cGUsIHRpbWVUb0xpdmUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05h
dmlnYXRvckJhc2UuY3BwCmluZGV4IDdiMTBjNjM1NjA4MTkzODhkNzg4NWJlMDM3NGQ4ZjBmMTk0
NzNiMDkuLmMwN2NjZTQ4NmM3YzZjNWFlYzFiMzc2Nzk3MTU4MGE5MTVkZDY0MGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIFNlcnZpY2VX
b3JrZXJDb250YWluZXImIE5hdmlnYXRvckJhc2U6OnNlcnZpY2VXb3JrZXIoKQogRXhjZXB0aW9u
T3I8U2VydmljZVdvcmtlckNvbnRhaW5lciY+IE5hdmlnYXRvckJhc2U6OnNlcnZpY2VXb3JrZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoaXM8RG9jdW1lbnQ+
KGNvbnRleHQpICYmIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5pc1NhbmRib3hlZChTYW5k
Ym94T3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJT
ZXJ2aWNlIFdvcmtlciBpcyBkaXNhYmxlZCBiZWNhdXNlIHRoZSBjb250ZXh0IGlzIHNhbmRib3hl
ZCBhbmQgbGFja3MgdGhlICdhbGxvdy1zYW1lLW9yaWdpbicgZmxhZyIgfTsKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJTZXJ2aWNlIFdvcmtlciBpcyBkaXNhYmxl
ZCBiZWNhdXNlIHRoZSBjb250ZXh0IGlzIHNhbmRib3hlZCBhbmQgbGFja3MgdGhlICdhbGxvdy1z
YW1lLW9yaWdpbicgZmxhZyJfcyB9OwogICAgIHJldHVybiBzZXJ2aWNlV29ya2VyKCk7CiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDY2M2Y5ODRiNTdkNGQwZWQzNDM5ZjA5MTNjMTRi
MWNiMWUxOGZjMTcuLmQ5NGQzY2QxN2FlNWZmMDU2YmY2YTNmMGIyOTdiZDBiNmE1MWU3ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtMjA0Miw3ICsyMDQyLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdl
Ojp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4g
bV91c2VyU3R5bGVTaGVldDsKIAotICAgIG1fdXNlclN0eWxlU2hlZXQgPSBUZXh0UmVzb3VyY2VE
ZWNvZGVyOjpjcmVhdGUoInRleHQvY3NzIiktPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICBtX3VzZXJTdHlsZVNoZWV0ID0gVGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKCJ0ZXh0L2NzcyJfcyktPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpKTsKIAogICAgIHJldHVybiBtX3VzZXJTdHlsZVNoZWV0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9R
dWlya3MuY3BwCmluZGV4IDFlMGU2MzNlY2M0ZjRjM2Q2NTc1M2MyMzA1ZmRhNmMzNmVkZGYyNWEu
LmRkYmE4MzVlZjg5MjAzYWFlYWRhMWQzMDNiMjM2OTQ1OGQ0NzI4MTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1
aXJrcy5jcHAKQEAgLTExODMsNyArMTE4Myw3IEBAIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3Vs
dCBRdWlya3M6OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50JiBlCiAg
ICAgCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbG9naW5Qb3B1cFdpbmRvd0Zl
YXR1cmVTdHJpbmcgPSAidG9vbGJhcj1ubyxsb2NhdGlvbj15ZXMsZGlyZWN0b3JpZXM9bm8sc3Rh
dHVzPW5vLG1lbnViYXI9bm8sc2Nyb2xsYmFycz15ZXMscmVzaXphYmxlPXllcyxjb3B5aGlzdG9y
eT1ubyx3aWR0aD01OTksaGVpZ2h0PTYwMCx0b3A9NDIwLGxlZnQ9OTgwLjUiX3M7CiAKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlclNjcmlwdD4ga2luamFMb2dpblVzZXJTY3JpcHQgeyAi
ZnVuY3Rpb24gdHJpZ2dlckxvZ2luRm9ybSgpIHsgbGV0IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgnanNfaGVhZGVyLXVzZXJidXR0b24nKTsgaWYgKGVsZW1lbnRz
ICYmIGVsZW1lbnRzWzBdKSB7IGVsZW1lbnRzWzBdLmNsaWNrKCk7IGNsZWFySW50ZXJ2YWwoaW50
ZXJ2YWwpOyB9IH0gbGV0IGludGVydmFsID0gc2V0SW50ZXJ2YWwodHJpZ2dlckxvZ2luRm9ybSwg
MjAwKTsiLCBVUkwoYWJvdXRCbGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0
cmluZz4oKSwgVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kLCBVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwgV2FpdEZvck5vdGlmaWNhdGlv
bkJlZm9yZUluamVjdGluZzo6WWVzIH07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVzZXJT
Y3JpcHQ+IGtpbmphTG9naW5Vc2VyU2NyaXB0IHsgImZ1bmN0aW9uIHRyaWdnZXJMb2dpbkZvcm0o
KSB7IGxldCBlbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2pzX2hl
YWRlci11c2VyYnV0dG9uJyk7IGlmIChlbGVtZW50cyAmJiBlbGVtZW50c1swXSkgeyBlbGVtZW50
c1swXS5jbGljaygpOyBjbGVhckludGVydmFsKGludGVydmFsKTsgfSB9IGxldCBpbnRlcnZhbCA9
IHNldEludGVydmFsKHRyaWdnZXJMb2dpbkZvcm0sIDIwMCk7Il9zLCBVUkwoYWJvdXRCbGFua1VS
TCgpKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgVXNlclNjcmlwdEluamVj
dGlvblRpbWU6OkRvY3VtZW50RW5kLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJ
blRvcEZyYW1lT25seSwgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6WWVzIH07
CiAKICAgICBpZiAoZXZlbnRUeXBlID09ICJjbGljayIpIHsKICAgICAgICAgaWYgKCFtX2RvY3Vt
ZW50KQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1
aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVsZW1lbnQmIGUKICAgICAg
ICAgICAgIGF1dG8qIGFic3RyYWN0RnJhbWUgPSBwcm94eS0+ZnJhbWUoKTsKICAgICAgICAgICAg
IGlmIChhYnN0cmFjdEZyYW1lICYmIGlzPEZyYW1lPigqYWJzdHJhY3RGcmFtZSkpIHsKICAgICAg
ICAgICAgICAgICBhdXRvJiBmcmFtZSA9IGRvd25jYXN0PEZyYW1lPigqYWJzdHJhY3RGcmFtZSk7
Ci0gICAgICAgICAgICAgICAgYXV0byB3b3JsZCA9IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdv
cmxkKCJraW5qYUNvbVF1aXJrV29ybGQiLCBTY3JpcHRDb250cm9sbGVyOjpXb3JsZFR5cGU6OlVz
ZXIpOworICAgICAgICAgICAgICAgIGF1dG8gd29ybGQgPSBTY3JpcHRDb250cm9sbGVyOjpjcmVh
dGVXb3JsZCgia2luamFDb21RdWlya1dvcmxkIl9zLCBTY3JpcHRDb250cm9sbGVyOjpXb3JsZFR5
cGU6OlVzZXIpOwogICAgICAgICAgICAgICAgIGZyYW1lLmFkZFVzZXJTY3JpcHRBd2FpdGluZ05v
dGlmaWNhdGlvbih3b3JsZC5nZXQoKSwga2luamFMb2dpblVzZXJTY3JpcHQpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2
ZW50OwogICAgICAgICAgICAgfQpAQCAtMTIzOSw3ICsxMjM5LDcgQEAgUXVpcmtzOjpTdG9yYWdl
QWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVs
ZW1lbnQmIGUKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IEJCQ1JhZGlvUGxheWVyUG9wVXBXaW5kb3dGZWF0dXJlU3RyaW5nID0gImZlYXR1cmVzdHJp
bmcgd2lkdGg9NDAwLGhlaWdodD03MzAiX3M7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxVc2VyU2NyaXB0PiBCQkNVc2VyU2NyaXB0IHsgImZ1bmN0aW9uIHRyaWdnZXJSZWRpcmVjdCgp
IHsgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IFwiaHR0cHM6Ly93d3cuYmJjLmNvLnVrL3NvdW5k
cy9wbGF5ZXIvYmJjX3dvcmxkX3NlcnZpY2VcIjsgfSB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcign
bG9hZCcsIGZ1bmN0aW9uICgpIHsgdHJpZ2dlclJlZGlyZWN0KCk7IH0pIiwgVVJMKGFib3V0Qmxh
bmtVUkwoKSksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIFVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5q
ZWN0SW5Ub3BGcmFtZU9ubHksIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Olll
cyB9OworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlclNjcmlwdD4gQkJDVXNlclNj
cmlwdCB7ICJmdW5jdGlvbiB0cmlnZ2VyUmVkaXJlY3QoKSB7IGRvY3VtZW50LmxvY2F0aW9uLmhy
ZWYgPSBcImh0dHBzOi8vd3d3LmJiYy5jby51ay9zb3VuZHMvcGxheWVyL2JiY193b3JsZF9zZXJ2
aWNlXCI7IH0gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7IHRy
aWdnZXJSZWRpcmVjdCgpOyB9KSJfcywgVVJMKGFib3V0QmxhbmtVUkwoKSksIFZlY3RvcjxTdHJp
bmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVu
dEVuZCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHksIFdh
aXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6OlllcyB9OwogCiAgICAgICAgIC8vIEJC
QyBSYWRpb1BsYXllciBjYXNlLgogICAgICAgICBpZiAoaXNCQkNEb21haW4oZG9tYWluKSAmJiBp
c0JCQ1BvcFVwUGxheWVyRWxlbWVudChlbGVtZW50KSkgewpAQCAtMTI1Niw3ICsxMjU2LDcgQEAg
UXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFn
ZUFjY2Vzc1F1aXJrKEVsZW1lbnQmIGUKICAgICAgICAgICAgICAgICAgICAgYXV0byogYWJzdHJh
Y3RGcmFtZSA9IHByb3h5LT5mcmFtZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoaXM8RnJh
bWU+KGFic3RyYWN0RnJhbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiBmcmFt
ZSA9IGRvd25jYXN0PEZyYW1lPihhYnN0cmFjdEZyYW1lKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gd29ybGQgPSBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVXb3JsZCgiYmJjUmFkaW9Q
bGF5ZXJXb3JsZCIsIFNjcmlwdENvbnRyb2xsZXI6OldvcmxkVHlwZTo6VXNlcik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIHdvcmxkID0gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV29y
bGQoImJiY1JhZGlvUGxheWVyV29ybGQiX3MsIFNjcmlwdENvbnRyb2xsZXI6OldvcmxkVHlwZTo6
VXNlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+YWRkVXNlclNjcmlwdEF3YWl0
aW5nTm90aWZpY2F0aW9uKHdvcmxkLmdldCgpLCBCQkNVc2VyU2NyaXB0KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1dpbmRvd0ZlYXR1cmVzLmNwcAppbmRleCBjODMyY2Y1NmE5NThhMmU3YTllZjkxYjI3MmMy
ZjBjMTQ1YzZmY2MzLi4yMDgzNDA5N2JiMTg5MTJiMTk3NjIyMzBmNDA2YWJlNWIwOGM0YmY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcApAQCAtMzgsOCArMzgsOCBAQCB0
eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4g
RGlhbG9nRmVhdHVyZXNNYXA7CiBzdGF0aWMgdm9pZCBzZXRXaW5kb3dGZWF0dXJlKFdpbmRvd0Zl
YXR1cmVzJiwgU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUpOwogCiBzdGF0aWMgRGlh
bG9nRmVhdHVyZXNNYXAgcGFyc2VEaWFsb2dGZWF0dXJlc01hcChTdHJpbmdWaWV3KTsKLXN0YXRp
YyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFw
JiwgY29uc3QgY2hhcioga2V5KTsKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBmbG9hdEZl
YXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmLCBjb25zdCBjaGFyKiBrZXksIGZsb2F0IG1p
biwgZmxvYXQgbWF4KTsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNv
bnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiwgQVNDSUlMaXRlcmFsIGtleSk7CitzdGF0aWMgc3RkOjpv
cHRpb25hbDxmbG9hdD4gZmxvYXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiwgQVND
SUlMaXRlcmFsIGtleSwgZmxvYXQgbWluLCBmbG9hdCBtYXgpOwogCiAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnLyNmZWF0dXJlLXNlcGFyYXRvcgogc3RhdGljIGJvb2wgaXNTZXBhcmF0
b3IoVUNoYXIgY2hhcmFjdGVyLCBGZWF0dXJlTW9kZSBtb2RlKQpAQCAtMTg1LDMwICsxODUsMzAg
QEAgV2luZG93RmVhdHVyZXMgcGFyc2VEaWFsb2dGZWF0dXJlcyhTdHJpbmdWaWV3IGRpYWxvZ0Zl
YXR1cmVzU3RyaW5nLCBjb25zdCBGbG9hdFIKICAgICBmZWF0dXJlcy5sb2NhdGlvbkJhclZpc2li
bGUgPSBmYWxzZTsKICAgICBmZWF0dXJlcy5kaWFsb2cgPSB0cnVlOwogCi0gICAgZmxvYXQgd2lk
dGggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d3aWR0aCIsIDEwMCwgc2NyZWVu
QXZhaWxhYmxlUmVjdC53aWR0aCgpKS52YWx1ZV9vcig2MjApOyAvLyBkZWZhdWx0IGhlcmUgY2Ft
ZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCi0gICAgZmxvYXQgaGVpZ2h0ID0g
ZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9naGVpZ2h0IiwgMTAwLCBzY3JlZW5BdmFp
bGFibGVSZWN0LmhlaWdodCgpKS52YWx1ZV9vcig0NTApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBm
cm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCisgICAgZmxvYXQgd2lkdGggPSBmbG9h
dEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d3aWR0aCJfcywgMTAwLCBzY3JlZW5BdmFpbGFi
bGVSZWN0LndpZHRoKCkpLnZhbHVlX29yKDYyMCk7IC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZyb20g
ZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKKyAgICBmbG9hdCBoZWlnaHQgPSBmbG9hdEZl
YXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2doZWlnaHQiX3MsIDEwMCwgc2NyZWVuQXZhaWxhYmxl
UmVjdC5oZWlnaHQoKSkudmFsdWVfb3IoNDUwKTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBm
cmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQogCiAgICAgZmVhdHVyZXMud2lkdGggPSB3aWR0
aDsKICAgICBmZWF0dXJlcy5oZWlnaHQgPSBoZWlnaHQ7CiAKLSAgICBmZWF0dXJlcy54ID0gZmxv
YXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nbGVmdCIsIHNjcmVlbkF2YWlsYWJsZVJlY3Qu
eCgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1heFgoKSAtIHdpZHRoKTsKLSAgICBmZWF0dXJlcy55
ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9ndG9wIiwgc2NyZWVuQXZhaWxhYmxl
UmVjdC55KCksIHNjcmVlbkF2YWlsYWJsZVJlY3QubWF4WSgpIC0gaGVpZ2h0KTsKKyAgICBmZWF0
dXJlcy54ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nbGVmdCJfcywgc2NyZWVu
QXZhaWxhYmxlUmVjdC54KCksIHNjcmVlbkF2YWlsYWJsZVJlY3QubWF4WCgpIC0gd2lkdGgpOwor
ICAgIGZlYXR1cmVzLnkgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d0b3AiX3Ms
IHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1heFkoKSAtIGhl
aWdodCk7CiAKLSAgICBpZiAoYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJjZW50ZXIiKS52YWx1
ZV9vcih0cnVlKSkgeworICAgIGlmIChib29sRmVhdHVyZShmZWF0dXJlc01hcCwgImNlbnRlciJf
cykudmFsdWVfb3IodHJ1ZSkpIHsKICAgICAgICAgaWYgKCFmZWF0dXJlcy54KQogICAgICAgICAg
ICAgZmVhdHVyZXMueCA9IHNjcmVlbkF2YWlsYWJsZVJlY3QueCgpICsgKHNjcmVlbkF2YWlsYWJs
ZVJlY3Qud2lkdGgoKSAtIHdpZHRoKSAvIDI7CiAgICAgICAgIGlmICghZmVhdHVyZXMueSkKICAg
ICAgICAgICAgIGZlYXR1cmVzLnkgPSBzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIChzY3JlZW5B
dmFpbGFibGVSZWN0LmhlaWdodCgpIC0gaGVpZ2h0KSAvIDI7CiAgICAgfQogCi0gICAgZmVhdHVy
ZXMucmVzaXphYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJyZXNpemFibGUiKS52YWx1
ZV9vcihmYWxzZSk7Ci0gICAgZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUgPSBib29sRmVhdHVy
ZShmZWF0dXJlc01hcCwgInNjcm9sbCIpLnZhbHVlX29yKHRydWUpOwotICAgIGZlYXR1cmVzLnN0
YXR1c0JhclZpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInN0YXR1cyIpLnZhbHVl
X29yKGZhbHNlKTsKKyAgICBmZWF0dXJlcy5yZXNpemFibGUgPSBib29sRmVhdHVyZShmZWF0dXJl
c01hcCwgInJlc2l6YWJsZSJfcykudmFsdWVfb3IoZmFsc2UpOworICAgIGZlYXR1cmVzLnNjcm9s
bGJhcnNWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzY3JvbGwiX3MpLnZhbHVl
X29yKHRydWUpOworICAgIGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUgPSBib29sRmVhdHVyZShm
ZWF0dXJlc01hcCwgInN0YXR1cyJfcykudmFsdWVfb3IoZmFsc2UpOwogCiAgICAgcmV0dXJuIGZl
YXR1cmVzOwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBib29sRmVhdHVyZShjb25z
dCBEaWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIGNvbnN0IGNoYXIqIGtleSkKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBm
ZWF0dXJlcywgQVNDSUlMaXRlcmFsIGtleSkKIHsKICAgICBhdXRvIGl0ID0gZmVhdHVyZXMuZmlu
ZChrZXkpOwogICAgIGlmIChpdCA9PSBmZWF0dXJlcy5lbmQoKSkKQEAgLTIyMSw3ICsyMjEsNyBA
QCBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBib29sRmVhdHVyZShjb25zdCBEaWFsb2dGZWF0
dXJlc01hcCYgZmVhdHVyZXMsIGNvbnN0CiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHZhbHVlLCAib24iKTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+
IGZsb2F0RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIGNvbnN0IGNo
YXIqIGtleSwgZmxvYXQgbWluLCBmbG9hdCBtYXgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxmbG9h
dD4gZmxvYXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgQVNDSUlM
aXRlcmFsIGtleSwgZmxvYXQgbWluLCBmbG9hdCBtYXgpCiB7CiAgICAgYXV0byBpdCA9IGZlYXR1
cmVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXQgPT0gZmVhdHVyZXMuZW5kKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCAxNjI3
NGU5NGFmMTBjOGQzODU0MGU5YzgzNTE5MjFjNzBiOGY4ZDdmLi5jZjY2OWEwNTU2YmQ3NjQ0NDcw
YWRkOWFiNjA5ODg2ZDQ5NWRjYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTcwLDkgKzcwLDkgQEAgc3RhdGljIFN0cmlu
ZyBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmUmIHYKIHsKICAgICBib29sIGlzRGVmYXVsdFNyYyA9IHZpb2xhdGVkRGlyZWN0aXZl
LmlzRGVmYXVsdFNyYygpOwogICAgIFN0cmluZyBuYW1lID0gdmlvbGF0ZWREaXJlY3RpdmUubmFt
ZUZvclJlcG9ydGluZygpOwotICAgIGlmICh2aW9sYXRlZERpcmVjdGl2ZS5uYW1lRm9yUmVwb3J0
aW5nKCkuc3RhcnRzV2l0aChDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2Ny
aXB0U3JjKSkKKyAgICBpZiAodmlvbGF0ZWREaXJlY3RpdmUubmFtZUZvclJlcG9ydGluZygpLnN0
YXJ0c1dpdGgoU3RyaW5nVmlldyB7IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
OjpzY3JpcHRTcmMgfSkpCiAgICAgICAgIG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVOYW1lczo6c2NyaXB0U3JjOwotICAgIGVsc2UgaWYgKHZpb2xhdGVkRGlyZWN0aXZlLm5h
bWVGb3JSZXBvcnRpbmcoKS5zdGFydHNXaXRoKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzOjpzdHlsZVNyYykpCisgICAgZWxzZSBpZiAodmlvbGF0ZWREaXJlY3RpdmUubmFtZUZv
clJlcG9ydGluZygpLnN0YXJ0c1dpdGgoU3RyaW5nVmlldyB7IENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzOjpzdHlsZVNyYyB9KSkKICAgICAgICAgbmFtZSA9IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzdHlsZVNyYzsKIAogICAgIHJldHVybiBtYWtlU3Ry
aW5nKHZpb2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKSA/ICJb
UmVwb3J0IE9ubHldICIgOiAiIiwKQEAgLTQ5Myw3ICs0OTMsNyBAQCBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dFdmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBMb2dUb0Nv
bnNvbGUgcwogICAgIGJvb2wgZGlkTm90aWZ5SW5zcGVjdG9yID0gZmFsc2U7CiAgICAgYXV0byBo
YW5kbGVWaW9sYXRlZERpcmVjdGl2ZSA9IFsmXSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2ZSkgewogICAgICAgICBTdHJpbmcgY29uc29sZU1l
c3NhZ2UgPSBzaG91bGRMb2dUb0NvbnNvbGUgPT0gTG9nVG9Db25zb2xlOjpZZXMgPyBjb25zb2xl
TWVzc2FnZUZvclZpb2xhdGlvbih2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksICJSZWZ1c2VkIHRv
IGV4ZWN1dGUgYSBzY3JpcHQiLCAiJ3Vuc2FmZS1ldmFsJyIpIDogU3RyaW5nKCk7Ci0gICAgICAg
IHJlcG9ydFZpb2xhdGlvbih2aW9sYXRlZERpcmVjdGl2ZSwgImV2YWwiLCBjb25zb2xlTWVzc2Fn
ZSwgc3RhdGUsIGNvZGVDb250ZW50KTsKKyAgICAgICAgcmVwb3J0VmlvbGF0aW9uKHZpb2xhdGVk
RGlyZWN0aXZlLCAiZXZhbCJfcywgY29uc29sZU1lc3NhZ2UsIHN0YXRlLCBjb2RlQ29udGVudCk7
CiAgICAgICAgIGlmICghZGlkTm90aWZ5SW5zcGVjdG9yICYmICF2aW9sYXRlZERpcmVjdGl2ZS5k
aXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCkpIHsKICAgICAgICAgICAgIHJlcG9ydEJsb2Nr
ZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rvcih2aW9sYXRlZERpcmVjdGl2ZS50ZXh0KCkpOwog
ICAgICAgICAgICAgZGlkTm90aWZ5SW5zcGVjdG9yID0gdHJ1ZTsKQEAgLTkwMCw3ICs5MDAsNyBA
QCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0SW52YWxpZFBsdWdpblR5cGVzKGNv
bnN0IFN0cmluZyYgcGx1Z2luVHlwZSkgYwogewogICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGlm
IChwbHVnaW5UeXBlLmlzTnVsbCgpKQotICAgICAgICBtZXNzYWdlID0gIidwbHVnaW4tdHlwZXMn
IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZSBpcyBlbXB0eTsgYWxsIHBsdWdpbnMg
d2lsbCBiZSBibG9ja2VkLlxuIjsKKyAgICAgICAgbWVzc2FnZSA9ICIncGx1Z2luLXR5cGVzJyBD
b250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmUgaXMgZW1wdHk7IGFsbCBwbHVnaW5zIHdp
bGwgYmUgYmxvY2tlZC5cbiJfczsKICAgICBlbHNlCiAgICAgICAgIG1lc3NhZ2UgPSBtYWtlU3Ry
aW5nKCJJbnZhbGlkIHBsdWdpbiB0eXBlIGluICdwbHVnaW4tdHlwZXMnIENvbnRlbnQgU2VjdXJp
dHkgUG9saWN5IGRpcmVjdGl2ZTogJyIsIHBsdWdpblR5cGUsICInLlxuIik7CiAgICAgbG9nVG9D
b25zb2xlKG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAppbmRleCAwZmQ2Njhi
MDI4MzJkZDQyZjRmZGVjMWUxMDIwNTJiNGE3MDUxYmUxLi5hMDUxZjZlYmEwNjZiNGZlN2U0Mjk0
Zjk3YTBlZjUzOGI1YzQ5MGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtNjcx
LDkgKzY3MSw5IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6c3Ry
aWN0RHluYW1pY0luY2x1ZGVkKCkKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6c2hvdWxkUmVwb3J0U2FtcGxlKGNvbnN0IFN0cmluZyYgdmlvbGF0ZWREaXJlY3RpdmUp
IGNvbnN0CiB7CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSog
ZGlyZWN0aXZlID0gbnVsbHB0cjsKLSAgICBpZiAodmlvbGF0ZWREaXJlY3RpdmUuc3RhcnRzV2l0
aChDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmMpKQorICAgIGlm
ICh2aW9sYXRlZERpcmVjdGl2ZS5zdGFydHNXaXRoKFN0cmluZ1ZpZXcgeyBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmMgfSkpCiAgICAgICAgIGRpcmVjdGl2ZSA9
IG1fc3R5bGVTcmMuZ2V0KCk7Ci0gICAgZWxzZSBpZiAodmlvbGF0ZWREaXJlY3RpdmUuc3RhcnRz
V2l0aChDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjKSkKKyAg
ICBlbHNlIGlmICh2aW9sYXRlZERpcmVjdGl2ZS5zdGFydHNXaXRoKFN0cmluZ1ZpZXcgeyBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjIH0pKQogICAgICAgICBk
aXJlY3RpdmUgPSBtX3NjcmlwdFNyYy5nZXQoKTsKIAogICAgIHJldHVybiBkaXJlY3RpdmUgJiYg
ZGlyZWN0aXZlLT5zaG91bGRSZXBvcnRTYW1wbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
LmNwcAppbmRleCAxYTBiYzM2NDIyYjM3NDRhOTA3YjI3ODk2ZTMwYTQyZGRjMTkwZTAzLi40NGU5
NGU1NmUxZjA1ZjY3MDQwODA4YjAxZTAyOTY3YWVkY2NkY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXMuY3BwCkBAIC0zMCwzMiArMzAsMzIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBu
YW1lc3BhY2UgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMgewogCi1jb25zdCBj
aGFyKiBjb25zdCBiYXNlVVJJID0gImJhc2UtdXJpIjsKLWNvbnN0IGNoYXIqIGNvbnN0IGNoaWxk
U3JjID0gImNoaWxkLXNyYyI7Ci1jb25zdCBjaGFyKiBjb25zdCBjb25uZWN0U3JjID0gImNvbm5l
Y3Qtc3JjIjsKLWNvbnN0IGNoYXIqIGNvbnN0IGRlZmF1bHRTcmMgPSAiZGVmYXVsdC1zcmMiOwot
Y29uc3QgY2hhciogY29uc3QgZm9udFNyYyA9ICJmb250LXNyYyI7Ci1jb25zdCBjaGFyKiBjb25z
dCBmb3JtQWN0aW9uID0gImZvcm0tYWN0aW9uIjsKLWNvbnN0IGNoYXIqIGNvbnN0IGZyYW1lQW5j
ZXN0b3JzID0gImZyYW1lLWFuY2VzdG9ycyI7Ci1jb25zdCBjaGFyKiBjb25zdCBmcmFtZVNyYyA9
ICJmcmFtZS1zcmMiOworQVNDSUlMaXRlcmFsIGJhc2VVUkkgPSAiYmFzZS11cmkiX3M7CitBU0NJ
SUxpdGVyYWwgY2hpbGRTcmMgPSAiY2hpbGQtc3JjIl9zOworQVNDSUlMaXRlcmFsIGNvbm5lY3RT
cmMgPSAiY29ubmVjdC1zcmMiX3M7CitBU0NJSUxpdGVyYWwgZGVmYXVsdFNyYyA9ICJkZWZhdWx0
LXNyYyJfczsKK0FTQ0lJTGl0ZXJhbCBmb250U3JjID0gImZvbnQtc3JjIl9zOworQVNDSUlMaXRl
cmFsIGZvcm1BY3Rpb24gPSAiZm9ybS1hY3Rpb24iX3M7CitBU0NJSUxpdGVyYWwgZnJhbWVBbmNl
c3RvcnMgPSAiZnJhbWUtYW5jZXN0b3JzIl9zOworQVNDSUlMaXRlcmFsIGZyYW1lU3JjID0gImZy
YW1lLXNyYyJfczsKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi1jb25zdCBjaGFy
KiBjb25zdCBtYW5pZmVzdFNyYyA9ICJtYW5pZmVzdC1zcmMiOworQVNDSUlMaXRlcmFsIG1hbmlm
ZXN0U3JjID0gIm1hbmlmZXN0LXNyYyJfczsKICNlbmRpZgotY29uc3QgY2hhciogY29uc3QgaW1n
U3JjID0gImltZy1zcmMiOwotY29uc3QgY2hhciogY29uc3QgbWVkaWFTcmMgPSAibWVkaWEtc3Jj
IjsKLWNvbnN0IGNoYXIqIGNvbnN0IG9iamVjdFNyYyA9ICJvYmplY3Qtc3JjIjsKLWNvbnN0IGNo
YXIqIGNvbnN0IHBsdWdpblR5cGVzID0gInBsdWdpbi10eXBlcyI7Ci1jb25zdCBjaGFyKiBjb25z
dCByZXBvcnRVUkkgPSAicmVwb3J0LXVyaSI7Ci1jb25zdCBjaGFyKiBjb25zdCBzYW5kYm94ID0g
InNhbmRib3giOwotY29uc3QgY2hhciogY29uc3Qgc2NyaXB0U3JjID0gInNjcmlwdC1zcmMiOwot
Y29uc3QgY2hhciogY29uc3Qgc2NyaXB0U3JjQXR0ciA9ICJzY3JpcHQtc3JjLWF0dHIiOwotY29u
c3QgY2hhciogY29uc3Qgc2NyaXB0U3JjRWxlbSA9ICJzY3JpcHQtc3JjLWVsZW0iOwotY29uc3Qg
Y2hhciogY29uc3Qgc3R5bGVTcmMgPSAic3R5bGUtc3JjIjsKLWNvbnN0IGNoYXIqIGNvbnN0IHN0
eWxlU3JjQXR0ciA9ICJzdHlsZS1zcmMtYXR0ciI7Ci1jb25zdCBjaGFyKiBjb25zdCBzdHlsZVNy
Y0VsZW0gPSAic3R5bGUtc3JjLWVsZW0iOwotY29uc3QgY2hhciogY29uc3QgdXBncmFkZUluc2Vj
dXJlUmVxdWVzdHMgPSAidXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cyI7Ci1jb25zdCBjaGFyKiBj
b25zdCBibG9ja0FsbE1peGVkQ29udGVudCA9ICJibG9jay1hbGwtbWl4ZWQtY29udGVudCI7Ci1j
b25zdCBjaGFyKiBjb25zdCB3b3JrZXJTcmMgPSAid29ya2VyLXNyYyI7CitBU0NJSUxpdGVyYWwg
aW1nU3JjID0gImltZy1zcmMiX3M7CitBU0NJSUxpdGVyYWwgbWVkaWFTcmMgPSAibWVkaWEtc3Jj
Il9zOworQVNDSUlMaXRlcmFsIG9iamVjdFNyYyA9ICJvYmplY3Qtc3JjIl9zOworQVNDSUlMaXRl
cmFsIHBsdWdpblR5cGVzID0gInBsdWdpbi10eXBlcyJfczsKK0FTQ0lJTGl0ZXJhbCByZXBvcnRV
UkkgPSAicmVwb3J0LXVyaSJfczsKK0FTQ0lJTGl0ZXJhbCBzYW5kYm94ID0gInNhbmRib3giX3M7
CitBU0NJSUxpdGVyYWwgc2NyaXB0U3JjID0gInNjcmlwdC1zcmMiX3M7CitBU0NJSUxpdGVyYWwg
c2NyaXB0U3JjQXR0ciA9ICJzY3JpcHQtc3JjLWF0dHIiX3M7CitBU0NJSUxpdGVyYWwgc2NyaXB0
U3JjRWxlbSA9ICJzY3JpcHQtc3JjLWVsZW0iX3M7CitBU0NJSUxpdGVyYWwgc3R5bGVTcmMgPSAi
c3R5bGUtc3JjIl9zOworQVNDSUlMaXRlcmFsIHN0eWxlU3JjQXR0ciA9ICJzdHlsZS1zcmMtYXR0
ciJfczsKK0FTQ0lJTGl0ZXJhbCBzdHlsZVNyY0VsZW0gPSAic3R5bGUtc3JjLWVsZW0iX3M7CitB
U0NJSUxpdGVyYWwgdXBncmFkZUluc2VjdXJlUmVxdWVzdHMgPSAidXBncmFkZS1pbnNlY3VyZS1y
ZXF1ZXN0cyJfczsKK0FTQ0lJTGl0ZXJhbCBibG9ja0FsbE1peGVkQ29udGVudCA9ICJibG9jay1h
bGwtbWl4ZWQtY29udGVudCJfczsKK0FTQ0lJTGl0ZXJhbCB3b3JrZXJTcmMgPSAid29ya2VyLXNy
YyJfczsKIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgKaW5kZXggMGQwYzFjZTZlODQxZTI0NDcxOWRm
ZDMwYWExYTUwY2YyOGM3NDU2ZC4uMDliNGRmOGM1NzBjNmEyNWRmOTk5NDFmNDMzODAyZGNmMGY4
ODAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oCkBAIC0yNSwzNiArMjUsMzggQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIG5hbWVzcGFjZSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcyB7
CiAKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBiYXNlVVJJOwotZXh0ZXJuIGNvbnN0IGNoYXIq
IGNvbnN0IGNoaWxkU3JjOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGNvbm5lY3RTcmM7Ci1l
eHRlcm4gY29uc3QgY2hhciogY29uc3QgZGVmYXVsdFNyYzsKLWV4dGVybiBjb25zdCBjaGFyKiBj
b25zdCBmb250U3JjOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGZvcm1BY3Rpb247Ci1leHRl
cm4gY29uc3QgY2hhciogY29uc3QgZnJhbWVBbmNlc3RvcnM7Ci1leHRlcm4gY29uc3QgY2hhciog
Y29uc3QgZnJhbWVTcmM7Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3QgaW1nU3JjOworZXh0ZXJu
IEFTQ0lJTGl0ZXJhbCBiYXNlVVJJOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBjaGlsZFNyYzsKK2V4
dGVybiBBU0NJSUxpdGVyYWwgY29ubmVjdFNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgZGVmYXVs
dFNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgZm9udFNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwg
Zm9ybUFjdGlvbjsKK2V4dGVybiBBU0NJSUxpdGVyYWwgZnJhbWVBbmNlc3RvcnM7CitleHRlcm4g
QVNDSUlMaXRlcmFsIGZyYW1lU3JjOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBpbWdTcmM7CiAjaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IG1h
bmlmZXN0U3JjOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBtYW5pZmVzdFNyYzsKICNlbmRpZgotZXh0
ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IG1lZGlhU3JjOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0
IG9iamVjdFNyYzsKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBwbHVnaW5UeXBlczsKLWV4dGVy
biBjb25zdCBjaGFyKiBjb25zdCByZXBvcnRVUkk7Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3Qg
c2FuZGJveDsKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzY3JpcHRTcmM7Ci1leHRlcm4gY29u
c3QgY2hhciogY29uc3Qgc2NyaXB0U3JjRWxlbTsKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBz
Y3JpcHRTcmNBdHRyOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHN0eWxlU3JjOwotZXh0ZXJu
IGNvbnN0IGNoYXIqIGNvbnN0IHN0eWxlU3JjQXR0cjsKLWV4dGVybiBjb25zdCBjaGFyKiBjb25z
dCBzdHlsZVNyY0VsZW07Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3QgdXBncmFkZUluc2VjdXJl
UmVxdWVzdHM7Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3QgYmxvY2tBbGxNaXhlZENvbnRlbnQ7
Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3Qgd29ya2VyU3JjOworZXh0ZXJuIEFTQ0lJTGl0ZXJh
bCBtZWRpYVNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgb2JqZWN0U3JjOworZXh0ZXJuIEFTQ0lJ
TGl0ZXJhbCBwbHVnaW5UeXBlczsKK2V4dGVybiBBU0NJSUxpdGVyYWwgcmVwb3J0VVJJOworZXh0
ZXJuIEFTQ0lJTGl0ZXJhbCBzYW5kYm94OworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBzY3JpcHRTcmM7
CitleHRlcm4gQVNDSUlMaXRlcmFsIHNjcmlwdFNyY0VsZW07CitleHRlcm4gQVNDSUlMaXRlcmFs
IHNjcmlwdFNyY0F0dHI7CitleHRlcm4gQVNDSUlMaXRlcmFsIHN0eWxlU3JjOworZXh0ZXJuIEFT
Q0lJTGl0ZXJhbCBzdHlsZVNyY0F0dHI7CitleHRlcm4gQVNDSUlMaXRlcmFsIHN0eWxlU3JjRWxl
bTsKK2V4dGVybiBBU0NJSUxpdGVyYWwgdXBncmFkZUluc2VjdXJlUmVxdWVzdHM7CitleHRlcm4g
QVNDSUlMaXRlcmFsIGJsb2NrQWxsTWl4ZWRDb250ZW50OworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCB3
b3JrZXJTcmM7CiAKIH0gLy8gbmFtZXNwYWNlIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVt
ZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lz
dHJ5LmNwcAppbmRleCA1YTM0Y2VhMDU0YWM2NTRhZDMyNDJmOTIwYTQyODE3MDFmZWI2NmI0Li40
MTk2NTc5YTNjNzQ2MTlmZTM3ZGRmMDk1MzIzNjhjOGIxY2Q2NzdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCkBAIC03OSwxMCArNzks
MTAgQEAgc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVzKCkKICAg
ICAgICAgfTsKIAogICAgICAgICAvLyBPdGhlciBtaXNjIHNjaGVtZXMgdGhhdCB0aGUgTGVnYWN5
U2NoZW1lUmVnaXN0cnkgZG9lc24ndCBrbm93IGFib3V0LgotICAgICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogY29uc3Qgb3RoZXJTY2hlbWVzW10gPSB7Ci0gICAgICAgICAgICAid2Via2l0LWZha2Ut
dXJsIiwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgb3RoZXJTY2hlbWVz
W10gPSB7CisgICAgICAgICAgICAid2Via2l0LWZha2UtdXJsIl9zLAogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICAgICAgICAgICJzYWZhcmktZXh0ZW5zaW9uIiwKKyAgICAgICAgICAgICJzYWZhcmkt
ZXh0ZW5zaW9uIl9zLAogI2VuZGlmCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgICAgICAgICBR
TFByZXZpZXdQcm90b2NvbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Y2FsaXplZFN0cmluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3Ry
aW5ncy5jcHAKaW5kZXggOGE3ZThlZjZiY2UyM2MxZjg0YWQ0MDMwNmNkNmY1ZjVjOTBlNThkYS4u
MjlmZmM1NDkzYWNmMDg4MDkyMGY2ZWU1MWNjYzYwZDI5MzllZjA1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKQEAgLTc0NSwxOSArNzQ1LDE5IEBA
IFN0cmluZyBBWExpbmtBY3Rpb25WZXJiKCkKIFN0cmluZyBBWE1lbnVMaXN0UG9wdXBBY3Rpb25W
ZXJiKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAic2VsZWN0IjsKKyAg
ICByZXR1cm4gInNlbGVjdCJfczsKIH0KIAogU3RyaW5nIEFYTWVudUxpc3RBY3Rpb25WZXJiKCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAic2VsZWN0IjsKKyAgICByZXR1
cm4gInNlbGVjdCJfczsKIH0KIAogU3RyaW5nIEFYTGlzdEl0ZW1BY3Rpb25WZXJiKCkKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAic2VsZWN0IjsKKyAgICByZXR1cm4gInNl
bGVjdCJfczsKIH0KIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NsZWVwRGlzYWJsZXIuY3BwCmluZGV4IDI5ZGZjYjQzZTNhZGIxMzAyNTViZWM2NmFiMjBm
OTA3NTdiNDdjY2YuLjFlODJhOTk0Nzc3MTQ0MmFlNjM3YjhmNzU0NDBkMWIxNWU1N2U0NmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NsZWVwRGlzYWJsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NsZWVwRGlzYWJsZXIuY3BwCkBAIC0zMCw3ICszMCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2xlZXBEaXNhYmxlcjo6U2xlZXBEaXNhYmxl
cihjb25zdCBjaGFyKiByZWFzb24sIFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZSB0eXBlKQorU2xl
ZXBEaXNhYmxlcjo6U2xlZXBEaXNhYmxlcihjb25zdCBTdHJpbmcmIHJlYXNvbiwgUEFMOjpTbGVl
cERpc2FibGVyOjpUeXBlIHR5cGUpCiAgICAgOiBtX3R5cGUodHlwZSkKIHsKICAgICBpZiAoc2xl
ZXBEaXNhYmxlckNsaWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TbGVlcERpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVy
LmgKaW5kZXggZjZlMTFjNjQ4ZjU0MjExMDI2YzFjOTIwMmNlNDZhZTVjNzIzZGY4Ni4uY2EyNzVj
MzVmNzRhMTRkM2FjM2RkMWQwMDY5OWNhYjIzZmE3YmQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2xlZXBEaXNhYmxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NsZWVwRGlzYWJsZXIuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBTbGVlcERpc2FibGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBTbGVlcERpc2FibGVyKGNvbnN0IGNoYXIqLCBQQUw6
OlNsZWVwRGlzYWJsZXI6OlR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFNsZWVwRGlzYWJsZXIo
Y29uc3QgU3RyaW5nJiwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB+U2xlZXBEaXNhYmxlcigpOwogCiAgICAgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGRGF0YWJhc2UuY3BwCmluZGV4IDEzY2YyNzI0MDIzMWI1NGM1YThlZmJiZDVh
NjBhMDE0ZTZmMzE1NWUuLmFkMDQzYTM4MmIxZDE4ODU2MWNkNjY3NTY3YjFiODc3Njc2NDU2MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmNwcApA
QCAtNDEsNyArNDEsNyBAQCBIUlRGRGF0YWJhc2U6OkhSVEZEYXRhYmFzZShmbG9hdCBzYW1wbGVS
YXRlKQogewogICAgIHVuc2lnbmVkIGVsZXZhdGlvbkluZGV4ID0gMDsKICAgICBmb3IgKGludCBl
bGV2YXRpb24gPSBNaW5FbGV2YXRpb247IGVsZXZhdGlvbiA8PSBNYXhFbGV2YXRpb247IGVsZXZh
dGlvbiArPSBSYXdFbGV2YXRpb25BbmdsZVNwYWNpbmcpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEhSVEZFbGV2YXRpb24+IGhydGZFbGV2YXRpb24gPSBIUlRGRWxldmF0aW9uOjpjcmVhdGVG
b3JTdWJqZWN0KCJDb21wb3NpdGUiLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gaHJ0ZkVsZXZhdGlvbiA9IEhSVEZFbGV2YXRp
b246OmNyZWF0ZUZvclN1YmplY3QoIkNvbXBvc2l0ZSJfcywgZWxldmF0aW9uLCBzYW1wbGVSYXRl
KTsKICAgICAgICAgQVNTRVJUKGhydGZFbGV2YXRpb24uZ2V0KCkpOwogICAgICAgICBpZiAoIWhy
dGZFbGV2YXRpb24uZ2V0KCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCmluZGV4IGQ4
M2IyZjBlYzkzZTQyYTJkYTBjZGUyNTA4OWVhMGU2NDlkN2M2MzEuLjE1YjFlMDBmNGFiMmQwMmE2
M2I1YTQ3YzY1ZTJlNTUyYTJmOTQyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCkBAIC0zOTksNyArMzk5LDcgQEAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNUHJpdmF0ZTo6Z2V0
U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm8KICAgICAgICAgLy8gMy44LiBJZiB0aGUgdXNlciBhZ2Vu
dCBkb2VzIG5vdCByZWNvZ25pemUgb25lIG9yIG1vcmUgcGFyYW1ldGVycywgY29udGludWUgdG8g
dGhlIG5leHQgaXRlcmF0aW9uLgogICAgICAgICAvLyAzLjkuIExldCBtZWRpYSB0eXBlcyBiZSB0
aGUgc2V0IG9mIGNvZGVjcyBhbmQgY29kZWMgY29uc3RyYWludHMgc3BlY2lmaWVkIGJ5IHBhcmFt
ZXRlcnMuIFRoZSBjYXNlLXNlbnNpdGl2aXR5CiAgICAgICAgIC8vICAgICAgb2Ygc3RyaW5nIGNv
bXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQyBvciBvdGhlciBz
cGVjaWZpY2F0aW9uLgotICAgICAgICBTdHJpbmcgY29kZWNzID0gY29udGVudFR5cGUtPnBhcmFt
ZXRlclZhbHVlRm9yTmFtZSgiY29kZWNzIik7CisgICAgICAgIFN0cmluZyBjb2RlY3MgPSBjb250
ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJjb2RlY3MiX3MpOwogICAgICAgICBpZiAo
Y29udGVudFR5cGUtPnBhcmFtZXRlckNvdW50KCkgPiAoY29kZWNzLmlzRW1wdHkoKSA/IDAgOiAx
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAK
aW5kZXggMThkNzhmNzFiNWRiYzE1MjM5MjcyYTgyZWVlMjg2Nzk5Mjg0YTkwYi4uZmE5YjgyNTNm
YTBkMjQ4YjZhNmM4NGQwODY5ODI3OTU2NzJkMTQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
UHRyPEtleUhhbmRsZT4+PiBwYXJzZUxpY2Vuc2VGb3JtYXQoY29uc3QgSlNPTjo6TwogewogICAg
IC8vIElmIHRoZSAna2V5cycga2V5IGlzIHByZXNlbnQgaW4gdGhlIHJvb3Qgb2JqZWN0LCBwYXJz
ZSB0aGUgSlNPTiBmdXJ0aGVyCiAgICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgJ2xp
Y2Vuc2UnIGZvcm1hdC4KLSAgICBhdXRvIGl0ID0gcm9vdC5maW5kKCJrZXlzIik7CisgICAgYXV0
byBpdCA9IHJvb3QuZmluZCgia2V5cyJfcyk7CiAgICAgaWYgKGl0ID09IHJvb3QuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTY3LDE1ICs2NywxNSBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPEtleUhhbmRsZT4+PiBwYXJzZUxpY2Vuc2VGb3Jt
YXQoY29uc3QgSlNPTjo6TwogICAgICAgICAgICAgaWYgKCFrZXlPYmplY3QpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBhdXRvIGtleVR5cGUgPSBrZXlPYmpl
Y3QtPmdldFN0cmluZygia3R5Iik7CisgICAgICAgICAgICBhdXRvIGtleVR5cGUgPSBrZXlPYmpl
Y3QtPmdldFN0cmluZygia3R5Il9zKTsKICAgICAgICAgICAgIGlmICgha2V5VHlwZSB8fCAhZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5VHlwZSwgIm9jdCIpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgYXV0byBrZXlJRCA9IGtleU9iamVjdC0+
Z2V0U3RyaW5nKCJraWQiKTsKKyAgICAgICAgICAgIGF1dG8ga2V5SUQgPSBrZXlPYmplY3QtPmdl
dFN0cmluZygia2lkIl9zKTsKICAgICAgICAgICAgIGlmICgha2V5SUQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBhdXRvIGtleVZhbHVlID0ga2V5T2JqZWN0
LT5nZXRTdHJpbmcoImsiKTsKKyAgICAgICAgICAgIGF1dG8ga2V5VmFsdWUgPSBrZXlPYmplY3Qt
PmdldFN0cmluZygiayJfcyk7CiAgICAgICAgICAgICBpZiAoIWtleVZhbHVlKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgYm9vbCBwYXJz
ZUxpY2Vuc2VSZWxlYXNlQWNrbm93bGVkZ2VtZW50Rm9ybWF0KGNvbnN0IEpTT046Ok9iamVjdCYg
cm9vdCkKIHsKICAgICAvLyBJZiB0aGUgJ2tpZHMnIGtleSBpcyBwcmVzZW50IGluIHRoZSByb290
IG9iamVjdCwgcGFyc2UgdGhlIEpTT04gZnVydGhlcgogICAgIC8vIGFjY29yZGluZyB0byB0aGUg
c3BlY2lmaWVkICdsaWNlbnNlIHJlbGVhc2UgYWNrbm93bGVkZ2VtZW50JyBmb3JtYXQuCi0gICAg
YXV0byBpdCA9IHJvb3QuZmluZCgia2lkcyIpOworICAgIGF1dG8gaXQgPSByb290LmZpbmQoImtp
ZHMiX3MpOwogICAgIGlmIChpdCA9PSByb290LmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZQogICAgICAgICBp
bmRleCArPSBDbGVhcktleTo6S2V5SURTaXplSW5CeXRlczsKICAgICB9CiAKLSAgICBvYmplY3Qt
PnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOworICAgIG9iamVjdC0+c2V0
QXJyYXkoImtpZHMiX3MsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25E
YXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CiAgICAga2V5SWRzLmFwcGVuZChq
c29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKICAgICByZXR1cm4ga2V5SWRzLnRh
a2UoKTsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZAogICAgIC8v
IEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJh
c2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5
IElEIHZhbHVlLgogICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRv
U3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgp
KSk7CiAKLSAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkp
OworICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiX3MsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsK
ICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CiAg
ICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKICAg
ICByZXR1cm4ga2V5SWRzLnRha2UoKTsKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZQogICAgICAgICAgICAgICAgIEFTU0VSVChrZXktPmlkKCkuc2l6ZSgpIDw9IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CiAgICAgICAgICAgICAgICAgYXJy
YXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoa2V5LT5pZCgpLmRhdGEoKSwg
a2V5LT5pZCgpLnNpemUoKSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcm9vdE9iamVj
dC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGFycmF5KSk7CisgICAgICAgICAgICByb290T2Jq
ZWN0LT5zZXRBcnJheSgia2lkcyJfcywgV1RGTW92ZShhcnJheSkpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gQ29weSB0aGUgSlNPTiBkYXRhIGludG8gYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IG9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXgg
M2U3N2FiNzk0Y2Q1MWFmNjJlMjcwZTM1YWNhYmNiYTlmOGY1MTBhOC4uY2Y1ZjAzNTFiZDU3YmQ1
MDgyMDhhZDE2OWNlMDM0NjFlODliZWJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKQEAgLTUyMyw3ICs1MjMsNyBAQCBib29sIEZvbnQ6OmlzUHJvYmFibHlP
bmx5VXNlZFRvUmVuZGVySWNvbnMoKSBjb25zdAogU3RyaW5nIEZvbnQ6OmRlc2NyaXB0aW9uKCkg
Y29uc3QKIHsKICAgICBpZiAob3JpZ2luKCkgPT0gT3JpZ2luOjpSZW1vdGUpCi0gICAgICAgIHJl
dHVybiAiW2N1c3RvbSBmb250XSI7CisgICAgICAgIHJldHVybiAiW2N1c3RvbSBmb250XSJfczsK
IAogICAgIHJldHVybiBwbGF0Zm9ybURhdGEoKS5kZXNjcmlwdGlvbigpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAppbmRleCAy
ODhiOGE1ZjAwMDA2ZWM3YjNlMWMyY2E1YWM2NmRhYWFjMWUyNTYzLi4xNTdkODMwOWFlM2I2NTYw
MTNkZDdkYWFlYzIxZjkyOGY5N2MxMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcApAQCAtMzUsNDIgKzM1LDQyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGNvbXBvc2l0ZU9w
ZXJhdG9yTmFtZXNbXSA9IHsKLSAgICAiY2xlYXIiLAotICAgICJjb3B5IiwKLSAgICAic291cmNl
LW92ZXIiLAotICAgICJzb3VyY2UtaW4iLAotICAgICJzb3VyY2Utb3V0IiwKLSAgICAic291cmNl
LWF0b3AiLAotICAgICJkZXN0aW5hdGlvbi1vdmVyIiwKLSAgICAiZGVzdGluYXRpb24taW4iLAot
ICAgICJkZXN0aW5hdGlvbi1vdXQiLAotICAgICJkZXN0aW5hdGlvbi1hdG9wIiwKLSAgICAieG9y
IiwKLSAgICAiZGFya2VyIiwKLSAgICAibGlnaHRlciIsCi0gICAgImRpZmZlcmVuY2UiCitzdGF0
aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBjb21wb3NpdGVPcGVyYXRvck5hbWVzW10gPSB7Cisg
ICAgImNsZWFyIl9zLAorICAgICJjb3B5Il9zLAorICAgICJzb3VyY2Utb3ZlciJfcywKKyAgICAi
c291cmNlLWluIl9zLAorICAgICJzb3VyY2Utb3V0Il9zLAorICAgICJzb3VyY2UtYXRvcCJfcywK
KyAgICAiZGVzdGluYXRpb24tb3ZlciJfcywKKyAgICAiZGVzdGluYXRpb24taW4iX3MsCisgICAg
ImRlc3RpbmF0aW9uLW91dCJfcywKKyAgICAiZGVzdGluYXRpb24tYXRvcCJfcywKKyAgICAieG9y
Il9zLAorICAgICJkYXJrZXIiX3MsCisgICAgImxpZ2h0ZXIiX3MsCisgICAgImRpZmZlcmVuY2Ui
X3MKIH07CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBibGVuZE9wZXJhdG9yTmFtZXNbXSA9
IHsKLSAgICAibm9ybWFsIiwKLSAgICAibXVsdGlwbHkiLAotICAgICJzY3JlZW4iLAotICAgICJk
YXJrZW4iLAotICAgICJsaWdodGVuIiwKLSAgICAib3ZlcmxheSIsCi0gICAgImNvbG9yLWRvZGdl
IiwKLSAgICAiY29sb3ItYnVybiIsCi0gICAgImhhcmQtbGlnaHQiLAotICAgICJzb2Z0LWxpZ2h0
IiwKLSAgICAiZGlmZmVyZW5jZSIsCi0gICAgImV4Y2x1c2lvbiIsCi0gICAgImh1ZSIsCi0gICAg
InNhdHVyYXRpb24iLAotICAgICJjb2xvciIsCi0gICAgImx1bWlub3NpdHkiLAotICAgICJwbHVz
LWRhcmtlciIsCi0gICAgInBsdXMtbGlnaHRlciIKK3N0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRl
cmFsIGJsZW5kT3BlcmF0b3JOYW1lc1tdID0geworICAgICJub3JtYWwiX3MsCisgICAgIm11bHRp
cGx5Il9zLAorICAgICJzY3JlZW4iX3MsCisgICAgImRhcmtlbiJfcywKKyAgICAibGlnaHRlbiJf
cywKKyAgICAib3ZlcmxheSJfcywKKyAgICAiY29sb3ItZG9kZ2UiX3MsCisgICAgImNvbG9yLWJ1
cm4iX3MsCisgICAgImhhcmQtbGlnaHQiX3MsCisgICAgInNvZnQtbGlnaHQiX3MsCisgICAgImRp
ZmZlcmVuY2UiX3MsCisgICAgImV4Y2x1c2lvbiJfcywKKyAgICAiaHVlIl9zLAorICAgICJzYXR1
cmF0aW9uIl9zLAorICAgICJjb2xvciJfcywKKyAgICAibHVtaW5vc2l0eSJfcywKKyAgICAicGx1
cy1kYXJrZXIiX3MsCisgICAgInBsdXMtbGlnaHRlciJfcwogfTsKIGNvbnN0IHVpbnQ4X3QgbnVt
Q29tcG9zaXRlT3BlcmF0b3JOYW1lcyA9IFdURl9BUlJBWV9MRU5HVEgoY29tcG9zaXRlT3BlcmF0
b3JOYW1lcyk7CiBjb25zdCB1aW50OF90IG51bUJsZW5kT3BlcmF0b3JOYW1lcyA9IFdURl9BUlJB
WV9MRU5HVEgoYmxlbmRPcGVyYXRvck5hbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5jcHAKaW5kZXggM2VjODAwNWYzOGI2
ZGU2YTE1NWMzMDVmNzU4YzViMDk4OWQ5ZTdkMS4uOGU3MzhmN2YwNGI3MDUxOWExNjdlYzJhOTk2
YjQ3Zjg4NzVmZWZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW5iYW5kR2VuZXJpY0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5jcHAKQEAgLTUwLDIyICs1MCwyMiBAQCBTdHJpbmcgSW5i
YW5kR2VuZXJpY0N1ZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKICAgICBvYmplY3QtPnNldERvdWJs
ZSgic3RhcnQiX3MsIG1fY3VlRGF0YS5tX3N0YXJ0VGltZS50b0RvdWJsZSgpKTsKICAgICBvYmpl
Y3QtPnNldERvdWJsZSgiZW5kIl9zLCBtX2N1ZURhdGEubV9lbmRUaW1lLnRvRG91YmxlKCkpOwog
Ci0gICAgY29uc3QgY2hhciogc3RhdHVzID0gIiI7CisgICAgQVNDSUlMaXRlcmFsIHN0YXR1cyA9
ICIiX3M7CiAgICAgc3dpdGNoIChtX2N1ZURhdGEubV9zdGF0dXMpIHsKICAgICBjYXNlIEdlbmVy
aWNDdWVEYXRhOjpTdGF0dXM6OlVuaW5pdGlhbGl6ZWQ6Ci0gICAgICAgIHN0YXR1cyA9ICJVbmlu
aXRpYWxpemVkIjsKKyAgICAgICAgc3RhdHVzID0gIlVuaW5pdGlhbGl6ZWQiX3M7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6UGFydGlhbDoKLSAgICAg
ICAgc3RhdHVzID0gIlBhcnRpYWwiOworICAgICAgICBzdGF0dXMgPSAiUGFydGlhbCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpDb21wbGV0ZToK
LSAgICAgICAgc3RhdHVzID0gIkNvbXBsZXRlIjsKKyAgICAgICAgc3RhdHVzID0gIkNvbXBsZXRl
Il9zOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoInN0YXR1
cyIsIHN0YXR1cyk7CisgICAgb2JqZWN0LT5zZXRTdHJpbmcoInN0YXR1cyJfcywgc3RhdHVzKTsK
IAogICAgIGlmICghbV9jdWVEYXRhLm1faWQuaXNFbXB0eSgpKQotICAgICAgICBvYmplY3QtPnNl
dFN0cmluZygiaWQiLCBtX2N1ZURhdGEubV9pZCk7CisgICAgICAgIG9iamVjdC0+c2V0U3RyaW5n
KCJpZCJfcywgbV9jdWVEYXRhLm1faWQpOwogCiAgICAgaWYgKG1fY3VlRGF0YS5tX2xpbmUgPiAw
KQogICAgICAgICBvYmplY3QtPnNldERvdWJsZSgibGluZSJfcywgbV9jdWVEYXRhLm1fbGluZSk7
CkBAIC03NywxOSArNzcsMTkgQEAgU3RyaW5nIEluYmFuZEdlbmVyaWNDdWU6OnRvSlNPTlN0cmlu
ZygpIGNvbnN0CiAgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJwb3NpdGlvbiJfcywgbV9jdWVE
YXRhLm1fcG9zaXRpb24pOwogCiAgICAgaWYgKG1fY3VlRGF0YS5tX2FsaWduICE9IEdlbmVyaWND
dWVEYXRhOjpBbGlnbm1lbnQ6Ok5vbmUpIHsKLSAgICAgICAgY29uc3QgY2hhciogYWxpZ24gPSAi
IjsKKyAgICAgICAgQVNDSUlMaXRlcmFsIGFsaWduID0gIiJfczsKICAgICAgICAgc3dpdGNoICht
X2N1ZURhdGEubV9hbGlnbikgewogICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1l
bnQ6OlN0YXJ0OgotICAgICAgICAgICAgYWxpZ24gPSAiU3RhcnQiOworICAgICAgICAgICAgYWxp
Z24gPSAiU3RhcnQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZW5lcmlj
Q3VlRGF0YTo6QWxpZ25tZW50OjpNaWRkbGU6Ci0gICAgICAgICAgICBhbGlnbiA9ICJNaWRkbGUi
OworICAgICAgICAgICAgYWxpZ24gPSAiTWlkZGxlIl9zOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6RW5kOgotICAgICAgICAgICAg
YWxpZ24gPSAiRW5kIjsKKyAgICAgICAgICAgIGFsaWduID0gIkVuZCJfczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6Ok5vbmU6Ci0g
ICAgICAgICAgICBhbGlnbiA9ICJOb25lIjsKKyAgICAgICAgICAgIGFsaWduID0gIk5vbmUiX3M7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBvYmplY3QtPnNldFN0cmlu
ZygiYWxpZ24iX3MsIGFsaWduKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA2ZjQ5YWYwNDZkMTI0NjNhNGRlZmE5ZjE0ODlhNzE1
MzJhOGRhZjhhLi5lZGQ5MzEwYjU2YjBhYzg4OWEyYzkzMjExY2FiMDhhMzRhY2Q3NDg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBA
IC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcGxheSgpIGZpbmFsIHsgfQogICAg
IHZvaWQgcGF1c2UoKSBmaW5hbCB7IH0KIAotICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJOdWxsTWVkaWFQbGF5ZXIiOyB9CisgICAgU3RyaW5nIGVu
Z2luZURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk51bGxNZWRpYVBsYXllciJf
czsgfQogCiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG51bGxwdHI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlw
dGlvblV0aWxpdGllcy5jcHAKaW5kZXggNjJkNDkxZDI4Nzk0NjE3NTA3ODAxNGEwOTQ1YjI2MjI2
ZTJkZWJmMC4uMDNiZWZmOTkzN2FmNjQxYzg3OWM5YTZkOGMzMTRjMWYwMTU3N2Y3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1h
dERlc2NyaXB0aW9uVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCkBAIC0x
MDIsMTQgKzEwMiwxNCBAQCBTdHJpbmcgY29kZWNGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3Jt
YXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKICAgICAgICAgewogICAgICAgICAg
ICAgYXV0byBzYW1wbGVFeHRlbnNpb25zRGljdCA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJl
Zj4oUEFMOjpDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGZvcm1hdERlc2NyaXB0aW9u
LCBQQUw6OmdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fU2FtcGxl
RGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcygpKSk7CiAgICAgICAgICAgICBpZiAoIXNhbXBsZUV4
dGVuc2lvbnNEaWN0KQotICAgICAgICAgICAgICAgIHJldHVybiAiYXZjMSI7CisgICAgICAgICAg
ICAgICAgcmV0dXJuICJhdmMxIl9zOwogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25z
ID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRl
bnNpb25zRGljdCwgQ0ZTVFIoImF2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRl
bnNpb25zKQotICAgICAgICAgICAgICAgIHJldHVybiAiYXZjMSI7CisgICAgICAgICAgICAgICAg
cmV0dXJuICJhdmMxIl9zOwogICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAg
ICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZUFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNv
bmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIpOwogICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQot
ICAgICAgICAgICAgICAgIHJldHVybiAiYXZjMSI7CisgICAgICAgICAgICAgICAgcmV0dXJuICJh
dmMxIl9zOwogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0cmlu
ZygqcGFyYW1ldGVycyk7CiAgICAgICAgIH0KICAgICBjYXNlIGtDTVZpZGVvQ29kZWNUeXBlX0hF
VkM6CkBAIC0xMTgsMTQgKzExOCwxNCBAQCBTdHJpbmcgY29kZWNGcm9tRm9ybWF0RGVzY3JpcHRp
b24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKICAgICAgICAgewog
ICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zRGljdCA9IHN0YXRpY19jYXN0PENGRGlj
dGlvbmFyeVJlZj4oUEFMOjpDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGZvcm1hdERl
c2NyaXB0aW9uLCBQQUw6OmdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNp
b25fU2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcygpKSk7CiAgICAgICAgICAgICBpZiAo
IXNhbXBsZUV4dGVuc2lvbnNEaWN0KQotICAgICAgICAgICAgICAgIHJldHVybiAiaHZjMSI7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuICJodmMxIl9zOwogICAgICAgICAgICAgYXV0byBzYW1wbGVF
eHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShz
YW1wbGVFeHRlbnNpb25zRGljdCwgQ0ZTVFIoImh2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFz
YW1wbGVFeHRlbnNpb25zKQotICAgICAgICAgICAgICAgIHJldHVybiAiaHZjMSI7CisgICAgICAg
ICAgICAgICAgcmV0dXJuICJodmMxIl9zOwogICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9u
UmVjb3JkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CiAg
ICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlv
blJlY29yZChrQ01WaWRlb0NvZGVjVHlwZV9IRVZDLCBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVy
KTsKICAgICAgICAgICAgIGlmICghcGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICByZXR1cm4g
Imh2YzEiOworICAgICAgICAgICAgICAgIHJldHVybiAiaHZjMSJfczsKICAgICAgICAgICAgIHJl
dHVybiBjcmVhdGVIRVZDQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKCpwYXJhbWV0ZXJzKTsKICAgICAg
ICAgfQogICAgIGNhc2Uga0NNVmlkZW9Db2RlY1R5cGVfRG9sYnlWaXNpb25IRVZDOgpAQCAtMTMz
LDQzICsxMzMsNDMgQEAgU3RyaW5nIGNvZGVjRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0
RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCiAgICAgICAgIHsKICAgICAgICAgICAg
IGF1dG8gc2FtcGxlRXh0ZW5zaW9uc0RpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+
KFBBTDo6Q01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbihmb3JtYXREZXNjcmlwdGlvbiwg
UEFMOjpnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURl
c2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMoKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRl
bnNpb25zRGljdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gImR2aDEiOworICAgICAgICAgICAg
ICAgIHJldHVybiAiZHZoMSJfczsKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9
IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5z
aW9uc0RpY3QsIENGU1RSKCJkdmNDIikpKTsKICAgICAgICAgICAgIGlmICghc2FtcGxlRXh0ZW5z
aW9ucykKLSAgICAgICAgICAgICAgICByZXR1cm4gImR2aDEiOworICAgICAgICAgICAgICAgIHJl
dHVybiAiZHZoMSJfczsKICAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4dGVuc2lvbnMpOwogICAgICAgICAgICAg
YXV0byBwYXJhbWV0ZXJzID0gcGFyc2VEb1ZpRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29u
ZmlndXJhdGlvblJlY29yZEJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuICJkdmgxIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gImR2
aDEiX3M7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlRG9WaUNvZGVjUGFyYW1ldGVyc1N0cmlu
ZygqcGFyYW1ldGVycyk7CiAgICAgICAgIH0KICAgICBjYXNlIGtDTVZpZGVvQ29kZWNUeXBlX01Q
RUc0VmlkZW86Ci0gICAgICAgIHJldHVybiAibXA0diI7CisgICAgICAgIHJldHVybiAibXA0diJf
czsKICAgICBjYXNlIGtDTVZpZGVvQ29kZWNUeXBlX1ZQOToKLSAgICAgICAgcmV0dXJuICJ2cDA5
IjsKKyAgICAgICAgcmV0dXJuICJ2cDA5Il9zOwogICAgIGNhc2Uga0F1ZGlvRm9ybWF0QUMzOgot
ICAgICAgICByZXR1cm4gImFjLTMiOworICAgICAgICByZXR1cm4gImFjLTMiX3M7CiAgICAgY2Fz
ZSBrQXVkaW9Gb3JtYXRNUEVHNEFBQzoKLSAgICAgICAgcmV0dXJuICJtcDRhLjQwLjIiOworICAg
ICAgICByZXR1cm4gIm1wNGEuNDAuMiJfczsKICAgICBjYXNlIGtBdWRpb0Zvcm1hdE1QRUc0QUFD
X0hFOgotICAgICAgICByZXR1cm4gIm1wNGEuNDAuNSI7CisgICAgICAgIHJldHVybiAibXA0YS40
MC41Il9zOwogICAgIGNhc2Uga0F1ZGlvRm9ybWF0TVBFRzRBQUNfSEVfVjI6Ci0gICAgICAgIHJl
dHVybiAibXA0YS40MC4yOSI7CisgICAgICAgIHJldHVybiAibXA0YS40MC4yOSJfczsKICAgICBj
YXNlIGtBdWRpb0Zvcm1hdE1QRUc0QUFDX0xEOgotICAgICAgICByZXR1cm4gIm1wNGEuNDAuMjMi
OworICAgICAgICByZXR1cm4gIm1wNGEuNDAuMjMiX3M7CiAgICAgY2FzZSBrQXVkaW9Gb3JtYXRN
UEVHNEFBQ19FTEQ6Ci0gICAgICAgIHJldHVybiAibXA0YS40MC4zOSI7CisgICAgICAgIHJldHVy
biAibXA0YS40MC4zOSJfczsKICAgICBjYXNlIGtBdWRpb0Zvcm1hdEZMQUM6Ci0gICAgICAgIHJl
dHVybiAiZmxhYyI7CisgICAgICAgIHJldHVybiAiZmxhYyJfczsKICAgICBjYXNlIGtBdWRpb0Zv
cm1hdE9wdXM6Ci0gICAgICAgIHJldHVybiAib3B1cyI7CisgICAgICAgIHJldHVybiAib3B1cyJf
czsKICAgICBjYXNlIGtBdWRpb0Zvcm1hdEVuaGFuY2VkQUMzOgogICAgIGNhc2UgJ2VjKzMnOgog
ICAgIGNhc2UgJ3FlYzMnOgogICAgIGNhc2UgJ2NlLTMnOgotICAgICAgICByZXR1cm4gImVjLTMi
OworICAgICAgICByZXR1cm4gImVjLTMiX3M7CiAgICAgY2FzZSAnZHRzICc6Ci0gICAgICAgIHJl
dHVybiAiZHRzIjsKKyAgICAgICAgcmV0dXJuICJkdHMiX3M7CiAgICAgfQogCiAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBiODY2YzcxNzE4Y2JmYzU0NGFlNTcy
Nzk1ZjNhNDQzNWVkYzk4MmVjLi5kYWVmY2I3NjczZWZkM2Y4ZjA4Y2IwODNkZjhiNzJhN2VkZDk0
ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMxMDIsNyArMzEwMiw3IEBAIHZvaWQgR3JhcGhpY3NM
YXllckNBOjp1cGRhdGVBbmltYXRpb25zKCkKICAgICBhdXRvIGN1cnJlbnRUaW1lID0gU2Vjb25k
cyhDQUN1cnJlbnRNZWRpYVRpbWUoKSk7CiAKICAgICBhdXRvIGFkZEFuaW1hdGlvbkdyb3VwID0g
WyZdKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgVmVjdG9yPFJlZlB0cjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPj4mIGFuaW1hdGlvbnMpIHsKLSAgICAgICAgYXV0byBjYUFuaW1hdGlv
bkdyb3VwID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpH
cm91cCwgIiIpOworICAgICAgICBhdXRvIGNhQW5pbWF0aW9uR3JvdXAgPSBjcmVhdGVQbGF0Zm9y
bUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246Okdyb3VwLCBlbXB0eVN0cmluZygpKTsK
ICAgICAgICAgY2FBbmltYXRpb25Hcm91cC0+c2V0RHVyYXRpb24oaW5maW5pdGVEdXJhdGlvbik7
CiAgICAgICAgIGNhQW5pbWF0aW9uR3JvdXAtPnNldEFuaW1hdGlvbnMoYW5pbWF0aW9ucyk7CiAK
QEAgLTQ4MjAsMjIgKzQ4MjAsMjIgQEAgc3RhdGljIFN0cmluZyBhbmltYXRlZFByb3BlcnR5SURB
c1N0cmluZyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCiAgICAgY2FzZSBBbmltYXRlZFBy
b3BlcnR5U2NhbGU6CiAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5Um90YXRlOgogICAgIGNhc2Ug
QW5pbWF0ZWRQcm9wZXJ0eVRyYW5zZm9ybToKLSAgICAgICAgcmV0dXJuICJ0cmFuc2Zvcm0iOwor
ICAgICAgICByZXR1cm4gInRyYW5zZm9ybSJfczsKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlP
cGFjaXR5OgotICAgICAgICByZXR1cm4gIm9wYWNpdHkiOworICAgICAgICByZXR1cm4gIm9wYWNp
dHkiX3M7CiAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5QmFja2dyb3VuZENvbG9yOgotICAgICAg
ICByZXR1cm4gImJhY2tncm91bmQtY29sb3IiOworICAgICAgICByZXR1cm4gImJhY2tncm91bmQt
Y29sb3IiX3M7CiAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5RmlsdGVyOgotICAgICAgICByZXR1
cm4gImZpbHRlciI7CisgICAgICAgIHJldHVybiAiZmlsdGVyIl9zOwogI2lmIEVOQUJMRShGSUxU
RVJTX0xFVkVMXzIpCiAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0
ZXI6Ci0gICAgICAgIHJldHVybiAiYmFja2Ryb3AtZmlsdGVyIjsKKyAgICAgICAgcmV0dXJuICJi
YWNrZHJvcC1maWx0ZXIiX3M7CiAjZW5kaWYKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlJbnZh
bGlkOgotICAgICAgICByZXR1cm4gImludmFsaWQiOworICAgICAgICByZXR1cm4gImludmFsaWQi
X3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAiIjsKKyAg
ICByZXR1cm4gIiJfczsKIH0KIAogVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IEdy
YXBoaWNzTGF5ZXJDQTo6YWNjZWxlcmF0ZWRBbmltYXRpb25zRm9yVGVzdGluZygpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCmluZGV4IGU2Y2UyZmI5NzI0N2E2Yjg2YzA5YjFhZDM2MTcwMWMyZWMzZTg2
MjUuLjQ2ODliMTA2NGU0ODNmNmRlOWYwNjc2YWU0NjdkNzQ1NmNjNjY0YWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFBERkRvY3VtZW50SW1hZ2U6On5QREZEb2N1bWVudElt
YWdlKCkgPSBkZWZhdWx0OwogCiBTdHJpbmcgUERGRG9jdW1lbnRJbWFnZTo6ZmlsZW5hbWVFeHRl
bnNpb24oKSBjb25zdAogewotICAgIHJldHVybiAicGRmIjsKKyAgICByZXR1cm4gInBkZiJfczsK
IH0KIAogRmxvYXRTaXplIFBERkRvY3VtZW50SW1hZ2U6OnNpemUoSW1hZ2VPcmllbnRhdGlvbikg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZQOVV0aWxpdGllc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KaW5kZXggODQyMjEwYjM3MTI3ZmU4ZWVlZTlhY2My
M2NjYzk2YzA0ZDhjNTdhMS4uNDAxYTUyZTNmZGRjZjVmNGVmMWRjYjA0M2Y5YTBjNzM4MDI1M2Fi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5
VXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0KQEAgLTU5Nyw3ICs1OTcsNyBAQCBSZWY8VmlkZW9J
bmZvPiBjcmVhdGVWaWRlb0luZm9Gcm9tVlA5SGVhZGVyUGFyc2VyKGNvbnN0IHZwOV9wYXJzZXI6
OlZwOUhlYWRlclBhcgogewogICAgIFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkIHJlY29yZDsK
IAotICAgIHJlY29yZC5jb2RlY05hbWUgPSAidnAwOSI7CisgICAgcmVjb3JkLmNvZGVjTmFtZSA9
ICJ2cDA5Il9zOwogICAgIHJlY29yZC5wcm9maWxlID0gcGFyc2VyLnByb2ZpbGUoKTsKICAgICAv
LyBDb3JlTWVkaWEgZG9lcyBuYXQgY2FyZSBhYm91dCB0aGUgVlA5IGNvZGVjIGxldmVsOyBoYXJk
LWNvZGUgdG8gTGV2ZWwgMS4wIGhlcmU6CiAgICAgcmVjb3JkLmxldmVsID0gMTA7CkBAIC02OTMs
NyArNjkzLDcgQEAgc3RkOjpvcHRpb25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhGcmFtZUhl
YWRlcihjb25zdCB1aW50OF90KiBmcmFtZURhdGEsIHNpemUKIFJlZjxWaWRlb0luZm8+IGNyZWF0
ZVZpZGVvSW5mb0Zyb21WUDhIZWFkZXIoY29uc3QgVlA4RnJhbWVIZWFkZXImIGhlYWRlciwgY29u
c3Qgd2VibTo6RWxlbWVudDxDb2xvdXI+JiBjb2xvcikKIHsKICAgICBWUENvZGVjQ29uZmlndXJh
dGlvblJlY29yZCByZWNvcmQ7Ci0gICAgcmVjb3JkLmNvZGVjTmFtZSA9ICJ2cDA4IjsKKyAgICBy
ZWNvcmQuY29kZWNOYW1lID0gInZwMDgiX3M7CiAgICAgcmVjb3JkLnByb2ZpbGUgPSAwOwogICAg
IHJlY29yZC5sZXZlbCA9IDEwOwogICAgIHJlY29yZC5iaXREZXB0aCA9IDg7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0
ZVdlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9U
cmFja1ByaXZhdGVXZWJNLmNwcAppbmRleCA1NzdiMTEwMDBiZTEzNTdmMjM1YTkxN2FmNDc1NWFi
YTdkZGFkOGIwLi4wNWQ1YjkwNTcwZjI4ZmFiNGIyODJiNmE3MmMzYzE1M2JmZjNmZmYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNr
UHJpdmF0ZVdlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKQEAgLTk3LDEwICs5NywxMCBAQCBTdHJpbmcg
VmlkZW9UcmFja1ByaXZhdGVXZWJNOjpjb2RlYygpIGNvbnN0CiAKICAgICAvLyBUT0RPOiBTcGVj
aWZpYyBjb2RlYyBwYXJhbWV0ZXJzIGFyZSBwYXJzZWQgb3V0IG9mIHRoZSBzYW1wbGUgaGVhZGVy
OyB0aGV5IGFyZW4ndCB0eXBpY2FsbHkgY29udGFpbmVkIGluIHRoZSBXZWJNIFRyYWNrIGVsZW1l
bnQuCiAgICAgaWYgKGNvZGVjSUQgPT0gIlZfVlA5IikKLSAgICAgICAgcmV0dXJuICJ2cDA5IjsK
KyAgICAgICAgcmV0dXJuICJ2cDA5Il9zOwogCiAgICAgaWYgKGNvZGVjSUQgPT0gIlZfVlA4IikK
LSAgICAgICAgcmV0dXJuICJ2cDA4IjsKKyAgICAgICAgcmV0dXJuICJ2cDA4Il9zOwogCiAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCA0MThlYzBkNzEzMjhiZGY5MWM0
NWYyMjQ0NDA0N2YxODAwZDQwOTkyLi45YjkwMWM0N2NhY2I4NDE5NWRjNjliY2Q3NTFiZmNhMGQ2
YWZmYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVCbGVuZC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgVGV4dFN0cmVhbSYgRkVCbGVuZDo6
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgRmlsdGVyUmVwcmVzZW50YXRp
b24KICAgICB0cyA8PCBpbmRlbnQgPDwgIltmZUJsZW5kIjsKICAgICBGaWx0ZXJFZmZlY3Q6OmV4
dGVybmFsUmVwcmVzZW50YXRpb24odHMsIHJlcHJlc2VudGF0aW9uKTsKIAotICAgIHRzIDw8ICIg
bW9kZT1cIiIgPDwgKG1fbW9kZSA9PSBCbGVuZE1vZGU6Ok5vcm1hbCA/ICJub3JtYWwiIDogY29t
cG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyLCBtX21vZGUp
KTsKKyAgICB0cyA8PCAiIG1vZGU9XCIiIDw8IChtX21vZGUgPT0gQmxlbmRNb2RlOjpOb3JtYWwg
PyAibm9ybWFsIl9zIDogY29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZU9wZXJhdG9yOjpT
b3VyY2VPdmVyLCBtX21vZGUpKTsKIAogICAgIHRzIDw8ICJcIl1cbiI7CiAgICAgcmV0dXJuIHRz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggZDkyMDNmYzgxYmNh
OTM0YTE0YjM2ZWFiY2NlY2YzYjJjZDMxNDY1OS4uY2FhYWI2ZmM1OThiMzkwZWE1NDUzNGFhZTA5
OGM0OGM5YzkyNDY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBA
IC0zNjYsMTEgKzM2NiwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0
ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaQogICAgICAgICBzZXRD
b250ZXh0QXR0cmlidXRlcyhhdHRycyk7CiAgICAgfQogICAgIGlmIChhdHRycy5hbnRpYWxpYXMg
JiYgIW1faXNGb3JXZWJHTDIpIHsKLSAgICAgICAgaWYgKCFzdXBwb3J0c0V4dGVuc2lvbigiR0xf
QU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSkgeworICAgICAgICBpZiAoIXN1cHBvcnRz
RXh0ZW5zaW9uKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJfcykpIHsKICAgICAg
ICAgICAgIGF0dHJzLmFudGlhbGlhcyA9IGZhbHNlOwogICAgICAgICAgICAgc2V0Q29udGV4dEF0
dHJpYnV0ZXMoYXR0cnMpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGVuc3VyZUV4dGVu
c2lvbkVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAg
ICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZSJfcyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUXVpY2tMb29rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29r
LmgKaW5kZXggMGE2ZWZhZWYzZTg2MWVmNTlmZDQyODljZWY5MTFjNzc4ZGE3MGNhMS4uMjY2NmVl
OGMxYTE3OGNjYTE1NjZhN2Y4NDc5OWVhODg4MGNjNjAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9RdWlja0xvb2suaApAQCAtNDEsNiArNDEsNiBAQCBXRUJDT1JFX0VYUE9SVCBSZXRh
aW5QdHI8TlNVUkxSZXF1ZXN0PiByZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5T
VVJMCiBXRUJDT1JFX0VYUE9SVCBib29sIGlzUXVpY2tMb29rUHJldmlld1VSTChjb25zdCBVUkwm
KTsKIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlGaWxlRm9yUXVpY2tM
b29rKE5TU3RyaW5nICpmaWxlTmFtZSk7CiAKLWV4dGVybiBjb25zdCBjaGFyKiBRTFByZXZpZXdQ
cm90b2NvbDsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBRTFByZXZpZXdQcm90b2NvbCA9ICJ4LWFw
cGxlLXFsLWlkIl9zOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1F1aWNrTG9vay5tbQppbmRleCBlM2MzMDdjODFlMWI5YzdmMjlmMDNlYjQzMjNh
ODFmM2E4OWU5MWVmLi4yZmEyNzY5ZDkzMTMwNDgwMjJjMjI5MWRjZTNlNTc5ODc4MmI0MTcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KQEAgLTM4LDggKzM4LDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBRTFByZXZpZXdQcm90b2Nv
bCA9ICJ4LWFwcGxlLXFsLWlkIjsKLQogTlNTZXQgKlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVU
eXBlc1NldCgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1NldD4+
IHNldCA9IFBBTDo6c29mdExpbmtfUXVpY2tMb29rX1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVU
eXBlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCAwMDc0ZDE0NDk1
ZTljZjEwY2UwNTRiOWVmMDliNDFiNzdkNmI4NmRlLi5hYTBlODQyYzY0NTg4NjBjNGE1OGJhY2Y0
ZjE3MTY5ZDA1OGYxZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAt
MTYxLDcgKzE2MSw3IEBAIFN0cmluZyBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpoYXNoU3Ry
aW5nV2l0aFNhbHQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyCiAgICAgU0hBMTo6RGlnZXN0
IGRpZ2VzdDsKICAgICBzaGExLmNvbXB1dGVIYXNoKGRpZ2VzdCk7CiAgICAgCi0gICAgcmV0dXJu
IFNIQTE6OmhleERpZ2VzdChkaWdlc3QpLmRhdGEoKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgU0hB
MTo6aGV4RGlnZXN0KGRpZ2VzdCkuZGF0YSgpIH07CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6YWRkRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01v
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNw
cAppbmRleCAyYzdjNDFiZDY5NmZmMWY5YmFiMzgzODFhNGI1ODM4NTY4YjE4YTRlLi44M2JjOWVl
MjBkOGM2YjQ0MzBlNWY2NDkzZjQ1YzJmMWQ1NTE0OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKQEAgLTk4LDcgKzk4LDcgQEAg
UmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6UmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcihSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGkKIAogdm9pZCBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVy
OjpmaXJlKCkKIHsKLSAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwobWFrZVVu
aXF1ZTxSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrPigiUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9j
ayIsIFJUQ0RhdGFDaGFubmVsSW5pdCgpKSk7CisgICAgbV9jbGllbnQtPmRpZEFkZFJlbW90ZURh
dGFDaGFubmVsKG1ha2VVbmlxdWU8UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jaz4oIlJUQ0RhdGFD
aGFubmVsSGFuZGxlck1vY2siX3MsIFJUQ0RhdGFDaGFubmVsSW5pdCgpKSk7CiB9CiAKIERhdGFD
aGFubmVsU3RhdGVOb3RpZmllcjo6RGF0YUNoYW5uZWxTdGF0ZU5vdGlmaWVyKFJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNsaWVudCogY2xpZW50LCBSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29udHJvbGxl
ck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29udHJv
bGxlck1vY2suY3BwCmluZGV4IDU5NmJlZWI2MTMzYTA2YmIzOGU1M2NmNTc3YTM4OTljYWRjZGUz
ZGMuLjMwMDQ3Zjk3MWY3MTQ0OWE3N2M5YWQzZTlhYWUzNGE2ZDMxNDBmZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhcnNDb250cm9sbGVy
TW9jay5jcHAKQEAgLTcwLDE5ICs3MCwxOSBAQCB2b2lkIFNjcm9sbGJhcnNDb250cm9sbGVyTW9j
azo6d2lsbFJlbW92ZUhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYQogCiB2
b2lkIFNjcm9sbGJhcnNDb250cm9sbGVyTW9jazo6bW91c2VFbnRlcmVkQ29udGVudEFyZWEoKQog
ewotICAgIG1fbG9nZ2VyKCJtb3VzZUVudGVyZWRDb250ZW50QXJlYSIpOworICAgIG1fbG9nZ2Vy
KCJtb3VzZUVudGVyZWRDb250ZW50QXJlYSJfcyk7CiAgICAgU2Nyb2xsYmFyc0NvbnRyb2xsZXI6
Om1vdXNlRW50ZXJlZENvbnRlbnRBcmVhKCk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyc0NvbnRyb2xs
ZXJNb2NrOjptb3VzZU1vdmVkSW5Db250ZW50QXJlYSgpCiB7Ci0gICAgbV9sb2dnZXIoIm1vdXNl
TW92ZWRJbkNvbnRlbnRBcmVhIik7CisgICAgbV9sb2dnZXIoIm1vdXNlTW92ZWRJbkNvbnRlbnRB
cmVhIl9zKTsKICAgICBTY3JvbGxiYXJzQ29udHJvbGxlcjo6bW91c2VNb3ZlZEluQ29udGVudEFy
ZWEoKTsKIH0KIAogdm9pZCBTY3JvbGxiYXJzQ29udHJvbGxlck1vY2s6Om1vdXNlRXhpdGVkQ29u
dGVudEFyZWEoKQogewotICAgIG1fbG9nZ2VyKCJtb3VzZUV4aXRlZENvbnRlbnRBcmVhIik7Cisg
ICAgbV9sb2dnZXIoIm1vdXNlRXhpdGVkQ29udGVudEFyZWEiX3MpOwogICAgIFNjcm9sbGJhcnND
b250cm9sbGVyOjptb3VzZUV4aXRlZENvbnRlbnRBcmVhKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKaW5kZXggZTk0M2Y4NmQ4YjhhNGJmMTNhNDQw
OGI2YTRlNGRkMDcyMDE2ZmM2NC4uNjA4ODBhMDE1ZWUzZDE1NTk4NGEwMGMyMjNlYWJlNTE4MTg0
MDc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAg
LTY0LDggKzY0LDggQEAgdm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0ZXJN
ZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3QKIHN0YXRpYyBjb25zdCBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgbWltZVR5cGVDYWNoZSgpCiB7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGNhY2hlID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4gewotICAgICAgICAidmlkZW8vbW9jayIsCi0gICAgICAgICJh
dWRpby9tb2NrIiwKKyAgICAgICAgInZpZGVvL21vY2siX3MsCisgICAgICAgICJhdWRpby9tb2Nr
Il9zLAogICAgIH07CiAgICAgcmV0dXJuIGNhY2hlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDA5OGE3
NDJlNzVlNWU4ZTEwNzYxN2U3ZDgxMTRiZGZlZmY3ZTlhMTcuLjFlNTlkNGQxYTZiZmFlYzc0ZGZl
MzZkNzg0OTkwNGY5NDE0ZjVmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTU5LDEzICs1OSwxMyBAQCBz
dGF0aWMgY29uc3QgaW50IGh0dHBQYXJ0aWFsQ29udGVudCA9IDIwNjsKIHN0YXRpYyBjb25zdCBp
bnQgaHR0cE5vdEFsbG93ZWQgPSA0MDM7CiBzdGF0aWMgY29uc3QgaW50IGh0dHBSZXF1ZXN0ZWRS
YW5nZU5vdFNhdGlzZmlhYmxlID0gNDE2Owogc3RhdGljIGNvbnN0IGludCBodHRwSW50ZXJuYWxF
cnJvciA9IDUwMDsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRwT0tUZXh0ID0gIk9LIjsKLXN0YXRp
YyBjb25zdCBjaGFyKiBodHRwUGFydGlhbENvbnRlbnRUZXh0ID0gIlBhcnRpYWwgQ29udGVudCI7
Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0cE5vdEFsbG93ZWRUZXh0ID0gIk5vdCBBbGxvd2VkIjsK
LXN0YXRpYyBjb25zdCBjaGFyKiBodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZVRleHQg
PSAiUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZSI7Ci1zdGF0aWMgY29uc3QgY2hhciog
aHR0cEludGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciI7CitzdGF0aWMg
Y29uc3RleHByIGF1dG8gaHR0cE9LVGV4dCA9ICJPSyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBodHRwUGFydGlhbENvbnRlbnRUZXh0ID0gIlBhcnRpYWwgQ29udGVudCJfczsKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBodHRwTm90QWxsb3dlZFRleHQgPSAiTm90IEFsbG93ZWQiX3M7CitzdGF0
aWMgY29uc3RleHByIGF1dG8gaHR0cFJlcXVlc3RlZFJhbmdlTm90U2F0aXNmaWFibGVUZXh0ID0g
IlJlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUiX3M7CitzdGF0aWMgY29uc3RleHByIGF1
dG8gaHR0cEludGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciJfczsKIAot
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiA9ICJXZWJL
aXRCbG9iUmVzb3VyY2UiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHdlYktpdEJsb2JSZXNvdXJj
ZURvbWFpbiA9ICJXZWJLaXRCbG9iUmVzb3VyY2UiX3M7CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KIC8vIEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyCkBAIC0xMTQsNyArMTE0LDcgQEAg
dm9pZCBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5
bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmQKIHsKICAgICAvLyBXZSBjYW5ub3QgaGFuZGxlIHRoZSBz
aXplIHRoYXQgaXMgbW9yZSB0aGFuIG1heGltdW0gaW50ZWdlci4KICAgICBpZiAocmVzcG9uc2Uu
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBJTlRfTUFYKSB7Ci0gICAgICAgIG1fZXJyb3IgPSBS
ZXNvdXJjZUVycm9yKHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiwgc3RhdGljX2Nhc3Q8aW50PihC
bG9iUmVzb3VyY2VIYW5kbGU6OkVycm9yOjpOb3RSZWFkYWJsZUVycm9yKSwgcmVzcG9uc2UudXJs
KCksICJGaWxlIGlzIHRvbyBsYXJnZSIpOworICAgICAgICBtX2Vycm9yID0gUmVzb3VyY2VFcnJv
cih3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4sIHN0YXRpY19jYXN0PGludD4oQmxvYlJlc291cmNl
SGFuZGxlOjpFcnJvcjo6Tm90UmVhZGFibGVFcnJvciksIHJlc3BvbnNlLnVybCgpLCAiRmlsZSBp
cyB0b28gbGFyZ2UiX3MpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+
IEJsb2JSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQXN5bmMoQmxvYkRhdGEqIGJsb2JEYXRhLCBjb25z
CiB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShCbG9i
RGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8dWludDhfdD4m
IGRhdGEpCiB7CiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1ZXN0
Lmh0dHBNZXRob2QoKSwgImdldCIpKSB7Ci0gICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcih3
ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4sIHN0YXRpY19jYXN0PGludD4oRXJyb3I6Ok1ldGhvZE5v
dEFsbG93ZWQpLCByZXNwb25zZS51cmwoKSwgIlJlcXVlc3QgbWV0aG9kIG11c3QgYmUgR0VUIik7
CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcih3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4s
IHN0YXRpY19jYXN0PGludD4oRXJyb3I6Ok1ldGhvZE5vdEFsbG93ZWQpLCByZXNwb25zZS51cmwo
KSwgIlJlcXVlc3QgbWV0aG9kIG11c3QgYmUgR0VUIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlS
ZXNwb25zZU9uRXJyb3IoKQogewogICAgIEFTU0VSVChtX2Vycm9yQ29kZSAhPSBFcnJvcjo6Tm9F
cnJvcik7CiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKGZpcnN0UmVxdWVzdCgpLnVy
bCgpLCAidGV4dC9wbGFpbiIsIDAsIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlKGZpcnN0UmVxdWVzdCgpLnVybCgpLCAidGV4dC9wbGFpbiJfcywgMCwgU3RyaW5nKCkp
OwogICAgIHN3aXRjaCAobV9lcnJvckNvZGUpIHsKICAgICBjYXNlIEVycm9yOjpSYW5nZUVycm9y
OgogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShodHRwUmVxdWVzdGVkUmFuZ2VO
b3RTYXRpc2ZpYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RGF0YVVSTERlY29kZXIuY3BwCmluZGV4IDkzMWUyY2NkYTYyY2JkMjIzZGUyNDU2ODlhNzgxOWYx
ZjhjMmZlNDIuLmFmNTNkNjQxOGRjNTE2NTJmMmExMDc5ODU3ZWUzNzhmY2EzODQwZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
CkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgICAgICBhdXRvIG1lZGlhVHlwZSA9IChp
c0Jhc2U2NCA/IGhlYWRlci5zdWJzdHJpbmcoMCwgbWVkaWFUeXBlRW5kKSA6IGhlYWRlcikudG9T
dHJpbmcoKTsKICAgICAgICAgbWVkaWFUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQ
U3BhY2VzKG1lZGlhVHlwZSk7CiAgICAgICAgIGlmIChtZWRpYVR5cGUuc3RhcnRzV2l0aCgnOycp
KQotICAgICAgICAgICAgbWVkaWFUeXBlLmluc2VydCgidGV4dC9wbGFpbiIsIDApOworICAgICAg
ICAgICAgbWVkaWFUeXBlLmluc2VydCgidGV4dC9wbGFpbiJfcywgMCk7CiAKICAgICAgICAgaWYg
KHNob3VsZFJlbW92ZUZyYWdtZW50SWRlbnRpZmllcihtZWRpYVR5cGUpKQogICAgICAgICAgICAg
dXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCBkNDM1Y2ViZjRkMGY1NWZkMDZkZThj
MDNlMWIzYTZmMTY0ZmNmMzQ5Li44MTRlZmUwMjA3MGVhYTk2MTY4ZjMxMjQzMThjNDlmMzIwMTcx
YjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJz
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJz
LmNwcApAQCAtNjIwLDcgKzYyMCw3IEBAIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFN0cmluZ1Zp
ZXcsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Pj4gcGFyc2VTdHJ1Y3R1cmVkRmllCiAgICAgICAg
ICAgICArK2luZGV4OwogICAgICAgICB9CiAgICAgICAgIFN0cmluZyBrZXkgPSBoZWFkZXIuc3Vi
c3RyaW5nKGtleVN0YXJ0LCBpbmRleCAtIGtleVN0YXJ0KS50b1N0cmluZygpOwotICAgICAgICBT
dHJpbmcgdmFsdWUgPSAidHJ1ZSI7CisgICAgICAgIFN0cmluZyB2YWx1ZSA9ICJ0cnVlIl9zOwog
ICAgICAgICBpZiAoaW5kZXggPCBoZWFkZXIubGVuZ3RoKCkgJiYgaGVhZGVyW2luZGV4XSA9PSAn
PScpIHsKICAgICAgICAgICAgICsraW5kZXg7IC8vIENvbnN1bWUgJz0nLgogICAgICAgICAgICAg
aWYgKGlzQVNDSUlBbHBoYShoZWFkZXJbaW5kZXhdKSB8fCBoZWFkZXJbaW5kZXhdID09ICcqJykg
ewpAQCAtNzg1LDcgKzc4NSw3IEBAIHNpemVfdCBwYXJzZUhUVFBIZWFkZXIoY29uc3QgdWludDhf
dCogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvCiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBpZiAoIWlzVmFsaWRIZWFkZXJOYW1lQ2hhcmFjdGVyKCpwKSkg
ewogICAgICAgICAgICAgICAgIGlmIChuYW1lLnNpemUoKSA8IDEpCi0gICAgICAgICAgICAgICAg
ICAgIGZhaWx1cmVSZWFzb24gPSAiVW5leHBlY3RlZCBzdGFydCBjaGFyYWN0ZXIgaW4gaGVhZGVy
IG5hbWUiOworICAgICAgICAgICAgICAgICAgICBmYWlsdXJlUmVhc29uID0gIlVuZXhwZWN0ZWQg
c3RhcnQgY2hhcmFjdGVyIGluIGhlYWRlciBuYW1lIl9zOwogICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZVJlYXNvbiA9IG1ha2VTdHJpbmcoIlVuZXhwZWN0
ZWQgY2hhcmFjdGVyIGluIGhlYWRlciBuYW1lIGF0ICIsIHRyaW1JbnB1dFNhbXBsZShuYW1lLmRh
dGEoKSwgbmFtZS5zaXplKCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmNwcAppbmRleCBiMjE3NzlmNzA5NDA4ZDMyODU2ZjAxZGRkNTQ3OTg4YWE2NDFiYzNjLi45
YTg1N2VhZGZjMWMxZjY5NGYxMjgyZjM5NmM1Zjk4Yzk5M2Y4NzAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
Y3BwCkBAIC0zODUsMTQgKzM4NSwxNCBAQCBjb25zdCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWlu
LCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4mIE5ldHdvcmtTdG9yYWdlU2VzcwogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPj4+IG1hcCA9IFtdIHsKICAgICAgICAgSGFzaE1hcDxSZWdpc3Ry
YWJsZURvbWFpbiwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IG1hcDsKLSAgICAgICAgbWFw
LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9t
YWluU3RyaW5nKCJtaWNyb3NvZnQuY29tIiksCisgICAgICAgIG1hcC5hZGQoUmVnaXN0cmFibGVE
b21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibWljcm9z
b2Z0LmNvbSJfcyksCiAgICAgICAgICAgICBIYXNoU2V0IHsgUmVnaXN0cmFibGVEb21haW46OnVu
Y2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibWljcm9zb2Z0b25saW5l
LmNvbSJfcykgfSk7Ci0gICAgICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tl
ZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibGl2ZS5jb20iKSwKKyAgICAgICAg
bWFwLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxl
RG9tYWluU3RyaW5nKCJsaXZlLmNvbSJfcyksCiAgICAgICAgICAgICBIYXNoU2V0IHsgUmVnaXN0
cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygi
c2t5cGUuY29tIl9zKSB9KTsKLSAgICAgICAgbWFwLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJwbGF5c3RhdGlvbi5jb20i
KSwgSGFzaFNldCB7CisgICAgICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tl
ZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygicGxheXN0YXRpb24uY29tIl9zKSwg
SGFzaFNldCB7CiAgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJzb255ZW50ZXJ0YWlubWVudG5ldHdvcmsuY29t
Il9zKSwKICAgICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
UmVnaXN0cmFibGVEb21haW5TdHJpbmcoInNvbnkuY29tIl9zKSB9KTsKLSAgICAgICAgbWFwLmFk
ZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWlu
U3RyaW5nKCJiYmMuY28udWsiKSwgSGFzaFNldCB7CisgICAgICAgIG1hcC5hZGQoUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygiYmJj
LmNvLnVrIl9zKSwgSGFzaFNldCB7CiAgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJyYWRpb3BsYXllci5jby51
ayJfcykgfSk7CiAgICAgICAgIHJldHVybiBtYXA7CiAgICAgfSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcAppbmRleCA5
ZWYyYTE3MjBkNTcxMjZmYmU3MTJjZDlhMmExZDIyMjFhMWM0ZTlkLi5iMmU3YmRkM2Y5ZmVkZjI4
NjlhMTFiYzc2M2JlYzY3NDViNTM5YjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcApAQCAtMzQ3LDcgKzM0Nyw3IEBA
IFBhcnNlZENvbnRlbnRUeXBlOjpQYXJzZWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKQogCiBTdHJpbmcgUGFyc2VkQ29udGVudFR5cGU6OmNoYXJzZXQoKSBjb25zdAogewot
ICAgIHJldHVybiBwYXJhbWV0ZXJWYWx1ZUZvck5hbWUoImNoYXJzZXQiKTsKKyAgICByZXR1cm4g
cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJjaGFyc2V0Il9zKTsKIH0KIAogdm9pZCBQYXJzZWRDb250
ZW50VHlwZTo6c2V0Q2hhcnNldChTdHJpbmcmJiBjaGFyc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRl
eCAzYTE1MmJiMmUxZjlkZTAyOGQwMWIzMjA0MWIyYTM5ZTAwMzljM2Y2Li5kOTJhOTNiMTQyN2Fh
MjQ0MjRiY2JjZTM0MjI1MGU5ZjlkYzk5OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtMTkzLDcg
KzE5Myw3IEBAIFJlc291cmNlUmVzcG9uc2UgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmZpbHRlcihj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwKICAgICBmaWx0ZXJlZFJlc3BvbnNlLnNl
dFR5cGUoVHlwZTo6Q29ycyk7CiAKICAgICBhdXRvIGFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJT
ZXQgPSB2YWx1ZU9yRGVmYXVsdChwYXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3Q8QVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPihyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OkFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJzKSkpOwotICAgIGlmIChwZXJmb3JtQ2hlY2sgPT0g
UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzICYmIGFjY2Vzc0NvbnRyb2xFeHBvc2VI
ZWFkZXJTZXQuY29udGFpbnMoIioiKSkKKyAgICBpZiAocGVyZm9ybUNoZWNrID09IFBlcmZvcm1F
eHBvc2VBbGxIZWFkZXJzQ2hlY2s6OlllcyAmJiBhY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVyU2V0
LmNvbnRhaW5zKCIqIl9zKSkKICAgICAgICAgcmV0dXJuIGZpbHRlcmVkUmVzcG9uc2U7CiAKICAg
ICBmaWx0ZXJlZFJlc3BvbnNlLm1faHR0cEhlYWRlckZpZWxkcy51bmNvbW1vbkhlYWRlcnMoKS5y
ZW1vdmVBbGxNYXRjaGluZyhbJl0oYXV0byYgZW50cnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAK
aW5kZXggYjM4MmEwZDdlZGYxNjU0M2NhM2NmNDdiM2RlMWM3NzE1ZWIxNzQ1MC4uY2E4YTVkZWVj
YWM4OGY1ZTY2MTQyYmZmMTMwMTU4NGFmMWU3MWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAK
QEAgLTU1LDggKzU1LDggQEAgdm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2lu
Z1Byb3h5KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gaHR0cENGVVJMID0gVVJMKHsgfSwgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVS
TCgpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTCh7IH0sICJodHRw
czovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENGVVJMUmVm
PiBodHRwQ0ZVUkwgPSBVUkwoeyB9LCAiaHR0cDovL2V4YW1wbGUuY29tLyJfcykuY3JlYXRlQ0ZV
UkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBVUkwoeyB9LCAiaHR0
cHM6Ly9leGFtcGxlLmNvbS8iX3MpLmNyZWF0ZUNGVVJMKCk7CiAKICAgICBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9y
VVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwogICAgIFJldGFpblB0
cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94
aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCA3MDQwYjMyNjI1NzU3OGM3MTAzYmZl
MzY0MTNmYTkzOWFiZmM1MTAwLi4zMDNlZTc2MzNmZWJmNWFkNWZiYzBmYmI4ZTRiMWIzYmQ3ZjM1
ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC0xMjEsNyArMTIx
LDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25z
dCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGwKICAgICAgICAgJiYgX0NGTmV0d29ya0lzS25v
d25IU1RTSG9zdFdpdGhTZXNzaW9uKG1faHR0cHNVUkwuZ2V0KCksIG51bGxwdHIpKSB7CiAgICAg
ICAgIC8vIENhbGwgdGhpcyBhc3luY2hyb25vdXNseSBiZWNhdXNlIHRoZSBzb2NrZXQgc3RyZWFt
IGlzIG5vdCBmdWxseSBjb25zdHJ1Y3RlZCBhdCB0aGlzIHBvaW50LgogICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewotICAgICAg
ICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJy
b3IoMCwgbV91cmwuc3RyaW5nKCksICJXZWJTb2NrZXQgY29ubmVjdGlvbiBmYWlsZWQgYmVjYXVz
ZSBpdCB2aW9sYXRlcyBIVFRQIFN0cmljdCBUcmFuc3BvcnQgU2VjdXJpdHkuIikpOworICAgICAg
ICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJy
b3IoMCwgbV91cmwuc3RyaW5nKCksICJXZWJTb2NrZXQgY29ubmVjdGlvbiBmYWlsZWQgYmVjYXVz
ZSBpdCB2aW9sYXRlcyBIVFRQIFN0cmljdCBUcmFuc3BvcnQgU2VjdXJpdHkuIl9zKSk7CiAgICAg
ICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQg
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENGSFRUUE1lc3Nh
Z2VSZWYgcHJveHlSZXNwb25zCiAKICAgICBpZiAoIUNGSFRUUEF1dGhlbnRpY2F0aW9uUmVxdWly
ZXNVc2VyTmFtZUFuZFBhc3N3b3JkKGF1dGhlbnRpY2F0aW9uLmdldCgpKSkgewogICAgICAgICAv
LyBUaGF0J3MgYWxsIHdlIGNhbiBvZmZlci4uLgotICAgICAgICBtX2NsaWVudC5kaWRGYWlsU29j
a2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIlBy
b3h5IGF1dGhlbnRpY2F0aW9uIHNjaGVtZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBXZWJTb2NrZXRz
IikpOworICAgICAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRT
dHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIlByb3h5IGF1dGhlbnRpY2F0aW9uIHNjaGVt
ZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBXZWJTb2NrZXRzIl9zKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6
OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9ucwogCiAg
ICAgaWYgKCFtZXRob2RDRiB8fCAhcmVhbG1DRikgewogICAgICAgICAvLyBUaGlzIHNob3VsZG4n
dCBoYXBwZW4sIGJ1dCBvbiBzb21lIE9TIHZlcnNpb25zIHdlIGdldCBpbmNvbXBsZXRlIGF1dGhl
bnRpY2F0aW9uIGRhdGEsIHNlZSA8cmRhcjovL3Byb2JsZW0vMTA0MTYzMTY+LgotICAgICAgICBt
X2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBt
X3VybC5zdHJpbmcoKSwgIldlYlNvY2tldCBwcm94eSBhdXRoZW50aWNhdGlvbiBjb3VsZG4ndCBi
ZSBoYW5kbGVkIikpOworICAgICAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlz
LCBTb2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIldlYlNvY2tldCBwcm94eSBh
dXRoZW50aWNhdGlvbiBjb3VsZG4ndCBiZSBoYW5kbGVkIl9zKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6
OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9ucwogCiAg
ICAgICAgIGlmICghcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKSB7CiAgICAgICAgICAgICAvLyBG
YWlscyBlLmcuIGZvciBOVExNIGF1dGguCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsU29j
a2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIlBy
b3h5IGF1dGhlbnRpY2F0aW9uIHNjaGVtZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBXZWJTb2NrZXRz
IikpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29j
a2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5nKCksICJQcm94eSBhdXRoZW50aWNhdGlvbiBz
Y2hlbWUgaXMgbm90IHN1cHBvcnRlZCBmb3IgV2ViU29ja2V0cyJfcykpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5
UmVzcG9ucwogCiAgICAgLy8gRklYTUU6IE9uIHBsYXRmb3JtcyB3aGVyZSBBdXRoQnJva2VyQWdl
bnQgaXMgbm90IGF2YWlsYWJsZSwgYXNrIHRoZSBjbGllbnQgaWYgY3JlZGVudGlhbHMgY291bGQg
bm90IGJlIGZvdW5kLgogCi0gICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywg
U29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5nKCksICJQcm94eSBjcmVkZW50aWFscyBh
cmUgbm90IGF2YWlsYWJsZSIpKTsKKyAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0
aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIlByb3h5IGNyZWRlbnRp
YWxzIGFyZSBub3QgYXZhaWxhYmxlIl9zKSk7CiB9CiAKIENGU3RyaW5nUmVmIFNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmNvcHlDRlN0cmVhbURlc2NyaXB0aW9uKHZvaWQqIGluZm8pCkBAIC01NzMs
NyArNTczLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJh
Y2soQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSkKICAgICAgICAgICAgICAgICAgICAgYWRkQ09OTkVD
VENyZWRlbnRpYWxzKHByb3h5UmVzcG9uc2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgbV9j
bGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3Ioc3RhdGlj
X2Nhc3Q8aW50Pihwcm94eVJlc3BvbnNlQ29kZSksIG1fdXJsLnN0cmluZygpLCAiUHJveHkgY29u
bmVjdGlvbiBjb3VsZCBub3QgYmUgZXN0YWJsaXNoZWQsIHVuZXhwZWN0ZWQgcmVzcG9uc2UgY29k
ZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgq
dGhpcywgU29ja2V0U3RyZWFtRXJyb3Ioc3RhdGljX2Nhc3Q8aW50Pihwcm94eVJlc3BvbnNlQ29k
ZSksIG1fdXJsLnN0cmluZygpLCAiUHJveHkgY29ubmVjdGlvbiBjb3VsZCBub3QgYmUgZXN0YWJs
aXNoZWQsIHVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZSJfcykpOwogICAgICAgICAgICAgICAgICAg
ICBwbGF0Zm9ybUNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcAppbmRleCA4ZWZiMTU0OGE1YjBkOTlkOTFjN2ZkNjdmMzg1YjQwMzk1ZGM5YzcyLi40NmFk
OTUzYWYzMzU3NjYzMjUxNzM5Y2EwMTY5ZGJlMTVlMDk5ZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTUzNyw2OSArNTM3LDcxIEBA
IGludCBTUUxpdGVEYXRhYmFzZTo6YXV0aG9yaXplckZ1bmN0aW9uKHZvaWQqIHVzZXJEYXRhLCBp
bnQgYWN0aW9uQ29kZSwgY29uc3QgY2hhCiAgICAgRGF0YWJhc2VBdXRob3JpemVyKiBhdXRoID0g
c3RhdGljX2Nhc3Q8RGF0YWJhc2VBdXRob3JpemVyKj4odXNlckRhdGEpOwogICAgIEFTU0VSVChh
dXRoKTsKIAorICAgIFN0cmluZyBwYXJhbWV0ZXIxU3RyaW5nIHsgcGFyYW1ldGVyMSB9OworICAg
IFN0cmluZyBwYXJhbWV0ZXIyU3RyaW5nIHsgcGFyYW1ldGVyMiB9OwogICAgIHN3aXRjaCAoYWN0
aW9uQ29kZSkgewogICAgICAgICBjYXNlIFNRTElURV9DUkVBVEVfSU5ERVg6Ci0gICAgICAgICAg
ICByZXR1cm4gYXV0aC0+Y3JlYXRlSW5kZXgocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7CisgICAg
ICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlSW5kZXgocGFyYW1ldGVyMVN0cmluZywgcGFyYW1l
dGVyMlN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0NSRUFURV9UQUJMRToKLSAgICAgICAg
ICAgIHJldHVybiBhdXRoLT5jcmVhdGVUYWJsZShwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJl
dHVybiBhdXRoLT5jcmVhdGVUYWJsZShwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2FzZSBT
UUxJVEVfQ1JFQVRFX1RFTVBfSU5ERVg6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRl
VGVtcEluZGV4KHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAgICAgICAgICAgcmV0dXJuIGF1
dGgtPmNyZWF0ZVRlbXBJbmRleChwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0ZXIyU3RyaW5nKTsK
ICAgICAgICAgY2FzZSBTUUxJVEVfQ1JFQVRFX1RFTVBfVEFCTEU6Ci0gICAgICAgICAgICByZXR1
cm4gYXV0aC0+Y3JlYXRlVGVtcFRhYmxlKHBhcmFtZXRlcjEpOworICAgICAgICAgICAgcmV0dXJu
IGF1dGgtPmNyZWF0ZVRlbXBUYWJsZShwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2FzZSBT
UUxJVEVfQ1JFQVRFX1RFTVBfVFJJR0dFUjoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVh
dGVUZW1wVHJpZ2dlcihwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICAgICAgICAgIHJldHVy
biBhdXRoLT5jcmVhdGVUZW1wVHJpZ2dlcihwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0ZXIyU3Ry
aW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfQ1JFQVRFX1RFTVBfVklFVzoKLSAgICAgICAgICAg
IHJldHVybiBhdXRoLT5jcmVhdGVUZW1wVmlldyhwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJl
dHVybiBhdXRoLT5jcmVhdGVUZW1wVmlldyhwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2Fz
ZSBTUUxJVEVfQ1JFQVRFX1RSSUdHRVI6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRl
VHJpZ2dlcihwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRo
LT5jcmVhdGVUcmlnZ2VyKHBhcmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAg
ICAgICBjYXNlIFNRTElURV9DUkVBVEVfVklFVzoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5j
cmVhdGVWaWV3KHBhcmFtZXRlcjEpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmNyZWF0ZVZp
ZXcocGFyYW1ldGVyMVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0RFTEVURToKLSAgICAg
ICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0RlbGV0ZShwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAg
IHJldHVybiBhdXRoLT5hbGxvd0RlbGV0ZShwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2Fz
ZSBTUUxJVEVfRFJPUF9JTkRFWDoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wSW5kZXgo
cGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+ZHJvcElu
ZGV4KHBhcmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNR
TElURV9EUk9QX1RBQkxFOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmRyb3BUYWJsZShwYXJh
bWV0ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVGFibGUocGFyYW1ldGVyMVN0
cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0RST1BfVEVNUF9JTkRFWDoKLSAgICAgICAgICAg
IHJldHVybiBhdXRoLT5kcm9wVGVtcEluZGV4KHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAg
ICAgICAgICAgcmV0dXJuIGF1dGgtPmRyb3BUZW1wSW5kZXgocGFyYW1ldGVyMVN0cmluZywgcGFy
YW1ldGVyMlN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0RST1BfVEVNUF9UQUJMRToKLSAg
ICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVGVtcFRhYmxlKHBhcmFtZXRlcjEpOworICAgICAg
ICAgICAgcmV0dXJuIGF1dGgtPmRyb3BUZW1wVGFibGUocGFyYW1ldGVyMVN0cmluZyk7CiAgICAg
ICAgIGNhc2UgU1FMSVRFX0RST1BfVEVNUF9UUklHR0VSOgotICAgICAgICAgICAgcmV0dXJuIGF1
dGgtPmRyb3BUZW1wVHJpZ2dlcihwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICAgICAgICAg
IHJldHVybiBhdXRoLT5kcm9wVGVtcFRyaWdnZXIocGFyYW1ldGVyMVN0cmluZywgcGFyYW1ldGVy
MlN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0RST1BfVEVNUF9WSUVXOgotICAgICAgICAg
ICAgcmV0dXJuIGF1dGgtPmRyb3BUZW1wVmlldyhwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJl
dHVybiBhdXRoLT5kcm9wVGVtcFZpZXcocGFyYW1ldGVyMVN0cmluZyk7CiAgICAgICAgIGNhc2Ug
U1FMSVRFX0RST1BfVFJJR0dFUjoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVHJpZ2dl
cihwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9w
VHJpZ2dlcihwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0ZXIyU3RyaW5nKTsKICAgICAgICAgY2Fz
ZSBTUUxJVEVfRFJPUF9WSUVXOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmRyb3BWaWV3KHBh
cmFtZXRlcjEpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmRyb3BWaWV3KHBhcmFtZXRlcjFT
dHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9JTlNFUlQ6Ci0gICAgICAgICAgICByZXR1cm4g
YXV0aC0+YWxsb3dJbnNlcnQocGFyYW1ldGVyMSk7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+
YWxsb3dJbnNlcnQocGFyYW1ldGVyMVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX1BSQUdN
QToKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd1ByYWdtYShwYXJhbWV0ZXIxLCBwYXJh
bWV0ZXIyKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd1ByYWdtYShwYXJhbWV0ZXIx
U3RyaW5nLCBwYXJhbWV0ZXIyU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfUkVBRDoKLSAg
ICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd1JlYWQocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7
CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dSZWFkKHBhcmFtZXRlcjFTdHJpbmcsIHBh
cmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9TRUxFQ1Q6CiAgICAgICAgICAg
ICByZXR1cm4gYXV0aC0+YWxsb3dTZWxlY3QoKTsKICAgICAgICAgY2FzZSBTUUxJVEVfVFJBTlNB
Q1RJT046CiAgICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dUcmFuc2FjdGlvbigpOwogICAg
ICAgICBjYXNlIFNRTElURV9VUERBVEU6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dV
cGRhdGUocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+
YWxsb3dVcGRhdGUocGFyYW1ldGVyMVN0cmluZywgcGFyYW1ldGVyMlN0cmluZyk7CiAgICAgICAg
IGNhc2UgU1FMSVRFX0FUVEFDSDoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0F0dGFj
aChwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0F0dGFjaChwYXJh
bWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfREVUQUNIOgotICAgICAgICAgICAg
cmV0dXJuIGF1dGgtPmFsbG93RGV0YWNoKHBhcmFtZXRlcjEpOworICAgICAgICAgICAgcmV0dXJu
IGF1dGgtPmFsbG93RGV0YWNoKHBhcmFtZXRlcjFTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElU
RV9BTFRFUl9UQUJMRToKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0FsdGVyVGFibGUo
cGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dB
bHRlclRhYmxlKHBhcmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBj
YXNlIFNRTElURV9SRUlOREVYOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93UmVpbmRl
eChwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd1JlaW5kZXgocGFy
YW1ldGVyMVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0FOQUxZWkU6Ci0gICAgICAgICAg
ICByZXR1cm4gYXV0aC0+YWxsb3dBbmFseXplKHBhcmFtZXRlcjEpOworICAgICAgICAgICAgcmV0
dXJuIGF1dGgtPmFsbG93QW5hbHl6ZShwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2FzZSBT
UUxJVEVfQ1JFQVRFX1ZUQUJMRToKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVhdGVWVGFi
bGUocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3Jl
YXRlVlRhYmxlKHBhcmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBj
YXNlIFNRTElURV9EUk9QX1ZUQUJMRToKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVlRh
YmxlKHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmRy
b3BWVGFibGUocGFyYW1ldGVyMVN0cmluZywgcGFyYW1ldGVyMlN0cmluZyk7CiAgICAgICAgIGNh
c2UgU1FMSVRFX0ZVTkNUSU9OOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93RnVuY3Rp
b24ocGFyYW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dGdW5jdGlvbihw
YXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIFNRTEF1dGhEZW55OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgKaW5kZXggNTBkZDkyNGIzZWFlNzEy
ZmJiMGRhM2Y3YzFjMGIzMmVhMTY3YmI1OC4uMTEzYTg1M2U0YWQzY2I3NTY3ZWFjMGJhNWMyN2Zl
YThkMzhkYWI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0
dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVu
dC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50
KCkgY29uc3QgPSBkZWxldGU7CiAgICAgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJBdHRhY2htZW50IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckF0dGFjaG1lbnQiX3M7
IH0KIAogICAgIGJvb2wgc2hvdWxkRHJhd1NlbGVjdGlvblRpbnQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYgb2Zmc2V0KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCmluZGV4IDVlNmRmMGJkNjAwZDMwZDVkZTk1YzEzZmQwOTEzZDRiZDUxNWVl
NzcuLjcwYTcxYmYwNmI0ZmRjNzcwMTljYWU5ODI4ZGM5NDQ2MzEyYzViMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzA0NiwyOCArMzA0NiwyOCBAQCBi
b29sIFJlbmRlckJsb2NrOjpoYXNNYXJnaW5BZnRlclF1aXJrKGNvbnN0IFJlbmRlckJveCYgY2hp
bGQpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1jb25zdCBjaGFyKiBSZW5kZXJCbG9j
azo6cmVuZGVyTmFtZSgpIGNvbnN0CitBU0NJSUxpdGVyYWwgUmVuZGVyQmxvY2s6OnJlbmRlck5h
bWUoKSBjb25zdAogewogICAgIGlmIChpc0JvZHkoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJC
b2R5IjsgLy8gRklYTUU6IFRlbXBvcmFyeSBoYWNrIHVudGlsIHdlIGtub3cgdGhhdCB0aGUgcmVn
cmVzc2lvbiB0ZXN0cyBwYXNzLgorICAgICAgICByZXR1cm4gIlJlbmRlckJvZHkiX3M7IC8vIEZJ
WE1FOiBUZW1wb3JhcnkgaGFjayB1bnRpbCB3ZSBrbm93IHRoYXQgdGhlIHJlZ3Jlc3Npb24gdGVz
dHMgcGFzcy4KICAgICBpZiAoaXNGaWVsZHNldCgpKQotICAgICAgICByZXR1cm4gIlJlbmRlckZp
ZWxkU2V0IjsgLy8gRklYTUU6IFJlbW92ZSBldmVudHVhbGx5LCBidXQgZG9uZSB0byBrZWVwIHRl
c3RzIGZyb20gYnJlYWtpbmcuCisgICAgICAgIHJldHVybiAiUmVuZGVyRmllbGRTZXQiX3M7IC8v
IEZJWE1FOiBSZW1vdmUgZXZlbnR1YWxseSwgYnV0IGRvbmUgdG8ga2VlcCB0ZXN0cyBmcm9tIGJy
ZWFraW5nLgogICAgIGlmIChpc0Zsb2F0aW5nKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyQmxv
Y2sgKGZsb2F0aW5nKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSJf
czsKICAgICBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJldHVybiAiUmVu
ZGVyQmxvY2sgKHBvc2l0aW9uZWQpIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAocG9z
aXRpb25lZCkiX3M7CiAgICAgaWYgKGlzQW5vbnltb3VzQmxvY2soKSkKLSAgICAgICAgcmV0dXJu
ICJSZW5kZXJCbG9jayAoYW5vbnltb3VzKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sg
KGFub255bW91cykiX3M7CiAgICAgLy8gRklYTUU6IFRlbXBvcmFyeSBoYWNrIHdoaWxlIHRoZSBu
ZXcgZ2VuZXJhdGVkIGNvbnRlbnQgc3lzdGVtIGlzIGJlaW5nIGltcGxlbWVudGVkLgogICAgIGlm
IChpc1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAoZ2VuZXJh
dGVkKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGdlbmVyYXRlZCkiX3M7CiAgICAg
aWYgKGlzQW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGdlbmVyYXRl
ZCkiOworICAgICAgICByZXR1cm4gIlJlbmRlckJsb2NrIChnZW5lcmF0ZWQpIl9zOwogICAgIGlm
IChpc1JlbGF0aXZlbHlQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sg
KHJlbGF0aXZlIHBvc2l0aW9uZWQpIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAocmVs
YXRpdmUgcG9zaXRpb25lZCkiX3M7CiAgICAgaWYgKGlzU3RpY2tpbHlQb3NpdGlvbmVkKCkpCi0g
ICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKHN0aWNreSBwb3NpdGlvbmVkKSI7Ci0gICAgcmV0
dXJuICJSZW5kZXJCbG9jayI7CisgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKHN0aWNreSBw
b3NpdGlvbmVkKSJfczsKKyAgICByZXR1cm4gIlJlbmRlckJsb2NrIl9zOwogfQogCiBUZXh0UnVu
IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24sIFRleHRS
dW5GbGFncyBmbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXgg
MjIwZmQ3NDEzMDc5MTE0MDM4NWQwZDJkNTA2YTYzNDQwZWNkY2MxOC4uYWYxNWY5Y2IxMGVhZmY0
YjQ2ZTExYjQwODkwZWIzMzNmZmQ4NGQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmgKQEAgLTQzNSw3ICs0MzUsNyBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgYWRq
dXN0TG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0IG9mZnNldEZyb21GbG9hdHMs
IGJvb2wgYXBwbHlUZXh0SW5kZW50KSBjb25zdDsKICAgICBMYXlvdXRVbml0IGFkanVzdExvZ2lj
YWxMZWZ0T2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0IG9mZnNldEZyb21GbG9hdHMsIGJvb2wgYXBw
bHlUZXh0SW5kZW50KSBjb25zdDsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgYm9vbCBpc1NlbGZDb2xsYXBzaW5nQmxvY2soKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgY2hpbGRyZW5QcmV2ZW50U2VsZkNvbGxhcHNpbmcoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAppbmRleCBhNDkzOWM0YTAwNzUwMmE1
Nzg5NDlmZGM1Y2M2NTZjYzc5NWQ1Mzg5Li45ZjI4NzQyNWZhZDg1ZjE4ODc5OTZlNWE2YzY1ODM3
MmM1MGVlYWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0
dG9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCkBAIC02
Niw3ICs2Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3Qg
PSBkZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlckJ1dHRvbiI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJCdXR0b24iX3M7IH0KICAgICBib29sIGlz
UmVuZGVyQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9v
bCBoYXNMaW5lSWZFbXB0eSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaAppbmRleCBlNWQxYWIzMWYyMmM2ZTcxYWYzZDQzYWY5
NWMwMzEyNGM2Mjc1ZDViLi5jMTFhYjQ2NGQ5ODIxMTlmZDM2YjgxZjMxMmQ4ZTA3NmI1YWY3ZDEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaApAQCAt
NDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbm9kZSgpIGNvbnN0ID0gZGVsZXRlOwog
CiAgICAgYm9vbCBpc0NvbWJpbmVUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyQ29tYmluZVRleHQiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyQ29tYmluZVRleHQiX3M7IH0KICAgICB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlbmRlcmVkVGV4dChjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4
IGNlY2VkMzVlNWNlODdiZmJjMTQwMTgzNmNkMTNlYTFhZWRkN2FmYzAuLmEzZmVmYWQwNmE2YjI3
MmIxYWYxYjU5MDQzNjk4MmExNjg1M2IxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQ291bnRlci5jcHAKQEAgLTQwNiw5ICs0MDYsOSBAQCB2b2lkIFJlbmRlckNvdW50ZXI6
OndpbGxCZURlc3Ryb3llZCgpCiAgICAgUmVuZGVyVGV4dDo6d2lsbEJlRGVzdHJveWVkKCk7CiB9
CiAKLWNvbnN0IGNoYXIqIFJlbmRlckNvdW50ZXI6OnJlbmRlck5hbWUoKSBjb25zdAorQVNDSUlM
aXRlcmFsIFJlbmRlckNvdW50ZXI6OnJlbmRlck5hbWUoKSBjb25zdAogewotICAgIHJldHVybiAi
UmVuZGVyQ291bnRlciI7CisgICAgcmV0dXJuICJSZW5kZXJDb3VudGVyIl9zOwogfQogCiBib29s
IFJlbmRlckNvdW50ZXI6OmlzQ291bnRlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckNvdW50ZXIuaAppbmRleCBiNTM1NjYzYWZjODE0NDg5YTI4MTE1MjYxM2E5NjRiMTMy
Mzg0MTVkLi5lY2QzZjgzNDg3YjI3MDkxODRmYzE0MGM2NzNkNDJlY2U1ZTk1OGJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIHN0YXRpYyB2
b2lkIHJlbmRlcmVyU3R5bGVDaGFuZ2VkU2xvd0Nhc2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKTsKICAgICAK
LSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVNDSUlM
aXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzQ291bnRlcigp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBvcmlnaW5hbFRleHQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5kZXggYWVkMzJlNjlkMjhhZThlYjI3M2FiYWY4MTg0
YzMyNmFhNTc5MzRhMi4uYTA2ZTVmM2JhNzY0ODc1ZGQ2N2Y3MTA2MDc3Mjk0NjRjNzQxMjgyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4
aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveC5jcHAKQEAgLTExODMsMjAgKzExODMsMjAgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmFsbG93ZWRDaGlsZEZsZXgoUmVuZGVyQm94KiBjaGls
ZCwgYm9vbAogICAgIHJldHVybiAwOwogfQogCi1jb25zdCBjaGFyKiBSZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3g6OnJlbmRlck5hbWUoKSBjb25zdAorQVNDSUlMaXRlcmFsIFJlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveDo6cmVuZGVyTmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRmxvYXRp
bmcoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKGZsb2F0
aW5nKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IChmbG9h
dGluZykiX3M7CiAgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQotICAgICAgICByZXR1
cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCAocG9zaXRpb25lZCkiOworICAgICAgICBy
ZXR1cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCAocG9zaXRpb25lZCkiX3M7CiAgICAg
Ly8gRklYTUU6IFRlbXBvcmFyeSBoYWNrIHdoaWxlIHRoZSBuZXcgZ2VuZXJhdGVkIGNvbnRlbnQg
c3lzdGVtIGlzIGJlaW5nIGltcGxlbWVudGVkLgogICAgIGlmIChpc1BzZXVkb0VsZW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKGdlbmVyYXRlZCki
OworICAgICAgICByZXR1cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCAoZ2VuZXJhdGVk
KSJfczsKICAgICBpZiAoaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3ggKGdlbmVyYXRlZCkiOworICAgICAgICByZXR1cm4gIlJlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveCAoZ2VuZXJhdGVkKSJfczsKICAgICBpZiAoaXNSZWxhdGl2ZWx5
UG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eCAocmVsYXRpdmUgcG9zaXRpb25lZCkiOwotICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94IjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gg
KHJlbGF0aXZlIHBvc2l0aW9uZWQpIl9zOworICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94Il9zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgKaW5k
ZXggOTAxM2E0NmNkZDI4OTQ2NmNlNzhiYzFjZDFkNWFmOTRjMDhmOTIwOC4uNDcwOTEzNGQwM2Zm
NGRjOWMzNjA0YWFlZjI3NzZlMGFkODhlOTcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaApAQCAtMzYsNyArMzYs
NyBAQCBwdWJsaWM6CiAKICAgICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93
bmNhc3Q8RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCi0gICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJO
YW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oCmluZGV4IGFiZDg4
M2Q4MDk5ZjU3Mjc4NDY2MDIyOTYxZWRhNjQ5MWNhZjA4ZWQuLmRkODQ4MDlmMDI1ZWYxNGVhOWU1
MTZmMWZkM2M3NjdhNTBiZTYxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXRhaWxzTWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckRldGFpbHNNYXJrZXIuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgT3JpZW50
YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckRldGFpbHNNYXJrZXIi
OyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyRGV0YWlsc01hcmtlciJfczsgfQogICAgIGJvb2wgaXNEZXRhaWxzTWFya2VyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAppbmRleCBmMWZkOWZmMDVkZGE5NTdjNjQ2
NGQxNDcwN2M5NDIxYmE4Mzg1ZjRlLi5jMDQxYzk2OTRiNDhlMGQ4MWVhOWJjMjk2OWU3OGE4NjZh
ODE3ZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRP
YmplY3QuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF5b3V0KCkgZmlu
YWw7CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBmaW5hbDsKIAotICAgIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyRW1iZWRkZWRPYmplY3Qi
OyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
UmVuZGVyRW1iZWRkZWRPYmplY3QiX3M7IH0KICAgICBib29sIGlzRW1iZWRkZWRPYmplY3QoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIHNob3dzVW5hdmFpbGFibGVQ
bHVnaW5JbmRpY2F0b3IoKSBjb25zdCB7IHJldHVybiBpc1BsdWdpblVuYXZhaWxhYmxlKCkgJiYg
bV9pc1VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yU3RhdGUgIT0gVW5hdmFpbGFibGVQbHVnaW5J
bmRpY2F0b3JTdGF0ZTo6SGlkZGVuOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCmluZGV4IGQzMGE5YmJmNTg4N2IxNDAxMDg0MTM1
ZGQxMzAwMTRmZjg0YWMxYWMuLjljMjM1YjEwNzI5ZjlmN2NiNDJmYWZlOWQ0NjIwMTAzYWZjNmQz
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2Fk
Q29udHJvbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2Fk
Q29udHJvbC5oCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzRmlsZVVw
bG9hZENvbnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZpbGVV
cGxvYWRDb250cm9sIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIlJlbmRlckZpbGVVcGxvYWRDb250cm9sIl9zOyB9CiAKICAgICB2b2lk
IHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2lj
TG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1h
eExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCA1ZDFkYTZhZjk1ZmMyMmEyNTM1YjM0OGVh
ZTY4YWU0MjdiNjM2Y2MxLi5mYzQzNGYxOWE0NDg5NjQ3NmJiYzRmZGIzYTYxZDc3OWMyODlkNTAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAK
QEAgLTg5LDkgKzg5LDkgQEAgUmVuZGVyRmxleGlibGVCb3g6On5SZW5kZXJGbGV4aWJsZUJveCgp
CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bm9kZUxheW91dENvbnRleHRDaGFu
Z2VkKG5vZGVGb3JOb25Bbm9ueW1vdXMoKSwgbnVsbHB0cik7CiB9CiAKLWNvbnN0IGNoYXIqIFJl
bmRlckZsZXhpYmxlQm94OjpyZW5kZXJOYW1lKCkgY29uc3QKK0FTQ0lJTGl0ZXJhbCBSZW5kZXJG
bGV4aWJsZUJveDo6cmVuZGVyTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICJSZW5kZXJGbGV4
aWJsZUJveCI7CisgICAgcmV0dXJuICJSZW5kZXJGbGV4aWJsZUJveCJfczsKIH0KIAogdm9pZCBS
ZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5p
dCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCmluZGV4IDRiNTU1
MmIxODk1ZDUwZTBkY2UxOTIzMDc5NjdhM2Q0MWQ3ZWZlY2UuLmNlZTAzMTc3NDI3NWI3MGFlMWNi
MGJmYjE1ZDhmYzg5MTU3ZjExZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNG
bGV4aWJsZUJveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBU0NJSUxpdGVyYWwgcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBjYW5Ecm9wQW5vbnltb3VzQmxvY2tD
aGlsZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5oCmluZGV4IGI3MGU3MTZkMzBk
MmExYmJkMWM3YTA2NjViZmY2NGExZjFhMjhjMzUuLjFmYjAxMDBhM2I0Y2ZhOTNhMzU3M2NhMDhk
ZmQ1YjQ3Y2VmNmJjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFnbWVudENvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFnbWVudENvbnRhaW5lci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJvdGVjdGVkOgogCiBw
cml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJGcmFnbWVudENvbnRhaW5lcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIlJlbmRlckZyYWdtZW50Q29udGFpbmVyIjsgfQorICAgIEFTQ0lJTGl0
ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZyYWdtZW50
Q29udGFpbmVyIl9zOyB9CiAKICAgICB2b2lkIGluc2VydGVkSW50b1RyZWUoSXNJbnRlcm5hbE1v
dmUpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKElzSW50ZXJuYWxN
b3ZlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFnbWVudENvbnRhaW5lclNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYWdtZW50Q29udGFpbmVyU2V0LmgKaW5kZXggZTQ0YjJkZmQ2NmU5ZTcwNzMwNDdlOTZhOGZi
MzJiN2M1NGRkMTBkYS4uMjQxZGE5MjdjZTQwMTAzMDVjODc3MzMwMzczMzQwMTA5NjU4MWY1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFp
bmVyU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29u
dGFpbmVyU2V0LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2
b2lkIGluc3RhbGxGcmFnbWVudGVkRmxvdygpIGZpbmFsOwogCi0gICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlID0gMDsKKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlID0gMDsKICAgICAKICAgICBib29sIGlzUmVuZGVyRnJhZ21lbnRD
b250YWluZXJTZXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuaAppbmRleCA3NWZiNTAz
NzAzMDY5ZDBhZDEwNDg3MjMzMzUxZmI0MzE2ZGM1ZTdjLi4wZDM4OWFkNzUxYzZkYjQwMmY5Mzg2
YTJkMjVhM2EwMTMyMGU5YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhZ21lbnRlZEZsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhZ21lbnRlZEZsb3cuaApAQCAtMTg2LDcgKzE4Niw3IEBAIHByb3RlY3RlZDoKIAogICAg
IFJlbmRlckZyYWdtZW50ZWRGbG93KiBsb2NhdGVFbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyRnJhZ21lbnRlZEZsb3cqPih0
aGlzKTsgfQogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlID0g
MDsKKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlID0gMDsKIAog
ICAgIC8vIE92ZXJyaWRkZW4gYnkgY29sdW1ucy9wYWdlcyB0byBzZXQgdXAgYW4gaW5pdGlhbCBs
b2dpY2FsIHdpZHRoIG9mIHRoZSBwYWdlIHdpZHRoIGV2ZW4gd2hlbgogICAgIC8vIG5vIGZyYWdt
ZW50cyBoYXZlIGJlZW4gZ2VuZXJhdGVkIHlldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYW1lLmgKaW5kZXggM2Q2N2EwZmQ3ZjY4YTI1ZGEzMjM3MTFiNDI0NzdiZjdiYjhjNTJjMS4u
ZjQyMTI1ZGI2MWFmZWUwYWJhMTgzZWJhZGJmZmViZjMxMmMzOWJkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYW1lLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICB2b2lkIGZyYW1lT3duZXJFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlckZyYW1l
IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IlJlbmRlckZyYW1lIl9zOyB9CiAgICAgYm9vbCBpc0ZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQu
aAppbmRleCAwZjhhMDkwOTcxMjgyY2YxMTJhYjUwZjE4ODZkMGMxMDcxYzk1Y2MyLi5hZGE0MzRl
ODQ3ZWMzZTkxZmNjM2Q3ZDQwNzFmYjhkYTQxMzljNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhbWVTZXQuaApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgICAg
ICBpbnQgbV9zcGxpdFJlc2l6ZU9mZnNldDsKICAgICB9OwogCi0gICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJGcmFtZVNldCI7IH0KKyAg
ICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJGcmFtZVNldCJfczsgfQogICAgIGJvb2wgaXNGcmFtZVNldCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAppbmRleCA2OTA0MzM1OTJjN2Y0ZWIy
MmYyYWM0NTYxN2QxMDBjZWY1MTk5OTA5Li4wMDBmMzFmMDRmMjVlYTA1OTE2ZjExZTQ4ZWFiM2Nh
MzBlZjlkYmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVs
bFNjcmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVu
LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIFJlbmRlckZ1bGxTY3JlZW4oRG9jdW1l
bnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJGdWxsU2NyZWVuKCk7CiAK
LSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlckZ1bGxTY3JlZW4iOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyRnVsbFNjcmVlbiJfczsgfQogCiAgICAgUmVuZGVyQmxv
Y2sqIHBsYWNlaG9sZGVyKCkgeyByZXR1cm4gbV9wbGFjZWhvbGRlci5nZXQoKTsgfQogICAgIHZv
aWQgc2V0UGxhY2Vob2xkZXIoUmVuZGVyQmxvY2smIHBsYWNlaG9sZGVyKSB7IG1fcGxhY2Vob2xk
ZXIgPSBwbGFjZWhvbGRlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
CmluZGV4IDNkZWFmZWRmMjFhNmMwMzg5NTczZDQyMGEwNTY0ZGZhYjlhOGRiYmYuLjgzMTM3NjQx
YTRiOTkxYjg2OTFlYWRjNGM0NjQ0ZDkyMzVlOTVlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHAKQEAgLTE5ODcsMTcgKzE5ODcsMTcgQEAgdm9pZCBSZW5kZXJHcmlk
OjpwYWludENoaWxkcmVuKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmYKICAgICAgICAgcGFpbnRDaGlsZCgqY2hpbGQsIHBhaW50SW5mbywgcGFpbnRPZmZz
ZXQsIGZvckNoaWxkLCB1c2VQcmludFJlY3QsIFBhaW50QXNJbmxpbmVCbG9jayk7CiB9CiAKLWNv
bnN0IGNoYXIqIFJlbmRlckdyaWQ6OnJlbmRlck5hbWUoKSBjb25zdAorQVNDSUlMaXRlcmFsIFJl
bmRlckdyaWQ6OnJlbmRlck5hbWUoKSBjb25zdAogewogICAgIGlmIChpc0Zsb2F0aW5nKCkpCi0g
ICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAoZmxvYXRpbmcpIjsKKyAgICAgICAgcmV0dXJuICJS
ZW5kZXJHcmlkIChmbG9hdGluZykiX3M7CiAgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
KQotICAgICAgICByZXR1cm4gIlJlbmRlckdyaWQgKHBvc2l0aW9uZWQpIjsKKyAgICAgICAgcmV0
dXJuICJSZW5kZXJHcmlkIChwb3NpdGlvbmVkKSJfczsKICAgICBpZiAoaXNBbm9ueW1vdXMoKSkK
LSAgICAgICAgcmV0dXJuICJSZW5kZXJHcmlkIChnZW5lcmF0ZWQpIjsKKyAgICAgICAgcmV0dXJu
ICJSZW5kZXJHcmlkIChnZW5lcmF0ZWQpIl9zOwogICAgIGlmIChpc1JlbGF0aXZlbHlQb3NpdGlv
bmVkKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAocmVsYXRpdmUgcG9zaXRpb25lZCki
OwotICAgIHJldHVybiAiUmVuZGVyR3JpZCI7CisgICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAo
cmVsYXRpdmUgcG9zaXRpb25lZCkiX3M7CisgICAgcmV0dXJuICJSZW5kZXJHcmlkIl9zOwogfQog
CiBib29sIFJlbmRlckdyaWQ6Omhhc0F1dG9TaXplSW5Db2x1bW5BeGlzKGNvbnN0IFJlbmRlckJv
eCYgY2hpbGQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCAx
ODRlNjQyYmFjMjMzNzNiMGUyZGUzZDM4YmNjYWJlN2ZmY2MyMmI5Li44ZTY2OWEwYjg3YjY0ZDIy
ZTAzNTg1OTA2MGU1ZTQ4OGRiMjQ1MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gY2hpbGQt
PmlzUmVuZGVyUmVwbGFjZWQoKSA/IEl0ZW1Qb3NpdGlvbjo6U3RhcnQgOiBJdGVtUG9zaXRpb246
OlN0cmV0Y2g7CiAgICAgfQogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpc1JlbmRlckdyaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dp
Y2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oCmluZGV4IGZmMzU2
M2M3ODM3NmUyNTBjM2Y3ZDkyMmUxY2YxMTkyZjQ0NjBjNTEuLmVhZmQwODQ4MzYwZjkyMjQ2N2E0
YjVkMTJiNjhhYmNhNDMwNWRiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJIVE1MQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckhUTUxDYW52YXMuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVu
dCgpIGNvbnN0ID0gZGVsZXRlOwogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgaXNDYW52YXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJIVE1MQ2FudmFzIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckhUTUxDYW52YXMiX3M7IH0KICAgICB2b2lkIHBhaW50
UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAgICB2
b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCkgb3ZlcnJpZGUgeyBjYW52YXNTaXplQ2hhbmdlZCgp
OyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oCmluZGV4IDkxY2Q4
NTU2NDRhYjc4YmU5YjFjZjRlOTNhZWIyMDcyMjUwN2IxMTYuLjU5YTc4ODVlZDc3NTAxMjI1MzNj
M2Y2ZGJhMDA3N2YwYjBiNzdhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZy
YW1lLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNSZW5kZXJJRnJh
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlcklGcmFtZSI7IH0KKyAg
ICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJJRnJhbWUiX3M7IH0KIAogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IDhhYWNkNGMwNzNk
Yzg5Nzk2NzBkNzVkMTNlY2QyMTc0YmM5YzI3NjQuLjQ0MjlkMzA3ZjdiMDZiNjcyMTVkYzQ2YmM2
ZjJiNDA1YjVhMzRjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBA
IC0xMDQsNyArMTA0LDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckltYWdl
IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIlJlbmRlckltYWdlIl9zOyB9CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmlu
ZGV4IDBiNDVlYWVjMTM0YzVjN2QwMWEwMmMzM2VmODNjOTc4NGI4ZjZiZWEuLjc2MDA1MDAxZDNj
MGRkZTQzNzBkYWI3ODRmZTI0NWU3ZWQ4OGI5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwCkBAIC00MDIsMTggKzQwMiwxOCBAQCBMYXlvdXRVbml0IFJlbmRl
cklubGluZTo6bWFyZ2luQWZ0ZXIoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0
CiAgICAgcmV0dXJuIGNvbXB1dGVNYXJnaW4odGhpcywgc3R5bGUoKS5tYXJnaW5BZnRlclVzaW5n
KG90aGVyU3R5bGUgPyBvdGhlclN0eWxlIDogJnN0eWxlKCkpKTsKIH0KIAotY29uc3QgY2hhciog
UmVuZGVySW5saW5lOjpyZW5kZXJOYW1lKCkgY29uc3QKK0FTQ0lJTGl0ZXJhbCBSZW5kZXJJbmxp
bmU6OnJlbmRlck5hbWUoKSBjb25zdAogewogICAgIGlmIChpc1JlbGF0aXZlbHlQb3NpdGlvbmVk
KCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVySW5saW5lIChyZWxhdGl2ZSBwb3NpdGlvbmVkKSI7
CisgICAgICAgIHJldHVybiAiUmVuZGVySW5saW5lIChyZWxhdGl2ZSBwb3NpdGlvbmVkKSJfczsK
ICAgICBpZiAoaXNTdGlja2lseVBvc2l0aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJJ
bmxpbmUgKHN0aWNreSBwb3NpdGlvbmVkKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVySW5saW5l
IChzdGlja3kgcG9zaXRpb25lZCkiX3M7CiAgICAgLy8gRklYTUU6IFRlbXBvcmFyeSBoYWNrIHdo
aWxlIHRoZSBuZXcgZ2VuZXJhdGVkIGNvbnRlbnQgc3lzdGVtIGlzIGJlaW5nIGltcGxlbWVudGVk
LgogICAgIGlmIChpc1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJJbmxp
bmUgKGdlbmVyYXRlZCkiOworICAgICAgICByZXR1cm4gIlJlbmRlcklubGluZSAoZ2VuZXJhdGVk
KSJfczsKICAgICBpZiAoaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJJbmxp
bmUgKGdlbmVyYXRlZCkiOwotICAgIHJldHVybiAiUmVuZGVySW5saW5lIjsKKyAgICAgICAgcmV0
dXJuICJSZW5kZXJJbmxpbmUgKGdlbmVyYXRlZCkiX3M7CisgICAgcmV0dXJuICJSZW5kZXJJbmxp
bmUiX3M7CiB9CiAKIGJvb2wgUmVuZGVySW5saW5lOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IDBhMTcxYWY4YmJhZGNhYjBlMGJhNDE2ZDJhMDk4
Nzk4YmVkMjc0MzUuLjQzYmQwNmJlY2E1MDUxMjE2NmVmMTI2M2UzZGFkNmYzNTgwNGRhMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTkzLDcgKzkzLDcgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgdXBkYXRlRnJvbVN0eWxlKCkgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFT
Q0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGNhbkhh
dmVDaGlsZHJlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAyMzQ1NTI1YjJj
ODBmYTIyY2ViNjIwZDVkYWY3MDEwMDIxOTg1MmY0Li5mZjBlOTFjY2Y0YzA4N2UzZGU2YjM1MTE3
NDgzZTQ0YjdhMzAxMTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcApAQCAtNTE3LDEyICs1MTcsMTIgQEAgdm9pZCBSZW5kZXJMYXllckJh
Y2tpbmc6OmNyZWF0ZVByaW1hcnlHcmFwaGljc0xheWVyKCkKICAgICBjb25zdCB1bnNpZ25lZCBt
YXhMYXllck5hbWVMZW5ndGggPSAxMDA7CiAgICAgaWYgKGxheWVyTmFtZS5sZW5ndGgoKSA+IG1h
eExheWVyTmFtZUxlbmd0aCkgewogICAgICAgICBsYXllck5hbWUudHJ1bmNhdGUobWF4TGF5ZXJO
YW1lTGVuZ3RoKTsKLSAgICAgICAgbGF5ZXJOYW1lLmFwcGVuZCgiLi4uIik7CisgICAgICAgIGxh
eWVyTmFtZS5hcHBlbmQoIi4uLiJfcyk7CiAgICAgfQogICAgIG1fZ3JhcGhpY3NMYXllciA9IGNy
ZWF0ZUdyYXBoaWNzTGF5ZXIobGF5ZXJOYW1lLCBtX2lzRnJhbWVMYXllcldpdGhUaWxlZEJhY2tp
bmcgPyBHcmFwaGljc0xheWVyOjpUeXBlOjpQYWdlVGlsZWRCYWNraW5nIDogR3JhcGhpY3NMYXll
cjo6VHlwZTo6Tm9ybWFsKTsKIAogICAgIGlmIChtX2lzRnJhbWVMYXllcldpdGhUaWxlZEJhY2tp
bmcpIHsKLSAgICAgICAgbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xh
eWVyKCJQYWdlIFRpbGVkQmFja2luZyBjb250YWlubWVudCIpOworICAgICAgICBtX2NoaWxkQ29u
dGFpbm1lbnRMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoIlBhZ2UgVGlsZWRCYWNraW5nIGNv
bnRhaW5tZW50Il9zKTsKICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5hZGRDaGlsZCgqbV9jaGls
ZENvbnRhaW5tZW50TGF5ZXIpOwogICAgIH0KIApAQCAtMTkzNyw3ICsxOTM3LDcgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OmVuc3VyZUNsaXBwaW5nU3RhY2tMYXllcnMoTGF5ZXJBbmNlc3Rv
ckNsaXBwaW5nU3RhY2smIGMKIHsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2xpcHBpbmdTdGFj
ay5zdGFjaygpKSB7CiAgICAgICAgIGlmICghZW50cnkuY2xpcHBpbmdMYXllcikgewotICAgICAg
ICAgICAgZW50cnkuY2xpcHBpbmdMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoZW50cnkuY2xp
cERhdGEuaXNPdmVyZmxvd1Njcm9sbCA/ICJjbGlwIGZvciBzY3JvbGxlciIgOiAiYW5jZXN0b3Ig
Y2xpcHBpbmciKTsKKyAgICAgICAgICAgIGVudHJ5LmNsaXBwaW5nTGF5ZXIgPSBjcmVhdGVHcmFw
aGljc0xheWVyKGVudHJ5LmNsaXBEYXRhLmlzT3ZlcmZsb3dTY3JvbGwgPyAiY2xpcCBmb3Igc2Ny
b2xsZXIiX3MgOiAiYW5jZXN0b3IgY2xpcHBpbmciX3MpOwogICAgICAgICAgICAgZW50cnkuY2xp
cHBpbmdMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICAgICAgICAgICAgIGVudHJ5LmNs
aXBwaW5nTGF5ZXItPnNldFBhaW50aW5nUGhhc2UoeyB9KTsKICAgICAgICAgfQpAQCAtMjAyNiw3
ICsyMDI2LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURlc2NlbmRhbnRDbGlw
cGluZ0xheWVyKGJvb2wgbmVlZHNEZXNjZW5kYW50Q2xpcCkKIAogICAgIGlmIChuZWVkc0Rlc2Nl
bmRhbnRDbGlwKSB7CiAgICAgICAgIGlmICghbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIgJiYgIW1f
aXNGcmFtZUxheWVyV2l0aFRpbGVkQmFja2luZykgewotICAgICAgICAgICAgbV9jaGlsZENvbnRh
aW5tZW50TGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJjaGlsZCBjbGlwcGluZyIpOworICAg
ICAgICAgICAgbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJj
aGlsZCBjbGlwcGluZyJfcyk7CiAgICAgICAgICAgICBtX2NoaWxkQ29udGFpbm1lbnRMYXllci0+
c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICAgICAgICAgICAgIGxheWVyc0NoYW5nZWQgPSB0cnVl
OwogICAgICAgICB9CkBAIC0yMTE4LDcgKzIxMTgsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6cmVxdWlyZXNTY3JvbGxDb3JuZXJMYXllcigpIGNvbnN0CiAKIGJvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKGJvb2wgbmVlZHNIb3Jpem9udGFs
U2Nyb2xsYmFyTGF5ZXIsIGJvb2wgbmVlZHNWZXJ0aWNhbFNjcm9sbGJhckxheWVyLCBib29sIG5l
ZWRzU2Nyb2xsQ29ybmVyTGF5ZXIpCiB7Ci0gICAgYXV0byBjcmVhdGVPckRlc3Ryb3lMYXllciA9
IFsmXShSZWZQdHI8R3JhcGhpY3NMYXllcj4mIGxheWVyLCBib29sIG5lZWRMYXllciwgYm9vbCBk
cmF3c0NvbnRlbnQsIGNvbnN0IGNoYXIqIGxheWVyTmFtZSkgeworICAgIGF1dG8gY3JlYXRlT3JE
ZXN0cm95TGF5ZXIgPSBbJl0oUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiBsYXllciwgYm9vbCBuZWVk
TGF5ZXIsIGJvb2wgZHJhd3NDb250ZW50LCBBU0NJSUxpdGVyYWwgbGF5ZXJOYW1lKSB7CiAgICAg
ICAgIGlmIChuZWVkTGF5ZXIgPT0gISFsYXllcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtMjEzOCwxNSArMjEzOCwxNSBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
T3ZlcmZsb3dDb250cm9sc0xheWVycyhib29sIG5lZWRzSG9yaXpvbnRhbFNjcm9sbAogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9OwogCi0gICAgYm9vbCBsYXllcnNDaGFuZ2VkID0gY3JlYXRl
T3JEZXN0cm95TGF5ZXIobV9vdmVyZmxvd0NvbnRyb2xzQ29udGFpbmVyLCBuZWVkc0hvcml6b250
YWxTY3JvbGxiYXJMYXllciB8fCBuZWVkc1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIgfHwgbmVlZHNT
Y3JvbGxDb3JuZXJMYXllciwgZmFsc2UsICJvdmVyZmxvdyBjb250cm9scyBjb250YWluZXIiKTsK
KyAgICBib29sIGxheWVyc0NoYW5nZWQgPSBjcmVhdGVPckRlc3Ryb3lMYXllcihtX292ZXJmbG93
Q29udHJvbHNDb250YWluZXIsIG5lZWRzSG9yaXpvbnRhbFNjcm9sbGJhckxheWVyIHx8IG5lZWRz
VmVydGljYWxTY3JvbGxiYXJMYXllciB8fCBuZWVkc1Njcm9sbENvcm5lckxheWVyLCBmYWxzZSwg
Im92ZXJmbG93IGNvbnRyb2xzIGNvbnRhaW5lciJfcyk7CiAKLSAgICBib29sIGhvcml6b250YWxT
Y3JvbGxiYXJMYXllckNoYW5nZWQgPSBjcmVhdGVPckRlc3Ryb3lMYXllcihtX2xheWVyRm9ySG9y
aXpvbnRhbFNjcm9sbGJhciwgbmVlZHNIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIsIHRydWUsICJo
b3Jpem9udGFsIHNjcm9sbGJhciIpOworICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbGJhckxheWVy
Q2hhbmdlZCA9IGNyZWF0ZU9yRGVzdHJveUxheWVyKG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xs
YmFyLCBuZWVkc0hvcml6b250YWxTY3JvbGxiYXJMYXllciwgdHJ1ZSwgImhvcml6b250YWwgc2Ny
b2xsYmFyIl9zKTsKICAgICBsYXllcnNDaGFuZ2VkIHw9IGhvcml6b250YWxTY3JvbGxiYXJMYXll
ckNoYW5nZWQ7CiAKLSAgICBib29sIHZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkID0gY3Jl
YXRlT3JEZXN0cm95TGF5ZXIobV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyLCBuZWVkc1ZlcnRp
Y2FsU2Nyb2xsYmFyTGF5ZXIsIHRydWUsICJ2ZXJ0aWNhbCBzY3JvbGxiYXIiKTsKKyAgICBib29s
IHZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkID0gY3JlYXRlT3JEZXN0cm95TGF5ZXIobV9s
YXllckZvclZlcnRpY2FsU2Nyb2xsYmFyLCBuZWVkc1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIsIHRy
dWUsICJ2ZXJ0aWNhbCBzY3JvbGxiYXIiX3MpOwogICAgIGxheWVyc0NoYW5nZWQgfD0gdmVydGlj
YWxTY3JvbGxiYXJMYXllckNoYW5nZWQ7CiAKLSAgICBsYXllcnNDaGFuZ2VkIHw9IGNyZWF0ZU9y
RGVzdHJveUxheWVyKG1fbGF5ZXJGb3JTY3JvbGxDb3JuZXIsIG5lZWRzU2Nyb2xsQ29ybmVyTGF5
ZXIsIHRydWUsICJzY3JvbGwgY29ybmVyIik7CisgICAgbGF5ZXJzQ2hhbmdlZCB8PSBjcmVhdGVP
ckRlc3Ryb3lMYXllcihtX2xheWVyRm9yU2Nyb2xsQ29ybmVyLCBuZWVkc1Njcm9sbENvcm5lckxh
eWVyLCB0cnVlLCAic2Nyb2xsIGNvcm5lciJfcyk7CiAKICAgICBpZiAoYXV0byogc2Nyb2xsaW5n
Q29vcmRpbmF0b3IgPSBtX293bmluZ0xheWVyLnBhZ2UoKS5zY3JvbGxpbmdDb29yZGluYXRvcigp
KSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IG1fb3duaW5nTGF5ZXIuc2Ny
b2xsYWJsZUFyZWEoKSkgewpAQCAtMjI4Miw3ICsyMjgyLDcgQEAgYm9vbCBSZW5kZXJMYXllckJh
Y2tpbmc6OnVwZGF0ZU1hc2tpbmdMYXllcihib29sIGhhc01hc2ssIGJvb2wgaGFzQ2xpcFBhdGgp
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1fbWFza0xheWVyKSB7Ci0gICAgICAgICAgICBt
X21hc2tMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoIm1hc2siLCByZXF1aXJlZExheWVyVHlw
ZSk7CisgICAgICAgICAgICBtX21hc2tMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoIm1hc2si
X3MsIHJlcXVpcmVkTGF5ZXJUeXBlKTsKICAgICAgICAgICAgIGxheWVyQ2hhbmdlZCA9IHRydWU7
CiAgICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldE1hc2tMYXllcihtX21hc2tMYXllci5j
b3B5UmVmKCkpOwogICAgICAgICAgICAgLy8gV2UgbmVlZCBhIGdlb21ldHJ5IHVwZGF0ZSB0byBz
aXplIHRoZSBuZXcgbWFzayBsYXllci4KQEAgLTIzMDgsNyArMjMwOCw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVDaGlsZENsaXBwaW5nU3RyYXRlZ3koYm9vbCBuZWVkc0Rlc2Nl
bmRhbnRzQ2xpcHBpCiAKICAgICBhdXRvKiBjbGlwcGluZ0xheWVyID0gdGhpcy0+Y2xpcHBpbmdM
YXllcigpOwogICAgIGlmIChuZWVkc0NsaXBNYXNrTGF5ZXIoKSkgewotICAgICAgICBtX2NoaWxk
Q2xpcHBpbmdNYXNrTGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJjaGlsZCBjbGlwcGluZyBt
YXNrIik7CisgICAgICAgIG1fY2hpbGRDbGlwcGluZ01hc2tMYXllciA9IGNyZWF0ZUdyYXBoaWNz
TGF5ZXIoImNoaWxkIGNsaXBwaW5nIG1hc2siX3MpOwogICAgICAgICBtX2NoaWxkQ2xpcHBpbmdN
YXNrTGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICAgICAgbV9jaGlsZENsaXBwaW5n
TWFza0xheWVyLT5zZXRQYWludGluZ1BoYXNlKHsgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2U6
OkNoaWxkQ2xpcHBpbmdNYXNrIH0pOwogICAgICAgICBpZiAoY2xpcHBpbmdMYXllcikKQEAgLTIz
MjcsMTMgKzIzMjcsMTMgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVNjcm9sbGlu
Z0xheWVycyhib29sIG5lZWRzU2Nyb2xsaW5nTGF5ZXJzKQogCiAgICAgaWYgKCFtX3Njcm9sbENv
bnRhaW5lckxheWVyKSB7CiAgICAgICAgIC8vIE91dGVyIGxheWVyIHdoaWNoIGNvcnJlc3BvbmRz
IHdpdGggdGhlIHNjcm9sbCB2aWV3LiBUaGlzIG5ldmVyIHBhaW50cyBjb250ZW50LgotICAgICAg
ICBtX3Njcm9sbENvbnRhaW5lckxheWVyID0gY3JlYXRlR3JhcGhpY3NMYXllcigic2Nyb2xsIGNv
bnRhaW5lciIsIEdyYXBoaWNzTGF5ZXI6OlR5cGU6OlNjcm9sbENvbnRhaW5lcik7CisgICAgICAg
IG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJzY3JvbGwgY29u
dGFpbmVyIl9zLCBHcmFwaGljc0xheWVyOjpUeXBlOjpTY3JvbGxDb250YWluZXIpOwogICAgICAg
ICBtX3Njcm9sbENvbnRhaW5lckxheWVyLT5zZXRQYWludGluZ1BoYXNlKHsgfSk7CiAgICAgICAg
IG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7CiAgICAgICAg
IG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAKICAgICAg
ICAgLy8gSW5uZXIgbGF5ZXIgd2hpY2ggcmVuZGVycyB0aGUgY29udGVudCB0aGF0IHNjcm9sbHMu
Ci0gICAgICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyID0gY3JlYXRlR3JhcGhpY3NMYXllcigi
c2Nyb2xsZWQgY29udGVudHMiLCBHcmFwaGljc0xheWVyOjpUeXBlOjpTY3JvbGxlZENvbnRlbnRz
KTsKKyAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVy
KCJzY3JvbGxlZCBjb250ZW50cyJfcywgR3JhcGhpY3NMYXllcjo6VHlwZTo6U2Nyb2xsZWRDb250
ZW50cyk7CiAgICAgICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLT5zZXREcmF3c0NvbnRlbnQo
dHJ1ZSk7CiAgICAgICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLT5zZXRBbmNob3JQb2ludCh7
IH0pOwogICAgICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVyLT5hZGRDaGlsZCgqbV9zY3JvbGxl
ZENvbnRlbnRzTGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCcmVhay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVh
ay5oCmluZGV4IDg0MzI2NjNjMTc3ZmNjNGIxMjU1YzM1Y2QxM2YzZDQwZTMxNzI1YmYuLjllOWUx
ZTM5OTRiMWM5ZWQ5Mzg0YzU4YjFmYzcxZGFjYjllYTMyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgflJlbmRlckxpbmVCcmVhaygpOwogCiAgICAgLy8gRklYTUU6IFRoZSBsaWVzIGhl
cmUga2VlcCByZW5kZXIgdHJlZSBkdW1wIGJhc2VkIHRlc3QgcmVzdWx0cyB1bmNoYW5nZWQuCi0g
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNXQlIg
PyAiUmVuZGVyV29yZEJyZWFrIiA6ICJSZW5kZXJCUiI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVu
ZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNXQlIgPyAiUmVuZGVyV29yZEJyZWFr
Il9zIDogIlJlbmRlckJSIl9zOyB9CiAKICAgICBib29sIGlzV0JSKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pc1dCUjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
aAppbmRleCBkNzQ4ZDBmODQ5MDQ0OWJjOGM2ZmIxNGE5NmNhZmY4ZTgyZTZjMDg2Li44NTdkODQ4
Mzc1YTQ2Mjg0NDhmYWY1ZmFkM2JkYzk1YzM2MjU5MmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJMaXN0Qm94IjsgfQorICAgIEFTQ0lJ
TGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckxpc3RC
b3giX3M7IH0KIAogICAgIGJvb2wgaXNMaXN0Qm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCmluZGV4
IDg1MGRkZWNhOGU5NDU2MDM4MGFkOTViNjUxMTFiYzdkOThhNWY5YjYuLjZhYTUxOTJjMmIzYTNi
ZmE5NDE4YjcwZTdkNTIzOTFjMTk4ZTI3NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0SXRlbS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5S
ZXZlcnNlZE9yZGVyZWRMaXN0KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJMaXN0SXRlbSI7IH0KKyAg
ICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJM
aXN0SXRlbSJfczsgfQogCiAgICAgYm9vbCBpc0xpc3RJdGVtKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmgKaW5kZXggY2NmOGFiZmQ5ZTE0OGIwNzEzNzMyZWM3NjY3ZmM3N2VjMTBjMTA0ZS4uM2Vk
YmZlMTRjZmQ1ZDk5NjAwYzQxYmM2YjJjZTVkODk3NDE1YjcwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIGZpbmFsOwotICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTGlzdE1hcmtl
ciI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJSZW5kZXJMaXN0TWFya2VyIl9zOyB9CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNh
bFdpZHRocygpIGZpbmFsOwogICAgIGJvb2wgaXNMaXN0TWFya2VyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZWRpYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKaW5kZXgg
MTAxZGQwNDcwMjdlMjc3MTk5ZTVjMzI2ZjRjNzIwZDc4N2I2ZjA1MC4uZGNhOGM3NDQ1MzFmZTc0
YzhiOGQ2ZmU0ZWUyMzdiNTA4MDU2YjVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lZGlhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lZGlhLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgY2FuSGF2ZUNo
aWxkcmVuKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNZWRpYSI7IH0KKyAg
ICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJNZWRpYSJfczsgfQogICAgIGJvb2wgaXNNZWRpYSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KICAgICBib29sIGlzSW1hZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAppbmRleCAz
YzAyYzkwMmFmNmIzNTIzZWY4Zjc5ZjM3OTUzMjFlZjIyMzUxYWI5Li42OGE5MTg4ZGJmYjkyNDA1
ZmI4YmVmOTFiZTU5NTRiZjkwNGM0M2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVudUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVudUxpc3QuaApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzQ29u
dHJvbENsaXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBjYW5I
YXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJNZW51TGlzdCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNZW51TGlzdCJfczsgfQogCiAgICAgdm9pZCBjb21wdXRl
SW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91
dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWV0ZXIuaAppbmRleCAxYzM3MDYzMTRjOWRmNWQyODljZmNkYWZmMzVhN2EwMDIwYmJm
ZGFmLi5jYTE3NDMxYzlmZDI0MGIwYjc1ODE3NjE4ODU2Y2FiNGU4MjlhNzYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaApAQCAtMzksNyArMzksNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoKCkgb3ZlcnJpZGU7CiAgICAgTG9naWNhbEV4dGVu
dENvbXB1dGVkVmFsdWVzIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhl
aWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWV0ZXIi
OyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyTWV0ZXIiX3M7IH0KICAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNb2RlbC5o
CmluZGV4IDk0MTk3MTljMDI3MGJmNDczYWY1YWQzNmMzZjIxZDE1MTUzYTlhNDcuLjM3YTQ5MjJh
ZmU0MWZkYzI1MGIwOTU4NDhiNGRkOGU1N2MwYjhkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNb2RlbC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKLSAgICBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1vZGVsIjsgfQorICAgIEFTQ0lJTGl0
ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1vZGVsIl9zOyB9
CiAgICAgYm9vbCBpc1JlbmRlck1vZGVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCmluZGV4IDBhNjAzM2E3
YmI1YzdiMTViYzJhZGU1ZGVmNmZhNDEzZDNlZWMwMjkuLjgzZmUyZDk1MWQ2NzExYjk3MmQ2YWU5
MDhmNDFkNTk5MmY4MzViNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCkBAIC00OSw5ICs0OSw5IEBAIFJlbmRlck11bHRpQ29s
dW1uRmxvdzo6UmVuZGVyTXVsdGlDb2x1bW5GbG93KERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVy
U3R5bGUmJiBzCiAKIFJlbmRlck11bHRpQ29sdW1uRmxvdzo6flJlbmRlck11bHRpQ29sdW1uRmxv
dygpID0gZGVmYXVsdDsKIAotY29uc3QgY2hhciogUmVuZGVyTXVsdGlDb2x1bW5GbG93OjpyZW5k
ZXJOYW1lKCkgY29uc3QKK0FTQ0lJTGl0ZXJhbCBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OnJlbmRl
ck5hbWUoKSBjb25zdAogeyAgICAKLSAgICByZXR1cm4gIlJlbmRlck11bHRpQ29sdW1uRmxvd1Ro
cmVhZCI7CisgICAgcmV0dXJuICJSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQiX3M7CiB9CiAK
IFJlbmRlck11bHRpQ29sdW1uU2V0KiBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OmZpcnN0TXVsdGlD
b2x1bW5TZXQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvdy5oCmluZGV4IDA1ZDllNzZhYTA2ZDZiMWYyYzk0MzgzZTQ4ZDU1MjJiMmIx
YjMwNDguLmFiNjVjOWJjOGEyMDcyYTUzMTUwMDhmNjI2YmEyMGY3NTRiYzVmMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmgKQEAgLTEw
MCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck11bHRp
Q29sdW1uRmxvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVNDSUlMaXRlcmFsIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFkZEZyYWdtZW50VG9UaHJlYWQoUmVu
ZGVyRnJhZ21lbnRDb250YWluZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxCZVJlbW92ZWRG
cm9tVHJlZShJc0ludGVybmFsTW92ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFnbWVudGVkRmxv
d0Rlc2NlbmRhbnRCb3hMYWlkT3V0KFJlbmRlckJveCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXggZTM5NmZh
MTIyODI5OGQ1MGQ2MGQ2YWZmNzZjZDQyY2VlMGUyYmJhNC4uMGRlNzMzZDI0ZTE0NmQ1MDhhMGNh
YjlkNDkzZGVkNjFlODM2NWVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBAIC0xMDQ2LDkgKzEwNDYsOSBAQCB2b2lkIFJlbmRl
ck11bHRpQ29sdW1uU2V0Ojp1cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmIHJlc3Vs
dCwgY29uc3QgTGF5bwogICAgIH0KIH0KIAotY29uc3QgY2hhciogUmVuZGVyTXVsdGlDb2x1bW5T
ZXQ6OnJlbmRlck5hbWUoKSBjb25zdAorQVNDSUlMaXRlcmFsIFJlbmRlck11bHRpQ29sdW1uU2V0
OjpyZW5kZXJOYW1lKCkgY29uc3QKIHsgICAgCi0gICAgcmV0dXJuICJSZW5kZXJNdWx0aUNvbHVt
blNldCI7CisgICAgcmV0dXJuICJSZW5kZXJNdWx0aUNvbHVtblNldCJfczsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAppbmRleCA0
ODgyNjAzYTQyNDA0YWI2YzdmZjA0MzljNTY2MGRlYjY2N2Q2ZDQ0Li44MDRlODhjYTkyNDIyNWRi
YTk0ZmFhZjY3NWNkNjFmMGMwNjhhMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaApAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAK
ICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYs
IGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFpbmVyKikgb3ZlcnJpZGU7CiAKLSAgICBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVNDSUlMaXRlcmFsIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFVuaXQgY2FsY3VsYXRlTWF4Q29s
dW1uSGVpZ2h0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwCmluZGV4
IDZlZmM1MTViMmU0ODljMGMzNjExMjRhNzcyZDU2N2E0MmM4MDJhZWYuLmRlYzQyNzUyZGVkN2Nm
YTMwOGI3ZTQzOGRjMGY3MjZmYmUwMTRmYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVy
LmNwcApAQCAtNTMsOSArNTMsOSBAQCBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRl
cjo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIoUmVuZGVyTQogewogfQogCi1j
b25zdCBjaGFyKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcjo6cmVuZGVyTmFt
ZSgpIGNvbnN0CitBU0NJSUxpdGVyYWwgUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXI6OnJlbmRlck5hbWUoKSBjb25zdAogewotICAgIHJldHVybiAiUmVuZGVyTXVsdGlDb2x1bW5T
cGFubmVyUGxhY2Vob2xkZXIiOworICAgIHJldHVybiAiUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVy
UGxhY2Vob2xkZXIiX3M7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhv
bGRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5l
clBsYWNlaG9sZGVyLmgKaW5kZXggNjUwZDQ5MTRjZDIyMjY5MTY0NmQ5MWZjZTdjYjM3ZjQzYWU3
ZjJmYS4uZDA3ZWFkNGQxNjlkY2U4ZDI3N2IyMjg0ZGZmZjk2ZDcxOTE4YTM4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNl
aG9sZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
U3Bhbm5lclBsYWNlaG9sZGVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgeyB9
Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFTQ0lJ
TGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBXZWFrUHRyPFJlbmRl
ckJveD4gbV9zcGFubmVyOwogICAgIFdlYWtQdHI8UmVuZGVyTXVsdGlDb2x1bW5GbG93PiBtX2Zy
YWdtZW50ZWRGbG93OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApp
bmRleCAxNTkwZDIwZGQwYjJiMmQ4YzRmYzZjYmIzOTQ0OGY0ZTRhZDUwMDRkLi5lYTFmZTk0MjA1
OWQ0N2IwYzg2NzcyODFkZDQ5OGI1Y2RkZDZmMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTIyNiwxMyArMTIyNiwxNCBAQCB2b2lkIFJlbmRlck9i
amVjdDo6b3V0cHV0UmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHN0cmVhbSwgYm9vbCBtYXJrLCBp
bnQgZGVwdGgpCiAgICAgaWYgKG5vZGUoKSkKICAgICAgICAgc3RyZWFtIDw8IG5vZGUoKS0+bm9k
ZU5hbWUoKS51dGY4KCkuZGF0YSgpIDw8ICIgIjsKIAotICAgIFN0cmluZyBuYW1lID0gcmVuZGVy
TmFtZSgpOworICAgIEFTQ0lJTGl0ZXJhbCBuYW1lID0gcmVuZGVyTmFtZSgpOworICAgIFN0cmlu
Z1ZpZXcgbmFtZVZpZXcgeyBuYW1lIH07CiAgICAgLy8gRklYTUU6IFJlbmRlcmVyJ3MgbmFtZSBz
aG91bGQgbm90IGluY2x1ZGUgcHJvcGVydHkgdmFsdWUgbGlzdGluZy4KLSAgICBpbnQgcG9zID0g
bmFtZS5maW5kKCcoJyk7CisgICAgaW50IHBvcyA9IG5hbWVWaWV3LmZpbmQoJygnKTsKICAgICBp
ZiAocG9zID4gMCkKLSAgICAgICAgc3RyZWFtIDw8IG5hbWUubGVmdChwb3MgLSAxKS51dGY4KCku
ZGF0YSgpOworICAgICAgICBzdHJlYW0gPDwgbmFtZVZpZXcubGVmdChwb3MgLSAxKS5jaGFyYWN0
ZXJzOCgpOwogICAgIGVsc2UKLSAgICAgICAgc3RyZWFtIDw8IG5hbWUudXRmOCgpLmRhdGEoKTsK
KyAgICAgICAgc3RyZWFtIDw8IG5hbWVWaWV3OwogCiAgICAgaWYgKGlzPFJlbmRlckJveD4oKnRo
aXMpKSB7CiAgICAgICAgIGF1dG8mIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDljZmVlOGI4
YjU4ZjJhODBiN2RjMGU0MmQyOTgyN2IzMjI0Y2Y1MDYuLmZjYWNmMzg1NGM4ZWE0ZTA4MjdhN2Jl
MjIwZDQ5MmYyNTU3ZTZhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJUaGVtZSYgdGhlbWUo
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgPSAwOwogCiAg
ICAgUmVuZGVyRWxlbWVudCogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAg
ICBib29sIGlzRGVzY2VuZGFudE9mKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuaAppbmRleCAzZTEyYWM3MDQwN2YyZjMx
NmEzZjE5YzBhZDk4YmUxOTc4NzNiZGE5Li43ZTdmMjk2OTVjOGYxNDFkNzhmNTM3YTEwZWE3NDg0
ZDkxM2FkZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJv
Z3Jlc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuaApA
QCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgSFRNTFByb2dyZXNzRWxlbWVudCogcHJvZ3Jl
c3NFbGVtZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJQcm9ncmVzcyI7IH0KKyAgICBBU0NJ
SUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJQcm9n
cmVzcyJfczsgfQogICAgIGJvb2wgaXNQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KICAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxvZ2ljYWxI
ZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNv
bnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUXVvdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5oCmluZGV4
IGEyZjI2YzY3YzQ4MDZmNjljZjU4NjVjOTkzNWQzZDBhYjM1OWNkYWUuLmFhNGY2YTc3MWU3Nzg2
NmQwMTRhZjdkZmNiMDg4MTc0YTY0YTM5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJRdW90ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJRdW90ZS5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVJlbmRl
cmVyKFJlbmRlclRyZWVCdWlsZGVyJiwgUmVuZGVyUXVvdGUqIHByZXZpb3VzUXVvdGUpOwogCiBw
cml2YXRlOgotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyUXVvdGUiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUXVvdGUiX3M7IH0KICAgICBib29sIGlzUXVvdGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc09wZW4oKSBjb25z
dDsKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVy
U3R5bGUqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmgKaW5kZXggYmNjYTYzNGM2MzU5MjM0NTE3MWUxZmQzOWRjMTQzOWEwNDBlNWQwOS4uNDQzYTEy
Y2ZjMDQ1NGRlNDA2ZWVjOGNmYTQ5NzhkNjk3OTYwOTQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBM
YXlvdXRVbml0IGNvbXB1dGVDb25zdHJhaW5lZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJl
ZmVycmVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUmVuZGVyQm94KiBlbWJlZGRlZENvbnRlbnRC
b3goKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSZXBsYWNlZCI7IH0KKyAgICBBU0NJSUxpdGVy
YWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSZXBsYWNlZCJf
czsgfQogCiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGljYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaAppbmRl
eCAyY2U3ODYxMDFiNDdlMzJjM2RiOGI4N2ViNjVhMDE2NDIzMWFiMzdjLi4zMjhkYThmZGExMzgy
MmIzZmE0ODBlMzMwZWJiZTZhZGU0YmFjM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsaWNhLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIFJlbmRlclJlcGxp
Y2EoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSZXBsaWNh
KCk7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIlJlbmRlclJlcGxpY2EiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVwbGljYSJfczsgfQogCiAgICAgYm9vbCByZXF1
aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJ1YnkuaAppbmRleCBhM2ExYzAyNDQ2ODNhODdhM2RlZGI1OWE0NDYx
ZGFmZWE4MGQzOWFhLi5mNWJlN2I3YjRhODFlMDUxODBkMzVhMzAzMGYxMWEyMjMxZTllZDRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNSdWJ5SW5saW5lKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUnVieSAoaW5saW5lKSI7IH0KKyAgICBB
U0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJS
dWJ5IChpbmxpbmUpIl9zOyB9CiAgICAgYm9vbCBjcmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKQEAgLTc3LDcgKzc3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNSdWJ5QmxvY2soKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5IChibG9jaykiOyB9CisgICAgQVND
SUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUnVi
eSAoYmxvY2spIl9zOyB9CiAgICAgYm9vbCBjcmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnlCYXNlLmgKaW5kZXggMTIyMTY3ZmFjOTk1MTkzMWNiMTg5OTMyMzIzODU2MTQw
ZWRkYjI3MS4uNGRlNDg4OWQ4MWE3YjU0MDViYmUwNTgzYzQ4OGY5N2QxYTI3MzRlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKQEAgLTQyLDcgKzQyLDcgQEAg
cHVibGljOgogICAgIFJlbmRlclJ1YnlCYXNlKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAg
ICAgdmlydHVhbCB+UmVuZGVyUnVieUJhc2UoKTsKICAgICAKLSAgICBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1YnlCYXNlIChhbm9ueW1v
dXMpIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlclJ1YnlCYXNlIChhbm9ueW1vdXMpIl9zOyB9CiAgICAgCiAgICAgUmVuZGVy
UnVieVJ1biogcnVieVJ1bigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJ1YnlSdW4uaAppbmRleCAzNTg1MTk3OGMyNjhiYWIwOGY3MmMyNDRmOGZkYTUzZjRkMDM0ZWMz
Li4zY2UxNjYwNmZjOWJiN2VkNTMyOGRkOWU4MTBlOGZhZjE0ZjM1YmQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIGJvb2wgaXNSdWJ5UnVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyUnVieVJ1biAoYW5vbnltb3VzKSI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5UnVuIChhbm9ueW1v
dXMpIl9zOyB9CiAgICAgYm9vbCBjcmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGNhbkRyb3BBbm9ueW1vdXNCbG9ja0NoaWxk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUnVieVRleHQuaAppbmRleCA2MmM1ZWU2ZWJiNDZmNTEwZWExYjI3ODNiMGI4
YTFjOGE1MTc3M2QwLi4wODY4YjgwMjFiMzE4NGU1YWU1ZDI5ZGJkMTVlMzA1ZDg0ZGRmYmRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaApAQCAtNDksNyArNDks
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5CcmVha0JlZm9yZShjb25zdCBMYXp5TGluZUJyZWFr
SXRlcmF0b3ImKSBjb25zdDsKICAgIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1YnlUZXh0IjsgfQorICAgIEFT
Q0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1
YnlUZXh0Il9zOyB9CiAgICAgYm9vbCBpc1J1YnlUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCmluZGV4IDdk
ZmM0YjNhNWMyNjZmMmEzY2E2NGQ1YzQ3N2FhYWMwMjdlMmJjYmYuLmEzZjhlN2U5NmM2MmI5MTBj
NWYxZmE5NTU5MDZjNTc1MmJhNDhiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclBhcnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdmlydHVhbCB+UmVuZGVyU2Nyb2xsYmFyUGFydCgpOwogCi0gICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTY3JvbGxiYXJQYXJ0Ijsg
fQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlclNjcm9sbGJhclBhcnQiX3M7IH0KICAgICAKICAgICBib29sIHJlcXVpcmVzTGF5ZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2xpZGVyLmgKaW5kZXggM2JhMDUxMDU3ODhmMWZjNzkwYjZjNDEzZTUyNzM0OTM3
ZDMyYTY3NS4uN2JmYmEwZmI2Zjc4OGY4MDdkODVkMmZjZmY3MjY1YjkzZmQ3ZWZkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgZG91YmxlIHZhbHVlUmF0aW8oKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNsaWRl
ciI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJSZW5kZXJTbGlkZXIiX3M7IH0KICAgICBib29sIGlzU2xpZGVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRp
b25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKaW5kZXggYzVlMmI1OTNmMjc2ZDhjMDBlNmU4
NzMwNzBmMTIxMDdlYjkwZjY1NC4uYzFiMWRjOWFmN2NjZDZmOGY5MDA5ZGNhNTNkN2QyYjJkMGM0
ZWZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKQEAgLTI4MCw3ICsy
ODAsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVy
VGFibGU+IGNyZWF0ZVRhYmxlV2l0aFN0eWxlKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUm
KTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyVGFibGUiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyVGFibGUiX3M7IH0KIAogICAgIGJvb2wgaXNUYWJsZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5oCmluZGV4IDM4NGJmODhlYWViMWFkYTk0YTIwODYxZGUxZWQ3ODYx
NWZmZGNhNDIuLjFmOGQ5OWEyZDc5Njc3YzljYTJjNDYwMmVhMWE4ZDA1MTAxZDAzM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTE0Miw3ICsxNDIs
NyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJUYWJsZUNlbGw+IGNy
ZWF0ZVRhYmxlQ2VsbFdpdGhTdHlsZShEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJik7CiAK
LSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKGlz
QW5vbnltb3VzKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlQ2VsbCAoYW5v
bnltb3VzKSIgOiAiUmVuZGVyVGFibGVDZWxsIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJO
YW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKGlzQW5vbnltb3VzKCkgfHwgaXNQc2V1ZG9F
bGVtZW50KCkpID8gIlJlbmRlclRhYmxlQ2VsbCAoYW5vbnltb3VzKSJfcyA6ICJSZW5kZXJUYWJs
ZUNlbGwiX3M7IH0KIAogICAgIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgK
aW5kZXggYTlkMWNhODY1MWRiODVjNzBlOTQyNWMzMjhhOWIwNDdlYTk5NmE1MC4uOGU3YzFmYjlj
YTJkMjYxZDBlNjRiYmU3NDUzNmRmOGEyZTc0MTAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ29sLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZvaWQg
dXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclRhYmxlQ29sIjsg
fQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlclRhYmxlQ29sIl9zOyB9CiAgICAgYm9vbCBpc1JlbmRlclRhYmxlQ29sKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMoKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKaW5kZXggYmE3ZWMwOWU3MWZiODk2ZTIw
YmIxMWZhM2YyM2VhZWMwNzg0NjU3NS4uOTQyN2Y2YWNmNzE5NWE5ZWIyNmNhNGYwMDQwMjM4MGY4
YzQ0Yjc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Um93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKQEAg
LTY4LDcgKzY4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgUmVuZGVyUHRyPFJl
bmRlclRhYmxlUm93PiBjcmVhdGVUYWJsZVJvd1dpdGhTdHlsZShEb2N1bWVudCYsIGNvbnN0IFJl
bmRlclN0eWxlJik7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gKGlzQW5vbnltb3VzKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJlbmRl
clRhYmxlUm93IChhbm9ueW1vdXMpIiA6ICJSZW5kZXJUYWJsZVJvdyI7IH0KKyAgICBBU0NJSUxp
dGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIChpc0Fub255bW91cygp
IHx8IGlzUHNldWRvRWxlbWVudCgpKSA/ICJSZW5kZXJUYWJsZVJvdyAoYW5vbnltb3VzKSJfcyA6
ICJSZW5kZXJUYWJsZVJvdyJfczsgfQogCiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCB3aWxsQmVSZW1vdmVkRnJvbVRy
ZWUoSXNJbnRlcm5hbE1vdmUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlU2VjdGlvbi5oCmluZGV4IDg1Y2IxMmRiOTNiYjE5MmFmYjY1NmIxNjE0ZDI5
ZjJkZDYzZWUxNGEuLjU0MzM0NzQ1YjRlOGE2OWMyODcyMDBjZjMwY2QyODczMjg0ZGE4MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKQEAgLTE1
OSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgICAgICBEb05vdEluY2x1ZGVBbGxJbnRlcnNlY3Rp
bmdDZWxscwogICAgIH07CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gKGlzQW5vbnltb3VzKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJl
bmRlclRhYmxlU2VjdGlvbiAoYW5vbnltb3VzKSIgOiAiUmVuZGVyVGFibGVTZWN0aW9uIjsgfQor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKGlz
QW5vbnltb3VzKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlU2VjdGlvbiAo
YW5vbnltb3VzKSJfcyA6ICJSZW5kZXJUYWJsZVNlY3Rpb24iX3M7IH0KIAogICAgIGJvb2wgY2Fu
SGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggMTk5MTE5NjgxMTJhODYzZDkxYmZl
MTQ5NmYwNDM4MjAxZWE4NzY3Yi4uZWU4YjQ1ZDdmMzNiM2RhOGFlZDRiZDhkZTFhZDQ1ZmU2NWU5
YjRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMjIxLDkg
KzIyMSw5IEBAIFJlbmRlclRleHQ6On5SZW5kZXJUZXh0KCkKICAgICBBU1NFUlQoIW9yaWdpbmFs
VGV4dE1hcCgpLmNvbnRhaW5zKHRoaXMpKTsKIH0KIAotY29uc3QgY2hhciogUmVuZGVyVGV4dDo6
cmVuZGVyTmFtZSgpIGNvbnN0CitBU0NJSUxpdGVyYWwgUmVuZGVyVGV4dDo6cmVuZGVyTmFtZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuICJSZW5kZXJUZXh0IjsKKyAgICByZXR1cm4gIlJlbmRlclRl
eHQiX3M7CiB9CiAKIFRleHQqIFJlbmRlclRleHQ6OnRleHROb2RlKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IDkyNDQ2NzIxNjAyZmUyOWQ3ZWU5N2FhNzNm
OTBjYTM4YzU5MmM4ODYuLjE2MmQxNTkyZjRhNzhiYTNmMzQ5NzNjY2U4MzVhNWY4ZTkyODgxNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtMTk2LDcgKzE5Niw3IEBA
IHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgUmVuZGVyVGV4dChOb2RlJiwgY29uc3QgU3RyaW5n
Jik7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
QVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgY2Fu
SGF2ZUNoaWxkcmVuKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAppbmRleCAyZTkwNTM0ZmZkOGRh
ODNiN2RjNTRkNDZmYTdkZWYxNjMxOWJiYjQzLi5mYWM5NDAyODIwNzAyOTg5YmY3MmVkMjQyNTY3
OGJmYjgyYmQ2NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuaApAQCAtNzAsNyArNzAsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZvaWQg
ZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJUZXh0Q29udHJvbCI7IH0KKyAgICBBU0NJ
SUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJUZXh0
Q29udHJvbCJfczsgfQogICAgIGJvb2wgaXNUZXh0Q29udHJvbCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91
dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAK
aW5kZXggMjZjZDMyYTU0ZDY3MmVkNjAzMDU4MWI5MjZjZDRlNmY0MGNmMzE2NC4uNjc0NDBiODgx
ZDVlM2JiOTc3NDFkNGJhMTZkNjE0YmRhODhiNjk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMTMwLDkgKzEzMCw5IEBAIHN0YXRpYyB2
b2lkIHByaW50Qm9yZGVyU3R5bGUoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEJvcmRlclN0eWxlIGJv
cmRlclN0eWxlKQogc3RhdGljIFN0cmluZyBnZXRUYWdOYW1lKE5vZGUqIG4pCiB7CiAgICAgaWYg
KG4tPmlzRG9jdW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJu
ICIiX3M7CiAgICAgaWYgKG4tPm5vZGVUeXBlKCkgPT0gTm9kZTo6Q09NTUVOVF9OT0RFKQotICAg
ICAgICByZXR1cm4gIkNPTU1FTlQiOworICAgICAgICByZXR1cm4gIkNPTU1FTlQiX3M7CiAgICAg
cmV0dXJuIG4tPm5vZGVOYW1lKCk7CiB9CiAKQEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgaGFzTm9uRW1wdHlTaWJsaW5nKGNvbnN0IFJlbmRlcklubGluZSYgaW5saW5lUmVu
ZGVyZXIpCiAKIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZs
YWc+IGJlaGF2aW9yKQogewotICAgIHRzIDw8IG8ucmVuZGVyTmFtZSgpOworICAgIHRzIDw8IG8u
cmVuZGVyTmFtZSgpLmNoYXJhY3RlcnMoKTsKIAogICAgIGlmIChiZWhhdmlvci5jb250YWlucyhS
ZW5kZXJBc1RleHRGbGFnOjpTaG93QWRkcmVzc2VzKSkKICAgICAgICAgdHMgPDwgIiAiIDw8ICZv
OwpAQCAtNDUxLDEzICs0NTEsMTMgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRl
ck9iamVjdChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoICh0ZXh0WzBdKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgYnVsbGV0OgotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9ICJi
dWxsZXQiOworICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9ICJidWxsZXQiX3M7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBibGFj
a1NxdWFyZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSAiYmxhY2sgc3F1YXJlIjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSAiYmxhY2sgc3F1YXJlIl9zOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ugd2hpdGVC
dWxsZXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gIndoaXRlIGJ1bGxldCI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gIndoaXRlIGJ1bGxldCJfczsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IHF1b3RlQW5kRXNjYXBlTm9uUHJpbnRhYmxlcyh0
ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKaW5kZXggYjRiYTFlNTlk
YzEzYzc3NzExZGY3Zjg0MWU2ZGUyOTQ3MGZlODJiMC4uZDRjNjQ0NDk3OWEzZGIwZmJmOGY2MTcy
MGVhZWVmZGNjYzJhYjRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZGVvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgK
QEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBw
ZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopIGZpbmFsOwogCi0gICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJWaWRlbyI7IH0KKyAgICBBU0NJ
SUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJWaWRlbyJf
czsgfQogCiAgICAgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIGJvb2wgaXNWaWRlbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDE3MTY3MzM4ZjZjMmQwYmM0Zjhk
NGUyZTY5NTc5NGI1NjBjMTgwM2YuLmExYjRlNWM3NDcyNTFmZTk5YTI5ZjE3OTZlMGQ1NGQ0YTk2
ZTQyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyVmlldyhEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwog
ICAgIHZpcnR1YWwgflJlbmRlclZpZXcoKTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyVmlldyI7IH0KKyAgICBBU0NJSUxpdGVy
YWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJWaWV3Il9zOyB9
CiAKICAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MQmxvY2suaAppbmRleCAyZmM4YTE2YjEzYjAwNGU5YTFkZTVjZTRkOTc3ZjQyMjZjZGExM2Fh
Li42YTkzYzBmNWU0MjVhMzcyZjBhMDk3YzM3YzQ2MjRmZmNmMTU3ODI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCkBAIC05
MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0
aE1MQmxvY2soKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxCbG9jayI7
IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJSZW5kZXJNYXRoTUxCbG9jayJfczsgfQogICAgIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgY2FuRHJvcEFub255bW91c0Jsb2NrQ2hp
bGQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgbGF5b3V0SXRlbXMo
Ym9vbCByZWxheW91dENoaWxkcmVuKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFRhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiUmVuZGVyTWF0aE1MVGFibGUiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MVGFibGUiX3M7IH0KICAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAK
ICAgICBSZWY8TWF0aE1MU3R5bGU+IG1fbWF0aE1MU3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaAppbmRleCBiOWRjMWNk
NzI2MjRkMzA4N2JmMWM3YWE0ZTQ4ODJlZDJhOTNlOWUwLi5hYjdmNzM0ZjAzODg3ZmEzNGFkYTFi
YTc5MmI3Zjc5ZWI2Nzk3NDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxGZW5jZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJSZW5kZXJNYXRoTUxGZW5jZWQiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRl
ck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MRmVuY2VkIl9zOyB9CiAK
ICAgICBTdHJpbmcgbV9vcGVuOwogICAgIFN0cmluZyBtX2Nsb3NlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCmluZGV4
IGY4NzU2MjdmNDhhMjU1ZGQxNzFjZTkxMzg2ODNhYTYxNzlkMTkyNzAuLjEwNGIyN2E3M2U5MWIy
MTJjZTQwNGVkMWQxZTA3MTE2MWRjMWQxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxGcmFjdGlvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTEZyYWN0aW9uIjsgfQorICAgIEFT
Q0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhN
TEZyYWN0aW9uIl9zOyB9CiAKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExh
eW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwX2x1KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgKaW5kZXggZmJkNzlm
ZDRlM2RmMDM3MTRmMDFkZTBjYmU2YTE2ZWFmMjAwMzUwMS4uM2U4YTU3MzFjM2E4ZjEwODE1YTZk
ZTdmMGEwYzkxZTAzYzRkMzNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxNYXRoKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiUmVuZGVyTWF0aE1MTWF0aCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxNYXRoIl9zOyB9CiAKICAgICB2b2lk
IGNlbnRlckNoaWxkcmVuKExheW91dFVuaXQgY29udGVudFdpZHRoKTsKICAgICB2b2lkIGxheW91
dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdo
dCA9IDBfbHUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oCmluZGV4IGQxZGU3NTRkZTI1ZGY1MDUwOTUwN2M5
MzFiMWEwNjk5NWM4YjJlNTkuLmJhZGQzNTg5MTc3NmRlYTVkMGM5ZWQ2MTcwNTZiNTI0OGE2Zjg3
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MTWVuY2xvc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE1lbmNsb3NlLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIFJlbmRlck1h
dGhNTE1lbmNsb3NlKE1hdGhNTE1lbmNsb3NlRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiBw
cml2YXRlOgotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAiUmVuZGVyTWF0aE1MTWVuY2xvc2UiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MTWVuY2xvc2UiX3M7IH0KICAgICB2
b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlv
dXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWln
aHQgPSAwX2x1KSBmaW5hbDsKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKaW5kZXggNTIxODFiNDZkMGNkYmU3YjQ1Y2ZkN2Y5
ZjMxZmJhYTI3MTJlOWQyNS4uNjlmMDUwOTc4MzkwMTM1NmQ1ZGJjMDk1NTA4ODVmZWZiNmI4OWU3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxPcGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MT3BlcmF0b3IuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF5
b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVp
Z2h0ID0gMF9sdSkgZmluYWw7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpIGZpbmFsOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGlzQW5vbnltb3VzKCkgPyAiUmVuZGVyTWF0aE1MT3BlcmF0b3IgKGFub255
bW91cykiIDogIlJlbmRlck1hdGhNTE9wZXJhdG9yIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5k
ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJNYXRo
TUxPcGVyYXRvciAoYW5vbnltb3VzKSJfcyA6ICJSZW5kZXJNYXRoTUxPcGVyYXRvciJfczsgfQog
ICAgIHZvaWQgcGFpbnRDaGlsZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0IExheW91dFBv
aW50JiwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpIGZpbmFsOwogICAg
IGJvb2wgaXNSZW5kZXJNYXRoTUxPcGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KICAgICBib29sIGlzSW52aXNpYmxlT3BlcmF0b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oCmluZGV4IDc0
ODg1ZjM0YTNhNmEwNWZhOTdjOTkzOWQzZWE1Yzg0YzZhMWE3NzMuLjUxNmI2MDMxMDU5NzUwNGY3
ZjExNGYzMjg5YjQ2ZmIzMjBjOTA1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiAgICAgUmVuZGVyTWF0aE1MUGFkZGVkKE1hdGhNTFBhZGRlZEVsZW1lbnQmLCBSZW5kZXJT
dHlsZSYmKTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTFBhZGRlZCI7IH0KKyAgICBBU0NJSUxpdGVyYWwg
cmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxQYWRkZWQiX3M7
IH0KICAgICBib29sIGlzUmVuZGVyTWF0aE1MUGFkZGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
b3QuaAppbmRleCA5MGNhZTBhMjVlNDI4NTU0MGU4NWJkNzQ0MjU3ZDJmYjMwOTdlNjRkLi5hMjNj
ZmIwNmZkNGQ2NmY3YTgwZjkxYjE2YzJmYTlhMjRkODk2YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaApAQCAtNDksNyArNDks
NyBAQCBwcml2YXRlOgogICAgIFJlbmRlckJveCYgZ2V0QmFzZSgpIGNvbnN0OwogICAgIFJlbmRl
ckJveCYgZ2V0SW5kZXgoKSBjb25zdDsKICAgICBib29sIGlzUmVuZGVyTWF0aE1MUm9vdCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTFJvb3QiOyB9CisgICAgQVNDSUlMaXRl
cmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MUm9vdCJf
czsgfQogICAgIE1hdGhNTFJvb3RFbGVtZW50JiBlbGVtZW50KCkgY29uc3Q7CiAgICAgUm9vdFR5
cGUgcm9vdFR5cGUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm93LmgKaW5kZXggMzdiYjYwYWE3Njc1MmRlMTI2NDA2MTk5ODE0
OTc2ODMwMWU4OTUyNi4uODIyNWQ3NTcxNjYwMWNjZmVhMTc4OTQ1MTA5YmNkOGQzNzRkMjdiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
dy5oCkBAIC01MSw3ICs1MSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBib29sIGlz
UmVuZGVyTWF0aE1MUm93KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1M
Um93IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlck1hdGhNTFJvdyJfczsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxTY3JpcHRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFNjcmlwdHMuaAppbmRleCBhZGI5MmZlNDg0YmYyMGIwZWRjZmE4YmRiZDE1YzBhMDk5ODQ1MzIz
Li5jZDM5NDMxOWU5YTQ0ODgzMzc5ZmE0YjVmOTZlYzdjZmY1ZmMxNmRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaApA
QCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBib29sIGlzUmVuZGVy
TWF0aE1MU2NyaXB0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhN
TFNjcmlwdHMiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MU2NyaXB0cyJfczsgfQogICAgIE1hdGhNTFNjcmlwdHNF
bGVtZW50OjpTY3JpcHRUeXBlIHNjcmlwdFR5cGUoKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhi
b29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwX2x1
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MU3BhY2UuaAppbmRleCAxOTU5Mjg2NDlhNTE5YTA5ZjEyZmNiZDZlODVjNTRjYWM1
MTY1NTlmLi4xMTM1M2EzMjMzODJlNzU3OGJiOGY4ZDEzMDRiMmM2YzUwNTgxNTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5o
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBNYXRoTUxTcGFjZUVsZW1lbnQmIGVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxTcGFjZUVsZW1lbnQmPihub2Rl
Rm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxTcGFjZSI7IH0KKyAgICBB
U0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRo
TUxTcGFjZSJfczsgfQogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxTcGFjZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9i
amVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKaW5k
ZXggZjgzOWVlYzAzNTEyOTVkODZjMTQyNjI0MzIwNDI4MDcyODZiNzlhMi4uM2VmNzc1NjUyN2Y2
N2Q5ZWMyOWIyMjAwY2Q4ZThiNDc1YmRhOGIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaApAQCAtNTUsNyArNTUsNyBAQCBw
cm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFRva2VuKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MVG9rZW4iOyB9CisgICAgQVNDSUlM
aXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1M
VG9rZW4iX3M7IH0KICAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYs
IGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfTsKICAgICB2
b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZU1hdGhWYXJpYW50R2x5cGgoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5k
ZXJPdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVu
ZGVyT3Zlci5oCmluZGV4IDNjYWU2YzJjZjdiY2EwYjNmYjVkMDc4YzA2ODllZjE1ODE1YTg3MWYu
LmFiNDJiYzZjNTAzYjVkYzM0MzM3NjBiZThlMDUzY2Q3NThjN2Q0NGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIu
aApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJN
YXRoTUxTY3JpcHRzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlz
UmVuZGVyTWF0aE1MVW5kZXJPdmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0
aE1MVW5kZXJPdmVyIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTFVuZGVyT3ZlciJfczsgfQogICAgIE1hdGhNTFVuZGVy
T3ZlckVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdDsKIAogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCmluZGV4IGMxYjhjNGEzMzJiOTJlZjY4OTBj
ZmZlNmQyNjc2NmZiOWFmMmQ4NmUuLjlmNmFjMDNjNzM5OGQxNDYzNmZiNzU1NDdhMjRkYzUyYzEw
YjAxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVP
dXRzaWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZU91dHNpZGVJbmZvLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBj
aGVja1NoYXBlSW1hZ2VPcmlnaW4oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHlsZUltYWdl
JiBzCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY29uc3QgVVJMJiB1cmwgPSBjYWNoZWRJ
bWFnZS51cmwoKTsKLSAgICBTdHJpbmcgdXJsU3RyaW5nID0gdXJsLmlzTnVsbCgpID8gIicnIiA6
IHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKTsKKyAgICBTdHJpbmcgdXJsU3Ry
aW5nID0gdXJsLmlzTnVsbCgpID8gIicnIl9zIDogdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRU
b0xlbmd0aCgpOwogICAgIGRvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiVW5zYWZlIGF0dGVtcHQgdG8gbG9hZCBV
UkwgIiArIHVybFN0cmluZyArICIuIik7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIu
Y3BwCmluZGV4IDNkYmNjODIzNDUxYmUzZDg1Mjc3MDZhZWNkZWVlZjk5OWNjNTRhMWEuLmVhM2Vl
OTA2YmY0Y2M0OWFmNTZmN2FhNzdkNjI0OGFkNDkxYTlhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCkBA
IC0zODksMTAgKzM4OSwxMCBAQCBzdGF0aWMgdm9pZCBhZGp1c3RHcmlkUG9zaXRpb25zRnJvbVN0
eWxlKGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpegogCiAgICAgICAgIGlm
IChpbml0aWFsUG9zaXRpb24uaXNBdXRvKCkpIHsKICAgICAgICAgICAgIC8vIFNldCBpbml0aWFs
IHBvc2l0aW9uIHRvIHNwYW4gPGxpbmUgbmFtZXMgLSAxPgotICAgICAgICAgICAgaW5pdGlhbFBv
c2l0aW9uLnNldFNwYW5Qb3NpdGlvbihzdGQ6Om1heCgxLCBsaW5lQ291bnQgLSAxKSwgIiIpOwor
ICAgICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlvbihzdGQ6Om1heCgxLCBs
aW5lQ291bnQgLSAxKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAvLyBTZXQgZmluYWwgcG9zaXRpb24gdG8gc3BhbiA8bGluZSBuYW1lcyAtIDE+Ci0gICAg
ICAgICAgICBmaW5hbFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlvbihzdGQ6Om1heCgxLCBsaW5lQ291
bnQgLSAxKSwgIiIpOworICAgICAgICAgICAgZmluYWxQb3NpdGlvbi5zZXRTcGFuUG9zaXRpb24o
c3RkOjptYXgoMSwgbGluZUNvdW50IC0gMSksIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICB9CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lS
ZW5kZXJTVkdDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5
UmVuZGVyU1ZHQ29udGFpbmVyLmgKaW5kZXggYTdhZTg1OWViZjdmY2UwNzhmNTFkNWEzZWVlNjY2
N2FkM2MxMGUyZi4uYzYzNzBmMmUwYWZiZDczODUzMzQwNjg2NjQwZjE5YjY1Njc4M2QzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdDb250
YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNW
R0NvbnRhaW5lci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBM
ZWdhY3lSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCi0g
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJTVkdDb250YWluZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHQ29udGFpbmVyIl9zOyB9CiAKICAgICBib29sIGNh
bkhhdmVDaGlsZHJlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1JlY3QuaAppbmRleCA4
OTdjOTA2ZGFiZjlmZjlkNDY1NDFhN2IxNjhjMmRkYzFhZTM2NjYzLi44NjdiNmMxNDNkMTViNTA4
ODRmMzdmNzhlOWI5MDc1ZWEzYTNmMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1JlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1JlY3QuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIHZvaWQgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAK
LSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR1JlY3QiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVjdCJfczsgfQogCiAgICAgdm9pZCB1cGRhdGVTaGFw
ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBMZWdhY3lSZW5kZXJTVkdTaGFwZTo6aXNF
bXB0eSgpIDogbV9maWxsQm91bmRpbmdCb3guaXNFbXB0eSgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oCmluZGV4IGE2NGI3YmE0
Y2JmMGVhNzM1OTg3MTk3NzNkZTRiNGQzZDNiYjliZTYuLjg2NGE5MGQ2ZmY0ZTk2MGY3ZjlkY2Nl
YjY3NDgzMTY4YTZkMzcwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBpc0xlZ2FjeVNWR1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICAvLyBJbnRlbnRpYWxseSBsZWZ0ICdSZW5kZXJTVkdSb290JyBpbnN0ZWFkIG9mICdMZWdh
Y3lSZW5kZXJTVkdSb290JywgdG8gYXZvaWQgYnJlYWtpbmcgbGF5b3V0IHRlc3RzLgotICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZH
Um9vdCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJTVkdSb290Il9zOyB9CiAKICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkICA9IENvbXB1dGVBY3R1YWwp
IGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhl
aWdodChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0aCA9IHN0ZDo6
bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1NoYXBlLmgKaW5kZXggNWQwY2ExNGE4ZWNhOGUzZGRjM2Zm
MmNkNjZmZTk0ZjFiZTZjY2ZiOC4uZDg4YWZlNzA1MDVhNTY1ZDQyNWUxYWIzZGY5YzMxN2NlNDRk
OTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5k
ZXJTVkdTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5UmVu
ZGVyU1ZHU2hhcGUuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlz
TGVnYWN5U1ZHU2hhcGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBj
YW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHU2hh
cGUiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyU1ZHU2hhcGUiX3M7IH0KIAogICAgIHZvaWQgbGF5b3V0KCkgZmluYWw7CiAg
ICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKaW5k
ZXggOTc1YThmNjJjZDAzYzMyMTNhYmI4NTRjZjc0ZDE2NjVkOWM5NDQ1Yy4uMGFkMGI4MzQ2NWY5
OWMzMWU5NWFhM2M3OTc1OWFlMzc3OGZiMzAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKIHByb3RlY3RlZDoKICAgICBSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYsIFJlbmRl
clN0eWxlJiYpOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTVkdDb250YWluZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHQ29udGFpbmVyIl9zOyB9
CiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmgKaW5kZXggODg1MzBkYzFlN2FkNGJkNDUwM2E1YzVjNjYx
Njg4ZTI0MmUyZmM0My4uOTdlYTYyN2MyYWM4NzUwN2I0YmFmYzFiOWNkN2U5NzE4MDJiNGQ1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmgK
QEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlclNWR0VsbGlwc2Uo
KTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclNWR0VsbGlwc2UiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHRWxsaXBzZSJfczsgfQog
CiAgICAgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBMZWdh
Y3lSZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgpIDogbV9maWxsQm91bmRpbmdCb3guaXNFbXB0eSgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Zv
cmVpZ25PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdC5oCmluZGV4IDg0YjE1ZDQ2NzJhYTA5NTQyM2M3NmVlMTIyZTUyYzlmNWNhNWIw
YTUuLmVkYjFmOTcwZGIxYmM4OWMzZDZmM2Q4MmYxOGQzNWYyMzkzNDFjNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5o
CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1NWR0ZvcmVp
Z25PYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBncmFw
aGljc0VsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0ZvcmVpZ25PYmplY3QiOyB9Cisg
ICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdCJfczsgfQogCiAgICAgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgo
KSBvdmVycmlkZTsKICAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxvZ2lj
YWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3Ap
IGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgKaW5kZXggMjQ2OGRjNzBhNDZjOTM3NjIxNzU2MWE5MDM1
NWQ5YTE5ODhmZGVhZS4uOTgyZWVlM2MzMjk4MWFlNWM3NGVlZDhjNDY4ZThmYzFiMDdjOTA1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVu
dFN0b3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRp
ZW50U3RvcC5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBub2RlQXRGbG9h
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAg
Ym9vbCBpc1NWR0dyYWRpZW50U3RvcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR0dyYWRpZW50U3RvcCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdHcmFkaWVudFN0b3AiX3M7IH0KIAogICAg
IGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hp
ZGRlbkNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdI
aWRkZW5Db250YWluZXIuaAppbmRleCA2N2I5YTQwNDEyNDBhMDBmNTdkOGVlMTgxMmQyYjYzNWRk
MWRkMDg0Li4wZDgxYmYzNzk2N2VlZGY4YzJjNjUxOGJkYzgyNDc0NDZlNjUxNjI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29u
dGFpbmVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIGJv
b2wgaXNTVkdIaWRkZW5Db250YWluZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJTVkdIaWRkZW5Db250YWluZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIl9zOyB9CiAK
ICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAppbmRleCA3
ZDEwYTIyMTEwYmUxODVmMWE5MWQyM2U4ZWQwNmJlZWRjYWJjMDdiLi4xMTBkYzU0YTk4ZjY3NDg2
YjQ0ODgyZmFmMzg0OWZiOWQzYTcyZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbWFnZS5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHSW1hZ2UiOyB9CisgICAgQVND
SUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZH
SW1hZ2UiX3M7IH0KICAgICBib29sIGlzU1ZHSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmUuaAppbmRleCA1YzVmNjdkNmZmYWZlYTExYTQ0NGQzMDVlYmVmNThkMDJjMDUwMGIy
Li4yMDAwMTQ3NzVjZWU4MjVkMWRhZmJhNGQ5NDBlMmI4ZDAyMzI3NTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKQEAgLTM2LDcgKzM2LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsK
IAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyU1ZHSW5saW5lIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0lubGluZSJfczsgfQogICAgIGJvb2wgcmVxdWly
ZXNMYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1NWR0lu
bGluZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuaAppbmRleCBlMDNiNzQ3YjA3
OWQ5YzNjOTgzYjg1MzliZWVlMTUyMTY1NTdkNmMyLi40NTllMzQ4Y2ExZTczYzFkMjdkZjAzZDIx
ZTM4NGM0Mjg0MTA2NDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgU1ZH
SW5saW5lVGV4dEJveCogZmlyc3RUZXh0Qm94KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdJ
bmxpbmVUZXh0IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclNWR0lubGluZVRleHQiX3M7IH0KIAogICAgIFN0cmluZyBvcmln
aW5hbFRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlbmRlcmVkVGV4dChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdQYXRoLmgKaW5kZXggNmFjMmFkOWI5ZTlkZDI5NTlhZWZjNGY3OWFjOThlMTYzODEwYTBl
OC4uOGUwMzVjZmQxNGNhZDZmZjg0M2Q3Mjk0ZjdkN2JlYWJiODk1ZjdmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNTVkdQYXRoKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUGF0aCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVy
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdQYXRoIl9zOyB9CiAKICAg
ICB2b2lkIHVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICBGbG9hdFJlY3Qg
Y2FsY3VsYXRlVXBkYXRlZFN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oCmluZGV4IGRhZTU4NGJjOWIyOTM4OWM4
ZjUwYjVlMTA3ZTZiY2Q0NjFiOWFjZjUuLjc1ZDdkZWVhYjE1ZmFkYmNmMzZkNzQyODhkMzhjYWIz
MDVhYmEzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVj
dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBncmFwaGlj
c0VsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVjdCI7IH0KKyAgICBBU0NJSUxp
dGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZWN0
Il9zOyB9CiAKICAgICB2b2lkIHVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKICAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3VzZVBhdGhGYWxsYmFj
ayA/IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkgOiBtX2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5oCmluZGV4IDhmY2Q5YjRlYzVmYmUxZGIxNmRkZjRiY2U0Nzg0ZjY2
MmFmM2QyYmQuLmIwOTAzMWU1NjBiMzY1MTdiYjRiZGVkMTY4Zjk3YTYxZDBlOTJlYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIuaApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBlbGVtZW50
KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciI7IH0KKyAgICBBU0NJ
SUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIiX3M7IH0KICAgICBib29sIGlzU1ZHUmVzb3VyY2VDbGlwcGVyKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBwYXRoT25seUNsaXBwaW5n
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVj
dCYsIGZsb2F0IGVmZmVjdGl2ZVpvb20pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IGNmM2Y2YmE0OTA3ZmFi
MmVmMjkwYzQxY2I0NTY3NTdkMDI5MzNiMWQuLjhhMDcyODg2ZmE5NmUyZDg3ZTI4Y2NmOGIzNDY5
NTk4NDY4YjViMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIiX3M7IH0KICAgICBib29sIGlzU1ZH
UmVzb3VyY2VGaWx0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBI
YXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJEYXRhPj4gbV9yZW5k
ZXJlckZpbHRlckRhdGFNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKaW5kZXggMTYy
NDgzNzcxOTRlYzI0MjgwNWU1ZDQzY2Y5YTNhYTIyMjAwZjQwYi4uN2MxMmFiNWEyZTU5NTNmYTJi
ODFiZGUxZWQyMjlhYzM0Mjc1Y2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaApA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKIAotICAgIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXJQcmltaXRpdmUiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUiX3M7
IH0KIAogICAgIGlubGluZSB2b2lkIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgK
aW5kZXggZWM0YWM2YjlkMjE4OTg1YmY5ZjQ3MzY0ZWVkNzg2MzBjNjFiN2Q2ZS4uOTdkMWM1MjY5
NDE2MzI4ZjQ0YjE1NjYwZGUzOTJkNWM3YWE1OTc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRp
ZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZ3JhZGllbnRFbGVt
ZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQiOyB9Cisg
ICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVy
U1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudCJfczsgfQogCiAgICAgTGluZWFyR3JhZGllbnRBdHRy
aWJ1dGVzIG1fYXR0cmlidXRlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmgKaW5kZXggZWZlODBlOTVjOTFjODFk
OThjNmE0MjViOTdiMTJjMDQ4MWVlZWRiMS4uZTRmNmJmMjAyOWIwN2Q1NzkxNTQ0MzAyZmM1ZDg0
ODQ5MTM3ZmEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJj
ZU1hcmtlciI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciJfczsgfQogCiAgICAgLy8gR2VuZXJh
dGVzIGEgdHJhbnNmb3JtYXRpb24gbWF0cml4IHVzYWJsZSB0byByZW5kZXIgbWFya2VyIGNvbnRl
bnQuIEhhbmRsZXMgc2NhbGluZyB0aGUgbWFya2VyIGNvbnRlbnQKICAgICAvLyBhY29yZGluZyB0
byBTVkdzIG1hcmtlclVuaXRzPSJzdHJva2VXaWR0aCIgY29uY2VwdCwgd2hlbiBhIHN0cm9rZVdp
ZHRoIHZhbHVlICE9IC0xIGlzIHBhc3NlZCBpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRleCBmMTMzZjc1MTE5
NjhhYTE0MWI0YjVlZTE2NzA1MWFjOTA4ODUxMGM0Li42ZWIxZDU0OTcyM2RlZTliNGU2Njc3NzY4
OGQ4OGYyM2Y2ZGE4ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jl
c291cmNlTWFza2VyIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlTWFza2VyIl9zOyB9CiAKICAgICBib29s
IGRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBjYWxjdWxhdGVNYXNrQ29udGVu
dFJlcGFpbnRSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAppbmRleCBmNmNmMjI2MGZjM2YyNjY1NWUwZDFm
ZjI0ZmFjMzhhYTg3ZWI2NThkLi41NzVjZTY3NWU4NGJhZmIwMDRjODEwN2NmNTZiZGY2NTNhNzVk
YmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwotICAgIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlUGF0dGVybiJfczsgfQogCiAgICAgYm9vbCBidWlsZFRp
bGVJbWFnZVRyYW5zZm9ybShSZW5kZXJFbGVtZW50JiwgY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMm
LCBjb25zdCBTVkdQYXR0ZXJuRWxlbWVudCYsIEZsb2F0UmVjdCYgcGF0dGVybkJvdW5kYXJpZXMs
IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNmb3JtKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdy
YWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
UmFkaWFsR3JhZGllbnQuaAppbmRleCBhNjY5MTI0MjdkZjMzZmIyOTJlZDU1ZjZmMTI0YmRmMzcz
ZWE3NmI5Li4zYWI0YjJiNWFlOTQ4N2IzOWU3NGY3NWExNDBiZjM1NGJmYzc3YmFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFs
R3JhZGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUmFkaWFsR3JhZGllbnQuaApAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBncmFkaWVudEVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VSYWRp
YWxHcmFkaWVudCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50Il9zOyB9CiAgICAgYm9v
bCBjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKCkgZmluYWw7CiAKICAgICBSYWRpYWxHcmFkaWVu
dEF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuaAppbmRleCA0M2MxMmVhODI2ZTE5YzcyNmQ5ZGI5NDExNjI0MTAxNjc4
ZTY1MDVlLi4yNGMzMGJjYTdiNjViZTUwNGRhOWVkOGQ2ZWJmNzU5ZGYxYWM1N2VmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAtNzgsNyArNzgs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCiAgICAg
Ym9vbCBpc1NWR1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdS
b290IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlclNWR1Jvb3QiX3M7IH0KICAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICAvLyBUbyBwcmV2ZW50IGNlcnRhaW4g
bGVnYWN5IGNvZGUgcGF0aHMgdG8gaGl0IGFzc2VydGlvbnMgaW4gZGVidWcgYnVpbGRzLCB3aGVu
IHN3aXRjaGluZyBvZmYgTEJTRSAoZHVyaW5nIHRoZSB0ZWFyZG93biBvZiB0aGUgTEJTRSB0cmVl
KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAppbmRl
eCBhMjNkOWFkMjk4ZTAyOTExMzk4NmM1OTAxYjQzNTE1ZTFkOWU0MmIwLi5kMmEzMzZjZmE4YWZi
NTBiYzEwODUxMGUxNGViMzdiYzAxYmVlNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgaXNTVkdTaGFwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBi
b29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJT
VkdTaGFwZSI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTVkdTaGFwZSJfczsgfQogCiAgICAgdm9pZCBsYXlvdXQoKSBmaW5h
bDsKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFu
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKaW5kZXgg
MWJiYWViMzcyYmM2N2E1NDc0OTIyNTM0ZWQyN2I5MWM1YmQ3YjdhZi4uZWI5MTRkYmM4NjAyOGIz
NGY5OTU1ZDQ5ODIxMTMzODA2OWQxZGM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVFNwYW4uaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBncmFwaGljc0VsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKLSAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1RT
cGFuIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlclNWR1RTcGFuIl9zOyB9CiAgICAgYm9vbCBpc1NWR1RTcGFuKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuaAppbmRleCAzMmM2ZTEyNDgzNjdjNTU1MzcxNzI0ZDRlNzNj
NmFiYjMwOGMzZDExLi40NDEyNjk4ODU3OTEzMDI0MjgyZmZmMGE4ZTY2NTFiNmI3ZjFjZGM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaApAQCAtNjQs
NyArNjQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgZ3JhcGhpY3NFbGVtZW50KCkg
Y29uc3QgPSBkZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1RleHQiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHVGV4dCJfczsgfQogICAg
IGJvb2wgaXNTVkdUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCmluZGV4
IGQ2NjMwYzI1ZTRmYzI4MzBkMWNiYjFjMzUyODk4NDYwOGZhZTQ2ZGIuLjE5NmEyNDcyZWFiYTlh
YzFkZTBkYjY5NWZiOTliMmQwYmQ4YjcyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCiAgICAgYm9vbCBp
c1NWR1RleHRQYXRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHVGV4
dFBhdGgiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyU1ZHVGV4dFBhdGgiX3M7IH0KIAogICAgIFBhdGggbV9sYXlvdXRQYXRo
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Vmlld3BvcnRDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXIuaAppbmRleCAzZWUzYmMxNDY5ZDRmNDJlYmE4OGY0NzU5NDVl
Nzg0ZWNmZTNhYWRjLi5iODQxNjFkZjBjYWQ1NmIxMzVmMDViZDY3YWUzY2Q0OGQ1NzFmZWQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0
Q29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdW
aWV3cG9ydENvbnRhaW5lci5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBl
bGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKICAgICBib29sIGlzU1ZHVmlld3BvcnRDb250YWlu
ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdWaWV3cG9ydENvbnRh
aW5lciI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciJfczsgfQogCiAgICAgQWZmaW5lVHJh
bnNmb3JtIHZpZXdwb3J0VHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9s
b2NhbFRvUGFyZW50VHJhbnNmb3JtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR0NvbnRhaW5lckxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR0NvbnRhaW5lckxheW91dC5jcHAKaW5kZXggOTEwNTBmOTQxYTlhYWU5NGY5OTQ0
MmQ5M2I2YzMyYTJiZjg4M2IxNy4uODEzYzNlY2VmOTM4YmRhNDg2NDQ0ZDRhZjcwOGQ5N2NiNzNj
ZWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdDb250YWlu
ZXJMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHQ29udGFp
bmVyTGF5b3V0LmNwcApAQCAtMjA2LDEwICsyMDYsMTAgQEAgdm9pZCBTVkdDb250YWluZXJMYXlv
dXQ6OnZlcmlmeUxheW91dExvY2F0aW9uQ29uc2lzdGVuY3koY29uc3QgUmVuZGVyRWxlbWVudCYg
cmUKIAogICAgICAgICBhdXRvIGluaXRpYWxMYXlvdXRMb2NhdGlvbiA9IGZsb29yZWRMYXlvdXRQ
b2ludChyZW5kZXJlci5vYmplY3RCb3VuZGluZ0JveCgpLm1pblhNaW5ZQ29ybmVyKCkpOwogICAg
ICAgICBpZiAoZXhwZWN0ZWRMYXlvdXRMb2NhdGlvbiA9PSBpbml0aWFsTGF5b3V0TG9jYXRpb24p
IHsKLSAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShTVkcsIHN0cmVhbSA8PCAiLS0+IFNWR0Nv
bnRhaW5lckxheW91dCByZW5kZXJlciAiIDw8ICZyZW5kZXJlciA8PCAiICgiIDw8IHJlbmRlcmVy
LnJlbmRlck5hbWUoKSA8PCAiKSIKKyAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShTVkcsIHN0
cmVhbSA8PCAiLS0+IFNWR0NvbnRhaW5lckxheW91dCByZW5kZXJlciAiIDw8ICZyZW5kZXJlciA8
PCAiICgiIDw8IHJlbmRlcmVyLnJlbmRlck5hbWUoKS5jaGFyYWN0ZXJzKCkgPDwgIikiCiAgICAg
ICAgICAgICAgICAgPDwgIiAtIHZlcmlmeUxheW91dExvY2F0aW9uQ29uc2lzdGVuY3koKSBvYmpl
Y3RCb3VuZGluZ0JveCAvIGxheW91dExvY2F0aW9uIGFyZSBpbiBzeW5jLiIpOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNWRywgc3RyZWFtIDw8ICItLT4g
U1ZHQ29udGFpbmVyTGF5b3V0IHJlbmRlcmVyICIgPDwgJnJlbmRlcmVyIDw8ICIgKCIgPDwgcmVu
ZGVyZXIucmVuZGVyTmFtZSgpIDw8ICIpIgorICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNW
Rywgc3RyZWFtIDw8ICItLT4gU1ZHQ29udGFpbmVyTGF5b3V0IHJlbmRlcmVyICIgPDwgJnJlbmRl
cmVyIDw8ICIgKCIgPDwgcmVuZGVyZXIucmVuZGVyTmFtZSgpLmNoYXJhY3RlcnMoKSA8PCAiKSIK
ICAgICAgICAgICAgICAgICA8PCAiIC0gdmVyaWZ5TGF5b3V0TG9jYXRpb25Db25zaXN0ZW5jeSgp
IG9iamVjdEJvdW5kaW5nQm94IC8gbGF5b3V0TG9jYXRpb24gaW52YXJpYW50IHZpb2xhdGVkIC0t
IG91dCBvZiBzeW5jIGR1ZSB0byBwYXJ0aWFsIGxheW91dD8iCiAgICAgICAgICAgICAgICAgPDwg
IiBjdXJyZW50TGF5b3V0TG9jYXRpb249IiA8PCBjdXJyZW50TGF5b3V0TG9jYXRpb24KICAgICAg
ICAgICAgICAgICA8PCAiICAoZXhwZWN0ZWRMYXlvdXRMb2NhdGlvbj0iIDw8IGV4cGVjdGVkTGF5
b3V0TG9jYXRpb24KQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFNWR0NvbnRhaW5lckxheW91dDo6
dmVyaWZ5TGF5b3V0TG9jYXRpb25Db25zaXN0ZW5jeShjb25zdCBSZW5kZXJFbGVtZW50JiByZQog
CiAjaWYgIWRlZmluZWQoTkRFQlVHKQogICAgIGlmIChyZW5kZXJlci5pc1NWR1Jvb3QoKSkgewot
ICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU1ZHLCBzdHJlYW0gPDwgIi0tPiBTVkdDb250YWluZXJM
YXlvdXQgcmVuZGVyZXIgIiA8PCAmcmVuZGVyZXIgPDwgIiAoIiA8PCByZW5kZXJlci5yZW5kZXJO
YW1lKCkgPDwgIikiCisgICAgICAgIExPR19XSVRIX1NUUkVBTShTVkcsIHN0cmVhbSA8PCAiLS0+
IFNWR0NvbnRhaW5lckxheW91dCByZW5kZXJlciAiIDw8ICZyZW5kZXJlciA8PCAiICgiIDw8IHJl
bmRlcmVyLnJlbmRlck5hbWUoKS5jaGFyYWN0ZXJzKCkgPDwgIikiCiAgICAgICAgICAgICA8PCAi
IC0gdmVyaWZ5TGF5b3V0TG9jYXRpb25Db25zaXN0ZW5jeSgpIGVuZCIpOwogICAgIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVl
QXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFz
VGV4dC5jcHAKaW5kZXggODczMzAxNDdmMTQxYzE2YzA4Y2UwMTVlNzgxMTkwYjhiNjRmYmI4OC4u
ZjE1ZTYzNzE2MDRiOGE5NWY3YWJlYTcyNmY0MDdjOWZmOTRmZjlkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC03
NSw3ICs3NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAqLwogY2xhc3MgVGV4dFN0cmVhbVNl
cGFyYXRvciB7CiBwdWJsaWM6Ci0gICAgVGV4dFN0cmVhbVNlcGFyYXRvcihjb25zdCBTdHJpbmcm
IHMpCisgICAgVGV4dFN0cmVhbVNlcGFyYXRvcihVQ2hhciBzKQogICAgICAgICA6IG1fc2VwYXJh
dG9yKHMpCiAgICAgICAgICwgbV9uZWVkVG9TZXBhcmF0ZShmYWxzZSkKICAgICB7CkBAIC04NCw3
ICs4NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIFRleHRTdHJlYW1TZXBhcmF0b3ImKTsKIAotICAgIFN0cmluZyBt
X3NlcGFyYXRvcjsKKyAgICBVQ2hhciBtX3NlcGFyYXRvcjsKICAgICBib29sIG1fbmVlZFRvU2Vw
YXJhdGU7CiB9OwogCkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIHZvaWQgd3JpdGVTVkdQYWlu
dGluZ1Jlc291cmNlKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdSZXNvdXJjZSYgcmUK
IAogc3RhdGljIHZvaWQgd3JpdGVTVkdGaWxsUGFpbnRpbmdSZXNvdXJjZShUZXh0U3RyZWFtJiB0
cywgY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclNWR1Jlc291cmNl
JiBmaWxsUGFpbnRpbmdSZXNvdXJjZSkKIHsKLSAgICBUZXh0U3RyZWFtU2VwYXJhdG9yIHMoIiAi
KTsKKyAgICBUZXh0U3RyZWFtU2VwYXJhdG9yIHMoJyAnKTsKICAgICB0cyA8PCAiIFtmaWxsPXsi
IDw8IHM7CiAgICAgd3JpdGVTVkdQYWludGluZ1Jlc291cmNlKHRzLCBmaWxsUGFpbnRpbmdSZXNv
dXJjZSk7CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZVNWR0ZpbGxQYWlu
dGluZ1Jlc291cmNlKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJFbGVtZW50JiByZQogCiBz
dGF0aWMgdm9pZCB3cml0ZVNWR1N0cm9rZVBhaW50aW5nUmVzb3VyY2UoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTVkdSZXNvdXJjZSYg
c3Ryb2tlUGFpbnRpbmdSZXNvdXJjZSwgY29uc3QgU1ZHR3JhcGhpY3NFbGVtZW50JiBzaGFwZSkK
IHsKLSAgICBUZXh0U3RyZWFtU2VwYXJhdG9yIHMoIiAiKTsKKyAgICBUZXh0U3RyZWFtU2VwYXJh
dG9yIHMoJyAnKTsKICAgICB0cyA8PCAiIFtzdHJva2U9eyIgPDwgczsKICAgICB3cml0ZVNWR1Bh
aW50aW5nUmVzb3VyY2UodHMsIHN0cm9rZVBhaW50aW5nUmVzb3VyY2UpOwogCkBAIC00MjIsNyAr
NDIyLDcgQEAgc3RhdGljIHZvaWQgd3JpdGVTdGFuZGFyZFByZWZpeChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIE9wdGkKICAgICBpZiAod3JpdGVJbmRlbnQgPT0g
V3JpdGVJbmRlbnRPck5vdDo6WWVzKQogICAgICAgICB0cyA8PCBpbmRlbnQ7CiAKLSAgICB0cyA8
PCBvYmplY3QucmVuZGVyTmFtZSgpOworICAgIHRzIDw8IG9iamVjdC5yZW5kZXJOYW1lKCkuY2hh
cmFjdGVycygpOwogCiAgICAgaWYgKGJlaGF2aW9yLmNvbnRhaW5zKFJlbmRlckFzVGV4dEZsYWc6
OlNob3dBZGRyZXNzZXMpKQogICAgICAgICB0cyA8PCAiICIgPDwgJm9iamVjdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaAppbmRleCA2ZmQ5NWJkNmVl
ZTMwMmNlNGU1ZWY1MTljNWUyMWExNjU3MzU3M2M3Li5mZmY3MTdhMjdjNmQ2MWQzMWMyZGRmNWM5
MjNjMjUzZjAzNmM4ZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3Jh
ZGllbnRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL0xpbmVhckdyYWRpZW50
QXR0cmlidXRlcy5oCkBAIC0yNiw3ICsyNiw3IEBAIHN0cnVjdCBMaW5lYXJHcmFkaWVudEF0dHJp
YnV0ZXMgOiBHcmFkaWVudEF0dHJpYnV0ZXMgewogICAgIExpbmVhckdyYWRpZW50QXR0cmlidXRl
cygpCiAgICAgICAgIDogbV94MSgpCiAgICAgICAgICwgbV95MSgpCi0gICAgICAgICwgbV94MihT
VkdMZW5ndGhNb2RlOjpXaWR0aCwgIjEwMCUiKQorICAgICAgICAsIG1feDIoU1ZHTGVuZ3RoTW9k
ZTo6V2lkdGgsICIxMDAlIl9zKQogICAgICAgICAsIG1feTIoKQogICAgICAgICAsIG1feDFTZXQo
ZmFsc2UpCiAgICAgICAgICwgbV95MVNldChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9S
YWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaAppbmRleCA2MTIzZGJlOTBmMzc0NzZiMWI0ZThjY2Vi
ZWI3MzYwOWRkZDA3MDU5Li42Y2ZjMWRmNzU2ZGEwNGI3NTIwZmIxN2M5YWM4YTdlN2ViNzlhMDJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCkBA
IC0yNSw5ICsyNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFJhZGlhbEdyYWRp
ZW50QXR0cmlidXRlcyA6IEdyYWRpZW50QXR0cmlidXRlcyB7CiAgICAgUmFkaWFsR3JhZGllbnRB
dHRyaWJ1dGVzKCkKLSAgICAgICAgOiBtX2N4KFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiNTAlIikK
LSAgICAgICAgLCBtX2N5KFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiNTAlIikKLSAgICAgICAgLCBt
X3IoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiKQorICAgICAgICA6IG1fY3goU1ZHTGVuZ3Ro
TW9kZTo6V2lkdGgsICI1MCUiX3MpCisgICAgICAgICwgbV9jeShTVkdMZW5ndGhNb2RlOjpXaWR0
aCwgIjUwJSJfcykKKyAgICAgICAgLCBtX3IoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiX3Mp
CiAgICAgICAgICwgbV9jeFNldChmYWxzZSkKICAgICAgICAgLCBtX2N5U2V0KGZhbHNlKQogICAg
ICAgICAsIG1fclNldChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aXRUb1ZpZXdCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAK
aW5kZXggZTBhMDMxMmMzNzRmYTcwYmI0NDA0OTYxMzNkM2Q3YTIwYjQ5ZmRhOS4uODBlOTNmYzg5
MzYxOGEzMDI3M2Y1MmE4MmI2ODBiZDQ5ODE1MmY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
dFRvVmlld0JveC5jcHAKQEAgLTEyMywxMyArMTIzLDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTVkdGaXRUb1ZpZXdCb3g6OnBh
cnNlCiAKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3aWR0aCBpcyBwb3NpdGl2ZS4KICAgICAgICAg
aWYgKCp3aWR0aCA8IDAuMCkgewotICAgICAgICAgICAgZG9jdW1lbnQuYWNjZXNzU1ZHRXh0ZW5z
aW9ucygpLnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBWaWV3Qm94IHdpZHRoIGlz
IG5vdCBhbGxvd2VkIik7CisgICAgICAgICAgICBkb2N1bWVudC5hY2Nlc3NTVkdFeHRlbnNpb25z
KCkucmVwb3J0RXJyb3IoIkEgbmVnYXRpdmUgdmFsdWUgZm9yIFZpZXdCb3ggd2lkdGggaXMgbm90
IGFsbG93ZWQiX3MpOwogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
fQogCiAgICAgICAgIC8vIENoZWNrIHRoYXQgaGVpZ2h0IGlzIHBvc2l0aXZlLgogICAgICAgICBp
ZiAoKmhlaWdodCA8IDAuMCkgewotICAgICAgICAgICAgZG9jdW1lbnQuYWNjZXNzU1ZHRXh0ZW5z
aW9ucygpLnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBWaWV3Qm94IGhlaWdodCBp
cyBub3QgYWxsb3dlZCIpOworICAgICAgICAgICAgZG9jdW1lbnQuYWNjZXNzU1ZHRXh0ZW5zaW9u
cygpLnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBWaWV3Qm94IGhlaWdodCBpcyBu
b3QgYWxsb3dlZCJfcyk7CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKaW5kZXggYzBi
ZjIxZTQ0MjRhMzYzODhjN2YyMTY3MjcxNTUzMGMxZjJkMTgzYi4uMjhlYzQ3N2I4NGJhMWJhYmUw
OTliOWQ2MzlmOTIwMDc5ZDU2MmZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dlb21ldHJ5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5
RWxlbWVudC5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIFNWR0dlb21ldHJ5RWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cgog
ICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0cikgewogICAgICAgICBtX3Bh
dGhMZW5ndGgtPnNldEJhc2VWYWxJbnRlcm5hbCh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICBp
ZiAobV9wYXRoTGVuZ3RoLT5iYXNlVmFsKCkgPCAwKQotICAgICAgICAgICAgZG9jdW1lbnQoKS5h
Y2Nlc3NTVkdFeHRlbnNpb25zKCkucmVwb3J0RXJyb3IoIkEgbmVnYXRpdmUgdmFsdWUgZm9yIHBh
dGggYXR0cmlidXRlIDxwYXRoTGVuZ3RoPiBpcyBub3QgYWxsb3dlZCIpOworICAgICAgICAgICAg
ZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVwb3J0RXJyb3IoIkEgbmVnYXRpdmUg
dmFsdWUgZm9yIHBhdGggYXR0cmlidXRlIDxwYXRoTGVuZ3RoPiBpcyBub3QgYWxsb3dlZCJfcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCmluZGV4IDRkZDdmODBlMzc3Nzk4N2RjYjcwYzFhM2M4YTg3Y2Q4YTRmZDZmYjku
LjEzMTg1ZjIxMTg5Njk2YTRmZjI2YzA3MjZhZmJhMWQ2ZjE4NTgxZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIEVuY29kZWRE
YXRhU3RhdHVzIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAg
ICAgICAgZnJhbWUudmlldygpLT5zZXRUcmFuc3BhcmVudCh0cnVlKTsgLy8gU1ZHIEltYWdlcyBh
cmUgdHJhbnNwYXJlbnQuCiAKICAgICAgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVudExv
YWRlcigpKTsgLy8gRG9jdW1lbnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGZy
YW1lLT5pbml0KCkuCi0gICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0
ZXIoKS5zZXRNSU1FVHlwZSgiaW1hZ2Uvc3ZnK3htbCIpOworICAgICAgICBsb2FkZXIuYWN0aXZl
RG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiX3Mp
OwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYmVnaW4o
VVJMKCkpOyAvLyBjcmVhdGUgdGhlIGVtcHR5IGRvY3VtZW50CiAgICAgICAgIGRhdGEoKS0+Zm9y
RWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgewogICAgICAgICAg
ICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoYnVmZmVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAyMDY3YTFkMDA4OGIzNjM2
OTY0OWRhMmFkZmQyNDJhYWQ1MmNlMDBiLi40ZjBiZjk5ZWFmN2U2NzMzY2Y0MjIyOGRiYjRjMDBj
MjJhNDU0ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC03NjUsMTYg
Kzc2NSwxNiBAQCBzdGF0aWMgU3RyaW5nIHN0eWxlVmFsaWRpdHlUb1RvU3RyaW5nKFN0eWxlOjpW
YWxpZGl0eSB2YWxpZGl0eSkKIHsKICAgICBzd2l0Y2ggKHZhbGlkaXR5KSB7CiAgICAgY2FzZSBT
dHlsZTo6VmFsaWRpdHk6OlZhbGlkOgotICAgICAgICByZXR1cm4gIk5vU3R5bGVDaGFuZ2UiOwor
ICAgICAgICByZXR1cm4gIk5vU3R5bGVDaGFuZ2UiX3M7CiAgICAgY2FzZSBTdHlsZTo6VmFsaWRp
dHk6OkVsZW1lbnRJbnZhbGlkOgotICAgICAgICByZXR1cm4gIklubGluZVN0eWxlQ2hhbmdlIjsK
KyAgICAgICAgcmV0dXJuICJJbmxpbmVTdHlsZUNoYW5nZSJfczsKICAgICBjYXNlIFN0eWxlOjpW
YWxpZGl0eTo6U3VidHJlZUludmFsaWQ6Ci0gICAgICAgIHJldHVybiAiRnVsbFN0eWxlQ2hhbmdl
IjsKKyAgICAgICAgcmV0dXJuICJGdWxsU3R5bGVDaGFuZ2UiX3M7CiAgICAgY2FzZSBTdHlsZTo6
VmFsaWRpdHk6OlN1YnRyZWVBbmRSZW5kZXJlcnNJbnZhbGlkOgotICAgICAgICByZXR1cm4gIlJl
Y29uc3RydWN0UmVuZGVyVHJlZSI7CisgICAgICAgIHJldHVybiAiUmVjb25zdHJ1Y3RSZW5kZXJU
cmVlIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gIiI7
CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBJbnRlcm5hbHM6OnN0eWxl
Q2hhbmdlVHlwZShOb2RlJiBub2RlKQpAQCAtODE1LDMxICs4MTUsMzEgQEAgYm9vbCBJbnRlcm5h
bHM6OmlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZShjb25zdCBTdHJpbmcmIHVybCkKIHN0YXRpYyBT
dHJpbmcgcmVzcG9uc2VTb3VyY2VUb1N0cmluZyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKIHsKICAgICBpZiAocmVzcG9uc2UuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAiTnVs
bCByZXNwb25zZSI7CisgICAgICAgIHJldHVybiAiTnVsbCByZXNwb25zZSJfczsKICAgICBzd2l0
Y2ggKHJlc3BvbnNlLnNvdXJjZSgpKSB7CiAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpTb3Vy
Y2U6OlVua25vd246Ci0gICAgICAgIHJldHVybiAiVW5rbm93biI7CisgICAgICAgIHJldHVybiAi
VW5rbm93biJfczsKICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yazoK
LSAgICAgICAgcmV0dXJuICJOZXR3b3JrIjsKKyAgICAgICAgcmV0dXJuICJOZXR3b3JrIl9zOwog
ICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyOgotICAgICAg
ICByZXR1cm4gIlNlcnZpY2Ugd29ya2VyIjsKKyAgICAgICAgcmV0dXJuICJTZXJ2aWNlIHdvcmtl
ciJfczsKICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6RGlza0NhY2hlOgotICAg
ICAgICByZXR1cm4gIkRpc2sgY2FjaGUiOworICAgICAgICByZXR1cm4gIkRpc2sgY2FjaGUiX3M7
CiAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZUFmdGVyVmFsaWRh
dGlvbjoKLSAgICAgICAgcmV0dXJuICJEaXNrIGNhY2hlIGFmdGVyIHZhbGlkYXRpb24iOworICAg
ICAgICByZXR1cm4gIkRpc2sgY2FjaGUgYWZ0ZXIgdmFsaWRhdGlvbiJfczsKICAgICBjYXNlIFJl
c291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TWVtb3J5Q2FjaGU6Ci0gICAgICAgIHJldHVybiAiTWVt
b3J5IGNhY2hlIjsKKyAgICAgICAgcmV0dXJuICJNZW1vcnkgY2FjaGUiX3M7CiAgICAgY2FzZSBS
ZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok1lbW9yeUNhY2hlQWZ0ZXJWYWxpZGF0aW9uOgotICAg
ICAgICByZXR1cm4gIk1lbW9yeSBjYWNoZSBhZnRlciB2YWxpZGF0aW9uIjsKKyAgICAgICAgcmV0
dXJuICJNZW1vcnkgY2FjaGUgYWZ0ZXIgdmFsaWRhdGlvbiJfczsKICAgICBjYXNlIFJlc291cmNl
UmVzcG9uc2U6OlNvdXJjZTo6QXBwbGljYXRpb25DYWNoZToKLSAgICAgICAgcmV0dXJuICJBcHBs
aWNhdGlvbiBjYWNoZSI7CisgICAgICAgIHJldHVybiAiQXBwbGljYXRpb24gY2FjaGUiX3M7CiAg
ICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRPTUNhY2hlOgotICAgICAgICByZXR1
cm4gIkRPTSBjYWNoZSI7CisgICAgICAgIHJldHVybiAiRE9NIGNhY2hlIl9zOwogICAgIGNhc2Ug
UmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpJbnNwZWN0b3JPdmVycmlkZToKLSAgICAgICAgcmV0
dXJuICJJbnNwZWN0b3Igb3ZlcnJpZGUiOworICAgICAgICByZXR1cm4gIkluc3BlY3RvciBvdmVy
cmlkZSJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuICJF
cnJvciI7CisgICAgcmV0dXJuICJFcnJvciJfczsKIH0KIAogU3RyaW5nIEludGVybmFsczo6eGhy
UmVzcG9uc2VTb3VyY2UoWE1MSHR0cFJlcXVlc3QmIHJlcXVlc3QpCkBAIC0yODY2LDcgKzI4NjYs
NyBAQCBSZWZQdHI8V2luZG93UHJveHk+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgYXV0byogaW5zcGVjdGVkUGFnZSA9IGNv
bnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7CiAgICAgYXV0byogd2luZG93ID0gaW5z
cGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7Ci0gICAgYXV0
byBmcm9udGVuZFdpbmRvd1Byb3h5ID0gd2luZG93LT5vcGVuKCp3aW5kb3csICp3aW5kb3csIHVy
bCwgIiIsICIiKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBhdXRvIGZyb250ZW5kV2luZG93
UHJveHkgPSB3aW5kb3ctPm9wZW4oKndpbmRvdywgKndpbmRvdywgdXJsLCBlbXB0eVN0cmluZygp
LCBlbXB0eVN0cmluZygpKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICBtX2luc3BlY3RvckZy
b250ZW5kID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdl
LCBkb3duY2FzdDxET01XaW5kb3c+KGZyb250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7CiAg
ICAgcmV0dXJuIGZyb250ZW5kV2luZG93UHJveHk7CiB9CkBAIC00MDY0LDE3ICs0MDY0LDE3IEBA
IFN0cmluZyBJbnRlcm5hbHM6OmVsZW1lbnRCdWZmZXJpbmdQb2xpY3koSFRNTE1lZGlhRWxlbWVu
dCYgZWxlbWVudCkKIHsKICAgICBzd2l0Y2ggKGVsZW1lbnQuYnVmZmVyaW5nUG9saWN5KCkpIHsK
ICAgICBjYXNlIE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3k6OkRlZmF1bHQ6Ci0gICAgICAg
IHJldHVybiAiRGVmYXVsdCI7CisgICAgICAgIHJldHVybiAiRGVmYXVsdCJfczsKICAgICBjYXNl
IE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3k6OkxpbWl0UmVhZEFoZWFkOgotICAgICAgICBy
ZXR1cm4gIkxpbWl0UmVhZEFoZWFkIjsKKyAgICAgICAgcmV0dXJuICJMaW1pdFJlYWRBaGVhZCJf
czsKICAgICBjYXNlIE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3k6Ok1ha2VSZXNvdXJjZXNQ
dXJnZWFibGU6Ci0gICAgICAgIHJldHVybiAiTWFrZVJlc291cmNlc1B1cmdlYWJsZSI7CisgICAg
ICAgIHJldHVybiAiTWFrZVJlc291cmNlc1B1cmdlYWJsZSJfczsKICAgICBjYXNlIE1lZGlhUGxh
eWVyOjpCdWZmZXJpbmdQb2xpY3k6OlB1cmdlUmVzb3VyY2VzOgotICAgICAgICByZXR1cm4gIlB1
cmdlUmVzb3VyY2VzIjsKKyAgICAgICAgcmV0dXJuICJQdXJnZVJlc291cmNlcyJfczsKICAgICB9
CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gIlVOS05PV04iOworICAg
IHJldHVybiAiVU5LTk9XTiJfczsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpz
ZXRPdmVycmlkZVByZWZlcnJlZER5bmFtaWNSYW5nZU1vZGUoSFRNTE1lZGlhRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgU3RyaW5nJiBtb2RlU3RyaW5nKQpAQCAtNjQ3MCw3ICs2NDcwLDcgQEAgU3Ry
aW5nIEludGVybmFsczo6Zm9jdXNSaW5nQ29sb3IoKQogdW5zaWduZWQgSW50ZXJuYWxzOjpjcmVh
dGVTbGVlcERpc2FibGVyKGNvbnN0IFN0cmluZyYgcmVhc29uLCBib29sIGRpc3BsYXkpCiB7CiAg
ICAgc3RhdGljIHVuc2lnbmVkIGxhc3RVc2VkSWRlbnRpZmllciA9IDA7Ci0gICAgYXV0byBzbGVl
cERpc2FibGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTbGVlcERpc2FibGVyPihyZWFzb24udXRm
OCgpLmRhdGEoKSwgZGlzcGxheSA/IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6RGlzcGxheSA6
IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6U3lzdGVtKTsKKyAgICBhdXRvIHNsZWVwRGlzYWJs
ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI+KHJlYXNvbiwgZGlzcGxheSA/
IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6RGlzcGxheSA6IFBBTDo6U2xlZXBEaXNhYmxlcjo6
VHlwZTo6U3lzdGVtKTsKICAgICBtX3NsZWVwRGlzYWJsZXJzLmFkZCgrK2xhc3RVc2VkSWRlbnRp
ZmllciwgV1RGTW92ZShzbGVlcERpc2FibGVyKSk7CiAgICAgcmV0dXJuIGxhc3RVc2VkSWRlbnRp
ZmllcjsKIH0KQEAgLTY1NzcsMTEgKzY1NzcsMTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJu
YWxzOjpzZW5kTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QK
IHZvaWQgSW50ZXJuYWxzOjpsb2FkQXJ0d29ya0ltYWdlKFN0cmluZyYmIHVybCwgQXJ0d29ya0lt
YWdlUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKCFjb250ZXh0RG9jdW1lbnQoKSkgewot
ICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5v
IGRvY3VtZW50LiIgfSk7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCAiTm8gZG9jdW1lbnQuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGlmIChtX2FydHdvcmtJbWFnZVByb21pc2UpIHsKLSAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJBbm90aGVyIGRvd25sb2FkIGlzIGN1
cnJlbnRseSBwZW5kaW5nLiIgfSk7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAiQW5vdGhlciBkb3dubG9hZCBpcyBjdXJyZW50bHkgcGVuZGlu
Zy4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9hcnR3b3JrSW1hZ2VQcm9t
aXNlID0gbWFrZVVuaXF1ZTxBcnR3b3JrSW1hZ2VQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpKTsK
QEAgLTY1OTMsNyArNjU5Myw3IEBAIHZvaWQgSW50ZXJuYWxzOjpsb2FkQXJ0d29ya0ltYWdlKFN0
cmluZyYmIHVybCwgQXJ0d29ya0ltYWdlUHJvbWlzZSYmIHByb21pc2UpCiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgbV9hcnR3b3JrSW1hZ2VQcm9taXNlLT5yZWplY3QoaW1hZ2VE
YXRhLmV4Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9h
cnR3b3JrSW1hZ2VQcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9y
LCAiTm8gaW1hZ2UgcmV0cmlldmVkLiIgIH0pOworICAgICAgICAgICAgbV9hcnR3b3JrSW1hZ2VQ
cm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiTm8gaW1hZ2Ug
cmV0cmlldmVkLiJfcyB9KTsKICAgICAgICAgbV9hcnR3b3JrSW1hZ2VQcm9taXNlID0gbnVsbHB0
cjsKICAgICB9KTsKICAgICBtX2FydHdvcmtMb2FkZXItPnJlcXVlc3RJbWFnZVJlc291cmNlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsc01hcExpa2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHNNYXBMaWtlLmNwcAppbmRleCA5Zjc2
ODBjNTQ2ZTE3OGYzZDJlMzBiMGU3NjQ1YTU4MGZkNjk5NmRjLi45YTNkZjRkNGExODAwNDg1YzZl
YmZhNjgxNmU5NTQzOWQzMTEwNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFsc01hcExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzTWFwTGlrZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJ
bnRlcm5hbHNNYXBMaWtlOjpJbnRlcm5hbHNNYXBMaWtlKCkKIHsKLSAgICBtX3ZhbHVlcy5hZGQo
ImluaXQiLCAwKTsKKyAgICBtX3ZhbHVlcy5hZGQoImluaXQiX3MsIDApOwogfQogCiB2b2lkIElu
dGVybmFsc01hcExpa2U6OmluaXRpYWxpemVNYXBMaWtlKERPTU1hcEFkYXB0ZXImIG1hcCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yLmNwcAppbmRleCAwOGY0NWU2ZTcyZmM0YmI4ZDkxZDQxYTc0NmU5NTNjODFmYWQ5YzdkLi5l
MGE2MjVjZjJkMWY4ZjNjZWI4N2I2NWRkNTFjOGMwNGY2YzJlZWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCkBA
IC0xMDUsMjUgKzEwNSwyNSBAQCB2b2lkIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2V0
VHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZAogdm9pZCBNb2NrTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYpCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSKTsKLSAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2Fs
bGJhY2sobV9jb250ZXh0LmdldCgpLCAicG9zaXRpb25TdGF0ZUNoYW5nZWQiKTsKKyAgICBtX3N0
YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LmdldCgpLCAicG9z
aXRpb25TdGF0ZUNoYW5nZWQiX3MpOwogfQogCiB2b2lkIE1vY2tNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSBzdGF0ZSkKIHsK
ICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsIHN0YXRlKTsKLSAgICBt
X3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LmdldCgpLCAi
cmVhZHlTdGF0ZUNoYW5nZWQiKTsKKyAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxl
Q2FsbGJhY2sobV9jb250ZXh0LmdldCgpLCAicmVhZHlTdGF0ZUNoYW5nZWQiX3MpOwogfQogCiB2
b2lkIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxheWJhY2tTdGF0ZUNoYW5nZWQoTWVk
aWFTZXNzaW9uUGxheWJhY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJ
QkxFKExPR0lERU5USUZJRVIsIHN0YXRlKTsKLSAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNj
aGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LmdldCgpLCAicGxheWJhY2tTdGF0ZUNoYW5nZWQiKTsK
KyAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0Lmdl
dCgpLCAicGxheWJhY2tTdGF0ZUNoYW5nZWQiX3MpOwogfQogCiB2b2lkIE1vY2tNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6dHJhY2tJZGVudGlmaWVyQ2hhbmdlZChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIpCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCBpZGVu
dGlmaWVyKTsKLSAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9j
b250ZXh0LmdldCgpLCAidHJhY2tJZGVudGlmaWVyQ2hhbmdlZCIpOworICAgIG1fc3RhdGVDaGFu
Z2VMaXN0ZW5lci0+c2NoZWR1bGVDYWxsYmFjayhtX2NvbnRleHQuZ2V0KCksICJ0cmFja0lkZW50
aWZpZXJDaGFuZ2VkIl9zKTsKIH0KIAogV1RGTG9nQ2hhbm5lbCYgTW9ja01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yOjpsb2dDaGFubmVsKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5oCmluZGV4IDllMGZlNTM4N2NlNzg0
MmE2YzFkZjFlNmZjNmFjZDExODAyNmFhMTkuLjgxMjQ2MmJlZjFkMmRhMzU1NTg4YTdhOThiZmVk
N2MwZGZlY2IxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiYmKTsKIAotICAgIFN0cmluZyBpZGVudGlmaWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gIk1vY2sgQ29vcmRpbmF0b3IiOyB9CisgICAgU3RyaW5nIGlk
ZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTW9jayBDb29yZGluYXRvciJfczsgfQog
CiAgICAgdm9pZCBqb2luKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGxlYXZlKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAKaW5kZXggZDk3NWYz
YjQyODRmM2I2NmE4ZDc3OTJmMDhiNjNkN2QzZDE1NDNmYS4uNTJkYjQ3MGYyMmRjYWVmNzE3Y2Rh
OTE3ZDhmN2U1ZTdjMjczNmQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmNwcApAQCAtNzIsOCArNzIsOCBAQCBTdHJpbmcgTW9ja1BhZ2VP
dmVybGF5Q2xpZW50OjpsYXllclRyZWVBc1RleHQoUGFnZSYgcGFnZSwgT3B0aW9uU2V0PExheWVy
VHJlZUFzVAogICAgIEdyYXBoaWNzTGF5ZXIqIHZpZXdPdmVybGF5Um9vdCA9IHBhZ2UucGFnZU92
ZXJsYXlDb250cm9sbGVyKCkudmlld092ZXJsYXlSb290TGF5ZXIoKTsKICAgICBHcmFwaGljc0xh
eWVyKiBkb2N1bWVudE92ZXJsYXlSb290ID0gcGFnZS5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5k
b2N1bWVudE92ZXJsYXlSb290TGF5ZXIoKTsKICAgICAKLSAgICByZXR1cm4gIlZpZXctcmVsYXRp
dmU6XG4iICsgKHZpZXdPdmVybGF5Um9vdCA/IHZpZXdPdmVybGF5Um9vdC0+bGF5ZXJUcmVlQXNU
ZXh0KG9wdGlvbnMgfCBMYXllclRyZWVBc1RleHRPcHRpb25zOjpJbmNsdWRlUGFnZU92ZXJsYXlM
YXllcnMpIDogIihubyB2aWV3LXJlbGF0aXZlIG92ZXJsYXkgcm9vdCkiKQotICAgICAgICArICJc
blxuRG9jdW1lbnQtcmVsYXRpdmU6XG4iICsgKGRvY3VtZW50T3ZlcmxheVJvb3QgPyBkb2N1bWVu
dE92ZXJsYXlSb290LT5sYXllclRyZWVBc1RleHQob3B0aW9ucyB8IExheWVyVHJlZUFzVGV4dE9w
dGlvbnM6OkluY2x1ZGVQYWdlT3ZlcmxheUxheWVycykgOiAiKG5vIGRvY3VtZW50LXJlbGF0aXZl
IG92ZXJsYXkgcm9vdCkiKTsKKyAgICByZXR1cm4gIlZpZXctcmVsYXRpdmU6XG4iICsgKHZpZXdP
dmVybGF5Um9vdCA/IHZpZXdPdmVybGF5Um9vdC0+bGF5ZXJUcmVlQXNUZXh0KG9wdGlvbnMgfCBM
YXllclRyZWVBc1RleHRPcHRpb25zOjpJbmNsdWRlUGFnZU92ZXJsYXlMYXllcnMpIDogIihubyB2
aWV3LXJlbGF0aXZlIG92ZXJsYXkgcm9vdCkiX3MpCisgICAgICAgICsgIlxuXG5Eb2N1bWVudC1y
ZWxhdGl2ZTpcbiIgKyAoZG9jdW1lbnRPdmVybGF5Um9vdCA/IGRvY3VtZW50T3ZlcmxheVJvb3Qt
PmxheWVyVHJlZUFzVGV4dChvcHRpb25zIHwgTGF5ZXJUcmVlQXNUZXh0T3B0aW9uczo6SW5jbHVk
ZVBhZ2VPdmVybGF5TGF5ZXJzKSA6ICIobm8gZG9jdW1lbnQtcmVsYXRpdmUgb3ZlcmxheSByb290
KSJfcyk7CiB9CiAKIHZvaWQgTW9ja1BhZ2VPdmVybGF5Q2xpZW50Ojp3aWxsTW92ZVRvUGFnZShQ
YWdlT3ZlcmxheSYsIFBhZ2UqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1Bh
eW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggOGI5Mzg4ODYzYzgxYjEyNmI4Yjg0Njg3YjBiZDg2
YmZhMzcwZDkzMy4uZTgzMWIxYTA3Y2M2ZGE1MDJiMmYwZjZlOTk5OGEzMTJmNzQ2Yzk1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3Bw
CkBAIC01NSwxNSArNTUsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTW9ja1BheW1lbnRDb29y
ZGluYXRvcjo6TW9ja1BheW1lbnRDb29yZGluYXRvcihQYWdlJiBwYWdlKQogICAgIDogbV9wYWdl
IHsgcGFnZSB9CiB7Ci0gICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJhbWV4Iik7
Ci0gICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJjYXJ0ZUJhbmNhaXJlIik7Ci0g
ICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJjaGluYVVuaW9uUGF5Iik7Ci0gICAg
bV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJkaXNjb3ZlciIpOwotICAgIG1fYXZhaWxh
YmxlUGF5bWVudE5ldHdvcmtzLmFkZCgiaW50ZXJhYyIpOwotICAgIG1fYXZhaWxhYmxlUGF5bWVu
dE5ldHdvcmtzLmFkZCgiamNiIik7Ci0gICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRk
KCJtYXN0ZXJDYXJkIik7Ci0gICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJwcml2
YXRlTGFiZWwiKTsKLSAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoInZpc2EiKTsK
KyAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoImFtZXgiX3MpOworICAgIG1fYXZh
aWxhYmxlUGF5bWVudE5ldHdvcmtzLmFkZCgiY2FydGVCYW5jYWlyZSJfcyk7CisgICAgbV9hdmFp
bGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJjaGluYVVuaW9uUGF5Il9zKTsKKyAgICBtX2F2YWls
YWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoImRpc2NvdmVyIl9zKTsKKyAgICBtX2F2YWlsYWJsZVBh
eW1lbnROZXR3b3Jrcy5hZGQoImludGVyYWMiX3MpOworICAgIG1fYXZhaWxhYmxlUGF5bWVudE5l
dHdvcmtzLmFkZCgiamNiIl9zKTsKKyAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQo
Im1hc3RlckNhcmQiX3MpOworICAgIG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmFkZCgicHJp
dmF0ZUxhYmVsIl9zKTsKKyAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoInZpc2Ei
X3MpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gTW9ja1BheW1lbnRDb29yZGluYXRvcjo6
dmFsaWRhdGVkUGF5bWVudE5ldHdvcmsoY29uc3QgU3RyaW5nJiBwYXltZW50TmV0d29yaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCA3ZmFm
ZjBjNThhNjUwOTk2NmEwNjdkODQ0YjFiOWM4NWU1NDE5ZTg3Li4wYzQwMTAxOTlmNGJmMjYyNDll
MmJkYzBlNzgxMGRmNTA4ZGZlMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRM
b2FkZXI6Om5vdGlmeUVycm9yKCkKIHsKICAgICBtX2ZhaWxlZCA9IHRydWU7CiAgICAgaWYgKG1f
ZXJyb3IuaXNOdWxsKCkpCi0gICAgICAgIG1fZXJyb3IgPSB7IGVycm9yRG9tYWluV2ViS2l0SW50
ZXJuYWwsIDAsIHVybCgpLCAiRmFpbGVkIHRvIGxvYWQgc2NyaXB0IiwgUmVzb3VyY2VFcnJvcjo6
VHlwZTo6R2VuZXJhbCB9OworICAgICAgICBtX2Vycm9yID0geyBlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCB1cmwoKSwgIkZhaWxlZCB0byBsb2FkIHNjcmlwdCJfcywgUmVzb3VyY2VFcnJv
cjo6VHlwZTo6R2VuZXJhbCB9OwogICAgIG5vdGlmeUZpbmlzaGVkKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcAppbmRleCAxMGZmN2U0MmYwYjExYTQ5YTUzZTllYmFkNGViYmNkYTFkYjZmOGE2Li40
NzU0MmRkZjQxNmU4ZTM2M2NjNzQyNjIyMjY0MTQxNGE0ZmIxZjBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
Y3BwCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRS
ZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28KICAgICBpZiAo
IW9wdGlvbnMuc2NvcGUuaXNFbXB0eSgpKQogICAgICAgICBqb2JEYXRhLnNjb3BlVVJMID0gY29u
dGV4dC0+Y29tcGxldGVVUkwob3B0aW9ucy5zY29wZSk7CiAgICAgZWxzZQotICAgICAgICBqb2JE
YXRhLnNjb3BlVVJMID0gVVJMKGpvYkRhdGEuc2NyaXB0VVJMLCAiLi8iKTsKKyAgICAgICAgam9i
RGF0YS5zY29wZVVSTCA9IFVSTChqb2JEYXRhLnNjcmlwdFVSTCwgIi4vIl9zKTsKIAogICAgIGlm
ICgham9iRGF0YS5zY29wZVVSTC5pc051bGwoKSAmJiAham9iRGF0YS5zY29wZVVSTC5wcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkgJiYgIWpvYkRhdGEuaXNGcm9tU2VydmljZVdvcmtlclBhZ2UpIHsK
ICAgICAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0VSUk9SKCJhZGRSZWdpc3RyYXRpb246IHNj
b3BlVVJMIHNjaGVtZSBpcyBub3QgSFRUUCBvciBIVFRQUyIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmNwcAppbmRleCBkZmRlYjBiMmViYzBlNTNjMzA2OWU4MDhmYTkyYTQzZTVjZTVmZTA3Li45
NzZkODBiODUwODViNDZmZTdlYWUwN2Q5MDBkMTYyN2NkMjkzMjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcApAQCAtMjkzLDcgKzI5Myw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRh
YmFzZTo6ZW5zdXJlVmFsaWRSZWNvcmRzVGFibGUoKQogICAgICAgICB9CiAKICAgICAgICAgaWYg
KHNxbGl0ZVJlc3VsdCAhPSBTUUxJVEVfUk9XKQotICAgICAgICAgICAgcmV0dXJuICJFcnJvciBl
eGVjdXRpbmcgc3RhdGVtZW50IHRvIGZldGNoIHNjaGVtYSBmb3IgdGhlIFJlY29yZHMgdGFibGUu
IjsKKyAgICAgICAgICAgIHJldHVybiAiRXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBmZXRj
aCBzY2hlbWEgZm9yIHRoZSBSZWNvcmRzIHRhYmxlLiJfczsKIAogICAgICAgICBjdXJyZW50U2No
ZW1hID0gc3RhdGVtZW50LT5jb2x1bW5UZXh0KDEpOwogICAgIH0KQEAgLTMwNiwxNSArMzA2LDE1
IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZW5zdXJlVmFsaWRSZWNvcmRzVGFibGUo
KQogICAgIHJldHVybiBtYWtlU3RyaW5nKCJVbmV4cGVjdGVkIHNjaGVtYTogIiwgY3VycmVudFNj
aGVtYSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhTZXJ2aWNl
V29ya2VyVXBkYXRlVmlhQ2FjaGUgdXBkYXRlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCB1cGRhdGVW
aWFDYWNoZVRvU3RyaW5nKFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSB1cGRhdGUpCiB7CiAg
ICAgc3dpdGNoICh1cGRhdGUpIHsKICAgICBjYXNlIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNo
ZTo6SW1wb3J0czoKLSAgICAgICAgcmV0dXJuICJJbXBvcnRzIjsKKyAgICAgICAgcmV0dXJuICJJ
bXBvcnRzIl9zOwogICAgIGNhc2UgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpBbGw6Ci0g
ICAgICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBT
ZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU6Ok5vbmU6Ci0gICAgICAgIHJldHVybiAiTm9uZSI7
CisgICAgICAgIHJldHVybiAiTm9uZSJfczsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtMzMyLDEzICszMzIsMTMgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlPiBzdHJpbmdUb1VwZGF0ZVZpYUNhY2hlKGNvbnN0
IFMKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgU3RyaW5nIHdvcmtlclR5
cGVUb1N0cmluZyhXb3JrZXJUeXBlIHdvcmtlclR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIHdv
cmtlclR5cGVUb1N0cmluZyhXb3JrZXJUeXBlIHdvcmtlclR5cGUpCiB7CiAgICAgc3dpdGNoICh3
b3JrZXJUeXBlKSB7CiAgICAgY2FzZSBXb3JrZXJUeXBlOjpDbGFzc2ljOgotICAgICAgICByZXR1
cm4gIkNsYXNzaWMiOworICAgICAgICByZXR1cm4gIkNsYXNzaWMiX3M7CiAgICAgY2FzZSBXb3Jr
ZXJUeXBlOjpNb2R1bGU6Ci0gICAgICAgIHJldHVybiAiTW9kdWxlIjsKKyAgICAgICAgcmV0dXJu
ICJNb2R1bGUiX3M7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTQ2Miw5ICs0NjIsOSBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFu
Z2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICAgICAg
fHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kVGV4dCgzLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVS
TC5wYXRoKCkudG9TdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBpbnNlcnRT
dGF0ZW1lbnQtPmJpbmRUZXh0KDQsIGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBpbnNlcnRT
dGF0ZW1lbnQtPmJpbmREb3VibGUoNSwgZGF0YS5yZWdpc3RyYXRpb24ubGFzdFVwZGF0ZVRpbWUu
c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8
IGluc2VydFN0YXRlbWVudC0+YmluZFRleHQoNiwgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhkYXRh
LnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSkpICE9IFNRTElURV9PSworICAgICAgICAgICAg
fHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kVGV4dCg2LCBTdHJpbmdWaWV3IHsgdXBkYXRlVmlhQ2Fj
aGVUb1N0cmluZyhkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSkgfSkgIT0gU1FMSVRF
X09LCiAgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRUZXh0KDcsIGRhdGEuc2Ny
aXB0VVJMLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IGluc2VydFN0YXRl
bWVudC0+YmluZFRleHQoOCwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkpICE9
IFNRTElURV9PSworICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kVGV4dCg4LCBT
dHJpbmdWaWV3IHsgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkgfSkgIT0gU1FM
SVRFX09LCiAgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRCbG9iKDksIFNwYW4g
eyBjc3BFbmNvZGVyLmJ1ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSB9KSAhPSBTUUxJ
VEVfT0sKICAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZEJsb2IoMTAsIFNwYW4g
eyBjb2VwRW5jb2Rlci5idWZmZXIoKSwgY29lcEVuY29kZXIuYnVmZmVyU2l6ZSgpIH0pICE9IFNR
TElURV9PSwogICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kVGV4dCgxMSwgZGF0
YS5yZWZlcnJlclBvbGljeSkgIT0gU1FMSVRFX09LCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGIzZWUwYmVlMWNmOTBmZjFj
M2IyYjdhNjhiYjk3YTUzNjYzMTEyNGMuLmY2MTEwNjExNmE0YmY2NzUyNjQ0YTI0ZWFlMTlmNTVi
NGFhOWZhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBTV1NlcnZlcjo6c2NoZWR1
bGVKb2IoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQogICAgICAgICAgICAgaWYgKGpv
YlF1ZXVlLnNpemUoKSA9PSAxKQogICAgICAgICAgICAgICAgIGpvYlF1ZXVlLnJ1bk5leHRKb2Io
KTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZWplY3RKb2Ioam9iRGF0YSwgeyBUeXBl
RXJyb3IsICJKb2IgcmVqZWN0ZWQgZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIiB9KTsKKyAgICAg
ICAgICAgIHJlamVjdEpvYihqb2JEYXRhLCB7IFR5cGVFcnJvciwgIkpvYiByZWplY3RlZCBmb3Ig
bm9uIGFwcC1ib3VuZCBkb21haW4iX3MgfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IGFlODNmMzJkNWI2ZDg4
ZTRjMTRkNmQyOTliZWRjMDA5NTYxMzFlNWIuLmNiYWNiNGEyMDA1ZGIyNWUxNWFmMDFkM2ZlNDgx
OTE1ZGU1ZTFlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgaW5saW5lIFNoYXJlZFdvcmtlck9i
amVjdENvbm5lY3Rpb24qIG1haW5UaHJlYWRDb25uZWN0aW9uKCkKIEV4Y2VwdGlvbk9yPFJlZjxT
aGFyZWRXb3JrZXI+PiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0
cmluZyYmIHNjcmlwdFVSTFN0cmluZywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBXb3JrZXJPcHRpb25zPj4mJiBtYXliZU9wdGlvbnMpCiB7CiAgICAgaWYgKCFtYWluVGhyZWFk
Q29ubmVjdGlvbigpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IsICJTaGFyZWQgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCIgfTsKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBz
dXBwb3J0ZWQiX3MgfTsKIAogICAgIGF1dG8gdXJsID0gZG9jdW1lbnQuY29tcGxldGVVUkwoc2Ny
aXB0VVJMU3RyaW5nKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggN2M5YTE4
YWQ2YTgwOTVmMTE4OTE2ZDYzMGI5MWNiYmQ0N2NkNjVjZi4uYjhkODUwMjY1MGMyNWQ5NTA2NmZi
YTI0MzgyZTczMzExZjVlMTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNzksMTYgKzc5LDE2IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KEpTQzo6SlNH
bG9iYWxPYmplY3QmIGdsCiAKICAgICAvLyBWYWxpZGF0ZSB0aGF0IHBhaW50Q29uc3RydWN0b3Ig
aXMgYSBWb2lkRnVuY3Rpb24KICAgICBpZiAoIXBhaW50Q29uc3RydWN0b3ItPmlzQ2FsbGFibGUo
dm0pKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAicGFpbnRDb25zdHJ1
Y3RvciBtdXN0IGJlIGNhbGxhYmxlIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAicGFpbnRDb25zdHJ1Y3RvciBtdXN0IGJlIGNhbGxhYmxlIl9zIH07CiAKICAgICBp
ZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyIgfTsKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBmaXJzdCBhcmd1bWVudCBt
dXN0IG5vdCBiZSB0aGUgZW1wdHkgc3RyaW5nIl9zIH07CiAKICAgICB7CiAgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBwYWludERlZmluaXRpb25Mb2NrKCkgfTsKIAogICAgICAgICBpZiAocGFpbnRE
ZWZpbml0aW9uTWFwKCkuY29udGFpbnMobmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yLCAiVGhpcyBuYW1lIGhhcyBhbHJlYWR5IGJl
ZW4gcmVnaXN0ZXJlZCIgfTsKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
TW9kaWZpY2F0aW9uRXJyb3IsICJUaGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVk
Il9zIH07CiAKICAgICAgICAgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOwogCkBAIC0x
MTksMTkgKzExOSwxOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29w
ZTo6cmVnaXN0ZXJQYWludChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbAogICAgICAgICAvLyBGSVhN
RTogQ29udmVydCB0byBQYWludFJlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzIGhlcmUgKHN0ZXAg
MTQpLgogCiAgICAgICAgIGlmICghcGFpbnRDb25zdHJ1Y3Rvci0+aXNDb25zdHJ1Y3Rvcih2bSkp
Ci0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIHNlY29uZCBh
cmd1bWVudCBtdXN0IGJlIGEgY29uc3RydWN0b3IiIH07CisgICAgICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgY29uc3Ry
dWN0b3IiX3MgfTsKIAogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gcGFpbnRDb25z
dHJ1Y3Rvci0+Z2V0KCZnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5n
RXhjZXB0aW9uRXJyb3IgfSk7CiAKICAgICAgICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5pc09iamVj
dCgpKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBzZWNv
bmQgYXJndW1lbnQgbXVzdCBoYXZlIGEgcHJvdG90eXBlIHRoYXQgaXMgYW4gb2JqZWN0IiB9Owor
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBzZWNvbmQgYXJn
dW1lbnQgbXVzdCBoYXZlIGEgcHJvdG90eXBlIHRoYXQgaXMgYW4gb2JqZWN0Il9zIH07CiAKICAg
ICAgICAgSlNWYWx1ZSBwYWludFZhbHVlID0gcHJvdG90eXBlVmFsdWUuZ2V0KCZnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYWludCIpKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9
KTsKIAogICAgICAgICBpZiAocGFpbnRWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBjbGFzcyBtdXN0IGhhdmUgYSBwYWlu
dCBtZXRob2QiIH07CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAi
VGhlIGNsYXNzIG11c3QgaGF2ZSBhIHBhaW50IG1ldGhvZCJfcyB9OwogCiAgICAgICAgIFJlZlB0
cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9u
PEpTQ1NTUGFpbnRDYWxsYmFjaz4+KGdsb2JhbE9iamVjdCwgcGFpbnRWYWx1ZSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9u
RXJyb3IgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcAppbmRleCAxMzZjMDUzZTU0YzEwODYzOTJmNGQwNGNlNzJlNDQyN2FmMWE2MDU3Li43NGRm
Mjc1MTc4Y2E4ODBmODlmOTI5OTY1ODg3Mjk2ZDBkZjM1YTg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2
b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9uKCkKIFN0cmluZyBX
b3JrbGV0R2xvYmFsU2NvcGU6OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiAgICAgcmV0dXJuIG1fZG9jdW1lbnQtPnVzZXJBZ2VudCh1cmwpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCmluZGV4IGQ2YWNlYWYxNGMxNjlmOWZmOGUwNTgwMTAw
MzZhMjU3ODdhNjJlMGQuLjZkZjNmMGM5M2VmNDU2MGIyOTc2M2Q4YjE0ZmQyODU3MjhkYmM3Njgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCkBAIC02MywxMSArNjMsMTEgQEAgdm9pZCBYTUxF
cnJvcnM6OmhhbmRsZUVycm9yKEVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBU
ZXh0UG9zaXRpb24gcG8KICAgICBpZiAodHlwZSA9PSBmYXRhbCB8fCAobV9lcnJvckNvdW50IDwg
bWF4RXJyb3JzICYmICghbV9sYXN0RXJyb3JQb3NpdGlvbiB8fCAobV9sYXN0RXJyb3JQb3NpdGlv
bi0+bV9saW5lICE9IHBvc2l0aW9uLm1fbGluZSAmJiBtX2xhc3RFcnJvclBvc2l0aW9uLT5tX2Nv
bHVtbiAhPSBwb3NpdGlvbi5tX2NvbHVtbikpKSkgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICAgICAgY2FzZSB3YXJuaW5nOgotICAgICAgICAgICAgYXBwZW5kRXJyb3JNZXNzYWdlKCJ3
YXJuaW5nIiwgcG9zaXRpb24sIG1lc3NhZ2UpOworICAgICAgICAgICAgYXBwZW5kRXJyb3JNZXNz
YWdlKCJ3YXJuaW5nIl9zLCBwb3NpdGlvbiwgbWVzc2FnZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBmYXRhbDoKICAgICAgICAgY2FzZSBub25GYXRhbDoKLSAgICAgICAgICAg
IGFwcGVuZEVycm9yTWVzc2FnZSgiZXJyb3IiLCBwb3NpdGlvbiwgbWVzc2FnZSk7CisgICAgICAg
ICAgICBhcHBlbmRFcnJvck1lc3NhZ2UoImVycm9yIl9zLCBwb3NpdGlvbiwgbWVzc2FnZSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBtX2xhc3RFcnJvclBvc2l0aW9uID0gcG9zaXRpb247CkBAIC03
NSw3ICs3NSw3IEBAIHZvaWQgWE1MRXJyb3JzOjpoYW5kbGVFcnJvcihFcnJvclR5cGUgdHlwZSwg
Y29uc3QgY2hhciogbWVzc2FnZSwgVGV4dFBvc2l0aW9uIHBvCiAgICAgfQogfQogCi12b2lkIFhN
TEVycm9yczo6YXBwZW5kRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgVGV4
dFBvc2l0aW9uIHBvc2l0aW9uLCBjb25zdCBjaGFyKiBtZXNzYWdlKQordm9pZCBYTUxFcnJvcnM6
OmFwcGVuZEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwgdHlwZVN0cmluZywgVGV4dFBvc2l0aW9u
IHBvc2l0aW9uLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewogICAgIC8vIDx0eXBlU3RyaW5nPiBv
biBsaW5lIDxsaW5lTnVtYmVyPiBhdCBjb2x1bW4gPGNvbHVtbk51bWJlcj46IDxtZXNzYWdlPgog
ICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmQodHlwZVN0cmluZywgIiBvbiBsaW5lICIsIHBvc2l0
aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCAiIGF0IGNvbHVtbiAiLCBwb3NpdGlvbi5tX2NvbHVt
bi5vbmVCYXNlZEludCgpLCAiOiAiLCBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxFcnJvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaAppbmRl
eCBhZmM5MDAxYTc2MTYzYjY1YzhkM2JjYTczZTE3ZDg5OTZjMzM2ZjQ0Li5kODVhNDRhMzIzZTUy
MGUyNjQ2ZjVlYjMzNTg2ZmUzOWNlNWI1MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MRXJyb3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCkBAIC00
OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc2VydEVycm9yTWVzc2FnZUJsb2NrKCk7
CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBhcHBlbmRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiB0
eXBlU3RyaW5nLCBUZXh0UG9zaXRpb24sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOworICAgIHZvaWQg
YXBwZW5kRXJyb3JNZXNzYWdlKEFTQ0lJTGl0ZXJhbCB0eXBlU3RyaW5nLCBUZXh0UG9zaXRpb24s
IGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwogCiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAgICAg
aW50IG1fZXJyb3JDb3VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CmluZGV4IDg5NWRjOWQwODU1MGFkNjA4ZTU5NzljNzA4ZDVhOWFhMGE1NDRiNzAuLmU1YmVmMTRi
NGQ0MmMyNzhkZjVlNGM0ZGY5NDE4MTk5NjRkMTQyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcApAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlQ2hhcnNl
dEluTWVkaWFUeXBlSWZOZWVkZWQoU3RyaW5nJiBtZWRpYVR5cGUpCiAgICAgaWYgKCFwYXJzZWRD
b250ZW50VHlwZSB8fCBwYXJzZWRDb250ZW50VHlwZS0+Y2hhcnNldCgpLmlzRW1wdHkoKSB8fCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCksICJVVEYt
OCIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYXJzZWRDb250ZW50VHlwZS0+c2V0Q2hhcnNl
dCgiVVRGLTgiKTsKKyAgICBwYXJzZWRDb250ZW50VHlwZS0+c2V0Q2hhcnNldCgiVVRGLTgiX3Mp
OwogICAgIG1lZGlhVHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5zZXJpYWxpemUoKTsKIH0KIApA
QCAtMjIzLDcgKzIyMyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNy
ZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVl
c3Q6OnNldFRpbWVvdXQodW5zaWduZWQgdGltZW91dCkKIHsKICAgICBpZiAoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkgJiYgIW1fYXN5bmMpIHsKLSAgICAgICAgbG9nQ29u
c29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIlhNTEh0dHBSZXF1ZXN0LnRpbWVv
dXQgY2Fubm90IGJlIHNldCBmb3Igc3luY2hyb25vdXMgSFRUUChTKSByZXF1ZXN0cyBtYWRlIGZy
b20gdGhlIHdpbmRvdyBjb250ZXh0LiIpOworICAgICAgICBsb2dDb25zb2xlRXJyb3Ioc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCAiWE1MSHR0cFJlcXVlc3QudGltZW91dCBjYW5ub3QgYmUgc2V0
IGZvciBzeW5jaHJvbm91cyBIVFRQKFMpIHJlcXVlc3RzIG1hZGUgZnJvbSB0aGUgd2luZG93IGNv
bnRleHQuIl9zKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJv
ciB9OwogICAgIH0KICAgICBtX3RpbWVvdXRNaWxsaXNlY29uZHMgPSB0aW1lb3V0OwpAQCAtMjQ5
LDcgKzI0OSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXNwb25z
ZVR5cGUoUmVzcG9uc2VUeXBlIHR5cGUpCiAgICAgLy8gV2UnbGwgb25seSBkaXNhYmxlIHRoaXMg
ZnVuY3Rpb25hbGl0eSBmb3IgSFRUUChTKSByZXF1ZXN0cyBzaW5jZSBzeW5jIHJlcXVlc3RzIGZv
ciBsb2NhbCBwcm90b2NvbHMKICAgICAvLyBzdWNoIGFzIGZpbGU6IGFuZCBkYXRhOiBzdGlsbCBt
YWtlIHNlbnNlIHRvIGFsbG93LgogICAgIGlmICghbV9hc3luYyAmJiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmlzRG9jdW1lbnQoKSAmJiBtX3VybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
IHsKLSAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIlhN
TEh0dHBSZXF1ZXN0LnJlc3BvbnNlVHlwZSBjYW5ub3QgYmUgY2hhbmdlZCBmb3Igc3luY2hyb25v
dXMgSFRUUChTKSByZXF1ZXN0cyBtYWRlIGZyb20gdGhlIHdpbmRvdyBjb250ZXh0LiIpOworICAg
ICAgICBsb2dDb25zb2xlRXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAiWE1MSHR0cFJl
cXVlc3QucmVzcG9uc2VUeXBlIGNhbm5vdCBiZSBjaGFuZ2VkIGZvciBzeW5jaHJvbm91cyBIVFRQ
KFMpIHJlcXVlc3RzIG1hZGUgZnJvbSB0aGUgd2luZG93IGNvbnRleHQuIl9zKTsKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwogICAgIH0KIApAQCAtMzU0
LDEzICszNTQsMTMgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29u
c3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYgdXJsLCBib28KICAgICAgICAgLy8gV2UnbGwg
b25seSBkaXNhYmxlIHRoaXMgZnVuY3Rpb25hbGl0eSBmb3IgSFRUUChTKSByZXF1ZXN0cyBzaW5j
ZSBzeW5jIHJlcXVlc3RzIGZvciBsb2NhbCBwcm90b2NvbHMKICAgICAgICAgLy8gc3VjaCBhcyBm
aWxlOiBhbmQgZGF0YTogc3RpbGwgbWFrZSBzZW5zZSB0byBhbGxvdy4KICAgICAgICAgaWYgKHVy
bC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgcmVzcG9uc2VUeXBlKCkgIT0gUmVzcG9uc2VU
eXBlOjpFbXB0eVN0cmluZykgewotICAgICAgICAgICAgbG9nQ29uc29sZUVycm9yKGNvbnRleHQs
ICJTeW5jaHJvbm91cyBIVFRQKFMpIHJlcXVlc3RzIG1hZGUgZnJvbSB0aGUgd2luZG93IGNvbnRl
eHQgY2Fubm90IGhhdmUgWE1MSHR0cFJlcXVlc3QucmVzcG9uc2VUeXBlIHNldC4iKTsKKyAgICAg
ICAgICAgIGxvZ0NvbnNvbGVFcnJvcihjb250ZXh0LCAiU3luY2hyb25vdXMgSFRUUChTKSByZXF1
ZXN0cyBtYWRlIGZyb20gdGhlIHdpbmRvdyBjb250ZXh0IGNhbm5vdCBoYXZlIFhNTEh0dHBSZXF1
ZXN0LnJlc3BvbnNlVHlwZSBzZXQuIl9zKTsKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNpbWlsYXJs
eSwgdGltZW91dHMgYXJlIGRpc2FibGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cyBhcyB3ZWxs
LgogICAgICAgICBpZiAobV90aW1lb3V0TWlsbGlzZWNvbmRzID4gMCkgewotICAgICAgICAgICAg
bG9nQ29uc29sZUVycm9yKGNvbnRleHQsICJTeW5jaHJvbm91cyBYTUxIdHRwUmVxdWVzdHMgbXVz
dCBub3QgaGF2ZSBhIHRpbWVvdXQgdmFsdWUgc2V0LiIpOworICAgICAgICAgICAgbG9nQ29uc29s
ZUVycm9yKGNvbnRleHQsICJTeW5jaHJvbm91cyBYTUxIdHRwUmVxdWVzdHMgbXVzdCBub3QgaGF2
ZSBhIHRpbWVvdXQgdmFsdWUgc2V0LiJfcyk7CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDA0LDEyICsx
MDA0LDEyIEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRl
RGVjb2RlcigpIGNvbnN0CiB7CiAgICAgUEFMOjpUZXh0RW5jb2RpbmcgZmluYWxSZXNwb25zZUNo
YXJzZXQgPSB0aGlzLT5maW5hbFJlc3BvbnNlQ2hhcnNldCgpOwogICAgIGlmIChmaW5hbFJlc3Bv
bnNlQ2hhcnNldC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjcmVhdGUoInRleHQvcGxhaW4iLCBmaW5hbFJlc3BvbnNlQ2hhcnNldCk7CisgICAgICAgIHJl
dHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsIGZpbmFsUmVz
cG9uc2VDaGFyc2V0KTsKIAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKCkpIHsKICAgICBjYXNl
IFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmc6CiAgICAgICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1hNTE1JTUVUeXBlKHJlc3BvbnNlTUlNRVR5cGUoKSkpIHsKLSAgICAgICAgICAgIGF1dG8g
ZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7
CisgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUo
ImFwcGxpY2F0aW9uL3htbCJfcyk7CiAgICAgICAgICAgICAvLyBEb24ndCBzdG9wIG9uIGVuY29k
aW5nIGVycm9ycywgdW5saWtlIGl0IGlzIGRvbmUgZm9yIG90aGVyIGtpbmRzIG9mIFhNTCByZXNv
dXJjZXMuIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgcHJldmlvdXMgV2ViS2l0IHZlcnNp
b25zLCBGaXJlZm94IGFuZCBPcGVyYS4KICAgICAgICAgICAgIGRlY29kZXItPnVzZUxlbmllbnRY
TUxEZWNvZGluZygpOwogICAgICAgICAgICAgcmV0dXJuIGRlY29kZXI7CkBAIC0xMDE3LDExICsx
MDE3LDExIEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRl
RGVjb2RlcigpIGNvbnN0CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgUmVzcG9uc2VU
eXBlOjpUZXh0OgogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpKc29uOgotICAgICAgICByZXR1cm4g
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7CisgICAg
ICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsICJV
VEYtOCIpOwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpEb2N1bWVudDogewogICAgICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVzcG9uc2VNSU1FVHlwZSgpLCAidGV4dC9o
dG1sIikpCi0gICAgICAgICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0
ZXh0L2h0bWwiLCAiVVRGLTgiKTsKLSAgICAgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291cmNl
RGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKTsKKyAgICAgICAgICAgIHJldHVybiBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvaHRtbCJfcywgIlVURi04Iik7CisgICAg
ICAgIGF1dG8gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRp
b24veG1sIl9zKTsKICAgICAgICAgLy8gRG9uJ3Qgc3RvcCBvbiBlbmNvZGluZyBlcnJvcnMsIHVu
bGlrZSBpdCBpcyBkb25lIGZvciBvdGhlciBraW5kcyBvZiBYTUwgcmVzb3VyY2VzLiBUaGlzIG1h
dGNoZXMgdGhlIGJlaGF2aW9yIG9mIHByZXZpb3VzIFdlYktpdCB2ZXJzaW9ucywgRmlyZWZveCBh
bmQgT3BlcmEuCiAgICAgICAgIGRlY29kZXItPnVzZUxlbmllbnRYTUxEZWNvZGluZygpOwogICAg
ICAgICByZXR1cm4gZGVjb2RlcjsKQEAgLTEwMzEsNyArMTAzMSw3IEBAIFJlZjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlRGVjb2RlcigpIGNvbnN0CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJu
IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJVVEYtOCIpOworICAg
IHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsICJVVEYt
OCIpOwogfQogCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCmluZGV4IGUzMTU2
NWViZTc4ZDliZmRhY2MwZjZhMWVhMGE1NzJlODU2MmI4OWQuLjlhMGFiYWZkOTVhMTg5ZWIzNDhk
OTQ4MjkzMjFhN2Q4MjYzYmJhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcApAQCAt
MzA4LDcgKzMwOCw3IEBAIGlubGluZSBQYXJzZXI6OlRva2VuIFBhcnNlcjo6bmV4dFRva2VuSW50
ZXJuYWwoKQogICAgICAgICBpZiAoaXNCaW5hcnlPcGVyYXRvckNvbnRleHQoKSkKICAgICAgICAg
ICAgIHJldHVybiBtYWtlVG9rZW5BbmRBZHZhbmNlKE1VTE9QLCBOdW1lcmljT3A6Ok9QX011bCk7
CiAgICAgICAgICsrbV9uZXh0UG9zOwotICAgICAgICByZXR1cm4gVG9rZW4oTkFNRVRFU1QsICIq
Iik7CisgICAgICAgIHJldHVybiBUb2tlbihOQU1FVEVTVCwgIioiX3MpOwogICAgIGNhc2UgJyQn
OiB7IC8vICQgUU5hbWUKICAgICAgICAgbV9uZXh0UG9zKys7CiAgICAgICAgIFN0cmluZyBuYW1l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCmluZGV4IDNkMWNkNGNkMmNiZThlMDZk
YzA3NTFlMzUzZGUxODA5OTg0NTYyYjEuLmJlNThkNmY3NDQxY2QwODNiMjMyYTRjZDQ1ZDQwZTE0
ZjQ4YTViYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKQEAgLTEyNSw3ICsx
MjUsNyBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gWFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3Jt
VG9GcmFnbWVudChOb2RlJiBzb3VyY2VOb2RlLCBEbwogCiAgICAgLy8gSWYgdGhlIG91dHB1dCBk
b2N1bWVudCBpcyBIVE1MLCBkZWZhdWx0IHRvIEhUTUwgbWV0aG9kLgogICAgIGlmIChvdXRwdXRE
b2N1bWVudC5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICByZXN1bHRNSU1FVHlwZSA9ICJ0ZXh0
L2h0bWwiOworICAgICAgICByZXN1bHRNSU1FVHlwZSA9ICJ0ZXh0L2h0bWwiX3M7CiAKICAgICBp
ZiAoIXRyYW5zZm9ybVRvU3RyaW5nKHNvdXJjZU5vZGUsIHJlc3VsdE1JTUVUeXBlLCByZXN1bHRT
dHJpbmcsIHJlc3VsdEVuY29kaW5nKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3
MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li41YjJiMDg3Zjg5MDJjNjIwNTk4NmViYTdlYmVj
MDk5ODY5MGMyZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nv
ckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNs
dC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBYU0xUUHJvY2Vzc29yOjpwYXJzZUVycm9yRnVu
Yyh2b2lkKiB1c2VyRGF0YSwgeG1sRXJyb3IqIGVycm9yKQogICAgIH0KIAogICAgIC8vIHhtbEVy
cm9yLT5pbnQyIGlzIHRoZSBjb2x1bW4gbnVtYmVyIG9mIHRoZSBlcnJvciBvciAwIGlmIE4vQS4K
LSAgICBjb25zb2xlLT5hZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlhNTCwgbGV2ZWwsIGVycm9y
LT5tZXNzYWdlLCBlcnJvci0+ZmlsZSwgZXJyb3ItPmxpbmUsIGVycm9yLT5pbnQyKTsKKyAgICBj
b25zb2xlLT5hZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlhNTCwgbGV2ZWwsIFN0cmluZyB7IGVy
cm9yLT5tZXNzYWdlIH0sIFN0cmluZyB7IGVycm9yLT5maWxlIH0sIGVycm9yLT5saW5lLCBlcnJv
ci0+aW50Mik7CiB9CiAKIC8vIEZJWE1FOiBUaGVyZSBzZWVtcyB0byBiZSBubyB3YXkgdG8gY29u
dHJvbCB0aGUgY3R4dCBwb2ludGVyIGZvciBsb2FkaW5nIGhlcmUsIHRodXMgd2UgaGF2ZSBnbG9i
YWxzLgpAQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhj
b25zdCB4bWxDaGFyKiB1cmksCiAgICAgY2FzZSBYU0xUX0xPQURfRE9DVU1FTlQ6IHsKICAgICAg
ICAgeHNsdFRyYW5zZm9ybUNvbnRleHRQdHIgY29udGV4dCA9ICh4c2x0VHJhbnNmb3JtQ29udGV4
dFB0ciljdHh0OwogICAgICAgICB4bWxDaGFyKiBiYXNlID0geG1sTm9kZUdldEJhc2UoY29udGV4
dC0+ZG9jdW1lbnQtPmRvYywgY29udGV4dC0+bm9kZSk7Ci0gICAgICAgIFVSTCB1cmwoVVJMKHsg
fSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYmFzZSkpLCByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPih1cmkpKTsKKyAgICAgICAgVVJMIHVybChVUkwoeyB9LCBTdHJpbmcgeyBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihiYXNlKSB9KSwgU3RyaW5nIHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4odXJpKSB9KTsKICAgICAgICAgeG1sRnJlZShiYXNlKTsKICAg
ICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZTsKQEAgLTMwMCwxMSArMzAwLDExIEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHJlc3VsdE1J
TUVUeXBlKHhtbERvY1B0ciByZXN1bHREb2MsIHhzbHRTdHlsZXNoZWV0UHRyIHNoZWV0CiAgICAg
ICAgIHJlc3VsdFR5cGUgPSAoY29uc3QgeG1sQ2hhciopImh0bWwiOwogCiAgICAgaWYgKHhtbFN0
ckVxdWFsKHJlc3VsdFR5cGUsIChjb25zdCB4bWxDaGFyKikiaHRtbCIpKQotICAgICAgICByZXR1
cm4gInRleHQvaHRtbCI7CisgICAgICAgIHJldHVybiAidGV4dC9odG1sIl9zOwogICAgIGlmICh4
bWxTdHJFcXVhbChyZXN1bHRUeXBlLCAoY29uc3QgeG1sQ2hhciopInRleHQiKSkKLSAgICAgICAg
cmV0dXJuICJ0ZXh0L3BsYWluIjsKKyAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9zOwogCi0g
ICAgcmV0dXJuICJhcHBsaWNhdGlvbi94bWwiOworICAgIHJldHVybiAiYXBwbGljYXRpb24veG1s
Il9zOwogfQogCiBib29sIFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvU3RyaW5nKE5vZGUmIHNv
dXJjZU5vZGUsIFN0cmluZyYgbWltZVR5cGUsIFN0cmluZyYgcmVzdWx0U3RyaW5nLCBTdHJpbmcm
IHJlc3VsdEVuY29kaW5nKQpAQCAtMzc0LDcgKzM3NCw3IEBAIGJvb2wgWFNMVFByb2Nlc3Nvcjo6
dHJhbnNmb3JtVG9TdHJpbmcoTm9kZSYgc291cmNlTm9kZSwgU3RyaW5nJiBtaW1lVHlwZSwgU3Ry
aW5nCiAKICAgICAgICAgaWYgKChzdWNjZXNzID0gc2F2ZVJlc3VsdFRvU3RyaW5nKHJlc3VsdERv
Yywgc2hlZXQsIHJlc3VsdFN0cmluZykpKSB7CiAgICAgICAgICAgICBtaW1lVHlwZSA9IHJlc3Vs
dE1JTUVUeXBlKHJlc3VsdERvYywgc2hlZXQpOwotICAgICAgICAgICAgcmVzdWx0RW5jb2Rpbmcg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihyZXN1bHREb2MtPmVuY29kaW5nKTsKKyAg
ICAgICAgICAgIHJlc3VsdEVuY29kaW5nID0gU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4ocmVzdWx0RG9jLT5lbmNvZGluZykgfTsKICAgICAgICAgfQogICAgICAgICB4bWxG
cmVlRG9jKHJlc3VsdERvYyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA3ZTZiZjRhYTAzNjUxYWQ2MTc5YTJiYjQ5N2Yw
YWIzMDhmY2VhNTY2Li4xYWI4YTM1MjRhNmNkMGY5M2ZjNjVmMWJmODFiNWQ3MzIwZWMxNjdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApA
QCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUxlYWZUZXh0
Tm9kZSgpCiAKICAgICBBU1NFUlQobV9idWZmZXJlZFRleHQuc2l6ZSgpID09IDApOwogICAgIEFT
U0VSVCghbV9sZWFmVGV4dE5vZGUpOwotICAgIG1fbGVhZlRleHROb2RlID0gVGV4dDo6Y3JlYXRl
KG1fY3VycmVudE5vZGUtPmRvY3VtZW50KCksICIiKTsKKyAgICBtX2xlYWZUZXh0Tm9kZSA9IFRl
eHQ6OmNyZWF0ZShtX2N1cnJlbnROb2RlLT5kb2N1bWVudCgpLCBlbXB0eVN0cmluZygpKTsKICAg
ICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZCgqbV9sZWFmVGV4dE5vZGUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5
Mi4uYmRmN2JmYzY3ZGFlMWQ0MzNhNmJjZDE4YWY2NmJiNDhhNTUzZTM1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cApAQCAtNDU4LDcgKzQ1OCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1
cmkpCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIuZG9jdW1l
bnQoKTsKICAgICAvLyBTYW1lIGxvZ2ljIGFzIEhUTUxCYXNlRWxlbWVudDo6aHJlZigpLiBLZWVw
IHRoZW0gaW4gc3luYy4KICAgICBhdXRvKiBlbmNvZGluZyA9IChkb2N1bWVudCAmJiBkb2N1bWVu
dC0+ZGVjb2RlcigpKSA/IGRvY3VtZW50LT5kZWNvZGVyKCktPmVuY29kaW5nRm9yVVJMUGFyc2lu
ZygpIDogbnVsbHB0cjsKLSAgICBVUkwgdXJsKGRvY3VtZW50ID8gZG9jdW1lbnQtPmZhbGxiYWNr
QmFzZVVSTCgpIDogVVJMKCksIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmkp
LCBlbmNvZGluZyk7CisgICAgVVJMIHVybChkb2N1bWVudCA/IGRvY3VtZW50LT5mYWxsYmFja0Jh
c2VVUkwoKSA6IFVSTCgpLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoU3RyaW5n
IHsgdXJpIH0pLCBlbmNvZGluZyk7CiAKICAgICBpZiAoIXNob3VsZEFsbG93RXh0ZXJuYWxMb2Fk
KHVybCkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IGE4
ZTc0OTk3ZDZjNDA1MGZiMjBlODBiZDRhZGJiNzJkODE4NDZmNmMuLjZkYmI1MmRhMjU3ZTc0MDM3
MmM2MmRiZDNjMDQ3NzZjNjI3Yjk1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNjcsNyArNjcsNyBAQCBzdGF0
aWMgY29uc3QgY2hhciogaHR0cE5vdEFsbG93ZWRUZXh0ID0gIk5vdCBBbGxvd2VkIjsKIHN0YXRp
YyBjb25zdCBjaGFyKiBodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZVRleHQgPSAiUmVx
dWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZSI7CiBzdGF0aWMgY29uc3QgY2hhciogaHR0cElu
dGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciI7CiAKLXN0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCB3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291
cmNlIjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4gPSAi
V2ViS2l0QmxvYlJlc291cmNlIl9zOwogCiBOZXR3b3JrRGF0YVRhc2tCbG9iOjpOZXR3b3JrRGF0
YVRhc2tCbG9iKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBCbG9iUmVnaXN0cnlJbXBsJiBibG9i
UmVnaXN0cnksIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mIGZp
bGVSZWZlcmVuY2VzKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Npb24sIGNsaWVudCwgcmVx
dWVzdCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlLCBmYWxzZSwgZmFsc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzZTdmOWRk
ZDkxZGE4NjFmNmIxZmExNTAwYWJhMDUzMGVhMmU4ODI2Li5mZDU0MDlkNzVmYjI5Y2Q4YWZiNGEz
ODIwNDdlMTFiMzdiYjViNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKQEAgLTIwNzksNyArMjA3OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpl
bmFibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNl
CiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihTbGVlcERpc2Fi
bGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgYm9vbCBkaXNw
bGF5KQogewogICAgIE1FU1NBR0VfQ0hFQ0soIXJlYXNvbi5pc051bGwoKSk7Ci0gICAgYXV0byBz
bGVlcERpc2FibGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTbGVlcERpc2FibGVyPihyZWFzb24u
dXRmOCgpLmRhdGEoKSwgZGlzcGxheSA/IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6RGlzcGxh
eSA6IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6U3lzdGVtKTsKKyAgICBhdXRvIHNsZWVwRGlz
YWJsZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI+KHJlYXNvbiwgZGlzcGxh
eSA/IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6RGlzcGxheSA6IFBBTDo6U2xlZXBEaXNhYmxl
cjo6VHlwZTo6U3lzdGVtKTsKICAgICBtX3NsZWVwRGlzYWJsZXJzLmFkZChpZGVudGlmaWVyLCBX
VEZNb3ZlKHNsZWVwRGlzYWJsZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDkwZmJiNmRkODMzZWFhYTE5NTIyYThkY2IwNjI4MTE5OTAwZTUyNWMu
LmNmNTc5YTQzMzcwMmI1YjAwYzM2ZTBlZjUyZjhlNTk5NGRlYzA1MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIFdlYlBy
b2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogICAgICAgICB9KTsKICAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVy
Lmluc3RhbGwoKTsKIAotICAgICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5h
cHBsZS5XZWJLaXQubG9nTWVtU3RhdHMiLCBbXSB7CisgICAgICAgIFBBTDo6cmVnaXN0ZXJOb3Rp
ZnlDYWxsYmFjaygiY29tLmFwcGxlLldlYktpdC5sb2dNZW1TdGF0cyJfcywgW10gewogICAgICAg
ICAgICAgV2ViQ29yZTo6bG9nTWVtb3J5U3RhdGlzdGljcyhMb2dNZW1vcnlTdGF0aXN0aWNzUmVh
c29uOjpEZWJ1Z05vdGlmaWNhdGlvbik7CiAgICAgICAgIH0pOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455830</attachid>
            <date>2022-03-25 23:01:31 -0700</date>
            <delta_ts>2022-03-26 13:54:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238408-20220325230130.patch</filename>
            <type>text/plain</type>
            <size>447631</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxOTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ3ZjIwNGU5YmM0NTc0YzQyMjQ1NzE2
MWE1MGI2NTEwYzgzNmNiNWUuLmZjYWQ3OTMxMWYyZjQyYWE1MTM1NzJiMzYzY2VkOWRmYzBmNDFh
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYkNvcmUgZm9yIG1ha2luZyB0aGUgU3Ry
aW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJlcGFyZSBXZWJDb3JlIGZvciBtYWtpbmcg
dGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQuCisgICAgICAgIE1h
a2luZyB0aGlzIGNvbnN0cnVjdG9yIGV4cGxpY2l0IGhlbHBzIGZpbmRpbmdzIGNhc2VzIHdoZXJl
IGEgU3RyaW5nIGlzIGNvbnN0cnVjdGVkCisgICAgICAgIGZyb20gYSBsaXRlcmFsIHdpdGhvdXQg
dGhlICIiX3Mgc3VmZml4LgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAg
ICAgIChXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UpOgorCiAyMDIyLTAzLTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFN0cmluZ1ZpZXc6OnNwbGl0
KCkgaW5zdGVhZCBvZiBTdHJpbmc6OnNwbGl0KCkgaW4gbW9yZSBwbGFjZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAxNTBlMGNkYmRkNTNlMTdlNWU1NGYwYTE2NzhmNGUzNDBmZmYwNjI5Li44OTU2MTQyMDkxN2M2
YTY2YjlkNmM2YWE2ZTc2Mzg2YWIwMTliNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMyIEBA
CisyMDIyLTAzLTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
UHJlcGFyZSBXZWJDb3JlIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3Ry
dWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzODQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFByZXBhcmUgV2ViQ29yZSBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciop
IGNvbnN0cnVjdG9yIGV4cGxpY2l0LgorICAgICAgICBNYWtpbmcgdGhpcyBjb25zdHJ1Y3RvciBl
eHBsaWNpdCBoZWxwcyBmaW5kaW5ncyBjYXNlcyB3aGVyZSBhIFN0cmluZyBpcyBjb25zdHJ1Y3Rl
ZAorICAgICAgICBmcm9tIGEgbGl0ZXJhbCB3aXRob3V0IHRoZSAiIl9zIHN1ZmZpeC4KKworICAg
ICAgICAqIFNjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuY3BwLmVyYjoKKyAgICAg
ICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuY3BwOgorICAgICAg
ICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oOgorICAgICAgICAq
IGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVl
cnlFdmFsdWF0b3I6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcyk6CisgICAgICAgICogZG9tL0Jyb2Fk
Y2FzdENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbDo6cG9z
dE1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bm9ybWFsaXplVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJRU9wRnJvbURyYWdPcCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpjb21wYXRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjaGFyYWN0
ZXJTZXRXaXRoVVRGOEZhbGxiYWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpwcm9jZXNzTWV0YUh0dHBFcXVpdik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0
RG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpleGVjQ29tbWFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cXVlcnlDb21tYW5kRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6cXVlcnlDb21tYW5kSW5kZXRlcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpxdWVyeUNvbW1hbmRTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnF1ZXJ5Q29tbWFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVS
ZXNpemVPYnNlcnZhdGlvbnMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnNldE91dGVySFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjphbmltYXRlKToKKyAgICAgICAgKiBkb20vSW1hZ2VPdmVybGF5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlT3ZlcmxheTo6dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdCk6
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd1Ry
ZWVGb3JUaGlzQWNyb3NzRnJhbWUgY29uc3QpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpj
aGVja1N0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp2aWV3cG9ydEVycm9yTWVzc2FnZVRlbXBsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OnZpZXdwb3J0RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnRvZ2dsZUJvbGQpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjp0b2dnbGVVbmRlcmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU3R5bGVQcmVzZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVUb2dnbGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHREZWNvcmF0aW9uQ2hhbmdlRm9yVG9nZ2xpbmcp
OgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBl
ZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRl
eHRDb21tYW5kOjppbnNlcnRUYWIpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmFkZFNwYWNlc0ZvclNtYXJ0UmVwbGFj
ZSk6CisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6b2JzZXJ2ZVBhcmFn
cmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWtBbmROb3RpZnlBY2Nlc3NpYmls
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNl
cGFyYXRvckFuZE5vdGlmeUFjY2Vzc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5n
Q29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50QW5kTm90aWZ5
QWNjZXNzaWJpbGl0eSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KToKKyAgICAgICAgKiBm
aWxlYXBpL0Jsb2JVUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlVSTDo6Y3JlYXRlSW50
ZXJuYWxVUkwpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlUmVhZGVyTG9hZGVyOjpjb252ZXJ0VG9UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVSZWFkZXJMb2FkZXI6OmNvbnZlcnRUb0RhdGFVUkwpOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpC
YWNrRm9yd2FyZENhY2hlKToKKyAgICAgICAgKiBodG1sL0VtYWlsSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKiBodG1sL0VudGVyS2V5SGludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1
dGVWYWx1ZUZvckVudGVyS2V5SGludCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6
Y3JlYXRlQmFzaWNEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2spOgor
ICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dDo6YmVzdEZpdFNvdXJjZUZyb21QaWN0dXJlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW1hZ2VFbGVtZW50OjpldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5RGVwZW5kZW5jaWVzKToK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6c2hvd1BpY2tlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNsZWVwRGlzYWJs
aW5nKToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKToKKyAgICAgICAg
KiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpj
cmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyb3BwZWRTb3VyY2VSZWN0YW5nbGVX
aXRoRm9ybWF0dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlRnJv
bUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAg
KiBodG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VGcmFnbWVudHMpOgorICAgICAgICAqIGh0bWwvUERG
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OnNlbmRQREZBcnJh
eUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6OkFOR0xFSW5zdGFuY2Vk
QXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQzo6RVhUVGV4dHVy
ZUNvbXByZXNzaW9uUkdUQyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpp
bml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMxOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JH
Qi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6
OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZWJ1
Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TERlcHRoVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6
V2ViR0xEZXB0aFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZXB0aFRleHR1cmU6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0dXBGbGFncyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBY3RpdmVVbmlm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZEV4
dGVuc2lvblN1cHBvcnRlZEZvcm1hdHNBbmRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dEltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWN5Y2xlQ29u
dGV4dCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlh
bGl6ZUZvck51bWJlclR5cGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjppbml0aWF0
b3JGb3IpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdT
Y2FubmVyOjpwcm9jZXNzQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJl
bG9hZFNjYW5uZXIuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2Fk
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlByZWxvYWRSZXF1ZXN0OjpQcmVsb2FkUmVxdWVzdCk6
CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrQ3VlOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVHZW5lcmljQm94
RWxlbWVudDo6YXBwbHlDU1NQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGllcyk6
CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVlRUUGFyc2VyOjpXZWJWVFRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRU
VHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4pOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRDb21wdXRlZFByb3BlcnRp
ZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJs
YXk6OnNldEdyaWRPdmVybGF5Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JP
dmVybGF5OjpjbGVhckdyaWRPdmVybGF5Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JPdmVybGF5OjpzZXRGbGV4T3ZlcmxheUZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheTo6Y2xlYXJGbGV4T3ZlcmxheUZvck5vZGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclN0eWxlOjpidWlsZE9iamVjdEZvclN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OnNlbGVjdG9yc0Zyb21Tb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQ6OnJlc29sdmVBbmltYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OmdldEZvbnREYXRhRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjphZGRSdWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50Ojpy
ZXNvbHZlQ29udGV4dCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0U3VwcG9y
dGVkRXZlbnROYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2hv
d0dyaWRPdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzaG93
RmxleE92ZXJsYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpzZXRFdmVudEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmJyZWFrT25VUkxJZk5lZWRlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpleGVjdXRlU1FMKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6RXhlY3V0YWJsZVdpdGhEYXRhYmFzZTo6c3RhcnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yTGF5ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVzb2x2
ZVdlYlNvY2tldCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb29raWVPYmplY3QpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEluc2VydERPTU5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVE
T01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50OjpidWlsZFBh
dXNlRGF0YUZvckRPTUJyZWFrcG9pbnQpOgorICAgICAgICAqIGxheW91dC9WZXJpZmljYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94
SW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OmNhblVzZUZvckxpbmVMYXlvdXRXaXRoUmVhc29uKToKKyAgICAgICAgKiBsb2FkZXIv
Q29udGVudEZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6dXJsU2No
ZW1lKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6YWxsb3dz
Q3Jvc3NPcmlnaW5NZXRob2QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OnZhbGlkYXRlQ3Jvc3NPcmlnaW5IZWFkZXJzIGNvbnN0
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlTG9hZEVtcHR5KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2hlY2tVUkxTY2hlbWVBc0NPUlNFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3Qp
OgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdWJtaXNz
aW9uOjpwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFu
ZEFkZEV4dHJhRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUG9z
dFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnRE
b2N1bWVudEl0ZW0pOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZWplY3RQcm9taXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRl
cjo6cmVqZWN0RGVjb2RlUHJvbWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpkZWNvZGUp
OgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9NaXhl
ZENvbnRlbnRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ1dhcm5pbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuRGlzcGxheUluc2VjdXJlQ29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpNaXhlZENvbnRlbnRDaGVja2VyOjpjYW5SdW5JbnNl
Y3VyZUNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNlbmRQaW5nKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVGb250SGFzaFNl
dCk6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVDYW52YXNBY3Rpdml0eVJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6ZGVjb2RlSGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2ViQ29yZTo6
ZGVjb2RlRm9udEhhc2hTZXQpOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlQ2FudmFzQWN0aXZp
dHlSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3RyaW5n
IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCk6CisgICAgICAgICogbG9hZGVyL1NlcnZlclRpbWluZ1Bh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2ZXJUaW1pbmdQYXJzZXI6OnBhcnNlU2Vy
dmVyVGltaW5nKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KToKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRDU1NTdHlsZVNoZWV0OjpDYWNoZWRDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmRpZEFkZENsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRDU1NTdHlsZVNoZWV0OjplbmNvZGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
Ojpsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OkNhY2hlZFNWR0RvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZyBjb25zdCk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0
OjplbmNvZGluZyBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6Q2FjaGVk
WFNMU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0Ojpl
bmNvZGluZyBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpNZW1vcnlDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlDYWNoZTo6b3JpZ2luc1dpdGhDYWNoZSBjb25zdCk6CisgICAgICAgICog
bWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydE1hdGhT
aXplSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6
OmNhcHRpb25zVGV4dEVkZ2VDU1MgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cHJpbnQpOgorICAgICAgICAqIHBhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJv
bGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6
ZXh0ZW5kKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6OnByaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWxlcnQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpjb25maXJtRm9yQmluZGluZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwcm9tcHQpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
V2luZG93OjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnQpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRT
b3VyY2U6OmNvbm5lY3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlUmVnRXhwRm9yTGFiZWxzKToKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoTGFi
ZWxzQWdhaW5zdFN0cmluZyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGp1c3RNZWRpYVR5cGVGb3JQcmludGluZyk6CisgICAg
ICAgICogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZVJvb3RNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6
OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Mb2dnZWRJblN0YXR1cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMb2dnZWRJblN0YXR1czo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRv
ckJhc2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9RdWlya3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVp
cmsgY29uc3QpOgorICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VEaWFsb2dGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpib29sRmVh
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpmbG9hdEZlYXR1cmUpOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zb2xl
TWVzc2FnZUZvclZpb2xhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmFsbG93RXZhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3k6OnJlcG9ydEludmFsaWRQbHVnaW5UeXBlcyBjb25zdCk6CisgICAgICAgICogcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzaG91bGRSZXBvcnRT
YW1wbGUgY29uc3QpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzLmNwcDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lcy5oOgorICAgICAgICAqIHBsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lz
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbEJ1aWx0aW5TY2hlbWVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYTWVu
dUxpc3RQb3B1cEFjdGlvblZlcmIpOgorICAgICAgICAoV2ViQ29yZTo6QVhNZW51TGlzdEFjdGlv
blZlcmIpOgorICAgICAgICAoV2ViQ29yZTo6QVhMaXN0SXRlbUFjdGlvblZlcmIpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NsZWVwRGlzYWJsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xlZXBE
aXNhYmxlcjo6U2xlZXBEaXNhYmxlcik6CisgICAgICAgICogcGxhdGZvcm0vU2xlZXBEaXNhYmxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRGF0YWJhc2U6OkhSVEZEYXRhYmFzZSk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Q
cml2YXRlOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRpb1ZpZGVvVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VMaWNlbnNlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlTGljZW5zZVJlbGVhc2VBY2tub3dsZWRnZW1lbnRGb3JtYXQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZGVzY3JpcHRp
b24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6dG9KU09OU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0aWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVjRnJvbUZvcm1hdERlc2NyaXB0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVZpZGVvSW5mb0Zyb21WUDlIZWFkZXJQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlVmlkZW9JbmZvRnJvbVZQOEhlYWRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6Y29kZWMgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
RUJsZW5kOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6Omhhc2hTdHJpbmdXaXRoU2FsdCk6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9SVENOb3RpZmllcnNNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURhdGFDaGFu
bmVsTm90aWZpZXI6OmZpcmUpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyc0Nv
bnRyb2xsZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcnNDb250cm9sbGVy
TW9jazo6bW91c2VFbnRlcmVkQ29udGVudEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyc0NvbnRyb2xsZXJNb2NrOjptb3VzZU1vdmVkSW5Db250ZW50QXJlYSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJzQ29udHJvbGxlck1vY2s6Om1vdXNlRXhpdGVkQ29udGVudEFyZWEp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWltZVR5cGVDYWNoZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9y
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFVUkxEZWNvZGVyOjpEZWNvZGVUYXNrOjpwcm9jZXNzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlU3RydWN0dXJlZEZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVFRQ
SGVhZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VB
Y2Nlc3NRdWlya3MpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OmNoYXJzZXQgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmZpbHRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2luZ1Byb3h5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5l
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2NrZXRT
dHJlYW1IYW5kbGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmFkZENPTk5FQ1RDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6
YXV0aG9yaXplckZ1bmN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVu
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6cmVuZGVyTmFtZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvdW50ZXI6OnJl
bmRlck5hbWUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OnJlbmRlck5hbWUgY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6cmVuZGVyTmFt
ZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZyYWdtZW50ZWRGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1l
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZW5kZXJOYW1lIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJIVE1MQ2FudmFzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpyZW5kZXJO
YW1lIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0ZVByaW1hcnlHcmFwaGljc0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6ZW5zdXJlQ2xpcHBpbmdTdGFja0xheWVycyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURlc2NlbmRhbnRD
bGlwcGluZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZU1hc2tpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZUNoaWxkQ2xpcHBpbmdTdHJhdGVneSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVNjcm9sbGluZ0xheWVycyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTWVkaWEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTW9kZWwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uRmxvdzo6cmVuZGVyTmFtZSBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6cmVuZGVyTmFtZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpyZW5kZXJOYW1lIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6b3V0cHV0UmVuZGVyT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclByb2dy
ZXNzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3RlLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxp
Y2EuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJSdWJ5QmFzZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5UnVu
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
YWJsZUNvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpyZW5kZXJOYW1l
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFRhZ05hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWaWRlby5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmg6CisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxQYWRkZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
b3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1No
YXBlT3V0c2lkZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tTaGFwZUltYWdlT3Jp
Z2luKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSZWN0Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSb290Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9M
ZWdhY3lSZW5kZXJTVkdTaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Q29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFya2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVJhZGlhbEdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQ
YXRoLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5l
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHQ29udGFpbmVyTGF5b3V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0NvbnRhaW5lckxheW91dDo6dmVyaWZ5TGF5b3V0TG9jYXRpb25D
b25zaXN0ZW5jeSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRTdHJlYW1TZXBhcmF0b3I6OlRleHRTdHJlYW1T
ZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdGaWxsUGFpbnRpbmdSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVNWR1N0cm9rZVBhaW50aW5nUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6d3JpdGVTdGFuZGFyZFByZWZpeCk6CisgICAgICAgICogc3ZnL0xp
bmVhckdyYWRpZW50QXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZWFyR3JhZGll
bnRBdHRyaWJ1dGVzOjpMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHN2Zy9S
YWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlhbEdyYWRp
ZW50QXR0cmlidXRlczo6UmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcv
U1ZHRml0VG9WaWV3Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpdFRvVmlld0JveDo6
cGFyc2VWaWV3Qm94R2VuZXJpYyk6CisgICAgICAgICogc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHZW9tZXRyeUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZVZhbGlkaXR5VG9Ub1N0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpyZXNwb25zZVNvdXJjZVRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjplbGVtZW50QnVmZmVyaW5nUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6Y3JlYXRlU2xlZXBEaXNhYmxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmxvYWRBcnR3b3JrSW1hZ2UpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzTWFwTGlr
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHNNYXBMaWtlOjpJbnRlcm5hbHNNYXBM
aWtlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBvc2l0aW9u
U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpwbGF5YmFja1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnRyYWNrSWRlbnRpZmllckNoYW5nZWQpOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmg6CisgICAgICAg
ICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpsYXllclRyZWVBc1RleHQpOgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpu
b3RpZnlFcnJvcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRk
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjplbnN1cmVWYWxpZFJlY29yZHNUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVWaWFD
YWNoZVRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmtlclR5cGVUb1N0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OmNyZWF0
ZSk6CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgor
ICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnVzZXJBZ2VudCBjb25zdCk6CisgICAgICAgICogeG1s
L1hNTEVycm9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxFcnJvcnM6OmhhbmRsZUVycm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEVycm9yczo6YXBwZW5kRXJyb3JNZXNzYWdlKToKKyAg
ICAgICAgKiB4bWwvWE1MRXJyb3JzLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VDaGFyc2V0SW5NZWRpYVR5cGVJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0VGltZW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVEZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKiB4bWwvWFBhdGhQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlBhcnNlcjo6bmV4dFRva2VuSW50ZXJuYWwp
OgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhT
TFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvRnJhZ21lbnQpOgorICAgICAgICAqIHhtbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpwYXJz
ZUVycm9yRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OnJlc3VsdE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNz
b3I6OnRyYW5zZm9ybVRvU3RyaW5nKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGVM
ZWFmVGV4dE5vZGUpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GdW5jKToKKwogMjAyMi0wMy0yNSAgTmlr
b2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNv
cnJlY3QgaGFuZGxpbmcgb2YgTmFOIGluc2lkZSBjYWxjKCkgZm9yIHRvcC1sZXZlbCBjYWxjdWxh
dGlvbgpAQCAtMzA2LDYgKzkzNSwxMiBAQAogICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwOgogICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOjpwYWludFRvVGV4dHVyZU1hcHBlcik6
CiAKKzIwMjItMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBVbnJldmlld2VkLCB1cGRhdGUgRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QuCisK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKwogMjAyMi0wMy0y
NSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IEFkZCBjc3MtdHlwZWQtb20gY29sb3IgSURMIHNrZWxldG9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5k
ZXggOWExOGZjNmRhZTU1ZDdiZTdmMmY4MzY0Mjk2MzFjY2Y1ODRmOTljYy4uZjUwOWNlOGNhMGVj
MjA5ZWZlYzk5MDljOGVhMzc0MTcxYTEyZDRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzEgQEAKKzIwMjItMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBQcmVwYXJlIFdlYkNvcmUgZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIq
KSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM4NDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUHJlcGFyZSBXZWJDb3JlIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25z
dCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQuCisgICAgICAgIE1ha2luZyB0aGlzIGNvbnN0
cnVjdG9yIGV4cGxpY2l0IGhlbHBzIGZpbmRpbmdzIGNhc2VzIHdoZXJlIGEgU3RyaW5nIGlzIGNv
bnN0cnVjdGVkCisgICAgICAgIGZyb20gYSBsaXRlcmFsIHdpdGhvdXQgdGhlICIiX3Mgc3VmZml4
LgorCisgICAgICAgICogcGFsL0xvZ2dpbmcuY3BwOgorICAgICAgICAoUEFMOjpyZWdpc3Rlck5v
dGlmeUNhbGxiYWNrKToKKyAgICAgICAgKiBwYWwvTG9nZ2luZy5oOgorICAgICAgICAqIHBhbC9z
eXN0ZW0vU2xlZXBEaXNhYmxlci5jcHA6CisgICAgICAgIChQQUw6OlNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChQQUw6OlNsZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIpOgorICAg
ICAgICAqIHBhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5oOgorICAgICAgICAqIHBhbC9zeXN0ZW0v
Y29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmNwcDoKKyAgICAgICAgKFBBTDo6U2xlZXBEaXNhYmxl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFBBTDo6U2xlZXBEaXNhYmxlckNvY29hOjpTbGVlcERpc2Fi
bGVyQ29jb2EpOgorICAgICAgICAqIHBhbC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29h
Lmg6CisgICAgICAgICogcGFsL3N5c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmNwcDoKKyAg
ICAgICAgKFBBTDo6U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKToKKyAgICAgICAgKFBBTDo6U2xlZXBE
aXNhYmxlckdMaWI6OlNsZWVwRGlzYWJsZXJHTGliKToKKyAgICAgICAgKFBBTDo6U2xlZXBEaXNh
YmxlckdMaWI6OmFjcXVpcmVJbmhpYml0b3IpOgorICAgICAgICAqIHBhbC9zeXN0ZW0vZ2xpYi9T
bGVlcERpc2FibGVyR0xpYi5oOgorCiAyMDIyLTAzLTI0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBSRUdSRVNTSU9OKHIyODEyOTEp
OiBXaGVuIGFjY2Vzc2liaWxpdHkgYm9sZCBpcyBlbmFibGVkLCBmb250LWZhbWlseTpzeXN0ZW0t
dWkgaXMgc3VwcG9zZWQgdG8gYmUgYm9sZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZWRkMTJmZDgwOTUxYjk4OWIz
MTY4M2JkYzRjMWEyN2YyMTRlOGZjLi40OGI4ZDM0Mjg5Yjk4M2ZiOTdkNDg2MTlmOWEzOWU3OWNh
M2ZlYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAzLTI1ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlcGFyZSBXZWJDb3JlIGZvciBtYWtp
bmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODQwOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXBhcmUgV2ViQ29yZSBm
b3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIGV4cGxpY2l0Lgor
ICAgICAgICBNYWtpbmcgdGhpcyBjb25zdHJ1Y3RvciBleHBsaWNpdCBoZWxwcyBmaW5kaW5ncyBj
YXNlcyB3aGVyZSBhIFN0cmluZyBpcyBjb25zdHJ1Y3RlZAorICAgICAgICBmcm9tIGEgbGl0ZXJh
bCB3aXRob3V0IHRoZSAiIl9zIHN1ZmZpeC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVNsZWVw
RGlzYWJsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAyMi0wMy0y
NSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBUZW1w
b3JhcmlseSBkaXNhYmxlIGFzc2VydGlvbiBpbiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJ
bXBsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDU5NmJiNTAzYzY2ZGIwNDI4MThjZmRi
NGE1MWU4YzJhZWViOWM1YjguLjEwZmVjZDg5NjBmOWYyNTE2YjEyY2UxMDU5MDUyMmE3YjA2Zjlm
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMzcxLDYgKzM3MSw3IEBAIHRlbXBsYXRl
PHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0
b3I8Y2hhciwgaW5saW5lCiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5l
Q2FwYWNpdHk+JiBiKSB7IHJldHVybiBiICE9IGE7IH0KIAogYm9vbCBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IFN0cmluZyYsIEFTQ0lJTGl0ZXJhbCk7CiBib29sIGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOwogCiB0ZW1wbGF0ZTx1bnNp
Z25lZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3Ry
aW5nJiwgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pOwpAQCAtNTk4LDYg
KzU5OSwxMSBAQCBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
ZyYgYSwgY29uc3QgY2hhciogYikKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShh
LmltcGwoKSwgYik7CiB9CiAKK2lubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgU3RyaW5nJiBhLCBBU0NJSUxpdGVyYWwgYikKK3sKKyAgICByZXR1cm4gZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShhLmltcGwoKSwgYi5jaGFyYWN0ZXJzKCkpOworfQorCiB0ZW1wbGF0ZTx1bnNp
Z25lZCBsZW5ndGg+IGlubGluZSBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVts
ZW5ndGhdKQogewogICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZy5pbXBsKCksIGxvd2VyY2FzZUxldHRlcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9Mb2dnaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2lu
Zy5jcHAKaW5kZXggMDBiN2VkODQ1OGI3ZjNlYTg1NGMxZWJhYWJjNmEzNDY0NmU4MGJjYS4uMjZj
M2M2OGIwMTcyNmQ0YWM3MjM0ZGNjY2ZiNGFjNDkwMzM5NDRlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9Mb2dnaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L0xvZ2dpbmcuY3BwCkBAIC0zNSwxMSArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFBBTCB7CiAKLXZv
aWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmIG5vdGlmeUlELCBGdW5jdGlv
bjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soQVNDSUlM
aXRlcmFsIG5vdGlmeUlELCBGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgaW50IHRva2VuOwotICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRj
aChub3RpZnlJRC51dGY4KCkuZGF0YSgpLCAmdG9rZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIG1ha2VCbG9ja1B0cihbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oaW50KSB7Cisg
ICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKG5vdGlmeUlELmNoYXJhY3RlcnMoKSwgJnRva2Vu
LCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGludCkgewogICAgICAgICBjYWxsYmFjaygpOwogICAgIH0pLmdldCgp
KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5oCmluZGV4IDMwYThlNWUxMzFkNmIzOGQ0
YThlZDYzZWI1ZGM5ZDU0ZDM5ODg0YjMuLjkxYjVlNWI1N2UyZGJlNWQyYzYwYWU4ZWE0YjczZWVi
MjViMWQ0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5oCkBAIC0yOSw3ICsyOSw3IEBACiAK
IG5hbWVzcGFjZSBQQUwgewogCi1QQUxfRVhQT1JUIHZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFj
ayhjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKCk+JiYpOworUEFMX0VYUE9SVCB2b2lkIHJl
Z2lzdGVyTm90aWZ5Q2FsbGJhY2soQVNDSUlMaXRlcmFsLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwog
CiB9IC8vIG5hbWVzcGFjZSBQQUwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3Rl
bS9TbGVlcERpc2FibGVyLmNwcAppbmRleCA0NmRiNThmNTY0MDJlYTgyNzgyNjQxMWU5M2Q5MzBl
ZjhmZWViNDRiLi44NGIzODg4MDY2ZGQxYmUxMDdlYTRhZjc5MDA1NzhkNWNiYmRiMjI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9TbGVlcERpc2FibGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9TbGVlcERpc2FibGVyLmNwcApAQCAt
MjYsMTYgKzI2LDE4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2xlZXBEaXNh
Ymxlci5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKIG5hbWVzcGFjZSBQ
QUwgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEdMSUIpCi1zdGQ6OnVuaXF1ZV9w
dHI8U2xlZXBEaXNhYmxlcj4gU2xlZXBEaXNhYmxlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNv
biwgVHlwZSB0eXBlKQorc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+IFNsZWVwRGlzYWJs
ZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHJlYXNvbiwgVHlwZSB0eXBlKQogewogICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4obmV3IFNsZWVwRGlzYWJsZXIocmVhc29u
LCB0eXBlKSk7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEdMSUIpCiAK
LVNsZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciosIFR5cGUgdHlwZSkKK1Ns
ZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIoY29uc3QgU3RyaW5nJiwgVHlwZSB0eXBlKQogICAg
IDogbV90eXBlKHR5cGUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3N5c3RlbS9TbGVlcERpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9T
bGVlcERpc2FibGVyLmgKaW5kZXggZGMwOWU5NDk5NGE4ZDQ0NTZlNTIzMTdkMDFkN2RjY2FjMDMx
ZWJiYS4uNmI5ZjRlMjc1ODg4YTI4NzExZTZkOTExNDk3YzdhNzcxNDA4MjUyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL1NsZWVwRGlzYWJsZXIuaApAQCAtMjUsNiArMjUs
OCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVz
cGFjZSBQQUwgewogCiBjbGFzcyBTbGVlcERpc2FibGVyIHsKQEAgLTMzLDEzICszNSwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIFN5c3RlbSwKICAgICAgICAgRGlzcGxheSwKICAgICB9OwotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gY3JlYXRlKGNvbnN0IGNoYXIqLCBU
eXBlKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+IGNyZWF0ZShj
b25zdCBTdHJpbmcmLCBUeXBlKTsKICAgICBQQUxfRVhQT1JUIHZpcnR1YWwgflNsZWVwRGlzYWJs
ZXIoKTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgUEFMX0VYUE9SVCBTbGVlcERpc2FibGVyKGNvbnN0IGNoYXIqLCBUeXBlKTsK
KyAgICBQQUxfRVhQT1JUIFNsZWVwRGlzYWJsZXIoY29uc3QgU3RyaW5nJiwgVHlwZSk7CiAgICAg
VHlwZSBtX3R5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5
c3RlbS9jb2NvYS9TbGVlcERpc2FibGVyQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmNwcAppbmRleCBlMWMwZDIwMDkwZDM2
YTY3Y2U5YjUxMGEwYmYwMTAwYjk5MTc4NDg4Li5kOTBmMGQ2YTRmYTMxODA3MWJlMDk4M2E3YTAw
M2I1NDE4M2RlOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9j
b2NvYS9TbGVlcERpc2FibGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3lzdGVtL2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5jcHAKQEAgLTMwLDE4ICszMCwxOSBAQAog
CiAjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1BNTGliU1BJLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
UEFMIHsKIAotc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+IFNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZShjb25zdCBjaGFyKiByZWFzb24sIFR5cGUgdHlwZSkKK3N0ZDo6dW5pcXVlX3B0cjxTbGVl
cERpc2FibGVyPiBTbGVlcERpc2FibGVyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiByZWFzb24sIFR5
cGUgdHlwZSkKIHsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+KG5l
dyBTbGVlcERpc2FibGVyQ29jb2EocmVhc29uLCB0eXBlKSk7CiB9CiAKLVNsZWVwRGlzYWJsZXJD
b2NvYTo6U2xlZXBEaXNhYmxlckNvY29hKGNvbnN0IGNoYXIqIHJlYXNvbiwgVHlwZSB0eXBlKQor
U2xlZXBEaXNhYmxlckNvY29hOjpTbGVlcERpc2FibGVyQ29jb2EoY29uc3QgU3RyaW5nJiByZWFz
b24sIFR5cGUgdHlwZSkKICAgICA6IFNsZWVwRGlzYWJsZXIocmVhc29uLCB0eXBlKQogewotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVhc29uQ0YgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVhc29uLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgpKTsKKyAgICBhdXRvIHJlYXNvbkNGID0gcmVhc29uLmNyZWF0ZUNGU3RyaW5nKCk7CiAK
ICAgICBDRlN0cmluZ1JlZiBhc3NlcnRpb25UeXBlOwogICAgIHN3aXRjaCAodHlwZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxl
ckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9jb2NvYS9TbGVlcERpc2Fi
bGVyQ29jb2EuaAppbmRleCBhODFhN2U3ODdiMTMxMDJlYTMxMTlhNGY1YTg5YzA3MzkzYTU5M2Vh
Li4wMGMyNGZiNTQ1NjEzNzVjYTcyODA1YWU3MWVhOWE3YzdjYzJmODcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9jb2NvYS9TbGVlcERpc2FibGVyQ29jb2EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9jb2NvYS9TbGVlcERpc2FibGVyQ29j
b2EuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgUEFMIHsKIAogY2xhc3MgU2xlZXBEaXNh
YmxlckNvY29hIDogcHVibGljIFNsZWVwRGlzYWJsZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0
IFNsZWVwRGlzYWJsZXJDb2NvYShjb25zdCBjaGFyKiwgVHlwZSk7CisgICAgZXhwbGljaXQgU2xl
ZXBEaXNhYmxlckNvY29hKGNvbnN0IFN0cmluZyYsIFR5cGUpOwogICAgIHZpcnR1YWwgflNsZWVw
RGlzYWJsZXJDb2NvYSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zeXN0ZW0vZ2xpYi9TbGVlcERpc2FibGVyR0xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3N5c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmNwcAppbmRleCA5MTUxY2Rk
OWI4ODMzMWRkZTRlZTJkZDMzNTk0ODE0MmY2MGYzOTYwLi5kOGMyNDEwODM2MzVkMGY0MmM3NDdl
MjQyMmQ5MWYwZWY3OTRhNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5
c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3N5c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmNwcApAQCAtMzIsMTIgKzMyLDEyIEBA
CiAKIG5hbWVzcGFjZSBQQUwgewogCi1zdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gU2xl
ZXBEaXNhYmxlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNvbiwgVHlwZSB0eXBlKQorc3RkOjp1
bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+IFNsZWVwRGlzYWJsZXI6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIHJlYXNvbiwgVHlwZSB0eXBlKQogewogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U2xl
ZXBEaXNhYmxlcj4obmV3IFNsZWVwRGlzYWJsZXJHTGliKHJlYXNvbiwgdHlwZSkpOwogfQogCi1T
bGVlcERpc2FibGVyR0xpYjo6U2xlZXBEaXNhYmxlckdMaWIoY29uc3QgY2hhciogcmVhc29uLCBU
eXBlIHR5cGUpCitTbGVlcERpc2FibGVyR0xpYjo6U2xlZXBEaXNhYmxlckdMaWIoY29uc3QgU3Ry
aW5nJiByZWFzb24sIFR5cGUgdHlwZSkKICAgICA6IFNsZWVwRGlzYWJsZXIocmVhc29uLCB0eXBl
KQogICAgICwgbV9jYW5jZWxsYWJsZShhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSkpCiAg
ICAgLCBtX3JlYXNvbihyZWFzb24pCkBAIC04OSwxMCArODksMTAgQEAgdm9pZCBTbGVlcERpc2Fi
bGVyR0xpYjo6YWNxdWlyZUluaGliaXRvcigpCiAgICAgaWYgKHNob3VsZFVzZVBvcnRhbCgpKSB7
CiAgICAgICAgIEdWYXJpYW50QnVpbGRlciBidWlsZGVyOwogICAgICAgICBnX3ZhcmlhbnRfYnVp
bGRlcl9pbml0KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKLSAgICAgICAgZ192
YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2fSIsICJyZWFzb24iLCBnX3ZhcmlhbnRf
bmV3X3N0cmluZyhtX3JlYXNvbi5kYXRhKCkpKTsKKyAgICAgICAgZ192YXJpYW50X2J1aWxkZXJf
YWRkKCZidWlsZGVyLCAie3N2fSIsICJyZWFzb24iLCBnX3ZhcmlhbnRfbmV3X3N0cmluZyhtX3Jl
YXNvbi51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIHBhcmFtZXRlcnMgPSBnX3ZhcmlhbnRfbmV3
KCIoc3VAYXtzdn0pIiwgIiIgLyogbm8gd2luZG93ICovLCA4IC8qIGlkbGUgKi8sIGdfdmFyaWFu
dF9idWlsZGVyX2VuZCgmYnVpbGRlcikpOwogICAgIH0gZWxzZQotICAgICAgICBwYXJhbWV0ZXJz
ID0gZ192YXJpYW50X25ldygiKHNzKSIsIGdfZ2V0X3ByZ25hbWUoKSwgbV9yZWFzb24uZGF0YSgp
KTsKKyAgICAgICAgcGFyYW1ldGVycyA9IGdfdmFyaWFudF9uZXcoIihzcykiLCBnX2dldF9wcmdu
YW1lKCksIG1fcmVhc29uLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgZ19kYnVzX3Byb3h5X2NhbGwo
bV9zY3JlZW5TYXZlclByb3h5LmdldCgpLCAiSW5oaWJpdCIsIHBhcmFtZXRlcnMsIEdfREJVU19D
QUxMX0ZMQUdTX05PTkUsIC0xLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBbXShHT2JqZWN0KiBwcm94
eSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3lzdGVtL2dsaWIvU2xlZXBEaXNhYmxlckdMaWIuaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3lzdGVtL2dsaWIvU2xlZXBEaXNhYmxlckdMaWIuaAppbmRleCA4ZGJmOTU3OTRjMTk5
NjEwNTkyYzg3ZDFmYWE3NDkyZTgxYjU2YjE5Li40MWJjNTAxOTExZjIxZTJlNjVkNThhNzEzMzg2
MmM4MWU1NTQ3Y2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9n
bGliL1NsZWVwRGlzYWJsZXJHTGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0
ZW0vZ2xpYi9TbGVlcERpc2FibGVyR0xpYi5oCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRl
IDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX0dEQnVzUHJveHkgR0RCdXNQcm94eTsKIApAQCAtMzcs
NyArMzcsNyBAQCBuYW1lc3BhY2UgUEFMIHsKIAogY2xhc3MgU2xlZXBEaXNhYmxlckdMaWIgZmlu
YWwgOiBwdWJsaWMgU2xlZXBEaXNhYmxlciB7CiBwdWJsaWM6Ci0gICAgU2xlZXBEaXNhYmxlckdM
aWIoY29uc3QgY2hhciosIFR5cGUpOworICAgIFNsZWVwRGlzYWJsZXJHTGliKGNvbnN0IFN0cmlu
ZyYsIFR5cGUpOwogICAgIHZpcnR1YWwgflNsZWVwRGlzYWJsZXJHTGliKCk7CiAKIHByaXZhdGU6
CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9zY3JlZW5TYXZlckNv
b2tpZSB7IDAgfTsKICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IG1faW5oaWJpdFBvcnRhbFJlcXVl
c3RPYmplY3RQYXRoOwogICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBtX2NhbmNlbGxhYmxlOwot
ICAgIENTdHJpbmcgbV9yZWFzb247CisgICAgU3RyaW5nIG1fcmVhc29uOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgUEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdz
VGVtcGxhdGVzL1NldHRpbmdzLmNwcC5lcmIgYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRp
bmdzVGVtcGxhdGVzL1NldHRpbmdzLmNwcC5lcmIKaW5kZXggN2U5MWQzNWMzOWJlNDYyMGI3MzRk
YzY3NGYyYjFhZjYxN2JmODM1ZC4uYTE1NzU5YzAzY2JiNWJlOWVlYWI5ZDY2YzRiZGUxZjM2ZmM0
YjZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRl
cy9TZXR0aW5ncy5jcHAuZXJiCisrKyBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NU
ZW1wbGF0ZXMvU2V0dGluZ3MuY3BwLmVyYgpAQCAtMzgsNyArMzgsMTEgQEAKICNpZiA8JT0gQHNl
dHRpbmcuY29uZGl0aW9uICU+CiA8JS0gICBlbmQgLSU+CiA8JS0gICBpZiBAc2V0dGluZy5kZWZh
dWx0VmFsdWVzLnNpemUoKSA9PSAxIC0lPgorPCUtICAgICBpZiBAc2V0dGluZy50eXBlID09ICJT
dHJpbmciIGFuZCBAc2V0dGluZy5kZWZhdWx0VmFsdWVzWydkZWZhdWx0J11bLTFdID09ICJcIiIg
LSU+CisjZGVmaW5lIFNFVFRJTkdfREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBzZXR0aW5nLm5hbWUg
JT4gPCU9IEBzZXR0aW5nLmRlZmF1bHRWYWx1ZXNbJ2RlZmF1bHQnXSAlPl9zCis8JS0gICAgIGVs
c2UgLSU+CiAjZGVmaW5lIFNFVFRJTkdfREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBzZXR0aW5nLm5h
bWUgJT4gPCU9IEBzZXR0aW5nLmRlZmF1bHRWYWx1ZXNbJ2RlZmF1bHQnXSAlPgorPCUtICAgICBl
bmQgLSU+CiA8JS0gICBlbHNlIC0lPgogPCUtICAgICBAc2V0dGluZy5kZWZhdWx0VmFsdWVzLmVh
Y2hfd2l0aF9pbmRleCBkbyB8KGtleSwgdmFsdWUpLCBpbmRleHwgLSU+CiA8JS0gICAgICAgaWYg
aW5kZXggPT0gMCAtJT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuY3BwCmluZGV4IDY0OWJkNzBmNjUxMDQ1Mzhk
YzE4OGY0NDhjZTE0ZjZhZTQwODRhZmEuLjRmMjExNjU3NmRhNTljMWRhMjEyMWIyMGNlOTA3Yjc2
NzljNjY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25FcnJvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIAotY29uc3QgY2hh
ciogV2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4gPSAiV2ViS2l0Q29udGVudEJsb2NrZXJEb21h
aW4iOworQVNDSUlMaXRlcmFsIFdlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluID0gIldlYktpdENv
bnRlbnRCbG9ja2VyRG9tYWluIl9zOwogCiBjb25zdCBzdGQ6OmVycm9yX2NhdGVnb3J5JiBjb250
ZW50RXh0ZW5zaW9uRXJyb3JDYXRlZ29yeSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oCmluZGV4IGEyNDVk
OTNlNTAyNGQyMzllNjNkNGNkNjJjY2IxOGU2ZDE1OTk3MzIuLmU4YWQzNTM5ZGI4ZTViN2IxODc5
Y2E5NjRlMTYxZDExYWJjNWI2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oCkBAIC04NCw3ICs4NCw3IEBA
IGVudW0gY2xhc3MgQ29udGVudEV4dGVuc2lvbkVycm9yIHsKICAgICBFcnJvcldyaXRpbmdTZXJp
YWxpemVkTkZBLAogfTsKIAotZXh0ZXJuIGNvbnN0IGNoYXIqIFdlYktpdENvbnRlbnRCbG9ja2Vy
RG9tYWluOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbjsK
ICAgICAKIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHN0ZDo6ZXJyb3JfY2F0ZWdvcnkmIGNvbnRlbnRF
eHRlbnNpb25FcnJvckNhdGVnb3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5
RXZhbHVhdG9yLmNwcAppbmRleCBkOTk0ODYzMDIzMThjNzZmOTY4M2JhMjFjOTFiYmIyMGEwYTM0
NDc4Li42Yzg3ZTRmODk0MWFiYzhkYTk4Mjk4MzNhOTI3NTk3NWRkYzJjOTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC05NTMsNyArOTUzLDcgQEAg
Ym9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRpYUF0dHJpYnV0ZU1hdGNoZXMoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQucmVuZGVyVmll
dygpKTsKICAgICBhdXRvIG1lZGlhUXVlcmllcyA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShhdHRy
aWJ1dGVWYWx1ZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKLSAgICByZXR1
cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iLCBkb2N1bWVudCwgJmRvY3VtZW50LnJl
bmRlclZpZXcoKS0+c3R5bGUoKSB9LmV2YWx1YXRlKG1lZGlhUXVlcmllcy5nZXQoKSk7CisgICAg
cmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgJmRvY3Vt
ZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSB9LmV2YWx1YXRlKG1lZGlhUXVlcmllcy5nZXQoKSk7
CiB9CiAKIH0gLy8gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2Fk
Y2FzdENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3Bw
CmluZGV4IGI4NGI3NGU5NjJiMTg4NTM2MTk4YjNiMWJmZTJjMjgwNmY2ODVkYTUuLmNmYzlhYjhk
M2FmZGMwNjQ3ODE5YTM3Njc5Y2U2MTc4ZDIyZDNkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJv
YWRjYXN0Q2hhbm5lbC5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBC
cm9hZGNhc3RDaGFubmVsOjpwb3N0TWVzc2FnZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplYwogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIlRoaXMgQnJvYWRjYXN0Q2hh
bm5lbCBpcyBjbG9zZWQiIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgIlRoaXMgQnJvYWRjYXN0Q2hhbm5lbCBpcyBjbG9zZWQiX3MgfTsKIAogICAgIFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKICAgICBhdXRvIG1lc3NhZ2VEYXRhID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtZXNzYWdlLCB7IH0s
IHBvcnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggODZhYjg4OWJjMGVh
MTVhNTQ3MzU3ZmI2NGRmZjlmMTBiODYyZGM1NC4uYWNhZjA4Y2JkMTU4NTg5M2QyNjhhZjljY2Jl
YWIzNDZjMDBhOTM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTEyNywx
MSArMTI3LDExIEBAIHN0YXRpYyBTdHJpbmcgbm9ybWFsaXplVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpCiAKICAgICBTdHJpbmcgbG93ZXJjYXNlVHlwZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyh0eXBlKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgIGlmIChsb3dl
cmNhc2VUeXBlID09ICJ0ZXh0IiB8fCBsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvcGxh
aW47IikpCi0gICAgICAgIHJldHVybiAidGV4dC9wbGFpbiI7CisgICAgICAgIHJldHVybiAidGV4
dC9wbGFpbiJfczsKICAgICBpZiAobG93ZXJjYXNlVHlwZSA9PSAidXJsIiB8fCBsb3dlcmNhc2VU
eXBlLnN0YXJ0c1dpdGgoInRleHQvdXJpLWxpc3Q7IikpCi0gICAgICAgIHJldHVybiAidGV4dC91
cmktbGlzdCI7CisgICAgICAgIHJldHVybiAidGV4dC91cmktbGlzdCJfczsKICAgICBpZiAobG93
ZXJjYXNlVHlwZS5zdGFydHNXaXRoKCJ0ZXh0L2h0bWw7IikpCi0gICAgICAgIHJldHVybiAidGV4
dC9odG1sIjsKKyAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiX3M7CiAKICAgICByZXR1cm4gbG93
ZXJjYXNlVHlwZTsKIH0KQEAgLTYzMSwyNSArNjMxLDI1IEBAIHN0YXRpYyBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gZHJhZ09wRnJvbUlFT3AoY29uc3QgU3RyaW5nJiBvcGVyYXRpb24pCiAgICAg
cmV0dXJuIHsgRHJhZ09wZXJhdGlvbjo6UHJpdmF0ZSB9OyAvLyBSZWFsbHkgYSBtYXJrZXIgZm9y
ICJubyBjb252ZXJzaW9uIi4KIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIElFT3BGcm9tRHJhZ09w
KE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrKQorc3RhdGljIEFTQ0lJTGl0
ZXJhbCBJRU9wRnJvbURyYWdPcChPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFz
aykKIHsKICAgICBib29sIGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb25NYXNrLmNvbnRhaW5zQW55
KHsgRHJhZ09wZXJhdGlvbjo6R2VuZXJpYywgRHJhZ09wZXJhdGlvbjo6TW92ZSB9KTsKIAogICAg
IGlmICgoaXNHZW5lcmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zQWxsKHsgRHJhZ09w
ZXJhdGlvbjo6Q29weSwgRHJhZ09wZXJhdGlvbjo6TGluayB9KSkgfHwgb3BlcmF0aW9uTWFzay5j
b250YWluc0FsbCh7IERyYWdPcGVyYXRpb246OkNvcHksIERyYWdPcGVyYXRpb246OkxpbmssIERy
YWdPcGVyYXRpb246OkdlbmVyaWMsIERyYWdPcGVyYXRpb246OlByaXZhdGUsIERyYWdPcGVyYXRp
b246Ok1vdmUsIERyYWdPcGVyYXRpb246OkRlbGV0ZSB9KSkKLSAgICAgICAgcmV0dXJuICJhbGwi
OworICAgICAgICByZXR1cm4gImFsbCJfczsKICAgICBpZiAoaXNHZW5lcmljTW92ZSAmJiBvcGVy
YXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb246OkNvcHkpKQotICAgICAgICByZXR1cm4g
ImNvcHlNb3ZlIjsKKyAgICAgICAgcmV0dXJuICJjb3B5TW92ZSJfczsKICAgICBpZiAoaXNHZW5l
cmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb246OkxpbmspKQot
ICAgICAgICByZXR1cm4gImxpbmtNb3ZlIjsKKyAgICAgICAgcmV0dXJuICJsaW5rTW92ZSJfczsK
ICAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWluc0FsbCh7IERyYWdPcGVyYXRpb246OkNvcHks
IERyYWdPcGVyYXRpb246OkxpbmsgfSkpCi0gICAgICAgIHJldHVybiAiY29weUxpbmsiOworICAg
ICAgICByZXR1cm4gImNvcHlMaW5rIl9zOwogICAgIGlmIChpc0dlbmVyaWNNb3ZlKQotICAgICAg
ICByZXR1cm4gIm1vdmUiOworICAgICAgICByZXR1cm4gIm1vdmUiX3M7CiAgICAgaWYgKG9wZXJh
dGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbjo6Q29weSkpCi0gICAgICAgIHJldHVybiAi
Y29weSI7CisgICAgICAgIHJldHVybiAiY29weSJfczsKICAgICBpZiAob3BlcmF0aW9uTWFzay5j
b250YWlucyhEcmFnT3BlcmF0aW9uOjpMaW5rKSkKLSAgICAgICAgcmV0dXJuICJsaW5rIjsKLSAg
ICByZXR1cm4gIm5vbmUiOworICAgICAgICByZXR1cm4gImxpbmsiX3M7CisgICAgcmV0dXJuICJu
b25lIl9zOwogfQogCiBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gRGF0YVRyYW5zZmVyOjpzb3Vy
Y2VPcGVyYXRpb25NYXNrKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGZkY2Nm
Nzc3OGFlNzhlYjRhMzE0YzM2NDc2MTVjMjNmN2ZjYWE2YzUuLjZkOTk5NmY2M2JhNzI2YWVjZmJi
MzFjNjQ2ZTNiMjg5YWViMzFhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtOTMxLDcg
KzkzMSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29t
cGF0aWJpbGl0eU1vZGUgbW9kZSkKIAogU3RyaW5nIERvY3VtZW50Ojpjb21wYXRNb2RlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gaW5RdWlya3NNb2RlKCkgPyAiQmFja0NvbXBhdCIgOiAiQ1NTMUNv
bXBhdCI7CisgICAgcmV0dXJuIGluUXVpcmtzTW9kZSgpID8gIkJhY2tDb21wYXQiX3MgOiAiQ1NT
MUNvbXBhdCJfczsKIH0KIAogY29uc3QgQ29sb3ImIERvY3VtZW50Ojp0aGVtZUNvbG9yKCkKQEAg
LTE0OTMsNyArMTQ5Myw3IEBAIFN0cmluZyBEb2N1bWVudDo6Y2hhcmFjdGVyU2V0V2l0aFVURjhG
YWxsYmFjaygpIGNvbnN0CiAgICAgQXRvbVN0cmluZyBuYW1lID0gZW5jb2RpbmcoKTsKICAgICBp
ZiAoIW5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBuYW1lOwotICAgIHJldHVybiBQQUw6
OlVURjhFbmNvZGluZygpLmRvbU5hbWUoKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgUEFMOjpVVEY4
RW5jb2RpbmcoKS5kb21OYW1lKCkgfTsKIH0KIAogU3RyaW5nIERvY3VtZW50OjpkZWZhdWx0Q2hh
cnNldEZvckxlZ2FjeUJpbmRpbmdzKCkgY29uc3QKQEAgLTM4MTksMTkgKzM4MTksMTkgQEAgdm9p
ZCBEb2N1bWVudDo6cHJvY2Vzc01ldGFIdHRwRXF1aXYoY29uc3QgU3RyaW5nJiBlcXVpdiwgY29u
c3QgU3RyaW5nJiBjb250ZW50LAogCiAgICAgSHR0cEVxdWl2UG9saWN5IHBvbGljeSA9IGh0dHBF
cXVpdlBvbGljeSgpOwogICAgIGlmIChwb2xpY3kgIT0gSHR0cEVxdWl2UG9saWN5OjpFbmFibGVk
KSB7Ci0gICAgICAgIFN0cmluZyByZWFzb247CisgICAgICAgIEFTQ0lJTGl0ZXJhbCByZWFzb24g
PSAiIl9zOwogICAgICAgICBzd2l0Y2ggKHBvbGljeSkgewogICAgICAgICBjYXNlIEh0dHBFcXVp
dlBvbGljeTo6RW5hYmxlZDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSHR0cEVxdWl2UG9saWN5OjpEaXNhYmxlZEJ5
U2V0dGluZ3M6Ci0gICAgICAgICAgICByZWFzb24gPSAiYnkgdGhlIGVtYmVkZGVyLiI7CisgICAg
ICAgICAgICByZWFzb24gPSAiYnkgdGhlIGVtYmVkZGVyLiJfczsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEh0dHBFcXVpdlBvbGljeTo6RGlzYWJsZWRCeUNvbnRlbnREaXNwb3Np
dGlvbkF0dGFjaG1lbnRTYW5kYm94OgotICAgICAgICAgICAgcmVhc29uID0gImZvciBkb2N1bWVu
dHMgd2l0aCBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50LiI7CisgICAgICAgICAgICBy
ZWFzb24gPSAiZm9yIGRvY3VtZW50cyB3aXRoIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1l
bnQuIl9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgU3RyaW5nIG1l
c3NhZ2UgPSAiaHR0cC1lcXVpdiAnIiArIGVxdWl2ICsgIicgaXMgZGlzYWJsZWQgIiArIHJlYXNv
bjsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJodHRwLWVxdWl2ICciLCBl
cXVpdiwgIicgaXMgZGlzYWJsZWQgIiwgcmVhc29uKTsKICAgICAgICAgYWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTQwMywxMCArNTQwMywxMCBAQCBTdHJpbmcg
RG9jdW1lbnQ6OmRvbWFpbigpIGNvbnN0CiBFeGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6c2V0
RG9tYWluKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKQogewogICAgIGlmICghZnJhbWUoKSkKLSAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJBIGJyb3dzaW5nIGNvbnRl
eHQgaXMgcmVxdWlyZWQgdG8gc2V0IGEgZG9tYWluLiIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFNlY3VyaXR5RXJyb3IsICJBIGJyb3dzaW5nIGNvbnRleHQgaXMgcmVxdWlyZWQgdG8g
c2V0IGEgZG9tYWluLiJfcyB9OwogCiAgICAgaWYgKGlzU2FuZGJveGVkKFNhbmRib3hEb2N1bWVu
dERvbWFpbikpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiQXNz
aWdubWVudCBpcyBmb3JiaWRkZW4gZm9yIHNhbmRib3hlZCBpZnJhbWVzLiIgfTsKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJBc3NpZ25tZW50IGlzIGZvcmJpZGRl
biBmb3Igc2FuZGJveGVkIGlmcmFtZXMuIl9zIH07CiAKICAgICBpZiAoTGVnYWN5U2NoZW1lUmVn
aXN0cnk6OmlzRG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShzZWN1cml0eU9y
aWdpbigpLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlF
cnJvciB9OwpAQCAtNTQxNSwxMCArNTQxNSwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVu
dDo6c2V0RG9tYWluKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKQogCiAgICAgY29uc3QgU3RyaW5n
JiBlZmZlY3RpdmVEb21haW4gPSBkb21haW4oKTsKICAgICBpZiAoZWZmZWN0aXZlRG9tYWluLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJUaGUg
ZG9jdW1lbnQgaGFzIGEgbnVsbCBlZmZlY3RpdmVEb21haW4uIiB9OworICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlRoZSBkb2N1bWVudCBoYXMgYSBudWxsIGVmZmVj
dGl2ZURvbWFpbi4iX3MgfTsKIAogICAgIGlmICghc2VjdXJpdHlPcmlnaW4oKS5pc01hdGNoaW5n
UmVnaXN0cmFibGVEb21haW5TdWZmaXgobmV3RG9tYWluLCBzZXR0aW5ncygpLnRyZWF0SVBBZGRy
ZXNzQXNEb21haW4oKSkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9y
LCAiQXR0ZW1wdGVkIHRvIHVzZSBhIG5vbi1yZWdpc3RyYWJsZSBkb21haW4uIiB9OworICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIkF0dGVtcHRlZCB0byB1c2UgYSBu
b24tcmVnaXN0cmFibGUgZG9tYWluLiJfcyB9OwogCiAgICAgc2VjdXJpdHlPcmlnaW4oKS5zZXRE
b21haW5Gcm9tRE9NKG5ld0RvbWFpbik7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTU4NzcsNyArNTg3
Nyw3IEBAIHN0YXRpYyBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZChEb2N1bWVudCogZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvCiBFeGNlcHRpb25Pcjxib29sPiBEb2N1bWVu
dDo6ZXhlY0NvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgYm9vbCB1c2VySW50ZXJm
YWNlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChVTkxJS0VMWSghaXNIVE1MRG9j
dW1lbnQoKSAmJiAhaXNYSFRNTERvY3VtZW50KCkpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJleGVjQ29tbWFuZCBpcyBvbmx5IHN1cHBvcnRlZCBvbiBI
VE1MIGRvY3VtZW50cy4iIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgImV4ZWNDb21tYW5kIGlzIG9ubHkgc3VwcG9ydGVkIG9uIEhUTUwgZG9jdW1lbnRz
LiJfcyB9OwogCiAgICAgRXZlbnRRdWV1ZVNjb3BlIGV2ZW50UXVldWVTY29wZTsKICAgICByZXR1
cm4gY29tbWFuZCh0aGlzLCBjb21tYW5kTmFtZSwgdXNlckludGVyZmFjZSkuZXhlY3V0ZSh2YWx1
ZSk7CkBAIC01ODg2LDM1ICs1ODg2LDM1IEBAIEV4Y2VwdGlvbk9yPGJvb2w+IERvY3VtZW50Ojpl
eGVjQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBib29sIHVzZXJJbnRlCiBFeGNl
cHRpb25Pcjxib29sPiBEb2N1bWVudDo6cXVlcnlDb21tYW5kRW5hYmxlZChjb25zdCBTdHJpbmcm
IGNvbW1hbmROYW1lKQogewogICAgIGlmIChVTkxJS0VMWSghaXNIVE1MRG9jdW1lbnQoKSAmJiAh
aXNYSFRNTERvY3VtZW50KCkpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJxdWVyeUNvbW1hbmRFbmFibGVkIGlzIG9ubHkgc3VwcG9ydGVkIG9uIEhUTUwg
ZG9jdW1lbnRzLiIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yLCAicXVlcnlDb21tYW5kRW5hYmxlZCBpcyBvbmx5IHN1cHBvcnRlZCBvbiBIVE1MIGRvY3Vt
ZW50cy4iX3MgfTsKICAgICByZXR1cm4gY29tbWFuZCh0aGlzLCBjb21tYW5kTmFtZSkuaXNFbmFi
bGVkKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPGJvb2w+IERvY3VtZW50OjpxdWVyeUNvbW1hbmRJbmRl
dGVybShjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQogewogICAgIGlmIChVTkxJS0VMWSghaXNI
VE1MRG9jdW1lbnQoKSAmJiAhaXNYSFRNTERvY3VtZW50KCkpKQotICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJxdWVyeUNvbW1hbmRJbmRldGVybSBpcyBvbmx5
IHN1cHBvcnRlZCBvbiBIVE1MIGRvY3VtZW50cy4iIH07CisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciwgInF1ZXJ5Q29tbWFuZEluZGV0ZXJtIGlzIG9ubHkgc3Vw
cG9ydGVkIG9uIEhUTUwgZG9jdW1lbnRzLiJfcyB9OwogICAgIHJldHVybiBjb21tYW5kKHRoaXMs
IGNvbW1hbmROYW1lKS5zdGF0ZSgpID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBF
eGNlcHRpb25Pcjxib29sPiBEb2N1bWVudDo6cXVlcnlDb21tYW5kU3RhdGUoY29uc3QgU3RyaW5n
JiBjb21tYW5kTmFtZSkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWlzSFRNTERvY3VtZW50KCkgJiYg
IWlzWEhUTUxEb2N1bWVudCgpKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAicXVlcnlDb21tYW5kU3RhdGUgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBk
b2N1bWVudHMuIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJxdWVyeUNvbW1hbmRTdGF0ZSBpcyBvbmx5IHN1cHBvcnRlZCBvbiBIVE1MIGRvY3VtZW50
cy4iX3MgfTsKICAgICByZXR1cm4gY29tbWFuZCh0aGlzLCBjb21tYW5kTmFtZSkuc3RhdGUoKSA9
PSBUcmlTdGF0ZTo6VHJ1ZTsKIH0KIAogRXhjZXB0aW9uT3I8Ym9vbD4gRG9jdW1lbnQ6OnF1ZXJ5
Q29tbWFuZFN1cHBvcnRlZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQogewogICAgIGlmIChV
TkxJS0VMWSghaXNIVE1MRG9jdW1lbnQoKSAmJiAhaXNYSFRNTERvY3VtZW50KCkpKQotICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJxdWVyeUNvbW1hbmRTdXBw
b3J0ZWQgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBkb2N1bWVudHMuIiB9OworICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJxdWVyeUNvbW1hbmRTdXBwb3J0
ZWQgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBkb2N1bWVudHMuIl9zIH07CiAgICAgcmV0dXJu
IGNvbW1hbmQodGhpcywgY29tbWFuZE5hbWUpLmlzU3VwcG9ydGVkKCk7CiB9CiAKIEV4Y2VwdGlv
bk9yPFN0cmluZz4gRG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZFZhbHVlKGNvbnN0IFN0cmluZyYgY29t
bWFuZE5hbWUpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpc0hUTUxEb2N1bWVudCgpICYmICFpc1hI
VE1MRG9jdW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciwgInF1ZXJ5Q29tbWFuZFZhbHVlIGlzIG9ubHkgc3VwcG9ydGVkIG9uIEhUTUwgZG9jdW1l
bnRzLiIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAi
cXVlcnlDb21tYW5kVmFsdWUgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBkb2N1bWVudHMuIl9z
IH07CiAgICAgcmV0dXJuIGNvbW1hbmQodGhpcywgY29tbWFuZE5hbWUpLnZhbHVlKCk7CiB9CiAK
QEAgLTgyNTksNyArODI1OSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVJlc2l6ZU9ic2VydmF0
aW9ucyhQYWdlJiBwYWdlKQogICAgICAgICB1bnNpZ25lZCBsaW5lID0gMDsKICAgICAgICAgdW5z
aWduZWQgY29sdW1uID0gMDsKICAgICAgICAgZ2V0UGFyc2VyTG9jYXRpb24odXJsLCBsaW5lLCBj
b2x1bW4pOwotICAgICAgICByZXBvcnRFeGNlcHRpb24oIlJlc2l6ZU9ic2VydmVyIGxvb3AgY29t
cGxldGVkIHdpdGggdW5kZWxpdmVyZWQgbm90aWZpY2F0aW9ucy4iLCBsaW5lLCBjb2x1bW4sIHVy
bCwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigiUmVzaXplT2Jz
ZXJ2ZXIgbG9vcCBjb21wbGV0ZWQgd2l0aCB1bmRlbGl2ZXJlZCBub3RpZmljYXRpb25zLiJfcywg
bGluZSwgY29sdW1uLCB1cmwsIG51bGxwdHIsIG51bGxwdHIpOwogICAgICAgICAvLyBTdGFydGlu
ZyBhIG5ldyBzY2hlZHVsZSB0aGUgbmV4dCByb3VuZCBvZiBub3RpZnkuCiAgICAgICAgIHNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZU9ic2VydmF0aW9u
cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGI5OTdiZmQwZmRiOWZlZWY0NDNm
OGIzY2NhNGQyMGU2MWMwYjdjOWMuLjRiMDJhMjY4NjZmY2ZlYzg4NGQzMDI4ODM0YjQxMTA0OGJk
YzJjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMyODUsOCArMzI4NSw4IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEVsZW1lbnQ6OnNldE91dGVySFRNTChjb25zdCBTdHJpbmcmIGh0bWwpCiAg
ICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAoVU5MSUtFTFkoIXBh
cmVudCkpIHsKICAgICAgICAgaWYgKCFwYXJlbnROb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IsICJDYW5ub3Qgc2V0IG91dGVy
SFRNTCBvbiBlbGVtZW50IGJlY2F1c2UgaXQgZG9lc24ndCBoYXZlIGEgcGFyZW50IiB9OwotICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IsICJDYW5u
b3Qgc2V0IG91dGVySFRNTCBvbiBlbGVtZW50IGJlY2F1c2UgaXRzIHBhcmVudCBpcyBub3QgYW4g
RWxlbWVudCIgfTsKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlv
bkFsbG93ZWRFcnJvciwgIkNhbm5vdCBzZXQgb3V0ZXJIVE1MIG9uIGVsZW1lbnQgYmVjYXVzZSBp
dCBkb2Vzbid0IGhhdmUgYSBwYXJlbnQiX3MgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yLCAiQ2Fubm90IHNldCBvdXRlckhUTUwgb24gZWxl
bWVudCBiZWNhdXNlIGl0cyBwYXJlbnQgaXMgbm90IGFuIEVsZW1lbnQiX3MgfTsKICAgICB9CiAK
ICAgICBSZWZQdHI8Tm9kZT4gcHJldiA9IHByZXZpb3VzU2libGluZygpOwpAQCAtNDY5Nyw3ICs0
Njk3LDcgQEAgRWxlbWVudCogRWxlbWVudDo6ZmluZEFuY2hvckVsZW1lbnRGb3JMaW5rKFN0cmlu
ZyYgb3V0QW5jaG9yTmFtZSkKIAogRXhjZXB0aW9uT3I8UmVmPFdlYkFuaW1hdGlvbj4+IEVsZW1l
bnQ6OmFuaW1hdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpTdHJvbmc8SlNDOjpKU09iamVjdD4mJiBrZXlmcmFtZXMsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2
YXJpYW50PGRvdWJsZSwgS2V5ZnJhbWVBbmltYXRpb25PcHRpb25zPj4mJiBvcHRpb25zKQogewot
ICAgIFN0cmluZyBpZCA9ICIiOworICAgIFN0cmluZyBpZCA9IGVtcHR5U3RyaW5nKCk7CiAgICAg
c3RkOjpvcHRpb25hbDxSZWZQdHI8QW5pbWF0aW9uVGltZWxpbmU+PiB0aW1lbGluZTsKICAgICBz
dGQ6OnZhcmlhbnQ8RnJhbWVzUGVyU2Vjb25kLCBBbmltYXRpb25GcmFtZVJhdGVQcmVzZXQ+IGZy
YW1lUmF0ZSA9IEFuaW1hdGlvbkZyYW1lUmF0ZVByZXNldDo6QXV0bzsKICAgICBzdGQ6Om9wdGlv
bmFsPHN0ZDo6dmFyaWFudDxkb3VibGUsIEtleWZyYW1lRWZmZWN0T3B0aW9ucz4+IGtleWZyYW1l
RWZmZWN0T3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJs
YXkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKaW5kZXggODhiOTY4
NTNjZTE3OWI5ZmZkY2E1NDY2MzJiZDNhNjY5NGIxZjU3Ny4uMDU3ZjIwZjhiYzU5ZDMyM2E0ZDJj
MWYxNWI1NzU4ZWQ5NzY0NjM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdl
T3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKQEAg
LTUzMSw3ICs1MzEsNyBAQCB2b2lkIHVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoSFRN
TEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvbgogCiAgICAgICAgICAgICBG
bG9hdFNpemUgdGFyZ2V0U2l6ZSB7IGhvcml6b250YWxFeHRlbnQgLSBob3Jpem9udGFsT2Zmc2V0
LCBsaW5lQm91bmRzLnNpemUuaGVpZ2h0KCkgfTsKICAgICAgICAgICAgIGlmICh0YXJnZXRTaXpl
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIHRleHRDb250YWluZXItPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0sICJzY2FsZSgwLCAwKSIpOworICAgICAg
ICAgICAgICAgIHRleHRDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlUcmFuc2Zvcm0sICJzY2FsZSgwLCAwKSJfcyk7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9CiAKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIHVwZGF0ZVdpdGhUZXh0
UmVjb2duaXRpb25SZXN1bHQoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25p
dGlvbgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc2l6ZUJlZm9yZVRyYW5zZm9y
bS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICB0ZXh0Q29udGFpbmVyLT5zZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtLCAic2NhbGUoMCwgMCkiKTsKKyAgICAg
ICAgICAgICAgICB0ZXh0Q29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5VHJhbnNmb3JtLCAic2NhbGUoMCwgMCkiX3MpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYjFhZjQ1ZjdlYzJmMTBkMmUw
ZDI0Y2M4MGM1NzBhNjFjM2RkOTFjNi4uZDJlMjdkODQ5MDFkNTU5OTI5NDU4YzQ2N2Q5MWY3ZjY0
YTdiODAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTkzMCw3ICsxOTMwLDcgQEAgdm9pZCBOb2Rl
OjpzaG93VHJlZUZvclRoaXNBY3Jvc3NGcmFtZSgpIGNvbnN0CiAgICAgTm9kZSogcm9vdE5vZGUg
PSBjb25zdF9jYXN0PE5vZGUqPih0aGlzKTsKICAgICB3aGlsZSAocGFyZW50T3JTaGFkb3dIb3N0
T3JGcmFtZU93bmVyKHJvb3ROb2RlKSkKICAgICAgICAgcm9vdE5vZGUgPSBwYXJlbnRPclNoYWRv
d0hvc3RPckZyYW1lT3duZXIocm9vdE5vZGUpOwotICAgIHNob3dTdWJUcmVlQWNyb3NzRnJhbWUo
cm9vdE5vZGUsIHRoaXMsICIiKTsKKyAgICBzaG93U3ViVHJlZUFjcm9zc0ZyYW1lKHJvb3ROb2Rl
LCB0aGlzLCBlbXB0eVN0cmluZygpKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShUUkVFX0RFQlVH
R0lORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKaW5k
ZXggMThkODc3MmJlZWE0YjM2OGJlZjQzOWM5ZWY1OThhMDFjYzZmOTczNy4uMDFhNjI0MGQ0YzMy
OTRiMTJmODEwYmQ2ZDFkMzJlNDI5YzA5M2ZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCiAgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9
IHBhcnNlQXR0cmlidXRlcyhkYXRhKCkpOwogICAgICAgICBpZiAoIWF0dHJpYnV0ZXMpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIFN0cmluZyB0eXBlID0gYXR0cmlidXRlcy0+Z2V0KCJ0
eXBlIik7CisgICAgICAgIFN0cmluZyB0eXBlID0gYXR0cmlidXRlcy0+Z2V0KCJ0eXBlIl9zKTsK
IAogICAgICAgICBtX2lzQ1NTID0gdHlwZS5pc0VtcHR5KCkgfHwgdHlwZSA9PSAidGV4dC9jc3Mi
OwogI2lmIEVOQUJMRShYU0xUKQpAQCAtMTAzLDExICsxMDMsMTEgQEAgdm9pZCBQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCiAjZW5kaWYKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBTdHJpbmcgaHJlZiA9IGF0dHJpYnV0ZXMtPmdldCgiaHJlZiIpOwotICAg
ICAgICBTdHJpbmcgYWx0ZXJuYXRlID0gYXR0cmlidXRlcy0+Z2V0KCJhbHRlcm5hdGUiKTsKKyAg
ICAgICAgU3RyaW5nIGhyZWYgPSBhdHRyaWJ1dGVzLT5nZXQoImhyZWYiX3MpOworICAgICAgICBT
dHJpbmcgYWx0ZXJuYXRlID0gYXR0cmlidXRlcy0+Z2V0KCJhbHRlcm5hdGUiX3MpOwogICAgICAg
ICBtX2FsdGVybmF0ZSA9IGFsdGVybmF0ZSA9PSAieWVzIjsKLSAgICAgICAgbV90aXRsZSA9IGF0
dHJpYnV0ZXMtPmdldCgidGl0bGUiKTsKLSAgICAgICAgbV9tZWRpYSA9IGF0dHJpYnV0ZXMtPmdl
dCgibWVkaWEiKTsKKyAgICAgICAgbV90aXRsZSA9IGF0dHJpYnV0ZXMtPmdldCgidGl0bGUiX3Mp
OworICAgICAgICBtX21lZGlhID0gYXR0cmlidXRlcy0+Z2V0KCJtZWRpYSJfcyk7CiAKICAgICAg
ICAgaWYgKG1fYWx0ZXJuYXRlICYmIG1fdGl0bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVj
a1N0eWxlU2hlZXQoKQogICAgICAgICAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBTdHJpbmcgY2hhcnNldCA9IGF0dHJpYnV0ZXMtPmdldCgiY2hhcnNl
dCIpOworICAgICAgICAgICAgICAgIFN0cmluZyBjaGFyc2V0ID0gYXR0cmlidXRlcy0+Z2V0KCJj
aGFyc2V0Il9zKTsKICAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpLCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVm
YXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBzdGQ6Om51bGxvcHQsIGNoYXJzZXQuaXNFbXB0
eSgpID8gZG9jdW1lbnQoKS5jaGFyc2V0KCkgOiBXVEZNb3ZlKGNoYXJzZXQpKTsKIAogICAgICAg
ICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVy
KCkucmVxdWVzdENTU1N0eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAppbmRleCBkNDYzZGUw
M2E0MmRlMTQ4YWI2ZWI3NzU0MDY3ZWY3ZWQ1NjRiYTdkLi44MzYwNmE3YWY1MDRmZjA2M2JjMTgy
ZGY4NGZhNjgyMTE2MmVjYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3Bv
cnRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50
cy5jcHAKQEAgLTM5NiwxMyArMzk2LDEzIEBAIHN0YXRpYyBWaWV3cG9ydEZpdCBwYXJzZVZpZXdw
b3J0Rml0VmFsdWUoU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUsIGNvbnN0CiAgICAg
cmV0dXJuIFZpZXdwb3J0Rml0OjpBdXRvOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogdmlld3Bv
cnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCitzdGF0
aWMgQVNDSUlMaXRlcmFsIHZpZXdwb3J0RXJyb3JNZXNzYWdlVGVtcGxhdGUoVmlld3BvcnRFcnJv
ckNvZGUgZXJyb3JDb2RlKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlcnJvcnNb
XSA9IHsKLSAgICAgICAgIlZpZXdwb3J0IGFyZ3VtZW50IGtleSBcIiVyZXBsYWNlbWVudDFcIiBu
b3QgcmVjb2duaXplZCBhbmQgaWdub3JlZC4iLAotICAgICAgICAiVmlld3BvcnQgYXJndW1lbnQg
dmFsdWUgXCIlcmVwbGFjZW1lbnQxXCIgZm9yIGtleSBcIiVyZXBsYWNlbWVudDJcIiBpcyBpbnZh
bGlkLCBhbmQgaGFzIGJlZW4gaWdub3JlZC4iLAotICAgICAgICAiVmlld3BvcnQgYXJndW1lbnQg
dmFsdWUgXCIlcmVwbGFjZW1lbnQxXCIgZm9yIGtleSBcIiVyZXBsYWNlbWVudDJcIiB3YXMgdHJ1
bmNhdGVkIHRvIGl0cyBudW1lcmljIHByZWZpeC4iLAotICAgICAgICAiVmlld3BvcnQgbWF4aW11
bS1zY2FsZSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gMTAuMC4gVGhlIG1heGltdW0tc2NhbGUgd2ls
bCBiZSBzZXQgdG8gMTAuMC4iCisgICAgc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgZXJy
b3JzW10gPSB7CisgICAgICAgICJWaWV3cG9ydCBhcmd1bWVudCBrZXkgXCIlcmVwbGFjZW1lbnQx
XCIgbm90IHJlY29nbml6ZWQgYW5kIGlnbm9yZWQuIl9zLAorICAgICAgICAiVmlld3BvcnQgYXJn
dW1lbnQgdmFsdWUgXCIlcmVwbGFjZW1lbnQxXCIgZm9yIGtleSBcIiVyZXBsYWNlbWVudDJcIiBp
cyBpbnZhbGlkLCBhbmQgaGFzIGJlZW4gaWdub3JlZC4iX3MsCisgICAgICAgICJWaWV3cG9ydCBh
cmd1bWVudCB2YWx1ZSBcIiVyZXBsYWNlbWVudDFcIiBmb3Iga2V5IFwiJXJlcGxhY2VtZW50Mlwi
IHdhcyB0cnVuY2F0ZWQgdG8gaXRzIG51bWVyaWMgcHJlZml4LiJfcywKKyAgICAgICAgIlZpZXdw
b3J0IG1heGltdW0tc2NhbGUgY2Fubm90IGJlIGxhcmdlciB0aGFuIDEwLjAuIFRoZSBtYXhpbXVt
LXNjYWxlIHdpbGwgYmUgc2V0IHRvIDEwLjAuIl9zCiAgICAgfTsKIAogICAgIHJldHVybiBlcnJv
cnNbZXJyb3JDb2RlXTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBzdGF0aWMgU3RyaW5nIHZpZXdwb3J0
RXJyb3JNZXNzYWdlKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgU3RyaW5nVmlldyByZXBs
YQogICAgICAgICBtZXNzYWdlLnJlcGxhY2UoIiVyZXBsYWNlbWVudDIiLCByZXBsYWNlbWVudDIu
dG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKIAogICAgIGlmICgoZXJyb3JDb2RlID09IFVucmVj
b2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yIHx8IGVycm9yQ29kZSA9PSBUcnVuY2F0
ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvcikgJiYgcmVwbGFjZW1lbnQxLmNvbnRhaW5zKCc7
JykpCi0gICAgICAgIG1lc3NhZ2UuYXBwZW5kKCIgTm90ZSB0aGF0ICc7JyBpcyBub3QgYSBzZXBh
cmF0b3IgaW4gdmlld3BvcnQgdmFsdWVzLiBUaGUgbGlzdCBzaG91bGQgYmUgY29tbWEtc2VwYXJh
dGVkLiIpOworICAgICAgICBtZXNzYWdlLmFwcGVuZCgiIE5vdGUgdGhhdCAnOycgaXMgbm90IGEg
c2VwYXJhdG9yIGluIHZpZXdwb3J0IHZhbHVlcy4gVGhlIGxpc3Qgc2hvdWxkIGJlIGNvbW1hLXNl
cGFyYXRlZC4iX3MpOwogCiAgICAgcmV0dXJuIG1lc3NhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKaW5kZXggY2M5NWQ1MjFmZDgzMDNkOTU1Y2ViYWNkYTQxMTc3MDYzM2YwMTFjNC4u
MDE4MDg2ZDNjY2IwYjJiMGJiMzI4MjM0N2NjOGJjM2FjNjc0N2ZmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtMTkwMywxMiArMTkwMywxMiBAQCB2b2lkIEVkaXRvcjo6ZGlkV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKQogCiB2b2lkIEVkaXRvcjo6dG9nZ2xlQm9sZCgpCiB7
Ci0gICAgY29tbWFuZCgiVG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKKyAgICBjb21tYW5kKCJUb2dn
bGVCb2xkIl9zKS5leGVjdXRlKCk7CiB9CiAKIHZvaWQgRWRpdG9yOjp0b2dnbGVVbmRlcmxpbmUo
KQogewotICAgIGNvbW1hbmQoIlRvZ2dsZVVuZGVybGluZSIpLmV4ZWN1dGUoKTsKKyAgICBjb21t
YW5kKCJUb2dnbGVVbmRlcmxpbmUiX3MpLmV4ZWN1dGUoKTsKIH0KIAogdm9pZCBFZGl0b3I6OnNl
dEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtMTky
NSw3ICsxOTI1LDcgQEAgdm9pZCBFZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1
dG8mIGZvY3VzZWRGb3JtRWxlbWVudCA9IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50PigqZm9jdXNlZEVsZW1lbnQpOwotICAgICAgICBhdXRvIGRpcmVjdGlvblZhbHVlID0gZGly
ZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIjsK
KyAgICAgICAgYXV0byBkaXJlY3Rpb25WYWx1ZSA9IGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0
aW9uOjpMZWZ0VG9SaWdodCA/ICJsdHIiX3MgOiAicnRsIl9zOwogICAgICAgICBhdXRvIHdyaXRp
bmdEaXJlY3Rpb25JbnB1dFR5cGVOYW1lID0gaW5wdXRUeXBlTmFtZUZvckVkaXRpbmdBY3Rpb24o
RWRpdEFjdGlvbjo6U2V0QmxvY2tXcml0aW5nRGlyZWN0aW9uKTsKICAgICAgICAgaWYgKCFkaXNw
YXRjaEJlZm9yZUlucHV0RXZlbnQoZm9jdXNlZEZvcm1FbGVtZW50LCB3cml0aW5nRGlyZWN0aW9u
SW5wdXRUeXBlTmFtZSwgZGlyZWN0aW9uVmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTkzNyw3ICsxOTM3LDcgQEAgdm9pZCBFZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdy
aXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIH0KIAogICAgIGF1dG8gc3R5bGUgPSBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKLSAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9S
aWdodCA/ICJsdHIiIDogZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0
ID8gInJ0bCIgOiAiaW5oZXJpdCIsIGZhbHNlKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9S
aWdodCA/ICJsdHIiX3MgOiBkaXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRUb0xl
ZnQgPyAicnRsIl9zIDogImluaGVyaXQiX3MsIGZhbHNlKTsKICAgICBhcHBseVBhcmFncmFwaFN0
eWxlVG9TZWxlY3Rpb24oc3R5bGUucHRyKCksIEVkaXRBY3Rpb246OlNldEJsb2NrV3JpdGluZ0Rp
cmVjdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmlu
ZGV4IDYxYTFlYTZiOTc1N2M3YmI3NTVmOTQyZGVhYzg4MDExNWU3ZDRkYWMuLmIwM2Y5M2Q5MGMz
NzJhMTA4NjRkYmQ1MzJkYjA5YmQyZDNlNGNmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0YXRpYyBib29sIGFwcGx5Q29t
bWFuZFRvRnJhbWUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRp
dEFjCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgYm9vbCBpc1N0eWxlUHJlc2VudChF
ZGl0b3ImIGVkaXRvciwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBjaGFyKiBvblZh
bHVlKQorc3RhdGljIGJvb2wgaXNTdHlsZVByZXNlbnQoRWRpdG9yJiBlZGl0b3IsIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwgQVNDSUlMaXRlcmFsIG9uVmFsdWUpCiB7CiAgICAgLy8gU3R5bGUg
aXMgY29uc2lkZXJlZCBwcmVzZW50IHdoZW4KICAgICAvLyBNYWM6IHByZXNlbnQgYXQgdGhlIGJl
Z2lubmluZyBvZiBzZWxlY3Rpb24KQEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0aWMgYm9vbCBleGVj
dXRlQXBwbHlTdHlsZShGcmFtZSYgZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBF
ZGl0QWN0aQogICAgIHJldHVybiBhcHBseUNvbW1hbmRUb0ZyYW1lKGZyYW1lLCBzb3VyY2UsIGFj
dGlvbiwgRWRpdGluZ1N0eWxlOjpjcmVhdGUocHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSkpOwog
fQogCi1zdGF0aWMgYm9vbCBleGVjdXRlVG9nZ2xlU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JD
b21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwgY29uc3QgY2hhciogb2ZmVmFsdWUsIGNvbnN0IGNoYXIqIG9uVmFsdWUpCitzdGF0
aWMgYm9vbCBleGVjdXRlVG9nZ2xlU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291
cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwg
QVNDSUlMaXRlcmFsIG9mZlZhbHVlLCBBU0NJSUxpdGVyYWwgb25WYWx1ZSkKIHsKICAgICBib29s
IHN0eWxlSXNQcmVzZW50ID0gaXNTdHlsZVByZXNlbnQoZnJhbWUuZWRpdG9yKCksIHByb3BlcnR5
SUQsIG9uVmFsdWUpOwogICAgIHJldHVybiBhcHBseUNvbW1hbmRUb0ZyYW1lKGZyYW1lLCBzb3Vy
Y2UsIGFjdGlvbiwgRWRpdGluZ1N0eWxlOjpjcmVhdGUocHJvcGVydHlJRCwgc3R5bGVJc1ByZXNl
bnQgPyBvZmZWYWx1ZSA6IG9uVmFsdWUpKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgYm9v
bCBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5KEZyYW1lJiBmcmFtZSwgVGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgVHJpU3RhdGUgc3Rh
dGVTdHlsZShGcmFtZSYgZnJhbWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgY2hh
ciogZGVzaXJlZFZhbHVlKQorc3RhdGljIFRyaVN0YXRlIHN0YXRlU3R5bGUoRnJhbWUmIGZyYW1l
LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEFTQ0lJTGl0ZXJhbCBkZXNpcmVkVmFsdWUpCiB7
CiAgICAgaWYgKGZyYW1lLmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkVG9nZ2xlU3R5bGVCYXNl
ZE9uU3RhcnRPZlNlbGVjdGlvbigpKQogICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuc2Vs
ZWN0aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpID8gVHJpU3RhdGU6
OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBzdGF0aWMgYm9v
bCBleGVjdXRlU2V0TWFyayhGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgVGV4dERlY29yYXRp
b25DaGFuZ2UgdGV4dERlY29yYXRpb25DaGFuZ2VGb3JUb2dnbGluZyhFZGl0b3ImIGVkaXRvciwg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBjaGFyKiBvblZhbHVlKQorc3RhdGljIFRl
eHREZWNvcmF0aW9uQ2hhbmdlIHRleHREZWNvcmF0aW9uQ2hhbmdlRm9yVG9nZ2xpbmcoRWRpdG9y
JiBlZGl0b3IsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgQVNDSUlMaXRlcmFsIG9uVmFsdWUp
CiB7CiAgICAgcmV0dXJuIGlzU3R5bGVQcmVzZW50KGVkaXRvciwgcHJvcGVydHlJRCwgb25WYWx1
ZSkgPyBUZXh0RGVjb3JhdGlvbkNoYW5nZTo6UmVtb3ZlIDogVGV4dERlY29yYXRpb25DaGFuZ2U6
OkFkZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJy
ZWFrQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0Nv
bW1hbmQuY3BwCmluZGV4IDU5NjdkNDRjZjlmMDc0ZTA1MDgwYzZkZWVmN2IxM2Q3MmM1YWJiZTYu
LjNlMzM3M2FjM2Y2ZmQzMWEwYWMwNGQ0NjFkYThjNjcxMzlhMDAwNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcApAQCAtODgsNyAr
ODgsNyBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIGlmIChz
aG91bGRVc2VCcmVha0VsZW1lbnQocG9zaXRpb24pKQogICAgICAgICBub2RlVG9JbnNlcnQgPSBI
VE1MQlJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgZWxzZQotICAgICAgICBub2Rl
VG9JbnNlcnQgPSBkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKCJcbiIpOworICAgICAgICBub2Rl
VG9JbnNlcnQgPSBkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKCJcbiJfcyk7CiAgICAgCiAgICAg
Ly8gRklYTUU6IE5lZWQgdG8gbWVyZ2UgdGV4dCBub2RlcyB3aGVuIGluc2VydGluZyBqdXN0IGFm
dGVyIG9yIGJlZm9yZSB0ZXh0LgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dFRleHRDb21tYW5kLmNwcAppbmRleCA2MWE3N2Y1MTBmZjIyZjdlYWM4ZWNlZThmYjNhNDMyMzcw
OTNiZTc5Li43MWZjYTIzNWVhZWViNWRlM2ZjNGFkY2QzMTY5MTMxOTFiOGZlYzVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcApAQCAtMjQ4LDcgKzI0
OCw3IEBAIFBvc2l0aW9uIEluc2VydFRleHRDb21tYW5kOjppbnNlcnRUYWIoY29uc3QgUG9zaXRp
b24mIHBvcykKICAgICAvLyBrZWVwIHRhYnMgY29hbGVzY2VkIGluIHRhYiBzcGFuCiAgICAgaWYg
KGlzVGFiU3BhblRleHROb2RlKG5vZGUpKSB7CiAgICAgICAgIFJlZjxUZXh0PiB0ZXh0Tm9kZSA9
IGRvd25jYXN0PFRleHQ+KCpub2RlKTsKLSAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRleHRO
b2RlLCBvZmZzZXQsICJcdCIpOworICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUodGV4dE5vZGUs
IG9mZnNldCwgIlx0Il9zKTsKICAgICAgICAgcmV0dXJuIFBvc2l0aW9uKHRleHROb2RlLnB0cigp
LCBvZmZzZXQgKyAxKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGZjMzZiNjM0ZmMwZjI5ODdhODI3
ODdhNzY5Y2JiMzdmNTBkMTMwNjYuLjMwYmEzZjM4MmQzODJhNzM1MTYyYTE3MzY0MDU1MjliNjk5
NWM5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCkBAIC03MTYsOSArNzE2LDkgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZShJbnNlcnQK
IAogICAgICAgICAgICAgLy8gTXV0YXRlIHVzaW5nIHRoZSBDU1NPTSB3cmFwcGVyIHNvIHdlIGdl
dCB0aGUgc2FtZSBldmVudCBiZWhhdmlvciBhcyBhIHNjcmlwdC4KICAgICAgICAgICAgIGlmIChp
c0Jsb2NrKGVsZW1lbnQpKQotICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS5z
ZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RGlzcGxheSwgImlubGluZSIsIGZhbHNlKTsK
KyAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0eWxlKCkuc2V0UHJvcGVydHlJbnRlcm5h
bChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxpbmUiX3MsIGZhbHNlKTsKICAgICAgICAgICAgIGlm
IChlbGVtZW50LT5yZW5kZXJlcigpICYmIGVsZW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCkuaXNG
bG9hdGluZygpKQotICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS5zZXRQcm9w
ZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsICJub25lIiwgZmFsc2UpOworICAgICAgICAg
ICAgICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3Bl
cnR5RmxvYXQsICJub25lIl9zLCBmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xNTk0
LDExICsxNTk0LDExIEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmFkZFNwYWNlc0Zv
clNtYXJ0UmVwbGFjZSgpCiAgICAgaWYgKG5lZWRzVHJhaWxpbmdTcGFjZSAmJiBlbmROb2RlKSB7
CiAgICAgICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlID0gIWVuZE5vZGUtPnJlbmRlcmVyKCkg
fHwgZW5kTm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKTsKICAg
ICAgICAgaWYgKGlzPFRleHQ+KCplbmROb2RlKSkgewotICAgICAgICAgICAgaW5zZXJ0VGV4dElu
dG9Ob2RlKGRvd25jYXN0PFRleHQ+KCplbmROb2RlKSwgZW5kT2Zmc2V0LCBjb2xsYXBzZVdoaXRl
U3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICIpOworICAgICAgICAgICAgaW5z
ZXJ0VGV4dEludG9Ob2RlKGRvd25jYXN0PFRleHQ+KCplbmROb2RlKSwgZW5kT2Zmc2V0LCBjb2xs
YXBzZVdoaXRlU3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICJfcyk7CiAgICAg
ICAgICAgICBpZiAobV9lbmRPZkluc2VydGVkQ29udGVudC5jb250YWluZXJOb2RlKCkgPT0gZW5k
Tm9kZSkKICAgICAgICAgICAgICAgICBtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm1vdmVUb09mZnNl
dChtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpICsgMSk7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIG5vZGUgPSBkb2N1bWVudCgpLmNyZWF0
ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3Ry
aW5nKCkgOiAiICIpOworICAgICAgICAgICAgYXV0byBub2RlID0gZG9jdW1lbnQoKS5jcmVhdGVF
ZGl0aW5nVGV4dE5vZGUoY29sbGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmlu
ZygpIDogIiAiX3MpOwogICAgICAgICAgICAgaW5zZXJ0Tm9kZUFmdGVyKG5vZGUuY29weVJlZigp
LCAqZW5kTm9kZSk7CiAgICAgICAgICAgICB1cGRhdGVOb2Rlc0luc2VydGVkKG5vZGUucHRyKCkp
OwogICAgICAgICB9CkBAIC0xNjE4LDExICsxNjE4LDExIEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OmFkZFNwYWNlc0ZvclNtYXJ0UmVwbGFjZSgpCiAgICAgaWYgKG5lZWRzTGVhZGlu
Z1NwYWNlICYmIHN0YXJ0Tm9kZSkgewogICAgICAgICBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSA9
ICFzdGFydE5vZGUtPnJlbmRlcmVyKCkgfHwgc3RhcnROb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgp
LmNvbGxhcHNlV2hpdGVTcGFjZSgpOwogICAgICAgICBpZiAoaXM8VGV4dD4oKnN0YXJ0Tm9kZSkp
IHsKLSAgICAgICAgICAgIGluc2VydFRleHRJbnRvTm9kZShkb3duY2FzdDxUZXh0Pigqc3RhcnRO
b2RlKSwgc3RhcnRPZmZzZXQsIGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VT
dHJpbmcoKSA6ICIgIik7CisgICAgICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUoZG93bmNhc3Q8
VGV4dD4oKnN0YXJ0Tm9kZSksIHN0YXJ0T2Zmc2V0LCBjb2xsYXBzZVdoaXRlU3BhY2UgPyBub25C
cmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICJfcyk7CiAgICAgICAgICAgICBpZiAobV9lbmRPZklu
c2VydGVkQ29udGVudC5jb250YWluZXJOb2RlKCkgPT0gc3RhcnROb2RlICYmIG1fZW5kT2ZJbnNl
cnRlZENvbnRlbnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpCiAgICAgICAgICAgICAgICAgbV9l
bmRPZkluc2VydGVkQ29udGVudC5tb3ZlVG9PZmZzZXQobV9lbmRPZkluc2VydGVkQ29udGVudC5v
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKSArIDEpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgYXV0byBub2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoY29sbGFwc2VX
aGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIDogIiAiKTsKKyAgICAgICAgICAg
IGF1dG8gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKGNvbGxhcHNlV2hp
dGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIgIl9zKTsKICAgICAgICAgICAg
IC8vIERvbid0IHVwZGF0ZU5vZGVzSW5zZXJ0ZWQuIERvaW5nIHNvIHdvdWxkIHNldCBtX2VuZE9m
SW5zZXJ0ZWRDb250ZW50IHRvIGJlIHRoZSBub2RlIGNvbnRhaW5pbmcgdGhlIGxlYWRpbmcgc3Bh
Y2UsCiAgICAgICAgICAgICAvLyBidXQgbV9lbmRPZkluc2VydGVkQ29udGVudCBpcyBzdXBwb3Nl
ZCB0byBtYXJrIHRoZSBlbmQgb2YgcGFzdGVkIGNvbnRlbnQuCiAgICAgICAgICAgICBpbnNlcnRO
b2RlQmVmb3JlKG5vZGUsICpzdGFydE5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBjNWIyYjJkNTk1Yjc3
NzI0OTBmYThmNjAzMzQzMzE4M2UyYTk4ZWUwLi4wMWM2ZWVhZTkxNmVhNWFhMjM0MjNlZjMxMjNh
MTdjMGRkYjI2ZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyLmNwcApAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Om9ic2VydmVQYXJhZ3JhcGhzKGNvbnN0IFBvc2l0aW9uJiBz
dGFydCwgY29uc3QKIAogICAgICAgICBpZiAoY29udGVudC5pc1JlcGxhY2VkQ29udGVudCkgewog
ICAgICAgICAgICAgaWYgKCF1bml0c0luQ3VycmVudFBhcmFncmFwaC5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgdW5pdHNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kKE1hbmlwdWxhdGlvblVu
aXQgeyAqY29udGVudE5vZGUsIHsgTWFuaXB1bGF0aW9uVG9rZW4geyBtX3Rva2VuSWRlbnRpZmll
ci5nZW5lcmF0ZSgpLCAiW10iLCB0b2tlbkluZm8oY29udGVudC5ub2RlLmdldCgpKSwgdHJ1ZSB9
IH0gfSk7CisgICAgICAgICAgICAgICAgdW5pdHNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kKE1h
bmlwdWxhdGlvblVuaXQgeyAqY29udGVudE5vZGUsIHsgTWFuaXB1bGF0aW9uVG9rZW4geyBtX3Rv
a2VuSWRlbnRpZmllci5nZW5lcmF0ZSgpLCAiW10iX3MsIHRva2VuSW5mbyhjb250ZW50Lm5vZGUu
Z2V0KCkpLCB0cnVlIH0gfSB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDIyNzJlYmIzMGRl
NzkyMTYzNjZmYjExOTM2NTgxYjkyNThiZGNhMWUuLjllN2MwYWM0YTRhZDkwNTRkZjNlNDIxNzA4
MGY0MjkxNWIzYTE4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNw
cApAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFr
QW5kTm90aWZ5QWNjZXNzaWJpbGl0eSgpCiB7CiAgICAgQWNjZXNzaWJpbGl0eVJlcGxhY2VkVGV4
dCByZXBsYWNlZFRleHQoZG9jdW1lbnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CiAgICAg
aW5zZXJ0TGluZUJyZWFrKCk7Ci0gICAgcmVwbGFjZWRUZXh0LnBvc3RUZXh0U3RhdGVDaGFuZ2VO
b3RpZmljYXRpb24oZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSwgQVhUZXh0RWRp
dFR5cGVUeXBpbmcsICJcbiIsIGRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwor
ICAgIHJlcGxhY2VkVGV4dC5wb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKGRvY3VtZW50
KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCksIEFYVGV4dEVkaXRUeXBlVHlwaW5nLCAiXG4iX3Ms
IGRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwogICAgIGNvbXBvc2l0aW9uKCkt
PnNldFJhbmdlRGVsZXRlZEJ5VW5hcHBseShyZXBsYWNlZFRleHQucmVwbGFjZWRSYW5nZSgpKTsK
IH0KIApAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQW5kTm90aWZ5QWNjZXNzaWJpbGl0eSgpCiB7CiAgICAgQWNjZXNzaWJpbGl0
eVJlcGxhY2VkVGV4dCByZXBsYWNlZFRleHQoZG9jdW1lbnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKSk7CiAgICAgaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKCk7Ci0gICAgcmVwbGFjZWRUZXh0
LnBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oZG9jdW1lbnQoKS5leGlzdGluZ0FYT2Jq
ZWN0Q2FjaGUoKSwgQVhUZXh0RWRpdFR5cGVUeXBpbmcsICJcbiIsIGRvY3VtZW50KCkuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkpOworICAgIHJlcGxhY2VkVGV4dC5wb3N0VGV4dFN0YXRlQ2hhbmdl
Tm90aWZpY2F0aW9uKGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCksIEFYVGV4dEVk
aXRUeXBlVHlwaW5nLCAiXG4iX3MsIGRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkp
OwogICAgIGNvbXBvc2l0aW9uKCktPnNldFJhbmdlRGVsZXRlZEJ5VW5hcHBseShyZXBsYWNlZFRl
eHQucmVwbGFjZWRSYW5nZSgpKTsKIH0KIApAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgVHlwaW5n
Q29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50QW5kTm90aWZ5
QWNjZXNzaWJpbGl0CiB7CiAgICAgQWNjZXNzaWJpbGl0eVJlcGxhY2VkVGV4dCByZXBsYWNlZFRl
eHQoZG9jdW1lbnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CiAgICAgaW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50KCk7Ci0gICAgcmVwbGFjZWRUZXh0LnBvc3RUZXh0
U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUo
KSwgQVhUZXh0RWRpdFR5cGVUeXBpbmcsICJcbiIsIGRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkpOworICAgIHJlcGxhY2VkVGV4dC5wb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0
aW9uKGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCksIEFYVGV4dEVkaXRUeXBlVHlw
aW5nLCAiXG4iX3MsIGRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwogICAgIGNv
bXBvc2l0aW9uKCktPnNldFJhbmdlRGVsZXRlZEJ5VW5hcHBseShyZXBsYWNlZFRleHQucmVwbGFj
ZWRSYW5nZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDIwYjNmY2Y4
ZGRmOTU0NDM0OWIxODY0ZWY5ZDliZjBmYjRhZWU2NDYuLjJkOGY4YjMzNTkzMGQwN2RkMzMyNmI4
MTA2NWYyZDRmZDgzNWFjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTE5Niwx
MiArMTk2LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2FuaXRpemlu
Z1dlYkNvbnRlbnQoKQogICAgIGZyYW1lLmluaXQoKTsKIAogICAgIEZyYW1lTG9hZGVyJiBsb2Fk
ZXIgPSBmcmFtZS5sb2FkZXIoKTsKLSAgICBzdGF0aWMgY2hhciBtYXJrdXBbXSA9ICI8IURPQ1RZ
UEUgaHRtbD48aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiI7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBBU0NJSUxpdGVyYWwgbWFya3VwID0gIjwhRE9DVFlQRSBodG1sPjxodG1sPjxib2R5PjwvYm9k
eT48L2h0bWw+Il9zOwogICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7
CiAgICAgYXV0byYgd3JpdGVyID0gbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRl
cigpOwotICAgIHdyaXRlci5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7CisgICAgd3JpdGVyLnNl
dE1JTUVUeXBlKCJ0ZXh0L2h0bWwiX3MpOwogICAgIHdyaXRlci5iZWdpbigpOwotICAgIHdyaXRl
ci5pbnNlcnREYXRhU3luY2hyb25vdXNseShTdHJpbmcobWFya3VwKSk7CisgICAgd3JpdGVyLmlu
c2VydERhdGFTeW5jaHJvbm91c2x5KG1hcmt1cCk7CiAgICAgd3JpdGVyLmVuZCgpOwogICAgIFJF
TEVBU0VfQVNTRVJUKHBhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJvZHkoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCmluZGV4IDNlMWVmM2ZiMzYyYmFmYzQzMDYxZTE4Y2Mw
YzEzZWQ5NWRlNjlmYWQuLjQ0NTg5MTJiYTA4YzY1NjE3NzZlMzJjNzcxNGNkM2U4OTc1ZGVhMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcApAQCAtNTEsNyArNTEsNyBAQCBVUkwgQmxv
YlVSTDo6Y3JlYXRlUHVibGljVVJMKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKIAog
VVJMIEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkKIHsKLSAgICByZXR1cm4gY3JlYXRlQmxv
YlVSTCgiYmxvYmludGVybmFsOi8vIik7CisgICAgcmV0dXJuIGNyZWF0ZUJsb2JVUkwoImJsb2Jp
bnRlcm5hbDovLyJfcyk7CiB9CiAKIHN0YXRpYyBjb25zdCBEb2N1bWVudCogYmxvYk93bmVyKGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiBibG9iT3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggMmZlNWFmMWY5OGQzNmRkYzg5ZjM5Y2NjMTdkN2I3
MGVjOTMzOWU4Yi4uYWNmNGZmOWIxODhmZjZiZTYyODQxMjVkMzg5MTA2NTg0YWM5MjQyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC05Myw3ICs5
Myw3IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uCiAKICAgICAvLyBDb25zdHJ1Y3QgYW5kIGxv
YWQgdGhlIHJlcXVlc3QuCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobV91cmxGb3JSZWFk
aW5nKTsKLSAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgIHJlcXVlc3Quc2V0
SFRUUE1ldGhvZCgiR0VUIl9zKTsKIAogICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9wdGlv
bnM7CiAgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IFNlbmRDYWxsYmFja1BvbGljeTo6
U2VuZENhbGxiYWNrczsKQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6
OmNvbnZlcnRUb1RleHQoKQogICAgIC8vIHByb3ZpZGVkIGVuY29kaW5nLiAgICAgCiAgICAgLy8g
RklYTUU6IGNvbnNpZGVyIHN1cHBvcnRpbmcgaW5jcmVtZW50YWwgZGVjb2RpbmcgdG8gaW1wcm92
ZSB0aGUgcGVyZi4KICAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAgbV9kZWNvZGVyID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgbV9lbmNvZGluZy5pc1ZhbGlk
KCkgPyBtX2VuY29kaW5nIDogUEFMOjpVVEY4RW5jb2RpbmcoKSk7CisgICAgICAgIG1fZGVjb2Rl
ciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiJfcywgbV9lbmNvZGlu
Zy5pc1ZhbGlkKCkgPyBtX2VuY29kaW5nIDogUEFMOjpVVEY4RW5jb2RpbmcoKSk7CiAgICAgaWYg
KGlzQ29tcGxldGVkKCkpCiAgICAgICAgIG1fc3RyaW5nUmVzdWx0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9yYXdEYXRhLT5kYXRhKCkpLCBt
X2J5dGVzTG9hZGVkKTsKICAgICBlbHNlCkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBGaWxlUmVh
ZGVyTG9hZGVyOjpjb252ZXJ0VG9EYXRhVVJMKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fc3RyaW5nUmVzdWx0ID0gbWFrZVN0cmluZygiZGF0YToiLCBtX2RhdGFUeXBlLmlzRW1w
dHkoKSA/ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIDogbV9kYXRhVHlwZSwgIjtiYXNlNjQs
IiwgYmFzZTY0RW5jb2RlZChtX3Jhd0RhdGEtPmRhdGEoKSwgbV9ieXRlc0xvYWRlZCkpOworICAg
IG1fc3RyaW5nUmVzdWx0ID0gbWFrZVN0cmluZygiZGF0YToiLCBtX2RhdGFUeXBlLmlzRW1wdHko
KSA/ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iX3MgOiBtX2RhdGFUeXBlLCAiO2Jhc2U2NCwi
LCBiYXNlNjRFbmNvZGVkKG1fcmF3RGF0YS0+ZGF0YSgpLCBtX2J5dGVzTG9hZGVkKSk7CiB9CiAK
IGJvb2wgRmlsZVJlYWRlckxvYWRlcjo6aXNDb21wbGV0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAKaW5kZXggNmQxYTk4OTViNDg3NWZkMDA2
ZmQ1MjYxNDVhMGRkYjI5NzhjYTc3ZS4uMDlhZTdkOTYzMmUxMzJiOGNjNDMzZWY3ZGFmMjA5MTEz
YTg3MjdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3Bw
CkBAIC0yODUsNyArMjg1LDcgQEAgQmFja0ZvcndhcmRDYWNoZTo6QmFja0ZvcndhcmRDYWNoZSgp
CiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9v
bmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjaygi
Y29tLmFwcGxlLldlYktpdC5zaG93QmFja0ZvcndhcmRDYWNoZSIsIFtdIHsKKyAgICAgICAgUEFM
OjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dCYWNrRm9yd2Fy
ZENhY2hlIl9zLCBbXSB7CiAgICAgICAgICAgICBCYWNrRm9yd2FyZENhY2hlOjpzaW5nbGV0b24o
KS5kdW1wKCk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5w
dXRUeXBlLmNwcAppbmRleCA3OTY2NTcwOGM1MTUyMTIwNDU3MjY2ZDhhOTVlZDQ3MTcwNmMzZjg2
Li41MDg0NWRjNzc0Y2EyODAyNDcwZjhlNDAwODVlMzRlNDUzOTIyZDhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAvLyBGcm9tIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3ZhbGlkLWUt
bWFpbC1hZGRyZXNzLgotc3RhdGljIGNvbnN0IGNoYXIgZW1haWxQYXR0ZXJuW10gPSAiXlthLXpB
LVowLTkuISMkJSYnKitcXC89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17
MCw2MX1bYS16QS1aMC05XSk/KD86XFwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1b
YS16QS1aMC05XSk/KSokIjsKK3N0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGVtYWlsUGF0
dGVybiA9ICJeW2EtekEtWjAtOS4hIyQlJicqK1xcLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/
OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXC5bYS16QS1aMC05XSg/OlthLXpB
LVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQiX3M7CiAKIHN0YXRpYyBib29sIGlzVmFsaWRF
bWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9FbnRlcktleUhpbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbnRl
cktleUhpbnQuY3BwCmluZGV4IGRkYmM0OTI2NDk2MWYwNGE5NmExODA3Mjg3YTk5OTA5OGVmODI1
NDYuLjk3MDM4MTRjODRmNDY5Y2Q0ZmIxMzY1ZTExM2Q2NzMyYTBlZTY5OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRW50ZXJLZXlIaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0VudGVyS2V5SGludC5jcHAKQEAgLTUzLDE5ICs1MywxOSBAQCBTdHJpbmcgYXR0cmli
dXRlVmFsdWVGb3JFbnRlcktleUhpbnQoRW50ZXJLZXlIaW50IGhpbnQpCiAgICAgY2FzZSBFbnRl
cktleUhpbnQ6OlVuc3BlY2lmaWVkOgogICAgICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CiAgICAg
Y2FzZSBFbnRlcktleUhpbnQ6OkVudGVyOgotICAgICAgICByZXR1cm4gImVudGVyIjsKKyAgICAg
ICAgcmV0dXJuICJlbnRlciJfczsKICAgICBjYXNlIEVudGVyS2V5SGludDo6RG9uZToKLSAgICAg
ICAgcmV0dXJuICJkb25lIjsKKyAgICAgICAgcmV0dXJuICJkb25lIl9zOwogICAgIGNhc2UgRW50
ZXJLZXlIaW50OjpHbzoKLSAgICAgICAgcmV0dXJuICJnbyI7CisgICAgICAgIHJldHVybiAiZ28i
X3M7CiAgICAgY2FzZSBFbnRlcktleUhpbnQ6Ok5leHQ6Ci0gICAgICAgIHJldHVybiAibmV4dCI7
CisgICAgICAgIHJldHVybiAibmV4dCJfczsKICAgICBjYXNlIEVudGVyS2V5SGludDo6UHJldmlv
dXM6Ci0gICAgICAgIHJldHVybiAicHJldmlvdXMiOworICAgICAgICByZXR1cm4gInByZXZpb3Vz
Il9zOwogICAgIGNhc2UgRW50ZXJLZXlIaW50OjpTZWFyY2g6Ci0gICAgICAgIHJldHVybiAic2Vh
cmNoIjsKKyAgICAgICAgcmV0dXJuICJzZWFyY2giX3M7CiAgICAgY2FzZSBFbnRlcktleUhpbnQ6
OlNlbmQ6Ci0gICAgICAgIHJldHVybiAic2VuZCI7CisgICAgICAgIHJldHVybiAic2VuZCJfczsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxBdG9tKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDg0
NGNmNjA1MjFmYjY0MTU0YzVjZjk1ZTBjNTU0OTgzN2M0ZmJlMmEuLjdjMjJkZDU3MWY2YmMzMmIy
M2ZiYmI1Y2IwMTlmZmI5Yzc3MzFjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGly
ZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcjo6Y3JlYXRlQmFzaWNEb2N1bWVudCgpCiAKICAgICBib2R5RWxlbWVudC0+
YXBwZW5kQ2hpbGQoKm1fdGFibGVFbGVtZW50KTsKIAotICAgIGRvY3VtZW50LnByb2Nlc3NWaWV3
cG9ydCgid2lkdGg9ZGV2aWNlLXdpZHRoIiwgVmlld3BvcnRBcmd1bWVudHM6OlZpZXdwb3J0TWV0
YSk7CisgICAgZG9jdW1lbnQucHJvY2Vzc1ZpZXdwb3J0KCJ3aWR0aD1kZXZpY2Utd2lkdGgiX3Ms
IFZpZXdwb3J0QXJndW1lbnRzOjpWaWV3cG9ydE1ldGEpOwogfQogCiB2b2lkIEZUUERpcmVjdG9y
eURvY3VtZW50UGFyc2VyOjphcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYgaW5wdXRTb3VyY2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDIyZmM5OTU5
YTcyZjIxMTBlZmIxYTU5OTUxYzA4YWFiNjc1MTk1YmUuLmM5OWU5NzY2YjQ4Mjk5Zjk0NTFmNDM4
YjQ1MzBkZmQ1NThhODUwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1l
bnQuY3BwCkBAIC01ODIsNyArNTgyLDcgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxl
Q2xpY2soRXZlbnQmIGV2ZW50KQogICAgICAgICBpZiAoaXNTYW1lT3JpZ2luKQogICAgICAgICAg
ICAgZG93bmxvYWRBdHRyaWJ1dGUgPSBSZXNvdXJjZVJlc3BvbnNlOjpzYW5pdGl6ZVN1Z2dlc3Rl
ZEZpbGVuYW1lKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZG93bmxvYWRBdHRyKSk7
CiAgICAgICAgIGVsc2UgaWYgKGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZG93
bmxvYWRBdHRyKSkKLSAgICAgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIlRoZSBkb3dubG9h
ZCBhdHRyaWJ1dGUgb24gYW5jaG9yIHdhcyBpZ25vcmVkIGJlY2F1c2UgaXRzIGhyZWYgVVJMIGhh
cyBhIGRpZmZlcmVudCBzZWN1cml0eSBvcmlnaW4uIik7CisgICAgICAgICAgICBkb2N1bWVudCgp
LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsICJUaGUgZG93bmxvYWQgYXR0cmlidXRlIG9uIGFuY2hvciB3YXMgaWdub3JlZCBi
ZWNhdXNlIGl0cyBocmVmIFVSTCBoYXMgYSBkaWZmZXJlbnQgc2VjdXJpdHkgb3JpZ2luLiJfcyk7
CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
QmFzZS5jcHAKaW5kZXggN2M1NzQxNTdhMTg1NWQ5OTU2NjBjYmFhNGI4NmQ1YWNmOGEyM2IwYS4u
MzQ2MjZiMDJhYzUzNDJkOGYxY2U4NWZlZjAyNWI3YjY4N2NiZmE3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2
b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9tUwogICAgICAgICAgICAgaWYgKCFzcmNWYWx1ZS5pc051bGwo
KSkKICAgICAgICAgICAgICAgICBzZXRMb2NhdGlvbihzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoc3JjVmFsdWUpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzZXRMb2Nh
dGlvbigiYWJvdXQ6c3JjZG9jIik7CisgICAgICAgICAgICBzZXRMb2NhdGlvbigiYWJvdXQ6c3Jj
ZG9jIl9zKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gc3JjQXR0ciAmJiAhaGFzQXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNkb2NBdHRyKSkKICAgICAgICAgc2V0TG9jYXRpb24o
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHZhbHVlKSk7CiAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNzk4ZmU4NmJjNGYzMjAy
NjcxY2QyZDcxNDY2MDAwYjZlYmFiYjZiZi4uZGZmNDZhM2YxMjYwMTc1YzhkM2FmNDU5ODg4NjVh
MDFkY2UzNDRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBA
IC0yMTIsNyArMjEyLDcgQEAgSW1hZ2VDYW5kaWRhdGUgSFRNTEltYWdlRWxlbWVudDo6YmVzdEZp
dFNvdXJjZUZyb21QaWN0dXJlRWxlbWVudCgpCiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHIg
ZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgICAg
TWVkaWFRdWVyeUV2YWx1YXRvciBldmFsdWF0b3IgeyBkb2N1bWVudCgpLnByaW50aW5nKCkgPyAi
cHJpbnQiIDogInNjcmVlbiIsIGRvY3VtZW50KCksIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50
RWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgpIDogbnVsbHB0ciB9OworICAgICAgICBNZWRpYVF1ZXJ5
RXZhbHVhdG9yIGV2YWx1YXRvciB7IGRvY3VtZW50KCkucHJpbnRpbmcoKSA/ICJwcmludCJfcyA6
ICJzY3JlZW4iX3MsIGRvY3VtZW50KCksIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVu
dC0+Y29tcHV0ZWRTdHlsZSgpIDogbnVsbHB0ciB9OwogICAgICAgICBhdXRvKiBxdWVyaWVzID0g
c291cmNlLnBhcnNlZE1lZGlhQXR0cmlidXRlKGRvY3VtZW50KCkpOwogICAgICAgICBMT0coTWVk
aWFRdWVyaWVzLCAiSFRNTEltYWdlRWxlbWVudCAlcCBiZXN0Rml0U291cmNlRnJvbVBpY3R1cmVF
bGVtZW50IGV2YWx1YXRpbmcgbWVkaWEgcXVlcmllcyIsIHRoaXMpOwogCkBAIC0yMzYsNyArMjM2
LDcgQEAgSW1hZ2VDYW5kaWRhdGUgSFRNTEltYWdlRWxlbWVudDo6YmVzdEZpdFNvdXJjZUZyb21Q
aWN0dXJlRWxlbWVudCgpCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmV2YWx1YXRlRHluYW1pY01l
ZGlhUXVlcnlEZXBlbmRlbmNpZXMoKQogewogICAgIFJlZlB0ciBkb2N1bWVudEVsZW1lbnQgPSBk
b2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpOwotICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgZXZh
bHVhdG9yIHsgZG9jdW1lbnQoKS5wcmludGluZygpID8gInByaW50IiA6ICJzY3JlZW4iLCBkb2N1
bWVudCgpLCBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPmNvbXB1dGVkU3R5bGUo
KSA6IG51bGxwdHIgfTsKKyAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIGV2YWx1YXRvciB7IGRvY3Vt
ZW50KCkucHJpbnRpbmcoKSA/ICJwcmludCJfcyA6ICJzY3JlZW4iX3MsIGRvY3VtZW50KCksIGRv
Y3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgpIDogbnVsbHB0
ciB9OwogCiAgICAgaWYgKCFldmFsdWF0b3IuZXZhbHVhdGVGb3JDaGFuZ2VzKG1fbWVkaWFRdWVy
eUR5bmFtaWNSZXN1bHRzKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKaW5kZXggOWEwODc0MWIxYzQwZGE2OThmYTY4YzhhNzMwODM4NmQ4
NTVkMjg0ZC4uOWZlZmJhYmQ2MWEzNjM5N2I1ZjdiNWNlZmQ3MjIxMzBmYjU5OTE5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMjk0LDEyICsxMjk0LDEy
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxJbnB1dEVsZW1lbnQ6OnNob3dQaWNrZXIoKQogICAg
IGlmICghbV9pbnB1dFR5cGUtPmFsbG93c1Nob3dQaWNrZXJBY3Jvc3NGcmFtZXMoKSkgewogICAg
ICAgICBGcmFtZSYgdG9wRnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRvcCgpOwogICAgICAgICBpZiAo
IWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmlzU2FtZU9yaWdpbkFzKHRvcEZy
YW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQotICAgICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJJbnB1dCBzaG93UGlja2VyKCkgY2FsbGVkIGZyb20g
Y3Jvc3Mtb3JpZ2luIGlmcmFtZS4iIH07CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
U2VjdXJpdHlFcnJvciwgIklucHV0IHNob3dQaWNrZXIoKSBjYWxsZWQgZnJvbSBjcm9zcy1vcmln
aW4gaWZyYW1lLiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8qIHdpbmRvdyA9IGZyYW1lLT53aW5k
b3coKTsKICAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5oYXNUcmFuc2llbnRBY3RpdmF0aW9u
KCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RBbGxvd2VkRXJyb3IsICJJbnB1dCBz
aG93UGlja2VyKCkgcmVxdWlyZXMgYSB1c2VyIGdlc3R1cmUuIiB9OworICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90QWxsb3dlZEVycm9yLCAiSW5wdXQgc2hvd1BpY2tlcigpIHJlcXVpcmVz
IGEgdXNlciBnZXN0dXJlLiJfcyB9OwogCiAgICAgbV9pbnB1dFR5cGUtPnNob3dQaWNrZXIoKTsK
ICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggZDM3MzJiODE4Y2IyNjFlMjVkY2EzMjdjMzA5OTBiNmU0Nzg3ZGQ1Ni4uMmYyZTQwNDUz
NDUyMTcyYTEyMTZkMDAwYzJiYjZhY2NlM2MwZjU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zNjgyLDcgKzM2ODIsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnBsYXkoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIAogICAgIGlm
IChtX2Vycm9yICYmIG1fZXJyb3ItPmNvZGUoKSA9PSBNZWRpYUVycm9yOjpNRURJQV9FUlJfU1JD
X05PVF9TVVBQT1JURUQpIHsKICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJyZWpl
Y3RpbmcgcHJvbWlzZSBiZWNhdXNlIG9mIGVycm9yIik7Ci0gICAgICAgIHByb21pc2UucmVqZWN0
KE5vdFN1cHBvcnRlZEVycm9yLCAiVGhlIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiIpOwor
ICAgICAgICBwcm9taXNlLnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvciwgIlRoZSBvcGVyYXRpb24g
aXMgbm90IHN1cHBvcnRlZC4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00ODk0
LDcgKzQ4OTQsNyBAQCBVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxk
KENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrZQogICAgICAgICAgICAgICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIsICInbWVkaWEnIGlzICIsIHNvdXJjZS0+YXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihtZWRpYUF0dHIpKTsKICAgICAgICAgICAgIGF1dG8qIHJlbmRl
cmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgIExPRyhNZWRpYVF1ZXJpZXMsICJI
VE1MTWVkaWFFbGVtZW50ICVwIHNlbGVjdE5leHRTb3VyY2VDaGlsZCBldmFsdWF0aW5nIG1lZGlh
IHF1ZXJpZXMiLCB0aGlzKTsKLSAgICAgICAgICAgIGlmICghTWVkaWFRdWVyeUV2YWx1YXRvciB7
ICJzY3JlZW4iLCBkb2N1bWVudCgpLCByZW5kZXJlciA/ICZyZW5kZXJlci0+c3R5bGUoKSA6IG51
bGxwdHIgfS5ldmFsdWF0ZSgqbWVkaWEpKQorICAgICAgICAgICAgaWYgKCFNZWRpYVF1ZXJ5RXZh
bHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQoKSwgcmVuZGVyZXIgPyAmcmVuZGVyZXItPnN0
eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUoKm1lZGlhKSkKICAgICAgICAgICAgICAgICBnb3Rv
IENoZWNrQWdhaW47CiAgICAgICAgIH0KIApAQCAtNzE1OCw3ICs3MTU4LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp1cGRhdGVTbGVlcERpc2FibGluZygpCiAgICAgZWxzZSBpZiAoc2hvdWxk
RGlzYWJsZVNsZWVwICE9IFNsZWVwVHlwZTo6Tm9uZSkgewogICAgICAgICBhdXRvIHR5cGUgPSBz
aG91bGREaXNhYmxlU2xlZXAgPT0gU2xlZXBUeXBlOjpEaXNwbGF5ID8gUEFMOjpTbGVlcERpc2Fi
bGVyOjpUeXBlOjpEaXNwbGF5IDogUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlOjpTeXN0ZW07CiAg
ICAgICAgIGlmICghbV9zbGVlcERpc2FibGVyIHx8IG1fc2xlZXBEaXNhYmxlci0+dHlwZSgpICE9
IHR5cGUpCi0gICAgICAgICAgICBtX3NsZWVwRGlzYWJsZXIgPSBtYWtlVW5pcXVlPFNsZWVwRGlz
YWJsZXI+KCJjb20uYXBwbGUuV2ViQ29yZTogSFRNTE1lZGlhRWxlbWVudCBwbGF5YmFjayIsIHR5
cGUpOworICAgICAgICAgICAgbV9zbGVlcERpc2FibGVyID0gbWFrZVVuaXF1ZTxTbGVlcERpc2Fi
bGVyPigiY29tLmFwcGxlLldlYkNvcmU6IEhUTUxNZWRpYUVsZW1lbnQgcGxheWJhY2siX3MsIHR5
cGUpOwogICAgIH0KIAogICAgIGlmIChtX3BsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZGMxYjg3M2U5NzI4ODczM2E4ZjY1NWQ3YjVjMTJkODlk
NjljZGUyMi4uMzczZDQzNTViNjI0ZmU3OGZhMzE1OTM5MzcwZmU5YjNkNzg4YTMwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTE4Miw3ICsxODIsNyBA
QCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKFZlY3RvcjxTdHJp
bmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8UwogICAgIC8vIGVsc2Ugb3VyIEphdmEgcGx1Z2luIHdp
bGwgbWlzaW50ZXJwcmV0IGl0LiBbNDAwNDUzMV0KICAgICBTdHJpbmcgY29kZWJhc2U7CiAgICAg
aWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1JTUVUeXBlKHNlcnZpY2VUeXBlKSkg
ewotICAgICAgICBjb2RlYmFzZSA9ICJjb2RlYmFzZSI7CisgICAgICAgIGNvZGViYXNlID0gImNv
ZGViYXNlIl9zOwogICAgICAgICB1bmlxdWVQYXJhbU5hbWVzLmFkZChjb2RlYmFzZS5pbXBsKCkp
OyAvLyBwcmV0ZW5kIHdlIGZvdW5kIGl0IGluIGEgUEFSQU0gYWxyZWFkeQogICAgIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggNTliZmM2ZTBmMWU1OTA0M2RjYzVi
YmRhMmQyMmFhZTM2NWE2MTMxNC4uYWNjZWFhNTNiY2JjZjM4MzdiZDRiOTkyZDZlMmFhNTQ3OTQy
OTA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTEyMiw3ICsxMjIsNyBA
QCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgLy8gMS4gSWYgZWl0aGVyIHRoZSBzdyBvciBz
aCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCBidXQgemVybywgcmV0dXJuIGEgcHJvbWlzZQogICAg
IC8vICAgIHJlamVjdGVkIHdpdGggYW4gIlJhbmdlRXJyb3IiIERPTUV4Y2VwdGlvbiBhbmQgYWJv
cnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKCFzdyB8fCAhc2gpIHsKLSAgICAgICAgcHJvbWlzZS5y
ZWplY3QoUmFuZ2VFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgd2l0aCBhIHdpZHRo
IG9yIGhlaWdodCBvZiAwIik7CisgICAgICAgIHByb21pc2UucmVqZWN0KFJhbmdlRXJyb3IsICJD
YW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIHdpdGggYSB3aWR0aCBvciBoZWlnaHQgb2YgMCJfcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBzdGF0aWMgRXhj
ZXB0aW9uT3I8SW50UmVjdD4gY3JvcHBlZFNvdXJjZVJlY3RhbmdsZVdpdGhGb3JtYXR0aW5nKElu
dFNpemUgaW5wdXRTaQogICAgIC8vICAgIHRoYW4gb3IgZXF1YWwgdG8gMCwgdGhlbiByZXR1cm4g
YSBwcm9taXNlIHJlamVjdGVkIHdpdGggIkludmFsaWRTdGF0ZUVycm9yIgogICAgIC8vICAgIERP
TUV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKChvcHRpb25zLnJlc2l6
ZVdpZHRoICYmIG9wdGlvbnMucmVzaXplV2lkdGgudmFsdWUoKSA8PSAwKSB8fCAob3B0aW9ucy5y
ZXNpemVIZWlnaHQgJiYgb3B0aW9ucy5yZXNpemVIZWlnaHQudmFsdWUoKSA8PSAwKSkKLSAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiSW52YWxpZCByZXNpemUg
ZGltZW5zaW9ucyIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yLCAiSW52YWxpZCByZXNpemUgZGltZW5zaW9ucyJfcyB9OwogCiAgICAgLy8gMy4gSWYgc3gs
IHN5LCBzdyBhbmQgc2ggYXJlIHNwZWNpZmllZCwgbGV0IHNvdXJjZVJlY3RhbmdsZSBiZSBhIHJl
Y3RhbmdsZSB3aG9zZQogICAgIC8vICAgIGNvcm5lcnMgYXJlIHRoZSBmb3VyIHBvaW50cyAoc3gs
IHN5KSwgKHN4K3N3LCBzeSksKHN4K3N3LCBzeStzaCksIChzeCxzeStzaCkuCkBAIC0zMTQsNyAr
MzE0LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogCiAgICAgYXV0byogY2FjaGVkSW1hZ2Ug
PSBpbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCAh
aW1hZ2VFbGVtZW50LT5jb21wbGV0ZSgpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEludmFs
aWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCB0aGF0IGlzIG5vdCBjb21w
bGV0ZWx5IGF2YWlsYWJsZSIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVF
cnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgdGhhdCBpcyBub3QgY29tcGxldGVseSBh
dmFpbGFibGUiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMjUsNyArMzI1LDcg
QEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogCiAgICAgYXV0byBpbWFnZVNpemUgPSBjYWNoZWRJ
bWFnZS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50LT5yZW5kZXJlcigpLCAxLjBm
KTsKICAgICBpZiAoKCFpbWFnZVNpemUud2lkdGgoKSB8fCAhaW1hZ2VTaXplLmhlaWdodCgpKSAm
JiAoIW9wdGlvbnMucmVzaXplV2lkdGggfHwgIW9wdGlvbnMucmVzaXplSGVpZ2h0KSkgewotICAg
ICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1h
Z2VCaXRtYXAgZnJvbSBhIHNvdXJjZSB3aXRoIG5vIGludHJpbnNpYyBzaXplIHdpdGhvdXQgcHJv
dmlkaW5nIHJlc2l6ZSBkaW1lbnNpb25zIik7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFs
aWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGEgc291cmNlIHdp
dGggbm8gaW50cmluc2ljIHNpemUgd2l0aG91dCBwcm92aWRpbmcgcmVzaXplIGRpbWVuc2lvbnMi
X3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LAogICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgZm9yIHRoZSBpbWFnZS4K
IAogICAgIGlmICghcmVjdCAmJiAoIWltYWdlU2l6ZS53aWR0aCgpIHx8ICFpbWFnZVNpemUuaGVp
Z2h0KCkpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fu
bm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGEgc291cmNlIHdpdGggbm8gaW50cmluc2ljIHNp
emUgd2l0aG91dCBwcm92aWRpbmcgZGltZW5zaW9ucyIpOworICAgICAgICBwcm9taXNlLnJlamVj
dChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBhIHNv
dXJjZSB3aXRoIG5vIGludHJpbnNpYyBzaXplIHdpdGhvdXQgcHJvdmlkaW5nIGRpbWVuc2lvbnMi
X3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LAogCiAgICAgYXV0byBpbWFnZUZvclJlbmRlcmVyID0gY2FjaGVkSW1h
Z2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50LT5yZW5kZXJlcigpKTsKICAgICBpZiAo
IWltYWdlRm9yUmVuZGVyZXIpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRl
RXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gaW1hZ2UgdGhhdCBjYW4ndCBi
ZSByZW5kZXJlZCIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwg
IkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBpbWFnZSB0aGF0IGNhbid0IGJlIHJlbmRl
cmVkIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDIzLDcgKzQyMyw3IEBAIHZv
aWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICAvLyAgICBET01FeGNlcHRpb24gYW5kIGFib3J0IHRo
ZXNlIHN0ZXBzLgogICAgIGF1dG8gc2l6ZSA9IGNhbnZhcy5zaXplKCk7CiAgICAgaWYgKCFzaXpl
LndpZHRoKCkgfHwgIXNpemUuaGVpZ2h0KCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52
YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gYSBjYW52YXMg
dGhhdCBoYXMgemVybyB3aWR0aCBvciBoZWlnaHQiKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
SW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gYSBjYW52
YXMgdGhhdCBoYXMgemVybyB3aWR0aCBvciBoZWlnaHQiX3MpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC00MzgsNyArNDM4LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogCiAgICAg
YXV0byBpbWFnZUZvclJlbmRlciA9IGNhbnZhcy5jb3BpZWRJbWFnZSgpOwogICAgIGlmICghaW1h
Z2VGb3JSZW5kZXIpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3Is
ICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gY2FudmFzIHRoYXQgY2FuJ3QgYmUgcmVu
ZGVyZWQiKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5u
b3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gY2FudmFzIHRoYXQgY2FuJ3QgYmUgcmVuZGVyZWQi
X3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00ODMsMTQgKzQ4MywxNCBAQCB2b2lk
IEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgLy8gICAgb3IgcmV0dXJucyBiYWQsIHRoZW4gcmV0dXJu
IHAgcmVqZWN0ZWQgd2l0aCBhbiAiSW52YWxpZFN0YXRlRXJyb3IiCiAgICAgLy8gICAgRE9NRXhj
ZXB0aW9uLgogICAgIGlmICh2aWRlby0+cmVhZHlTdGF0ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6
OkhBVkVfTk9USElORyB8fCB2aWRlby0+cmVhZHlTdGF0ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6
OkhBVkVfTUVUQURBVEEpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJy
b3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGJlZm9yZSB0aGUgSFRNTFZpZGVvRWxlbWVu
dCBoYXMgZGF0YSIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwg
IkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgYmVmb3JlIHRoZSBIVE1MVmlkZW9FbGVtZW50IGhh
cyBkYXRhIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIDYuMS4gSWYgaW1h
Z2UncyBuZXR3b3JrU3RhdGUgYXR0cmlidXRlIGlzIE5FVFdPUktfRU1QVFksIHRoZW4gcmV0dXJu
IHAKICAgICAvLyAgICAgIHJlamVjdGVkIHdpdGggYW4gIkludmFsaWRTdGF0ZUVycm9yIiBET01F
eGNlcHRpb24uCiAgICAgaWYgKHZpZGVvLT5uZXR3b3JrU3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVt
ZW50OjpORVRXT1JLX0VNUFRZKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0
ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBiZWZvcmUgdGhlIEhUTUxWaWRlb0Vs
ZW1lbnQgaGFzIGRhdGEiKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJy
b3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGJlZm9yZSB0aGUgSFRNTFZpZGVvRWxlbWVu
dCBoYXMgZGF0YSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU1Niw3ICs1NTYs
NyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAjaWYgRU5BQkxFKENTU19UWVBFRF9PTSkKIHZv
aWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJl
ZlB0cjxDU1NTdHlsZUltYWdlVmFsdWU+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIHN0ZDo6b3B0
aW9uYWw8SW50UmVjdD4sIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKLSAgICBw
cm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCIpOworICAg
IHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zKTsK
IH0KICNlbmRpZgogCkBAIC01NjUsNyArNTY1LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRl
UHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAog
ICAgIC8vIDIuIElmIGltYWdlJ3MgW1tEZXRhY2hlZF1dIGludGVybmFsIHNsb3QgdmFsdWUgaXMg
dHJ1ZSwgcmV0dXJuIGEgcHJvbWlzZQogICAgIC8vICAgIHJlamVjdGVkIHdpdGggYW4gIkludmFs
aWRTdGF0ZUVycm9yIiBET01FeGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlm
IChleGlzdGluZ0ltYWdlQml0bWFwLT5pc0RldGFjaGVkKCkgfHwgIWV4aXN0aW5nSW1hZ2VCaXRt
YXAtPmJ1ZmZlcigpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9y
LCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGEgZGV0YWNoZWQgSW1hZ2VCaXRtYXAi
KTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3Jl
YXRlIEltYWdlQml0bWFwIGZyb20gYSBkZXRhY2hlZCBJbWFnZUJpdG1hcCJfcyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTcyMiw3ICs3MjIsNyBAQCBwcml2YXRlOgogICAgICAgICB9
KTsKIAogICAgICAgICBpZiAoIW1fYXJyYXlCdWZmZXJUb1Byb2Nlc3MpIHsKLSAgICAgICAgICAg
IG1fcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJBbiBlcnJvciBvY2N1cmVkIHJl
YWRpbmcgdGhlIEJsb2IgYXJndW1lbnQgdG8gY3JlYXRlSW1hZ2VCaXRtYXAiKTsKKyAgICAgICAg
ICAgIG1fcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJBbiBlcnJvciBvY2N1cmVk
IHJlYWRpbmcgdGhlIEJsb2IgYXJndW1lbnQgdG8gY3JlYXRlSW1hZ2VCaXRtYXAiX3MpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTc0MSw3ICs3NDEsNyBAQCBwcml2YXRl
Ogogdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWY8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZm
ZXIsIFN0cmluZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29u
c3QgVVJMJiBzb3VyY2VVUkwsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIHN0ZDo6b3B0
aW9uYWw8SW50UmVjdD4gcmVjdCwgUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKCFhcnJh
eUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRT
dGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBhbiBJbWFnZUJpdG1hcCBmcm9tIGFuIGVtcHR5IGJ1
ZmZlciIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5v
dCBjcmVhdGUgYW4gSW1hZ2VCaXRtYXAgZnJvbSBhbiBlbXB0eSBidWZmZXIiX3MpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC03NTAsNyArNzUwLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6
Y3JlYXRlRnJvbUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25D
b250ZXgKICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShvYnNlcnZlci5wdHIo
KSk7CiAgICAgYXV0byByZXN1bHQgPSBpbWFnZS0+c2V0RGF0YShzaGFyZWRCdWZmZXIuY29weVJl
ZigpLCB0cnVlKTsKICAgICBpZiAocmVzdWx0ICE9IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0
ZSB8fCBpbWFnZS0+aXNOdWxsKCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0
YXRlRXJyb3IsICJDYW5ub3QgZGVjb2RlIHRoZSBkYXRhIGluIHRoZSBhcmd1bWVudCB0byBjcmVh
dGVJbWFnZUJpdG1hcCIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJv
ciwgIkNhbm5vdCBkZWNvZGUgdGhlIGRhdGEgaW4gdGhlIGFyZ3VtZW50IHRvIGNyZWF0ZUltYWdl
Qml0bWFwIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzYzLDcgKzc2Myw3IEBA
IHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4CiAgICAgYXV0byBvdXRwdXRTaXplID0gb3V0cHV0U2l6
ZUZvclNvdXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUucmV0dXJuVmFsdWUoKSwgb3B0aW9u
cyk7CiAgICAgYXV0byBiaXRtYXBEYXRhID0gY3JlYXRlSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgb3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSwgaW1hZ2UtPmNvbG9y
U3BhY2UoKSk7CiAgICAgaWYgKCFiaXRtYXBEYXRhKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0
KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBhbiBpbWFnZSBidWZmZXIgZnJvbSB0
aGUgYXJndW1lbnQgdG8gY3JlYXRlSW1hZ2VCaXRtYXAiKTsKKyAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBmcm9t
IHRoZSBhcmd1bWVudCB0byBjcmVhdGVJbWFnZUJpdG1hcCJfcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTc5Miw3ICs3OTIsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9t
aXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAg
Ly8gNi4yLiBJZiBJc0RldGFjaGVkQnVmZmVyKGJ1ZmZlcikgaXMgdHJ1ZSwgdGhlbiByZXR1cm4g
cCByZWplY3RlZCB3aXRoIGFuCiAgICAgLy8gICAgICAiSW52YWxpZFN0YXRlRXJyb3IiIERPTUV4
Y2VwdGlvbi4KICAgICBpZiAoaW1hZ2VEYXRhLT5kYXRhKCkuaXNEZXRhY2hlZCgpKSB7Ci0gICAg
ICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiSW1hZ2VEYXRhJ3Mgdmlld2Vk
IGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZh
bGlkU3RhdGVFcnJvciwgIkltYWdlRGF0YSdzIHZpZXdlZCBidWZmZXIgaGFzIGJlZW4gZGV0YWNo
ZWQiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURv
Y3VtZW50LmNwcAppbmRleCA0ZDEwZmIwNTc3MjQ2Mjg1NzY4ODUwM2Q2NjQ3Njk3ZjBjYjA0YmEx
Li4yMDZjNjZiN2JhMTk3YmI2MzIzNDQ5NTE5NjEyYzZkNjk5NjNkMjBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIEltYWdlRG9j
dW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICBhdXRvIGJvZHkgPSBIVE1MQm9k
eUVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAgICAgYm9keS0+c2V0QXR0cmlidXRlKHN0eWxlQXR0
ciwgIm1hcmdpbjogMHB4Iik7CiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5
cGUoZG9jdW1lbnQoKS5sb2FkZXIoKS0+cmVzcG9uc2VNSU1FVHlwZSgpKSkKLSAgICAgICAgYm9k
eS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgIndo
aXRlIik7CisgICAgICAgIGJvZHktPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IsICJ3aGl0ZSJfcyk7CiAgICAgcm9vdEVsZW1lbnQtPmFwcGVuZENoaWxk
KGJvZHkpOwogICAgIAogICAgIGF1dG8gaW1hZ2VFbGVtZW50ID0gSW1hZ2VEb2N1bWVudEVsZW1l
bnQ6OmNyZWF0ZSgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RnJhZ21lbnRVUklQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50
VVJJUGFyc2VyLmNwcAppbmRleCA2NDRlZjdiNzUyNjc2YjU5M2VjOTc3ODc4ODFlZmI0ZmM3MTAx
M2I5Li4wNjVhNzBkZTJkYTM3Y2Y3M2U2MDUzZjk3MjVmMzgyOGI4MDIxMDIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKQEAgLTEzNCwxMSAr
MTM0LDExIEBAIHZvaWQgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VGcmFnbWVudHMoKQog
ICAgICAgICAvLyAgICAgbmFtZSBvciB2YWx1ZSBhcmUgbm90IHZhbGlkIFVURi04IHN0cmluZ3Ms
IHRoZW4gcmVtb3ZlIHRoZSBuYW1lLXZhbHVlIHBhaXIgZnJvbSB0aGUgbGlzdC4KICAgICAgICAg
Ym9vbCB2YWxpZFVURjggPSBmYWxzZTsKICAgICAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSAmJiAh
dmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBuYW1lID0gbmFtZS51dGY4KFN0cmljdENv
bnZlcnNpb24pLmRhdGEoKTsKKyAgICAgICAgICAgIG5hbWUgPSBTdHJpbmcgeyBuYW1lLnV0Zjgo
U3RyaWN0Q29udmVyc2lvbikuZGF0YSgpIH07CiAgICAgICAgICAgICB2YWxpZFVURjggPSAhbmFt
ZS5pc0VtcHR5KCk7CiAKICAgICAgICAgICAgIGlmICh2YWxpZFVURjgpIHsKLSAgICAgICAgICAg
ICAgICB2YWx1ZSA9IHZhbHVlLnV0ZjgoU3RyaWN0Q29udmVyc2lvbikuZGF0YSgpOworICAgICAg
ICAgICAgICAgIHZhbHVlID0gU3RyaW5nIHsgdmFsdWUudXRmOChTdHJpY3RDb252ZXJzaW9uKS5k
YXRhKCkgfTsKICAgICAgICAgICAgICAgICB2YWxpZFVURjggPSAhdmFsdWUuaXNFbXB0eSgpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1BERkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCmlu
ZGV4IDU5NmE2NTE4M2YxZmY3Nzc1ODZhNmE2NjdjMzU0ZWY0ZTdiNGI4ZTAuLjRlMTk0NjE2ZWNl
MjUzYzk0MTI0Y2ZiZTcyNDU4YWJiYmQ4NTNiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUERGRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1l
bnQuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBQREZEb2N1bWVudDo6c2VuZFBERkFycmF5
QnVmZmVyKCkKIAogICAgIGF1dG8qIGZyYW1lID0gbV9pZnJhbWUtPmNvbnRlbnRGcmFtZSgpOwog
ICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
NjY4IC0gVXNlIHBvc3RNZXNzYWdlCi0gICAgYXV0byBvcGVuRnVuY3Rpb24gPSBmcmFtZS0+c2Ny
aXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKCJQREZKU0NvbnRlbnRTY3JpcHQu
b3BlbiIpLmdldE9iamVjdCgpOworICAgIGF1dG8gb3BlbkZ1bmN0aW9uID0gZnJhbWUtPnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbigiUERGSlNDb250ZW50U2NyaXB0Lm9w
ZW4iX3MpLmdldE9iamVjdCgpOwogCiAgICAgYXV0byBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9i
YWxPYmplY3QoKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcAppbmRl
eCA4NzUzN2UyYmI5M2U0YjY5OTk3NzAwYWZmYzE4N2Y2Y2Y1YmJlYWI1Li40ZTY4ZWQ1MTNjYTM4
MTdhNzEwNjc3NzYyNzM3YmFiM2Q2MDU3NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCkBAIC0zOCw3ICszOCw3IEBAIEFO
R0xFSW5zdGFuY2VkQXJyYXlzOjpBTkdMRUluc3RhbmNlZEFycmF5cyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKICNp
ZiBVU0UoQU5HTEUpCi0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRl
bnNpb25FbmFibGVkKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CisgICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9pbnN0
YW5jZWRfYXJyYXlzIl9zKTsKICNlbmRpZgogfQogCkBAIC01Miw3ICs1Miw3IEBAIFdlYkdMRXh0
ZW5zaW9uOjpFeHRlbnNpb25OYW1lIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpnZXROYW1lKCkgY29u
c3QKIGJvb2wgQU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRH
TCYgY29udGV4dCkKIHsKICNpZiBVU0UoQU5HTEUpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKQotICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV9p
bnN0YW5jZWRfYXJyYXlzIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24o
IkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
Y29udGV4dCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAppbmRleCA0NmM5NjBm
MTkxNjRhNzVmNjg3Y2E5MjZkNGY1ZjYxMTgzMDI1YWJiLi4zNGFiMTBmN2U0YWNiMWFlNTM4ZDYw
NzdmMjQ1OWRjZTFhOTFlOTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcApAQCAtMzcsNyArMzcsNyBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyk7CiBF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjpFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyIpOworICAgIGNvbnRleHQu
Z3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fcmd0YyJfcyk7CiAKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQpOwog
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA2ZDBhODcy
ODVhODA2MWM1MGU2NjkxNmQ1MjE0NGJlYzVmNDQ2ZWJlLi4yNDIyOGQzYmU2MDc1ZTdkZjU4MTA4
OWIxMmYzMTAyOWYxMTAwYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjM5LDEwICsyMzksMTAgQEAgdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplVmVydGV4QXJyYXlPYmplY3RzKCkK
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVNoYWRlckV4dGVuc2lvbnMo
KQogewogICAgIC8vIEZJWE1FOiB0aGVzZSBhcmUgaW4gdGhlIFdlYkdMIDIuMCBjb3JlIEFQSSBh
bmQgc2hvdWxkIGJlIHJlbW92ZWQuCi0gICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25FbmFi
bGVkKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKLSAgICBtX2NvbnRleHQtPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKLSAgICBtX2NvbnRleHQt
PmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKLSAg
ICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mcmFnX2RlcHRoIik7
CisgICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfc3RhbmRhcmRf
ZGVyaXZhdGl2ZXMiX3MpOworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfRVhUX2RyYXdfYnVmZmVycyJfcyk7CisgICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25F
bmFibGVkKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKKyAgICBtX2NvbnRleHQtPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mcmFnX2RlcHRoIl9zKTsKIH0KIAogYm9vbCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJ1ZmZlclRhcmdldChjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAKaW5kZXggYmMzZWJl
MmQ1ZTc1M2IxODljYTU3MmE1NGE5MWQ2MmY5MTlkYTJhOC4uMTdhN2IyNGRmZjEwNjZjMzk2MWM5
OWY4M2I4NDExMjVlYjJkZjNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMpOwog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIik7CisgICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTURfY29tcHJl
c3NlZF9BVENfdGV4dHVyZSJfcyk7CiAKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsKICAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01Q
UkVTU0VEX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCk7CkBAIC01NCw3ICs1NCw3IEBAIFdl
YkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6Omdl
dE5hbWUoKSBjb25zdAogCiBib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKKyAgICByZXR1
cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1
cmUiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCmluZGV4
IDkxNWRiMmFlM2U0M2ZkYjc5NmYwNjUxMGQ0MzcwNzk2NmI5ZjM0OWEuLjE1NjVjMTEyN2I1YjMw
OTIyMWIwNDQ1N2NiMGJlZGQ3ZDk3OTBmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCkBAIC0zOCw3ICsz
OCw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJl
RVRDKTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVF
VEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5z
aW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CisgICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9B
TkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKIAogICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUjExX0VBQyk7
CiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9TSUdORURfUjExX0VBQyk7CkBAIC02MSw3ICs2MSw3IEBAIFdlYkdMRXh0
ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OmdldE5hbWUo
KSBjb25zdAogCiBib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZChHcmFw
aGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfQU5HTEVfY29tcHJlc3NlZF90ZXh0dXJlX2V0YyIpOworICAgIHJldHVybiBj
b250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRj
Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwCmluZGV4
IGFkMWJmMmZjOTgyNDhiZjE3NzBhM2I2MTkwYjE3MDkyZjYwODA5YjcuLjhlMWY1ZWJkNjdkOWE4
MWM2OGFlNGRmZTk3MzVlOWYyNjgzZTA5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMxKTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDMShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xF
eHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJl
Iik7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFi
bGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSJfcyk7CiAKICAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpFVEMxX1JH
QjhfT0VTKTsKIH0KQEAgLTUyLDcgKzUyLDcgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5h
bWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OmdldE5hbWUoKSBjb25zdAogCiBib29sIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNv
bnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19j
b21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9y
dHNFeHRlbnNpb24oIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIl9zKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKaW5kZXggNWE4NDk5
ZTllNGNmY2I5MTg5YWNmNGY4YmY3NzBjOGU5NTRiNDRlNy4uNDdhNGI0ZWVkYzc3YTIyYmViN2Yy
OTc3MTc4YjU2NDIwZWJkZjAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCkBAIC0zOSw3ICszOSw3
IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZS
VEMpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0
ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1
cmVFeHRlbnNpb25FbmFibGVkKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOwor
ICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMiX3MpOwogCiAgICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0Jf
UFZSVENfNEJQUFYxX0lNRyk7CiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyk7CkBA
IC01Niw3ICs1Niw3IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVQVlJUQzo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJvb2wgV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0g
ICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR190ZXh0dXJlX2NvbXBy
ZXNzaW9uX3B2cnRjIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdM
X0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIl9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCmluZGV4IGZhNzA4MTFlNzUzNzBlNzI4ZGU0N2NkYjEw
YTkxODZhM2E1MDIwOWMuLjJmOThiYjIxZjI1NDRiMzdlYzE5OTQ4YzVkZTNhNmY0YjI5NzhmNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQy5jcHAKQEAgLTQwLDkgKzQwLDkgQEAgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiAgICAgYXV0byogZ2NnbCA9
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKLSAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25F
bmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Ci0gICAgZ2NnbC0+ZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzIik7
Ci0gICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfdGV4dHVyZV9jb21w
cmVzc2lvbl9keHQ1Iik7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSJfcyk7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZCgiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzIl9zKTsKKyAgICBnY2ds
LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4
dDUiX3MpOwogCiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCk7CiAgICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUMV9FWFQpOwpAQCAtNjAsMTIgKzYwLDEyIEBAIFdlYkdMRXh0ZW5zaW9uOjpF
eHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpnZXROYW1lKCkgY29uc3QK
IGJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRl
eHRHTCYgY29udGV4dCkKIHsKICNpZiBVU0UoQU5HTEUpCi0gICAgcmV0dXJuIGNvbnRleHQuc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQotICAgICAg
ICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNz
aW9uX2R4dDMiKQotICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdM
RV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0
c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSJfcykKKyAgICAgICAg
JiYgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQzIl9zKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdM
RV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiX3MpOwogI2Vsc2UKLSAgICByZXR1cm4gY29udGV4
dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpCi0g
ICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2R4dDEiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyJfcykKKyAgICAgICAgfHwgY29udGV4dC5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSJfcyk7CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAKaW5kZXggZjY1ZjQyYWUyMmFjNzMxMmUx
Mjg0ZGYxY2MyMWY0ZTY2MDFmNjYzOS4uNDU2YzIwNGFiZWMyNGY0NzdhMDBhNGJlM2M1NGFmODY0
Njg0YjQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0Ip
OwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQ3NSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdM
RXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5l
bnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3Ny
Z2IiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYiJfcyk7CiAgICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOwogICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDFfRVhUKTsKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVCk7CkBAIC01NCw3
ICs1NCw3IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDc1JHQjo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJvb2wgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0g
ICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGNfc3JnYiIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IiX3MpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTERlYnVnU2hhZGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERl
YnVnU2hhZGVycy5jcHAKaW5kZXggYTY5ZGEyOTAzODQxNjE2MDg3OWQ3OGI4YmZjYWUwN2QwZDQ1
NzVhOS4uM2M5NGUyOTU3Y2M1OWRjMzAxYzc3MjM5OWFjOTJiMDAxZjcwYjk3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcApAQCAtNDAs
NyArNDAsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xEZWJ1Z1NoYWRlcnMp
OwogV2ViR0xEZWJ1Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJzKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAg
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIik7CisgICAgY29udGV4dC5ncmFwaGljc0Nv
bnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV90cmFuc2xhdGVkX3No
YWRlcl9zb3VyY2UiX3MpOwogfQogCiBXZWJHTERlYnVnU2hhZGVyczo6fldlYkdMRGVidWdTaGFk
ZXJzKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEZXB0aFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZXB0aFRleHR1cmUuY3BwCmluZGV4IDkxNTYzYmNhZTJmMTE4OTEyNGNmNWM4ZjM2ZmYzMmE5M2Y1
NTgwYTAuLmU4YTI4NDk5ZjI5ZGIyNzM3NDg0YjgwZmVmNmJjN2M4N2RjNmU5NDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKQEAgLTM5
LDggKzM5LDggQEAgV2ViR0xEZXB0aFRleHR1cmU6OldlYkdMRGVwdGhUZXh0dXJlKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0
KQogewogICAgIGF1dG8qIGdjZ2wgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7Ci0gICAg
Z2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2RlcHRoX3RleHR1cmUiKTsKLSAg
ICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOwor
ICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19kZXB0aF90ZXh0dXJlIl9z
KTsKKyAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfZGVwdGhfdGV4dHVy
ZSJfcyk7CiB9CiAKIFdlYkdMRGVwdGhUZXh0dXJlOjp+V2ViR0xEZXB0aFRleHR1cmUoKSA9IGRl
ZmF1bHQ7CkBAIC01Miw4ICs1Miw4IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdl
YkdMRGVwdGhUZXh0dXJlOjpnZXROYW1lKCkgY29uc3QKIAogYm9vbCBXZWJHTERlcHRoVGV4dHVy
ZTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBj
b250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0gICAgICAg
IHx8IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7Cisg
ICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19kZXB0aF90ZXh0dXJl
Il9zKQorICAgICAgICB8fCBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfZGVwdGhf
dGV4dHVyZSJfcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKaW5kZXggMDY3MGE0NzY0MmJm
YmZlY2JkZWY1NjM3OGEyYmViNWIxOGM5NWNiYy4uOWIxNGQ4ZjI4Y2I1ZDc1NGUyMTI2Nzc4NjZl
NmM2ODhkOTE5NWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
cmF3QnVmZmVycy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFdlYkdMRHJhd0J1ZmZlcnMpOwogV2ViR0xEcmF3QnVmZmVyczo6V2ViR0xEcmF3QnVmZmVy
cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNp
b24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZl
cnMiX3MpOwogfQogCiBXZWJHTERyYXdCdWZmZXJzOjp+V2ViR0xEcmF3QnVmZmVycygpID0gZGVm
YXVsdDsKQEAgLTUwLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2Vi
R0xEcmF3QnVmZmVyczo6Z2V0TmFtZSgpIGNvbnN0CiBib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnN1
cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogewogI2lmIFVTRShB
TkdMRSkKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfRVhUX2RyYXdfYnVmZmVycyIpOworICAgIHJldHVybiBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfZHJhd19idWZmZXJzIl9z
KTsKICNlbHNlCi0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+c3VwcG9y
dHNFeHRlbnNpb24oIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKQorICAgIHJldHVybiBjb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfZHJhd19idWZmZXJz
Il9zKQogICAgICAgICAmJiBzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhjb250ZXh0KTsKICNl
bmRpZgogfQpAQCAtMTA2LDEwICsxMDYsMTAgQEAgYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzYXRp
c2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiB3ZWIKICAg
ICBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVS
LCBmYm8pOwogCiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBidWZmZXJbNF0gPSB7IDAsIDAsIDAs
IDAgfTsgLy8gdGV4dHVyZXMgYXJlIHJlcXVpcmVkIHRvIGJlIGluaXRpYWxpemVkIGZvciBvdGhl
ciBwb3J0cy4KLSAgICBib29sIHN1cHBvcnRzRGVwdGggPSBjb250ZXh0LT5zdXBwb3J0c0V4dGVu
c2lvbigiR0xfT0VTX2RlcHRoX3RleHR1cmUiKQotICAgICAgICB8fCBjb250ZXh0LT5zdXBwb3J0
c0V4dGVuc2lvbigiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsKLSAgICBib29sIHN1cHBvcnRzRGVw
dGhTdGVuY2lsID0gKGNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfcGFja2VkX2Rl
cHRoX3N0ZW5jaWwiKQotICAgICAgICB8fCBjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
T0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpOworICAgIGJvb2wgc3VwcG9ydHNEZXB0aCA9IGNv
bnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSJfcykKKyAgICAg
ICAgfHwgY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9kZXB0aF90ZXh0dXJlIl9z
KTsKKyAgICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpCisgICAgICAgIHx8IGNvbnRl
eHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpKTsK
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IGRlcHRoU3RlbmNpbCA9IDA7CiAgICAgaWYgKHN1cHBvcnRz
RGVwdGhTdGVuY2lsKSB7CiAgICAgICAgIGRlcHRoU3RlbmNpbCA9IGNvbnRleHQtPmNyZWF0ZVRl
eHR1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggZTY5Zjk2MWM3Y2IyYTFiZmMyM2RjY2I5ODRj
MzMzZGViNGExNGM0My4uOGFjZmMwNzNjZmY1NDY5OWIyNzU4Y2M1N2NjODU0MWI1NmI2YTEwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTg1NSw3ICs4NTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
KENhbgogICAgICAgICAvLyBwYXJ0aWN1bGFyLCBpZiBXZWJHTCBjb250ZXh0cyB3ZXJlIGxvc3Qg
b25lIG9yIG1vcmUgdGltZXMgdmlhIHRoZSBHTF9BUkJfcm9idXN0bmVzcyBleHRlbnNpb24uCiAg
ICAgICAgIGlmICghZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFsbG93V2ViR0woZnJhbWUtPnNl
dHRpbmdzKCkud2ViR0xFbmFibGVkKCkpKSB7CiAgICAgICAgICAgICBjYW52YXNFbGVtZW50LT5k
aXNwYXRjaEV2ZW50KFdlYkdMQ29udGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmds
Y29udGV4dGNyZWF0aW9uZXJyb3JFdmVudCwKLSAgICAgICAgICAgICAgICBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCAiV2ViIHBhZ2Ugd2FzIG5vdCBhbGxv
d2VkIHRvIGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIikpOworICAgICAgICAgICAgICAgIEV2ZW50
OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsICJXZWIgcGFnZSB3YXMg
bm90IGFsbG93ZWQgdG8gY3JlYXRlIGEgV2ViR0wgY29udGV4dC4iX3MpKTsKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKQEAgLTkyNCw3ICs5MjQsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Y3JlYXRlKENhbgogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBpZiAoY2FudmFz
RWxlbWVudCkgewogICAgICAgICAgICAgY2FudmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJH
TENvbnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVy
cm9yRXZlbnQsCi0gICAgICAgICAgICAgICAgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6OlllcywgIkNvdWxkIG5vdCBjcmVhdGUgYSBXZWJHTCBjb250ZXh0LiIpKTsK
KyAgICAgICAgICAgICAgICBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6WWVzLCAiQ291bGQgbm90IGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIl9zKSk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTE0MywxNyArMTE0MywxNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3MoKQogICAgIC8vIHR1
cm5pbmcgaXQgb2ZmIGNhdXNlcyBwcm9ibGVtcy4KICAgICBtX2lzR0xFUzJDb21wbGlhbnQgPSBt
X2NvbnRleHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKICAgICBpZiAobV9pc0dMRVMyQ29tcGxpYW50
KSB7Ci0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5pc0V4dGVuc2lv
bkVuYWJsZWQoIkdMX09FU190ZXh0dXJlX25wb3QiKTsKLSAgICAgICAgbV9pc0RlcHRoU3RlbmNp
bFN1cHBvcnRlZCA9IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKSB8fCBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5H
TEVfZGVwdGhfdGV4dHVyZSIpOworICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29u
dGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Il9zKTsKKyAgICAg
ICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFi
bGVkKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpIHx8IG1fY29udGV4dC0+aXNFeHRl
bnNpb25FbmFibGVkKCJHTF9BTkdMRV9kZXB0aF90ZXh0dXJlIl9zKTsKICAgICB9IGVsc2Ugewog
I2lmIFVTRShBTkdMRSkKICAgICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9IHRydWU7CiAjZWxz
ZQotICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+aXNFeHRlbnNpb25F
bmFibGVkKCJHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdvIik7CisgICAgICAgIG1faXNH
TEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FSQl90
ZXh0dXJlX25vbl9wb3dlcl9vZl90d28iX3MpOwogI2VuZGlmCi0gICAgICAgIG1faXNEZXB0aFN0
ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3Bh
Y2tlZF9kZXB0aF9zdGVuY2lsIikgfHwgbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdM
X0FOR0xFX2RlcHRoX3RleHR1cmUiKTsKKyAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRl
ZCA9IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0
ZW5jaWwiX3MpIHx8IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9kZXB0
aF90ZXh0dXJlIl9zKTsKICAgICB9Ci0gICAgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBt
X2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3JvYnVzdG5lc3MiKTsKKyAgICBt
X2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCA9IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVk
KCJHTF9FWFRfcm9idXN0bmVzcyJfcyk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR0NHTGVudW0gZm9ybWF0KQpAQCAtMzA2
Nyw3ICszMDY3LDcgQEAgUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0QWN0aXZlVW5pZm9ybShXZWJHTFByb2dyYW0KICAgICAvLyBGSVhNRTogRG8g
d2Ugc3RpbGwgbmVlZCB0aGlzIGZvciB0aGUgQU5HTEUgYmFja2VuZD8KICAgICBpZiAoIWlzR0xF
UzJDb21wbGlhbnQoKSkKICAgICAgICAgaWYgKGluZm8uc2l6ZSA+IDEgJiYgIWluZm8ubmFtZS5l
bmRzV2l0aCgiWzBdIikpCi0gICAgICAgICAgICBpbmZvLm5hbWUuYXBwZW5kKCJbMF0iKTsKKyAg
ICAgICAgICAgIGluZm8ubmFtZS5hcHBlbmQoIlswXSJfcyk7CiAKICAgICBMT0coV2ViR0wsICJS
ZXR1cm5pbmcgYWN0aXZlIHVuaWZvcm0gJWQ6ICVzIiwgaW5kZXgsIGluZm8ubmFtZS51dGY4KCku
ZGF0YSgpKTsKIApAQCAtNTYxNywxNyArNTYxNywxNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVuY1BhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25O
YQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZEV4dGVuc2lvblN1cHBvcnRl
ZEZvcm1hdHNBbmRUeXBlcygpCiB7Ci0gICAgaWYgKCFtX2FyZU9FU1RleHR1cmVGbG9hdEZvcm1h
dHNBbmRUeXBlc0FkZGVkICYmIGV4dGVuc2lvbklzRW5hYmxlZCgiT0VTX3RleHR1cmVfZmxvYXQi
KSkgeworICAgIGlmICghbV9hcmVPRVNUZXh0dXJlRmxvYXRGb3JtYXRzQW5kVHlwZXNBZGRlZCAm
JiBleHRlbnNpb25Jc0VuYWJsZWQoIk9FU190ZXh0dXJlX2Zsb2F0Il9zKSkgewogICAgICAgICBB
RERfVkFMVUVTX1RPX1NFVChtX3N1cHBvcnRlZFRleEltYWdlU291cmNlVHlwZXMsIFN1cHBvcnRl
ZFR5cGVzT0VTVGV4dHVyZUZsb2F0KTsKICAgICAgICAgbV9hcmVPRVNUZXh0dXJlRmxvYXRGb3Jt
YXRzQW5kVHlwZXNBZGRlZCA9IHRydWU7CiAgICAgfQogCi0gICAgaWYgKCFtX2FyZU9FU1RleHR1
cmVIYWxmRmxvYXRGb3JtYXRzQW5kVHlwZXNBZGRlZCAmJiBleHRlbnNpb25Jc0VuYWJsZWQoIk9F
U190ZXh0dXJlX2hhbGZfZmxvYXQiKSkgeworICAgIGlmICghbV9hcmVPRVNUZXh0dXJlSGFsZkZs
b2F0Rm9ybWF0c0FuZFR5cGVzQWRkZWQgJiYgZXh0ZW5zaW9uSXNFbmFibGVkKCJPRVNfdGV4dHVy
ZV9oYWxmX2Zsb2F0Il9zKSkgewogICAgICAgICBBRERfVkFMVUVTX1RPX1NFVChtX3N1cHBvcnRl
ZFRleEltYWdlU291cmNlVHlwZXMsIFN1cHBvcnRlZFR5cGVzT0VTVGV4dHVyZUhhbGZGbG9hdCk7
CiAgICAgICAgIG1fYXJlT0VTVGV4dHVyZUhhbGZGbG9hdEZvcm1hdHNBbmRUeXBlc0FkZGVkID0g
dHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoIW1fYXJlRVhUc1JHQkZvcm1hdHNBbmRUeXBlc0FkZGVk
ICYmIGV4dGVuc2lvbklzRW5hYmxlZCgiRVhUX3NSR0IiKSkgeworICAgIGlmICghbV9hcmVFWFRz
UkdCRm9ybWF0c0FuZFR5cGVzQWRkZWQgJiYgZXh0ZW5zaW9uSXNFbmFibGVkKCJFWFRfc1JHQiJf
cykpIHsKICAgICAgICAgQUREX1ZBTFVFU19UT19TRVQobV9zdXBwb3J0ZWRUZXhJbWFnZVNvdXJj
ZUludGVybmFsRm9ybWF0cywgU3VwcG9ydGVkSW50ZXJuYWxGb3JtYXRzRVhUc1JHQik7CiAgICAg
ICAgIEFERF9WQUxVRVNfVE9fU0VUKG1fc3VwcG9ydGVkVGV4SW1hZ2VTb3VyY2VGb3JtYXRzLCBT
dXBwb3J0ZWRGb3JtYXRzRVhUc1JHQik7CiAgICAgICAgIG1fYXJlRVhUc1JHQkZvcm1hdHNBbmRU
eXBlc0FkZGVkID0gdHJ1ZTsKQEAgLTY0NTIsNyArNjQ1Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6bG9zZUNvbnRleHRJbXBsKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
Okxvc3RDCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlm
IChtb2RlID09IFJlYWxMb3N0Q29udGV4dCkKLSAgICAgICAgcHJpbnRUb0NvbnNvbGUoTWVzc2Fn
ZUxldmVsOjpFcnJvciwgIldlYkdMOiBjb250ZXh0IGxvc3QuIik7CisgICAgICAgIHByaW50VG9D
b25zb2xlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJXZWJHTDogY29udGV4dCBsb3N0LiJfcyk7CiAK
ICAgICBtX2NvbnRleHRMb3N0U3RhdGUgPSBDb250ZXh0TG9zdFN0YXRlIHsgbW9kZSB9OwogICAg
IG1fY29udGV4dExvc3RTdGF0ZS0+ZXJyb3JzLmFkZChHcmFwaGljc0NvbnRleHRHTDo6Q09OVEVY
VF9MT1NUX1dFQkdMKTsKQEAgLTczMjgsNyArNzMyOCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmCiAKICAgICAtLW1fbnVtR0xFcnJvcnNUb0NvbnNvbGVBbGxvd2VkOwogICAgIGlmICghbV9u
dW1HTEVycm9yc1RvQ29uc29sZUFsbG93ZWQpCi0gICAgICAgIHByaW50VG9Db25zb2xlKE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgIldlYkdMOiB0b28gbWFueSBlcnJvcnMsIG5vIG1vcmUgZXJyb3Jz
IHdpbGwgYmUgcmVwb3J0ZWQgdG8gdGhlIGNvbnNvbGUgZm9yIHRoaXMgY29udGV4dC4iKTsKKyAg
ICAgICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiV2ViR0w6IHRvbyBt
YW55IGVycm9ycywgbm8gbW9yZSBlcnJvcnMgd2lsbCBiZSByZXBvcnRlZCB0byB0aGUgY29uc29s
ZSBmb3IgdGhpcyBjb250ZXh0LiJfcyk7CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dmFsaWRhdGVGcmFtZWJ1ZmZlclRhcmdldChHQ0dMZW51bSB0YXJnZXQpCkBAIC03Nzc4
LDcgKzc3NzgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9y
ZUNvbnRleHQoKQogICAgICAgICBpZiAobV9jb250ZXh0TG9zdFN0YXRlLT5tb2RlID09IFJlYWxM
b3N0Q29udGV4dCkKICAgICAgICAgICAgIG1fcmVzdG9yZVRpbWVyLnN0YXJ0T25lU2hvdChzZWNv
bmRzQmV0d2VlblJlc3RvcmVBdHRlbXB0cyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBy
aW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJXZWJHTDogZXJyb3IgcmVzdG9yaW5n
IGxvc3QgY29udGV4dC4iKTsKKyAgICAgICAgICAgIHByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZl
bDo6RXJyb3IsICJXZWJHTDogZXJyb3IgcmVzdG9yaW5nIGxvc3QgY29udGV4dC4iX3MpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MTQzLDcgKzgxNDMsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmZvcmNlQ29udGV4dExvc3QoKQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnJlY3ljbGVDb250ZXh0KCkKIHsKLSAgICBwcmludFRvQ29uc29sZShN
ZXNzYWdlTGV2ZWw6OkVycm9yLCAiVGhlcmUgYXJlIHRvbyBtYW55IGFjdGl2ZSBXZWJHTCBjb250
ZXh0cyBvbiB0aGlzIHBhZ2UsIHRoZSBvbGRlc3QgY29udGV4dCB3aWxsIGJlIGxvc3QuIik7Cisg
ICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpFcnJvciwgIlRoZXJlIGFyZSB0b28gbWFu
eSBhY3RpdmUgV2ViR0wgY29udGV4dHMgb24gdGhpcyBwYWdlLCB0aGUgb2xkZXN0IGNvbnRleHQg
d2lsbCBiZSBsb3N0LiJfcyk7CiAgICAgLy8gVXNpbmcgU3ludGhldGljTG9zdENvbnRleHQgbWVh
bnMgdGhlIGRldmVsb3BlciB3b24ndCBiZSBhYmxlIHRvIGZvcmNlIHRoZSByZXN0b3JhdGlvbgog
ICAgIC8vIG9mIHRoZSBjb250ZXh0IGJ5IGNhbGxpbmcgcHJldmVudERlZmF1bHQoKSBpbiBhICJ3
ZWJnbGNvbnRleHRsb3N0IiBldmVudCBoYW5kbGVyLgogICAgIGZvcmNlTG9zdENvbnRleHQoU3lu
dGhldGljTG9zdENvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NT
UHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IGY5ZWVmYzUzMmE1NDhmZTUzYjM2NzNhZmMyMGYyNjkx
NjUwMmU1ZjMuLmE4NTQ4NTIwOTExOGRkMzMxOTZiMzNhZDQwMmFiNzc2NmVjZDQ3MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKQEAg
LTIyOSw3ICsyMjksNyBAQCB2b2lkIENTU1ByZWxvYWRTY2FubmVyOjplbWl0UnVsZSgpCiAgICAg
ICAgIGlmICghdXJsLmlzRW1wdHkoKSAmJiBoYXNWYWxpZEltcG9ydENvbmRpdGlvbnMoY29uZGl0
aW9ucykpIHsKICAgICAgICAgICAgIFVSTCBiYXNlRWxlbWVudFVSTDsgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIHBhc3NlZCBpbiBmcm9tIHRoZSBIVE1MUHJlbG9hZFNjYW5uZXIgdmlhIHNjYW4o
KTogd2l0aG91dCBpdCB3ZSB3aWxsIGdldCByZWxhdGl2ZSBVUkxzIHdyb25nLgogICAgICAgICAg
ICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIGluY2x1ZGluZyB0aGUgY2hhcnNldCBpbiB0aGUg
cHJlbG9hZCByZXF1ZXN0PwotICAgICAgICAgICAgbV9yZXF1ZXN0cy0+YXBwZW5kKG1ha2VVbmlx
dWU8UHJlbG9hZFJlcXVlc3Q+KCJjc3MiLCB1cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNv
dXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCwgU3RyaW5nKCksIFByZWxvYWRSZXF1ZXN0OjpNb2R1
bGVTY3JpcHQ6Ok5vLCBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpKTsKKyAgICAgICAgICAg
IG1fcmVxdWVzdHMtPmFwcGVuZChtYWtlVW5pcXVlPFByZWxvYWRSZXF1ZXN0PigiY3NzIl9zLCB1
cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCwg
U3RyaW5nKCksIFByZWxvYWRSZXF1ZXN0OjpNb2R1bGVTY3JpcHQ6Ok5vLCBSZWZlcnJlclBvbGlj
eTo6RW1wdHlTdHJpbmcpKTsKICAgICAgICAgfQogICAgICAgICBtX3N0YXRlID0gSW5pdGlhbDsK
ICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJ1bGUsICJjaGFy
c2V0IikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
Y3BwCmluZGV4IDlkNmE2Y2NhZGUwYjRkNWVhNDAwMmI1MjJjZmZiZDQxM2YwNTZlMWUuLjYxYzZh
N2IzNGE5NTQ0YzgzZDlkN2VmNTAxMGM0N2ZiNjkyN2RhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFN0
cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGNvbnN0IERlY2ltYWwmIG51bWJlcikKIHsKICAg
ICBpZiAobnVtYmVyLmlzWmVybygpKSB7CiAgICAgICAgIC8vIERlY2ltYWw6OnRvU3RyaW5nIGFw
cGVuZHMgZXhwb25lbnQsIGUuZy4gIjBlLTE4IgotICAgICAgICByZXR1cm4gbnVtYmVyLmlzTmVn
YXRpdmUoKSA/ICItMCIgOiAiMCI7CisgICAgICAgIHJldHVybiBudW1iZXIuaXNOZWdhdGl2ZSgp
ID8gIi0wIl9zIDogIjAiX3M7CiAgICAgfQogICAgIHJldHVybiBudW1iZXIudG9TdHJpbmcoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwCmluZGV4IDI4OTYyOGFlYTg5NWJiMjhjZDA2MzI2NWI1ZTQ1YjY1M2E1MDU4ZjUuLjBhMjcx
ZWZlZGJjNmVkNDJmYjM0NWZhZmViYmRlY2I3YjYxY2E3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtNzcsNyArNzcsNyBA
QCBUb2tlblByZWxvYWRTY2FubmVyOjpUYWdJZCBUb2tlblByZWxvYWRTY2FubmVyOjp0YWdJZEZv
cihjb25zdCBIVE1MVG9rZW46OkRhdGFWZQogICAgIHJldHVybiBUYWdJZDo6VW5rbm93bjsKIH0K
IAotU3RyaW5nIFRva2VuUHJlbG9hZFNjYW5uZXI6OmluaXRpYXRvckZvcihUYWdJZCB0YWdJZCkK
K0FTQ0lJTGl0ZXJhbCBUb2tlblByZWxvYWRTY2FubmVyOjppbml0aWF0b3JGb3IoVGFnSWQgdGFn
SWQpCiB7CiAgICAgc3dpdGNoICh0YWdJZCkgewogICAgIGNhc2UgVGFnSWQ6OlNvdXJjZToKQEAg
LTIzOCw3ICsyMzgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGF1dG8gbWVkaWFTZXQg
PSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoYXR0cmlidXRlVmFsdWUsIE1lZGlhUXVlcnlQYXJzZXJD
b250ZXh0KG1fZG9jdW1lbnQpKTsKICAgICAgICAgICAgICAgICBSZWZQdHIgZG9jdW1lbnRFbGVt
ZW50ID0gbV9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsKICAgICAgICAgICAgICAgICBMT0co
TWVkaWFRdWVyaWVzLCAiSFRNTFByZWxvYWRTY2FubmVyICVwIHByb2Nlc3NBdHRyaWJ1dGUgZXZh
bHVhdGluZyBtZWRpYSBxdWVyaWVzIiwgdGhpcyk7Ci0gICAgICAgICAgICAgICAgbV9tZWRpYU1h
dGNoZWQgPSBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgbV9kb2N1bWVudC5wcmludGluZygpID8gInBy
aW50IiA6ICJzY3JlZW4iLCBtX2RvY3VtZW50LCBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVs
ZW1lbnQtPmNvbXB1dGVkU3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVNldC5nZXQo
KSk7CisgICAgICAgICAgICAgICAgbV9tZWRpYU1hdGNoZWQgPSBNZWRpYVF1ZXJ5RXZhbHVhdG9y
IHsgbV9kb2N1bWVudC5wcmludGluZygpID8gInByaW50Il9zIDogInNjcmVlbiJfcywgbV9kb2N1
bWVudCwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0eWxlKCkg
OiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFTZXQuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIHR5cGVBdHRyKSAmJiBtX3R5cGVBdHRy
aWJ1dGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICAvLyB3aGVuIG11bHRpcGxlIHR5cGUg
YXR0cmlidXRlcyBwcmVzZW50OiBmaXJzdCB2YWx1ZSB3aW5zLCBpZ25vcmUgc3Vic2VxdWVudCAo
dG8gbWF0Y2ggSW1hZ2VFbGVtZW50IHBhcnNlciBhbmQgQmxpbmsgYmVoYXZpb3VycykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKaW5kZXggMzlj
NzA0OGNiMThlMjRlNGZlYzNhZmU2MmI0ZDlmNTc1Y2MwZjM0OC4uNTc2MTFiZDZmY2ExOTI0YjQ0
ZjViOGMxMmU4NGJlYTMyMjAxMWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKIAogICAg
IHN0YXRpYyBUYWdJZCB0YWdJZEZvcihjb25zdCBIVE1MVG9rZW46OkRhdGFWZWN0b3ImKTsKIAot
ICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhdG9yRm9yKFRhZ0lkKTsKKyAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIGluaXRpYXRvckZvcihUYWdJZCk7CiAKICAgICB2b2lkIHVwZGF0ZVByZWRpY3RlZEJh
c2VVUkwoY29uc3QgSFRNTFRva2VuJiwgYm9vbCBzaG91bGRSZXN0cmljdEJhc2VVUkxTY2hlbWVz
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNl
UHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVs
b2FkZXIuaAppbmRleCA5YzQ0NjE4OTEzNmIxYzUxOGQ4ZWQ5YzE3ZDk3NTY4ZGJmZTMxZTczLi44
ZGFmOTM0M2FjMGI4NWFlNmUxZjYxZmQzNDJlNDI5NWJkY2JkYmY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuaApAQCAtMzcsNyAr
MzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFllcywKICAgICAgICAgTm8sCiAgICAgfTsKLSAgICBQ
cmVsb2FkUmVxdWVzdChjb25zdCBTdHJpbmcmIGluaXRpYXRvciwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZVVSTCwgY29uc3QgVVJMJiBiYXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJj
ZVR5cGUsIGNvbnN0IFN0cmluZyYgbWVkaWFBdHRyaWJ1dGUsIE1vZHVsZVNjcmlwdCBtb2R1bGVT
Y3JpcHQsIGNvbnN0IFJlZmVycmVyUG9saWN5JiByZWZlcnJlclBvbGljeSkKKyAgICBQcmVsb2Fk
UmVxdWVzdChBU0NJSUxpdGVyYWwgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJM
LCBjb25zdCBVUkwmIGJhc2VVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSwg
Y29uc3QgU3RyaW5nJiBtZWRpYUF0dHJpYnV0ZSwgTW9kdWxlU2NyaXB0IG1vZHVsZVNjcmlwdCwg
Y29uc3QgUmVmZXJyZXJQb2xpY3kmIHJlZmVycmVyUG9saWN5KQogICAgICAgICA6IG1faW5pdGlh
dG9yKGluaXRpYXRvcikKICAgICAgICAgLCBtX3Jlc291cmNlVVJMKHJlc291cmNlVVJMKQogICAg
ICAgICAsIG1fYmFzZVVSTChiYXNlVVJMLmlzb2xhdGVkQ29weSgpKQpAQCAtNjEsNyArNjEsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFVSTCBjb21wbGV0ZVVSTChEb2N1bWVudCYpOwogCi0g
ICAgU3RyaW5nIG1faW5pdGlhdG9yOworICAgIEFTQ0lJTGl0ZXJhbCBtX2luaXRpYXRvcjsKICAg
ICBTdHJpbmcgbV9yZXNvdXJjZVVSTDsKICAgICBVUkwgbV9iYXNlVVJMOwogICAgIFN0cmluZyBt
X2NoYXJzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5k
ZXggMTlmYzg1Y2Q4OTdhN2NlYWRiNDFkNTAyNWE3OWFiOTI4NzdkZjE2YS4uYmNmOGUxNzJhNjcz
MjBmNjY4ODEyMDc0NzlkZjdhODBhYmFjMTdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHN0YXRpYyB2b2lkIHJlbW92
ZVBzZXVkb0F0dHJpYnV0ZXMoTm9kZSYgbm9kZSkKIEV4Y2VwdGlvbk9yPFJlZjxUZXh0VHJhY2tD
dWU+PiBUZXh0VHJhY2tDdWU6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGRvdWJsZSBzdGFy
dCwgZG91YmxlIGVuZCwgRG9jdW1lbnRGcmFnbWVudCYgY3VlRnJhZ21lbnQpCiB7CiAgICAgaWYg
KCFjdWVGcmFnbWVudC5maXJzdENoaWxkKCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkTm9kZVR5cGVFcnJvciwgIkVtcHR5IGN1ZSBmcmFnbWVudCIgfTsKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWROb2RlVHlwZUVycm9yLCAiRW1wdHkgY3VlIGZyYWdtZW50
Il9zIH07CiAKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBjdWVGcmFnbWVudC5maXJzdENoaWxkKCk7
IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGF1dG8gcmVzdWx0
ID0gY2hlY2tGb3JJbnZhbGlkTm9kZVR5cGVzKCpub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwCmluZGV4IDVlNThjNzk3NGMzOTFi
OGZkNWFhZTMwNWY1NGQ5MWFlOWNkMDZjMTYuLjRlZDBmY2E0NTlmY2YyMDM2NjUyMzUzZWVhZTUy
NDc1MjI2MDdmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWVHZW5lcmljLmNwcApAQCAtMTIyLDEwICsxMjIsMTAgQEAgdm9pZCBUZXh0VHJhY2tDdWVH
ZW5lcmljQm94RWxlbWVudDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVv
U2l6ZSkKICAgICAgICAgbWF4U2l6ZSA9IDEwMC4wIC0gdGV4dFBvc2l0aW9uOwogCiAgICAgaWYg
KGN1ZS0+Z2V0V3JpdGluZ0RpcmVjdGlvbigpID09IFZUVEN1ZTo6SG9yaXpvbnRhbCkgewotICAg
ICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWluV2lkdGgsICJtaW4tY29u
dGVudCIpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWluV2lk
dGgsICJtaW4tY29udGVudCJfcyk7CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlNYXhXaWR0aCwgbWF4U2l6ZSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
TWluSGVpZ2h0LCAibWluLWNvbnRlbnQiKTsKKyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eU1pbkhlaWdodCwgIm1pbi1jb250ZW50Il9zKTsKICAgICAgICAgc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heEhlaWdodCwgbWF4U2l6ZSwgQ1NTVW5pdFR5
cGU6OkNTU19QRVJDRU5UQUdFKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmNwcAppbmRleCAwMDg4YmZhZTA5MzRjOWI0YWNmMGQwNDJlMTkyMDM1NDQ1MjBjMDBkLi5mY2Ix
ZDg0NDg5YmEyYWYxMDc2MTcwZWMzOGJiZWMyNDRjZjQ4ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WVFRDdWUuY3BwCkBAIC0yMTgsMTQgKzIxOCwxNCBAQCB2b2lkIFZUVEN1ZUJveDo6YXBw
bHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSkKICAgICBpZiAoY3VlLT52
ZXJ0aWNhbCgpID09IGhvcml6b250YWxLZXl3b3JkKCkpIHsKICAgICAgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBuZXdDdWVTaXplLCBDU1NVbml0VHlwZTo6Q1NT
X1BFUkNFTlRBR0UpOwogICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
SGVpZ2h0LCBDU1NWYWx1ZUF1dG8pOwotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5TWluV2lkdGgsICJtaW4tY29udGVudCIpOworICAgICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5TWluV2lkdGgsICJtaW4tY29udGVudCJfcyk7CiAgICAgICAg
IHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhXaWR0aCwgbWF4U2l6ZSwgQ1NT
VW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKICAgICAgICAgaWYgKChhbGlnbm1lbnQgPT0gQ1NT
VmFsdWVNaWRkbGUgfHwgYWxpZ25tZW50ID09IENTU1ZhbHVlQ2VudGVyKSAmJiBtdWx0aXBsaWVy
ICE9IDEuMCAmJiBwb3NpdGlvbi5maXJzdCkKICAgICAgICAgICAgIHNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBzdGF0aWNfY2FzdDxkb3VibGU+KCpwb3NpdGlvbi5maXJz
dCAtIChuZXdDdWVTaXplIC0gY3VlLT5nZXRDU1NTaXplKCkpIC8gMiksIENTU1VuaXRUeXBlOjpD
U1NfUEVSQ0VOVEFHRSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBDU1NWYWx1ZUF1dG8pOwogICAgICAgICBzZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBuZXdDdWVTaXplLCBDU1NVbml0VHlwZTo6
Q1NTX1BFUkNFTlRBR0UpOwotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5TWluSGVpZ2h0LCAibWluLWNvbnRlbnQiKTsKKyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU1pbkhlaWdodCwgIm1pbi1jb250ZW50Il9zKTsKICAgICAgICAgc2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heEhlaWdodCwgbWF4U2l6ZSwgQ1NTVW5p
dFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKICAgICAgICAgaWYgKChhbGlnbm1lbnQgPT0gQ1NTVmFs
dWVNaWRkbGUgfHwgYWxpZ25tZW50ID09IENTU1ZhbHVlQ2VudGVyKSAmJiBtdWx0aXBsaWVyICE9
IDEuMCAmJiBwb3NpdGlvbi5zZWNvbmQpCiAgICAgICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5VG9wLCBzdGF0aWNfY2FzdDxkb3VibGU+KCpwb3NpdGlvbi5zZWNvbmQg
LSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NTU2l6ZSgpKSAvIDIpLCBDU1NVbml0VHlwZTo6Q1NT
X1BFUkNFTlRBR0UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3Bw
CmluZGV4IDA2OTEyNzNhNGEwODMwYWQ3ZmUzMTRjODU2N2JkNGZmYmFlZmEyYjAuLjlmNWRhNTFi
ZTc4ZmRhYTYxYjdlNTA5NTgzNDVkZjQzYjVmMGJkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBXZWJWVFRQYXJz
ZXI6OnBhcnNlRmxvYXRQZXJjZW50YWdlVmFsdWVQYWlyKFZUVFNjYW5uZXImIHZhbHVlU2Nhbm5l
ciwgY2hhcgogCiBXZWJWVFRQYXJzZXI6OldlYlZUVFBhcnNlcihXZWJWVFRQYXJzZXJDbGllbnQm
IGNsaWVudCwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkK
LSAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4i
LCBQQUw6OlVURjhFbmNvZGluZygpKSkKKyAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNv
ZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsIFBBTDo6VVRGOEVuY29kaW5nKCkpKQogICAgICwg
bV9jbGllbnQoY2xpZW50KQogewogfQpAQCAtNzA4LDcgKzcwOCw3IEBAIHZvaWQgV2ViVlRUVHJl
ZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQmIGRvY3VtZW50KQogICAg
ICAgICBTdHJpbmcgY2hhcmFjdGVyc1N0cmluZyA9IG1fdG9rZW4uY2hhcmFjdGVycygpOwogICAg
ICAgICBNZWRpYVRpbWUgcGFyc2VkVGltZVN0YW1wOwogICAgICAgICBpZiAoV2ViVlRUUGFyc2Vy
Ojpjb2xsZWN0VGltZVN0YW1wKGNoYXJhY3RlcnNTdHJpbmcsIHBhcnNlZFRpbWVTdGFtcCkpCi0g
ICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZChQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb246OmNyZWF0ZShkb2N1bWVudCwgInRpbWVzdGFtcCIsIGNoYXJhY3RlcnNTdHJpbmcp
KTsKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPnBhcnNlckFwcGVuZENoaWxkKFByb2Nlc3Np
bmdJbnN0cnVjdGlvbjo6Y3JlYXRlKGRvY3VtZW50LCAidGltZXN0YW1wIl9zLCBjaGFyYWN0ZXJz
U3RyaW5nKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAppbmRleCAzMDkzZjljOTIwMzEyNDlkYTljYzk0YzMyZGU4OTE1YzJj
Yjc5NTkwLi42YWE2MTI2ZGQ3Y2FjNjgwMTE3YjI3N2I0NGE2YzE4NmVjMzcwNTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMTk5LDkgKzE5OSw5IEBAIEV4Y2VwdGlvbk9yPHN0
ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpDb21wdXRlZFBy
b3BlcnRpZXM+CiAgICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2YW50QXR0clZhbHVlID0gYXhP
YmplY3QtPmxpdmVSZWdpb25SZWxldmFudCgpOwogICAgICAgICAgICAgaWYgKCFhcmlhUmVsZXZh
bnRBdHRyVmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4g
bGl2ZVJlZ2lvblJlbGV2YW50OwotICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZhbnRB
ZGRpdGlvbnMgPSAiYWRkaXRpb25zIjsKLSAgICAgICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2
YW50UmVtb3ZhbHMgPSAicmVtb3ZhbHMiOwotICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVs
ZXZhbnRUZXh0ID0gInRleHQiOworICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZhbnRB
ZGRpdGlvbnMgPSAiYWRkaXRpb25zIl9zOworICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVs
ZXZhbnRSZW1vdmFscyA9ICJyZW1vdmFscyJfczsKKyAgICAgICAgICAgICAgICBTdHJpbmcgYXJp
YVJlbGV2YW50VGV4dCA9ICJ0ZXh0Il9zOwogCiAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYg
dmFsdWVzID0gU3BhY2VTcGxpdFN0cmluZyhhcmlhUmVsZXZhbnRBdHRyVmFsdWUsIHRydWUpOwog
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMuY29udGFpbnMoImFsbCIpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IGJiY2M3OWFiYzM4Njk1
ZWMwOWE0MGI4MjUxNmVjOWE5NjRlYzY2YmQuLjRkZmRlNjYzZThiYjgzMzI5ZjU2MjA1MTMzNDk1
YTdhYmIzMmJjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXMuY3BwCkBAIC0xMTAwLDcgKzExMDAsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZv
ckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkKICAgICAgICAgICAgICAgICBpZiAoaW1h
Z2UgJiYgaW1hZ2UgIT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewogICAgICAgICAgICAgICAgICAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZm
ZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KDAsIDApKTsKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3Bu
ZyIpOworICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVS
TCgiaW1hZ2UvcG5nIl9zKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAg
LTExMTUsNyArMTExNSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBs
aWNhdGVEYXRhVmFyaWFudCBkYXRhKQogICAgICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgICAgICBpZiAoaW1hZ2VCdWZmZXIpIHsK
ICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQtPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KGltYWdlQnVmZmVyLT5jb250ZXh0KCksIEZsb2F0UmVjdCgwLCAwLCB2aWRlb1dpZHRoLCB2aWRl
b0hlaWdodCkpOwotICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRh
VVJMKCJpbWFnZS9wbmciKTsKKyAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXIt
PnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aW5kZXggPSBpbmRleEZvckRhdGEoZGF0YVVSTCk7CkBAIC0xMTM0LDcgKzExMzQsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
ICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8Q2FudmFzUGF0dGVybj4mIGNhbnZhc1BhdHRlcm4p
IHsgaXRlbSA9IGJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKCpjYW52YXNQYXR0ZXJuKTsgfSwK
ICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8SW1hZ2VEYXRhPiYgaW1hZ2VEYXRhKSB7IGl0ZW0g
PSBidWlsZEFycmF5Rm9ySW1hZ2VEYXRhKCppbWFnZURhdGEpOyB9LAogICAgICAgICBbJl0gKFJl
ZlB0cjxJbWFnZUJpdG1hcD4mIGltYWdlQml0bWFwKSB7Ci0gICAgICAgICAgICBpbmRleCA9IGlu
ZGV4Rm9yRGF0YShpbWFnZUJpdG1hcC0+YnVmZmVyKCktPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIikp
OworICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoaW1hZ2VCaXRtYXAtPmJ1ZmZlcigp
LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcykpOwogICAgICAgICB9LAogICAgICAgICBbJl0gKGNv
bnN0IFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiBzY3JpcHRDYWxsU3RhY2spIHsKICAgICAgICAg
ICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPGRvdWJsZT46OmNyZWF0ZSgpOwpAQCAtMTE1
MSw3ICsxMTUxLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0
ZURhdGFWYXJpYW50IGRhdGEpCiAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdlICE9
ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCku
ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJf
cyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBAIC0xMzkwLDcgKzEzOTAs
NyBAQCBSZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVp
bGRBcnJheUZvckNhbnZhc1BhdHRlcm4oY29ucwogICAgICAgICByZXBlYXQgPSAibm8tcmVwZWF0
Il9zOwogCiAgICAgYXV0byBhcnJheSA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+OjpjcmVh
dGUoKTsKLSAgICBhcnJheS0+YWRkSXRlbShpbmRleEZvckRhdGEoaW1hZ2VCdWZmZXItPnRvRGF0
YVVSTCgiaW1hZ2UvcG5nIikpKTsKKyAgICBhcnJheS0+YWRkSXRlbShpbmRleEZvckRhdGEoaW1h
Z2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zKSkpOwogICAgIGFycmF5LT5hZGRJdGVt
KGluZGV4Rm9yRGF0YShyZXBlYXQpKTsKICAgICByZXR1cm4gYXJyYXk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAKaW5kZXggYjU4ZTczZTcwNGY0MzQxYzUzNzU5NjIyOTE2ZGM3YzFkOWViZTQyNC4uOTBj
ZTVlN2NiOTZkZjYyNWIwN2I0MjNiZjk1ZGQ4YjdmNzZmYzMyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cApAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBpbnNwZWN0b3JBdHRhY2hlZEhlaWdo
dFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHQiOworc3RhdGljIGNvbnN0ZXhwciBB
U0NJSUxpdGVyYWwgaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHRTZXR0aW5nID0gImluc3BlY3RvckF0
dGFjaGVkSGVpZ2h0Il9zOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRlZmF1bHRBdHRhY2hlZEhl
aWdodCA9IDMwMDsKIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtQXR0YWNoZWRIZWlnaHQgPSAy
NTAuMGY7CiBzdGF0aWMgY29uc3QgZmxvYXQgbWF4aW11bUF0dGFjaGVkSGVpZ2h0UmF0aW8gPSAw
Ljc1ZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAKaW5kZXggYTgwOTljODFjY2U2MjJjNjEzNDNmZWJmMjkyMDZkNjRiYTEyZTY3ZC4u
ZTkyMGFkMTY5Yzc0MWRhM2YzY2MyNWVhMzEyOGE0MzRiZDE4ZmVkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTExMSw3
ICsxMTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2Vz
dHVyZUluZGljYXRvcihQcm9jZXNzaW5nVXNlckdlc3R1cmUsIGR5bmFtaWNEb3duY2FzdDxEb2N1
bWVudD4oZXhlY3V0aW9uQ29udGV4dChtX2Zyb250ZW5kQXBpT2JqZWN0Lmdsb2JhbE9iamVjdCgp
KSkpOwogICAgICAgICAgICAgaW50IGl0ZW1OdW1iZXIgPSBhY3Rpb24gLSBDb250ZXh0TWVudUl0
ZW1CYXNlQ3VzdG9tVGFnOwogCi0gICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24obV9mcm9udGVuZEFwaU9iamVjdCwgImNvbnRleHRNZW51SXRlbVNlbGVj
dGVkIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOworICAgICAg
ICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRlbmRB
cGlPYmplY3QsICJjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCJfcywgV2ViQ29yZTo6ZnVuY3Rpb25D
YWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQoaXRlbU51bWJlcik7CiAgICAgICAgICAgICBmdW5jdGlvbi5jYWxsKCk7CiAgICAgICAg
IH0KQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1lbnVDbGVh
cmVkKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChtX2Zyb250ZW5kSG9zdCkgewotICAg
ICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRl
bmRBcGlPYmplY3QsICJjb250ZXh0TWVudUNsZWFyZWQiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxI
YW5kbGVyRnJvbUFueVRocmVhZCk7CisgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24obV9mcm9udGVuZEFwaU9iamVjdCwgImNvbnRleHRNZW51Q2xlYXJl
ZCJfcywgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgICAg
ICAgICAgZnVuY3Rpb24uY2FsbCgpOwogCiAgICAgICAgICAgICBtX2Zyb250ZW5kSG9zdC0+bV9t
ZW51UHJvdmlkZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXkuY3BwCmluZGV4IDRmNjNhZGNlOTM5MTZkYjIzMjBlOTY3OGFhYmZlMGYzY2Q5
OTc2MmIuLjc3MTBhMWI1ZDgyYjRlY2JjNmI4ZmU2Mjg0Y2Q3NmU0NDk4NzNmYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTYxMyw3ICs2
MTMsNyBAQCBFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck92ZXJsYXk6OnNldEdyaWRPdmVy
bGF5Rm9yTm9kZShOb2RlJiBub2RlLCBjb25zdCBJbgogewogICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7CiAgICAgaWYgKCFpczxSZW5kZXJHcmlkPihyZW5kZXJl
cikpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm9kZSBkb2VzIG5vdCBpbml0aWF0
ZSBhIGdyaWQgY29udGV4dCIpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vZGUg
ZG9lcyBub3QgaW5pdGlhdGUgYSBncmlkIGNvbnRleHQiX3MpOwogCiAgICAgcmVtb3ZlR3JpZE92
ZXJsYXlGb3JOb2RlKG5vZGUpOwogCkBAIC02MjcsNyArNjI3LDcgQEAgRXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JPdmVybGF5OjpzZXRHcmlkT3ZlcmxheUZvck5vZGUoTm9kZSYgbm9kZSwg
Y29uc3QgSW4KIEVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yT3ZlcmxheTo6Y2xlYXJHcmlk
T3ZlcmxheUZvck5vZGUoTm9kZSYgbm9kZSkKIHsKICAgICBpZiAoIXJlbW92ZUdyaWRPdmVybGF5
Rm9yTm9kZShub2RlKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJObyBncmlkIG92
ZXJsYXkgZXhpc3RzIGZvciB0aGUgbm9kZSwgc28gY2Fubm90IGNsZWFyLiIpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vIGdyaWQgb3ZlcmxheSBleGlzdHMgZm9yIHRoZSBub2Rl
LCBzbyBjYW5ub3QgY2xlYXIuIl9zKTsKIAogICAgIHVwZGF0ZSgpOwogCkBAIC02NTIsNyArNjUy
LDcgQEAgYm9vbCBJbnNwZWN0b3JPdmVybGF5OjpyZW1vdmVGbGV4T3ZlcmxheUZvck5vZGUoTm9k
ZSYgbm9kZSkKIEVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yT3ZlcmxheTo6c2V0RmxleE92
ZXJsYXlGb3JOb2RlKE5vZGUmIG5vZGUsIGNvbnN0IEluc3BlY3Rvck92ZXJsYXk6OkZsZXg6OkNv
bmZpZyYgZmxleE92ZXJsYXlDb25maWcpCiB7CiAgICAgaWYgKCFpczxSZW5kZXJGbGV4aWJsZUJv
eD4obm9kZS5yZW5kZXJlcigpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb2Rl
IGRvZXMgbm90IGluaXRpYXRlIGEgZmxleCBjb250ZXh0Iik7CisgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCgiTm9kZSBkb2VzIG5vdCBpbml0aWF0ZSBhIGZsZXggY29udGV4dCJfcyk7CiAK
ICAgICByZW1vdmVGbGV4T3ZlcmxheUZvck5vZGUobm9kZSk7CiAKQEAgLTY2Niw3ICs2NjYsNyBA
QCBFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck92ZXJsYXk6OnNldEZsZXhPdmVybGF5Rm9y
Tm9kZShOb2RlJiBub2RlLCBjb25zdCBJbgogRXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JP
dmVybGF5OjpjbGVhckZsZXhPdmVybGF5Rm9yTm9kZShOb2RlJiBub2RlKQogewogICAgIGlmICgh
cmVtb3ZlRmxleE92ZXJsYXlGb3JOb2RlKG5vZGUpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoIk5vIGZsZXggb3ZlcmxheSBleGlzdHMgZm9yIHRoZSBub2RlLCBzbyBjYW5ub3QgY2xl
YXIuIik7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm8gZmxleCBvdmVybGF5IGV4
aXN0cyBmb3IgdGhlIG5vZGUsIHNvIGNhbm5vdCBjbGVhci4iX3MpOwogCiAgICAgdXBkYXRlKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAppbmRleCAwYTBkYzE0YjkxMjUwMjJiM2I0YmE2MDVkNjc4MGU1NjAwNDcwZTViLi43NzBhZGE0
Y2RhN2RhOWExNzhmOTk4YjlhZjlhMTc3MTliNzJjYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC01NTQsOCArNTU0LDggQEAg
UmVmPFByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmplY3RG
b3JTdHlsZSgpIGNvbnN0CiAgICAgaWYgKGF1dG8gc3R5bGVJZCA9IG1fc3R5bGVJZC5hc1Byb3Rv
Y29sVmFsdWU8UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVJZD4oKSkKICAgICAgICAgcmVzdWx0LT5z
ZXRTdHlsZUlkKHN0eWxlSWQucmVsZWFzZU5vbk51bGwoKSk7CiAKLSAgICByZXN1bHQtPnNldFdp
ZHRoKG1fc3R5bGUtPmdldFByb3BlcnR5VmFsdWUoIndpZHRoIikpOwotICAgIHJlc3VsdC0+c2V0
SGVpZ2h0KG1fc3R5bGUtPmdldFByb3BlcnR5VmFsdWUoImhlaWdodCIpKTsKKyAgICByZXN1bHQt
PnNldFdpZHRoKG1fc3R5bGUtPmdldFByb3BlcnR5VmFsdWUoIndpZHRoIl9zKSk7CisgICAgcmVz
dWx0LT5zZXRIZWlnaHQobV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZSgiaGVpZ2h0Il9zKSk7CiAK
ICAgICBpZiAoYXV0byBzb3VyY2VEYXRhID0gZXh0cmFjdFNvdXJjZURhdGEoKSkgewogICAgICAg
ICBpZiAoYXV0byByYW5nZSA9IGJ1aWxkU291cmNlUmFuZ2VPYmplY3Qoc291cmNlRGF0YS0+cnVs
ZUJvZHlSYW5nZSwgbV9wYXJlbnRTdHlsZVNoZWV0LT5saW5lRW5kaW5ncygpKSkKQEAgLTY4Niw3
ICs2ODYsNyBAQCBSZWY8UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpz
dHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29uc3QKIAogICAgICAgICAvLyBEZWZhdWx0ICJwcmlvcml0
eSIgPT0gIiIuCiAgICAgICAgIGlmIChwcm9wZXJ0eUVudHJ5LmltcG9ydGFudCkKLSAgICAgICAg
ICAgIHByb3BlcnR5LT5zZXRQcmlvcml0eSgiaW1wb3J0YW50Iik7CisgICAgICAgICAgICBwcm9w
ZXJ0eS0+c2V0UHJpb3JpdHkoImltcG9ydGFudCJfcyk7CiAKICAgICAgICAgaWYgKGl0LT5oYXNT
b3VyY2UpIHsKICAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSByYW5nZSBpcyByZWxhdGl2ZSB0
byB0aGUgc3R5bGUgYm9keSBzdGFydC4KQEAgLTEwOTYsNyArMTA5Niw3IEBAIHN0YXRpYyBSZWY8
UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxwZXIo
Y29uc3QgU3RyaW5nCiAKIHN0YXRpYyBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6Q1NTOjpD
U1NTZWxlY3Rvcj4+IHNlbGVjdG9yc0Zyb21Tb3VyY2UoY29uc3QgQ1NTUnVsZVNvdXJjZURhdGEq
IHNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgc2hlZXRUZXh0LCBjb25zdCBWZWN0b3I8Y29uc3Qg
Q1NTU2VsZWN0b3IqPiBzZWxlY3RvcnMpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpT
Qzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24+IGNvbW1lbnQoIi9cXCpbXl0qP1xcKi8iLCBKU0M6
OllhcnI6OlRleHRDYXNlU2Vuc2l0aXZlLCBKU0M6OllhcnI6Ok11bHRpbGluZUVuYWJsZWQpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiBj
b21tZW50KCIvXFwqW15dKj9cXCovIl9zLCBKU0M6OllhcnI6OlRleHRDYXNlU2Vuc2l0aXZlLCBK
U0M6OllhcnI6Ok11bHRpbGluZUVuYWJsZWQpOwogCiAgICAgYXV0byByZXN1bHQgPSBKU09OOjpB
cnJheU9mPFByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPjo6Y3JlYXRlKCk7CiAgICAgdW5zaWdu
ZWQgc2VsZWN0b3JJbmRleCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCmluZGV4IDBiYmNjNTFh
OTM3NDg5ODg1NWVhOTJmOGIzY2E3YjA1MTE1OTQ3YzYuLmEyYzFiOTI0MDk2MWZlYWUzMjEzOTY1
OWI5M2U2YWJjZGIxY2Y5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCkBAIC0zMzMsNyArMzMz
LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+PiBJbnNwZWN0b3JBbmltYXRpb24KIAogICAgIGF1dG8gb2JqZWN0ID0gaW5qZWN0
ZWRTY3JpcHQud3JhcE9iamVjdCh2YWx1ZSwgb2JqZWN0R3JvdXApOwogICAgIGlmICghb2JqZWN0
KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludGVybmFsIGVycm9yOiB1bmFibGUg
dG8gY2FzdCBBbmltYXRpb24iKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRl
cm5hbCBlcnJvcjogdW5hYmxlIHRvIGNhc3QgQW5pbWF0aW9uIl9zKTsKIAogICAgIHJldHVybiBv
YmplY3QucmVsZWFzZU5vbk51bGwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMTU5MTIwMjZkMmMxNTFm
NDE5NDk0NGE5ZjBmYWRhMTg5ODA0ZmZlMy4uMmViOWI3M2NiZWU3YmQ3ZjA0NjBmNDM0ZmY2YWZi
ZTUwYTgxZTI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OkNTUzo6Rm9udD4+IEluc3BlY3RvckNTU0FnZW50Ojpn
ZXRGb250RGF0YQogICAgIAogICAgIGF1dG8qIGNvbXB1dGVkU3R5bGUgPSBub2RlLT5jb21wdXRl
ZFN0eWxlKCk7CiAgICAgaWYgKCFjb21wdXRlZFN0eWxlKQotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIk5vIGNvbXB1dGVkIHN0eWxlIGZvciBub2RlLiIpOworICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoIk5vIGNvbXB1dGVkIHN0eWxlIGZvciBub2RlLiJfcyk7CiAgICAgCiAg
ICAgcmV0dXJuIGJ1aWxkT2JqZWN0Rm9yRm9udChjb21wdXRlZFN0eWxlLT5mb250Q2FzY2FkZSgp
LnByaW1hcnlGb250KCkpOwogfQpAQCAtNjY1LDcgKzY2NSw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPFJlZjxQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4+IEluc3BlY3RvckNT
U0FnZW50CiAKICAgICBhdXRvIHN0eWxlU2hlZXQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWls
ZE9iamVjdEZvclN0eWxlU2hlZXQoKTsKICAgICBpZiAoIXN0eWxlU2hlZXQpCi0gICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IG1pc3Npbmcgc3R5bGUgc2hlZXQi
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRlcm5hbCBlcnJvcjogbWlzc2lu
ZyBzdHlsZSBzaGVldCJfcyk7CiAKICAgICByZXR1cm4gc3R5bGVTaGVldC5yZWxlYXNlTm9uTnVs
bCgpOwogfQpAQCAtNzQ3LDcgKzc0Nyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxQ
cm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTCiAKICAg
ICBhdXRvIHJ1bGUgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUoaW5z
cGVjdG9yU3R5bGVTaGVldC0+cnVsZUZvcklkKGNvbXBvdW5kSWQpKTsKICAgICBpZiAoIXJ1bGUp
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IG1pc3Npbmcg
c3R5bGUgc2hlZXQiKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRlcm5hbCBl
cnJvcjogbWlzc2luZyBzdHlsZSBzaGVldCJfcyk7CiAKICAgICByZXR1cm4gcnVsZS5yZWxlYXNl
Tm9uTnVsbCgpOwogfQpAQCAtODM2LDcgKzgzNiw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PFJlZjxQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUo
CiAKICAgICBhdXRvIHJ1bGUgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1
bGUoaW5zcGVjdG9yU3R5bGVTaGVldC0+cnVsZUZvcklkKHJhd0FjdGlvbi5uZXdSdWxlSWQoKSkp
OwogICAgIGlmICghcnVsZSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRlcm5h
bCBlcnJvcjogbWlzc2luZyBzdHlsZSBzaGVldCIpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoIkludGVybmFsIGVycm9yOiBtaXNzaW5nIHN0eWxlIHNoZWV0Il9zKTsKIAogICAgIHJl
dHVybiBydWxlLnJlbGVhc2VOb25OdWxsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDFjMTY2
OGQ5OWM3YWRhY2IwZTBmMGI1MDhjMjFlY2ZlNjExOTcwNGIuLmY1ZDAwMjlkMWQwZTlmMjk2MDkz
YzM5MDdmNjY1NzI2MTJkNjcxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBAIC0yNDIsNyArMjQyLDcg
QEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+PiBJbnNwZWN0b3JDYW52YXNBZ2UKIAogICAgIGF1dG8gcmVzdWx0ID0gaW5qZWN0ZWRT
Y3JpcHQud3JhcE9iamVjdCh2YWx1ZSwgb2JqZWN0R3JvdXApOwogICAgIGlmICghcmVzdWx0KQot
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludGVybmFsIGVycm9yOiB1bmFibGUgdG8g
Y2FzdCBDb250ZXh0Iik7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwg
ZXJyb3I6IHVuYWJsZSB0byBjYXN0IENvbnRleHQiX3MpOwogCiAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlTm9uTnVsbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA2MDhmMmViNjVmNDBlNmMxOWNhYzNm
MWRmMGUzNWM2ODlhYjFmMTAyLi5mMDQ2Njg4MGU4OGJiMDEzZTQxODE3NWEwN2EwNTgyMWZmZGJl
Zjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcApAQCAtOTU0LDcgKzk1NCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPFJlZjxKU09OOjpBcnJheU9mPFN0cmluZz4+PiBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U3Vw
cG9yCiB7CiAgICAgYXV0byBldmVudE5hbWVzID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+OjpjcmVh
dGUoKTsKIAotI2RlZmluZSBET01fRVZFTlRfTkFNRVNfQUREKG5hbWUpIGV2ZW50TmFtZXMtPmFk
ZEl0ZW0oI25hbWUpOworI2RlZmluZSBET01fRVZFTlRfTkFNRVNfQUREKG5hbWUpIGV2ZW50TmFt
ZXMtPmFkZEl0ZW0oI25hbWUiIl9zKTsKICAgICBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0goRE9N
X0VWRU5UX05BTUVTX0FERCkKICN1bmRlZiBET01fRVZFTlRfTkFNRVNfQURECiAKQEAgLTE1Mjks
NyArMTUyOSw3IEBAIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5z
cGVjdG9yRE9NQWdlbnQ6OnNob3dHcmlkT3ZlcmxheShJbnNwCiAKICAgICBhdXRvIHBhcnNlZENv
bG9yID0gcGFyc2VDb2xvcihXVEZNb3ZlKGdyaWRDb2xvcikpOwogICAgIGlmICghcGFyc2VkQ29s
b3IpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW52YWxpZCBjb2xvciBjb3VsZCBu
b3QgYmUgcGFyc2VkLiIpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludmFsaWQg
Y29sb3IgY291bGQgbm90IGJlIHBhcnNlZC4iX3MpOwogCiAgICAgSW5zcGVjdG9yT3ZlcmxheTo6
R3JpZDo6Q29uZmlnIGNvbmZpZzsKICAgICBjb25maWcuZ3JpZENvbG9yID0gKnBhcnNlZENvbG9y
OwpAQCAtMTU2OSw3ICsxNTY5LDcgQEAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6c2hvd0ZsZXhPdmVybGF5KEluc3AKIAogICAgIGF1
dG8gcGFyc2VkQ29sb3IgPSBwYXJzZUNvbG9yKFdURk1vdmUoZmxleENvbG9yKSk7CiAgICAgaWYg
KCFwYXJzZWRDb2xvcikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnZhbGlkIGNv
bG9yIGNvdWxkIG5vdCBiZSBwYXJzZWQuIik7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZCgiSW52YWxpZCBjb2xvciBjb3VsZCBub3QgYmUgcGFyc2VkLiJfcyk7CiAKICAgICBJbnNwZWN0
b3JPdmVybGF5OjpGbGV4OjpDb25maWcgY29uZmlnOwogICAgIGNvbmZpZy5mbGV4Q29sb3IgPSAq
cGFyc2VkQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCA4MDI2ZTJjZWQwYjJk
MjFiMjEzZTRkYjQ5ZTg1MTNkZDQzMzE0OTM1Li41YTAyMDc1ZTFmYTAzN2VkYTgxYzI3YTMyZjA5
YjA1ZGRkNzIxNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTE3Miw3ICsxNzIs
NyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpzZXRFdmVudEJyZWFrcG9pbnQoUHJvdAogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCIpOworICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCJfcyk7CiB9CiAKIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZUV2
ZW50QnJlYWtwb2ludChQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGUg
YnJlYWtwb2ludFR5cGUsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQpAQCAtMjE1LDcgKzIxNSw3
IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OnJlbW92ZUV2ZW50QnJlYWtwb2ludChQCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb3Qgc3VwcG9ydGVkIik7CisgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb3Qgc3VwcG9ydGVkIl9zKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpCkBAIC00MTAsOCArNDEw
LDggQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpicmVha09uVVJMSWZOZWVkZWQo
Y29uc3QgU3RyaW5nJiB1cmwsIFVSTEJyZWFrcG8KICAgICB9CiAKICAgICBSZWY8SlNPTjo6T2Jq
ZWN0PiBldmVudERhdGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGV2ZW50RGF0YS0+
c2V0U3RyaW5nKCJicmVha3BvaW50VVJMIiwgYnJlYWtwb2ludFVSTCk7Ci0gICAgZXZlbnREYXRh
LT5zZXRTdHJpbmcoInVybCIsIHVybCk7CisgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJyZWFr
cG9pbnRVUkwiX3MsIGJyZWFrcG9pbnRVUkwpOworICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJ1
cmwiX3MsIHVybCk7CiAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oYnJlYWtSZWFz
b24sIFdURk1vdmUoZXZlbnREYXRhKSwgV1RGTW92ZShicmVha3BvaW50KSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcAppbmRleCAxM2ZjMGI4MWVmODc2YjU5ZTkxOGYxOWRkOTg2OTljNDVm
ZjYzMDIwLi5jNDZmOWFiYTYyMjhmNmM3MDY4YmE1MGM3M2MzMjM2OGU2YzE5YzE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xOTcsMTMgKzE5NywxMyBAQCBSZWZQdHI8U3RvcmFnZUFy
ZWE+IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKFByb3RvY29sOjpF
cnJvclN0cgogewogICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBzdG9yYWdlSWQtPmdldFN0cmlu
ZyhQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjpzZWN1cml0eU9yaWdpbktleSk7CiAg
ICAgaWYgKCFzZWN1cml0eU9yaWdpbikgewotICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5n
IHNlY3VyaXR5T3JpZ2luIGluIGdpdmVuIHN0b3JhZ2VJZCI7CisgICAgICAgIGVycm9yU3RyaW5n
ID0gIk1pc3Npbmcgc2VjdXJpdHlPcmlnaW4gaW4gZ2l2ZW4gc3RvcmFnZUlkIl9zOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBhdXRvIGlzTG9jYWxTdG9yYWdlID0gc3Rv
cmFnZUlkLT5nZXRCb29sZWFuKFByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ6OmlzTG9j
YWxTdG9yYWdlS2V5KTsKICAgICBpZiAoIWlzTG9jYWxTdG9yYWdlKSB7Ci0gICAgICAgIGVycm9y
U3RyaW5nID0gIk1pc3NpbmcgaXNMb2NhbFN0b3JhZ2UgaW4gZ2l2ZW4gc3RvcmFnZUlkIjsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBpc0xvY2FsU3RvcmFnZSBpbiBnaXZlbiBzdG9y
YWdlSWQiX3M7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5jcHAKaW5kZXggZjBmM2M3NmQ4NGYyNTU3ODhhMmViNTlmMDU0MjBiOWQ5YTI3MjE2MS4uYWNh
ZjE2Y2Q5NDVmMjhhZGU0MzU3ZGNkZjBjZjMyZGUwZjg2MzQ3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
Y3BwCkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpleGVj
dXRlU1FMKGNvbnN0IFByb3RvY29sOjpEYXRhYmFzZTo6RGF0YWJhc2VJZCYgZGEKIAogICAgIGF1
dG8qIGRhdGFiYXNlID0gZGF0YWJhc2VGb3JJZChkYXRhYmFzZUlkKTsKICAgICBpZiAoIWRhdGFi
YXNlKSB7Ci0gICAgICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIk1pc3NpbmcgZGF0
YWJhc2UgZm9yIGdpdmVuIGRhdGFiYXNlSWQiKTsKKyAgICAgICAgcmVxdWVzdENhbGxiYWNrLT5z
ZW5kRmFpbHVyZSgiTWlzc2luZyBkYXRhYmFzZSBmb3IgZ2l2ZW4gZGF0YWJhc2VJZCJfcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggNWQ1MTJl
NzhlMjAwMzI4OGQwMTUzMTM2ODdlNjgzODk5MDhiNzNlNy4uODc2OTkyMDQyNzkwOGY0YzM0YTYw
Y2RhZjE1OThjY2MyZWI4MzMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTEwMyw3ICsx
MDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgRXZlbnQmIGV2ZW50KSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnR5cGUo
KSAhPSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50KSB7Ci0gICAgICAgICAgICBtX2V4ZWN1dGFi
bGVXaXRoRGF0YWJhc2UtPnJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVk
IGV2ZW50IHR5cGUuIik7CisgICAgICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2UtPnJl
cXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVkIGV2ZW50IHR5cGUuIl9zKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMTEsMTMgKzExMSwxMyBAQCBw
dWJsaWM6CiAKICAgICAgICAgYXV0byByZXN1bHQgPSByZXF1ZXN0LnJlc3VsdCgpOwogICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICBtX2V4ZWN1dGFibGVX
aXRoRGF0YWJhc2UtPnJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0
IHJlc3VsdCBpbiBjYWxsYmFjay4iKTsKKyAgICAgICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRh
YmFzZS0+cmVxdWVzdENhbGxiYWNrKCkuc2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgcmVzdWx0
IGluIGNhbGxiYWNrLiJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICBhdXRvIHJlc3VsdFZhbHVlID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAg
ICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPElEQkRhdGFiYXNlPj4ocmVz
dWx0VmFsdWUpKSB7Ci0gICAgICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2UtPnJlcXVl
c3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVkIHJlc3VsdCB0eXBlLiIpOworICAg
ICAgICAgICAgbV9leGVjdXRhYmxlV2l0aERhdGFiYXNlLT5yZXF1ZXN0Q2FsbGJhY2soKS5zZW5k
RmFpbHVyZSgiVW5leHBlY3RlZCByZXN1bHQgdHlwZS4iX3MpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKQEAgLTEzNiwxMyArMTM2LDEzIEBAIHByaXZhdGU6CiB2b2lkIEV4ZWN1
dGFibGVXaXRoRGF0YWJhc2U6OnN0YXJ0KElEQkZhY3RvcnkqIGlkYkZhY3RvcnksIFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAgICAgaWYgKCFjb250ZXh0
KCkpIHsKLSAgICAgICAgcmVxdWVzdENhbGxiYWNrKCkuc2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBv
cGVuIGRhdGFiYXNlLiIpOworICAgICAgICByZXF1ZXN0Q2FsbGJhY2soKS5zZW5kRmFpbHVyZSgi
Q291bGQgbm90IG9wZW4gZGF0YWJhc2UuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGF1dG8gcmVzdWx0ID0gaWRiRmFjdG9yeS0+b3BlbigqY29udGV4dCgpLCBkYXRhYmFzZU5h
bWUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAg
ICAgICByZXF1ZXN0Q2FsbGJhY2soKS5zZW5kRmFpbHVyZSgiQ291bGQgbm90IG9wZW4gZGF0YWJh
c2UuIik7CisgICAgICAgIHJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qg
b3BlbiBkYXRhYmFzZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNDksNyAr
MzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgRXZlbnQmIGV2ZW50KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYg
KGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50KSB7Ci0gICAgICAgICAg
ICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIlVuZXhwZWN0ZWQgZXZlbnQgdHlwZS4i
KTsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiVW5leHBlY3Rl
ZCBldmVudCB0eXBlLiJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
MzU3LDcgKzM1Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IHJlcXVlc3Qu
cmVzdWx0KCk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAg
ICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCByZXN1bHQg
aW4gY2FsbGJhY2suIik7CisgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1
cmUoIkNvdWxkIG5vdCBnZXQgcmVzdWx0IGluIGNhbGxiYWNrLiJfcyk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zNzEsNyArMzcxLDcgQEAgcHVibGljOgog
CiAgICAgICAgIGlmIChtX3NraXBDb3VudCkgewogICAgICAgICAgICAgaWYgKGN1cnNvci0+YWR2
YW5jZShtX3NraXBDb3VudCkuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgbV9yZXF1
ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgYWR2YW5jZSBjdXJzb3IuIik7Cisg
ICAgICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qg
YWR2YW5jZSBjdXJzb3IuIl9zKTsKICAgICAgICAgICAgIG1fc2tpcENvdW50ID0gMDsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzgzLDcgKzM4Myw3IEBAIHB1YmxpYzoKIAog
ICAgICAgICAvLyBDb250aW51ZSBjdXJzb3IgYmVmb3JlIG1ha2luZyBpbmplY3RlZCBzY3JpcHQg
Y2FsbHMsIG90aGVyd2lzZSB0cmFuc2FjdGlvbiBtaWdodCBiZSBmaW5pc2hlZC4KICAgICAgICAg
aWYgKGN1cnNvci0+Y29udGludWVGdW5jdGlvbihudWxscHRyKS5oYXNFeGNlcHRpb24oKSkgewot
ICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgY29u
dGludWUgY3Vyc29yLiIpOworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWls
dXJlKCJDb3VsZCBub3QgY29udGludWUgY3Vyc29yLiJfcyk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNDQ5LDEzICs0NDksMTMgQEAgcHVibGljOgogCiAgICAgICAgIGF1
dG8gaWRiVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbkZvckRhdGFiYXNlKCZkYXRhYmFzZSwgbV9v
YmplY3RTdG9yZU5hbWUpOwogICAgICAgICBpZiAoIWlkYlRyYW5zYWN0aW9uKSB7Ci0gICAgICAg
ICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgdHJhbnNh
Y3Rpb24iKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291
bGQgbm90IGdldCB0cmFuc2FjdGlvbiJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBhdXRvIGlkYk9iamVjdFN0b3JlID0gb2JqZWN0U3RvcmVGb3JUcmFuc2Fj
dGlvbihpZGJUcmFuc2FjdGlvbi5nZXQoKSwgbV9vYmplY3RTdG9yZU5hbWUpOwogICAgICAgICBp
ZiAoIWlkYk9iamVjdFN0b3JlKSB7Ci0gICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2Vu
ZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgb2JqZWN0IHN0b3JlIik7CisgICAgICAgICAgICBtX3Jl
cXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgb2JqZWN0IHN0b3JlIl9z
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC00NjQsNyArNDY0LDcgQEAg
cHVibGljOgogICAgICAgICBpZiAoIW1faW5kZXhOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgYXV0byBpZGJJbmRleCA9IGluZGV4Rm9yT2JqZWN0U3RvcmUoaWRiT2JqZWN0U3RvcmUuZ2V0
KCksIG1faW5kZXhOYW1lKTsKICAgICAgICAgICAgIGlmICghaWRiSW5kZXgpIHsKLSAgICAgICAg
ICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgaW5k
ZXgiKTsKKyAgICAgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNv
dWxkIG5vdCBnZXQgaW5kZXgiX3MpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KIApAQCAtNDc4LDcgKzQ3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAg
IGlmICghaWRiUmVxdWVzdCkgewotICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRG
YWlsdXJlKCJDb3VsZCBub3Qgb3BlbiBjdXJzb3IgdG8gcG9wdWxhdGUgZGF0YWJhc2UgZGF0YSIp
OworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qg
b3BlbiBjdXJzb3IgdG8gcG9wdWxhdGUgZGF0YWJhc2UgZGF0YSJfcyk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtNjUzLDcgKzY1Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
aWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkuY29tcGxldGVFdmVudCkg
ewotICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVk
IGV2ZW50IHR5cGUuIik7CisgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1
cmUoIlVuZXhwZWN0ZWQgZXZlbnQgdHlwZS4iX3MpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTY5MCwxMyArNjkwLDEzIEBAIHB1YmxpYzoKIAogICAgICAgICBhdXRvIGlk
YlRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25Gb3JEYXRhYmFzZSgmZGF0YWJhc2UsIG1fb2JqZWN0
U3RvcmVOYW1lLCBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWR3cml0ZSk7CiAgICAgICAgIGlmICgh
aWRiVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFp
bHVyZSgiQ291bGQgbm90IGdldCB0cmFuc2FjdGlvbiIpOworICAgICAgICAgICAgbV9yZXF1ZXN0
Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0IHRyYW5zYWN0aW9uIl9zKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gaWRiT2JqZWN0U3Rv
cmUgPSBvYmplY3RTdG9yZUZvclRyYW5zYWN0aW9uKGlkYlRyYW5zYWN0aW9uLmdldCgpLCBtX29i
amVjdFN0b3JlTmFtZSk7CiAgICAgICAgIGlmICghaWRiT2JqZWN0U3RvcmUpIHsKLSAgICAgICAg
ICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCBvYmplY3Qg
c3RvcmUiKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291
bGQgbm90IGdldCBvYmplY3Qgc3RvcmUiX3MpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggNGE2ZjYzMmI2Zjk3MTE0MmM0MDBjNGRi
ODA1M2I0ZDBmMTk0Njg1OS4uMzQ0ZjZmZTUwMGVkNWVjY2I4NWQ2YjdkNDY1NTcxNjAyMzhjMzVj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAgLTE5Miw5ICsxOTIsOSBAQCBSZWY8UHJvdG9j
b2w6OkxheWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVj
dEZvckxheWVyKFJlbgogICAgICAgICBsYXllck9iamVjdC0+c2V0SXNHZW5lcmF0ZWRDb250ZW50
KHRydWUpOwogICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRvRWxlbWVudElkKGJpbmRQc2V1
ZG9FbGVtZW50KGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KHJlbmRlcmVyLT5ub2RlKCkpKSk7CiAg
ICAgICAgIGlmIChyZW5kZXJlci0+aXNCZWZvcmVDb250ZW50KCkpCi0gICAgICAgICAgICBsYXll
ck9iamVjdC0+c2V0UHNldWRvRWxlbWVudCgiYmVmb3JlIik7CisgICAgICAgICAgICBsYXllck9i
amVjdC0+c2V0UHNldWRvRWxlbWVudCgiYmVmb3JlIl9zKTsKICAgICAgICAgZWxzZSBpZiAocmVu
ZGVyZXItPmlzQWZ0ZXJDb250ZW50KCkpCi0gICAgICAgICAgICBsYXllck9iamVjdC0+c2V0UHNl
dWRvRWxlbWVudCgiYWZ0ZXIiKTsKKyAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9F
bGVtZW50KCJhZnRlciJfcyk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFJlbmRlclZpZXcgaXMg
bm93IHJlYWxseSBhbm9ueW1vdXMgYnV0IGRvbid0IHRlbGwgYWJvdXQgaXQgdG8gdGhlIGZyb250
ZW5kIGJlZm9yZSBtYWtpbmcgc3VyZSBpdCBjYW4gaGFuZGxlIGl0LgpAQCAtMjAyLDkgKzIwMiw5
IEBAIFJlZjxQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIoUmVuCiAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRJc0Fu
b255bW91cyh0cnVlKTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVy
ZXItPnN0eWxlKCk7CiAgICAgICAgIGlmIChzdHlsZS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6
Rmlyc3RMZXR0ZXIpCi0gICAgICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRvRWxlbWVudCgi
Zmlyc3QtbGV0dGVyIik7CisgICAgICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRvRWxlbWVu
dCgiZmlyc3QtbGV0dGVyIl9zKTsKICAgICAgICAgZWxzZSBpZiAoc3R5bGUuc3R5bGVUeXBlKCkg
PT0gUHNldWRvSWQ6OkZpcnN0TGluZSkKLSAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1
ZG9FbGVtZW50KCJmaXJzdC1saW5lIik7CisgICAgICAgICAgICBsYXllck9iamVjdC0+c2V0UHNl
dWRvRWxlbWVudCgiZmlyc3QtbGluZSJfcyk7CiAgICAgfQogCiAgICAgcmV0dXJuIGxheWVyT2Jq
ZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDZlNWE1ZmM4OWNjZWYwNWI3M2NlZGEyNTdkNmM1
OWNiMGU4Mjg2MWMuLmQ4MTI5NGM0NWFjZGIwODFkMWQxZmEyNGRjZWQyODlmOWVjNzY2ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEwMzIsNyArMTAzMiw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4gSW5zcGVjdG9yTmV0
d29ya0FnCiAKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2ODQ3NT4gV2Vi
IEluc3BlY3RvcjogQ29ycmVjdGx5IGRpc3BsYXkgaWZyYW1lJ3MgYW5kIHdvcmtlcidzIFdlYlNv
Y2tldHMKICAgICBpZiAoIWlzPERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCIp
OworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQiX3MpOwogCiAg
ICAgYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4od2ViU29ja2V0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7
CkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+IEluc3BlY3Rvck5ldHdvcmtBZwogCiAgICAgYXV0
byBvYmplY3QgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KHdlYlNvY2tldEFzU2NyaXB0VmFs
dWUoZ2xvYmFsT2JqZWN0LCB3ZWJTb2NrZXQpLCBvYmplY3RHcm91cCk7CiAgICAgaWYgKCFvYmpl
Y3QpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IHVuYWJs
ZSB0byBjYXN0IFdlYlNvY2tldCIpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIklu
dGVybmFsIGVycm9yOiB1bmFibGUgdG8gY2FzdCBXZWJTb2NrZXQiX3MpOwogCiAgICAgcmV0dXJu
IG9iamVjdC5yZWxlYXNlTm9uTnVsbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGQxYjI2OWY4ZmE3
ZDY1YWE0ODQyMDVmZDUwMjhkODk0NTdlM2FmMTcuLmFmMzVlMGE5NWVhODE0OWFhNTQ5MzJiMDlm
YWRkYmVhYjUyMDA0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTU3MCwzMSArNTcwLDMxIEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVPYmplY3QoUHJvdG9jb2w6OkVycm9y
U3RyaW5nJiBlcnJvclN0cmluCiAKICAgICBjb29raWUubmFtZSA9IGNvb2tpZU9iamVjdC0+Z2V0
U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6Om5hbWVLZXkpOwogICAgIGlmICghY29va2ll
Lm5hbWUpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IG5h
bWUgaW4gZ2l2ZW4gY29va2llIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1
ZSBmb3Iga2V5IG5hbWUgaW4gZ2l2ZW4gY29va2llIl9zOwogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGNvb2tpZS52YWx1ZSA9IGNvb2tpZU9iamVjdC0+Z2V0U3Ry
aW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnZhbHVlS2V5KTsKICAgICBpZiAoIWNvb2tpZS52
YWx1ZSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgdmFs
dWUgaW4gZ2l2ZW4gY29va2llIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1
ZSBmb3Iga2V5IHZhbHVlIGluIGdpdmVuIGNvb2tpZSJfczsKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICBjb29raWUuZG9tYWluID0gY29va2llT2JqZWN0LT5nZXRT
dHJpbmcoUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6ZG9tYWluS2V5KTsKICAgICBpZiAoIWNvb2tp
ZS5kb21haW4pIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5
IGRvbWFpbiBpbiBnaXZlbiBjb29raWUiOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlk
IHZhbHVlIGZvciBrZXkgZG9tYWluIGluIGdpdmVuIGNvb2tpZSJfczsKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBjb29raWUucGF0aCA9IGNvb2tpZU9iamVjdC0+
Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnBhdGhLZXkpOwogICAgIGlmICghY29v
a2llLnBhdGgpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5
IHBhdGggaW4gZ2l2ZW4gY29va2llIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2
YWx1ZSBmb3Iga2V5IHBhdGggaW4gZ2l2ZW4gY29va2llIl9zOwogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gaHR0cE9ubHkgPSBjb29raWVPYmplY3QtPmdl
dEJvb2xlYW4oUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6aHR0cE9ubHlLZXkpOwogICAgIGlmICgh
aHR0cE9ubHkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5
IGh0dHBPbmx5IGluIGdpdmVuIGNvb2tpZSI7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFs
aWQgdmFsdWUgZm9yIGtleSBodHRwT25seSBpbiBnaXZlbiBjb29raWUiX3M7CiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCkBAIC02MDIsNyArNjAyLDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJyb3JTdHJp
bmcmIGVycm9yU3RyaW4KIAogICAgIGF1dG8gc2VjdXJlID0gY29va2llT2JqZWN0LT5nZXRCb29s
ZWFuKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlY3VyZUtleSk7CiAgICAgaWYgKCFzZWN1cmUp
IHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNlY3VyZSBp
biBnaXZlbiBjb29raWUiOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZv
ciBrZXkgc2VjdXJlIGluIGdpdmVuIGNvb2tpZSJfczsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAKQEAgLTYxMSw3ICs2MTEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
b29raWU+IHBhcnNlQ29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJp
bgogICAgIGF1dG8gc2Vzc2lvbiA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6
UGFnZTo6Q29va2llOjpzZXNzaW9uS2V5KTsKICAgICBjb29raWUuZXhwaXJlcyA9IGNvb2tpZU9i
amVjdC0+Z2V0RG91YmxlKFByb3RvY29sOjpQYWdlOjpDb29raWU6OmV4cGlyZXNLZXkpOwogICAg
IGlmICghc2Vzc2lvbiAmJiAhY29va2llLmV4cGlyZXMpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcg
PSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IGV4cGlyZXMgaW4gZ2l2ZW4gY29va2llIjsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IGV4cGlyZXMgaW4gZ2l2ZW4g
Y29va2llIl9zOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIApAQCAtNjE5
LDEzICs2MTksMTMgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZU9i
amVjdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KIAogICAgIGF1dG8gc2FtZVNp
dGVTdHJpbmcgPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2ll
OjpzYW1lU2l0ZUtleSk7CiAgICAgaWYgKCFzYW1lU2l0ZVN0cmluZykgewotICAgICAgICBlcnJv
clN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgc2FtZVNpdGUgaW4gZ2l2ZW4gY29va2ll
IjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNhbWVTaXRl
IGluIGdpdmVuIGNvb2tpZSJfczsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICBhdXRvIHNhbWVTaXRlID0gUHJvdG9jb2w6OkhlbHBlcnM6OnBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzxQcm90b2NvbDo6UGFnZTo6Q29va2llU2FtZVNpdGVQb2xpY3k+KHNhbWVTaXRl
U3RyaW5nKTsKICAgICBpZiAoIXNhbWVTaXRlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIklu
dmFsaWQgdmFsdWUgZm9yIGtleSBzYW1lU2l0ZSBpbiBnaXZlbiBjb29raWUiOworICAgICAgICBl
cnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgc2FtZVNpdGUgaW4gZ2l2ZW4gY29v
a2llIl9zOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVi
dWdnZXJBZ2VudC5jcHAKaW5kZXggZGFkNTA0MTg4NjRlOTVlYzIxMzMwMjAzZTZkMzlmYWNmYWIw
NWUxYy4uNjI2MGVhNzg2YzE4ODU1YTg4NDk2YmEyODlhNmNlZDdjMDlhMmMzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURP
TURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gUGFnZURPTURlYnVnZ2VyQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQoUHJvdG9j
b2w6OkQKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQiKTsKKyAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
Ik5vdCBzdXBwb3J0ZWQiX3MpOwogfQogCiBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBQ
YWdlRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludChQcm90b2NvbDo6RE9NOjpO
b2RlSWQgbm9kZUlkLCBQcm90b2NvbDo6RE9NRGVidWdnZXI6OkRPTUJyZWFrcG9pbnRUeXBlIHR5
cGUpCkBAIC0xMzUsNyArMTM1LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gUGFn
ZURPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQoUHJvdG9jb2wKICAgICB9CiAK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5v
dCBzdXBwb3J0ZWQiKTsKKyAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQi
X3MpOwogfQogCiB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjptYWluRnJhbWVOYXZpZ2F0ZWQo
KQpAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxJbnNl
cnRET01Ob2RlKE5vZGUmIHBhcmVudCkKICAgICBBU1NFUlQoY2xvc2VzdEJyZWFrcG9pbnRPd25l
cik7CiAKICAgICBhdXRvIHBhdXNlRGF0YSA9IGJ1aWxkUGF1c2VEYXRhRm9yRE9NQnJlYWtwb2lu
dChQcm90b2NvbDo6RE9NRGVidWdnZXI6OkRPTUJyZWFrcG9pbnRUeXBlOjpTdWJ0cmVlTW9kaWZp
ZWQsICpjbG9zZXN0QnJlYWtwb2ludE93bmVyKTsKLSAgICBwYXVzZURhdGEtPnNldEJvb2xlYW4o
Imluc2VydGlvbiIsIHRydWUpOworICAgIHBhdXNlRGF0YS0+c2V0Qm9vbGVhbigiaW5zZXJ0aW9u
Il9zLCB0cnVlKTsKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMzQ5OT4g
V2ViIEluc3BlY3RvcjogYWxsb3cgRE9NIG5vZGVzIHRvIGJlIGluc3RydW1lbnRlZCBhdCBhbnkg
cG9pbnQsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgbWFpbiBkb2N1bWVudCBoYXMgYWxzbyBi
ZWVuIGluc3RydW1lbnRlZAogICAgIC8vIEluY2x1ZGUgdGhlIG5ldyBjaGlsZCBub2RlIElEIHNv
IHRoZSBmcm9udGVuZCBjYW4gc2hvdyB0aGUgbm9kZSB0aGF0J3MgYWJvdXQgdG8gYmUgaW5zZXJ0
ZWQuCiAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dl
ckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURk1vdmUocGF1c2VEYXRhKSwgV1RG
TW92ZShjbG9zZXN0QnJlYWtwb2ludCkpOwpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgUGFnZURP
TURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAgaWYgKGF1
dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgp
KSB7CiAgICAgICAgIGlmICgmbm9kZSAhPSBjbG9zZXN0QnJlYWtwb2ludE93bmVyKSB7CiAgICAg
ICAgICAgICBpZiAoYXV0byB0YXJnZXROb2RlSWQgPSBkb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250
ZW5kKCZub2RlKSkKLSAgICAgICAgICAgICAgICBwYXVzZURhdGEtPnNldEludGVnZXIoInRhcmdl
dE5vZGVJZCIsIHRhcmdldE5vZGVJZCk7CisgICAgICAgICAgICAgICAgcGF1c2VEYXRhLT5zZXRJ
bnRlZ2VyKCJ0YXJnZXROb2RlSWQiX3MsIHRhcmdldE5vZGVJZCk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZy
b250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURk1vdmUocGF1c2VEYXRhKSwgV1RGTW92
ZShjbG9zZXN0QnJlYWtwb2ludCkpOwpAQCAtMzUwLDEwICszNTAsMTAgQEAgUmVmPEpTT046Ok9i
amVjdD4gUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmJ1aWxkUGF1c2VEYXRhRm9yRE9NQnJlYWtwb2lu
dChQcm90b2NvbDoKICAgICBBU1NFUlQobV9kb21TdWJ0cmVlTW9kaWZpZWRCcmVha3BvaW50cy5j
b250YWlucygmYnJlYWtwb2ludE93bmVyKSB8fCBtX2RvbUF0dHJpYnV0ZU1vZGlmaWVkQnJlYWtw
b2ludHMuY29udGFpbnMoJmJyZWFrcG9pbnRPd25lcikgfHwgbV9kb21Ob2RlUmVtb3ZlZEJyZWFr
cG9pbnRzLmNvbnRhaW5zKCZicmVha3BvaW50T3duZXIpKTsKIAogICAgIGF1dG8gcGF1c2VEYXRh
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBwYXVzZURhdGEtPnNldFN0cmluZygidHlw
ZSIsIFByb3RvY29sOjpIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShicmVha3BvaW50VHlw
ZSkpOworICAgIHBhdXNlRGF0YS0+c2V0U3RyaW5nKCJ0eXBlIl9zLCBQcm90b2NvbDo6SGVscGVy
czo6Z2V0RW51bUNvbnN0YW50VmFsdWUoYnJlYWtwb2ludFR5cGUpKTsKICAgICBpZiAoYXV0byog
ZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpIHsK
ICAgICAgICAgaWYgKGF1dG8gYnJlYWtwb2ludE93bmVyTm9kZUlkID0gZG9tQWdlbnQtPnB1c2hO
b2RlVG9Gcm9udGVuZCgmYnJlYWtwb2ludE93bmVyKSkKLSAgICAgICAgICAgIHBhdXNlRGF0YS0+
c2V0SW50ZWdlcigibm9kZUlkIiwgYnJlYWtwb2ludE93bmVyTm9kZUlkKTsKKyAgICAgICAgICAg
IHBhdXNlRGF0YS0+c2V0SW50ZWdlcigibm9kZUlkIl9zLCBicmVha3BvaW50T3duZXJOb2RlSWQp
OwogICAgIH0KICAgICByZXR1cm4gcGF1c2VEYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVy
aWZpY2F0aW9uLmNwcAppbmRleCA1MzFkMjRjNDNlZmIxNGEyNzg2NGZmNWY5NjBlMjEwOTkwYzVk
YzJlLi5lNjlkZDEyMDUwNjQyNjExZDliNTJiZjk2MDllN2E4ZDgxMTY5Y2ExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcApAQCAtMTY3LDE0ICsxNjcsMTQgQEAgc3RhdGlj
IGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUluZm9ybWF0aW9uSWZOZWVkZWQoVGV4
dFN0cmVhbSYgc3RyZWFtLAogc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveElu
Zm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUsIGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IEJveCYgbGF5b3V0
Qm94KQogewogICAgIGJvb2wgZmlyc3RNaXNtYXRjaGluZ1JlY3QgPSB0cnVlOwotICAgIGF1dG8g
b3V0cHV0UmVjdCA9IFsmXSAoY29uc3QgU3RyaW5nJiBwcmVmaXgsIGNvbnN0IExheW91dFJlY3Qm
IHJlbmRlcmVyUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5b3V0UmVjdCkgeworICAgIGF1dG8g
b3V0cHV0UmVjdCA9IFsmXSAoQVNDSUlMaXRlcmFsIHByZWZpeCwgY29uc3QgTGF5b3V0UmVjdCYg
cmVuZGVyZXJSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXlvdXRSZWN0KSB7CiAgICAgICAgIGlm
IChmaXJzdE1pc21hdGNoaW5nUmVjdCkgewotICAgICAgICAgICAgc3RyZWFtIDw8IChyZW5kZXJl
ci5lbGVtZW50KCkgPyByZW5kZXJlci5lbGVtZW50KCktPm5vZGVOYW1lKCkudXRmOCgpLmRhdGEo
KSA6ICIiKSA8PCAiICIgPDwgcmVuZGVyZXIucmVuZGVyTmFtZSgpIDw8ICIoIiA8PCAmcmVuZGVy
ZXIgPDwgIikgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSI7CisgICAgICAgICAgICBz
dHJlYW0gPDwgKHJlbmRlcmVyLmVsZW1lbnQoKSA/IHJlbmRlcmVyLmVsZW1lbnQoKS0+bm9kZU5h
bWUoKS51dGY4KCkuZGF0YSgpIDogIiIpIDw8ICIgIiA8PCByZW5kZXJlci5yZW5kZXJOYW1lKCku
Y2hhcmFjdGVycygpIDw8ICIoIiA8PCAmcmVuZGVyZXIgPDwgIikgbGF5b3V0Qm94KCIgPDwgJmxh
eW91dEJveCA8PCAiKSI7CiAgICAgICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsKICAgICAgICAg
ICAgIGZpcnN0TWlzbWF0Y2hpbmdSZWN0ID0gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBz
dHJlYW0gIDw8IHByZWZpeC51dGY4KCkuZGF0YSgpIDw8ICJcdHJlbmRlcmVyLT4oIiA8PCByZW5k
ZXJlclJlY3QueCgpIDw8ICIsIiA8PCByZW5kZXJlclJlY3QueSgpIDw8ICIpICgiIDw8IHJlbmRl
cmVyUmVjdC53aWR0aCgpIDw8ICJ4IiA8PCByZW5kZXJlclJlY3QuaGVpZ2h0KCkgPDwgIikiCisg
ICAgICAgIHN0cmVhbSAgPDwgcHJlZml4LmNoYXJhY3RlcnMoKSA8PCAiXHRyZW5kZXJlci0+KCIg
PDwgcmVuZGVyZXJSZWN0LngoKSA8PCAiLCIgPDwgcmVuZGVyZXJSZWN0LnkoKSA8PCAiKSAoIiA8
PCByZW5kZXJlclJlY3Qud2lkdGgoKSA8PCAieCIgPDwgcmVuZGVyZXJSZWN0LmhlaWdodCgpIDw8
ICIpIgogICAgICAgICAgICAgPDwgIlx0bGF5b3V0LT4oIiA8PCBsYXlvdXRSZWN0LngoKSA8PCAi
LCIgPDwgbGF5b3V0UmVjdC55KCkgPDwgIikgKCIgPDwgbGF5b3V0UmVjdC53aWR0aCgpIDw8ICJ4
IiA8PCBsYXlvdXRSZWN0LmhlaWdodCgpIDw8ICIpIjsgCiAgICAgICAgIHN0cmVhbS5uZXh0TGlu
ZSgpOwogICAgIH07CkBAIC0yMzcsMTkgKzIzNywxOSBAQCBzdGF0aWMgYm9vbCBvdXRwdXRNaXNt
YXRjaGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNv
bgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoIWFyZUVzc2VudGlh
bGx5RXF1YWwoZnJhbWVSZWN0LCBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChib3hHZW9tZXRy
eSkpKSB7Ci0gICAgICAgIG91dHB1dFJlY3QoImZyYW1lQm94IiwgcmVuZGVyZXIuZnJhbWVSZWN0
KCksIEJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGJveEdlb21ldHJ5KSk7CisgICAgICAgIG91
dHB1dFJlY3QoImZyYW1lQm94Il9zLCByZW5kZXJlci5mcmFtZVJlY3QoKSwgQm94R2VvbWV0cnk6
OmJvcmRlckJveFJlY3QoYm94R2VvbWV0cnkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCiAgICAgaWYgKCFhcmVFc3NlbnRpYWxseUVxdWFsKHJlbmRlcmVyLmJvcmRlckJveFJlY3Qo
KSwgYm94R2VvbWV0cnkuYm9yZGVyQm94KCkpKSB7Ci0gICAgICAgIG91dHB1dFJlY3QoImJvcmRl
ckJveCIsIHJlbmRlcmVyLmJvcmRlckJveFJlY3QoKSwgYm94R2VvbWV0cnkuYm9yZGVyQm94KCkp
OworICAgICAgICBvdXRwdXRSZWN0KCJib3JkZXJCb3giX3MsIHJlbmRlcmVyLmJvcmRlckJveFJl
Y3QoKSwgYm94R2VvbWV0cnkuYm9yZGVyQm94KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKICAgICAvLyBXaGVuIHRoZSB0YWJsZSByb3cgYm9yZGVyIG92ZXJmbG93cyB0aGUgcm93
LCBwYWRkaW5nIGJveCBiZWNvbWVzIG5lZ2F0aXZlIGFuZCBjb250ZW50IGJveCBpcyBpbmNvcnJl
Y3QuCiAgICAgYXV0byBzaG91bGRDaGVja1BhZGRpbmdBbmRDb250ZW50Qm94ID0gIWlzPFJlbmRl
clRhYmxlUm93PihyZW5kZXJlcikgfHwgcmVuZGVyZXIucGFkZGluZ0JveFJlY3QoKS53aWR0aCgp
ID49IDA7CiAgICAgaWYgKHNob3VsZENoZWNrUGFkZGluZ0FuZENvbnRlbnRCb3ggJiYgIWFyZUVz
c2VudGlhbGx5RXF1YWwocmVuZGVyZXIucGFkZGluZ0JveFJlY3QoKSwgYm94R2VvbWV0cnkucGFk
ZGluZ0JveCgpKSkgewotICAgICAgICBvdXRwdXRSZWN0KCJwYWRkaW5nQm94IiwgcmVuZGVyZXIu
cGFkZGluZ0JveFJlY3QoKSwgYm94R2VvbWV0cnkucGFkZGluZ0JveCgpKTsKKyAgICAgICAgb3V0
cHV0UmVjdCgicGFkZGluZ0JveCJfcywgcmVuZGVyZXIucGFkZGluZ0JveFJlY3QoKSwgYm94R2Vv
bWV0cnkucGFkZGluZ0JveCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0y
NjMsNyArMjYzLDcgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9y
bWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb24KICAgICAgICAgcmV0dXJuICFp
czxSZW5kZXJUYWJsZT4ocmVuZGVyZXIpIHx8ICFkb3duY2FzdDxSZW5kZXJUYWJsZT4ocmVuZGVy
ZXIpLmNvbGxhcHNlQm9yZGVycygpOwogICAgIH0oKTsKICAgICBpZiAoc2hvdWxkQ2hlY2tDb250
ZW50Qm94ICYmICFhcmVFc3NlbnRpYWxseUVxdWFsKHJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCks
IGJveEdlb21ldHJ5LmNvbnRlbnRCb3goKSkpIHsKLSAgICAgICAgb3V0cHV0UmVjdCgiY29udGVu
dEJveCIsIHJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCksIGJveEdlb21ldHJ5LmNvbnRlbnRCb3go
KSk7CisgICAgICAgIG91dHB1dFJlY3QoImNvbnRlbnRCb3giX3MsIHJlbmRlcmVyLmNvbnRlbnRC
b3hSZWN0KCksIGJveEdlb21ldHJ5LmNvbnRlbnRCb3goKSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApAQCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNo
aW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uCiAg
ICAgICAgICAgICAmJiBib3hHZW9tZXRyeS5tYXJnaW5FbmQoKSA9PSByZW5kZXJlci5tYXJnaW5F
bmQoKTsKIAogICAgICAgICBpZiAoIW1hcmdpbnNNYXRjaCkgewotICAgICAgICAgICAgb3V0cHV0
UmVjdCgibWFyZ2luQm94IiwgcmVuZGVyZXIubWFyZ2luQm94UmVjdCgpLCByZW5kZXJCb3hMaWtl
TWFyZ2luQm94KGJveEdlb21ldHJ5KSk7CisgICAgICAgICAgICBvdXRwdXRSZWN0KCJtYXJnaW5C
b3giX3MsIHJlbmRlcmVyLm1hcmdpbkJveFJlY3QoKSwgcmVuZGVyQm94TGlrZU1hcmdpbkJveChi
b3hHZW9tZXRyeSkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25Db3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKaW5kZXggNzYyYzlkZTliMDQ3MjAzNGU2NjU3
MmZmMjBmN2E4ZDgzMzczN2U1Yy4uMjMxZDM2YmMwYTM3MWQ0OTY1NTdjYmI1MmQwZTczMTgxMDhj
NjBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcApAQCAtNTUzLDggKzU1Myw4IEBA
IE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZvckxpbmVMYXlvdXRXaXRoUmVhc29u
KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYKICNpZm5kZWYgTkRFQlVHCiAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0g
ICAgICAgIFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjaygiY29tLmFwcGxlLldlYktpdC5zaG93
TW9kZXJuTGluZUxheW91dENvdmVyYWdlIiwgRnVuY3Rpb248dm9pZCgpPiB7IHByaW50TW9kZXJu
TGluZUxheW91dENvdmVyYWdlIH0pOwotICAgICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJh
Y2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd01vZGVybkxpbmVMYXlvdXRSZWFzb25zIiwgRnVuY3Rp
b248dm9pZCgpPiB7IHByaW50TW9kZXJuTGluZUxheW91dEJsb2NrTGlzdCB9KTsKKyAgICAgICAg
UEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dNb2Rlcm5M
aW5lTGF5b3V0Q292ZXJhZ2UiX3MsIEZ1bmN0aW9uPHZvaWQoKT4geyBwcmludE1vZGVybkxpbmVM
YXlvdXRDb3ZlcmFnZSB9KTsKKyAgICAgICAgUEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJj
b20uYXBwbGUuV2ViS2l0LnNob3dNb2Rlcm5MaW5lTGF5b3V0UmVhc29ucyJfcywgRnVuY3Rpb248
dm9pZCgpPiB7IHByaW50TW9kZXJuTGluZUxheW91dEJsb2NrTGlzdCB9KTsKICAgICB9KTsKICNl
bmRpZgogICAgIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IHJlYXNvbnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAppbmRleCAxMTg0YjdjMzk2MWY2NDhkZGViZDZkNGRiZGRh
NDZhM2YxZTQ2MjU0Li4xN2M0NDNmNzc5OGQwNDEzMzgyYjFmNmQyYjI5Y2VmOWQ5ZTE0MjEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZp
bHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+
Q29udGVudEZpbHRlcigpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHVybFNjaGVtZSgpIHsg
cmV0dXJuICJ4LWFwcGxlLWNvbnRlbnQtZmlsdGVyIjsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIg
QVNDSUlMaXRlcmFsIHVybFNjaGVtZSgpIHsgcmV0dXJuICJ4LWFwcGxlLWNvbnRlbnQtZmlsdGVy
Il9zOyB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2Uo
Y29uc3QgVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2wuY3BwCmluZGV4IGQ5Y2E2ZmNkOTQ1Njk5OGY1OGM2MjQ1N2QyMTY2MjI1MjY1
MmE3M2IuLjkyMjNlMDQ0MGZhM2ExYzA4ZjJmZTZlZDY0Njc3ODMzZjcyMWUyNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCkBA
IC04Nyw3ICs4Nyw3IEBAIFJlc291cmNlUmVxdWVzdCBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxp
Z2h0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgc3RhdGljIGNvbnN0
IGRvdWJsZSBwbGF0Zm9ybURlZmF1bHRUaW1lb3V0ID0gMDsKICAgICBwcmVmbGlnaHRSZXF1ZXN0
LnNldFRpbWVvdXRJbnRlcnZhbChwbGF0Zm9ybURlZmF1bHRUaW1lb3V0KTsKICAgICB1cGRhdGVS
ZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChwcmVmbGlnaHRSZXF1ZXN0LCBzZWN1cml0eU9yaWdpbiwg
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlKTsKLSAgICBwcmVmbGlnaHRSZXF1ZXN0
LnNldEhUVFBNZXRob2QoIk9QVElPTlMiKTsKKyAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhUVFBN
ZXRob2QoIk9QVElPTlMiX3MpOwogICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SFRUUEhlYWRlckZp
ZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sUmVxdWVzdE1ldGhvZCwgcmVxdWVzdC5o
dHRwTWV0aG9kKCkpOwogICAgIHByZWZsaWdodFJlcXVlc3Quc2V0UHJpb3JpdHkocmVxdWVzdC5w
cmlvcml0eSgpKTsKICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVz
KHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKaW5kZXgg
YzRmOGNhYjZlZTNhMWZkYjkyNmJjZWM5OGEzMTMyYmU1M2Y3ZjM1My4uZWY0ZDU4Y2E3MzA1ZGE2
Nzg1NTYxNTdhNDY5NGFhMGY5NDQxZjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcApAQCAtODUsMTIg
Kzg1LDEyIEBAIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBDcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dENhY2hlSXRlbTo6dmFsaWRhdGVNZXRob2RBbmRIZWFkCiAKIGJvb2wgQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZUl0ZW06OmFsbG93c0Nyb3NzT3JpZ2luTWV0aG9kKGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tZXRob2RzLmNvbnRhaW5zKG1ldGhvZCkgfHwgKG1f
bWV0aG9kcy5jb250YWlucygiKiIpICYmIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ICE9IFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpIHx8IGlzT25BY2Nlc3NDb250cm9sU2ltcGxlUmVxdWVz
dE1ldGhvZEFsbG93bGlzdChtZXRob2QpOworICAgIHJldHVybiBtX21ldGhvZHMuY29udGFpbnMo
bWV0aG9kKSB8fCAobV9tZXRob2RzLmNvbnRhaW5zKCIqIl9zKSAmJiBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSAhPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKSB8fCBpc09uQWNjZXNzQ29u
dHJvbFNpbXBsZVJlcXVlc3RNZXRob2RBbGxvd2xpc3QobWV0aG9kKTsKIH0KIAogc3RkOjpvcHRp
b25hbDxTdHJpbmc+IENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjp2YWxpZGF0
ZUNyb3NzT3JpZ2luSGVhZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycywg
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIGNvbnN0CiB7
Ci0gICAgYm9vbCB2YWxpZFdpbGRjYXJkID0gbV9oZWFkZXJzLmNvbnRhaW5zKCIqIikgJiYgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgIT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKKyAg
ICBib29sIHZhbGlkV2lsZGNhcmQgPSBtX2hlYWRlcnMuY29udGFpbnMoIioiX3MpICYmIHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5ICE9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiByZXF1ZXN0SGVhZGVycykgewogICAgICAgICBpZiAo
aGVhZGVyLmtleUFzSFRUUEhlYWRlck5hbWUgJiYgaXNDcm9zc09yaWdpblNhZmVSZXF1ZXN0SGVh
ZGVyKGhlYWRlci5rZXlBc0hUVFBIZWFkZXJOYW1lLnZhbHVlKCksIGhlYWRlci52YWx1ZSkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IDI4ZGU3MzM3NDM0YmVjODk4ZTE2NTFkYWM0MmQ5NzczNzQ5MDg0ZWUuLjg3ODZj
NTI1OWI4OTgwMTI4MzU3NDQ1MjBmZWY1OWJhYzA2NGY5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjAwNCw3ICsyMDA0LDcgQEAgYm9vbCBEb2N1bWVu
dExvYWRlcjo6bWF5YmVMb2FkRW1wdHkoKQogICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xp
ZW50KCkuZGlzcGF0Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCgpOwogICAgIH0KIAotICAgIFN0
cmluZyBtaW1lVHlwZSA9IHNob3VsZExvYWRFbXB0eSA/ICJ0ZXh0L2h0bWwiIDogZnJhbWVMb2Fk
ZXIoKS0+Y2xpZW50KCkuZ2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUobV9yZXF1ZXN0LnVy
bCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKKyAgICBTdHJpbmcgbWlt
ZVR5cGUgPSBzaG91bGRMb2FkRW1wdHkgPyAidGV4dC9odG1sIl9zIDogZnJhbWVMb2FkZXIoKS0+
Y2xpZW50KCkuZ2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUobV9yZXF1ZXN0LnVybCgpLnBy
b3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKICAgICBtX3Jlc3BvbnNlID0gUmVz
b3VyY2VSZXNwb25zZShtX3JlcXVlc3QudXJsKCksIG1pbWVUeXBlLCAwLCAiVVRGLTgiX3MpOwog
CiAgICAgaWYgKCFmcmFtZUxvYWRlcigpLT5zdGF0ZU1hY2hpbmUoKS5pc0Rpc3BsYXlpbmdJbml0
aWFsRW1wdHlEb2N1bWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDdiYzJiNzc3MTBlYzgwMTVmOTYwNDUxZGRl
YzUwN2Y0ZTBiYTBlNDcuLjEzNDQ2Mjg5YjVmZmZiZjA0MjEwYzFmMjMwMWU5YzI2N2RiZWU0ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmwKIAogICAg
IGlmIChkb2N1bWVudC5zZXR0aW5ncygpLmRpc2FsbG93U3luY1hIUkR1cmluZ1BhZ2VEaXNtaXNz
YWxFbmFibGVkKCkgJiYgIW1fYXN5bmMgJiYgKCFkb2N1bWVudC5wYWdlKCkgfHwgIWRvY3VtZW50
LnBhZ2UoKS0+YXJlU3luY2hyb25vdXNMb2Fkc0FsbG93ZWQoKSkpIHsKICAgICAgICAgZG9jdW1l
bnQuZGlkUmVqZWN0U3luY1hIUkR1cmluZ1BhZ2VEaXNtaXNzYWwoKTsKLSAgICAgICAgbG9nRXJy
b3JBbmRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVx
dWVzdC51cmwoKSwgIlN5bmNocm9ub3VzIGxvYWRzIGFyZSBub3QgYWxsb3dlZCBhdCB0aGlzIHRp
bWUiKSk7CisgICAgICAgIGxvZ0Vycm9yQW5kRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QudXJsKCksICJTeW5jaHJvbm91cyBsb2FkcyBhcmUg
bm90IGFsbG93ZWQgYXQgdGhpcyB0aW1lIl9zKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTE3OSw3ICsxNzksNyBAQCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIFRocmVhZGFibAogICAgIH0KIAogICAg
IGlmIChtX29wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW4pIHsK
LSAgICAgICAgbG9nRXJyb3JBbmRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgcmVxdWVzdC51cmwoKSwgIkNyb3NzIG9yaWdpbiByZXF1ZXN0cyBhcmUgbm90
IGFsbG93ZWQgd2hlbiB1c2luZyBzYW1lLW9yaWdpbiBmZXRjaCBtb2RlLiIpKTsKKyAgICAgICAg
bG9nRXJyb3JBbmRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwg
MCwgcmVxdWVzdC51cmwoKSwgIkNyb3NzIG9yaWdpbiByZXF1ZXN0cyBhcmUgbm90IGFsbG93ZWQg
d2hlbiB1c2luZyBzYW1lLW9yaWdpbiBmZXRjaCBtb2RlLiJfcykpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xOTAsNyArMTkwLDcgQEAgYm9vbCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmNoZWNrVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBVUkwmIHVybCkKIHsKICAgICAv
LyBDcm9zcy1vcmlnaW4gcmVxdWVzdHMgYXJlIG9ubHkgYWxsb3dlZCBmb3IgSFRUUCBhbmQgcmVn
aXN0ZXJlZCBzY2hlbWVzLiBXZSB3b3VsZCBjYXRjaCB0aGlzIHdoZW4gY2hlY2tpbmcgcmVzcG9u
c2UgaGVhZGVycyBsYXRlciwgYnV0IHRoZXJlIGlzIG5vIHJlYXNvbiB0byBzZW5kIGEgcmVxdWVz
dCB0aGF0J3MgZ3VhcmFudGVlZCB0byBiZSBkZW5pZWQuCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVS
ZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybC5wcm90b2NvbCgp
LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpIHsKLSAgICAgICAgbG9nRXJyb3JBbmRGYWlsKFJl
c291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCAiQ3Jvc3Mgb3Jp
Z2luIHJlcXVlc3RzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgSFRUUC4iLCBSZXNvdXJjZUVycm9y
OjpUeXBlOjpBY2Nlc3NDb250cm9sKSk7CisgICAgICAgIGxvZ0Vycm9yQW5kRmFpbChSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIkNyb3NzIG9yaWdpbiBy
ZXF1ZXN0cyBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIEhUVFAuIl9zLCBSZXNvdXJjZUVycm9yOjpU
eXBlOjpBY2Nlc3NDb250cm9sKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
cmV0dXJuIHRydWU7CkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmNhbmNlbCgpCiAgICAgLy8gQ2FuY2VsIGNhbiByZS1lbnRlciBhbmQgbV9yZXNvdXJj
ZSBtaWdodCBiZSBudWxsIGhlcmUgYXMgYSByZXN1bHQuCiAgICAgaWYgKG1fY2xpZW50ICYmIG1f
cmVzb3VyY2UpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgZXJyb3IgaXMgc2VudCB0byB0aGUg
Y2xpZW50IGluIGRpZEZhaWwoKSwgc28gaXQgc2hvdWxkIG5vdCBiZSBhbiBpbnRlcm5hbCBvbmUu
IFVzZSBGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVkRXJyb3IoKSBpbnN0ZWFkLgotICAgICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1fcmVz
b3VyY2UtPnVybCgpLCAiTG9hZCBjYW5jZWxsZWQiLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5j
ZWxsYXRpb24pOworICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIG1fcmVzb3VyY2UtPnVybCgpLCAiTG9hZCBjYW5jZWxsZWQiX3MsIFJlc291
cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CiAgICAgICAgIG1fY2xpZW50LT5kaWRGYWls
KGVycm9yKTsKICAgICB9CiAgICAgY2xlYXJSZXNvdXJjZSgpOwpAQCAtNjMxLDcgKzYzMSw3IEBA
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgfQogCiAgICAgaWYgKHJlc3BvbnNlLmNvbnRh
aW5zSW52YWxpZEhUVFBIZWFkZXJzKCkpIHsKLSAgICAgICAgZGlkRmFpbChpZGVudGlmaWVyLCBS
ZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QudXJsKCks
ICJSZXNwb25zZSBjb250YWluZWQgaW52YWxpZCBIVFRQIGhlYWRlcnMiLCBSZXNvdXJjZUVycm9y
OjpUeXBlOjpHZW5lcmFsKSk7CisgICAgICAgIGRpZEZhaWwoaWRlbnRpZmllciwgUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLCAiUmVzcG9u
c2UgY29udGFpbmVkIGludmFsaWQgSFRUUCBoZWFkZXJzIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBl
OjpHZW5lcmFsKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IGNlZTgyYTNmMDcxM2FjNDAyZTUyZWZhZDhiNWEw
Zjg1YTM0OGU4NDEuLmU2NGQ5YmJhOGYxNDEyMzg0ZTAwNjkwMTBhMjljY2NmMTk5OTFhMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMjAzLDcgKzIwMyw3
IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1MRm9ybUVs
ZW1lbnQmIGZvcm0sIEhUTUxGb3JtQ29udHJvCiAgICAgaWYgKGNvcGllZEF0dHJpYnV0ZXMubWV0
aG9kKCkgPT0gTWV0aG9kOjpQb3N0KSB7CiAgICAgICAgIGlzTXVsdGlQYXJ0Rm9ybSA9IGNvcGll
ZEF0dHJpYnV0ZXMuaXNNdWx0aVBhcnRGb3JtKCk7CiAgICAgICAgIGlmIChpc011bHRpUGFydEZv
cm0gJiYgaXNNYWlsdG9Gb3JtKSB7Ci0gICAgICAgICAgICBlbmNvZGluZ1R5cGUgPSAiYXBwbGlj
YXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIjsKKyAgICAgICAgICAgIGVuY29kaW5nVHlwZSA9
ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiX3M7CiAgICAgICAgICAgICBpc011
bHRpUGFydEZvcm0gPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTIyMSw3ICsyMjEsNyBA
QCBSZWY8Rm9ybVN1Ym1pc3Npb24+IEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUoSFRNTEZvcm1FbGVt
ZW50JiBmb3JtLCBIVE1MRm9ybUNvbnRybwogCiAgICAgaWYgKGlzTXVsdGlQYXJ0Rm9ybSkgewog
ICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoZG9tRm9ybURhdGEp
OwotICAgICAgICBib3VuZGFyeSA9IGZvcm1EYXRhLT5ib3VuZGFyeSgpLmRhdGEoKTsKKyAgICAg
ICAgYm91bmRhcnkgPSBTdHJpbmcgeyBmb3JtRGF0YS0+Ym91bmRhcnkoKS5kYXRhKCkgfTsKICAg
ICB9IGVsc2UgewogICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoZG9tRm9ybURh
dGEsIGF0dHJpYnV0ZXMubWV0aG9kKCkgPT0gTWV0aG9kOjpHZXQgPyBGb3JtRGF0YTo6Rm9ybVVS
TEVuY29kZWQgOiBGb3JtRGF0YTo6cGFyc2VFbmNvZGluZ1R5cGUoZW5jb2RpbmdUeXBlKSk7CiAg
ICAgICAgIGlmIChjb3BpZWRBdHRyaWJ1dGVzLm1ldGhvZCgpID09IE1ldGhvZDo6UG9zdCAmJiBp
c01haWx0b0Zvcm0pIHsKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIEZvcm1TdWJtaXNzaW9uOjpw
b3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVSZXF1ZXN0KQog
ICAgICAgICBmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVyKG1f
cmVmZXJyZXIpOwogCiAgICAgaWYgKG1fbWV0aG9kID09IE1ldGhvZDo6UG9zdCkgewotICAgICAg
ICBmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwor
ICAgICAgICBmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUE1ldGhvZCgiUE9T
VCJfcyk7CiAgICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQm9k
eShtX2Zvcm1EYXRhLmNvcHlSZWYoKSk7CiAKICAgICAgICAgLy8gY29uc3RydWN0IHNvbWUgdXNl
ciBoZWFkZXJzIGlmIG5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggOTZlNjJiYTU5NWQzYzEzMjA2M2I1YTRhOWJlMTY2YTA0M2QxYzExOS4uOWVkODA2YjRj
M2NiMTgyNmE3NDMyYTZkNjhmYjYzZmYwNzUyOWM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0yOTcxLDcgKzI5NzEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cGRh
dGVSZXF1ZXN0QW5kQWRkRXh0cmFGaWVsZHMoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBJc01h
aQogICAgIC8vIE9ubHkgc2V0IGZhbGxiYWNrIGFycmF5IGlmIGl0J3Mgc3RpbGwgZW1wdHkgKGxh
dGVyIGF0dGVtcHRzIG1heSBiZSBpbmNvcnJlY3QsIHNlZSBidWcgMTE3ODE4KS4KICAgICBpZiAo
cmVxdWVzdC5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgp
LmlzRW1wdHkoKSkgewogICAgICAgICAvLyBBbHdheXMgdHJ5IFVURi04LiBJZiB0aGF0IGZhaWxz
LCB0cnkgZnJhbWUgZW5jb2RpbmcgKGlmIGFueSkgYW5kIHRoZW4gdGhlIGRlZmF1bHQuCi0gICAg
ICAgIHJlcXVlc3Quc2V0UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXkoIlVURi04IiwgbV9mcmFtZS5kb2N1bWVudCgpLT5lbmNvZGluZygpLCBtX2ZyYW1lLnNl
dHRpbmdzKCkuZGVmYXVsdFRleHRFbmNvZGluZ05hbWUoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0
UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoIlVURi04Il9z
LCBtX2ZyYW1lLmRvY3VtZW50KCktPmVuY29kaW5nKCksIG1fZnJhbWUuc2V0dGluZ3MoKS5kZWZh
dWx0VGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICB9CiAKICAgICBpZiAoc2hvdWxkVXBkYXRlID09
IFNob3VsZFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlOjpZZXMgJiYgbV9mcmFtZS5tYWluRnJhbWUo
KS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQpAQCAtMzA2MSw3ICszMDYxLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBTdHJpbmcmIHJlZmUKICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkKICAgICAgICAg
d29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAgIHdv
cmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE9yaWdpbihvcmlnaW4pOwotICAgIHdvcmtpbmdS
ZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOworICAgIHdvcmtpbmdSZXNvdXJj
ZVJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCJfcyk7CiAgICAgd29ya2luZ1Jlc291cmNlUmVx
dWVzdC5zZXRIVFRQQm9keShpblJlcXVlc3QuaHR0cEJvZHkoKSk7CiAgICAgd29ya2luZ1Jlc291
cmNlUmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoY29udGVudFR5cGUpOwogICAgIHVwZGF0ZVJl
cXVlc3RBbmRBZGRFeHRyYUZpZWxkcyh3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBJc01haW5SZXNv
dXJjZTo6WWVzLCBsb2FkVHlwZSwgU2hvdWxkVXBkYXRlQXBwSW5pdGlhdGVkVmFsdWU6Olllcywg
RnJhbWVMb2FkZXI6OklzU2VydmljZVdvcmtlck5hdmlnYXRpb25Mb2FkOjpObywgJnJlcXVlc3Qu
cmVxdWVzdGVyKCkpOwpAQCAtMzgxOCw3ICszODE4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZERpZmZlcmVudERvY3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0ZW0qIGZy
b20KICAgICAvLyBJZiB0aGlzIHdhcyBhIHJlcG9zdCB0aGF0IGZhaWxlZCB0aGUgcGFnZSBjYWNo
ZSwgd2UgbWlnaHQgdHJ5IHRvIHJlcG9zdCB0aGUgZm9ybS4KICAgICBOYXZpZ2F0aW9uQWN0aW9u
IGFjdGlvbjsKICAgICBpZiAoZm9ybURhdGEpIHsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJQT1NUIik7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCJfcyk7CiAg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBDb250ZW50VHlwZShpdGVtLmZvcm1Db250ZW50VHlwZSgpKTsKICAgICAg
ICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KGl0ZW0ucmVmZXJyZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1h
Z2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRl
eCBjM2NiNmQ0ODI5MGIyMWFiYTE4NjVlZGNhZDQ1M2VkZDZhNzczMzQ1Li5jYjMzNmY4Y2IwMWNh
YmQ1M2FhMjc5OGNlNjgwODk4N2NmNjYwOTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAKQEAgLTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVzb2x2ZVBy
b21pc2VzKFZlY3RvcjxSZWZQdHI8RGVmZXJyZWRQcm9taXNlPj4mIHByb21pc2VzKQogICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCByZWplY3RQcm9t
aXNlcyhWZWN0b3I8UmVmUHRyPERlZmVycmVkUHJvbWlzZT4+JiBwcm9taXNlcywgY29uc3QgY2hh
ciogbWVzc2FnZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCByZWplY3RQcm9taXNlcyhWZWN0b3I8UmVm
UHRyPERlZmVycmVkUHJvbWlzZT4+JiBwcm9taXNlcywgQVNDSUlMaXRlcmFsIG1lc3NhZ2UpCiB7
CiAgICAgQVNTRVJUKCFwcm9taXNlcy5pc0VtcHR5KCkpOwogICAgIGF1dG8gcHJvbWlzZXNUb0Jl
UmVqZWN0ZWQgPSBzdGQ6OmV4Y2hhbmdlKHByb21pc2VzLCB7IH0pOwpAQCAtMzQxLDcgKzM0MSw3
IEBAIGlubGluZSB2b2lkIEltYWdlTG9hZGVyOjpyZXNvbHZlRGVjb2RlUHJvbWlzZXMoKQogICAg
IHJlc29sdmVQcm9taXNlcyhtX2RlY29kaW5nUHJvbWlzZXMpOwogfQogCi1pbmxpbmUgdm9pZCBJ
bWFnZUxvYWRlcjo6cmVqZWN0RGVjb2RlUHJvbWlzZXMoY29uc3QgY2hhciogbWVzc2FnZSkKK2lu
bGluZSB2b2lkIEltYWdlTG9hZGVyOjpyZWplY3REZWNvZGVQcm9taXNlcyhBU0NJSUxpdGVyYWwg
bWVzc2FnZSkKIHsKICAgICByZWplY3RQcm9taXNlcyhtX2RlY29kaW5nUHJvbWlzZXMsIG1lc3Nh
Z2UpOwogfQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyCiAgICAg
ICAgIGVsZW1lbnQoKS5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKIAogICAgICAgICBpZiAo
aGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkpCi0gICAgICAgICAgICByZWplY3REZWNvZGVQcm9t
aXNlcygiQWNjZXNzIGNvbnRyb2wgZXJyb3IuIik7CisgICAgICAgICAgICByZWplY3REZWNvZGVQ
cm9taXNlcygiQWNjZXNzIGNvbnRyb2wgZXJyb3IuIl9zKTsKICAgICAgICAgCiAgICAgICAgIEFT
U0VSVCghbV9oYXNQZW5kaW5nTG9hZEV2ZW50KTsKIApAQCAtMzg3LDcgKzM4Nyw3IEBAIHZvaWQg
SW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyCiAKICAgICBpZiAobV9pbWFnZS0+d2FzQ2FuY2VsZWQoKSkgewog
ICAgICAgICBpZiAoaGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkpCi0gICAgICAgICAgICByZWpl
Y3REZWNvZGVQcm9taXNlcygiTG9hZGluZyB3YXMgY2FuY2VsZWQuIik7CisgICAgICAgICAgICBy
ZWplY3REZWNvZGVQcm9taXNlcygiTG9hZGluZyB3YXMgY2FuY2VsZWQuIl9zKTsKICAgICAgICAg
bV9oYXNQZW5kaW5nTG9hZEV2ZW50ID0gZmFsc2U7CiAgICAgICAgIC8vIE9ubHkgY29uc2lkZXIg
dXBkYXRpbmcgdGhlIHByb3RlY3Rpb24gcmVmLWNvdW50IG9mIHRoZSBFbGVtZW50IGltbWVkaWF0
ZWx5IGJlZm9yZSByZXR1cm5pbmcKICAgICAgICAgLy8gZnJvbSB0aGlzIGZ1bmN0aW9uIGFzIGRv
aW5nIHNvIG1pZ2h0IHJlc3VsdCBpbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhpcyBJbWFnZUxvYWRl
ci4KQEAgLTQ2NCwxMyArNDY0LDEzIEBAIHZvaWQgSW1hZ2VMb2FkZXI6OmRlY29kZShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgbV9kZWNvZGluZ1Byb21pc2VzLmFwcGVuZChX
VEZNb3ZlKHByb21pc2UpKTsKIAogICAgIGlmICghZWxlbWVudCgpLmRvY3VtZW50KCkuZG9tV2lu
ZG93KCkpIHsKLSAgICAgICAgcmVqZWN0RGVjb2RlUHJvbWlzZXMoIkluYWN0aXZlIGRvY3VtZW50
LiIpOworICAgICAgICByZWplY3REZWNvZGVQcm9taXNlcygiSW5hY3RpdmUgZG9jdW1lbnQuIl9z
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEF0b21TdHJpbmcgYXR0ciA9IGVsZW1l
bnQoKS5pbWFnZVNvdXJjZVVSTCgpOwogICAgIGlmIChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoYXR0cikuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlamVjdERlY29kZVByb21pc2Vz
KCJNaXNzaW5nIHNvdXJjZSBVUkwuIik7CisgICAgICAgIHJlamVjdERlY29kZVByb21pc2VzKCJN
aXNzaW5nIHNvdXJjZSBVUkwuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDgz
LDEyICs0ODMsMTIgQEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGVjb2RlKCkKICAgICBBU1NFUlQoaGFz
UGVuZGluZ0RlY29kZVByb21pc2VzKCkpOwogICAgIAogICAgIGlmICghZWxlbWVudCgpLmRvY3Vt
ZW50KCkuZG9tV2luZG93KCkpIHsKLSAgICAgICAgcmVqZWN0RGVjb2RlUHJvbWlzZXMoIkluYWN0
aXZlIGRvY3VtZW50LiIpOworICAgICAgICByZWplY3REZWNvZGVQcm9taXNlcygiSW5hY3RpdmUg
ZG9jdW1lbnQuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghbV9pbWFn
ZSB8fCAhbV9pbWFnZS0+aW1hZ2UoKSB8fCBtX2ltYWdlLT5lcnJvck9jY3VycmVkKCkpIHsKLSAg
ICAgICAgcmVqZWN0RGVjb2RlUHJvbWlzZXMoIkxvYWRpbmcgZXJyb3IuIik7CisgICAgICAgIHJl
amVjdERlY29kZVByb21pc2VzKCJMb2FkaW5nIGVycm9yLiJfcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggYWFhMTQxNDk4OGVk
Yzg2ODM1NjJjZTdjNjAwMjE0ZmVlOTNmNTE2Ny4uMTU4N2RhZmFkMTlkNmUzNDdhNDMwNjEyZTk1
MDYxODdlZTdjM2M3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKQEAgLTExMyw3
ICsxMTMsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBoYXNQZW5kaW5nRGVjb2RlUHJvbWlzZXMo
KSBjb25zdCB7IHJldHVybiAhbV9kZWNvZGluZ1Byb21pc2VzLmlzRW1wdHkoKTsgfQogICAgIHZv
aWQgcmVzb2x2ZURlY29kZVByb21pc2VzKCk7Ci0gICAgdm9pZCByZWplY3REZWNvZGVQcm9taXNl
cyhjb25zdCBjaGFyKiBtZXNzYWdlKTsKKyAgICB2b2lkIHJlamVjdERlY29kZVByb21pc2VzKEFT
Q0lJTGl0ZXJhbCBtZXNzYWdlKTsKICAgICB2b2lkIGRlY29kZSgpOwogICAgIAogICAgIHZvaWQg
dGltZXJGaXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29u
dGVudENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNr
ZXIuY3BwCmluZGV4IDIxOTBkOTdiOGQ4YTFkZGUyMWIzN2FiMjg0MjExYWJiNTE1Yzk0ZjAuLmY0
YzVhMjVmYTJhY2I4MTU4ZmViMmJlOGI4ODM2NWMxYzU1ZDM3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKQEAgLTUyLDEwICs1MiwxMCBAQCBi
b29sIE1peGVkQ29udGVudENoZWNrZXI6OmlzTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luJiBz
ZWN1cml0eU9yaWdpbiwgY29uc3QgVQogICAgIHJldHVybiAhU2VjdXJpdHlPcmlnaW46OmlzU2Vj
dXJlKHVybCk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ1dhcm5pbmcoY29uc3QgRnJhbWUmIGZyYW1l
LCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBVUkwmIHRhcmdldCkK
K3N0YXRpYyB2b2lkIGxvZ1dhcm5pbmcoY29uc3QgRnJhbWUmIGZyYW1lLCBib29sIGFsbG93ZWQs
IEFTQ0lJTGl0ZXJhbCBhY3Rpb24sIGNvbnN0IFVSTCYgdGFyZ2V0KQogewogICAgIGNvbnN0IGNo
YXIqIGVycm9yU3RyaW5nID0gYWxsb3dlZCA/ICIgd2FzIGFsbG93ZWQgdG8gIiA6ICIgd2FzIG5v
dCBhbGxvd2VkIHRvICI7Ci0gICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygoYWxsb3dlZCA/
IFN0cmluZygpIDogIltibG9ja2VkXSAiKSwgIlRoZSBwYWdlIGF0ICIsIGZyYW1lLmRvY3VtZW50
KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCBlcnJvclN0cmluZywg
YWN0aW9uLCAiIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiLCB0YXJnZXQuc3RyaW5nQ2VudGVyRWxs
aXBzaXplZFRvTGVuZ3RoKCksICIuXG4iKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5n
KChhbGxvd2VkID8gIiIgOiAiW2Jsb2NrZWRdICIpLCAiVGhlIHBhZ2UgYXQgIiwgZnJhbWUuZG9j
dW1lbnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksIGVycm9yU3Ry
aW5nLCBhY3Rpb24sICIgaW5zZWN1cmUgY29udGVudCBmcm9tICIsIHRhcmdldC5zdHJpbmdDZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIi5cbiIpOwogICAgIGZyYW1lLmRvY3VtZW50KCktPmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsIG1lc3NhZ2UpOwogfQogCkBAIC03Miw3ICs3Miw3IEBAIGJvb2wgTWl4ZWRDb250ZW50
Q2hlY2tlcjo6Y2FuRGlzcGxheUluc2VjdXJlQ29udGVudChGcmFtZSYgZnJhbWUsIFNlY3VyaXR5
T3JpZ2luCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYm9vbCBhbGxvd2VkID0gIWlzU3Ry
aWN0TW9kZSAmJiAoZnJhbWUuc2V0dGluZ3MoKS5hbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVu
dCgpIHx8IHR5cGUgPT0gQ29udGVudFR5cGU6OkFjdGl2ZUNhbldhcm4pICYmICFmcmFtZS5kb2N1
bWVudCgpLT5nZW9sb2NhdGlvbkFjY2Vzc2VkKCk7Ci0gICAgbG9nV2FybmluZyhmcmFtZSwgYWxs
b3dlZCwgImRpc3BsYXkiLCB1cmwpOworICAgIGxvZ1dhcm5pbmcoZnJhbWUsIGFsbG93ZWQsICJk
aXNwbGF5Il9zLCB1cmwpOwogCiAgICAgaWYgKGFsbG93ZWQpIHsKICAgICAgICAgZnJhbWUuZG9j
dW1lbnQoKS0+c2V0Rm91bmRNaXhlZENvbnRlbnQoU2VjdXJpdHlDb250ZXh0OjpNaXhlZENvbnRl
bnRUeXBlOjpJbmFjdGl2ZSk7CkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgTWl4ZWRDb250ZW50Q2hl
Y2tlcjo6Y2FuUnVuSW5zZWN1cmVDb250ZW50KEZyYW1lJiBmcmFtZSwgU2VjdXJpdHlPcmlnaW4m
IHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgYWxsb3dlZCA9ICFmcmFtZS5k
b2N1bWVudCgpLT5pc1N0cmljdE1peGVkQ29udGVudE1vZGUoKSAmJiBmcmFtZS5zZXR0aW5ncygp
LmFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KCkgJiYgIWZyYW1lLmRvY3VtZW50KCktPmdl
b2xvY2F0aW9uQWNjZXNzZWQoKSAmJiAhZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJlQ29va2llc0Fj
Y2Vzc2VkKCk7Ci0gICAgbG9nV2FybmluZyhmcmFtZSwgYWxsb3dlZCwgInJ1biIsIHVybCk7Cisg
ICAgbG9nV2FybmluZyhmcmFtZSwgYWxsb3dlZCwgInJ1biJfcywgdXJsKTsKIAogICAgIGlmIChh
bGxvd2VkKSB7CiAgICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnNldEZvdW5kTWl4ZWRDb250ZW50
KFNlY3VyaXR5Q29udGV4dDo6TWl4ZWRDb250ZW50VHlwZTo6QWN0aXZlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9QaW5nTG9hZGVyLmNwcAppbmRleCA2NmU3YTM5M2YzNGNlMzcyZWMzMGZmY2I1NDY4MDc3
ZTEyMzgxOGNmLi4wZTJhM2QzZDJjMGE0ZjQ1ZWE3YTkzODkwZmQyYTg3ODgyOWUwMTVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCkBAIC0xMzQsOCArMTM0LDggQEAgdm9pZCBQ
aW5nTG9hZGVyOjpzZW5kUGluZyhGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgcGluZ1VSTCwgY29u
c3QgVVJMJiBkZXN0aW5hdGkKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgp
OwogICAgIGRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT51cGdyYWRlSW5zZWN1cmVS
ZXF1ZXN0SWZOZWVkZWQocmVxdWVzdCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJl
cXVlc3RUeXBlOjpMb2FkKTsKIAotICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwot
ICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKCJ0ZXh0L3BpbmciKTsKKyAgICByZXF1ZXN0
LnNldEhUVFBNZXRob2QoIlBPU1QiX3MpOworICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBl
KCJ0ZXh0L3BpbmciX3MpOwogICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoRm9ybURhdGE6OmNyZWF0
ZSgiUElORyIpKTsKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6Q2FjaGVDb250cm9sLCBIVFRQSGVhZGVyVmFsdWVzOjptYXhBZ2UwKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKaW5kZXggZTU1
NWIyNzk3ZDhjNWNmNzI5OGU3NzA5OTVkNmJmZDAwZGFiMzc5My4uNDZiNWM5ZTIzZDUyNWJlZDFj
ZjcyNjgwOTM5NTZlNDU3YWEwMDY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcApAQCAtNzIsMTUgKzcyLDE1IEBAIHN0YXRpYyB2b2lk
IGVuY29kZUhhc2hTZXQoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVs
LCAgY29uc3QgU3RyCiAKIHN0YXRpYyB2b2lkIGVuY29kZUZvbnRIYXNoU2V0KEtleWVkRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBo
YXNoU2V0KQogewotICAgIGVuY29kZUhhc2hTZXQoZW5jb2RlciwgbGFiZWwsICJmb250IiwgaGFz
aFNldCk7CisgICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCBsYWJlbCwgImZvbnQiX3MsIGhhc2hT
ZXQpOwogfQogICAgIAogc3RhdGljIHZvaWQgZW5jb2RlQ2FudmFzQWN0aXZpdHlSZWNvcmQoS2V5
ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBDYW52YXNBY3Rp
dml0eVJlY29yZCYgY2FudmFzQWN0aXZpdHlSZWNvcmQpCiB7CiAgICAgZW5jb2Rlci5lbmNvZGVP
YmplY3QobGFiZWwsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLCBbXSAoS2V5ZWRFbmNvZGVyJiBlbmNv
ZGVySW5uZXIsIGNvbnN0IENhbnZhc0FjdGl2aXR5UmVjb3JkJiBjYW52YXNBY3Rpdml0eVJlY29y
ZCkgewotICAgICAgICBlbmNvZGVySW5uZXIuZW5jb2RlQm9vbCgid2FzRGF0YVJlYWQiLCBjYW52
YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCk7Ci0gICAgICAgIGVuY29kZXJJbm5lci5lbmNv
ZGVPYmplY3RzKCJ0ZXh0V3JpdHRlbiIsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVu
LmJlZ2luKCksIGNhbnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVuLmVuZCgpLCBbXSAoS2V5
ZWRFbmNvZGVyJiBlbmNvZGVySW5uZXIyLCBjb25zdCBTdHJpbmcmIHRleHQpIHsKLSAgICAgICAg
ICAgIGVuY29kZXJJbm5lcjIuZW5jb2RlU3RyaW5nKCJ0ZXh0IiwgdGV4dCk7CisgICAgICAgIGVu
Y29kZXJJbm5lci5lbmNvZGVCb29sKCJ3YXNEYXRhUmVhZCJfcywgY2FudmFzQWN0aXZpdHlSZWNv
cmQud2FzRGF0YVJlYWQpOworICAgICAgICBlbmNvZGVySW5uZXIuZW5jb2RlT2JqZWN0cygidGV4
dFdyaXR0ZW4iX3MsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVuLmJlZ2luKCksIGNh
bnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVuLmVuZCgpLCBbXSAoS2V5ZWRFbmNvZGVyJiBl
bmNvZGVySW5uZXIyLCBjb25zdCBTdHJpbmcmIHRleHQpIHsKKyAgICAgICAgICAgIGVuY29kZXJJ
bm5lcjIuZW5jb2RlU3RyaW5nKCJ0ZXh0Il9zLCB0ZXh0KTsKICAgICAgICAgfSk7CiAgICAgfSk7
CiB9CkBAIC0xMDMsOSArMTAzLDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNv
ZGUoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIC8vIFRvcCBmcmFtZSBzdGF0cwog
ICAgIGVuY29kZUhhc2hTZXQoZW5jb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iX3Ms
ICJkb21haW4iX3MsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pOwogICAgIGVuY29kZUhhc2hT
ZXQoZW5jb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgImRvbWFpbiJfcywg
dG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKTsKLSAgICBlbmNvZGVIYXNoU2V0KGVuY29kZXIs
ICJ0b3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iX3MsICJkb21haW4iLCB0b3BGcmFtZUxpbmtE
ZWNvcmF0aW9uc0Zyb20pOworICAgIGVuY29kZUhhc2hTZXQoZW5jb2RlciwgInRvcEZyYW1lTGlu
a0RlY29yYXRpb25zRnJvbSJfcywgImRvbWFpbiJfcywgdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNG
cm9tKTsKICAgICBlbmNvZGVyLmVuY29kZUJvb2woImdvdExpbmtEZWNvcmF0aW9uRnJvbVByZXZh
bGVudFJlc291cmNlIl9zLCBnb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSk7
Ci0gICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCAidG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2Ny
aXB0cyJfcywgImRvbWFpbiIsIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMpOworICAg
IGVuY29kZUhhc2hTZXQoZW5jb2RlciwgInRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMi
X3MsICJkb21haW4iX3MsIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMpOwogCiAgICAg
Ly8gU3ViZnJhbWUgc3RhdHMKICAgICBlbmNvZGVIYXNoU2V0KGVuY29kZXIsICJzdWJmcmFtZVVu
ZGVyVG9wRnJhbWVEb21haW5zIl9zLCAiZG9tYWluIl9zLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVE
b21haW5zKTsKQEAgLTEyNCwxMiArMTI0LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6ZW5jb2RlKEtleWVkRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29k
ZVVJbnQzMigidGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSJf
cywgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSk7CiAKICNp
ZiBFTkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQotICAgIGVuY29kZUZvbnRIYXNoU2V0KGVuY29k
ZXIsICJmb250c0ZhaWxlZFRvTG9hZCIsIGZvbnRzRmFpbGVkVG9Mb2FkKTsKLSAgICBlbmNvZGVG
b250SGFzaFNldChlbmNvZGVyLCAiZm9udHNTdWNjZXNzZnVsbHlMb2FkZWQiLCBmb250c1N1Y2Nl
c3NmdWxseUxvYWRlZCk7Ci0gICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCAidG9wRnJhbWVSZWdp
c3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyIsICJkb21haW4iLCB0b3BGcmFtZVJl
Z2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzKTsKLSAgICBlbmNvZGVDYW52YXNB
Y3Rpdml0eVJlY29yZChlbmNvZGVyLCAiY2FudmFzQWN0aXZpdHlSZWNvcmQiLCBjYW52YXNBY3Rp
dml0eVJlY29yZCk7Ci0gICAgZW5jb2RlT3B0aW9uU2V0KGVuY29kZXIsICJuYXZpZ2F0b3JGdW5j
dGlvbnNBY2Nlc3NlZEJpdE1hc2siLCBuYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZCk7Ci0gICAg
ZW5jb2RlT3B0aW9uU2V0KGVuY29kZXIsICJzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZEJpdE1hc2si
LCBzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZCk7CisgICAgZW5jb2RlRm9udEhhc2hTZXQoZW5jb2Rl
ciwgImZvbnRzRmFpbGVkVG9Mb2FkIl9zLCBmb250c0ZhaWxlZFRvTG9hZCk7CisgICAgZW5jb2Rl
Rm9udEhhc2hTZXQoZW5jb2RlciwgImZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkIl9zLCBmb250c1N1
Y2Nlc3NmdWxseUxvYWRlZCk7CisgICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCAidG9wRnJhbWVS
ZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyJfcywgImRvbWFpbiJfcywgdG9w
RnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyk7CisgICAgZW5jb2Rl
Q2FudmFzQWN0aXZpdHlSZWNvcmQoZW5jb2RlciwgImNhbnZhc0FjdGl2aXR5UmVjb3JkIl9zLCBj
YW52YXNBY3Rpdml0eVJlY29yZCk7CisgICAgZW5jb2RlT3B0aW9uU2V0KGVuY29kZXIsICJuYXZp
Z2F0b3JGdW5jdGlvbnNBY2Nlc3NlZEJpdE1hc2siX3MsIG5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vz
c2VkKTsKKyAgICBlbmNvZGVPcHRpb25TZXQoZW5jb2RlciwgInNjcmVlbkZ1bmN0aW9uc0FjY2Vz
c2VkQml0TWFzayJfcywgc2NyZWVuRnVuY3Rpb25zQWNjZXNzZWQpOwogI2VuZGlmCiB9CiAKQEAg
LTEzOCwxMSArMTM4LDExIEBAIHN0YXRpYyB2b2lkIGRlY29kZUhhc2hDb3VudGVkU2V0KEtleWVk
RGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgSGFzCiAgICAgVmVjdG9yPFN0
cmluZz4gaWdub3JlZDsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW51c2VkLXJlc3VsdCIpCiAg
ICAgZGVjb2Rlci5kZWNvZGVPYmplY3RzKGxhYmVsLCBpZ25vcmVkLCBbJmhhc2hDb3VudGVkU2V0
XShLZXllZERlY29kZXImIGRlY29kZXJJbm5lciwgU3RyaW5nJiBkb21haW4pIHsKLSAgICAgICAg
aWYgKCFkZWNvZGVySW5uZXIuZGVjb2RlU3RyaW5nKCJvcmlnaW4iLCBkb21haW4pKQorICAgICAg
ICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVTdHJpbmcoIm9yaWdpbiJfcywgZG9tYWluKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIGNvdW50
OwotICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVVSW50MzIoImNvdW50IiwgY291bnQp
KQorICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVVSW50MzIoImNvdW50Il9zLCBjb3Vu
dCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaGFzaENvdW50ZWRTZXQu
YWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21h
aW5TdHJpbmcoZG9tYWluKSwgY291bnQpOwpAQCAtMTkwLDE4ICsxOTAsMTggQEAgSUdOT1JFX1dB
Uk5JTkdTX0VORAogCiBzdGF0aWMgdm9pZCBkZWNvZGVGb250SGFzaFNldChLZXllZERlY29kZXIm
IGRlY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEhhc2hTZXQ8U3RyaW5nPiYgaGFzaFNldCkK
IHsKLSAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsIGxhYmVsLCAiZm9udCIsIGhhc2hTZXQpOwor
ICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgbGFiZWwsICJmb250Il9zLCBoYXNoU2V0KTsKIH0K
ICAgICAKIHN0YXRpYyB2b2lkIGRlY29kZUNhbnZhc0FjdGl2aXR5UmVjb3JkKEtleWVkRGVjb2Rl
ciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ2FudmFzQWN0aXZpdHlSZWNvcmQmIGNh
bnZhc0FjdGl2aXR5UmVjb3JkKQogewogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnVzZWQtcmVz
dWx0IikKICAgICBkZWNvZGVyLmRlY29kZU9iamVjdChsYWJlbCwgY2FudmFzQWN0aXZpdHlSZWNv
cmQsIFtdIChLZXllZERlY29kZXImIGRlY29kZXJJbm5lciwgQ2FudmFzQWN0aXZpdHlSZWNvcmQm
IGNhbnZhc0FjdGl2aXR5UmVjb3JkKSB7Ci0gICAgICAgIGlmICghZGVjb2RlcklubmVyLmRlY29k
ZUJvb2woIndhc0RhdGFSZWFkIiwgY2FudmFzQWN0aXZpdHlSZWNvcmQud2FzRGF0YVJlYWQpKQor
ICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVCb29sKCJ3YXNEYXRhUmVhZCJfcywgY2Fu
dmFzQWN0aXZpdHlSZWNvcmQud2FzRGF0YVJlYWQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBpZ25vcmU7Ci0gICAgICAgIGRlY29kZXJJbm5lci5k
ZWNvZGVPYmplY3RzKCJ0ZXh0V3JpdHRlbiIsIGlnbm9yZSwgWyZjYW52YXNBY3Rpdml0eVJlY29y
ZF0gKEtleWVkRGVjb2RlciYgZGVjb2RlcklubmVyMiwgU3RyaW5nJiB0ZXh0KSB7Ci0gICAgICAg
ICAgICBpZiAoIWRlY29kZXJJbm5lcjIuZGVjb2RlU3RyaW5nKCJ0ZXh0IiwgdGV4dCkpCisgICAg
ICAgIGRlY29kZXJJbm5lci5kZWNvZGVPYmplY3RzKCJ0ZXh0V3JpdHRlbiJfcywgaWdub3JlLCBb
JmNhbnZhc0FjdGl2aXR5UmVjb3JkXSAoS2V5ZWREZWNvZGVyJiBkZWNvZGVySW5uZXIyLCBTdHJp
bmcmIHRleHQpIHsKKyAgICAgICAgICAgIGlmICghZGVjb2RlcklubmVyMi5kZWNvZGVTdHJpbmco
InRleHQiX3MsIHRleHQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGNhbnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVuLmFkZCh0ZXh0KTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMjE2LDgxICsyMTYsODEgQEAgYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCB1bnNpZ25lZCBtb2RlbFZl
cnNpb24KIHsKICAgICBTdHJpbmcgcmVnaXN0cmFibGVEb21haW5Bc1N0cmluZzsKICAgICBpZiAo
bW9kZWxWZXJzaW9uID49IDE1KSB7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmco
IlByZXZhbGVudFJlc291cmNlRG9tYWluIiwgcmVnaXN0cmFibGVEb21haW5Bc1N0cmluZykpCisg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlRG9tYWlu
Il9zLCByZWdpc3RyYWJsZURvbWFpbkFzU3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKCJQcmV2
YWxlbnRSZXNvdXJjZU9yaWdpbiIsIHJlZ2lzdHJhYmxlRG9tYWluQXNTdHJpbmcpKQorICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKCJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbiJfcywg
cmVnaXN0cmFibGVEb21haW5Bc1N0cmluZykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIHJlZ2lzdHJhYmxlRG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tl
ZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhyZWdpc3RyYWJsZURvbWFpbkFzU3Ry
aW5nKTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
Qm9vbCgiaGFkVXNlckludGVyYWN0aW9uIiwgaGFkVXNlckludGVyYWN0aW9uKSkKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlQm9vbCgiaGFkVXNlckludGVyYWN0aW9uIl9zLCBoYWRVc2VySW50ZXJh
Y3Rpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBTdG9yYWdlIGFjY2Vzcwog
ICAgIGlmIChtb2RlbFZlcnNpb24gPj0gMTUpCi0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2Rl
ciwgInN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyIsICJkb21haW4iLCBzdG9yYWdl
QWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOworICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29k
ZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsICJkb21haW4iX3MsIHN0
b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyk7CiAgICAgZWxzZQotICAgICAgICBkZWNv
ZGVIYXNoU2V0KGRlY29kZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCAi
b3JpZ2luIiwgc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zKTsKKyAgICAgICAgZGVj
b2RlSGFzaFNldChkZWNvZGVyLCAic3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5zIl9z
LCAib3JpZ2luIl9zLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogCiAgICAg
Ly8gVG9wIGZyYW1lIHN0YXRzCiAgICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAxNSkgewotICAgICAg
ICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwgImRv
bWFpbiIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pOwotICAgICAgICBkZWNvZGVIYXNoU2V0
KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCAiZG9tYWluIiwgdG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKyAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAi
dG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcywgImRvbWFpbiJfcywgdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbyk7CisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzRnJvbSJfcywgImRvbWFpbiJfcywgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNG
cm9tKTsKICAgICB9IGVsc2UgaWYgKG1vZGVsVmVyc2lvbiA+PSAxMSkgewogICAgICAgICBIYXNo
Q291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0Nv
dW50ZWQ7Ci0gICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c1RvIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQpOworICAg
ICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNUbyJfcywgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQpOwogICAgICAgICBmb3Ig
KGF1dG8mIGRvbWFpbiA6IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudGVkLnZhbHVlcygp
KQogICAgICAgICAgICAgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUby5hZGQoZG9tYWluKTsKICAg
ICAgICAgCiAgICAgICAgIEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiB0b3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c0Zyb21Db3VudGVkOwotICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNl
dChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIiwgdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNGcm9tQ291bnRlZCk7CisgICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29k
ZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iX3MsIHRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzRnJvbUNvdW50ZWQpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzRnJvbUNvdW50ZWQudmFsdWVzKCkpCiAgICAgICAgICAgICB0b3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c0Zyb20uYWRkKGRvbWFpbik7CiAgICAgfQogCiAgICAgaWYgKG1vZGVsVmVy
c2lvbiA+PSAxNikgewotICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZUxp
bmtEZWNvcmF0aW9uc0Zyb20iLCAiZG9tYWluIiwgdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9t
KTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woImdvdExpbmtEZWNvcmF0aW9uRnJv
bVByZXZhbGVudFJlc291cmNlIiwgZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3Vy
Y2UpKQorICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZUxpbmtEZWNvcmF0
aW9uc0Zyb20iX3MsICJkb21haW4iX3MsIHRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSk7Cisg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVCb29sKCJnb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2
YWxlbnRSZXNvdXJjZSJfcywgZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2Up
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChtb2RlbFZlcnNp
b24gPj0gMTcpIHsKICAgICAgICAgSGFzaENvdW50ZWRTZXQ8UmVnaXN0cmFibGVEb21haW4+IHRv
cEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNDb3VudGVkOwotICAgICAgICBkZWNvZGVIYXNo
Q291bnRlZFNldChkZWNvZGVyLCAidG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIsIHRv
cEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNDb3VudGVkKTsKKyAgICAgICAgZGVjb2RlSGFz
aENvdW50ZWRTZXQoZGVjb2RlciwgInRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiX3Ms
IHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNDb3VudGVkKTsKICAgICAgICAgZm9yIChh
dXRvJiBkb21haW4gOiB0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzQ291bnRlZC52YWx1
ZXMoKSkKICAgICAgICAgICAgIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMuYWRkKGRv
bWFpbik7CiAgICAgfQogCiAgICAgLy8gU3ViZnJhbWUgc3RhdHMKICAgICBpZiAobW9kZWxWZXJz
aW9uID49IDE1KQotICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdWJmcmFtZVVuZGVy
VG9wRnJhbWVEb21haW5zIiwgImRvbWFpbiIsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMp
OworICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdWJmcmFtZVVuZGVyVG9wRnJhbWVE
b21haW5zIl9zLCAiZG9tYWluIl9zLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zKTsKICAg
ICBlbHNlIGlmIChtb2RlbFZlcnNpb24gPj0gMTQpIHsKICAgICAgICAgSGFzaENvdW50ZWRTZXQ8
UmVnaXN0cmFibGVEb21haW4+IHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkOwot
ICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3ViZnJhbWVVbmRlclRvcEZy
YW1lT3JpZ2lucyIsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkKTsKKyAgICAg
ICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFtZU9y
aWdpbnMiX3MsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkKTsKICAgICAgICAg
Zm9yIChhdXRvJiBkb21haW4gOiBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRlZC52
YWx1ZXMoKSkKICAgICAgICAgICAgIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMuYWRkKGRv
bWFpbik7CiAgICAgfQogCiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKICAgICBpZiAobW9kZWxW
ZXJzaW9uID49IDE1KSB7Ci0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMiLCAiZG9tYWluIiwgc3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lRG9tYWlucyk7Ci0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzVG8iLCAiZG9tYWluIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNU
byk7Ci0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzRnJvbSIsICJkb21haW4iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOwor
ICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVE
b21haW5zIl9zLCAiZG9tYWluIl9zLCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zKTsK
KyAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNUbyJfcywgImRvbWFpbiJfcywgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAg
ICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJv
bSJfcywgImRvbWFpbiJfcywgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKTsKICAgICB9
IGVsc2UgewogICAgICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gc3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQ7Ci0gICAgICAgIGRlY29kZUhhc2hDb3Vu
dGVkU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQpOworICAgICAgICBkZWNvZGVIYXNoQ291
bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyJfcywgc3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQpOwogICAgICAgICBmb3IgKGF1dG8m
IGRvbWFpbiA6IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkLnZhbHVlcygp
KQogICAgICAgICAgICAgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQoZG9tYWlu
KTsKIAogICAgICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gc3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQ7Ci0gICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0
KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIiwgc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUb0NvdW50ZWQpOworICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNv
ZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyJfcywgc3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNUb0NvdW50ZWQpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudGVkLnZhbHVlcygpKQogICAgICAgICAgICAgc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQoZG9tYWluKTsKICAgICAgICAgaWYgKG1vZGVsVmVy
c2lvbiA+PSAxMSkgewogICAgICAgICAgICAgSGFzaENvdW50ZWRTZXQ8UmVnaXN0cmFibGVEb21h
aW4+IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbUNvdW50ZWQ7Ci0gICAgICAgICAgICBk
ZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNG
cm9tIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tQ291bnRlZCk7CisgICAgICAgICAg
ICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNGcm9tIl9zLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21Db3VudGVkKTsKICAgICAg
ICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9t
Q291bnRlZC52YWx1ZXMoKSkKICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb20uYWRkKGRvbWFpbik7CiAgICAgICAgIH0KQEAgLTI5OCwxMSArMjk4LDExIEBAIGJv
b2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKEtleWVkRGVjb2RlciYgZGVjb2Rlciwg
dW5zaWduZWQgbW9kZWxWZXJzaW9uCiAKIAogICAgIC8vIFByZXZhbGVudCBSZXNvdXJjZQotICAg
IGlmICghZGVjb2Rlci5kZWNvZGVCb29sKCJpc1ByZXZhbGVudFJlc291cmNlIiwgaXNQcmV2YWxl
bnRSZXNvdXJjZSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woImlzUHJldmFsZW50UmVz
b3VyY2UiX3MsIGlzUHJldmFsZW50UmVzb3VyY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAobW9kZWxWZXJzaW9uID49IDEyKSB7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVCb29sKCJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSIsIGlzVmVyeVByZXZhbGVudFJlc291cmNl
KSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woImlzVmVyeVByZXZhbGVudFJlc291
cmNlIl9zLCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC0zMTIsMzcgKzMxMiwzNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIsIHVuc2lnbmVkIG1vZGVsVmVyc2lv
bgogICAgICAgICBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSA9IGZhbHNlOwogICAgIH0KIAotICAg
IGlmICghZGVjb2Rlci5kZWNvZGVVSW50MzIoImRhdGFSZWNvcmRzUmVtb3ZlZCIsIGRhdGFSZWNv
cmRzUmVtb3ZlZCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJbnQzMigiZGF0YVJlY29yZHNS
ZW1vdmVkIl9zLCBkYXRhUmVjb3Jkc1JlbW92ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVBc0RvdWJsZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlRG91YmxlKCJtb3N0UmVjZW50VXNlckludGVyYWN0aW9uIiwgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVBc0RvdWJsZSkpCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZURvdWJsZSgibW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiJfcywgbW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblRpbWVBc0RvdWJsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uVGltZUFzRG91YmxlKTsKIAotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGVCb29sKCJncmFuZGZhdGhlcmVkIiwgZ3JhbmRmYXRoZXJlZCkpCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUJvb2woImdyYW5kZmF0aGVyZWQiX3MsIGdyYW5kZmF0aGVyZWQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBkb3VibGUgbGFzdFNlZW5UaW1lQXNEb3VibGU7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZURvdWJsZSgibGFzdFNlZW4iLCBsYXN0U2VlblRpbWVBc0RvdWJs
ZSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZURvdWJsZSgibGFzdFNlZW4iX3MsIGxhc3RTZWVu
VGltZUFzRG91YmxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGxhc3RTZWVuID0gV2Fs
bFRpbWU6OmZyb21SYXdTZWNvbmRzKGxhc3RTZWVuVGltZUFzRG91YmxlKTsKIAogICAgIGlmICht
b2RlbFZlcnNpb24gPj0gMTEpIHsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJbnQzMigi
dGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uIiwgdGltZXNBY2Nl
c3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKSkKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZVVJbnQzMigidGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVy
YWN0aW9uIl9zLCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24p
KQogICAgICAgICAgICAgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0
aW9uID0gMDsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJbnQzMigidGltZXNBY2Nlc3Nl
ZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSIsIHRpbWVzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkpKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
VUludDMyKCJ0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJIl9z
LCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJKSkKICAgICAg
ICAgICAgIHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkgPSAw
OwogICAgIH0KIAogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCiAgICAgaWYgKG1vZGVs
VmVyc2lvbiA+PSAxMykgewotICAgICAgICBkZWNvZGVGb250SGFzaFNldChkZWNvZGVyLCAiZm9u
dHNGYWlsZWRUb0xvYWQiLCBmb250c0ZhaWxlZFRvTG9hZCk7Ci0gICAgICAgIGRlY29kZUZvbnRI
YXNoU2V0KGRlY29kZXIsICJmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCIsIGZvbnRzU3VjY2Vzc2Z1
bGx5TG9hZGVkKTsKLSAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAidG9wRnJhbWVSZWdp
c3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyIsICJkb21haW4iLCB0b3BGcmFtZVJl
Z2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzKTsKLSAgICAgICAgZGVjb2RlQ2Fu
dmFzQWN0aXZpdHlSZWNvcmQoZGVjb2RlciwgImNhbnZhc0FjdGl2aXR5UmVjb3JkIiwgY2FudmFz
QWN0aXZpdHlSZWNvcmQpOwotICAgICAgICBkZWNvZGVPcHRpb25TZXQoZGVjb2RlciwgIm5hdmln
YXRvckZ1bmN0aW9uc0FjY2Vzc2VkQml0TWFzayIsIG5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2Vk
KTsKLSAgICAgICAgZGVjb2RlT3B0aW9uU2V0KGRlY29kZXIsICJzY3JlZW5GdW5jdGlvbnNBY2Nl
c3NlZEJpdE1hc2siLCBzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZCk7CisgICAgICAgIGRlY29kZUZv
bnRIYXNoU2V0KGRlY29kZXIsICJmb250c0ZhaWxlZFRvTG9hZCJfcywgZm9udHNGYWlsZWRUb0xv
YWQpOworICAgICAgICBkZWNvZGVGb250SGFzaFNldChkZWNvZGVyLCAiZm9udHNTdWNjZXNzZnVs
bHlMb2FkZWQiX3MsIGZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkKTsKKyAgICAgICAgZGVjb2RlSGFz
aFNldChkZWNvZGVyLCAidG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2Vi
QVBJcyJfcywgImRvbWFpbiJfcywgdG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vz
c2VkV2ViQVBJcyk7CisgICAgICAgIGRlY29kZUNhbnZhc0FjdGl2aXR5UmVjb3JkKGRlY29kZXIs
ICJjYW52YXNBY3Rpdml0eVJlY29yZCJfcywgY2FudmFzQWN0aXZpdHlSZWNvcmQpOworICAgICAg
ICBkZWNvZGVPcHRpb25TZXQoZGVjb2RlciwgIm5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkQml0
TWFzayJfcywgbmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWQpOworICAgICAgICBkZWNvZGVPcHRp
b25TZXQoZGVjb2RlciwgInNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkQml0TWFzayJfcywgc2NyZWVu
RnVuY3Rpb25zQWNjZXNzZWQpOwogICAgIH0KICNlbmRpZgogCkBAIC00NTAsNDggKzQ1MCw0OCBA
QCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcoKSBjb25zdAogICAgIGJ1
aWxkZXIuYXBwZW5kKCJSZWdpc3RyYWJsZSBkb21haW46ICIsIHJlZ2lzdHJhYmxlRG9tYWluLnN0
cmluZygpLCAnXG4nKTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KLSAgICBhcHBlbmRCb29s
ZWFuKGJ1aWxkZXIsICJoYWRVc2VySW50ZXJhY3Rpb24iLCBoYWRVc2VySW50ZXJhY3Rpb24pOwor
ICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImhhZFVzZXJJbnRlcmFjdGlvbiJfcywgaGFkVXNl
ckludGVyYWN0aW9uKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBidWlsZGVyLmFw
cGVuZCgiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICIsIGhhc0hhZFJlY2VudFVzZXJJ
bnRlcmFjdGlvbihtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2luY2VFcG9j
aCgpKSA/ICJ3aXRoaW4gMjQgaG91cnMiIDogIi0xIik7CisgICAgYnVpbGRlci5hcHBlbmQoIiAg
ICBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uOiAiX3MsIGhhc0hhZFJlY2VudFVzZXJJbnRlcmFj
dGlvbihtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2luY2VFcG9jaCgpKSA/
ICJ3aXRoaW4gMjQgaG91cnMiIDogIi0xIik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0g
ICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCIsIGdyYW5kZmF0aGVyZWQp
OworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImdyYW5kZmF0aGVyZWQiX3MsIGdyYW5kZmF0
aGVyZWQpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCiAgICAgLy8gU3RvcmFnZSBhY2Nl
c3MKLSAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFt
ZURvbWFpbnMiLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOworICAgIGFwcGVu
ZEhhc2hTZXQoYnVpbGRlciwgInN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyJfcywg
c3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zKTsKIAogICAgIC8vIFRvcCBmcmFtZSBz
dGF0cwotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
VG8iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKTsKLSAgICBhcHBlbmRIYXNoU2V0KGJ1aWxk
ZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c0Zyb20pOwotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1lTGlua0RlY29yYXRp
b25zRnJvbSIsIHRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSk7Ci0gICAgYXBwZW5kQm9vbGVh
bihidWlsZGVyLCAiZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2UiLCBnb3RM
aW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSk7CisgICAgYXBwZW5kSGFzaFNldChi
dWlsZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcywgdG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNUbyk7CisgICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNGcm9tIl9zLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOworICAgIGFwcGVuZEhh
c2hTZXQoYnVpbGRlciwgInRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSJfcywgdG9wRnJhbWVM
aW5rRGVjb3JhdGlvbnNGcm9tKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJnb3RMaW5r
RGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSJfcywgZ290TGlua0RlY29yYXRpb25Gcm9t
UHJldmFsZW50UmVzb3VyY2UpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGFwcGVu
ZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiLCB0b3BG
cmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzKTsKKyAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIs
ICJ0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIl9zLCB0b3BGcmFtZUxvYWRlZFRoaXJk
UGFydHlTY3JpcHRzKTsKIAogICAgIC8vIFN1YmZyYW1lIHN0YXRzCi0gICAgYXBwZW5kSGFzaFNl
dChidWlsZGVyLCAic3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyIsIHN1YmZyYW1lVW5kZXJU
b3BGcmFtZURvbWFpbnMpOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInN1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbnMiX3MsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogICAg
IAogICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCi0gICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAi
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyIsIHN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMpOwotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzVG8iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKLSAgICBhcHBlbmRI
YXNoU2V0KGJ1aWxkZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCBzdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIHN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMpOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzVG8iX3MsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8pOworICAgIGFwcGVu
ZEhhc2hTZXQoYnVpbGRlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKTsKIAogICAgIC8vIFByZXZhbGVudCBSZXNvdXJj
ZQotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFsZW50UmVzb3VyY2UiLCBpc1By
ZXZhbGVudFJlc291cmNlKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ByZXZhbGVu
dFJlc291cmNlIl9zLCBpc1ByZXZhbGVudFJlc291cmNlKTsKICAgICBidWlsZGVyLmFwcGVuZCgn
XG4nKTsKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZSIsIGlzVmVyeVByZXZhbGVudFJlc291cmNlKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIs
ICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSJfcywgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpOwog
ICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgZGF0YVJl
Y29yZHNSZW1vdmVkOiAiLCBkYXRhUmVjb3Jkc1JlbW92ZWQpOwogICAgIGJ1aWxkZXIuYXBwZW5k
KCdcbicpOwogCiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKLSAgICBhcHBlbmRIYXNo
U2V0KGJ1aWxkZXIsICJmb250c0ZhaWxlZFRvTG9hZCIsIGZvbnRzRmFpbGVkVG9Mb2FkKTsKLSAg
ICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCIsIGZvbnRz
U3VjY2Vzc2Z1bGx5TG9hZGVkKTsKLSAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJ0b3BGcmFt
ZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzIiwgdG9wRnJhbWVSZWdpc3Ry
YWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyk7CisgICAgYXBwZW5kSGFzaFNldChidWls
ZGVyLCAiZm9udHNGYWlsZWRUb0xvYWQiX3MsIGZvbnRzRmFpbGVkVG9Mb2FkKTsKKyAgICBhcHBl
bmRIYXNoU2V0KGJ1aWxkZXIsICJmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCJfcywgZm9udHNTdWNj
ZXNzZnVsbHlMb2FkZWQpOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1lUmVn
aXN0cmFibGVEb21haW5zV2hpY2hBY2Nlc3NlZFdlYkFQSXMiX3MsIHRvcEZyYW1lUmVnaXN0cmFi
bGVEb21haW5zV2hpY2hBY2Nlc3NlZFdlYkFQSXMpOwogICAgIGFwcGVuZE5hdmlnYXRvckFQSU9w
dGlvblNldChidWlsZGVyLCBuYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZCk7CiAgICAgYXBwZW5k
U2NyZWVuQVBJT3B0aW9uU2V0KGJ1aWxkZXIsIHNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkKTsKLSAg
ICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJjYW52YXNUZXh0V3JpdHRlbiIsIGNhbnZhc0FjdGl2
aXR5UmVjb3JkLnRleHRXcml0dGVuKTsKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJjYW52
YXNSZWFkRGF0YSIsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLndhc0RhdGFSZWFkKTsKKyAgICBhcHBl
bmRIYXNoU2V0KGJ1aWxkZXIsICJjYW52YXNUZXh0V3JpdHRlbiJfcywgY2FudmFzQWN0aXZpdHlS
ZWNvcmQudGV4dFdyaXR0ZW4pOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImNhbnZhc1Jl
YWREYXRhIl9zLCBjYW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCk7CiAgICAgYnVpbGRl
ci5hcHBlbmQoJ1xuJyk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDYxOTA4MzU0OWY5MmQyOTlm
ODUyZjA4MTZmZDk1Yjc3MWU5NDIxYmMuLjQ1ZWQyMTUyMGYwMmVhOWZmY2YyZGE0NGNhMTI1MGIx
YmNlODUyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
MjQxLDcgKzI0MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGlmIChpc1BERkpTUmVzb3VyY2VMb2FkKCkpIHsKLSAgICAgICAgQnVu
ZGxlUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZUZyb21CdW5kbGUoKnRoaXMsICJwZGZqcy8i
KTsKKyAgICAgICAgQnVuZGxlUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZUZyb21CdW5kbGUo
KnRoaXMsICJwZGZqcy8iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC0z
MDEsNyArMzAxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoIWRlY29kZVJlc3VsdCkgewogICAgICAgICAgICAg
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImxvYWREYXRhVVJMOiBkZWNvZGluZyBvZiBkYXRh
IGZhaWxlZCIpOwotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkRmFpbChSZXNvdXJjZUVy
cm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIkRhdGEgVVJMIGRlY29kaW5n
IGZhaWxlZCIpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEZhaWwoUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJEYXRhIFVSTCBkZWNvZGlu
ZyBmYWlsZWQiX3MpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBp
ZiAodGhpcy0+d2FzQ2FuY2VsbGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TZXJ2ZXJUaW1pbmdQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZl
clRpbWluZ1BhcnNlci5jcHAKaW5kZXggMDFiZDA1NzNlM2FiNjA5MWUwYzI5MDY2OTk4NGFhZWMy
YmQzMzc1Ni4uZmIyNDUzNjk2OWNkZGJmYjNjMGE1YTE4MWY4YzE4NWRmNGU4NDIxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZ1BhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZ1BhcnNlci5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgVmVjdG9yPFNlcnZlclRpbWluZz4gcGFyc2VTZXJ2ZXJUaW1pbmcoY29uc3QgU3RyaW5n
JiBoZWFkZXJWYWx1ZSkKICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJOYW1lLmlzTnVsbCgpKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSAiIjsK
KyAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICBp
ZiAodG9rZW5pemVyLmNvbnN1bWUoJz0nKSkgewogICAgICAgICAgICAgICAgIHZhbHVlID0gdG9r
ZW5pemVyLmNvbnN1bWVUb2tlbk9yUXVvdGVkU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgdG9r
ZW5pemVyLmNvbnN1bWVCZWZvcmVBbnlDaGFyTWF0Y2goeycsJywgJzsnfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3ZWZjZWNjNDkzZjhiNDE0
ODk3NzI2NTUxOTRkNmJhY2YzMTY0ZmMxLi42NTA4Y2NjOTUzMjg1NzNiYmY4MTJiNjFhM2M5ZTg5
Yzc3NTk3ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbQogICAgIENvbXBs
ZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUo
cG9saWN5Q29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIGlmIChyZXNwb25zZS5jb250YWluc0lu
dmFsaWRIVFRQSGVhZGVycygpKSB7Ci0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0KCkudXJsKCksICJSZXNwb25zZSBjb250
YWluZWQgaW52YWxpZCBIVFRQIGhlYWRlcnMiLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFs
KSk7CisgICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCByZXF1ZXN0KCkudXJsKCksICJSZXNwb25zZSBjb250YWluZWQgaW52YWxpZCBIVFRQ
IGhlYWRlcnMiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNv
dXJjZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29k
ZXIuY3BwCmluZGV4IDU2ZGJjNGUyOTAzZTJlYmMyMGQ2MzQzMzczMDQ0ZDA0ZjYxYjY0MjUuLjA2
MTI4YjZhM2EzYzM3MzFlMWZiNzE2OWQ0ZTlmMTUzMWVjOGQ5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkUHJlcGVuZEJPTShjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAvLyBodHRwczovL2VuY29kaW5nLnNwZWMud2hhdHdnLm9y
Zy8jdXRmLTgtZGVjb2RlCiBTdHJpbmcgVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICBhdXRv
IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCAiVVRG
LTgiKTsKKyAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRl
eHQvcGxhaW4iX3MsICJVVEYtOCIpOwogICAgIGlmIChzaG91bGRQcmVwZW5kQk9NKGRhdGEsIGxl
bmd0aCkpCiAgICAgICAgIGRlY29kZXItPmRlY29kZSgiXHhlZlx4YmJceGJmIiwgMyk7CiAgICAg
cmV0dXJuIGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmlu
ZGV4IDA3MzI0ZGQxZTAwY2EyM2UzZGUzMDg1YTI3MGY4ZWIzNTE3NWE1OWMuLmRmMDQ2MmNmMzk0
NzNiMDY3ODYzNzgxYjNlMGIyZGEzYTE3MGE3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC01MTIsNyArNTEy
LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywgRnIKICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxs
KCkpCiAgICAgICAgIHJlc3BvbnNlVVJMID0gVVJMKHsgfSwgZW1wdHlTdHJpbmcoKSk7CiAKLSAg
ICBhdXRvIG1haW5SZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIo
bWFya3VwU3RyaW5nKSwgcmVzcG9uc2VVUkwsIHJlc3BvbnNlLm1pbWVUeXBlKCksICJVVEYtOCIs
IGZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCkpOworICAgIGF1dG8gbWFpblJlc291cmNlID0gQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihtYXJrdXBTdHJpbmcpLCByZXNwb25zZVVS
TCwgcmVzcG9uc2UubWltZVR5cGUoKSwgIlVURi04Il9zLCBmcmFtZS50cmVlKCkudW5pcXVlTmFt
ZSgpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
QEAgLTYwOCw3ICs2MDgsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgLy8gV3JhcCB0aGUg
ZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwog
ICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVz
ZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFt
ZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRo
PVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsK
LSAgICBhdXRvIGlmcmFtZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1
ZmZlcihpZnJhbWVNYXJrdXApLCBhYm91dEJsYW5rVVJMKCksICJ0ZXh0L2h0bWwiLCAiVVRGLTgi
LCBTdHJpbmcoKSk7CisgICAgYXV0byBpZnJhbWVSZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6
Y3JlYXRlKHV0ZjhCdWZmZXIoaWZyYW1lTWFya3VwKSwgYWJvdXRCbGFua1VSTCgpLCAidGV4dC9o
dG1sIl9zLCAiVVRGLTgiX3MsIFN0cmluZygpKTsKIAogICAgIHJldHVybiBjcmVhdGUoaWZyYW1l
UmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgeyB9LCB7IGFyY2hpdmUucmVsZWFzZU5vbk51bGwo
KSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCBlOTlmYTVmY2IyYjcyYjA0M2Y4Njg5OTU0
ODA4NmVlMGEwYmUzZDIyLi5hZDIxMDBkYmE1ZGU1ODNiYTQzNDY2M2MwNGY4MDE4MzA2NjJhYWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IENvb2tpZUphciogY29va2llSmFyKQogICAgIDogQ2FjaGVkUmVzb3VyY2UoV1RG
TW92ZShyZXF1ZXN0KSwgVHlwZTo6QXBwbGljYXRpb25NYW5pZmVzdCwgc2Vzc2lvbklELCBjb29r
aWVKYXIpCi0gICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBs
aWNhdGlvbi9tYW5pZmVzdCtqc29uIiwgUEFMOjpVVEY4RW5jb2RpbmcoKSkpCisgICAgLCBtX2Rl
Y29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi9tYW5pZmVzdCtq
c29uIl9zLCBQQUw6OlVURjhFbmNvZGluZygpKSkKIHsKIH0KIApAQCAtNjEsNyArNjEsNyBAQCB2
b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OnNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYg
Y2hzKQogCiBTdHJpbmcgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZW5jb2RpbmcoKSBjb25z
dAogewotICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOworICAgIHJldHVy
biBTdHJpbmcgeyBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpIH07CiB9CiAKIHN0ZDo6b3B0
aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6cHJv
Y2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1
bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNzBiMzhmNjFmYzBmZjBlYjYyMzJiNDcwMWZmYjY4
OWIwZTYxODY2ZS4uNjNlYzRkNjI3OTkzNzMzYWZiMWU0MTU5MzFkMGQ1Yzk1N2U3MDdmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZENTU1N0
eWxlU2hlZXQ6OkNhY2hlZENTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXIqIGNvb2tpZUph
cikKICAgICA6IENhY2hlZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFR5cGU6OkNTU1N0eWxl
U2hlZXQsIHNlc3Npb25JRCwgY29va2llSmFyKQotICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZSgidGV4dC9jc3MiLCByZXF1ZXN0LmNoYXJzZXQoKSkpCisgICAgLCBt
X2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2NzcyJfcywgcmVxdWVz
dC5jaGFyc2V0KCkpKQogewogfQogCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5
bGVTaGVldDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAg
Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudChjbGllbnQpOwogCiAgICAgaWYgKCFpc0xvYWRp
bmcoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkU3R5bGVTaGVldENsaWVudCY+KGNsaWVu
dCkuc2V0Q1NTU3R5bGVTaGVldChtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgbV9y
ZXNwb25zZS51cmwoKSwgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSwgdGhpcyk7CisgICAg
ICAgIHN0YXRpY19jYXN0PENhY2hlZFN0eWxlU2hlZXRDbGllbnQmPihjbGllbnQpLnNldENTU1N0
eWxlU2hlZXQobV9yZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCksIG1fcmVzcG9uc2UudXJs
KCksIFN0cmluZyB7IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkgfSwgdGhpcyk7CiB9CiAK
IHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBjaHMp
CkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJiBjaHMpCiAKIFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjplbmNvZGlu
ZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkgfTsKIH0KIAog
Y29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNr
SGludCBtaW1lVHlwZUNoZWNrSGludCwgYm9vbCogaGFzVmFsaWRNSU1FVHlwZSkgY29uc3QKQEAg
LTEyMiw3ICsxMjIsNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtl
cjxDYWNoZWRTdHlsZVNoZWV0Q2xpZW50PiB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hl
ZFN0eWxlU2hlZXRDbGllbnQqIGMgPSB3Lm5leHQoKSkKLSAgICAgICAgYy0+c2V0Q1NTU3R5bGVT
aGVldChtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgbV9yZXNwb25zZS51cmwoKSwg
bV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSwgdGhpcyk7CisgICAgICAgIGMtPnNldENTU1N0
eWxlU2hlZXQobV9yZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCksIG1fcmVzcG9uc2UudXJs
KCksIFN0cmluZyB7IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkgfSwgdGhpcyk7CiB9CiAK
IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpyZXNwb25zZU1JTUVUeXBlKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGJi
YzFiMzA1OTUyN2Y0YjVjMGYwYzRlOTY2ZDljZDQ4ZGQyODdhZjEuLjczYmVhNmQ0Y2U3YjM4Yjcw
YjUwZDIyZDAxOTljMTNkNmE0YzExYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyKQog
ICAgIH0KIAogICAgIGlmICh0eXBlKCkgPT0gVHlwZTo6TGlua1ByZWZldGNoKQotICAgICAgICBt
X3Jlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlB1cnBv
c2UsICJwcmVmZXRjaCIpOworICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OlB1cnBvc2UsICJwcmVmZXRjaCJfcyk7CiAgICAgbV9yZXNv
dXJjZVJlcXVlc3Quc2V0UHJpb3JpdHkobG9hZFByaW9yaXR5KCkpOwogCiAgICAgLy8gTmF2aWdh
dGlvbiBhbGdvcml0aG0gaXMgc2V0dGluZyB1cCB0aGUgcmVxdWVzdCBiZWZvcmUgc2VuZGluZyBp
dCB0byBDYWNoZWRSZXNvdXJjZUxvYWRlcj9DYWNoZWRSZXNvdXJjZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IGRiNDMxNjA3
YWU1NjM4MzAzODAwZGQyNTljMTAzNGNkMDkwZmNmZTEuLmUzM2Y3Nzk0MGVhYjA4MmJmYjExYTg0
MjExNjRkOWZhNDc5ZDE3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIENhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tp
ZUphciogY29va2llSmFyLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgOiBDYWNoZWRS
ZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBUeXBlOjpTVkdEb2N1bWVudFJlc291cmNlLCBzZXNz
aW9uSUQsIGNvb2tpZUphcikKLSAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpj
cmVhdGUoImFwcGxpY2F0aW9uL3htbCIpKQorICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIl9zKSkKICAgICAsIG1fc2V0dGluZ3Moc2V0
dGluZ3MpCiB7CiB9CkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OnNl
dEVuY29kaW5nKGNvbnN0IFN0cmluZyYgY2hzKQogCiBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6
OmVuY29kaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5h
bWUoKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSB9
OwogfQogCiB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRl
eCBkMmMxZGU0N2VmYjc4MTM5OGY0NDM4YjdjYTRlYTI2MGUyMjE5NzY3Li5lMmRiYjRjNjgzY2Iy
NzQ1ZDcyYTY4OWNjZjY2YjA2ZDJmMGM5MDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgQ2FjaGVkU1ZH
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQog
ICAgICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIGR1cmluZyByZW5kZXIgdHJlZSB1cGRhdGVz
IHdoZW4gZXZlbnRzIGFyZSBmb3JiaWRkZW4uCiAgICAgICAgICAgICAvLyBGcmFtZWxlc3MgZG9j
dW1lbnQgY2FuJ3QgcnVuIHNjcmlwdHMgb3IgY2FsbCBiYWNrIHRvIHRoZSBjbGllbnQgc28gdGhp
cyBpcyBzYWZlLgogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gU1ZHRG9jdW1l
bnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCBVUkwoKSk7Ci0gICAgICAgICAgICBhdXRv
IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIp
OworICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRl
KCJhcHBsaWNhdGlvbi94bWwiX3MpOwogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDI1ZDA1OGY3YTZlNmQw
ODYyNzUzNTU5YmZhYTM4MmY0MDMzZjNiODcuLmYyNjFhZmYxYTk0ODI5M2FjMmIyZWEwOWNiOWYz
N2EzNGJmMjAxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHZvaWQgQ2FjaGVkU2NyaXB0OjpzZXRFbmNvZGluZyhj
b25zdCBTdHJpbmcmIGNocykKIAogU3RyaW5nIENhY2hlZFNjcmlwdDo6ZW5jb2RpbmcoKSBjb25z
dAogewotICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOworICAgIHJldHVy
biBTdHJpbmcgeyBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpIH07CiB9CiAKIFN0cmluZ1Zp
ZXcgQ2FjaGVkU2NyaXB0OjpzY3JpcHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IDE3ZWZkNmMzZjZlZDZhYWVjN2Zi
NGE1NWE4Nzc5MTMzOWVjNDk3MGUuLjJjMzAwOTkzZjVkZWQxZjIyNTQ4OWJhMTU2YTY4OWE2M2Fi
NWU4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBD
YWNoZWRYU0xTdHlsZVNoZWV0OjpDYWNoZWRYU0xTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFy
KiBjb29raWVKYXIpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBUeXBl
OjpYU0xTdHlsZVNoZWV0LCBzZXNzaW9uSUQsIGNvb2tpZUphcikKLSAgICAsIG1fZGVjb2RlcihU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQveHNsIikpCisgICAgLCBtX2RlY29kZXIo
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3hzbCJfcykpCiB7CiB9CiAKQEAgLTU4
LDcgKzU4LDcgQEAgdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpzZXRFbmNvZGluZyhjb25zdCBT
dHJpbmcmIGNocykKIAogU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKKyAgICByZXR1
cm4gU3RyaW5nIHsgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSB9OwogfQogCiB2b2lkIENh
Y2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggYjIwMmZlZjY3OTI2ZDFh
ZThjZjRjYTZjMDA4NzRmZTQ1ZWI1YmZhZC4uMDM0NDRiMzk5YzM2ZTU4NjNhNTZjMWRkZWZiYzAw
NjkxZGRiMDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
Y3BwCkBAIC02OCw3ICs2OCw3IEBAIE1lbW9yeUNhY2hlOjpNZW1vcnlDYWNoZSgpCiAKICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZs
YWcsIFtdIHsKLSAgICAgICAgUEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUu
V2ViS2l0LnNob3dNZW1vcnlDYWNoZSIsIFtdIHsKKyAgICAgICAgUEFMOjpyZWdpc3Rlck5vdGlm
eUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dNZW1vcnlDYWNoZSJfcywgW10gewogICAg
ICAgICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmR1bXBTdGF0cygpOwogICAgICAgICAg
ICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmR1bXBMUlVMaXN0cyh0cnVlKTsKICAgICAgICAg
fSk7CkBAIC01NTgsNyArNTU4LDcgQEAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBN
ZW1vcnlDYWNoZTo6b3JpZ2luc1dpdGhDYWNoZShQQUw6OlNlc3Npb25JRCBzZXMKICAgICAgICAg
ICAgIGF1dG8mIHJlc291cmNlID0gKmtleVZhbHVlLnZhbHVlOwogICAgICAgICAgICAgYXV0byYg
cGFydGl0aW9uTmFtZSA9IGtleVZhbHVlLmtleS5zZWNvbmQ7CiAgICAgICAgICAgICBpZiAoIXBh
cnRpdGlvbk5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoImh0dHAiLCBwYXJ0aXRpb25OYW1lLCAwKSk7CisgICAgICAgICAg
ICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0cCJfcywgcGFydGl0
aW9uTmFtZSwgMCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG9yaWdpbnMu
YWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzb3VyY2UudXJsKCkpKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCmluZGV4IDUyMzBhNjhkYjYxNGU2
N2U2NWQxMWE4ZmUxNDRlZjk2NmZjZWVjNmMuLjY3YzA3OGRjZTQyYzM0YjQxZTQ3OGUyNmY4Mzky
NzBhMjJjZmEwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKQEAg
LTExNywxMSArMTE3LDExIEBAIGJvb2wgTWF0aE1MRWxlbWVudDo6aGFzUHJlc2VudGF0aW9uYWxI
aW50c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lCiBzdGF0aWMgU3RyaW5n
IGNvbnZlcnRNYXRoU2l6ZUlmTmVlZGVkKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAg
IGlmICh2YWx1ZSA9PSAic21hbGwiKQotICAgICAgICByZXR1cm4gIjAuNzVlbSI7CisgICAgICAg
IHJldHVybiAiMC43NWVtIl9zOwogICAgIGlmICh2YWx1ZSA9PSAibm9ybWFsIikKLSAgICAgICAg
cmV0dXJuICIxZW0iOworICAgICAgICByZXR1cm4gIjFlbSJfczsKICAgICBpZiAodmFsdWUgPT0g
ImJpZyIpCi0gICAgICAgIHJldHVybiAiMS41ZW0iOworICAgICAgICByZXR1cm4gIjEuNWVtIl9z
OwogCiAgICAgLy8gRklYTUU6IG1hdGhzaXplIGFjY2VwdHMgYW55IE1hdGhNTCBsZW5ndGgsIGlu
Y2x1ZGluZyBuYW1lZCBzcGFjZXMgKHNlZSBwYXJzZU1hdGhNTExlbmd0aCkuCiAgICAgLy8gRklY
TUU6IE1pZ2h0IGJlIGJldHRlciB0byB1c2UgZG91YmxlIHRoYW4gZmxvYXQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCmlu
ZGV4IDBlZmZhNjNmM2NmNGNlZjc3Y2ExMDM3ZTkyOWM2ZDUzNjM1MTNjMDcuLmE3NWY3MGNlNWIy
OTdmOGFlNmE4YzE1NDU1MzNiN2I3MTI5ODFmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCkBAIC00NzcsNyArNDc3
LDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1RleHRF
ZGdlQ1NTKCkgY29uc3QKICAgICAgICAgYXBwZW5kQ1NTKGJ1aWxkZXIsIENTU1Byb3BlcnR5VGV4
dFNoYWRvdywgbWFrZVN0cmluZyhlZGdlU3R5bGVEcm9wU2hhZG93LmdldCgpLCAiIGJsYWNrIiks
IGltcG9ydGFudCk7CiAKICAgICBpZiAodGV4dEVkZ2VTdHlsZSA9PSBrTUFDYXB0aW9uQXBwZWFy
YW5jZVRleHRFZGdlU3R5bGVEcm9wU2hhZG93IHx8IHRleHRFZGdlU3R5bGUgPT0ga01BQ2FwdGlv
bkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlVW5pZm9ybSkgewotICAgICAgICBhcHBlbmRDU1MoYnVp
bGRlciwgQ1NTUHJvcGVydHlTdHJva2VDb2xvciwgImJsYWNrIiwgaW1wb3J0YW50KTsKKyAgICAg
ICAgYXBwZW5kQ1NTKGJ1aWxkZXIsIENTU1Byb3BlcnR5U3Ryb2tlQ29sb3IsICJibGFjayJfcywg
aW1wb3J0YW50KTsKICAgICAgICAgYXBwZW5kQ1NTKGJ1aWxkZXIsIENTU1Byb3BlcnR5UGFpbnRP
cmRlciwgZ2V0VmFsdWVOYW1lKENTU1ZhbHVlU3Ryb2tlKSwgaW1wb3J0YW50KTsKICAgICAgICAg
YXBwZW5kQ1NTKGJ1aWxkZXIsIENTU1Byb3BlcnR5U3Ryb2tlTGluZWpvaW4sIGdldFZhbHVlTmFt
ZShDU1NWYWx1ZVJvdW5kKSwgaW1wb3J0YW50KTsKICAgICAgICAgYXBwZW5kQ1NTKGJ1aWxkZXIs
IENTU1Byb3BlcnR5U3Ryb2tlTGluZWNhcCwgZ2V0VmFsdWVOYW1lKENTU1ZhbHVlUm91bmQpLCBp
bXBvcnRhbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IGRhNzVjZTAxOTc1NGY2Yjc4NDM4
OGVmYTQxNTZiODZiZmJmODU3MTUuLjdiNWFlYmI5YmNmMzg5NDdiYjYyZWQ5ZmRjYzUwMjliMDU2
Yjk4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTQwOCw3ICs0MDgsNyBAQCBib29sIENo
cm9tZTo6cHJpbnQoRnJhbWUmIGZyYW1lKQogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBoYXZl
IFBhZ2VHcm91cExvYWREZWZlcnJlciwgbGlrZSBydW5Nb2RhbCgpIG9yIHJ1bkphdmFTY3JpcHRB
bGVydCgpLCBiZWNhdXNlIGl0J3Mgbm8gZGlmZmVyZW50IGZyb20gdGhvc2UuCiAKICAgICBpZiAo
ZnJhbWUuZG9jdW1lbnQoKS0+aXNTYW5kYm94ZWQoU2FuZGJveE1vZGFscykpIHsKLSAgICAgICAg
ZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Yg
d2luZG93LnByaW50IGlzIG5vdCBhbGxvd2VkIGluIGEgc2FuZGJveGVkIGZyYW1lIHdoZW4gdGhl
IGFsbG93LW1vZGFscyBmbGFnIGlzIG5vdCBzZXQuIik7CisgICAgICAgIGZyYW1lLmRvY3VtZW50
KCktPmRvbVdpbmRvdygpLT5wcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5wcmludCBp
cyBub3QgYWxsb3dlZCBpbiBhIHNhbmRib3hlZCBmcmFtZSB3aGVuIHRoZSBhbGxvdy1tb2RhbHMg
ZmxhZyBpcyBub3Qgc2V0LiJfcyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCAxNGIx
ZTM3YmRjNjUxZmUzN2U2M2RkOGFiODgxNjRkOGIyMmJjNzVkLi5lOTI4Y2U5YTE0ZmFiZmVlZWZk
NDkwOWVkZDFjMGRiOWE0Y2ZmMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMTUsMTAgKzMxNSwxMCBAQCB2b2lkIENvbnRleHRNZW51
Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rpb24gYWN0
aW9uLCBjbwogICAgICAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2FkKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ3V0OgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiQ3V0Il9zKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0
ZSIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9z
KS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1Bhc3RlQXNQbGFpblRleHQ6CkBAIC00MTIsMTAgKzQxMiwxMCBA
QCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29u
dGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjbwogICAgICAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2Nv
bnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCAqZnJhbWUsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93KTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdCb2xkOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiVG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNv
bW1hbmQoIlRvZ2dsZUJvbGQiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21t
YW5kKCJUb2dnbGVJdGFsaWMiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJUb2dnbGVJdGFsaWMiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6CiAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS50b2dnbGVVbmRlcmxpbmUoKTsKQEAgLTQ0NCwxMyArNDQ0LDEzIEBAIHZvaWQgQ29udGV4dE1l
bnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBh
Y3Rpb24sIGNvCiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihXcml0aW5nRGlyZWN0aW9uOjpSaWdodFRvTGVmdCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQ6Ci0gICAgICAgIGZyYW1l
LT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIikuZXhl
Y3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5n
RGlyZWN0aW9uTmF0dXJhbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDoKLSAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0
IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRX
cml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ6Ci0g
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25S
aWdodFRvTGVmdCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
Ik1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0Il9zKS5leGVjdXRlKCk7CiAgICAg
ICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnU2VhcmNoSW5TcG90bGlnaHQ6CkBAIC0xMjQ4LDI1ICsxMjQ4LDI1IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBp
dGVtKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnTGVmdFRvUmlnaHQ6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUmlnaHRU
b0xlZnQ6IHsKLSAgICAgICAgICAgIFN0cmluZyBkaXJlY3Rpb24gPSBpdGVtLmFjdGlvbigpID09
IENvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIjsKKyAgICAgICAg
ICAgIFN0cmluZyBkaXJlY3Rpb24gPSBpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRh
Z0xlZnRUb1JpZ2h0ID8gImx0ciJfcyA6ICJydGwiX3M7CiAgICAgICAgICAgICBzaG91bGRDaGVj
ayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURpcmVjdGlv
biwgZGlyZWN0aW9uKSAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAgICAgICBzaG91bGRFbmFi
bGUgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdDogewotICAgICAgICAgICAgRWRp
dG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRX
cml0aW5nRGlyZWN0aW9uTmF0dXJhbCIpOworICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNv
bW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9u
TmF0dXJhbCJfcyk7CiAgICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9
PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGNvbW1hbmQuaXNF
bmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDogewotICAgICAgICAgICAg
RWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQiKTsKKyAgICAgICAgICAgIEVkaXRvcjo6Q29t
bWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0Rp
cmVjdGlvbkxlZnRUb1JpZ2h0Il9zKTsKICAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29tbWFu
ZC5zdGF0ZSgpID09IFRyaVN0YXRlOjpUcnVlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0g
Y29tbWFuZC5pc0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0OiB7Ci0g
ICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21t
YW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpOworICAgICAgICAgICAg
RWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQiX3MpOwogICAgICAgICAgICAgc2hvdWxkQ2hl
Y2sgPSBjb21tYW5kLnN0YXRlKCkgPT0gVHJpU3RhdGU6OlRydWU7CiAgICAgICAgICAgICBzaG91
bGRFbmFibGUgPSBjb21tYW5kLmlzRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
MzExLDcgKzEzMTEsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJs
ZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QKICAgICAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lOiB7Ci0g
ICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHls
ZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIikg
IT0gVHJpU3RhdGU6OkZhbHNlOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCwgInVuZGVybGluZSJfcykgIT0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAgICAg
c2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMzI0LDEyICsxMzI0LDEyIEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBp
dGVtKSBjb25zdAogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gdHJ1ZTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0l0YWxpYzogewotICAgICAg
ICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NT
UHJvcGVydHlGb250U3R5bGUsICJpdGFsaWMiKSAhPSBUcmlTdGF0ZTo6RmFsc2U7CisgICAgICAg
ICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQ
cm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyJfcykgIT0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAg
ICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnQm9sZDogewotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2Vs
ZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpICE9IFRyaVN0YXRl
OjpGYWxzZTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVj
dGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiX3MpICE9IFRyaVN0YXRl
OjpGYWxzZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5F
ZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01TZWxlY3Rpb24uY3BwCmluZGV4IDZiMDZhYWEyMzUyNzg0Yjg1ZWNkYmM2NzFiMGEwZDQz
YTI4MWYzNGYuLjZlYTBjMzQ5NWFiNmNjNTQzZjliZmU2NTdjZjExMmZiOGQwMTQ5ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKQEAgLTM0MCw3ICszNDAsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBET01TZWxlY3Rpb246OmV4dGVuZChOb2RlJiBub2RlLCB1bnNpZ25lZCBvZmZz
ZXQpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgCiAgICAgaWYgKHJhbmdlQ291bnQoKSA8IDEp
Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgImV4dGVuZCgp
IHJlcXVpcmVzIGEgUmFuZ2UgdG8gYmUgYWRkZWQgdG8gdGhlIFNlbGVjdGlvbiIgfTsKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiZXh0ZW5kKCkgcmVxdWly
ZXMgYSBSYW5nZSB0byBiZSBhZGRlZCB0byB0aGUgU2VsZWN0aW9uIl9zIH07CiAKICAgICBpZiAo
ZnJhbWUtPnNldHRpbmdzKCkubGl2ZVJhbmdlU2VsZWN0aW9uRW5hYmxlZCgpKSB7CiAgICAgICAg
IGlmICghZnJhbWUtPmRvY3VtZW50KCktPmNvbnRhaW5zKG5vZGUpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCmluZGV4IDU0NmI0YTRkZGVlYmRiYzNkNTgyM2IwYjI3OTcyZDY2N2JjNzIxMGYu
LmRkM2NjZGJiZDEzNDVmYWI5MjJmOWZmMzYwZTJhOGVhYjk2ZmJmYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKQEAgLTEwOTQsNyArMTA5NCw3IEBAIHZvaWQgRE9NV2luZG93Ojpwcmlu
dCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghcGFnZS0+YXJlUHJvbXB0c0FsbG93ZWQo
KSkgewotICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5wcmludCBpcyBu
b3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRpbmcgYSBwYWdlLiIpOworICAgICAgICBwcmludEVycm9y
TWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5wcmludCBpcyBub3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRp
bmcgYSBwYWdlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMjgsNyArMTEy
OCw3IEBAIHZvaWQgRE9NV2luZG93OjphbGVydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKICAg
ICBSZWZQdHIgZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgIGlmIChkb2N1bWVudC0+
aXNTYW5kYm94ZWQoU2FuZGJveE1vZGFscykpIHsKLSAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2Uo
IlVzZSBvZiB3aW5kb3cuYWxlcnQgaXMgbm90IGFsbG93ZWQgaW4gYSBzYW5kYm94ZWQgZnJhbWUg
d2hlbiB0aGUgYWxsb3ctbW9kYWxzIGZsYWcgaXMgbm90IHNldC4iKTsKKyAgICAgICAgcHJpbnRF
cnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cuYWxlcnQgaXMgbm90IGFsbG93ZWQgaW4gYSBzYW5k
Ym94ZWQgZnJhbWUgd2hlbiB0aGUgYWxsb3ctbW9kYWxzIGZsYWcgaXMgbm90IHNldC4iX3MpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTM3LDcgKzExMzcsNyBAQCB2b2lkIERPTVdp
bmRvdzo6YWxlcnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoIXBhZ2UtPmFyZVByb21wdHNBbGxvd2VkKCkpIHsKLSAgICAgICAgcHJpbnRFcnJvck1l
c3NhZ2UoIlVzZSBvZiB3aW5kb3cuYWxlcnQgaXMgbm90IGFsbG93ZWQgd2hpbGUgdW5sb2FkaW5n
IGEgcGFnZS4iKTsKKyAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cuYWxl
cnQgaXMgbm90IGFsbG93ZWQgd2hpbGUgdW5sb2FkaW5nIGEgcGFnZS4iX3MpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xMTU3LDcgKzExNTcsNyBAQCBib29sIERPTVdpbmRvdzo6Y29u
ZmlybUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogICAgIFJlZlB0ciBkb2N1
bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgaWYgKGRvY3VtZW50LT5pc1NhbmRib3hlZChT
YW5kYm94TW9kYWxzKSkgewotICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRv
dy5jb25maXJtIGlzIG5vdCBhbGxvd2VkIGluIGEgc2FuZGJveGVkIGZyYW1lIHdoZW4gdGhlIGFs
bG93LW1vZGFscyBmbGFnIGlzIG5vdCBzZXQuIik7CisgICAgICAgIHByaW50RXJyb3JNZXNzYWdl
KCJVc2Ugb2Ygd2luZG93LmNvbmZpcm0gaXMgbm90IGFsbG93ZWQgaW4gYSBzYW5kYm94ZWQgZnJh
bWUgd2hlbiB0aGUgYWxsb3ctbW9kYWxzIGZsYWcgaXMgbm90IHNldC4iX3MpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTY2LDcgKzExNjYsNyBAQCBib29sIERPTVdpbmRv
dzo6Y29uZmlybUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKCFwYWdlLT5hcmVQcm9tcHRzQWxsb3dlZCgpKSB7Ci0gICAg
ICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LmNvbmZpcm0gaXMgbm90IGFsbG93
ZWQgd2hpbGUgdW5sb2FkaW5nIGEgcGFnZS4iKTsKKyAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2Uo
IlVzZSBvZiB3aW5kb3cuY29uZmlybSBpcyBub3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRpbmcgYSBw
YWdlLiJfcyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTExODYsNyArMTE4
Niw3IEBAIFN0cmluZyBET01XaW5kb3c6OnByb21wdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlKQogCiAgICAgUmVmUHRyIGRvY3VtZW50ID0gdGhpcy0+
ZG9jdW1lbnQoKTsKICAgICBpZiAoZG9jdW1lbnQtPmlzU2FuZGJveGVkKFNhbmRib3hNb2RhbHMp
KSB7Ci0gICAgICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LnByb21wdCBpcyBu
b3QgYWxsb3dlZCBpbiBhIHNhbmRib3hlZCBmcmFtZSB3aGVuIHRoZSBhbGxvdy1tb2RhbHMgZmxh
ZyBpcyBub3Qgc2V0LiIpOworICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRv
dy5wcm9tcHQgaXMgbm90IGFsbG93ZWQgaW4gYSBzYW5kYm94ZWQgZnJhbWUgd2hlbiB0aGUgYWxs
b3ctbW9kYWxzIGZsYWcgaXMgbm90IHNldC4iX3MpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAgICAgfQogCkBAIC0xMTk1LDcgKzExOTUsNyBAQCBTdHJpbmcgRE9NV2luZG93Ojpwcm9tcHQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKCFwYWdlLT5hcmVQcm9tcHRzQWxsb3dlZCgp
KSB7Ci0gICAgICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LnByb21wdCBpcyBu
b3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRpbmcgYSBwYWdlLiIpOworICAgICAgICBwcmludEVycm9y
TWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5wcm9tcHQgaXMgbm90IGFsbG93ZWQgd2hpbGUgdW5sb2Fk
aW5nIGEgcGFnZS4iX3MpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCkBAIC0y
NjkwLDcgKzI2OTAsNyBAQCB2b2lkIERPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIXBhZ2UtPmFyZVByb21wdHNBbGxvd2VkKCkpIHsKLSAgICAgICAgcHJpbnRF
cnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGlzIG5vdCBhbGxvd2Vk
IHdoaWxlIHVubG9hZGluZyBhIHBhZ2UuIik7CisgICAgICAgIHByaW50RXJyb3JNZXNzYWdlKCJV
c2Ugb2Ygd2luZG93LnNob3dNb2RhbERpYWxvZyBpcyBub3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRp
bmcgYSBwYWdlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAppbmRleCA5OTZlMTgxODIxNjBhZDBmMWY3ZDQ5MDM3MjM3NWYzZWZm
MWZhYzdlLi5kNmJhMmIzMzA3NmFiZjY4ZmRkODlmMzkyZTRlOWI4YTFmZmJmYzFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zNzkyLDExICszNzkyLDExIEBAIHN0YXRp
YyB2b2lkIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnQoRnJhbWUmIGZyYW1lLCBLZXli
b2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBGcmFtZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJh
bWUuc2VsZWN0aW9uKCk7CiAKLSAgICBib29sIGlzQ29tbWFuZGVkID0gZXZlbnQuZ2V0TW9kaWZp
ZXJTdGF0ZSgiTWV0YSIpOwotICAgIGJvb2wgaXNPcHRpb25lZCA9IGV2ZW50LmdldE1vZGlmaWVy
U3RhdGUoIkFsdCIpOworICAgIGJvb2wgaXNDb21tYW5kZWQgPSBldmVudC5nZXRNb2RpZmllclN0
YXRlKCJNZXRhIl9zKTsKKyAgICBib29sIGlzT3B0aW9uZWQgPSBldmVudC5nZXRNb2RpZmllclN0
YXRlKCJBbHQiX3MpOwogICAgIGJvb2wgaXNTZWxlY3Rpb24gPSAhc2VsZWN0aW9uLmlzTm9uZSgp
OwogCi0gICAgRnJhbWVTZWxlY3Rpb246OkVBbHRlcmF0aW9uIGFsdGVybmF0aW9uID0gZXZlbnQu
Z2V0TW9kaWZpZXJTdGF0ZSgiU2hpZnQiKSA/IEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0
ZW5kIDogRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlOworICAgIEZyYW1lU2VsZWN0aW9u
OjpFQWx0ZXJhdGlvbiBhbHRlcm5hdGlvbiA9IGV2ZW50LmdldE1vZGlmaWVyU3RhdGUoIlNoaWZ0
Il9zKSA/IEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kIDogRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25Nb3ZlOwogICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQ7CiAgICAgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50U291cmNlLmNwcAppbmRleCAxMGNkYWNkMGU2YzkwN2RmNDNjYzhjZTUyMGRhZDE3ZWVh
OWE4MDg3Li44ZDdkOWU2NmQ3YmMxZDQyOWFhNWQ3ZmY0NjY4NTA0MDA4YWFjZDRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtOTUsOSArOTUsOSBAQCB2b2lkIEV2ZW50U291
cmNlOjpjb25uZWN0KCkKICAgICBBU1NFUlQoIW1fcmVxdWVzdEluRmxpZ2h0KTsKIAogICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0IHsgbV91cmwgfTsKLSAgICByZXF1ZXN0LnNldEhUVFBNZXRo
b2QoIkdFVCIpOwotICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpBY2NlcHQsICJ0ZXh0L2V2ZW50LXN0cmVhbSIpOwotICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wsICJuby1jYWNoZSIpOworICAgIHJl
cXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJG
aWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXB0LCAidGV4dC9ldmVudC1zdHJlYW0iX3MpOworICAg
IHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2ws
ICJuby1jYWNoZSJfcyk7CiAgICAgaWYgKCFtX2xhc3RFdmVudElkLmlzRW1wdHkoKSkKICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6Okxhc3RFdmVudElE
LCBtX2xhc3RFdmVudElkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA5ZmFmOGFkZjY5YjVj
YzU1YzJiM2FmYTdhYTYxY2UyYmRjMGEwNDdmLi4wNTJjZWQ5N2JlNWY0ZTZmYzQ1ZDFiMjhmZTVi
ZWE0MzM5MmM2NzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIHN0
YXRpYyBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYKICAgICAvLyBSRVZJRVctIHZlcnNpb24gb2YgdGhpcyBjYWxs
IGluIEZyYW1lTWFjLm1tIGNhY2hlcyBiYXNlZCBvbiB0aGUgTlNBcnJheSBwdHJzIGJlaW5nCiAg
ICAgLy8gdGhlIHNhbWUgYWNyb3NzIGNhbGxzLiAgV2UgY2FuJ3QgZG8gdGhhdC4KIAotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiB3b3JkUmVn
RXhwKCJcXHciKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpSZWd1bGFy
RXhwcmVzc2lvbj4gd29yZFJlZ0V4cCgiXFx3Il9zKTsKICAgICBTdHJpbmdCdWlsZGVyIHBhdHRl
cm47CiAgICAgcGF0dGVybi5hcHBlbmQoJygnKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBu
dW1MYWJlbHMgPSBsYWJlbHMuc2l6ZSgpOyBpIDwgbnVtTGFiZWxzOyBpKyspIHsKQEAgLTUwMiw3
ICs1MDIsNyBAQCBzdGF0aWMgU3RyaW5nIG1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBjb25zdCBTdHJpbgogICAgIFN0cmluZyBtdXRhYmxlU3Ry
aW5nVG9NYXRjaCA9IHN0cmluZ1RvTWF0Y2g7CiAKICAgICAvLyBNYWtlIG51bWJlcnMgYW5kIF8n
cyBpbiBmaWVsZCBuYW1lcyBiZWhhdmUgbGlrZSB3b3JkIGJvdW5kYXJpZXMsIGUuZy4sICJhZGRy
ZXNzMiIKLSAgICByZXBsYWNlKG11dGFibGVTdHJpbmdUb01hdGNoLCBKU0M6OllhcnI6OlJlZ3Vs
YXJFeHByZXNzaW9uKCJcXGQiKSwgIiAiKTsKKyAgICByZXBsYWNlKG11dGFibGVTdHJpbmdUb01h
dGNoLCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uKCJcXGQiX3MpLCAiICJfcyk7CiAgICAg
bXV0YWJsZVN0cmluZ1RvTWF0Y2gucmVwbGFjZSgnXycsICcgJyk7CiAgICAgCiAgICAgSlNDOjpZ
YXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdFeHAgPSBjcmVhdGVSZWdFeHBGb3JMYWJlbHMobGFi
ZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBjOWY1ZDQ4ZGNiNDZjODI0Yzgx
ZTI4NjY2M2FmYjcxYTRhNTUyZGI0Li4yM2IzODY1YmQ3N2I4YzQ2OTA4OWJlNGYxYzdmNDM2MTUz
MjVhNTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xNDA2LDcgKzE0MDYsNyBA
QCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0TWVkaWFUeXBlRm9yUHJpbnRpbmcoYm9vbCBwcmludGlu
ZykKICAgICBpZiAocHJpbnRpbmcpIHsKICAgICAgICAgaWYgKG1fbWVkaWFUeXBlV2hlbk5vdFBy
aW50aW5nLmlzTnVsbCgpKQogICAgICAgICAgICAgbV9tZWRpYVR5cGVXaGVuTm90UHJpbnRpbmcg
PSBtZWRpYVR5cGUoKTsKLSAgICAgICAgc2V0TWVkaWFUeXBlKCJwcmludCIpOworICAgICAgICBz
ZXRNZWRpYVR5cGUoInByaW50Il9zKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIW1fbWVk
aWFUeXBlV2hlbk5vdFByaW50aW5nLmlzTnVsbCgpKQogICAgICAgICAgICAgc2V0TWVkaWFUeXBl
KG1fbWVkaWFUeXBlV2hlbk5vdFByaW50aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRl
cnNlY3Rpb25PYnNlcnZlci5jcHAKaW5kZXggNTEwYjllNDE3YzY3MTYyMDU2YWM1ZTE2OTZiYWRl
YzdjYzI2OGUyNS4uZDJhY2FiMjk0NWI2NTUzNzcyNzU1YTdjYWUxOWExZWJjYjZhZTk2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKQEAgLTQ4LDE2
ICs0OCwxNiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8TGVuZ3RoQm94PiBwYXJzZVJvb3RNYXJnaW4o
U3RyaW5nJiByb290TWFyZ2luKQogICAgIFZlY3RvcjxMZW5ndGgsIDQ+IG1hcmdpbnM7CiAgICAg
d2hpbGUgKCF0b2tlblJhbmdlLmF0RW5kKCkpIHsKICAgICAgICAgaWYgKG1hcmdpbnMuc2l6ZSgp
ID09IDQpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJGYWls
ZWQgdG8gY29uc3RydWN0ICdJbnRlcnNlY3Rpb25PYnNlcnZlcic6IEV4dHJhIHRleHQgZm91bmQg
YXQgdGhlIGVuZCBvZiByb290TWFyZ2luLiIgfTsKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTeW50YXhFcnJvciwgIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2VjdGlvbk9ic2Vy
dmVyJzogRXh0cmEgdGV4dCBmb3VuZCBhdCB0aGUgZW5kIG9mIHJvb3RNYXJnaW4uIl9zIH07CiAg
ICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VkVmFsdWUgPSBDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVMZW5ndGhPclBlcmNlbnQodG9rZW5SYW5nZSwgSFRNTFN0
YW5kYXJkTW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSB8
fCBwYXJzZWRWYWx1ZS0+aXNDYWxjdWxhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgU3ludGF4RXJyb3IsICJGYWlsZWQgdG8gY29uc3RydWN0ICdJbnRlcnNlY3Rpb25PYnNl
cnZlcic6IHJvb3RNYXJnaW4gbXVzdCBiZSBzcGVjaWZpZWQgaW4gcGl4ZWxzIG9yIHBlcmNlbnQu
IiB9OworICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiRmFpbGVk
IHRvIGNvbnN0cnVjdCAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInOiByb290TWFyZ2luIG11c3QgYmUg
c3BlY2lmaWVkIGluIHBpeGVscyBvciBwZXJjZW50LiJfcyB9OwogICAgICAgICBpZiAocGFyc2Vk
VmFsdWUtPmlzUGVyY2VudGFnZSgpKQogICAgICAgICAgICAgbWFyZ2lucy5hcHBlbmQoTGVuZ3Ro
KHBhcnNlZFZhbHVlLT5kb3VibGVWYWx1ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50KSk7CiAgICAg
ICAgIGVsc2UgaWYgKHBhcnNlZFZhbHVlLT5pc1B4KCkpCiAgICAgICAgICAgICBtYXJnaW5zLmFw
cGVuZChMZW5ndGgocGFyc2VkVmFsdWUtPmludFZhbHVlKCksIExlbmd0aFR5cGU6OkZpeGVkKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJv
ciwgIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2VjdGlvbk9ic2VydmVyJzogcm9vdE1hcmdp
biBtdXN0IGJlIHNwZWNpZmllZCBpbiBwaXhlbHMgb3IgcGVyY2VudC4iIH07CisgICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJGYWlsZWQgdG8gY29uc3RydWN0ICdJ
bnRlcnNlY3Rpb25PYnNlcnZlcic6IHJvb3RNYXJnaW4gbXVzdCBiZSBzcGVjaWZpZWQgaW4gcGl4
ZWxzIG9yIHBlcmNlbnQuIl9zIH07CiAgICAgfQogICAgIHN3aXRjaCAobWFyZ2lucy5zaXplKCkp
IHsKICAgICBjYXNlIDA6CkBAIC0xMDgsNyArMTA4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPEludGVy
c2VjdGlvbk9ic2VydmVyPj4gSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OmNyZWF0ZShEb2N1bWVudCYg
ZG8KIAogICAgIGZvciAoYXV0byB0aHJlc2hvbGQgOiB0aHJlc2hvbGRzKSB7CiAgICAgICAgIGlm
ICghKHRocmVzaG9sZCA+PSAwICYmIHRocmVzaG9sZCA8PSAxKSkKLSAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCAnSW50ZXJzZWN0
aW9uT2JzZXJ2ZXInOiBhbGwgdGhyZXNob2xkcyBtdXN0IGxpZSBpbiB0aGUgcmFuZ2UgWzAuMCwg
MS4wXS4iIH07CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUmFuZ2VFcnJvciwgIkZh
aWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2VjdGlvbk9ic2VydmVyJzogYWxsIHRocmVzaG9sZHMg
bXVzdCBsaWUgaW4gdGhlIHJhbmdlIFswLjAsIDEuMF0uIl9zIH07CiAgICAgfQogCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZG9jdW1lbnQsIFdURk1vdmUo
Y2FsbGJhY2spLCByb290LmdldCgpLCByb290TWFyZ2luT3JFeGNlcHRpb24ucmVsZWFzZVJldHVy
blZhbHVlKCksIFdURk1vdmUodGhyZXNob2xkcykpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTG9nZ2VkSW5TdGF0dXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2dnZWRJ
blN0YXR1cy5jcHAKaW5kZXggNDY3MzhiZDM0MzIyY2RjMWMyOGFkNmY2ZmMzY2JhODNkOTFmOTIz
OC4uNjU3NTI3N2ExYWQyOGNhZGVjOWYwMzFkY2VhODkzYzBlMTcxMTcyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2dnZWRJblN0YXR1cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Mb2dnZWRJblN0YXR1cy5jcHAKQEAgLTQ0LDEwICs0NCwxMCBAQCBFeGNlcHRpb25P
cjxVbmlxdWVSZWY8TG9nZ2VkSW5TdGF0dXM+PiBMb2dnZWRJblN0YXR1czo6Y3JlYXRlKGNvbnN0
IFJlZ2lzdHJhYmxlRAogRXhjZXB0aW9uT3I8VW5pcXVlUmVmPExvZ2dlZEluU3RhdHVzPj4gTG9n
Z2VkSW5TdGF0dXM6OmNyZWF0ZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBjb25z
dCBTdHJpbmcmIHVzZXJuYW1lLCBDcmVkZW50aWFsVG9rZW5UeXBlIHRva2VuVHlwZSwgQXV0aGVu
dGljYXRpb25UeXBlIGF1dGhUeXBlLCBTZWNvbmRzIHRpbWVUb0xpdmUpCiB7CiAgICAgaWYgKGRv
bWFpbi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9y
LCAiSXNMb2dnZWRJbiBzdGF0dXMgY2FuIG9ubHkgYmUgc2V0IGZvciBvcmlnaW5zIHdpdGggYSBy
ZWdpc3RyYWJsZSBkb21haW4uIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJp
dHlFcnJvciwgIklzTG9nZ2VkSW4gc3RhdHVzIGNhbiBvbmx5IGJlIHNldCBmb3Igb3JpZ2lucyB3
aXRoIGEgcmVnaXN0cmFibGUgZG9tYWluLiJfcyB9OwogCiAgICAgaWYgKHVzZXJuYW1lLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiSXNMb2dnZWRJ
biByZXF1aXJlcyBhIG5vbi1lbXB0eSB1c2VybmFtZS4iIH07CisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBTeW50YXhFcnJvciwgIklzTG9nZ2VkSW4gcmVxdWlyZXMgYSBub24tZW1wdHkgdXNl
cm5hbWUuIl9zIH07CiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSB1c2VybmFtZS5sZW5ndGgoKTsK
ICAgICBpZiAobGVuZ3RoID4gVXNlcm5hbWVNYXhMZW5ndGgpCkBAIC01Nyw3ICs1Nyw3IEBAIEV4
Y2VwdGlvbk9yPFVuaXF1ZVJlZjxMb2dnZWRJblN0YXR1cz4+IExvZ2dlZEluU3RhdHVzOjpjcmVh
dGUoY29uc3QgUmVnaXN0cmFibGVECiAgICAgICAgIHJldHVybiBpc1NwYWNlT3JOZXdsaW5lKGNo
KTsKICAgICB9KTsKICAgICBpZiAoc3BhY2VPck5ld2xpbmUgIT0gbm90Rm91bmQpCi0gICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQ2hhcmFjdGVyRXJyb3IsICJJc0xvZ2dlZEluIHVz
ZXJuYW1lcyBjYW5ub3QgY29udGFpbiB3aGl0ZXNwYWNlIG9yIG5ld2xpbmVzLiIgfTsKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRDaGFyYWN0ZXJFcnJvciwgIklzTG9nZ2VkSW4g
dXNlcm5hbWVzIGNhbm5vdCBjb250YWluIHdoaXRlc3BhY2Ugb3IgbmV3bGluZXMuIl9zIH07CiAK
ICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxMb2dnZWRJblN0YXR1cz4oKm5ldyBMb2dnZWRJblN0
YXR1cyhkb21haW4sIHVzZXJuYW1lLCB0b2tlblR5cGUsIGF1dGhUeXBlLCB0aW1lVG9MaXZlKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAppbmRleCA3YjEwYzYzNTYwODE5
Mzg4ZDc4ODViZTAzNzRkOGYwZjE5NDczYjA5Li5jMDdjY2U0ODZjN2M2YzVhZWMxYjM3Njc5NzE1
ODBhOTE1ZGQ2NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKQEAgLTE3
MSw3ICsxNzEsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyJiBOYXZpZ2F0b3JCYXNlOjpzZXJ2
aWNlV29ya2VyKCkKIEV4Y2VwdGlvbk9yPFNlcnZpY2VXb3JrZXJDb250YWluZXImPiBOYXZpZ2F0
b3JCYXNlOjpzZXJ2aWNlV29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7
CiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSAmJiBkb3duY2FzdDxEb2N1bWVudD4oY29u
dGV4dCkuaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikpCi0gICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTZWN1cml0eUVycm9yLCAiU2VydmljZSBXb3JrZXIgaXMgZGlzYWJsZWQgYmVjYXVzZSB0
aGUgY29udGV4dCBpcyBzYW5kYm94ZWQgYW5kIGxhY2tzIHRoZSAnYWxsb3ctc2FtZS1vcmlnaW4n
IGZsYWciIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiU2Vy
dmljZSBXb3JrZXIgaXMgZGlzYWJsZWQgYmVjYXVzZSB0aGUgY29udGV4dCBpcyBzYW5kYm94ZWQg
YW5kIGxhY2tzIHRoZSAnYWxsb3ctc2FtZS1vcmlnaW4nIGZsYWciX3MgfTsKICAgICByZXR1cm4g
c2VydmljZVdvcmtlcigpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA2NjNmOTg0
YjU3ZDRkMGVkMzQzOWYwOTEzYzE0YjFjYjFlMThmYzE3Li5kOTRkM2NkMTdhZTVmZjA1NmJmNmEz
ZjBiMjk3YmQwYjZhNTFlN2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTIwNDIsNyArMjA0Miw3
IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKLSAgICBtX3VzZXJTdHls
ZVNoZWV0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2NzcyIpLT5kZWNvZGVB
bmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgbV91c2VyU3R5bGVTaGVl
dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9jc3MiX3MpLT5kZWNvZGVBbmRG
bHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICByZXR1cm4gbV91c2VyU3R5
bGVTaGVldDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAppbmRleCAxZTBlNjMzZWNjNGY0YzNkNjU3
NTNjMjMwNWZkYTZjMzZlZGRmMjVhLi5kZGJhODM1ZWY4OTIwM2FhZWFkYTFkMzAzYjIzNjk0NThk
NDcyODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCkBAIC0xMTgzLDcgKzExODMsNyBAQCBRdWly
a3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNj
ZXNzUXVpcmsoRWxlbWVudCYgZQogICAgIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGxvZ2luUG9wdXBXaW5kb3dGZWF0dXJlU3RyaW5nID0gInRvb2xiYXI9bm8sbG9jYXRpb249
eWVzLGRpcmVjdG9yaWVzPW5vLHN0YXR1cz1ubyxtZW51YmFyPW5vLHNjcm9sbGJhcnM9eWVzLHJl
c2l6YWJsZT15ZXMsY29weWhpc3Rvcnk9bm8sd2lkdGg9NTk5LGhlaWdodD02MDAsdG9wPTQyMCxs
ZWZ0PTk4MC41Il9zOwogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVzZXJTY3JpcHQ+IGtp
bmphTG9naW5Vc2VyU2NyaXB0IHsgImZ1bmN0aW9uIHRyaWdnZXJMb2dpbkZvcm0oKSB7IGxldCBl
bGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2pzX2hlYWRlci11c2Vy
YnV0dG9uJyk7IGlmIChlbGVtZW50cyAmJiBlbGVtZW50c1swXSkgeyBlbGVtZW50c1swXS5jbGlj
aygpOyBjbGVhckludGVydmFsKGludGVydmFsKTsgfSB9IGxldCBpbnRlcnZhbCA9IHNldEludGVy
dmFsKHRyaWdnZXJMb2dpbkZvcm0sIDIwMCk7IiwgVVJMKGFib3V0QmxhbmtVUkwoKSksIFZlY3Rv
cjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpE
b2N1bWVudEVuZCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9u
bHksIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6OlllcyB9OworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxVc2VyU2NyaXB0PiBraW5qYUxvZ2luVXNlclNjcmlwdCB7ICJmdW5j
dGlvbiB0cmlnZ2VyTG9naW5Gb3JtKCkgeyBsZXQgZWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCdqc19oZWFkZXItdXNlcmJ1dHRvbicpOyBpZiAoZWxlbWVudHMgJiYg
ZWxlbWVudHNbMF0pIHsgZWxlbWVudHNbMF0uY2xpY2soKTsgY2xlYXJJbnRlcnZhbChpbnRlcnZh
bCk7IH0gfSBsZXQgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCh0cmlnZ2VyTG9naW5Gb3JtLCAyMDAp
OyJfcywgVVJMKGFib3V0QmxhbmtVUkwoKSksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJp
bmc+KCksIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCwgVXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHksIFdhaXRGb3JOb3RpZmljYXRpb25C
ZWZvcmVJbmplY3Rpbmc6OlllcyB9OwogCiAgICAgaWYgKGV2ZW50VHlwZSA9PSAiY2xpY2siKSB7
CiAgICAgICAgIGlmICghbV9kb2N1bWVudCkKQEAgLTEyMjAsNyArMTIyMCw3IEBAIFF1aXJrczo6
U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NR
dWlyayhFbGVtZW50JiBlCiAgICAgICAgICAgICBhdXRvKiBhYnN0cmFjdEZyYW1lID0gcHJveHkt
PmZyYW1lKCk7CiAgICAgICAgICAgICBpZiAoYWJzdHJhY3RGcmFtZSAmJiBpczxGcmFtZT4oKmFi
c3RyYWN0RnJhbWUpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgZnJhbWUgPSBkb3duY2FzdDxG
cmFtZT4oKmFic3RyYWN0RnJhbWUpOwotICAgICAgICAgICAgICAgIGF1dG8gd29ybGQgPSBTY3Jp
cHRDb250cm9sbGVyOjpjcmVhdGVXb3JsZCgia2luamFDb21RdWlya1dvcmxkIiwgU2NyaXB0Q29u
dHJvbGxlcjo6V29ybGRUeXBlOjpVc2VyKTsKKyAgICAgICAgICAgICAgICBhdXRvIHdvcmxkID0g
U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV29ybGQoImtpbmphQ29tUXVpcmtXb3JsZCJfcywgU2Ny
aXB0Q29udHJvbGxlcjo6V29ybGRUeXBlOjpVc2VyKTsKICAgICAgICAgICAgICAgICBmcmFtZS5h
ZGRVc2VyU2NyaXB0QXdhaXRpbmdOb3RpZmljYXRpb24od29ybGQuZ2V0KCksIGtpbmphTG9naW5V
c2VyU2NyaXB0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNz
UmVzdWx0OjpTaG91bGRDYW5jZWxFdmVudDsKICAgICAgICAgICAgIH0KQEAgLTEyMzksNyArMTIz
OSw3IEBAIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWdnZXJPcHRpb25h
bFN0b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50JiBlCiAgICAgICAgIH0KIAogICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBCQkNSYWRpb1BsYXllclBvcFVwV2luZG93RmVhdHVy
ZVN0cmluZyA9ICJmZWF0dXJlc3RyaW5nIHdpZHRoPTQwMCxoZWlnaHQ9NzMwIl9zOwotICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlclNjcmlwdD4gQkJDVXNlclNjcmlwdCB7ICJmdW5j
dGlvbiB0cmlnZ2VyUmVkaXJlY3QoKSB7IGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBcImh0dHBz
Oi8vd3d3LmJiYy5jby51ay9zb3VuZHMvcGxheWVyL2JiY193b3JsZF9zZXJ2aWNlXCI7IH0gd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7IHRyaWdnZXJSZWRpcmVj
dCgpOyB9KSIsIFVSTChhYm91dEJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8
U3RyaW5nPigpLCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBXYWl0Rm9yTm90aWZpY2F0
aW9uQmVmb3JlSW5qZWN0aW5nOjpZZXMgfTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFVzZXJTY3JpcHQ+IEJCQ1VzZXJTY3JpcHQgeyAiZnVuY3Rpb24gdHJpZ2dlclJlZGlyZWN0KCkg
eyBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gXCJodHRwczovL3d3dy5iYmMuY28udWsvc291bmRz
L3BsYXllci9iYmNfd29ybGRfc2VydmljZVwiOyB9IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCds
b2FkJywgZnVuY3Rpb24gKCkgeyB0cmlnZ2VyUmVkaXJlY3QoKTsgfSkiX3MsIFVSTChhYm91dEJs
YW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluVG9wRnJhbWVPbmx5LCBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZ
ZXMgfTsKIAogICAgICAgICAvLyBCQkMgUmFkaW9QbGF5ZXIgY2FzZS4KICAgICAgICAgaWYgKGlz
QkJDRG9tYWluKGRvbWFpbikgJiYgaXNCQkNQb3BVcFBsYXllckVsZW1lbnQoZWxlbWVudCkpIHsK
QEAgLTEyNTYsNyArMTI1Niw3IEBAIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6
OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50JiBlCiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8qIGFic3RyYWN0RnJhbWUgPSBwcm94eS0+ZnJhbWUoKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGlzPEZyYW1lPihhYnN0cmFjdEZyYW1lKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byogZnJhbWUgPSBkb3duY2FzdDxGcmFtZT4oYWJzdHJhY3RGcmFtZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHdvcmxkID0gU2NyaXB0Q29udHJvbGxlcjo6
Y3JlYXRlV29ybGQoImJiY1JhZGlvUGxheWVyV29ybGQiLCBTY3JpcHRDb250cm9sbGVyOjpXb3Js
ZFR5cGU6OlVzZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byB3b3JsZCA9IFNjcmlw
dENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKCJiYmNSYWRpb1BsYXllcldvcmxkIl9zLCBTY3JpcHRD
b250cm9sbGVyOjpXb3JsZFR5cGU6OlVzZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWUtPmFkZFVzZXJTY3JpcHRBd2FpdGluZ05vdGlmaWNhdGlvbih3b3JsZC5nZXQoKSwgQkJDVXNl
clNjcmlwdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKaW5kZXggYzgzMmNm
NTZhOTU4YTJlN2E5ZWY5MWIyNzJjMmYwYzE0NWM2ZmNjMy4uMjA4MzQwOTdiYjE4OTEyYjE5NzYy
MjMwZjQwNmFiZTViMDhjNGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5k
b3dGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5j
cHAKQEAgLTM4LDggKzM4LDggQEAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+IERpYWxvZ0ZlYXR1cmVzTWFwOwogc3RhdGljIHZvaWQgc2V0
V2luZG93RmVhdHVyZShXaW5kb3dGZWF0dXJlcyYsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3
IHZhbHVlKTsKIAogc3RhdGljIERpYWxvZ0ZlYXR1cmVzTWFwIHBhcnNlRGlhbG9nRmVhdHVyZXNN
YXAoU3RyaW5nVmlldyk7Ci1zdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBib29sRmVhdHVyZShj
b25zdCBEaWFsb2dGZWF0dXJlc01hcCYsIGNvbnN0IGNoYXIqIGtleSk7Ci1zdGF0aWMgc3RkOjpv
cHRpb25hbDxmbG9hdD4gZmxvYXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiwgY29u
c3QgY2hhcioga2V5LCBmbG9hdCBtaW4sIGZsb2F0IG1heCk7CitzdGF0aWMgc3RkOjpvcHRpb25h
bDxib29sPiBib29sRmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYsIEFTQ0lJTGl0ZXJh
bCBrZXkpOworc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGZsb2F0RmVhdHVyZShjb25zdCBE
aWFsb2dGZWF0dXJlc01hcCYsIEFTQ0lJTGl0ZXJhbCBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4
KTsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jZmVhdHVyZS1zZXBhcmF0b3IK
IHN0YXRpYyBib29sIGlzU2VwYXJhdG9yKFVDaGFyIGNoYXJhY3RlciwgRmVhdHVyZU1vZGUgbW9k
ZSkKQEAgLTE4NSwzMCArMTg1LDMwIEBAIFdpbmRvd0ZlYXR1cmVzIHBhcnNlRGlhbG9nRmVhdHVy
ZXMoU3RyaW5nVmlldyBkaWFsb2dGZWF0dXJlc1N0cmluZywgY29uc3QgRmxvYXRSCiAgICAgZmVh
dHVyZXMubG9jYXRpb25CYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgZmVhdHVyZXMuZGlhbG9nID0g
dHJ1ZTsKIAotICAgIGZsb2F0IHdpZHRoID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlh
bG9nd2lkdGgiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3Qud2lkdGgoKSkudmFsdWVfb3IoNjIw
KTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJ
RQotICAgIGZsb2F0IGhlaWdodCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ2hl
aWdodCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkudmFsdWVfb3IoNDUwKTsg
Ly8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQor
ICAgIGZsb2F0IHdpZHRoID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nd2lkdGgi
X3MsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpKS52YWx1ZV9vcig2MjApOyAvLyBk
ZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCisgICAg
ZmxvYXQgaGVpZ2h0ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9naGVpZ2h0Il9z
LCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpLnZhbHVlX29yKDQ1MCk7IC8vIGRl
ZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKIAogICAg
IGZlYXR1cmVzLndpZHRoID0gd2lkdGg7CiAgICAgZmVhdHVyZXMuaGVpZ2h0ID0gaGVpZ2h0Owog
Ci0gICAgZmVhdHVyZXMueCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ2xlZnQi
LCBzY3JlZW5BdmFpbGFibGVSZWN0LngoKSwgc2NyZWVuQXZhaWxhYmxlUmVjdC5tYXhYKCkgLSB3
aWR0aCk7Ci0gICAgZmVhdHVyZXMueSA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxv
Z3RvcCIsIHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1heFko
KSAtIGhlaWdodCk7CisgICAgZmVhdHVyZXMueCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwg
ImRpYWxvZ2xlZnQiX3MsIHNjcmVlbkF2YWlsYWJsZVJlY3QueCgpLCBzY3JlZW5BdmFpbGFibGVS
ZWN0Lm1heFgoKSAtIHdpZHRoKTsKKyAgICBmZWF0dXJlcy55ID0gZmxvYXRGZWF0dXJlKGZlYXR1
cmVzTWFwLCAiZGlhbG9ndG9wIl9zLCBzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSwgc2NyZWVuQXZh
aWxhYmxlUmVjdC5tYXhZKCkgLSBoZWlnaHQpOwogCi0gICAgaWYgKGJvb2xGZWF0dXJlKGZlYXR1
cmVzTWFwLCAiY2VudGVyIikudmFsdWVfb3IodHJ1ZSkpIHsKKyAgICBpZiAoYm9vbEZlYXR1cmUo
ZmVhdHVyZXNNYXAsICJjZW50ZXIiX3MpLnZhbHVlX29yKHRydWUpKSB7CiAgICAgICAgIGlmICgh
ZmVhdHVyZXMueCkKICAgICAgICAgICAgIGZlYXR1cmVzLnggPSBzY3JlZW5BdmFpbGFibGVSZWN0
LngoKSArIChzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkgLSB3aWR0aCkgLyAyOwogICAgICAg
ICBpZiAoIWZlYXR1cmVzLnkpCiAgICAgICAgICAgICBmZWF0dXJlcy55ID0gc2NyZWVuQXZhaWxh
YmxlUmVjdC55KCkgKyAoc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSAtIGhlaWdodCkgLyAy
OwogICAgIH0KIAotICAgIGZlYXR1cmVzLnJlc2l6YWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVz
TWFwLCAicmVzaXphYmxlIikudmFsdWVfb3IoZmFsc2UpOwotICAgIGZlYXR1cmVzLnNjcm9sbGJh
cnNWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzY3JvbGwiKS52YWx1ZV9vcih0
cnVlKTsKLSAgICBmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVy
ZXNNYXAsICJzdGF0dXMiKS52YWx1ZV9vcihmYWxzZSk7CisgICAgZmVhdHVyZXMucmVzaXphYmxl
ID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJyZXNpemFibGUiX3MpLnZhbHVlX29yKGZhbHNl
KTsKKyAgICBmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVz
TWFwLCAic2Nyb2xsIl9zKS52YWx1ZV9vcih0cnVlKTsKKyAgICBmZWF0dXJlcy5zdGF0dXNCYXJW
aXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzdGF0dXMiX3MpLnZhbHVlX29yKGZh
bHNlKTsKIAogICAgIHJldHVybiBmZWF0dXJlczsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gYm9vbEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmIGZlYXR1cmVzLCBjb25z
dCBjaGFyKiBrZXkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBib29sRmVhdHVyZShjb25z
dCBEaWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIEFTQ0lJTGl0ZXJhbCBrZXkpCiB7CiAgICAg
YXV0byBpdCA9IGZlYXR1cmVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXQgPT0gZmVhdHVyZXMuZW5k
KCkpCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYm9vbEZl
YXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmIGZlYXR1cmVzLCBjb25zdAogICAgICAgICB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgIm9uIik7CiB9CiAKLXN0YXRp
YyBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBmbG9hdEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNN
YXAmIGZlYXR1cmVzLCBjb25zdCBjaGFyKiBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4KQorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGZsb2F0RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJl
c01hcCYgZmVhdHVyZXMsIEFTQ0lJTGl0ZXJhbCBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4KQog
ewogICAgIGF1dG8gaXQgPSBmZWF0dXJlcy5maW5kKGtleSk7CiAgICAgaWYgKGl0ID09IGZlYXR1
cmVzLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5jcHAKaW5kZXggMTYyNzRlOTRhZjEwYzhkMzg1NDBlOWM4MzUxOTIxYzcwYjhmOGQ3
Zi4uY2Y2NjlhMDU1NmJkNzY0NDQ3MGFkZDlhYjYwOTg4NmQ0OTVkY2IzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC03MCw5
ICs3MCw5IEBAIHN0YXRpYyBTdHJpbmcgY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2CiB7CiAgICAgYm9vbCBpc0RlZmF1bHRT
cmMgPSB2aW9sYXRlZERpcmVjdGl2ZS5pc0RlZmF1bHRTcmMoKTsKICAgICBTdHJpbmcgbmFtZSA9
IHZpb2xhdGVkRGlyZWN0aXZlLm5hbWVGb3JSZXBvcnRpbmcoKTsKLSAgICBpZiAodmlvbGF0ZWRE
aXJlY3RpdmUubmFtZUZvclJlcG9ydGluZygpLnN0YXJ0c1dpdGgoQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYykpCisgICAgaWYgKHZpb2xhdGVkRGlyZWN0aXZl
Lm5hbWVGb3JSZXBvcnRpbmcoKS5zdGFydHNXaXRoKFN0cmluZ1ZpZXcgeyBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjIH0pKQogICAgICAgICBuYW1lID0gQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYzsKLSAgICBlbHNlIGlm
ICh2aW9sYXRlZERpcmVjdGl2ZS5uYW1lRm9yUmVwb3J0aW5nKCkuc3RhcnRzV2l0aChDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmMpKQorICAgIGVsc2UgaWYgKHZp
b2xhdGVkRGlyZWN0aXZlLm5hbWVGb3JSZXBvcnRpbmcoKS5zdGFydHNXaXRoKFN0cmluZ1ZpZXcg
eyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmMgfSkpCiAgICAg
ICAgIG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmM7
CiAKICAgICByZXR1cm4gbWFrZVN0cmluZyh2aW9sYXRlZERpcmVjdGl2ZS5kaXJlY3RpdmVMaXN0
KCkuaXNSZXBvcnRPbmx5KCkgPyAiW1JlcG9ydCBPbmx5XSAiIDogIiIsCkBAIC00OTMsNyArNDkz
LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93RXZhbChKU0M6OkpTR2xvYmFs
T2JqZWN0KiBzdGF0ZSwgTG9nVG9Db25zb2xlIHMKICAgICBib29sIGRpZE5vdGlmeUluc3BlY3Rv
ciA9IGZhbHNlOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKICAg
ICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gc2hvdWxkTG9nVG9Db25zb2xlID09IExvZ1Rv
Q29uc29sZTo6WWVzID8gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24odmlvbGF0ZWREaXJlY3Rp
dmUsIFVSTCgpLCAiUmVmdXNlZCB0byBleGVjdXRlIGEgc2NyaXB0IiwgIid1bnNhZmUtZXZhbCci
KSA6IFN0cmluZygpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24odmlvbGF0ZWREaXJlY3RpdmUs
ICJldmFsIiwgY29uc29sZU1lc3NhZ2UsIHN0YXRlLCBjb2RlQ29udGVudCk7CisgICAgICAgIHJl
cG9ydFZpb2xhdGlvbih2aW9sYXRlZERpcmVjdGl2ZSwgImV2YWwiX3MsIGNvbnNvbGVNZXNzYWdl
LCBzdGF0ZSwgY29kZUNvbnRlbnQpOwogICAgICAgICBpZiAoIWRpZE5vdGlmeUluc3BlY3RvciAm
JiAhdmlvbGF0ZWREaXJlY3RpdmUuZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpKSB7CiAg
ICAgICAgICAgICByZXBvcnRCbG9ja2VkU2NyaXB0RXhlY3V0aW9uVG9JbnNwZWN0b3IodmlvbGF0
ZWREaXJlY3RpdmUudGV4dCgpKTsKICAgICAgICAgICAgIGRpZE5vdGlmeUluc3BlY3RvciA9IHRy
dWU7CkBAIC05MDAsNyArOTAwLDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9y
dEludmFsaWRQbHVnaW5UeXBlcyhjb25zdCBTdHJpbmcmIHBsdWdpblR5cGUpIGMKIHsKICAgICBT
dHJpbmcgbWVzc2FnZTsKICAgICBpZiAocGx1Z2luVHlwZS5pc051bGwoKSkKLSAgICAgICAgbWVz
c2FnZSA9ICIncGx1Z2luLXR5cGVzJyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmUg
aXMgZW1wdHk7IGFsbCBwbHVnaW5zIHdpbGwgYmUgYmxvY2tlZC5cbiI7CisgICAgICAgIG1lc3Nh
Z2UgPSAiJ3BsdWdpbi10eXBlcycgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlIGlz
IGVtcHR5OyBhbGwgcGx1Z2lucyB3aWxsIGJlIGJsb2NrZWQuXG4iX3M7CiAgICAgZWxzZQogICAg
ICAgICBtZXNzYWdlID0gbWFrZVN0cmluZygiSW52YWxpZCBwbHVnaW4gdHlwZSBpbiAncGx1Z2lu
LXR5cGVzJyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICciLCBwbHVnaW5UeXBl
LCAiJy5cbiIpOwogICAgIGxvZ1RvQ29uc29sZShtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdC5jcHAKaW5kZXggMGZkNjY4YjAyODMyZGQ0MmY0ZmRlYzFlMTAyMDUyYjRhNzA1MWJlMS4u
YTA1MWY2ZWJhMDY2YjRmZTdlNDI5NGY5N2EwZWY1MzhiNWM0OTBhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdC5jcHAKQEAgLTY3MSw5ICs2NzEsOSBAQCBib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OnN0cmljdER5bmFtaWNJbmNsdWRlZCgpCiBib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnNob3VsZFJlcG9ydFNhbXBsZShjb25zdCBTdHJp
bmcmIHZpb2xhdGVkRGlyZWN0aXZlKSBjb25zdAogewogICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdGl2ZSA9IG51bGxwdHI7Ci0gICAgaWYgKHZpb2xh
dGVkRGlyZWN0aXZlLnN0YXJ0c1dpdGgoQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXM6OnN0eWxlU3JjKSkKKyAgICBpZiAodmlvbGF0ZWREaXJlY3RpdmUuc3RhcnRzV2l0aChTdHJp
bmdWaWV3IHsgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnN0eWxlU3JjIH0p
KQogICAgICAgICBkaXJlY3RpdmUgPSBtX3N0eWxlU3JjLmdldCgpOwotICAgIGVsc2UgaWYgKHZp
b2xhdGVkRGlyZWN0aXZlLnN0YXJ0c1dpdGgoQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXM6OnNjcmlwdFNyYykpCisgICAgZWxzZSBpZiAodmlvbGF0ZWREaXJlY3RpdmUuc3RhcnRz
V2l0aChTdHJpbmdWaWV3IHsgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNj
cmlwdFNyYyB9KSkKICAgICAgICAgZGlyZWN0aXZlID0gbV9zY3JpcHRTcmMuZ2V0KCk7CiAKICAg
ICByZXR1cm4gZGlyZWN0aXZlICYmIGRpcmVjdGl2ZS0+c2hvdWxkUmVwb3J0U2FtcGxlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHAKaW5kZXggMWEwYmMzNjQyMmIzNzQ0YTkwN2IyNzg5
NmUzMGE0MmRkYzE5MGUwMy4uNDRlOTRlNTZlMWYwNWY2NzA0MDgwOGIwMWUwMjk2N2FlZGNjZGNi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcApAQCAtMzAsMzIgKzMwLDMyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzIHsKIAotY29uc3QgY2hhciogY29uc3QgYmFzZVVSSSA9ICJiYXNlLXVyaSI7Ci1j
b25zdCBjaGFyKiBjb25zdCBjaGlsZFNyYyA9ICJjaGlsZC1zcmMiOwotY29uc3QgY2hhciogY29u
c3QgY29ubmVjdFNyYyA9ICJjb25uZWN0LXNyYyI7Ci1jb25zdCBjaGFyKiBjb25zdCBkZWZhdWx0
U3JjID0gImRlZmF1bHQtc3JjIjsKLWNvbnN0IGNoYXIqIGNvbnN0IGZvbnRTcmMgPSAiZm9udC1z
cmMiOwotY29uc3QgY2hhciogY29uc3QgZm9ybUFjdGlvbiA9ICJmb3JtLWFjdGlvbiI7Ci1jb25z
dCBjaGFyKiBjb25zdCBmcmFtZUFuY2VzdG9ycyA9ICJmcmFtZS1hbmNlc3RvcnMiOwotY29uc3Qg
Y2hhciogY29uc3QgZnJhbWVTcmMgPSAiZnJhbWUtc3JjIjsKK0FTQ0lJTGl0ZXJhbCBiYXNlVVJJ
ID0gImJhc2UtdXJpIl9zOworQVNDSUlMaXRlcmFsIGNoaWxkU3JjID0gImNoaWxkLXNyYyJfczsK
K0FTQ0lJTGl0ZXJhbCBjb25uZWN0U3JjID0gImNvbm5lY3Qtc3JjIl9zOworQVNDSUlMaXRlcmFs
IGRlZmF1bHRTcmMgPSAiZGVmYXVsdC1zcmMiX3M7CitBU0NJSUxpdGVyYWwgZm9udFNyYyA9ICJm
b250LXNyYyJfczsKK0FTQ0lJTGl0ZXJhbCBmb3JtQWN0aW9uID0gImZvcm0tYWN0aW9uIl9zOwor
QVNDSUlMaXRlcmFsIGZyYW1lQW5jZXN0b3JzID0gImZyYW1lLWFuY2VzdG9ycyJfczsKK0FTQ0lJ
TGl0ZXJhbCBmcmFtZVNyYyA9ICJmcmFtZS1zcmMiX3M7CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQotY29uc3QgY2hhciogY29uc3QgbWFuaWZlc3RTcmMgPSAibWFuaWZlc3Qtc3Jj
IjsKK0FTQ0lJTGl0ZXJhbCBtYW5pZmVzdFNyYyA9ICJtYW5pZmVzdC1zcmMiX3M7CiAjZW5kaWYK
LWNvbnN0IGNoYXIqIGNvbnN0IGltZ1NyYyA9ICJpbWctc3JjIjsKLWNvbnN0IGNoYXIqIGNvbnN0
IG1lZGlhU3JjID0gIm1lZGlhLXNyYyI7Ci1jb25zdCBjaGFyKiBjb25zdCBvYmplY3RTcmMgPSAi
b2JqZWN0LXNyYyI7Ci1jb25zdCBjaGFyKiBjb25zdCBwbHVnaW5UeXBlcyA9ICJwbHVnaW4tdHlw
ZXMiOwotY29uc3QgY2hhciogY29uc3QgcmVwb3J0VVJJID0gInJlcG9ydC11cmkiOwotY29uc3Qg
Y2hhciogY29uc3Qgc2FuZGJveCA9ICJzYW5kYm94IjsKLWNvbnN0IGNoYXIqIGNvbnN0IHNjcmlw
dFNyYyA9ICJzY3JpcHQtc3JjIjsKLWNvbnN0IGNoYXIqIGNvbnN0IHNjcmlwdFNyY0F0dHIgPSAi
c2NyaXB0LXNyYy1hdHRyIjsKLWNvbnN0IGNoYXIqIGNvbnN0IHNjcmlwdFNyY0VsZW0gPSAic2Ny
aXB0LXNyYy1lbGVtIjsKLWNvbnN0IGNoYXIqIGNvbnN0IHN0eWxlU3JjID0gInN0eWxlLXNyYyI7
Ci1jb25zdCBjaGFyKiBjb25zdCBzdHlsZVNyY0F0dHIgPSAic3R5bGUtc3JjLWF0dHIiOwotY29u
c3QgY2hhciogY29uc3Qgc3R5bGVTcmNFbGVtID0gInN0eWxlLXNyYy1lbGVtIjsKLWNvbnN0IGNo
YXIqIGNvbnN0IHVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RzID0gInVwZ3JhZGUtaW5zZWN1cmUtcmVx
dWVzdHMiOwotY29uc3QgY2hhciogY29uc3QgYmxvY2tBbGxNaXhlZENvbnRlbnQgPSAiYmxvY2st
YWxsLW1peGVkLWNvbnRlbnQiOwotY29uc3QgY2hhciogY29uc3Qgd29ya2VyU3JjID0gIndvcmtl
ci1zcmMiOworQVNDSUlMaXRlcmFsIGltZ1NyYyA9ICJpbWctc3JjIl9zOworQVNDSUlMaXRlcmFs
IG1lZGlhU3JjID0gIm1lZGlhLXNyYyJfczsKK0FTQ0lJTGl0ZXJhbCBvYmplY3RTcmMgPSAib2Jq
ZWN0LXNyYyJfczsKK0FTQ0lJTGl0ZXJhbCBwbHVnaW5UeXBlcyA9ICJwbHVnaW4tdHlwZXMiX3M7
CitBU0NJSUxpdGVyYWwgcmVwb3J0VVJJID0gInJlcG9ydC11cmkiX3M7CitBU0NJSUxpdGVyYWwg
c2FuZGJveCA9ICJzYW5kYm94Il9zOworQVNDSUlMaXRlcmFsIHNjcmlwdFNyYyA9ICJzY3JpcHQt
c3JjIl9zOworQVNDSUlMaXRlcmFsIHNjcmlwdFNyY0F0dHIgPSAic2NyaXB0LXNyYy1hdHRyIl9z
OworQVNDSUlMaXRlcmFsIHNjcmlwdFNyY0VsZW0gPSAic2NyaXB0LXNyYy1lbGVtIl9zOworQVND
SUlMaXRlcmFsIHN0eWxlU3JjID0gInN0eWxlLXNyYyJfczsKK0FTQ0lJTGl0ZXJhbCBzdHlsZVNy
Y0F0dHIgPSAic3R5bGUtc3JjLWF0dHIiX3M7CitBU0NJSUxpdGVyYWwgc3R5bGVTcmNFbGVtID0g
InN0eWxlLXNyYy1lbGVtIl9zOworQVNDSUlMaXRlcmFsIHVwZ3JhZGVJbnNlY3VyZVJlcXVlc3Rz
ID0gInVwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMiX3M7CitBU0NJSUxpdGVyYWwgYmxvY2tBbGxN
aXhlZENvbnRlbnQgPSAiYmxvY2stYWxsLW1peGVkLWNvbnRlbnQiX3M7CitBU0NJSUxpdGVyYWwg
d29ya2VyU3JjID0gIndvcmtlci1zcmMiX3M7CiAKIH0gLy8gbmFtZXNwYWNlIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oCmluZGV4
IDBkMGMxY2U2ZTg0MWUyNDQ3MTlkZmQzMGFhMWE1MGNmMjhjNzQ1NmQuLjA5YjRkZjhjNTcwYzZh
MjVkZjk5OTQxZjQzMzgwMmRjZjBmODgwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaApA
QCAtMjUsMzYgKzI1LDM4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXMgewogCi1leHRlcm4gY29uc3QgY2hhciogY29uc3QgYmFzZVVS
STsKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBjaGlsZFNyYzsKLWV4dGVybiBjb25zdCBjaGFy
KiBjb25zdCBjb25uZWN0U3JjOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGRlZmF1bHRTcmM7
Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3QgZm9udFNyYzsKLWV4dGVybiBjb25zdCBjaGFyKiBj
b25zdCBmb3JtQWN0aW9uOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGZyYW1lQW5jZXN0b3Jz
OwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGZyYW1lU3JjOwotZXh0ZXJuIGNvbnN0IGNoYXIq
IGNvbnN0IGltZ1NyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgYmFzZVVSSTsKK2V4dGVybiBBU0NJ
SUxpdGVyYWwgY2hpbGRTcmM7CitleHRlcm4gQVNDSUlMaXRlcmFsIGNvbm5lY3RTcmM7CitleHRl
cm4gQVNDSUlMaXRlcmFsIGRlZmF1bHRTcmM7CitleHRlcm4gQVNDSUlMaXRlcmFsIGZvbnRTcmM7
CitleHRlcm4gQVNDSUlMaXRlcmFsIGZvcm1BY3Rpb247CitleHRlcm4gQVNDSUlMaXRlcmFsIGZy
YW1lQW5jZXN0b3JzOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBmcmFtZVNyYzsKK2V4dGVybiBBU0NJ
SUxpdGVyYWwgaW1nU3JjOwogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLWV4dGVy
biBjb25zdCBjaGFyKiBjb25zdCBtYW5pZmVzdFNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgbWFu
aWZlc3RTcmM7CiAjZW5kaWYKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBtZWRpYVNyYzsKLWV4
dGVybiBjb25zdCBjaGFyKiBjb25zdCBvYmplY3RTcmM7Ci1leHRlcm4gY29uc3QgY2hhciogY29u
c3QgcGx1Z2luVHlwZXM7Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3QgcmVwb3J0VVJJOwotZXh0
ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNhbmRib3g7Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3Qg
c2NyaXB0U3JjOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNjcmlwdFNyY0VsZW07Ci1leHRl
cm4gY29uc3QgY2hhciogY29uc3Qgc2NyaXB0U3JjQXR0cjsKLWV4dGVybiBjb25zdCBjaGFyKiBj
b25zdCBzdHlsZVNyYzsKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzdHlsZVNyY0F0dHI7Ci1l
eHRlcm4gY29uc3QgY2hhciogY29uc3Qgc3R5bGVTcmNFbGVtOwotZXh0ZXJuIGNvbnN0IGNoYXIq
IGNvbnN0IHVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RzOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0
IGJsb2NrQWxsTWl4ZWRDb250ZW50OwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHdvcmtlclNy
YzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgbWVkaWFTcmM7CitleHRlcm4gQVNDSUlMaXRlcmFsIG9i
amVjdFNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgcGx1Z2luVHlwZXM7CitleHRlcm4gQVNDSUlM
aXRlcmFsIHJlcG9ydFVSSTsKK2V4dGVybiBBU0NJSUxpdGVyYWwgc2FuZGJveDsKK2V4dGVybiBB
U0NJSUxpdGVyYWwgc2NyaXB0U3JjOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBzY3JpcHRTcmNFbGVt
OworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBzY3JpcHRTcmNBdHRyOworZXh0ZXJuIEFTQ0lJTGl0ZXJh
bCBzdHlsZVNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgc3R5bGVTcmNBdHRyOworZXh0ZXJuIEFT
Q0lJTGl0ZXJhbCBzdHlsZVNyY0VsZW07CitleHRlcm4gQVNDSUlMaXRlcmFsIHVwZ3JhZGVJbnNl
Y3VyZVJlcXVlc3RzOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBibG9ja0FsbE1peGVkQ29udGVudDsK
K2V4dGVybiBBU0NJSUxpdGVyYWwgd29ya2VyU3JjOwogCiB9IC8vIG5hbWVzcGFjZSBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKaW5kZXggNWEzNGNlYTA1NGFjNjU0YWQzMjQy
ZjkyMGE0MjgxNzAxZmViNjZiNC4uNDE5NjU3OWEzYzc0NjE5ZmUzN2RkZjA5NTMyMzY4YzhiMWNk
Njc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVn
aXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lz
dHJ5LmNwcApAQCAtNzksMTAgKzc5LDEwIEBAIHN0YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFwJiBh
bGxCdWlsdGluU2NoZW1lcygpCiAgICAgICAgIH07CiAKICAgICAgICAgLy8gT3RoZXIgbWlzYyBz
Y2hlbWVzIHRoYXQgdGhlIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5IGRvZXNuJ3Qga25vdyBhYm91dC4K
LSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG90aGVyU2NoZW1lc1tdID0gewotICAg
ICAgICAgICAgIndlYmtpdC1mYWtlLXVybCIsCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgQVND
SUlMaXRlcmFsIG90aGVyU2NoZW1lc1tdID0geworICAgICAgICAgICAgIndlYmtpdC1mYWtlLXVy
bCJfcywKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICAic2FmYXJpLWV4dGVuc2lvbiIs
CisgICAgICAgICAgICAic2FmYXJpLWV4dGVuc2lvbiJfcywKICNlbmRpZgogI2lmIFVTRShRVUlD
S19MT09LKQogICAgICAgICAgICAgUUxQcmV2aWV3UHJvdG9jb2wsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4IDhhN2U4ZWY2YmNlMjNjMWY4NGFk
NDAzMDZjZDZmNWY1YzkwZTU4ZGEuLjI5ZmZjNTQ5M2FjZjA4ODA5MjBmNmVlNTFjY2M2MGQyOTM5
ZWYwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
CkBAIC03NDUsMTkgKzc0NSwxOSBAQCBTdHJpbmcgQVhMaW5rQWN0aW9uVmVyYigpCiBTdHJpbmcg
QVhNZW51TGlzdFBvcHVwQWN0aW9uVmVyYigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gInNlbGVjdCI7CisgICAgcmV0dXJuICJzZWxlY3QiX3M7CiB9CiAKIFN0cmluZyBB
WE1lbnVMaXN0QWN0aW9uVmVyYigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gInNlbGVjdCI7CisgICAgcmV0dXJuICJzZWxlY3QiX3M7CiB9CiAKIFN0cmluZyBBWExpc3RJ
dGVtQWN0aW9uVmVyYigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gInNl
bGVjdCI7CisgICAgcmV0dXJuICJzZWxlY3QiX3M7CiB9CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2xlZXBEaXNhYmxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmNwcAppbmRleCAyOWRmY2I0
M2UzYWRiMTMwMjU1YmVjNjZhYjIwZjkwNzU3YjQ3Y2NmLi4xZTgyYTk5NDc3NzE0NDJhZTYzN2I4
Zjc1NDQwZDFiMTVlNTdlNDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
bGVlcERpc2FibGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2Fi
bGVyLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNsZWVw
RGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciogcmVhc29uLCBQQUw6OlNsZWVwRGlz
YWJsZXI6OlR5cGUgdHlwZSkKK1NsZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIoY29uc3QgU3Ry
aW5nJiByZWFzb24sIFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZSB0eXBlKQogICAgIDogbV90eXBl
KHR5cGUpCiB7CiAgICAgaWYgKHNsZWVwRGlzYWJsZXJDbGllbnQoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2xlZXBEaXNhYmxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2xlZXBEaXNhYmxlci5oCmluZGV4IGY2ZTExYzY0OGY1NDIxMTAyNmMxYzkyMDJj
ZTQ2YWU1YzcyM2RmODYuLmNhMjc1YzM1Zjc0YTE0ZDNhYzNkZDFkMDA2OTljYWIyM2ZhN2JkM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NsZWVwRGlzYWJsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmgKQEAgLTMzLDcgKzMzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2xlZXBEaXNhYmxlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2xlZXBEaXNh
Ymxlcihjb25zdCBjaGFyKiwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTbGVlcERpc2FibGVyKGNvbnN0IFN0cmluZyYsIFBBTDo6U2xlZXBEaXNhYmxlcjo6
VHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgflNsZWVwRGlzYWJsZXIoKTsKIAogICAgIFBBTDo6
U2xlZXBEaXNhYmxlcjo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmNwcAppbmRleCAxM2Nm
MjcyNDAyMzFiNTRjNWE4ZWZiYmQ1YTYwYTAxNGU2ZjMxNTVlLi5hZDA0M2EzODJiMWQxODg1NjFj
ZDY2NzU2N2IxYjg3NzY3NjQ1NjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgSFJURkRhdGFiYXNlOjpIUlRG
RGF0YWJhc2UoZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICB1bnNpZ25lZCBlbGV2YXRpb25JbmRl
eCA9IDA7CiAgICAgZm9yIChpbnQgZWxldmF0aW9uID0gTWluRWxldmF0aW9uOyBlbGV2YXRpb24g
PD0gTWF4RWxldmF0aW9uOyBlbGV2YXRpb24gKz0gUmF3RWxldmF0aW9uQW5nbGVTcGFjaW5nKSB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBocnRmRWxldmF0aW9uID0g
SFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVjdCgiQ29tcG9zaXRlIiwgZWxldmF0aW9uLCBz
YW1wbGVSYXRlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IGhydGZF
bGV2YXRpb24gPSBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KCJDb21wb3NpdGUiX3Ms
IGVsZXZhdGlvbiwgc2FtcGxlUmF0ZSk7CiAgICAgICAgIEFTU0VSVChocnRmRWxldmF0aW9uLmdl
dCgpKTsKICAgICAgICAgaWYgKCFocnRmRWxldmF0aW9uLmdldCgpKQogICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcml2YXRlLmNwcAppbmRleCBkODNiMmYwZWM5M2U0MmEyZGEwY2RlMjUwODllYTBlNjQ5ZDdj
NjMxLi4xNWIxZTAwZjRhYjJkMDJhNjNiNWE0N2M2NWUyZTU1MmEyZjk0Mjg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmNw
cApAQCAtMzk5LDcgKzM5OSw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2FwYWJp
bGl0eT4+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENhcGFiaWxpdGllc0ZvCiAgICAgICAgIC8v
IDMuOC4gSWYgdGhlIHVzZXIgYWdlbnQgZG9lcyBub3QgcmVjb2duaXplIG9uZSBvciBtb3JlIHBh
cmFtZXRlcnMsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KICAgICAgICAgLy8gMy45
LiBMZXQgbWVkaWEgdHlwZXMgYmUgdGhlIHNldCBvZiBjb2RlY3MgYW5kIGNvZGVjIGNvbnN0cmFp
bnRzIHNwZWNpZmllZCBieSBwYXJhbWV0ZXJzLiBUaGUgY2FzZS1zZW5zaXRpdml0eQogICAgICAg
ICAvLyAgICAgIG9mIHN0cmluZyBjb21wYXJpc29ucyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhcHBy
b3ByaWF0ZSBSRkMgb3Igb3RoZXIgc3BlY2lmaWNhdGlvbi4KLSAgICAgICAgU3RyaW5nIGNvZGVj
cyA9IGNvbnRlbnRUeXBlLT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoImNvZGVjcyIpOworICAgICAg
ICBTdHJpbmcgY29kZWNzID0gY29udGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgiY29k
ZWNzIl9zKTsKICAgICAgICAgaWYgKGNvbnRlbnRUeXBlLT5wYXJhbWV0ZXJDb3VudCgpID4gKGNv
ZGVjcy5pc0VtcHR5KCkgPyAwIDogMSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDE4ZDc4ZjcxYjVkYmMxNTIzOTI3MmE4MmVlZTI4
Njc5OTI4NGE5MGIuLmZhOWI4MjUzZmEwZDI0OGI2YTZjODRkMDg2OTgyNzk1NjcyZDE0MGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxLZXlIYW5kbGU+Pj4gcGFyc2VMaWNlbnNlRm9ybWF0
KGNvbnN0IEpTT046Ok8KIHsKICAgICAvLyBJZiB0aGUgJ2tleXMnIGtleSBpcyBwcmVzZW50IGlu
IHRoZSByb290IG9iamVjdCwgcGFyc2UgdGhlIEpTT04gZnVydGhlcgogICAgIC8vIGFjY29yZGlu
ZyB0byB0aGUgc3BlY2lmaWVkICdsaWNlbnNlJyBmb3JtYXQuCi0gICAgYXV0byBpdCA9IHJvb3Qu
ZmluZCgia2V5cyIpOworICAgIGF1dG8gaXQgPSByb290LmZpbmQoImtleXMiX3MpOwogICAgIGlm
IChpdCA9PSByb290LmVuZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC02
NywxNSArNjcsMTUgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxLZXlIYW5k
bGU+Pj4gcGFyc2VMaWNlbnNlRm9ybWF0KGNvbnN0IEpTT046Ok8KICAgICAgICAgICAgIGlmICgh
a2V5T2JqZWN0KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAg
YXV0byBrZXlUeXBlID0ga2V5T2JqZWN0LT5nZXRTdHJpbmcoImt0eSIpOworICAgICAgICAgICAg
YXV0byBrZXlUeXBlID0ga2V5T2JqZWN0LT5nZXRTdHJpbmcoImt0eSJfcyk7CiAgICAgICAgICAg
ICBpZiAoIWtleVR5cGUgfHwgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleVR5cGUs
ICJvY3QiKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIGF1
dG8ga2V5SUQgPSBrZXlPYmplY3QtPmdldFN0cmluZygia2lkIik7CisgICAgICAgICAgICBhdXRv
IGtleUlEID0ga2V5T2JqZWN0LT5nZXRTdHJpbmcoImtpZCJfcyk7CiAgICAgICAgICAgICBpZiAo
IWtleUlEKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgYXV0
byBrZXlWYWx1ZSA9IGtleU9iamVjdC0+Z2V0U3RyaW5nKCJrIik7CisgICAgICAgICAgICBhdXRv
IGtleVZhbHVlID0ga2V5T2JqZWN0LT5nZXRTdHJpbmcoImsiX3MpOwogICAgICAgICAgICAgaWYg
KCFrZXlWYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTk5LDcgKzk5
LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VMaWNlbnNlUmVsZWFzZUFja25vd2xlZGdlbWVudEZvcm1h
dChjb25zdCBKU09OOjpPYmplY3QmIHJvb3QpCiB7CiAgICAgLy8gSWYgdGhlICdraWRzJyBrZXkg
aXMgcHJlc2VudCBpbiB0aGUgcm9vdCBvYmplY3QsIHBhcnNlIHRoZSBKU09OIGZ1cnRoZXIKICAg
ICAvLyBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCAnbGljZW5zZSByZWxlYXNlIGFja25vd2xl
ZGdlbWVudCcgZm9ybWF0LgotICAgIGF1dG8gaXQgPSByb290LmZpbmQoImtpZHMiKTsKKyAgICBh
dXRvIGl0ID0gcm9vdC5maW5kKCJraWRzIl9zKTsKICAgICBpZiAoaXQgPT0gcm9vdC5lbmQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yMjQsNyArMjI0LDcgQEAgc3RhdGljIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25z
dCBGcmFnbWVudGUKICAgICAgICAgaW5kZXggKz0gQ2xlYXJLZXk6OktleUlEU2l6ZUluQnl0ZXM7
CiAgICAgfQogCi0gICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJy
YXkpKTsKKyAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIl9zLCBXVEZNb3ZlKGtleUlkc0FycmF5
KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgp
OwogICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7
CiAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNv
bnN0IEZyYWdtZW50ZWQKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVsZW1lbnQg
b2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0IHNlcXVl
bmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KICAgICBrZXlJZHNBcnJheS0+cHVzaFN0
cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCi0gICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIs
IFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKKyAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIl9zLCBX
VEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9K
U09OU3RyaW5nKCkudXRmOCgpOwogICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBq
c29uRGF0YS5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CkBAIC01OTIsNyAr
NTkyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAgICAgICAgICAgICBBU1NFUlQo
a2V5LT5pZCgpLnNpemUoKSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
OwogICAgICAgICAgICAgICAgIGFycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3Ry
aW5nKGtleS0+aWQoKS5kYXRhKCksIGtleS0+aWQoKS5zaXplKCkpKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJvb3RPYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShhcnJheSkp
OworICAgICAgICAgICAgcm9vdE9iamVjdC0+c2V0QXJyYXkoImtpZHMiX3MsIFdURk1vdmUoYXJy
YXkpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwCmluZGV4IDNlNzdhYjc5NGNkNTFhZjYyZTI3MGUzNWFjYWJjYmE5Zjhm
NTEwYTguLmNmNWYwMzUxYmQ1N2JkNTA4MjA4YWQxNjljZTAzNDYxZTg5YmViZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC01MjMsNyArNTIzLDcgQEAg
Ym9vbCBGb250Ojppc1Byb2JhYmx5T25seVVzZWRUb1JlbmRlckljb25zKCkgY29uc3QKIFN0cmlu
ZyBGb250OjpkZXNjcmlwdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKG9yaWdpbigpID09IE9yaWdp
bjo6UmVtb3RlKQotICAgICAgICByZXR1cm4gIltjdXN0b20gZm9udF0iOworICAgICAgICByZXR1
cm4gIltjdXN0b20gZm9udF0iX3M7CiAKICAgICByZXR1cm4gcGxhdGZvcm1EYXRhKCkuZGVzY3Jp
cHRpb24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NUeXBlcy5jcHAKaW5kZXggMjg4YjhhNWYwMDAwNmVjN2IzZTFjMmNhNWFjNjZkYWFhYzFl
MjU2My4uMTU3ZDgzMDlhZTNiNjU2MDEzZGQ3ZGFhZWMyMWY5MjhmOTdjMTM2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKQEAg
LTM1LDQyICszNSw0MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCBjb21wb3NpdGVPcGVyYXRvck5hbWVzW10gPSB7Ci0gICAgImNsZWFyIiwKLSAg
ICAiY29weSIsCi0gICAgInNvdXJjZS1vdmVyIiwKLSAgICAic291cmNlLWluIiwKLSAgICAic291
cmNlLW91dCIsCi0gICAgInNvdXJjZS1hdG9wIiwKLSAgICAiZGVzdGluYXRpb24tb3ZlciIsCi0g
ICAgImRlc3RpbmF0aW9uLWluIiwKLSAgICAiZGVzdGluYXRpb24tb3V0IiwKLSAgICAiZGVzdGlu
YXRpb24tYXRvcCIsCi0gICAgInhvciIsCi0gICAgImRhcmtlciIsCi0gICAgImxpZ2h0ZXIiLAot
ICAgICJkaWZmZXJlbmNlIgorc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgY29tcG9zaXRl
T3BlcmF0b3JOYW1lc1tdID0geworICAgICJjbGVhciJfcywKKyAgICAiY29weSJfcywKKyAgICAi
c291cmNlLW92ZXIiX3MsCisgICAgInNvdXJjZS1pbiJfcywKKyAgICAic291cmNlLW91dCJfcywK
KyAgICAic291cmNlLWF0b3AiX3MsCisgICAgImRlc3RpbmF0aW9uLW92ZXIiX3MsCisgICAgImRl
c3RpbmF0aW9uLWluIl9zLAorICAgICJkZXN0aW5hdGlvbi1vdXQiX3MsCisgICAgImRlc3RpbmF0
aW9uLWF0b3AiX3MsCisgICAgInhvciJfcywKKyAgICAiZGFya2VyIl9zLAorICAgICJsaWdodGVy
Il9zLAorICAgICJkaWZmZXJlbmNlIl9zCiB9OwogCi1zdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
YmxlbmRPcGVyYXRvck5hbWVzW10gPSB7Ci0gICAgIm5vcm1hbCIsCi0gICAgIm11bHRpcGx5IiwK
LSAgICAic2NyZWVuIiwKLSAgICAiZGFya2VuIiwKLSAgICAibGlnaHRlbiIsCi0gICAgIm92ZXJs
YXkiLAotICAgICJjb2xvci1kb2RnZSIsCi0gICAgImNvbG9yLWJ1cm4iLAotICAgICJoYXJkLWxp
Z2h0IiwKLSAgICAic29mdC1saWdodCIsCi0gICAgImRpZmZlcmVuY2UiLAotICAgICJleGNsdXNp
b24iLAotICAgICJodWUiLAotICAgICJzYXR1cmF0aW9uIiwKLSAgICAiY29sb3IiLAotICAgICJs
dW1pbm9zaXR5IiwKLSAgICAicGx1cy1kYXJrZXIiLAotICAgICJwbHVzLWxpZ2h0ZXIiCitzdGF0
aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBibGVuZE9wZXJhdG9yTmFtZXNbXSA9IHsKKyAgICAi
bm9ybWFsIl9zLAorICAgICJtdWx0aXBseSJfcywKKyAgICAic2NyZWVuIl9zLAorICAgICJkYXJr
ZW4iX3MsCisgICAgImxpZ2h0ZW4iX3MsCisgICAgIm92ZXJsYXkiX3MsCisgICAgImNvbG9yLWRv
ZGdlIl9zLAorICAgICJjb2xvci1idXJuIl9zLAorICAgICJoYXJkLWxpZ2h0Il9zLAorICAgICJz
b2Z0LWxpZ2h0Il9zLAorICAgICJkaWZmZXJlbmNlIl9zLAorICAgICJleGNsdXNpb24iX3MsCisg
ICAgImh1ZSJfcywKKyAgICAic2F0dXJhdGlvbiJfcywKKyAgICAiY29sb3IiX3MsCisgICAgImx1
bWlub3NpdHkiX3MsCisgICAgInBsdXMtZGFya2VyIl9zLAorICAgICJwbHVzLWxpZ2h0ZXIiX3MK
IH07CiBjb25zdCB1aW50OF90IG51bUNvbXBvc2l0ZU9wZXJhdG9yTmFtZXMgPSBXVEZfQVJSQVlf
TEVOR1RIKGNvbXBvc2l0ZU9wZXJhdG9yTmFtZXMpOwogY29uc3QgdWludDhfdCBudW1CbGVuZE9w
ZXJhdG9yTmFtZXMgPSBXVEZfQVJSQVlfTEVOR1RIKGJsZW5kT3BlcmF0b3JOYW1lcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5lcmljQ3Vl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUu
Y3BwCmluZGV4IDNlYzgwMDVmMzhiNmRlNmExNTVjMzA1Zjc1OGM1YjA5ODlkOWU3ZDEuLjhlNzM4
ZjdmMDRiNzA1MTlhMTY3ZWMyYTk5NmI0N2Y4ODc1ZmVmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuY3BwCkBAIC01MCwy
MiArNTAsMjIgQEAgU3RyaW5nIEluYmFuZEdlbmVyaWNDdWU6OnRvSlNPTlN0cmluZygpIGNvbnN0
CiAgICAgb2JqZWN0LT5zZXREb3VibGUoInN0YXJ0Il9zLCBtX2N1ZURhdGEubV9zdGFydFRpbWUu
dG9Eb3VibGUoKSk7CiAgICAgb2JqZWN0LT5zZXREb3VibGUoImVuZCJfcywgbV9jdWVEYXRhLm1f
ZW5kVGltZS50b0RvdWJsZSgpKTsKIAotICAgIGNvbnN0IGNoYXIqIHN0YXR1cyA9ICIiOworICAg
IEFTQ0lJTGl0ZXJhbCBzdGF0dXMgPSAiIl9zOwogICAgIHN3aXRjaCAobV9jdWVEYXRhLm1fc3Rh
dHVzKSB7CiAgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpVbmluaXRpYWxpemVkOgot
ICAgICAgICBzdGF0dXMgPSAiVW5pbml0aWFsaXplZCI7CisgICAgICAgIHN0YXR1cyA9ICJVbmlu
aXRpYWxpemVkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpT
dGF0dXM6OlBhcnRpYWw6Ci0gICAgICAgIHN0YXR1cyA9ICJQYXJ0aWFsIjsKKyAgICAgICAgc3Rh
dHVzID0gIlBhcnRpYWwiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2VuZXJpY0N1ZURh
dGE6OlN0YXR1czo6Q29tcGxldGU6Ci0gICAgICAgIHN0YXR1cyA9ICJDb21wbGV0ZSI7CisgICAg
ICAgIHN0YXR1cyA9ICJDb21wbGV0ZSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG9i
amVjdC0+c2V0U3RyaW5nKCJzdGF0dXMiLCBzdGF0dXMpOworICAgIG9iamVjdC0+c2V0U3RyaW5n
KCJzdGF0dXMiX3MsIHN0YXR1cyk7CiAKICAgICBpZiAoIW1fY3VlRGF0YS5tX2lkLmlzRW1wdHko
KSkKLSAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImlkIiwgbV9jdWVEYXRhLm1faWQpOworICAg
ICAgICBvYmplY3QtPnNldFN0cmluZygiaWQiX3MsIG1fY3VlRGF0YS5tX2lkKTsKIAogICAgIGlm
IChtX2N1ZURhdGEubV9saW5lID4gMCkKICAgICAgICAgb2JqZWN0LT5zZXREb3VibGUoImxpbmUi
X3MsIG1fY3VlRGF0YS5tX2xpbmUpOwpAQCAtNzcsMTkgKzc3LDE5IEBAIFN0cmluZyBJbmJhbmRH
ZW5lcmljQ3VlOjp0b0pTT05TdHJpbmcoKSBjb25zdAogICAgICAgICBvYmplY3QtPnNldERvdWJs
ZSgicG9zaXRpb24iX3MsIG1fY3VlRGF0YS5tX3Bvc2l0aW9uKTsKIAogICAgIGlmIChtX2N1ZURh
dGEubV9hbGlnbiAhPSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpOb25lKSB7Ci0gICAgICAg
IGNvbnN0IGNoYXIqIGFsaWduID0gIiI7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBhbGlnbiA9ICIi
X3M7CiAgICAgICAgIHN3aXRjaCAobV9jdWVEYXRhLm1fYWxpZ24pIHsKICAgICAgICAgY2FzZSBH
ZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpTdGFydDoKLSAgICAgICAgICAgIGFsaWduID0gIlN0
YXJ0IjsKKyAgICAgICAgICAgIGFsaWduID0gIlN0YXJ0Il9zOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6TWlkZGxlOgotICAgICAg
ICAgICAgYWxpZ24gPSAiTWlkZGxlIjsKKyAgICAgICAgICAgIGFsaWduID0gIk1pZGRsZSJfczsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1l
bnQ6OkVuZDoKLSAgICAgICAgICAgIGFsaWduID0gIkVuZCI7CisgICAgICAgICAgICBhbGlnbiA9
ICJFbmQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZW5lcmljQ3VlRGF0
YTo6QWxpZ25tZW50OjpOb25lOgotICAgICAgICAgICAgYWxpZ24gPSAiTm9uZSI7CisgICAgICAg
ICAgICBhbGlnbiA9ICJOb25lIl9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImFsaWduIl9zLCBhbGlnbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNmY0OWFmMDQ2
ZDEyNDYzYTRkZWZhOWYxNDg5YTcxNTMyYThkYWY4YS4uZWRkOTMxMGI1NmIwYWM4ODlhMmM5MzIx
MWNhYjA4YTM0YWNkNzQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHBsYXkoKSBmaW5hbCB7IH0KICAgICB2b2lkIHBhdXNlKCkgZmluYWwgeyB9CiAKLSAgICBTdHJp
bmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTnVsbE1lZGlhUGxh
eWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJOdWxsTWVkaWFQbGF5ZXIiX3M7IH0KIAogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlw
dGlvblV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCmluZGV4IDYyZDQ5MWQyODc5
NDYxNzUwNzgwMTRhMDk0NWIyNjIyNmUyZGViZjAuLjAzYmVmZjk5MzdhZjY0MWM4NzljOWE2ZDhj
MzE0YzFmMDE1NzdmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0
aW9uVXRpbGl0aWVzLmNwcApAQCAtMTAyLDE0ICsxMDIsMTQgQEAgU3RyaW5nIGNvZGVjRnJvbUZv
cm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24p
CiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9uc0RpY3QgPSBzdGF0
aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KFBBTDo6Q01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVu
c2lvbihmb3JtYXREZXNjcmlwdGlvbiwgUEFMOjpnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2Ny
aXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMoKSkpOwogICAg
ICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zRGljdCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gImF2YzEiOworICAgICAgICAgICAgICAgIHJldHVybiAiYXZjMSJfczsKICAgICAgICAgICAg
IGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJhdmNDIikpKTsKICAgICAg
ICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKLSAgICAgICAgICAgICAgICByZXR1cm4gImF2
YzEiOworICAgICAgICAgICAgICAgIHJldHVybiAiYXZjMSJfczsKICAgICAgICAgICAgIGF1dG8g
Y29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4
dGVuc2lvbnMpOwogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VBVkNEZWNvZGVy
Q29uZmlndXJhdGlvblJlY29yZChjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAg
ICAgIGlmICghcGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICByZXR1cm4gImF2YzEiOworICAg
ICAgICAgICAgICAgIHJldHVybiAiYXZjMSJfczsKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVB
VkNDb2RlY1BhcmFtZXRlcnNTdHJpbmcoKnBhcmFtZXRlcnMpOwogICAgICAgICB9CiAgICAgY2Fz
ZSBrQ01WaWRlb0NvZGVjVHlwZV9IRVZDOgpAQCAtMTE4LDE0ICsxMTgsMTQgQEAgU3RyaW5nIGNv
ZGVjRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVz
Y3JpcHRpb24pCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9uc0Rp
Y3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KFBBTDo6Q01Gb3JtYXREZXNjcmlwdGlv
bkdldEV4dGVuc2lvbihmb3JtYXREZXNjcmlwdGlvbiwgUEFMOjpnZXRfQ29yZU1lZGlhX2tDTUZv
cm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMo
KSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zRGljdCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gImh2YzEiOworICAgICAgICAgICAgICAgIHJldHVybiAiaHZjMSJfczsKICAg
ICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4o
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJodmNDIikp
KTsKICAgICAgICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gImh2YzEiOworICAgICAgICAgICAgICAgIHJldHVybiAiaHZjMSJfczsKICAgICAgICAg
ICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHNhbXBsZUV4dGVuc2lvbnMpOwogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VI
RVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoa0NNVmlkZW9Db2RlY1R5cGVfSEVWQywgY29u
ZmlndXJhdGlvblJlY29yZEJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuICJodmMxIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gImh2
YzEiX3M7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSEVWQ0NvZGVjUGFyYW1ldGVyc1N0cmlu
ZygqcGFyYW1ldGVycyk7CiAgICAgICAgIH0KICAgICBjYXNlIGtDTVZpZGVvQ29kZWNUeXBlX0Rv
bGJ5VmlzaW9uSEVWQzoKQEAgLTEzMyw0MyArMTMzLDQzIEBAIFN0cmluZyBjb2RlY0Zyb21Gb3Jt
YXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQog
ICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIHNhbXBsZUV4dGVuc2lvbnNEaWN0ID0gc3RhdGlj
X2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihQQUw6OkNNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNp
b24oZm9ybWF0RGVzY3JpcHRpb24sIFBBTDo6Z2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlw
dGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zKCkpKTsKICAgICAg
ICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9uc0RpY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJu
ICJkdmgxIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gImR2aDEiX3M7CiAgICAgICAgICAgICBh
dXRvIHNhbXBsZUV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFy
eUdldFZhbHVlKHNhbXBsZUV4dGVuc2lvbnNEaWN0LCBDRlNUUigiZHZjQyIpKSk7CiAgICAgICAg
ICAgICBpZiAoIXNhbXBsZUV4dGVuc2lvbnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuICJkdmgx
IjsKKyAgICAgICAgICAgICAgICByZXR1cm4gImR2aDEiX3M7CiAgICAgICAgICAgICBhdXRvIGNv
bmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRl
bnNpb25zKTsKICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBhcnNlRG9WaURlY29kZXJD
b25maWd1cmF0aW9uUmVjb3JkKGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIpOwogICAgICAgICAg
ICAgaWYgKCFwYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7CisgICAg
ICAgICAgICAgICAgcmV0dXJuICJkdmgxIl9zOwogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZURv
VmlDb2RlY1BhcmFtZXRlcnNTdHJpbmcoKnBhcmFtZXRlcnMpOwogICAgICAgICB9CiAgICAgY2Fz
ZSBrQ01WaWRlb0NvZGVjVHlwZV9NUEVHNFZpZGVvOgotICAgICAgICByZXR1cm4gIm1wNHYiOwor
ICAgICAgICByZXR1cm4gIm1wNHYiX3M7CiAgICAgY2FzZSBrQ01WaWRlb0NvZGVjVHlwZV9WUDk6
Ci0gICAgICAgIHJldHVybiAidnAwOSI7CisgICAgICAgIHJldHVybiAidnAwOSJfczsKICAgICBj
YXNlIGtBdWRpb0Zvcm1hdEFDMzoKLSAgICAgICAgcmV0dXJuICJhYy0zIjsKKyAgICAgICAgcmV0
dXJuICJhYy0zIl9zOwogICAgIGNhc2Uga0F1ZGlvRm9ybWF0TVBFRzRBQUM6Ci0gICAgICAgIHJl
dHVybiAibXA0YS40MC4yIjsKKyAgICAgICAgcmV0dXJuICJtcDRhLjQwLjIiX3M7CiAgICAgY2Fz
ZSBrQXVkaW9Gb3JtYXRNUEVHNEFBQ19IRToKLSAgICAgICAgcmV0dXJuICJtcDRhLjQwLjUiOwor
ICAgICAgICByZXR1cm4gIm1wNGEuNDAuNSJfczsKICAgICBjYXNlIGtBdWRpb0Zvcm1hdE1QRUc0
QUFDX0hFX1YyOgotICAgICAgICByZXR1cm4gIm1wNGEuNDAuMjkiOworICAgICAgICByZXR1cm4g
Im1wNGEuNDAuMjkiX3M7CiAgICAgY2FzZSBrQXVkaW9Gb3JtYXRNUEVHNEFBQ19MRDoKLSAgICAg
ICAgcmV0dXJuICJtcDRhLjQwLjIzIjsKKyAgICAgICAgcmV0dXJuICJtcDRhLjQwLjIzIl9zOwog
ICAgIGNhc2Uga0F1ZGlvRm9ybWF0TVBFRzRBQUNfRUxEOgotICAgICAgICByZXR1cm4gIm1wNGEu
NDAuMzkiOworICAgICAgICByZXR1cm4gIm1wNGEuNDAuMzkiX3M7CiAgICAgY2FzZSBrQXVkaW9G
b3JtYXRGTEFDOgotICAgICAgICByZXR1cm4gImZsYWMiOworICAgICAgICByZXR1cm4gImZsYWMi
X3M7CiAgICAgY2FzZSBrQXVkaW9Gb3JtYXRPcHVzOgotICAgICAgICByZXR1cm4gIm9wdXMiOwor
ICAgICAgICByZXR1cm4gIm9wdXMiX3M7CiAgICAgY2FzZSBrQXVkaW9Gb3JtYXRFbmhhbmNlZEFD
MzoKICAgICBjYXNlICdlYyszJzoKICAgICBjYXNlICdxZWMzJzoKICAgICBjYXNlICdjZS0zJzoK
LSAgICAgICAgcmV0dXJuICJlYy0zIjsKKyAgICAgICAgcmV0dXJuICJlYy0zIl9zOwogICAgIGNh
c2UgJ2R0cyAnOgotICAgICAgICByZXR1cm4gImR0cyI7CisgICAgICAgIHJldHVybiAiZHRzIl9z
OwogICAgIH0KIAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXgg
Yjg2NmM3MTcxOGNiZmM1NDRhZTU3Mjc5NWYzYTQ0MzVlZGM5ODJlYy4uZGFlZmNiNzY3M2VmZDNm
OGYwOGNiMDgzZGY4YjcyYTdlZGQ5NGZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0zMTAyLDcgKzMx
MDIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQW5pbWF0aW9ucygpCiAgICAgYXV0
byBjdXJyZW50VGltZSA9IFNlY29uZHMoQ0FDdXJyZW50TWVkaWFUaW1lKCkpOwogCiAgICAgYXV0
byBhZGRBbmltYXRpb25Hcm91cCA9IFsmXShBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNv
bnN0IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4+JiBhbmltYXRpb25zKSB7Ci0g
ICAgICAgIGF1dG8gY2FBbmltYXRpb25Hcm91cCA9IGNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24o
UGxhdGZvcm1DQUFuaW1hdGlvbjo6R3JvdXAsICIiKTsKKyAgICAgICAgYXV0byBjYUFuaW1hdGlv
bkdyb3VwID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpH
cm91cCwgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIGNhQW5pbWF0aW9uR3JvdXAtPnNldER1cmF0
aW9uKGluZmluaXRlRHVyYXRpb24pOwogICAgICAgICBjYUFuaW1hdGlvbkdyb3VwLT5zZXRBbmlt
YXRpb25zKGFuaW1hdGlvbnMpOwogCkBAIC00ODIwLDIyICs0ODIwLDIyIEBAIHN0YXRpYyBTdHJp
bmcgYW5pbWF0ZWRQcm9wZXJ0eUlEQXNTdHJpbmcoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5
KQogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVNjYWxlOgogICAgIGNhc2UgQW5pbWF0ZWRQcm9w
ZXJ0eVJvdGF0ZToKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm06Ci0gICAgICAg
IHJldHVybiAidHJhbnNmb3JtIjsKKyAgICAgICAgcmV0dXJuICJ0cmFuc2Zvcm0iX3M7CiAgICAg
Y2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eToKLSAgICAgICAgcmV0dXJuICJvcGFjaXR5IjsK
KyAgICAgICAgcmV0dXJuICJvcGFjaXR5Il9zOwogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcjoKLSAgICAgICAgcmV0dXJuICJiYWNrZ3JvdW5kLWNvbG9yIjsKKyAgICAg
ICAgcmV0dXJuICJiYWNrZ3JvdW5kLWNvbG9yIl9zOwogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0
eUZpbHRlcjoKLSAgICAgICAgcmV0dXJuICJmaWx0ZXIiOworICAgICAgICByZXR1cm4gImZpbHRl
ciJfczsKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQogICAgIGNhc2UgQW5pbWF0ZWRQcm9w
ZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyOgotICAgICAgICByZXR1cm4gImJhY2tkcm9wLWZpbHRl
ciI7CisgICAgICAgIHJldHVybiAiYmFja2Ryb3AtZmlsdGVyIl9zOwogI2VuZGlmCiAgICAgY2Fz
ZSBBbmltYXRlZFByb3BlcnR5SW52YWxpZDoKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuICIiX3M7CiB9CiAKIFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBkb3VibGU+PiBHcmFwaGljc0xheWVyQ0E6OmFjY2VsZXJhdGVkQW5pbWF0aW9u
c0ZvclRlc3RpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCBlNmNlMmZiOTcyNDdhNmI4
NmMwOWIxYWQzNjE3MDFjMmVjM2U4NjI1Li40Njg5YjEwNjRlNDgzZjZkZTlmMDY3NmFlNDY3ZDc0
NTZjYzY2NGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBQREZEb2N1bWVu
dEltYWdlOjp+UERGRG9jdW1lbnRJbWFnZSgpID0gZGVmYXVsdDsKIAogU3RyaW5nIFBERkRvY3Vt
ZW50SW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gInBkZiI7
CisgICAgcmV0dXJuICJwZGYiX3M7CiB9CiAKIEZsb2F0U2l6ZSBQREZEb2N1bWVudEltYWdlOjpz
aXplKEltYWdlT3JpZW50YXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCmluZGV4IDg0
MjIxMGIzNzEyN2ZlOGVlZWU5YWNjMjNjY2M5NmMwNGQ4YzU3YTEuLjQwMWE1MmUzZmRkY2Y1ZjRl
ZjFkY2IwNDNmOWEwYzczODAyNTNhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCkBAIC01OTcs
NyArNTk3LDcgQEAgUmVmPFZpZGVvSW5mbz4gY3JlYXRlVmlkZW9JbmZvRnJvbVZQOUhlYWRlclBh
cnNlcihjb25zdCB2cDlfcGFyc2VyOjpWcDlIZWFkZXJQYXIKIHsKICAgICBWUENvZGVjQ29uZmln
dXJhdGlvblJlY29yZCByZWNvcmQ7CiAKLSAgICByZWNvcmQuY29kZWNOYW1lID0gInZwMDkiOwor
ICAgIHJlY29yZC5jb2RlY05hbWUgPSAidnAwOSJfczsKICAgICByZWNvcmQucHJvZmlsZSA9IHBh
cnNlci5wcm9maWxlKCk7CiAgICAgLy8gQ29yZU1lZGlhIGRvZXMgbmF0IGNhcmUgYWJvdXQgdGhl
IFZQOSBjb2RlYyBsZXZlbDsgaGFyZC1jb2RlIHRvIExldmVsIDEuMCBoZXJlOgogICAgIHJlY29y
ZC5sZXZlbCA9IDEwOwpAQCAtNjkzLDcgKzY5Myw3IEBAIHN0ZDo6b3B0aW9uYWw8VlA4RnJhbWVI
ZWFkZXI+IHBhcnNlVlA4RnJhbWVIZWFkZXIoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXpl
CiBSZWY8VmlkZW9JbmZvPiBjcmVhdGVWaWRlb0luZm9Gcm9tVlA4SGVhZGVyKGNvbnN0IFZQOEZy
YW1lSGVhZGVyJiBoZWFkZXIsIGNvbnN0IHdlYm06OkVsZW1lbnQ8Q29sb3VyPiYgY29sb3IpCiB7
CiAgICAgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgcmVjb3JkOwotICAgIHJlY29yZC5jb2Rl
Y05hbWUgPSAidnAwOCI7CisgICAgcmVjb3JkLmNvZGVjTmFtZSA9ICJ2cDA4Il9zOwogICAgIHJl
Y29yZC5wcm9maWxlID0gMDsKICAgICByZWNvcmQubGV2ZWwgPSAxMDsKICAgICByZWNvcmQuYml0
RGVwdGggPSA4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKaW5kZXggNTc3YjExMDAw
YmUxMzU3ZjIzNWE5MTdhZjQ3NTVhYmE3ZGRhZDhiMC4uMDVkNWI5MDU3MGYyOGZhYjRiMjgyYjZh
NzJjM2MxNTNiZmYzZmZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCkBAIC05
NywxMCArOTcsMTAgQEAgU3RyaW5nIFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6Y29kZWMoKSBjb25z
dAogCiAgICAgLy8gVE9ETzogU3BlY2lmaWMgY29kZWMgcGFyYW1ldGVycyBhcmUgcGFyc2VkIG91
dCBvZiB0aGUgc2FtcGxlIGhlYWRlcjsgdGhleSBhcmVuJ3QgdHlwaWNhbGx5IGNvbnRhaW5lZCBp
biB0aGUgV2ViTSBUcmFjayBlbGVtZW50LgogICAgIGlmIChjb2RlY0lEID09ICJWX1ZQOSIpCi0g
ICAgICAgIHJldHVybiAidnAwOSI7CisgICAgICAgIHJldHVybiAidnAwOSJfczsKIAogICAgIGlm
IChjb2RlY0lEID09ICJWX1ZQOCIpCi0gICAgICAgIHJldHVybiAidnAwOCI7CisgICAgICAgIHJl
dHVybiAidnAwOCJfczsKIAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKaW5k
ZXggNDE4ZWMwZDcxMzI4YmRmOTFjNDVmMjI0NDQwNDdmMTgwMGQ0MDk5Mi4uOWI5MDFjNDdjYWNi
ODQxOTVkYzY5YmNkNzUxYmZjYTBkNmFmZmE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCkBAIC02Miw3ICs2Miw3IEBA
IFRleHRTdHJlYW0mIEZFQmxlbmQ6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYg
dHMsIEZpbHRlclJlcHJlc2VudGF0aW9uCiAgICAgdHMgPDwgaW5kZW50IDw8ICJbZmVCbGVuZCI7
CiAgICAgRmlsdGVyRWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzLCByZXByZXNlbnRh
dGlvbik7CiAKLSAgICB0cyA8PCAiIG1vZGU9XCIiIDw8IChtX21vZGUgPT0gQmxlbmRNb2RlOjpO
b3JtYWwgPyAibm9ybWFsIiA6IGNvbXBvc2l0ZU9wZXJhdG9yTmFtZShDb21wb3NpdGVPcGVyYXRv
cjo6U291cmNlT3ZlciwgbV9tb2RlKSk7CisgICAgdHMgPDwgIiBtb2RlPVwiIiA8PCAobV9tb2Rl
ID09IEJsZW5kTW9kZTo6Tm9ybWFsID8gIm5vcm1hbCJfcyA6IGNvbXBvc2l0ZU9wZXJhdG9yTmFt
ZShDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlciwgbV9tb2RlKSk7CiAKICAgICB0cyA8PCAi
XCJdXG4iOwogICAgIHJldHVybiB0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwCmluZGV4IGQ5MjAzZmM4MWJjYTkzNGExNGIzNmVhYmNjZWNmM2IyY2QzMTQ2NTkuLmNhYWFi
NmZjNTk4YjM5MGVhNTQ1MzRhYWUwOThjNDhjOWM5MjQ2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmNwcApAQCAtMzY2LDExICszNjYsMTEgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVw
dGhTdGVuY2kKICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwogICAgIH0KICAg
ICBpZiAoYXR0cnMuYW50aWFsaWFzICYmICFtX2lzRm9yV2ViR0wyKSB7Ci0gICAgICAgIGlmICgh
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikpIHsK
KyAgICAgICAgaWYgKCFzdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVs
dGlzYW1wbGUiX3MpKSB7CiAgICAgICAgICAgICBhdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKICAg
ICAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJzKTsKICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZSIpOworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5H
TEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiX3MpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1F1aWNrTG9vay5oCmluZGV4IDBhNmVmYWVmM2U4NjFlZjU5ZmQ0Mjg5Y2Vm
OTExYzc3OGRhNzBjYTEuLjI2NjZlZThjMWExNzhjY2ExNTY2YTdmODQ3OTllYTg4ODBjYzYwMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmgKQEAgLTQxLDYgKzQxLDYg
QEAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVnaXN0ZXJRTFByZXZp
ZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTAogV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1F1aWNrTG9v
a1ByZXZpZXdVUkwoY29uc3QgVVJMJik7CiBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqY3JlYXRl
VGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vayhOU1N0cmluZyAqZmlsZU5hbWUpOwogCi1leHRlcm4g
Y29uc3QgY2hhciogUUxQcmV2aWV3UHJvdG9jb2w7CitzdGF0aWMgY29uc3RleHByIGF1dG8gUUxQ
cmV2aWV3UHJvdG9jb2wgPSAieC1hcHBsZS1xbC1pZCJfczsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KaW5kZXggZTNjMzA3
YzgxZTFiOWM3ZjI5ZjAzZWI0MzIzYTgxZjNhODllOTFlZi4uMmZhMjc2OWQ5MzEzMDQ4MDIyYzIy
OTFkY2UzZTU3OTg3ODJiNDE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tM
b29rLm1tCkBAIC0zOCw4ICszOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3Qg
Y2hhciogUUxQcmV2aWV3UHJvdG9jb2wgPSAieC1hcHBsZS1xbC1pZCI7Ci0KIE5TU2V0ICpRTFBy
ZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNTZXQ+PiBzZXQgPSBQQUw6OnNvZnRMaW5rX1F1aWNrTG9va19RTFBy
ZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5jcHAKaW5kZXggMDA3NGQxNDQ5NWU5Y2YxMGNlMDU0YjllZjA5YjQxYjc3ZDZiODZkZS4uYWEw
ZTg0MmM2NDU4ODYwYzRhNThiYWNmNGYxNzE2OWQwNThmMWUyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBTdHJpbmcgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6aGFzaFN0cmluZ1dpdGhTYWx0KGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0
IFN0cgogICAgIFNIQTE6OkRpZ2VzdCBkaWdlc3Q7CiAgICAgc2hhMS5jb21wdXRlSGFzaChkaWdl
c3QpOwogICAgIAotICAgIHJldHVybiBTSEExOjpoZXhEaWdlc3QoZGlnZXN0KS5kYXRhKCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNIQTE6OmhleERpZ2VzdChkaWdlc3QpLmRhdGEoKSB9OwogfQog
CiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmFkZERldmljZXNDaGFuZ2VkT2JzZXJ2
ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svUlRDTm90aWZpZXJzTW9jay5jcHAKaW5kZXggMmM3YzQxYmQ2OTZmZjFmOWJhYjM4MzgxYTRi
NTgzODU2OGIxOGE0ZS4uODNiYzllZTIwZDhjNmI0NDMwZTVmNjQ5M2Y0NWMyZjFkNTUxNDlkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2Nr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2su
Y3BwCkBAIC05OCw3ICs5OCw3IEBAIFJlbW90ZURhdGFDaGFubmVsTm90aWZpZXI6OlJlbW90ZURh
dGFDaGFubmVsTm90aWZpZXIoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpCiAKIHZvaWQgUmVt
b3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6ZmlyZSgpCiB7Ci0gICAgbV9jbGllbnQtPmRpZEFkZFJl
bW90ZURhdGFDaGFubmVsKG1ha2VVbmlxdWU8UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jaz4oIlJU
Q0RhdGFDaGFubmVsSGFuZGxlck1vY2siLCBSVENEYXRhQ2hhbm5lbEluaXQoKSkpOworICAgIG1f
Y2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChtYWtlVW5pcXVlPFJUQ0RhdGFDaGFubmVs
SGFuZGxlck1vY2s+KCJSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIl9zLCBSVENEYXRhQ2hhbm5l
bEluaXQoKSkpOwogfQogCiBEYXRhQ2hhbm5lbFN0YXRlTm90aWZpZXI6OkRhdGFDaGFubmVsU3Rh
dGVOb3RpZmllcihSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNsaWVudCwgUlRDRGF0YUNo
YW5uZWxTdGF0ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrLmNwcAppbmRleCA1OTZiZWViNjEzM2EwNmJi
MzhlNTNjZjU3N2EzODk5Y2FkY2RlM2RjLi4zMDA0N2Y5NzFmNzE0NDlhNzdjOWFkM2U5YWFlMzRh
NmQzMTQwZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9s
bGJhcnNDb250cm9sbGVyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9TY3JvbGxiYXJzQ29udHJvbGxlck1vY2suY3BwCkBAIC03MCwxOSArNzAsMTkgQEAgdm9pZCBT
Y3JvbGxiYXJzQ29udHJvbGxlck1vY2s6OndpbGxSZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKFNj
cm9sbGJhciogc2Nyb2xsYmEKIAogdm9pZCBTY3JvbGxiYXJzQ29udHJvbGxlck1vY2s6Om1vdXNl
RW50ZXJlZENvbnRlbnRBcmVhKCkKIHsKLSAgICBtX2xvZ2dlcigibW91c2VFbnRlcmVkQ29udGVu
dEFyZWEiKTsKKyAgICBtX2xvZ2dlcigibW91c2VFbnRlcmVkQ29udGVudEFyZWEiX3MpOwogICAg
IFNjcm9sbGJhcnNDb250cm9sbGVyOjptb3VzZUVudGVyZWRDb250ZW50QXJlYSgpOwogfQogCiB2
b2lkIFNjcm9sbGJhcnNDb250cm9sbGVyTW9jazo6bW91c2VNb3ZlZEluQ29udGVudEFyZWEoKQog
ewotICAgIG1fbG9nZ2VyKCJtb3VzZU1vdmVkSW5Db250ZW50QXJlYSIpOworICAgIG1fbG9nZ2Vy
KCJtb3VzZU1vdmVkSW5Db250ZW50QXJlYSJfcyk7CiAgICAgU2Nyb2xsYmFyc0NvbnRyb2xsZXI6
Om1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKCk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyc0NvbnRyb2xs
ZXJNb2NrOjptb3VzZUV4aXRlZENvbnRlbnRBcmVhKCkKIHsKLSAgICBtX2xvZ2dlcigibW91c2VF
eGl0ZWRDb250ZW50QXJlYSIpOworICAgIG1fbG9nZ2VyKCJtb3VzZUV4aXRlZENvbnRlbnRBcmVh
Il9zKTsKICAgICBTY3JvbGxiYXJzQ29udHJvbGxlcjo6bW91c2VFeGl0ZWRDb250ZW50QXJlYSgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCmluZGV4
IGU5NDNmODZkOGI4YTRiZjEzYTQ0MDhiNmE0ZTRkZDA3MjAxNmZjNjQuLjYwODgwYTAxNWVlM2Qx
NTU5ODRhMDBjMjIzZWFiZTUxODE4NDA3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UuY3BwCkBAIC02NCw4ICs2NCw4IEBAIHZvaWQgTW9ja01lZGlhUGxheWVy
TWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVn
aXN0CiBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIG1pbWVUeXBlQ2FjaGUoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBjYWNoZSA9
IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsKLSAgICAgICAgInZp
ZGVvL21vY2siLAotICAgICAgICAiYXVkaW8vbW9jayIsCisgICAgICAgICJ2aWRlby9tb2NrIl9z
LAorICAgICAgICAiYXVkaW8vbW9jayJfcywKICAgICB9OwogICAgIHJldHVybiBjYWNoZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNl
SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNl
SGFuZGxlLmNwcAppbmRleCAwOThhNzQyZTc1ZTVlOGUxMDc2MTdlN2Q4MTE0YmRmZWZmN2U5YTE3
Li4xZTU5ZDRkMWE2YmZhZWM3NGRmZTM2ZDc4NDk5MDRmOTQxNGY1ZjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3Bw
CkBAIC01OSwxMyArNTksMTMgQEAgc3RhdGljIGNvbnN0IGludCBodHRwUGFydGlhbENvbnRlbnQg
PSAyMDY7CiBzdGF0aWMgY29uc3QgaW50IGh0dHBOb3RBbGxvd2VkID0gNDAzOwogc3RhdGljIGNv
bnN0IGludCBodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZSA9IDQxNjsKIHN0YXRpYyBj
b25zdCBpbnQgaHR0cEludGVybmFsRXJyb3IgPSA1MDA7Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0
cE9LVGV4dCA9ICJPSyI7Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0cFBhcnRpYWxDb250ZW50VGV4
dCA9ICJQYXJ0aWFsIENvbnRlbnQiOwotc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBOb3RBbGxvd2Vk
VGV4dCA9ICJOb3QgQWxsb3dlZCI7Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0cFJlcXVlc3RlZFJh
bmdlTm90U2F0aXNmaWFibGVUZXh0ID0gIlJlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUi
Owotc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBJbnRlcm5hbEVycm9yVGV4dCA9ICJJbnRlcm5hbCBT
ZXJ2ZXIgRXJyb3IiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGh0dHBPS1RleHQgPSAiT0siX3M7
CitzdGF0aWMgY29uc3RleHByIGF1dG8gaHR0cFBhcnRpYWxDb250ZW50VGV4dCA9ICJQYXJ0aWFs
IENvbnRlbnQiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gaHR0cE5vdEFsbG93ZWRUZXh0ID0g
Ik5vdCBBbGxvd2VkIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGh0dHBSZXF1ZXN0ZWRSYW5n
ZU5vdFNhdGlzZmlhYmxlVGV4dCA9ICJSZXF1ZXN0ZWQgUmFuZ2UgTm90IFNhdGlzZmlhYmxlIl9z
Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGh0dHBJbnRlcm5hbEVycm9yVGV4dCA9ICJJbnRlcm5h
bCBTZXJ2ZXIgRXJyb3IiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB3ZWJLaXRCbG9i
UmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291cmNlIjsKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byB3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291cmNlIl9zOwog
CiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRl
cgpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgQmxvYlJlc291cmNlU3luY2hyb25vdXNMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kCiB7CiAgICAgLy8g
V2UgY2Fubm90IGhhbmRsZSB0aGUgc2l6ZSB0aGF0IGlzIG1vcmUgdGhhbiBtYXhpbXVtIGludGVn
ZXIuCiAgICAgaWYgKHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gSU5UX01BWCkg
ewotICAgICAgICBtX2Vycm9yID0gUmVzb3VyY2VFcnJvcih3ZWJLaXRCbG9iUmVzb3VyY2VEb21h
aW4sIHN0YXRpY19jYXN0PGludD4oQmxvYlJlc291cmNlSGFuZGxlOjpFcnJvcjo6Tm90UmVhZGFi
bGVFcnJvciksIHJlc3BvbnNlLnVybCgpLCAiRmlsZSBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAg
bV9lcnJvciA9IFJlc291cmNlRXJyb3Iod2ViS2l0QmxvYlJlc291cmNlRG9tYWluLCBzdGF0aWNf
Y2FzdDxpbnQ+KEJsb2JSZXNvdXJjZUhhbmRsZTo6RXJyb3I6Ok5vdFJlYWRhYmxlRXJyb3IpLCBy
ZXNwb25zZS51cmwoKSwgIkZpbGUgaXMgdG9vIGxhcmdlIl9zKTsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCBS
ZWY8QmxvYlJlc291cmNlSGFuZGxlPiBCbG9iUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUFzeW5jKEJs
b2JEYXRhKiBibG9iRGF0YSwgY29ucwogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoQmxvYkRhdGEqIGJsb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewogICAgIGlmICghZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UocmVxdWVzdC5odHRwTWV0aG9kKCksICJnZXQiKSkgewotICAgICAgICBl
cnJvciA9IFJlc291cmNlRXJyb3Iod2ViS2l0QmxvYlJlc291cmNlRG9tYWluLCBzdGF0aWNfY2Fz
dDxpbnQ+KEVycm9yOjpNZXRob2ROb3RBbGxvd2VkKSwgcmVzcG9uc2UudXJsKCksICJSZXF1ZXN0
IG1ldGhvZCBtdXN0IGJlIEdFVCIpOworICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3Iod2Vi
S2l0QmxvYlJlc291cmNlRG9tYWluLCBzdGF0aWNfY2FzdDxpbnQ+KEVycm9yOjpNZXRob2ROb3RB
bGxvd2VkKSwgcmVzcG9uc2UudXJsKCksICJSZXF1ZXN0IG1ldGhvZCBtdXN0IGJlIEdFVCJfcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYwMCw3ICs2MDAsNyBAQCB2b2lkIEJsb2JS
ZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9yKCkKIHsKICAgICBBU1NFUlQobV9l
cnJvckNvZGUgIT0gRXJyb3I6Ok5vRXJyb3IpOwogCi0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZShmaXJzdFJlcXVlc3QoKS51cmwoKSwgInRleHQvcGxhaW4iLCAwLCBTdHJpbmcoKSk7Cisg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShmaXJzdFJlcXVlc3QoKS51cmwoKSwgInRleHQv
cGxhaW4iX3MsIDAsIFN0cmluZygpKTsKICAgICBzd2l0Y2ggKG1fZXJyb3JDb2RlKSB7CiAgICAg
Y2FzZSBFcnJvcjo6UmFuZ2VFcnJvcjoKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0Nv
ZGUoaHR0cFJlcXVlc3RlZFJhbmdlTm90U2F0aXNmaWFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAppbmRleCA5MzFlMmNjZGE2
MmNiZDIyM2RlMjQ1Njg5YTc4MTlmMWY4YzJmZTQyLi5hZjUzZDY0MThkYzUxNjUyZjJhMTA3OTg1
N2VlMzc4ZmNhMzg0MGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgYXV0byBtZWRpYVR5cGUgPSAoaXNCYXNlNjQgPyBoZWFkZXIuc3Vic3RyaW5nKDAsIG1lZGlh
VHlwZUVuZCkgOiBoZWFkZXIpLnRvU3RyaW5nKCk7CiAgICAgICAgIG1lZGlhVHlwZSA9IHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhtZWRpYVR5cGUpOwogICAgICAgICBpZiAobWVk
aWFUeXBlLnN0YXJ0c1dpdGgoJzsnKSkKLSAgICAgICAgICAgIG1lZGlhVHlwZS5pbnNlcnQoInRl
eHQvcGxhaW4iLCAwKTsKKyAgICAgICAgICAgIG1lZGlhVHlwZS5pbnNlcnQoInRleHQvcGxhaW4i
X3MsIDApOwogCiAgICAgICAgIGlmIChzaG91bGRSZW1vdmVGcmFnbWVudElkZW50aWZpZXIobWVk
aWFUeXBlKSkKICAgICAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXgg
ZDQzNWNlYmY0ZDBmNTVmZDA2ZGU4YzAzZTFiM2E2ZjE2NGZjZjM0OS4uODE0ZWZlMDIwNzBlYWE5
NjE2OGYzMTI0MzE4YzQ5ZjMyMDE3MWI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTYyMCw3ICs2MjAsNyBAQCBzdGQ6Om9wdGlv
bmFsPHN0ZDo6cGFpcjxTdHJpbmdWaWV3LCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4+IHBhcnNl
U3RydWN0dXJlZEZpZQogICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgfQogICAgICAgICBT
dHJpbmcga2V5ID0gaGVhZGVyLnN1YnN0cmluZyhrZXlTdGFydCwgaW5kZXggLSBrZXlTdGFydCku
dG9TdHJpbmcoKTsKLSAgICAgICAgU3RyaW5nIHZhbHVlID0gInRydWUiOworICAgICAgICBTdHJp
bmcgdmFsdWUgPSAidHJ1ZSJfczsKICAgICAgICAgaWYgKGluZGV4IDwgaGVhZGVyLmxlbmd0aCgp
ICYmIGhlYWRlcltpbmRleF0gPT0gJz0nKSB7CiAgICAgICAgICAgICArK2luZGV4OyAvLyBDb25z
dW1lICc9Jy4KICAgICAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGEoaGVhZGVyW2luZGV4XSkgfHwg
aGVhZGVyW2luZGV4XSA9PSAnKicpIHsKQEAgLTc4NSw3ICs3ODUsNyBAQCBzaXplX3QgcGFyc2VI
VFRQSGVhZGVyKGNvbnN0IHVpbnQ4X3QqIHN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcmIGZh
aWx1cmVSZWFzbwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKCFpc1ZhbGlkSGVh
ZGVyTmFtZUNoYXJhY3RlcigqcCkpIHsKICAgICAgICAgICAgICAgICBpZiAobmFtZS5zaXplKCkg
PCAxKQotICAgICAgICAgICAgICAgICAgICBmYWlsdXJlUmVhc29uID0gIlVuZXhwZWN0ZWQgc3Rh
cnQgY2hhcmFjdGVyIGluIGhlYWRlciBuYW1lIjsKKyAgICAgICAgICAgICAgICAgICAgZmFpbHVy
ZVJlYXNvbiA9ICJVbmV4cGVjdGVkIHN0YXJ0IGNoYXJhY3RlciBpbiBoZWFkZXIgbmFtZSJfczsK
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVSZWFzb24g
PSBtYWtlU3RyaW5nKCJVbmV4cGVjdGVkIGNoYXJhY3RlciBpbiBoZWFkZXIgbmFtZSBhdCAiLCB0
cmltSW5wdXRTYW1wbGUobmFtZS5kYXRhKCksIG5hbWUuc2l6ZSgpKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggYjIxNzc5ZjcwOTQwOGQzMjg1NmYw
MWRkZDU0Nzk4OGFhNjQxYmMzYy4uOWE4NTdlYWRmYzFjMWY2OTRmMTI4MmYzOTZjNWY5OGM5OTNm
ODcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtMzg1LDE0ICszODUsMTQgQEAgY29uc3QgSGFz
aE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+JiBOZXR3
b3JrU3RvcmFnZVNlc3MKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxSZWdp
c3RyYWJsZURvbWFpbiwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+PiBtYXAgPSBbXSB7CiAg
ICAgICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+PiBtYXA7Ci0gICAgICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibWljcm9zb2Z0LmNvbSIpLAorICAgICAg
ICBtYXAuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFi
bGVEb21haW5TdHJpbmcoIm1pY3Jvc29mdC5jb20iX3MpLAogICAgICAgICAgICAgSGFzaFNldCB7
IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5T
dHJpbmcoIm1pY3Jvc29mdG9ubGluZS5jb20iX3MpIH0pOwotICAgICAgICBtYXAuYWRkKFJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmco
ImxpdmUuY29tIiksCisgICAgICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tl
ZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibGl2ZS5jb20iX3MpLAogICAgICAg
ICAgICAgSGFzaFNldCB7IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVn
aXN0cmFibGVEb21haW5TdHJpbmcoInNreXBlLmNvbSJfcykgfSk7Ci0gICAgICAgIG1hcC5hZGQo
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0
cmluZygicGxheXN0YXRpb24uY29tIiksIEhhc2hTZXQgeworICAgICAgICBtYXAuYWRkKFJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmco
InBsYXlzdGF0aW9uLmNvbSJfcyksIEhhc2hTZXQgewogICAgICAgICAgICAgUmVnaXN0cmFibGVE
b21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygic29ueWVu
dGVydGFpbm1lbnRuZXR3b3JrLmNvbSJfcyksCiAgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFp
bjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJzb255LmNvbSJf
cykgfSk7Ci0gICAgICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygiYmJjLmNvLnVrIiksIEhhc2hTZXQgeworICAg
ICAgICBtYXAuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0
cmFibGVEb21haW5TdHJpbmcoImJiYy5jby51ayJfcyksIEhhc2hTZXQgewogICAgICAgICAgICAg
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0
cmluZygicmFkaW9wbGF5ZXIuY28udWsiX3MpIH0pOwogICAgICAgICByZXR1cm4gbWFwOwogICAg
IH0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2Vk
Q29udGVudFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRD
b250ZW50VHlwZS5jcHAKaW5kZXggOWVmMmExNzIwZDU3MTI2ZmJlNzEyY2Q5YTJhMWQyMjIxYTFj
NGU5ZC4uYjJlN2JkZDNmOWZlZGYyODY5YTExYmM3NjNiZWM2NzQ1YjUzOWIyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5j
cHAKQEAgLTM0Nyw3ICszNDcsNyBAQCBQYXJzZWRDb250ZW50VHlwZTo6UGFyc2VkQ29udGVudFR5
cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIAogU3RyaW5nIFBhcnNlZENvbnRlbnRUeXBl
OjpjaGFyc2V0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJj
aGFyc2V0Iik7CisgICAgcmV0dXJuIHBhcmFtZXRlclZhbHVlRm9yTmFtZSgiY2hhcnNldCJfcyk7
CiB9CiAKIHZvaWQgUGFyc2VkQ29udGVudFR5cGU6OnNldENoYXJzZXQoU3RyaW5nJiYgY2hhcnNl
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXggM2ExNTJiYjJlMWY5ZGUwMjhkMDFiMzIwNDFiMmEzOWUw
MDM5YzNmNi4uZDkyYTkzYjE0MjdhYTI0NDI0YmNiY2UzNDIyNTBlOWY5ZGM5OTk2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBSZXNvdXJjZVJlc3BvbnNlIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpmaWx0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsCiAg
ICAgZmlsdGVyZWRSZXNwb25zZS5zZXRUeXBlKFR5cGU6OkNvcnMpOwogCiAgICAgYXV0byBhY2Nl
c3NDb250cm9sRXhwb3NlSGVhZGVyU2V0ID0gdmFsdWVPckRlZmF1bHQocGFyc2VBY2Nlc3NDb250
cm9sQWxsb3dMaXN0PEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4ocmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVycykpKTsKLSAg
ICBpZiAocGVyZm9ybUNoZWNrID09IFBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6OlllcyAm
JiBhY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVyU2V0LmNvbnRhaW5zKCIqIikpCisgICAgaWYgKHBl
cmZvcm1DaGVjayA9PSBQZXJmb3JtRXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpZZXMgJiYgYWNjZXNz
Q29udHJvbEV4cG9zZUhlYWRlclNldC5jb250YWlucygiKiJfcykpCiAgICAgICAgIHJldHVybiBm
aWx0ZXJlZFJlc3BvbnNlOwogCiAgICAgZmlsdGVyZWRSZXNwb25zZS5tX2h0dHBIZWFkZXJGaWVs
ZHMudW5jb21tb25IZWFkZXJzKCkucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGF1dG8mIGVudHJ5KSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29s
dmVRdWV1ZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCmluZGV4IGIzODJhMGQ3ZWRmMTY1NDNjYTNjZjQ3YjNkZTFj
NzcxNWViMTc0NTAuLmNhOGE1ZGVlY2FjODhmNWU2NjE0MmJmZjEzMDE1ODRhZjFlNzFmZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCkBAIC01NSw4ICs1NSw4IEBAIHZvaWQgRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQ6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBDRlVSTCA9IFVSTCh7IH0sICJodHRwOi8vZXhh
bXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBz
Q0ZVUkwgPSBVUkwoeyB9LCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwor
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gVVJMKHsgfSwgImh0dHA6Ly9leGFt
cGxlLmNvbS8iX3MpLmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRw
c0NGVVJMID0gVVJMKHsgfSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIl9zKS5jcmVhdGVDRlVSTCgp
OwogCiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFycmF5ID0gYWRvcHRDRihD
Rk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3Mu
Z2V0KCkpKTsKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFycmF5ID0gYWRv
cHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLmdldCgpLCBwcm94eVNl
dHRpbmdzLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKaW5kZXgg
NzA0MGIzMjYyNTc1NzhjNzEwM2JmZTM2NDEzZmE5MzlhYmZjNTEwMC4uMzAzZWU3NjMzZmViZjVh
ZDVmYmMwZmJiOGU0YjFiM2JkN2YzNTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENG
TmV0LmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tl
dFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsCiAgICAg
ICAgICYmIF9DRk5ldHdvcmtJc0tub3duSFNUU0hvc3RXaXRoU2Vzc2lvbihtX2h0dHBzVVJMLmdl
dCgpLCBudWxscHRyKSkgewogICAgICAgICAvLyBDYWxsIHRoaXMgYXN5bmNocm9ub3VzbHkgYmVj
YXVzZSB0aGUgc29ja2V0IHN0cmVhbSBpcyBub3QgZnVsbHkgY29uc3RydWN0ZWQgYXQgdGhpcyBw
b2ludC4KICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH1dIHsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0o
KnRoaXMsIFNvY2tldFN0cmVhbUVycm9yKDAsIG1fdXJsLnN0cmluZygpLCAiV2ViU29ja2V0IGNv
bm5lY3Rpb24gZmFpbGVkIGJlY2F1c2UgaXQgdmlvbGF0ZXMgSFRUUCBTdHJpY3QgVHJhbnNwb3J0
IFNlY3VyaXR5LiIpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0o
KnRoaXMsIFNvY2tldFN0cmVhbUVycm9yKDAsIG1fdXJsLnN0cmluZygpLCAiV2ViU29ja2V0IGNv
bm5lY3Rpb24gZmFpbGVkIGJlY2F1c2UgaXQgdmlvbGF0ZXMgSFRUUCBTdHJpY3QgVHJhbnNwb3J0
IFNlY3VyaXR5LiJfcykpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTQzNCw3ICs0MzQsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmFkZENPTk5FQ1RD
cmVkZW50aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9ucwogCiAgICAgaWYgKCFDRkhU
VFBBdXRoZW50aWNhdGlvblJlcXVpcmVzVXNlck5hbWVBbmRQYXNzd29yZChhdXRoZW50aWNhdGlv
bi5nZXQoKSkpIHsKICAgICAgICAgLy8gVGhhdCdzIGFsbCB3ZSBjYW4gb2ZmZXIuLi4KLSAgICAg
ICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3Io
MCwgbV91cmwuc3RyaW5nKCksICJQcm94eSBhdXRoZW50aWNhdGlvbiBzY2hlbWUgaXMgbm90IHN1
cHBvcnRlZCBmb3IgV2ViU29ja2V0cyIpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tl
dFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5nKCksICJQcm94
eSBhdXRoZW50aWNhdGlvbiBzY2hlbWUgaXMgbm90IHN1cHBvcnRlZCBmb3IgV2ViU29ja2V0cyJf
cykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjphZGRDT05ORUNUQ3JlZGVudGlhbHMoQ0ZIVFRQTWVzc2Fn
ZVJlZiBwcm94eVJlc3BvbnMKIAogICAgIGlmICghbWV0aG9kQ0YgfHwgIXJlYWxtQ0YpIHsKICAg
ICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBidXQgb24gc29tZSBPUyB2ZXJzaW9ucyB3
ZSBnZXQgaW5jb21wbGV0ZSBhdXRoZW50aWNhdGlvbiBkYXRhLCBzZWUgPHJkYXI6Ly9wcm9ibGVt
LzEwNDE2MzE2Pi4KLSAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywg
U29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5nKCksICJXZWJTb2NrZXQgcHJveHkgYXV0
aGVudGljYXRpb24gY291bGRuJ3QgYmUgaGFuZGxlZCIpKTsKKyAgICAgICAgbV9jbGllbnQuZGlk
RmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5n
KCksICJXZWJTb2NrZXQgcHJveHkgYXV0aGVudGljYXRpb24gY291bGRuJ3QgYmUgaGFuZGxlZCJf
cykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NjQsNyArNDY0LDcgQEAgdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjphZGRDT05ORUNUQ3JlZGVudGlhbHMoQ0ZIVFRQTWVzc2Fn
ZVJlZiBwcm94eVJlc3BvbnMKIAogICAgICAgICBpZiAoIXByb3h5QXV0aG9yaXphdGlvblN0cmlu
ZykgewogICAgICAgICAgICAgLy8gRmFpbHMgZS5nLiBmb3IgTlRMTSBhdXRoLgotICAgICAgICAg
ICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3Io
MCwgbV91cmwuc3RyaW5nKCksICJQcm94eSBhdXRoZW50aWNhdGlvbiBzY2hlbWUgaXMgbm90IHN1
cHBvcnRlZCBmb3IgV2ViU29ja2V0cyIpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxT
b2NrZXRTdHJlYW0oKnRoaXMsIFNvY2tldFN0cmVhbUVycm9yKDAsIG1fdXJsLnN0cmluZygpLCAi
UHJveHkgYXV0aGVudGljYXRpb24gc2NoZW1lIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFdlYlNvY2tl
dHMiX3MpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC00NzYsNyArNDc2
LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjphZGRDT05ORUNUQ3JlZGVudGlhbHMo
Q0ZIVFRQTWVzc2FnZVJlZiBwcm94eVJlc3BvbnMKIAogICAgIC8vIEZJWE1FOiBPbiBwbGF0Zm9y
bXMgd2hlcmUgQXV0aEJyb2tlckFnZW50IGlzIG5vdCBhdmFpbGFibGUsIGFzayB0aGUgY2xpZW50
IGlmIGNyZWRlbnRpYWxzIGNvdWxkIG5vdCBiZSBmb3VuZC4KIAotICAgIG1fY2xpZW50LmRpZEZh
aWxTb2NrZXRTdHJlYW0oKnRoaXMsIFNvY2tldFN0cmVhbUVycm9yKDAsIG1fdXJsLnN0cmluZygp
LCAiUHJveHkgY3JlZGVudGlhbHMgYXJlIG5vdCBhdmFpbGFibGUiKSk7CisgICAgbV9jbGllbnQu
ZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3Ry
aW5nKCksICJQcm94eSBjcmVkZW50aWFscyBhcmUgbm90IGF2YWlsYWJsZSJfcykpOwogfQogCiBD
RlN0cmluZ1JlZiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjb3B5Q0ZTdHJlYW1EZXNjcmlwdGlv
bih2b2lkKiBpbmZvKQpAQCAtNTczLDcgKzU3Myw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxl
SW1wbDo6cmVhZFN0cmVhbUNhbGxiYWNrKENGU3RyZWFtRXZlbnRUeXBlIHR5cGUpCiAgICAgICAg
ICAgICAgICAgICAgIGFkZENPTk5FQ1RDcmVkZW50aWFscyhwcm94eVJlc3BvbnNlLmdldCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0oKnRoaXMsIFNv
Y2tldFN0cmVhbUVycm9yKHN0YXRpY19jYXN0PGludD4ocHJveHlSZXNwb25zZUNvZGUpLCBtX3Vy
bC5zdHJpbmcoKSwgIlByb3h5IGNvbm5lY3Rpb24gY291bGQgbm90IGJlIGVzdGFibGlzaGVkLCB1
bmV4cGVjdGVkIHJlc3BvbnNlIGNvZGUiKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY2xpZW50
LmRpZEZhaWxTb2NrZXRTdHJlYW0oKnRoaXMsIFNvY2tldFN0cmVhbUVycm9yKHN0YXRpY19jYXN0
PGludD4ocHJveHlSZXNwb25zZUNvZGUpLCBtX3VybC5zdHJpbmcoKSwgIlByb3h5IGNvbm5lY3Rp
b24gY291bGQgbm90IGJlIGVzdGFibGlzaGVkLCB1bmV4cGVjdGVkIHJlc3BvbnNlIGNvZGUiX3Mp
KTsKICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1DbG9zZSgpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggOGVmYjE1NDhhNWIwZDk5ZDkxYzdmZDY3
ZjM4NWI0MDM5NWRjOWM3Mi4uNDZhZDk1M2FmMzM1NzY2MzI1MTczOWNhMDE2OWRiZTE1ZTA5OWY5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3Bw
CkBAIC01MzcsNjkgKzUzNyw3MSBAQCBpbnQgU1FMaXRlRGF0YWJhc2U6OmF1dGhvcml6ZXJGdW5j
dGlvbih2b2lkKiB1c2VyRGF0YSwgaW50IGFjdGlvbkNvZGUsIGNvbnN0IGNoYQogICAgIERhdGFi
YXNlQXV0aG9yaXplciogYXV0aCA9IHN0YXRpY19jYXN0PERhdGFiYXNlQXV0aG9yaXplcio+KHVz
ZXJEYXRhKTsKICAgICBBU1NFUlQoYXV0aCk7CiAKKyAgICBTdHJpbmcgcGFyYW1ldGVyMVN0cmlu
ZyB7IHBhcmFtZXRlcjEgfTsKKyAgICBTdHJpbmcgcGFyYW1ldGVyMlN0cmluZyB7IHBhcmFtZXRl
cjIgfTsKICAgICBzd2l0Y2ggKGFjdGlvbkNvZGUpIHsKICAgICAgICAgY2FzZSBTUUxJVEVfQ1JF
QVRFX0lOREVYOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmNyZWF0ZUluZGV4KHBhcmFtZXRl
cjEsIHBhcmFtZXRlcjIpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmNyZWF0ZUluZGV4KHBh
cmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9D
UkVBVEVfVEFCTEU6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVGFibGUocGFyYW1l
dGVyMSk7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVGFibGUocGFyYW1ldGVyMVN0
cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0NSRUFURV9URU1QX0lOREVYOgotICAgICAgICAg
ICAgcmV0dXJuIGF1dGgtPmNyZWF0ZVRlbXBJbmRleChwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsK
KyAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVhdGVUZW1wSW5kZXgocGFyYW1ldGVyMVN0cmlu
ZywgcGFyYW1ldGVyMlN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0NSRUFURV9URU1QX1RB
QkxFOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmNyZWF0ZVRlbXBUYWJsZShwYXJhbWV0ZXIx
KTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVhdGVUZW1wVGFibGUocGFyYW1ldGVyMVN0
cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0NSRUFURV9URU1QX1RSSUdHRVI6Ci0gICAgICAg
ICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVGVtcFRyaWdnZXIocGFyYW1ldGVyMSwgcGFyYW1ldGVy
Mik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVGVtcFRyaWdnZXIocGFyYW1ldGVy
MVN0cmluZywgcGFyYW1ldGVyMlN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0NSRUFURV9U
RU1QX1ZJRVc6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVGVtcFZpZXcocGFyYW1l
dGVyMSk7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVGVtcFZpZXcocGFyYW1ldGVy
MVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0NSRUFURV9UUklHR0VSOgotICAgICAgICAg
ICAgcmV0dXJuIGF1dGgtPmNyZWF0ZVRyaWdnZXIocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7Cisg
ICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVHJpZ2dlcihwYXJhbWV0ZXIxU3RyaW5nLCBw
YXJhbWV0ZXIyU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfQ1JFQVRFX1ZJRVc6Ci0gICAg
ICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVmlldyhwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAg
IHJldHVybiBhdXRoLT5jcmVhdGVWaWV3KHBhcmFtZXRlcjFTdHJpbmcpOwogICAgICAgICBjYXNl
IFNRTElURV9ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dEZWxldGUocGFy
YW1ldGVyMSk7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dEZWxldGUocGFyYW1ldGVy
MVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0RST1BfSU5ERVg6Ci0gICAgICAgICAgICBy
ZXR1cm4gYXV0aC0+ZHJvcEluZGV4KHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAgICAgICAg
ICAgcmV0dXJuIGF1dGgtPmRyb3BJbmRleChwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0ZXIyU3Ry
aW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfRFJPUF9UQUJMRToKLSAgICAgICAgICAgIHJldHVy
biBhdXRoLT5kcm9wVGFibGUocGFyYW1ldGVyMSk7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+
ZHJvcFRhYmxlKHBhcmFtZXRlcjFTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9EUk9QX1RF
TVBfSU5ERVg6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+ZHJvcFRlbXBJbmRleChwYXJhbWV0
ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVGVtcEluZGV4
KHBhcmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElU
RV9EUk9QX1RFTVBfVEFCTEU6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+ZHJvcFRlbXBUYWJs
ZShwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVGVtcFRhYmxlKHBh
cmFtZXRlcjFTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9EUk9QX1RFTVBfVFJJR0dFUjoK
LSAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVGVtcFRyaWdnZXIocGFyYW1ldGVyMSwgcGFy
YW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+ZHJvcFRlbXBUcmlnZ2VyKHBhcmFt
ZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9EUk9Q
X1RFTVBfVklFVzoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVGVtcFZpZXcocGFyYW1l
dGVyMSk7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+ZHJvcFRlbXBWaWV3KHBhcmFtZXRlcjFT
dHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9EUk9QX1RSSUdHRVI6Ci0gICAgICAgICAgICBy
ZXR1cm4gYXV0aC0+ZHJvcFRyaWdnZXIocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7CisgICAgICAg
ICAgICByZXR1cm4gYXV0aC0+ZHJvcFRyaWdnZXIocGFyYW1ldGVyMVN0cmluZywgcGFyYW1ldGVy
MlN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0RST1BfVklFVzoKLSAgICAgICAgICAgIHJl
dHVybiBhdXRoLT5kcm9wVmlldyhwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRo
LT5kcm9wVmlldyhwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfSU5TRVJU
OgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93SW5zZXJ0KHBhcmFtZXRlcjEpOworICAg
ICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93SW5zZXJ0KHBhcmFtZXRlcjFTdHJpbmcpOwogICAg
ICAgICBjYXNlIFNRTElURV9QUkFHTUE6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dQ
cmFnbWEocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+
YWxsb3dQcmFnbWEocGFyYW1ldGVyMVN0cmluZywgcGFyYW1ldGVyMlN0cmluZyk7CiAgICAgICAg
IGNhc2UgU1FMSVRFX1JFQUQ6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dSZWFkKHBh
cmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93UmVh
ZChwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0ZXIyU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJ
VEVfU0VMRUNUOgogICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93U2VsZWN0KCk7CiAgICAg
ICAgIGNhc2UgU1FMSVRFX1RSQU5TQUNUSU9OOgogICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFs
bG93VHJhbnNhY3Rpb24oKTsKICAgICAgICAgY2FzZSBTUUxJVEVfVVBEQVRFOgotICAgICAgICAg
ICAgcmV0dXJuIGF1dGgtPmFsbG93VXBkYXRlKHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAg
ICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93VXBkYXRlKHBhcmFtZXRlcjFTdHJpbmcsIHBhcmFt
ZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9BVFRBQ0g6Ci0gICAgICAgICAgICBy
ZXR1cm4gYXV0aC0+YWxsb3dBdHRhY2gocGFyYW1ldGVyMSk7CisgICAgICAgICAgICByZXR1cm4g
YXV0aC0+YWxsb3dBdHRhY2gocGFyYW1ldGVyMVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRF
X0RFVEFDSDoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0RldGFjaChwYXJhbWV0ZXIx
KTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0RldGFjaChwYXJhbWV0ZXIxU3RyaW5n
KTsKICAgICAgICAgY2FzZSBTUUxJVEVfQUxURVJfVEFCTEU6Ci0gICAgICAgICAgICByZXR1cm4g
YXV0aC0+YWxsb3dBbHRlclRhYmxlKHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAgICAgICAg
ICAgcmV0dXJuIGF1dGgtPmFsbG93QWx0ZXJUYWJsZShwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0
ZXIyU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfUkVJTkRFWDoKLSAgICAgICAgICAgIHJl
dHVybiBhdXRoLT5hbGxvd1JlaW5kZXgocGFyYW1ldGVyMSk7CisgICAgICAgICAgICByZXR1cm4g
YXV0aC0+YWxsb3dSZWluZGV4KHBhcmFtZXRlcjFTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElU
RV9BTkFMWVpFOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93QW5hbHl6ZShwYXJhbWV0
ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0FuYWx5emUocGFyYW1ldGVyMVN0
cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0NSRUFURV9WVEFCTEU6Ci0gICAgICAgICAgICBy
ZXR1cm4gYXV0aC0+Y3JlYXRlVlRhYmxlKHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAgICAg
ICAgICAgcmV0dXJuIGF1dGgtPmNyZWF0ZVZUYWJsZShwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0
ZXIyU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfRFJPUF9WVEFCTEU6Ci0gICAgICAgICAg
ICByZXR1cm4gYXV0aC0+ZHJvcFZUYWJsZShwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICAg
ICAgICAgIHJldHVybiBhdXRoLT5kcm9wVlRhYmxlKHBhcmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRl
cjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9GVU5DVElPTjoKLSAgICAgICAgICAgIHJl
dHVybiBhdXRoLT5hbGxvd0Z1bmN0aW9uKHBhcmFtZXRlcjIpOworICAgICAgICAgICAgcmV0dXJu
IGF1dGgtPmFsbG93RnVuY3Rpb24ocGFyYW1ldGVyMVN0cmluZyk7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBT
UUxBdXRoRGVueTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJB
dHRhY2htZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5o
CmluZGV4IDUwZGQ5MjRiM2VhZTcxMmZiYjBkYTNmN2MxYzBiMzJlYTE2N2JiNTguLjExM2E4NTNl
NGFkM2NiNzU2N2VhYzBiYTVjMjdmZWE4ZDM4ZGFiOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogICAgIGJvb2wgaXNBdHRh
Y2htZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyQXR0YWNobWVudCI7
IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJSZW5kZXJBdHRhY2htZW50Il9zOyB9CiAKICAgICBib29sIHNob3VsZERyYXdTZWxlY3Rpb25U
aW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIG9mZnNldCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA1ZTZkZjBiZDYwMGQzMGQ1
ZGU5NWMxM2ZkMDkxM2Q0YmQ1MTVlZTc3Li43MGE3MWJmMDZiNGZkYzc3MDE5Y2FlOTgyOGRjOTQ0
NjMxMmM1YjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAg
LTMwNDYsMjggKzMwNDYsMjggQEAgYm9vbCBSZW5kZXJCbG9jazo6aGFzTWFyZ2luQWZ0ZXJRdWly
ayhjb25zdCBSZW5kZXJCb3gmIGNoaWxkKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Y29uc3QgY2hhciogUmVuZGVyQmxvY2s6OnJlbmRlck5hbWUoKSBjb25zdAorQVNDSUlMaXRlcmFs
IFJlbmRlckJsb2NrOjpyZW5kZXJOYW1lKCkgY29uc3QKIHsKICAgICBpZiAoaXNCb2R5KCkpCi0g
ICAgICAgIHJldHVybiAiUmVuZGVyQm9keSI7IC8vIEZJWE1FOiBUZW1wb3JhcnkgaGFjayB1bnRp
bCB3ZSBrbm93IHRoYXQgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgcGFzcy4KKyAgICAgICAgcmV0dXJu
ICJSZW5kZXJCb2R5Il9zOyAvLyBGSVhNRTogVGVtcG9yYXJ5IGhhY2sgdW50aWwgd2Uga25vdyB0
aGF0IHRoZSByZWdyZXNzaW9uIHRlc3RzIHBhc3MuCiAgICAgaWYgKGlzRmllbGRzZXQoKSkKLSAg
ICAgICAgcmV0dXJuICJSZW5kZXJGaWVsZFNldCI7IC8vIEZJWE1FOiBSZW1vdmUgZXZlbnR1YWxs
eSwgYnV0IGRvbmUgdG8ga2VlcCB0ZXN0cyBmcm9tIGJyZWFraW5nLgorICAgICAgICByZXR1cm4g
IlJlbmRlckZpZWxkU2V0Il9zOyAvLyBGSVhNRTogUmVtb3ZlIGV2ZW50dWFsbHksIGJ1dCBkb25l
IHRvIGtlZXAgdGVzdHMgZnJvbSBicmVha2luZy4KICAgICBpZiAoaXNGbG9hdGluZygpKQotICAg
ICAgICByZXR1cm4gIlJlbmRlckJsb2NrIChmbG9hdGluZykiOworICAgICAgICByZXR1cm4gIlJl
bmRlckJsb2NrIChmbG9hdGluZykiX3M7CiAgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
KQotICAgICAgICByZXR1cm4gIlJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSI7CisgICAgICAgIHJl
dHVybiAiUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIl9zOwogICAgIGlmIChpc0Fub255bW91c0Js
b2NrKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGFub255bW91cykiOworICAgICAg
ICByZXR1cm4gIlJlbmRlckJsb2NrIChhbm9ueW1vdXMpIl9zOwogICAgIC8vIEZJWE1FOiBUZW1w
b3JhcnkgaGFjayB3aGlsZSB0aGUgbmV3IGdlbmVyYXRlZCBjb250ZW50IHN5c3RlbSBpcyBiZWlu
ZyBpbXBsZW1lbnRlZC4KICAgICBpZiAoaXNQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIHJldHVy
biAiUmVuZGVyQmxvY2sgKGdlbmVyYXRlZCkiOworICAgICAgICByZXR1cm4gIlJlbmRlckJsb2Nr
IChnZW5lcmF0ZWQpIl9zOwogICAgIGlmIChpc0Fub255bW91cygpKQotICAgICAgICByZXR1cm4g
IlJlbmRlckJsb2NrIChnZW5lcmF0ZWQpIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAo
Z2VuZXJhdGVkKSJfczsKICAgICBpZiAoaXNSZWxhdGl2ZWx5UG9zaXRpb25lZCgpKQotICAgICAg
ICByZXR1cm4gIlJlbmRlckJsb2NrIChyZWxhdGl2ZSBwb3NpdGlvbmVkKSI7CisgICAgICAgIHJl
dHVybiAiUmVuZGVyQmxvY2sgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIl9zOwogICAgIGlmIChpc1N0
aWNraWx5UG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gIlJlbmRlckJsb2NrIChzdGlja3kg
cG9zaXRpb25lZCkiOwotICAgIHJldHVybiAiUmVuZGVyQmxvY2siOworICAgICAgICByZXR1cm4g
IlJlbmRlckJsb2NrIChzdGlja3kgcG9zaXRpb25lZCkiX3M7CisgICAgcmV0dXJuICJSZW5kZXJC
bG9jayJfczsKIH0KIAogVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihTdHJp
bmdWaWV3IHN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVo
YXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCmluZGV4IDIyMGZkNzQxMzA3OTExNDAzODVkMGQyZDUwNmE2MzQ0MGVj
ZGNjMTguLmFmMTVmOWNiMTBlYWZmNGI0NmUxMWI0MDg5MGViMzMzZmZkODRkMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC00MzUsNyArNDM1LDcgQEAgcHJpdmF0
ZToKICAgICBMYXlvdXRVbml0IGFkanVzdExvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoTGF5b3V0
VW5pdCBvZmZzZXRGcm9tRmxvYXRzLCBib29sIGFwcGx5VGV4dEluZGVudCkgY29uc3Q7CiAgICAg
TGF5b3V0VW5pdCBhZGp1c3RMb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCBvZmZz
ZXRGcm9tRmxvYXRzLCBib29sIGFwcGx5VGV4dEluZGVudCkgY29uc3Q7CiAKLSAgICBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVNDSUlMaXRlcmFsIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNTZWxmQ29sbGFwc2luZ0Jsb2Nr
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkcmVuUHJldmVudFNlbGZD
b2xsYXBzaW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQnV0dG9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgK
aW5kZXggYTQ5MzljNGEwMDc1MDJhNTc4OTQ5ZmRjNWNjNjU2Y2M3OTVkNTM4OS4uOWYyODc0MjVm
YWQ4NWYxODg3OTk2ZTVhNmM2NTgzNzJjNTBlZWFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCdXR0b24uaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJCdXR0b24iOyB9CisgICAgQVND
SUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyQnV0
dG9uIl9zOyB9CiAgICAgYm9vbCBpc1JlbmRlckJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAogICAgIGJvb2wgaGFzTGluZUlmRW1wdHkoKSBjb25zdCBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmgKaW5kZXggZTVk
MWFiMzFmMjJjNmU3MWFmM2Q0M2FmOTVjMDMxMjRjNjI3NWQ1Yi4uYzExYWI0NjRkOTgyMTE5ZmQz
NmI4MWYzMTJkOGUwNzZiNWFmN2QxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvbWJpbmVUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvbWJpbmVUZXh0LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5v
ZGUoKSBjb25zdCA9IGRlbGV0ZTsKIAogICAgIGJvb2wgaXNDb21iaW5lVGV4dCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckNvbWJpbmVUZXh0IjsgfQorICAgIEFTQ0lJTGl0
ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckNvbWJpbmVU
ZXh0Il9zOyB9CiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZW5kZXJlZFRl
eHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJDb3VudGVyLmNwcAppbmRleCBjZWNlZDM1ZTVjZTg3YmZiYzE0MDE4MzZjZDEzZWExYWVk
ZDdhZmMwLi5hM2ZlZmFkMDZhNmIyNzJiMWFmMWI1OTA0MzY5ODJhMTY4NTNiMWFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC00MDYsOSArNDA2LDkg
QEAgdm9pZCBSZW5kZXJDb3VudGVyOjp3aWxsQmVEZXN0cm95ZWQoKQogICAgIFJlbmRlclRleHQ6
OndpbGxCZURlc3Ryb3llZCgpOwogfQogCi1jb25zdCBjaGFyKiBSZW5kZXJDb3VudGVyOjpyZW5k
ZXJOYW1lKCkgY29uc3QKK0FTQ0lJTGl0ZXJhbCBSZW5kZXJDb3VudGVyOjpyZW5kZXJOYW1lKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gIlJlbmRlckNvdW50ZXIiOworICAgIHJldHVybiAiUmVuZGVy
Q291bnRlciJfczsKIH0KIAogYm9vbCBSZW5kZXJDb3VudGVyOjppc0NvdW50ZXIoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKaW5kZXggYjUzNTY2M2FmYzgx
NDQ4OWEyODExNTI2MTNhOTY0YjEzMjM4NDE1ZC4uZWNkM2Y4MzQ4N2IyNzA5MTg0ZmMxNDBjNjcz
ZDQyZWNlNWU5NThiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckNvdW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5o
CkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBv
dmVycmlkZTsKICAgICBzdGF0aWMgdm9pZCByZW5kZXJlclN0eWxlQ2hhbmdlZFNsb3dDYXNlKFJl
bmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlJiBuZXdTdHlsZSk7CiAgICAgCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBpc0NvdW50ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgb3JpZ2lu
YWxUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IGFlZDMy
ZTY5ZDI4YWU4ZWIyNzNhYmFmODE4NGMzMjZhYTU3OTM0YTIuLmEwNmU1ZjNiYTc2NDg3NWRkNjdm
NzEwNjA3NzI5NDY0Yzc0MTI4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC0xMTgzLDIwICsxMTgz
LDIwIEBAIExheW91dFVuaXQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphbGxvd2VkQ2hp
bGRGbGV4KFJlbmRlckJveCogY2hpbGQsIGJvb2wKICAgICByZXR1cm4gMDsKIH0KIAotY29uc3Qg
Y2hhciogUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpyZW5kZXJOYW1lKCkgY29uc3QKK0FT
Q0lJTGl0ZXJhbCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OnJlbmRlck5hbWUoKSBjb25z
dAogewogICAgIGlmIChpc0Zsb2F0aW5nKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94IChmbG9hdGluZykiOworICAgICAgICByZXR1cm4gIlJlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveCAoZmxvYXRpbmcpIl9zOwogICAgIGlmIChpc091dE9mRmxvd1Bvc2l0
aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKHBv
c2l0aW9uZWQpIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gg
KHBvc2l0aW9uZWQpIl9zOwogICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgaGFjayB3aGlsZSB0aGUg
bmV3IGdlbmVyYXRlZCBjb250ZW50IHN5c3RlbSBpcyBiZWluZyBpbXBsZW1lbnRlZC4KICAgICBp
ZiAoaXNQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94IChnZW5lcmF0ZWQpIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3ggKGdlbmVyYXRlZCkiX3M7CiAgICAgaWYgKGlzQW5vbnltb3VzKCkpCi0gICAg
ICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IChnZW5lcmF0ZWQpIjsKKyAg
ICAgICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKGdlbmVyYXRlZCkiX3M7
CiAgICAgaWYgKGlzUmVsYXRpdmVseVBvc2l0aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuICJSZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKHJlbGF0aXZlIHBvc2l0aW9uZWQpIjsKLSAgICByZXR1
cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCI7CisgICAgICAgIHJldHVybiAiUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94IChyZWxhdGl2ZSBwb3NpdGlvbmVkKSJfczsKKyAgICByZXR1
cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5oCmluZGV4IDkwMTNhNDZjZGQyODk0NjZjZTc4YmMxY2QxZDVhZjk0
YzA4ZjkyMDguLjQ3MDkxMzRkMDNmZjRkYzljMzYwNGFhZWYyNzc2ZTBhZDg4ZTk3MDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogCiAgICAgRWxlbWVudCYgZWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMo
KSk7IH0KIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBz
dHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5
bGUpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRGV0YWlsc01hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFp
bHNNYXJrZXIuaAppbmRleCBhYmQ4ODNkODA5OWY1NzI3ODQ2NjAyMjk2MWVkYTY0OTFjYWYwOGVk
Li5kZDg0ODA5ZjAyNWVmMTRlYTllNTE2ZjFmZDNjNzY3YTUwYmU2MWJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgKQEAgLTM1LDcgKzM1LDcg
QEAgcHVibGljOgogICAgIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7CiAKIHByaXZh
dGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJSZW5kZXJEZXRhaWxzTWFya2VyIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckRldGFpbHNNYXJrZXIiX3M7IH0KICAgICBi
b29sIGlzRGV0YWlsc01hcmtlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKaW5k
ZXggZjFmZDlmZjA1ZGRhOTU3YzY0NjRkMTQ3MDdjOTQyMWJhODM4NWY0ZS4uYzA0MWM5Njk0YjQ4
ZTBkODFlYTliYzI5NjllNzhhODY2YTgxN2Q5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGxheW91dCgpIGZpbmFsOwogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgZmlu
YWw7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IlJlbmRlckVtYmVkZGVkT2JqZWN0IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlckVtYmVkZGVkT2JqZWN0Il9zOyB9CiAgICAgYm9v
bCBpc0VtYmVkZGVkT2JqZWN0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
Ym9vbCBzaG93c1VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yKCkgY29uc3QgeyByZXR1cm4gaXNQ
bHVnaW5VbmF2YWlsYWJsZSgpICYmIG1faXNVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvclN0YXRl
ICE9IFVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yU3RhdGU6OkhpZGRlbjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAppbmRleCBk
MzBhOWJiZjU4ODdiMTQwMTA4NDEzNWRkMTMwMDE0ZmY4NGFjMWFjLi45YzIzNWIxMDcyOWY5Zjdj
YjQyZmFmZTlkNDYyMDEwM2FmYzZkM2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBpc0ZpbGVVcGxvYWRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJGaWxlVXBsb2FkQ29udHJvbCI7IH0KKyAgICBBU0NJSUxpdGVyYWwg
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbCJfczsgfQogCiAgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNh
bFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggNWQx
ZGE2YWY5NWZjMjJhMjUzNWIzNDhlYWU2OGFlNDI3YjYzNmNjMS4uZmM0MzRmMTlhNDQ4OTY0NzZi
YmM0ZmRiM2E2MWQ3NzljMjg5ZDUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC04OSw5ICs4OSw5IEBAIFJlbmRlckZsZXhpYmxlQm94
Ojp+UmVuZGVyRmxleGlibGVCb3goKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Om5vZGVMYXlvdXRDb250ZXh0Q2hhbmdlZChub2RlRm9yTm9uQW5vbnltb3VzKCksIG51bGxwdHIp
OwogfQogCi1jb25zdCBjaGFyKiBSZW5kZXJGbGV4aWJsZUJveDo6cmVuZGVyTmFtZSgpIGNvbnN0
CitBU0NJSUxpdGVyYWwgUmVuZGVyRmxleGlibGVCb3g6OnJlbmRlck5hbWUoKSBjb25zdAogewot
ICAgIHJldHVybiAiUmVuZGVyRmxleGlibGVCb3giOworICAgIHJldHVybiAiUmVuZGVyRmxleGli
bGVCb3giX3M7CiB9CiAKIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4
TG9naWNhbFdpZHRoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guaAppbmRleCA0YjU1NTJiMTg5NWQ1MGUwZGNlMTkyMzA3OTY3YTNkNDFkN2VmZWNl
Li5jZWUwMzE3NzQyNzViNzBhZTFjYjBiZmIxNWQ4ZmM4OTE1N2YxMWY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAtNDYsNyArNDYsNyBAQCBw
dWJsaWM6CiAKICAgICBib29sIGlzRmxleGlibGVCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJv
b2wgYXZvaWRzRmxvYXRzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wg
Y2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29u
dGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWlu
ZXIuaAppbmRleCBiNzBlNzE2ZDMwZDJhMWJiZDFjN2EwNjY1YmZmNjRhMWYxYTI4YzM1Li4xZmIw
MTAwYTNiNGNmYTkzYTM1NzNjYTA4ZGZkNWI0N2NlZjZiYzVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuaApAQCAtMTQ0LDcgKzE0
NCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyRnJhZ21lbnRD
b250YWluZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJGcmFnbWVudENvbnRh
aW5lciI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJGcmFnbWVudENvbnRhaW5lciJfczsgfQogCiAgICAgdm9pZCBpbnNlcnRl
ZEludG9UcmVlKElzSW50ZXJuYWxNb3ZlKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxCZVJlbW92
ZWRGcm9tVHJlZShJc0ludGVybmFsTW92ZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXJTZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lclNldC5oCmluZGV4IGU0NGIy
ZGZkNjZlOWU3MDczMDQ3ZTk2YThmYjMyYjdjNTRkZDEwZGEuLjI0MWRhOTI3Y2U0MDEwMzA1Yzg3
NzMzMDM3MzM0MDEwOTY1ODFmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFnbWVudENvbnRhaW5lclNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lclNldC5oCkBAIC01Myw3ICs1Myw3IEBAIHByb3Rl
Y3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBpbnN0YWxsRnJhZ21lbnRlZEZsb3coKSBmaW5hbDsK
IAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSA9IDA7CisgICAg
QVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSA9IDA7CiAgICAgCiAgICAg
Ym9vbCBpc1JlbmRlckZyYWdtZW50Q29udGFpbmVyU2V0KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFnbWVudGVkRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50
ZWRGbG93LmgKaW5kZXggNzVmYjUwMzcwMzA2OWQwYWQxMDQ4NzIzMzM1MWZiNDMxNmRjNWU3Yy4u
MGQzODlhZDc1MWM2ZGI0MDJmOTM4NmEyZDI1YTNhMDEzMjBlOWI2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmgKQEAgLTE4Niw3ICsxODYs
NyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBSZW5kZXJGcmFnbWVudGVkRmxvdyogbG9jYXRlRW5jbG9z
aW5nRnJhZ21lbnRlZEZsb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb25zdF9jYXN0PFJl
bmRlckZyYWdtZW50ZWRGbG93Kj4odGhpcyk7IH0KIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSA9IDA7CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSA9IDA7CiAKICAgICAvLyBPdmVycmlkZGVuIGJ5IGNvbHVtbnMvcGFnZXMg
dG8gc2V0IHVwIGFuIGluaXRpYWwgbG9naWNhbCB3aWR0aCBvZiB0aGUgcGFnZSB3aWR0aCBldmVu
IHdoZW4KICAgICAvLyBubyBmcmFnbWVudHMgaGF2ZSBiZWVuIGdlbmVyYXRlZCB5ZXQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5oCmluZGV4IDNkNjdhMGZkN2Y2OGEyNWRhMzIz
NzExYjQyNDc3YmY3YmI4YzUyYzEuLmY0MjEyNWRiNjFhZmVlMGFiYTE4M2ViYWRiZmZlYmYzMTJj
MzliZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBmcmFtZU93bmVyRWxlbWVudCgpIGNv
bnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJSZW5kZXJGcmFtZSI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJGcmFtZSJfczsgfQogICAgIGJvb2wgaXNGcmFt
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYW1lU2V0LmgKaW5kZXggMGY4YTA5MDk3MTI4MmNmMTEyYWI1MGYxODg2
ZDBjMTA3MWM5NWNjMi4uYWRhNDM0ZTg0N2VjM2U5MWZjYzNkN2Q0MDcxZmI4ZGE0MTM5YzY0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmgKQEAgLTkxLDcgKzkx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaW50IG1fc3BsaXRSZXNpemVPZmZzZXQ7CiAgICAgfTsK
IAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyRnJhbWVTZXQiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyRnJhbWVTZXQiX3M7IH0KICAgICBib29sIGlzRnJhbWVT
ZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIGxheW91dCgp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1
bGxTY3JlZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgK
aW5kZXggNjkwNDMzNTkyYzdmNGViMjJmMmFjNDU2MTdkMTAwY2VmNTE5OTkwOS4uMDAwZjMxZjA0
ZjI1ZWEwNTkxNmYxMWU0OGVhYjNjYTMwZWY5ZGJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBS
ZW5kZXJGdWxsU2NyZWVuKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+
UmVuZGVyRnVsbFNjcmVlbigpOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJGdWxsU2NyZWVuIjsgfQorICAgIEFTQ0lJTGl0ZXJh
bCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZ1bGxTY3JlZW4i
X3M7IH0KIAogICAgIFJlbmRlckJsb2NrKiBwbGFjZWhvbGRlcigpIHsgcmV0dXJuIG1fcGxhY2Vo
b2xkZXIuZ2V0KCk7IH0KICAgICB2b2lkIHNldFBsYWNlaG9sZGVyKFJlbmRlckJsb2NrJiBwbGFj
ZWhvbGRlcikgeyBtX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCAzZGVhZmVkZjIxYTZjMDM4OTU3M2Q0MjBhMDU2
NGRmYWI5YThkYmJmLi44MzEzNzY0MWE0Yjk5MWI4NjkxZWFkYzRjNDY0NGQ5MjM1ZTk1ZWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0xOTg3LDE3ICsxOTg3
LDE3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGFpbnRDaGlsZHJlbihQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmCiAgICAgICAgIHBhaW50Q2hpbGQoKmNoaWxk
LCBwYWludEluZm8sIHBhaW50T2Zmc2V0LCBmb3JDaGlsZCwgdXNlUHJpbnRSZWN0LCBQYWludEFz
SW5saW5lQmxvY2spOwogfQogCi1jb25zdCBjaGFyKiBSZW5kZXJHcmlkOjpyZW5kZXJOYW1lKCkg
Y29uc3QKK0FTQ0lJTGl0ZXJhbCBSZW5kZXJHcmlkOjpyZW5kZXJOYW1lKCkgY29uc3QKIHsKICAg
ICBpZiAoaXNGbG9hdGluZygpKQotICAgICAgICByZXR1cm4gIlJlbmRlckdyaWQgKGZsb2F0aW5n
KSI7CisgICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAoZmxvYXRpbmcpIl9zOwogICAgIGlmIChp
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJHcmlkIChwb3Np
dGlvbmVkKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAocG9zaXRpb25lZCkiX3M7CiAg
ICAgaWYgKGlzQW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAoZ2VuZXJh
dGVkKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAoZ2VuZXJhdGVkKSJfczsKICAgICBp
ZiAoaXNSZWxhdGl2ZWx5UG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gIlJlbmRlckdyaWQg
KHJlbGF0aXZlIHBvc2l0aW9uZWQpIjsKLSAgICByZXR1cm4gIlJlbmRlckdyaWQiOworICAgICAg
ICByZXR1cm4gIlJlbmRlckdyaWQgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIl9zOworICAgIHJldHVy
biAiUmVuZGVyR3JpZCJfczsKIH0KIAogYm9vbCBSZW5kZXJHcmlkOjpoYXNBdXRvU2l6ZUluQ29s
dW1uQXhpcyhjb25zdCBSZW5kZXJCb3gmIGNoaWxkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmgKaW5kZXggMTg0ZTY0MmJhYzIzMzczYjBlMmRlM2QzOGJjY2FiZTdmZmNj
MjJiOS4uOGU2NjlhMGI4N2I2NGQyMmUwMzU4NTkwNjBlNWU0ODhkYjI0NTFkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIGNoaWxkLT5pc1JlbmRlclJlcGxhY2VkKCkgPyBJdGVtUG9zaXRpb246
OlN0YXJ0IDogSXRlbVBvc2l0aW9uOjpTdHJldGNoOwogICAgIH0KIAotICAgIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNSZW5kZXJHcmlkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0
aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lk
dGgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySFRNTENhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhU
TUxDYW52YXMuaAppbmRleCBmZjM1NjNjNzgzNzZlMjUwYzNmN2Q5MjJlMWNmMTE5MmY0NDYwYzUx
Li5lYWZkMDg0ODM2MGY5MjI0NjdhNGI1ZDEyYjY4YWJjYTQzMDVkYmNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKICAgICBib29sIHJlcXVp
cmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzQ2FudmFzKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVySFRNTENhbnZhcyI7IH0KKyAgICBBU0NJSUxpdGVy
YWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJIVE1MQ2FudmFz
Il9zOyB9CiAgICAgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIG92ZXJyaWRl
IHsgY2FudmFzU2l6ZUNoYW5nZWQoKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJRnJhbWUuaAppbmRleCA5MWNkODU1NjQ0YWI3OGJlOWIxY2Y0ZTkzYWViMjA3MjI1MDdiMTE2
Li41OWE3ODg1ZWQ3NzUwMTIyNTMzYzNmNmRiYTAwNzdmMGIwYjc3YTgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIGlzUmVuZGVySUZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJSZW5kZXJJRnJhbWUiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVySUZyYW1lIl9zOyB9CiAKICAgICBib29sIHJlcXVpcmVz
TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuaAppbmRleCA4YWFjZDRjMDczZGM4OTc5NjcwZDc1ZDEzZWNkMjE3NGJjOWMyNzY0Li40NDI5
ZDMwN2Y3YjA2YjY3MjE1ZGM0NmJjNmYyYjQwNWI1YTM0YzhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtMTA0LDcgKzEwNCw3IEBAIHByb3RlY3RlZDoKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJJbWFnZSI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJJbWFnZSJfczsgfQogCiAgICAgYm9vbCBj
YW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcAppbmRleCAwYjQ1ZWFlYzEzNGM1YzdkMDFhMDJjMzNlZjgzYzk3
ODRiOGY2YmVhLi43NjAwNTAwMWQzYzBkZGU0MzcwZGFiNzg0ZmUyNDVlN2VkODhiOTkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtNDAyLDE4ICs0MDIs
MTggQEAgTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6Om1hcmdpbkFmdGVyKGNvbnN0IFJlbmRlclN0
eWxlKiBvdGhlclN0eWxlKSBjb25zdAogICAgIHJldHVybiBjb21wdXRlTWFyZ2luKHRoaXMsIHN0
eWxlKCkubWFyZ2luQWZ0ZXJVc2luZyhvdGhlclN0eWxlID8gb3RoZXJTdHlsZSA6ICZzdHlsZSgp
KSk7CiB9CiAKLWNvbnN0IGNoYXIqIFJlbmRlcklubGluZTo6cmVuZGVyTmFtZSgpIGNvbnN0CitB
U0NJSUxpdGVyYWwgUmVuZGVySW5saW5lOjpyZW5kZXJOYW1lKCkgY29uc3QKIHsKICAgICBpZiAo
aXNSZWxhdGl2ZWx5UG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gIlJlbmRlcklubGluZSAo
cmVsYXRpdmUgcG9zaXRpb25lZCkiOworICAgICAgICByZXR1cm4gIlJlbmRlcklubGluZSAocmVs
YXRpdmUgcG9zaXRpb25lZCkiX3M7CiAgICAgaWYgKGlzU3RpY2tpbHlQb3NpdGlvbmVkKCkpCi0g
ICAgICAgIHJldHVybiAiUmVuZGVySW5saW5lIChzdGlja3kgcG9zaXRpb25lZCkiOworICAgICAg
ICByZXR1cm4gIlJlbmRlcklubGluZSAoc3RpY2t5IHBvc2l0aW9uZWQpIl9zOwogICAgIC8vIEZJ
WE1FOiBUZW1wb3JhcnkgaGFjayB3aGlsZSB0aGUgbmV3IGdlbmVyYXRlZCBjb250ZW50IHN5c3Rl
bSBpcyBiZWluZyBpbXBsZW1lbnRlZC4KICAgICBpZiAoaXNQc2V1ZG9FbGVtZW50KCkpCi0gICAg
ICAgIHJldHVybiAiUmVuZGVySW5saW5lIChnZW5lcmF0ZWQpIjsKKyAgICAgICAgcmV0dXJuICJS
ZW5kZXJJbmxpbmUgKGdlbmVyYXRlZCkiX3M7CiAgICAgaWYgKGlzQW5vbnltb3VzKCkpCi0gICAg
ICAgIHJldHVybiAiUmVuZGVySW5saW5lIChnZW5lcmF0ZWQpIjsKLSAgICByZXR1cm4gIlJlbmRl
cklubGluZSI7CisgICAgICAgIHJldHVybiAiUmVuZGVySW5saW5lIChnZW5lcmF0ZWQpIl9zOwor
ICAgIHJldHVybiAiUmVuZGVySW5saW5lIl9zOwogfQogCiBib29sIFJlbmRlcklubGluZTo6bm9k
ZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJl
c3VsdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCAwYTE3MWFm
OGJiYWRjYWIwZTBiYTQxNmQyYTA5ODc5OGJlZDI3NDM1Li40M2JkMDZiZWNhNTA1MTIxNjZlZjEy
NjNlM2RhZDZmMzU4MDRkYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5oCkBAIC05Myw3ICs5Myw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHVwZGF0ZUZyb21TdHls
ZSgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKaW5kZXggMjM0NTUyNWIyYzgwZmEyMmNlYjYyMGQ1ZGFmNzAxMDAyMTk4NTJmNC4uZmYw
ZTkxY2NmNGMwODdlM2RlNmIzNTExNzQ4M2U0NGI3YTMwMTExNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTUxNywxMiArNTE3LDEy
IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpjcmVhdGVQcmltYXJ5R3JhcGhpY3NMYXllcigp
CiAgICAgY29uc3QgdW5zaWduZWQgbWF4TGF5ZXJOYW1lTGVuZ3RoID0gMTAwOwogICAgIGlmIChs
YXllck5hbWUubGVuZ3RoKCkgPiBtYXhMYXllck5hbWVMZW5ndGgpIHsKICAgICAgICAgbGF5ZXJO
YW1lLnRydW5jYXRlKG1heExheWVyTmFtZUxlbmd0aCk7Ci0gICAgICAgIGxheWVyTmFtZS5hcHBl
bmQoIi4uLiIpOworICAgICAgICBsYXllck5hbWUuYXBwZW5kKCIuLi4iX3MpOwogICAgIH0KICAg
ICBtX2dyYXBoaWNzTGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKGxheWVyTmFtZSwgbV9pc0Zy
YW1lTGF5ZXJXaXRoVGlsZWRCYWNraW5nID8gR3JhcGhpY3NMYXllcjo6VHlwZTo6UGFnZVRpbGVk
QmFja2luZyA6IEdyYXBoaWNzTGF5ZXI6OlR5cGU6Ok5vcm1hbCk7CiAKICAgICBpZiAobV9pc0Zy
YW1lTGF5ZXJXaXRoVGlsZWRCYWNraW5nKSB7Ci0gICAgICAgIG1fY2hpbGRDb250YWlubWVudExh
eWVyID0gY3JlYXRlR3JhcGhpY3NMYXllcigiUGFnZSBUaWxlZEJhY2tpbmcgY29udGFpbm1lbnQi
KTsKKyAgICAgICAgbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVy
KCJQYWdlIFRpbGVkQmFja2luZyBjb250YWlubWVudCJfcyk7CiAgICAgICAgIG1fZ3JhcGhpY3NM
YXllci0+YWRkQ2hpbGQoKm1fY2hpbGRDb250YWlubWVudExheWVyKTsKICAgICB9CiAKQEAgLTE5
MzcsNyArMTkzNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjplbnN1cmVDbGlwcGluZ1N0
YWNrTGF5ZXJzKExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrJiBjCiB7CiAgICAgZm9yIChhdXRv
JiBlbnRyeSA6IGNsaXBwaW5nU3RhY2suc3RhY2soKSkgewogICAgICAgICBpZiAoIWVudHJ5LmNs
aXBwaW5nTGF5ZXIpIHsKLSAgICAgICAgICAgIGVudHJ5LmNsaXBwaW5nTGF5ZXIgPSBjcmVhdGVH
cmFwaGljc0xheWVyKGVudHJ5LmNsaXBEYXRhLmlzT3ZlcmZsb3dTY3JvbGwgPyAiY2xpcCBmb3Ig
c2Nyb2xsZXIiIDogImFuY2VzdG9yIGNsaXBwaW5nIik7CisgICAgICAgICAgICBlbnRyeS5jbGlw
cGluZ0xheWVyID0gY3JlYXRlR3JhcGhpY3NMYXllcihlbnRyeS5jbGlwRGF0YS5pc092ZXJmbG93
U2Nyb2xsID8gImNsaXAgZm9yIHNjcm9sbGVyIl9zIDogImFuY2VzdG9yIGNsaXBwaW5nIl9zKTsK
ICAgICAgICAgICAgIGVudHJ5LmNsaXBwaW5nTGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7
CiAgICAgICAgICAgICBlbnRyeS5jbGlwcGluZ0xheWVyLT5zZXRQYWludGluZ1BoYXNlKHsgfSk7
CiAgICAgICAgIH0KQEAgLTIwMjYsNyArMjAyNiw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5n
Ojp1cGRhdGVEZXNjZW5kYW50Q2xpcHBpbmdMYXllcihib29sIG5lZWRzRGVzY2VuZGFudENsaXAp
CiAKICAgICBpZiAobmVlZHNEZXNjZW5kYW50Q2xpcCkgewogICAgICAgICBpZiAoIW1fY2hpbGRD
b250YWlubWVudExheWVyICYmICFtX2lzRnJhbWVMYXllcldpdGhUaWxlZEJhY2tpbmcpIHsKLSAg
ICAgICAgICAgIG1fY2hpbGRDb250YWlubWVudExheWVyID0gY3JlYXRlR3JhcGhpY3NMYXllcigi
Y2hpbGQgY2xpcHBpbmciKTsKKyAgICAgICAgICAgIG1fY2hpbGRDb250YWlubWVudExheWVyID0g
Y3JlYXRlR3JhcGhpY3NMYXllcigiY2hpbGQgY2xpcHBpbmciX3MpOwogICAgICAgICAgICAgbV9j
aGlsZENvbnRhaW5tZW50TGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAgICAgICAgICAg
ICBsYXllcnNDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjExOCw3ICsyMTE4LDcgQEAg
Ym9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnJlcXVpcmVzU2Nyb2xsQ29ybmVyTGF5ZXIoKSBjb25z
dAogCiBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVy
cyhib29sIG5lZWRzSG9yaXpvbnRhbFNjcm9sbGJhckxheWVyLCBib29sIG5lZWRzVmVydGljYWxT
Y3JvbGxiYXJMYXllciwgYm9vbCBuZWVkc1Njcm9sbENvcm5lckxheWVyKQogewotICAgIGF1dG8g
Y3JlYXRlT3JEZXN0cm95TGF5ZXIgPSBbJl0oUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiBsYXllciwg
Ym9vbCBuZWVkTGF5ZXIsIGJvb2wgZHJhd3NDb250ZW50LCBjb25zdCBjaGFyKiBsYXllck5hbWUp
IHsKKyAgICBhdXRvIGNyZWF0ZU9yRGVzdHJveUxheWVyID0gWyZdKFJlZlB0cjxHcmFwaGljc0xh
eWVyPiYgbGF5ZXIsIGJvb2wgbmVlZExheWVyLCBib29sIGRyYXdzQ29udGVudCwgQVNDSUlMaXRl
cmFsIGxheWVyTmFtZSkgewogICAgICAgICBpZiAobmVlZExheWVyID09ICEhbGF5ZXIpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTIxMzgsMTUgKzIxMzgsMTUgQEAgYm9vbCBSZW5k
ZXJMYXllckJhY2tpbmc6OnVwZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMoYm9vbCBuZWVkc0hv
cml6b250YWxTY3JvbGwKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKIAotICAgIGJvb2wg
bGF5ZXJzQ2hhbmdlZCA9IGNyZWF0ZU9yRGVzdHJveUxheWVyKG1fb3ZlcmZsb3dDb250cm9sc0Nv
bnRhaW5lciwgbmVlZHNIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIgfHwgbmVlZHNWZXJ0aWNhbFNj
cm9sbGJhckxheWVyIHx8IG5lZWRzU2Nyb2xsQ29ybmVyTGF5ZXIsIGZhbHNlLCAib3ZlcmZsb3cg
Y29udHJvbHMgY29udGFpbmVyIik7CisgICAgYm9vbCBsYXllcnNDaGFuZ2VkID0gY3JlYXRlT3JE
ZXN0cm95TGF5ZXIobV9vdmVyZmxvd0NvbnRyb2xzQ29udGFpbmVyLCBuZWVkc0hvcml6b250YWxT
Y3JvbGxiYXJMYXllciB8fCBuZWVkc1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIgfHwgbmVlZHNTY3Jv
bGxDb3JuZXJMYXllciwgZmFsc2UsICJvdmVyZmxvdyBjb250cm9scyBjb250YWluZXIiX3MpOwog
Ci0gICAgYm9vbCBob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkID0gY3JlYXRlT3JEZXN0
cm95TGF5ZXIobV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIsIG5lZWRzSG9yaXpvbnRhbFNj
cm9sbGJhckxheWVyLCB0cnVlLCAiaG9yaXpvbnRhbCBzY3JvbGxiYXIiKTsKKyAgICBib29sIGhv
cml6b250YWxTY3JvbGxiYXJMYXllckNoYW5nZWQgPSBjcmVhdGVPckRlc3Ryb3lMYXllcihtX2xh
eWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhciwgbmVlZHNIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIs
IHRydWUsICJob3Jpem9udGFsIHNjcm9sbGJhciJfcyk7CiAgICAgbGF5ZXJzQ2hhbmdlZCB8PSBo
b3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkOwogCi0gICAgYm9vbCB2ZXJ0aWNhbFNjcm9s
bGJhckxheWVyQ2hhbmdlZCA9IGNyZWF0ZU9yRGVzdHJveUxheWVyKG1fbGF5ZXJGb3JWZXJ0aWNh
bFNjcm9sbGJhciwgbmVlZHNWZXJ0aWNhbFNjcm9sbGJhckxheWVyLCB0cnVlLCAidmVydGljYWwg
c2Nyb2xsYmFyIik7CisgICAgYm9vbCB2ZXJ0aWNhbFNjcm9sbGJhckxheWVyQ2hhbmdlZCA9IGNy
ZWF0ZU9yRGVzdHJveUxheWVyKG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhciwgbmVlZHNWZXJ0
aWNhbFNjcm9sbGJhckxheWVyLCB0cnVlLCAidmVydGljYWwgc2Nyb2xsYmFyIl9zKTsKICAgICBs
YXllcnNDaGFuZ2VkIHw9IHZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkOwogCi0gICAgbGF5
ZXJzQ2hhbmdlZCB8PSBjcmVhdGVPckRlc3Ryb3lMYXllcihtX2xheWVyRm9yU2Nyb2xsQ29ybmVy
LCBuZWVkc1Njcm9sbENvcm5lckxheWVyLCB0cnVlLCAic2Nyb2xsIGNvcm5lciIpOworICAgIGxh
eWVyc0NoYW5nZWQgfD0gY3JlYXRlT3JEZXN0cm95TGF5ZXIobV9sYXllckZvclNjcm9sbENvcm5l
ciwgbmVlZHNTY3JvbGxDb3JuZXJMYXllciwgdHJ1ZSwgInNjcm9sbCBjb3JuZXIiX3MpOwogCiAg
ICAgaWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9vd25pbmdMYXllci5wYWdlKCku
c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkgewogICAgICAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUFy
ZWEgPSBtX293bmluZ0xheWVyLnNjcm9sbGFibGVBcmVhKCkpIHsKQEAgLTIyODIsNyArMjI4Miw3
IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVNYXNraW5nTGF5ZXIoYm9vbCBoYXNN
YXNrLCBib29sIGhhc0NsaXBQYXRoKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX21hc2tM
YXllcikgewotICAgICAgICAgICAgbV9tYXNrTGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJt
YXNrIiwgcmVxdWlyZWRMYXllclR5cGUpOworICAgICAgICAgICAgbV9tYXNrTGF5ZXIgPSBjcmVh
dGVHcmFwaGljc0xheWVyKCJtYXNrIl9zLCByZXF1aXJlZExheWVyVHlwZSk7CiAgICAgICAgICAg
ICBsYXllckNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRN
YXNrTGF5ZXIobV9tYXNrTGF5ZXIuY29weVJlZigpKTsKICAgICAgICAgICAgIC8vIFdlIG5lZWQg
YSBnZW9tZXRyeSB1cGRhdGUgdG8gc2l6ZSB0aGUgbmV3IG1hc2sgbGF5ZXIuCkBAIC0yMzA4LDcg
KzIzMDgsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ2hpbGRDbGlwcGluZ1N0
cmF0ZWd5KGJvb2wgbmVlZHNEZXNjZW5kYW50c0NsaXBwaQogCiAgICAgYXV0byogY2xpcHBpbmdM
YXllciA9IHRoaXMtPmNsaXBwaW5nTGF5ZXIoKTsKICAgICBpZiAobmVlZHNDbGlwTWFza0xheWVy
KCkpIHsKLSAgICAgICAgbV9jaGlsZENsaXBwaW5nTWFza0xheWVyID0gY3JlYXRlR3JhcGhpY3NM
YXllcigiY2hpbGQgY2xpcHBpbmcgbWFzayIpOworICAgICAgICBtX2NoaWxkQ2xpcHBpbmdNYXNr
TGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJjaGlsZCBjbGlwcGluZyBtYXNrIl9zKTsKICAg
ICAgICAgbV9jaGlsZENsaXBwaW5nTWFza0xheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAg
ICAgICAgIG1fY2hpbGRDbGlwcGluZ01hc2tMYXllci0+c2V0UGFpbnRpbmdQaGFzZSh7IEdyYXBo
aWNzTGF5ZXJQYWludGluZ1BoYXNlOjpDaGlsZENsaXBwaW5nTWFzayB9KTsKICAgICAgICAgaWYg
KGNsaXBwaW5nTGF5ZXIpCkBAIC0yMzI3LDEzICsyMzI3LDEzIEBAIGJvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVTY3JvbGxpbmdMYXllcnMoYm9vbCBuZWVkc1Njcm9sbGluZ0xheWVycykK
IAogICAgIGlmICghbV9zY3JvbGxDb250YWluZXJMYXllcikgewogICAgICAgICAvLyBPdXRlciBs
YXllciB3aGljaCBjb3JyZXNwb25kcyB3aXRoIHRoZSBzY3JvbGwgdmlldy4gVGhpcyBuZXZlciBw
YWludHMgY29udGVudC4KLSAgICAgICAgbV9zY3JvbGxDb250YWluZXJMYXllciA9IGNyZWF0ZUdy
YXBoaWNzTGF5ZXIoInNjcm9sbCBjb250YWluZXIiLCBHcmFwaGljc0xheWVyOjpUeXBlOjpTY3Jv
bGxDb250YWluZXIpOworICAgICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVyID0gY3JlYXRlR3Jh
cGhpY3NMYXllcigic2Nyb2xsIGNvbnRhaW5lciJfcywgR3JhcGhpY3NMYXllcjo6VHlwZTo6U2Ny
b2xsQ29udGFpbmVyKTsKICAgICAgICAgbV9zY3JvbGxDb250YWluZXJMYXllci0+c2V0UGFpbnRp
bmdQaGFzZSh7IH0pOwogICAgICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVyLT5zZXREcmF3c0Nv
bnRlbnQoZmFsc2UpOwogICAgICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVyLT5zZXRNYXNrc1Rv
Qm91bmRzKHRydWUpOwogCiAgICAgICAgIC8vIElubmVyIGxheWVyIHdoaWNoIHJlbmRlcnMgdGhl
IGNvbnRlbnQgdGhhdCBzY3JvbGxzLgotICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllciA9
IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoInNjcm9sbGVkIGNvbnRlbnRzIiwgR3JhcGhpY3NMYXllcjo6
VHlwZTo6U2Nyb2xsZWRDb250ZW50cyk7CisgICAgICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVy
ID0gY3JlYXRlR3JhcGhpY3NMYXllcigic2Nyb2xsZWQgY29udGVudHMiX3MsIEdyYXBoaWNzTGF5
ZXI6OlR5cGU6OlNjcm9sbGVkQ29udGVudHMpOwogICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNM
YXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOwogICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNM
YXllci0+c2V0QW5jaG9yUG9pbnQoeyB9KTsKICAgICAgICAgbV9zY3JvbGxDb250YWluZXJMYXll
ci0+YWRkQ2hpbGQoKm1fc2Nyb2xsZWRDb250ZW50c0xheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAppbmRleCA4NDMyNjYzYzE3N2ZjYzRiMTI1NWMzNWNk
MTNmM2Q0MGUzMTcyNWJmLi45ZTllMWUzOTk0YjFjOWVkOTM4NGM1OGIxZmM3MWRhY2I5ZWEzMjcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCkBAIC0zNiw3
ICszNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW5kZXJMaW5lQnJlYWsoKTsKIAogICAg
IC8vIEZJWE1FOiBUaGUgbGllcyBoZXJlIGtlZXAgcmVuZGVyIHRyZWUgZHVtcCBiYXNlZCB0ZXN0
IHJlc3VsdHMgdW5jaGFuZ2VkLgotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2lzV0JSID8gIlJlbmRlcldvcmRCcmVhayIgOiAiUmVuZGVyQlIiOyB9
CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
V0JSID8gIlJlbmRlcldvcmRCcmVhayJfcyA6ICJSZW5kZXJCUiJfczsgfQogCiAgICAgYm9vbCBp
c1dCUigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNXQlI7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggZDc0OGQwZjg0OTA0NDliYzhjNmZiMTRhOTZj
YWZmOGU4MmU2YzA4Ni4uODU3ZDg0ODM3NWE0NjI4NDQ4ZmFmNWZhZDNiZGM5NWMzNjI1OTJkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC03MSw3ICs3MSw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAg
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
TGlzdEJveCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJMaXN0Qm94Il9zOyB9CiAKICAgICBib29sIGlzTGlzdEJveCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uaAppbmRleCA4NTBkZGVjYThlOTQ1NjAzODBhZDk1YjY1MTExYmM3ZDk4
YTVmOWI2Li42YWE1MTkyYzJiM2EzYmZhOTQxOGI3MGU3ZDUyMzkxYzE5OGUyNzUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaApAQCAtNjIsNyArNjIsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0luUmV2ZXJzZWRPcmRlcmVkTGlzdCgpIGNvbnN0OwogCiBwcml2
YXRlOgotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
UmVuZGVyTGlzdEl0ZW0iOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiUmVuZGVyTGlzdEl0ZW0iX3M7IH0KIAogICAgIGJvb2wgaXNMaXN0SXRl
bSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCmluZGV4IGNjZjhhYmZkOWUxNDhiMDcxMzczMmVj
NzY2N2ZjNzdlYzEwYzEwNGUuLjNlZGJmZTE0Y2ZkNWQ5OTYwMGM0MWJjNmIyY2U1ZDg5NzQxNWI3
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaApAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95
ZWQoKSBmaW5hbDsKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gIlJlbmRlckxpc3RNYXJrZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTGlzdE1hcmtlciJfczsgfQogICAgIHZvaWQg
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKICAgICBib29sIGlzTGlzdE1h
cmtlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGNhbkhhdmVDaGls
ZHJlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZWRpYS5oCmluZGV4IDEwMWRkMDQ3MDI3ZTI3NzE5OWU1YzMyNmY0YzcyMGQ3ODdi
NmYwNTAuLmRjYThjNzQ0NTMxZmU3NGM4YjhkNmZlNGVlMjM3YjUwODA1NmI1YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6
CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyTWVkaWEiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWVkaWEiX3M7IH0KICAgICBib29sIGlzTWVkaWEoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0ltYWdlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmgKaW5kZXggM2MwMmM5MDJhZjZiMzUyM2VmOGY3OWYzNzk1MzIxZWYyMjM1
MWFiOS4uNjhhOTE4OGRiZmI5MjQwNWZiOGJlZjkxYmU1OTU0YmY5MDRjNDNlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKQEAgLTgzLDcgKzgzLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIGhhc0NvbnRyb2xDbGlwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIGJvb2wgY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWVudUxpc3QiOyB9CisgICAgQVNDSUlMaXRlcmFs
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWVudUxpc3QiX3M7
IH0KIAogICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYg
bWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgKaW5kZXggMWMzNzA2MzE0YzlkZjVk
Mjg5Y2ZjZGFmZjM1YTdhMDAyMGJiZmRhZi4uY2ExNzQzMWM5ZmQyNDBiMGI3NTgxNzYxODg1NmNh
YjRlODI5YTc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgKQEAgLTM5
LDcgKzM5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aCgpIG92ZXJy
aWRlOwogICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRlTG9naWNhbEhlaWdo
dChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlck1ldGVyIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1ldGVyIl9zOyB9CiAgICAgYm9vbCBpc01l
dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTW9kZWwuaAppbmRleCA5NDE5NzE5YzAyNzBiZjQ3M2FmNWFkMzZjM2Yy
MWQxNTE1M2E5YTQ3Li4zN2E0OTIyYWZlNDFmZGMyNTBiMDk1ODQ4YjRkZDhlNTdjMGI4ZGJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTW9kZWwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTW9kZWwuaApAQCAtNDMsNyArNDMsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7Ci0g
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJN
b2RlbCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJSZW5kZXJNb2RlbCJfczsgfQogICAgIGJvb2wgaXNSZW5kZXJNb2RlbCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5G
bG93LmNwcAppbmRleCAwYTYwMzNhN2JiNWM3YjE1YmMyYWRlNWRlZjZmYTQxM2QzZWVjMDI5Li44
M2ZlMmQ5NTFkNjcxMWI5NzJkNmFlOTA4ZjQxZDU5OTJmODM1YjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcApAQCAtNDksOSAr
NDksOSBAQCBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyhEb2N1
bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgcwogCiBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6
On5SZW5kZXJNdWx0aUNvbHVtbkZsb3coKSA9IGRlZmF1bHQ7CiAKLWNvbnN0IGNoYXIqIFJlbmRl
ck11bHRpQ29sdW1uRmxvdzo6cmVuZGVyTmFtZSgpIGNvbnN0CitBU0NJSUxpdGVyYWwgUmVuZGVy
TXVsdGlDb2x1bW5GbG93OjpyZW5kZXJOYW1lKCkgY29uc3QKIHsgICAgCi0gICAgcmV0dXJuICJS
ZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQiOworICAgIHJldHVybiAiUmVuZGVyTXVsdGlDb2x1
bW5GbG93VGhyZWFkIl9zOwogfQogCiBSZW5kZXJNdWx0aUNvbHVtblNldCogUmVuZGVyTXVsdGlD
b2x1bW5GbG93OjpmaXJzdE11bHRpQ29sdW1uU2V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuaAppbmRleCAwNWQ5ZTc2YWEwNmQ2
YjFmMmM5NDM4M2U0OGQ1NTIyYjJiMWIzMDQ4Li5hYjY1YzliYzhhMjA3MmE1MzE1MDA4ZjYyNmJh
MjBmNzU0YmM1ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5GbG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvdy5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIGJvb2wgaXNSZW5kZXJNdWx0aUNvbHVtbkZsb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBh
ZGRGcmFnbWVudFRvVGhyZWFkKFJlbmRlckZyYWdtZW50Q29udGFpbmVyKikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB3aWxsQmVSZW1vdmVkRnJvbVRyZWUoSXNJbnRlcm5hbE1vdmUpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZnJhZ21lbnRlZEZsb3dEZXNjZW5kYW50Qm94TGFpZE91dChSZW5kZXJCb3gqKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TZXQuY3BwCmluZGV4IGUzOTZmYTEyMjgyOThkNTBkNjBkNmFmZjc2Y2Q0MmNlZTBlMmJiYTQu
LjBkZTczM2QyNGUxNDZkNTA4YTBjYWI5ZDQ5M2RlZDYxZTgzNjVlZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcApAQCAtMTA0Niw5
ICsxMDQ2LDkgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6dXBkYXRlSGl0VGVzdFJlc3Vs
dChIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IExheW8KICAgICB9CiB9CiAKLWNvbnN0IGNo
YXIqIFJlbmRlck11bHRpQ29sdW1uU2V0OjpyZW5kZXJOYW1lKCkgY29uc3QKK0FTQ0lJTGl0ZXJh
bCBSZW5kZXJNdWx0aUNvbHVtblNldDo6cmVuZGVyTmFtZSgpIGNvbnN0CiB7ICAgIAotICAgIHJl
dHVybiAiUmVuZGVyTXVsdGlDb2x1bW5TZXQiOworICAgIHJldHVybiAiUmVuZGVyTXVsdGlDb2x1
bW5TZXQiX3M7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtblNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU2V0LmgKaW5kZXggNDg4MjYwM2E0MjQwNGFiNmM3ZmYwNDM5YzU2NjBkZWI2Njdk
NmQ0NC4uODA0ZTg4Y2E5MjQyMjVkYmE5NGZhYWY2NzVjZDYxZjBjMDY4YTAxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmgKQEAgLTE2OSw3
ICsxNjksNyBAQCBwcml2YXRlOgogCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9p
bnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciopIG92
ZXJyaWRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBMYXlv
dXRVbml0IGNhbGN1bGF0ZU1heENvbHVtbkhlaWdodCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5l
clBsYWNlaG9sZGVyLmNwcAppbmRleCA2ZWZjNTE1YjJlNDg5YzBjMzYxMTI0YTc3MmQ1NjdhNDJj
ODAyYWVmLi5kZWM0Mjc1MmRlZDdjZmEzMDhiN2U0MzhkYzBmNzI2ZmJlMDE0ZmFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxh
Y2Vob2xkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNv
bHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgUmVuZGVyTXVsdGlD
b2x1bW5TcGFubmVyUGxhY2Vob2xkZXI6OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9s
ZGVyKFJlbmRlck0KIHsKIH0KIAotY29uc3QgY2hhciogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVy
UGxhY2Vob2xkZXI6OnJlbmRlck5hbWUoKSBjb25zdAorQVNDSUlMaXRlcmFsIFJlbmRlck11bHRp
Q29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpyZW5kZXJOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gIlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyIjsKKyAgICByZXR1cm4gIlJl
bmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyIl9zOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oCmluZGV4IDY1MGQ0OTE0Y2QyMjI2
OTE2NDZkOTFmY2U3Y2IzN2Y0M2FlN2YyZmEuLmQwN2VhZDRkMTY5ZGNlOGQyNzdiMjI4NGRmZmY5
NmQ3MTkxOGEzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oCkBAIC01MCw3ICs1MCw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpIG92ZXJyaWRlIHsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgV2Vha1B0cjxSZW5kZXJCb3g+IG1fc3Bhbm5lcjsKICAgICBXZWFrUHRyPFJlbmRl
ck11bHRpQ29sdW1uRmxvdz4gbV9mcmFnbWVudGVkRmxvdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMTU5MGQyMGRkMGIyYjJkOGM0ZmM2Y2JiMzk0NDhm
NGU0YWQ1MDA0ZC4uZWExZmU5NDIwNTlkNDdiMGM4Njc3MjgxZGQ0OThiNWNkZGQ2ZjBhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTEyMjYsMTMgKzEy
MjYsMTQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Om91dHB1dFJlbmRlck9iamVjdChUZXh0U3RyZWFt
JiBzdHJlYW0sIGJvb2wgbWFyaywgaW50IGRlcHRoKQogICAgIGlmIChub2RlKCkpCiAgICAgICAg
IHN0cmVhbSA8PCBub2RlKCktPm5vZGVOYW1lKCkudXRmOCgpLmRhdGEoKSA8PCAiICI7CiAKLSAg
ICBTdHJpbmcgbmFtZSA9IHJlbmRlck5hbWUoKTsKKyAgICBBU0NJSUxpdGVyYWwgbmFtZSA9IHJl
bmRlck5hbWUoKTsKKyAgICBTdHJpbmdWaWV3IG5hbWVWaWV3IHsgbmFtZSB9OwogICAgIC8vIEZJ
WE1FOiBSZW5kZXJlcidzIG5hbWUgc2hvdWxkIG5vdCBpbmNsdWRlIHByb3BlcnR5IHZhbHVlIGxp
c3RpbmcuCi0gICAgaW50IHBvcyA9IG5hbWUuZmluZCgnKCcpOworICAgIGludCBwb3MgPSBuYW1l
Vmlldy5maW5kKCcoJyk7CiAgICAgaWYgKHBvcyA+IDApCi0gICAgICAgIHN0cmVhbSA8PCBuYW1l
LmxlZnQocG9zIC0gMSkudXRmOCgpLmRhdGEoKTsKKyAgICAgICAgc3RyZWFtIDw8IG5hbWVWaWV3
LmxlZnQocG9zIC0gMSkuY2hhcmFjdGVyczgoKTsKICAgICBlbHNlCi0gICAgICAgIHN0cmVhbSA8
PCBuYW1lLnV0ZjgoKS5kYXRhKCk7CisgICAgICAgIHN0cmVhbSA8PCBuYW1lVmlldzsKIAogICAg
IGlmIChpczxSZW5kZXJCb3g+KCp0aGlzKSkgewogICAgICAgICBhdXRvJiByZW5kZXJCb3ggPSBk
b3duY2FzdDxSZW5kZXJCb3g+KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAppbmRleCA5Y2ZlZThiOGI1OGYyYTgwYjdkYzBlNDJkMjk4MjdiMzIyNGNmNTA2Li5m
Y2FjZjM4NTRjOGVhNGUwODI3YTdiZTIyMGQ0OTJmMjU1N2U2YTk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogCiAg
ICAgUmVuZGVyVGhlbWUmIHRoZW1lKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBU0NJSUxpdGVyYWwgcmVuZGVy
TmFtZSgpIGNvbnN0ID0gMDsKIAogICAgIFJlbmRlckVsZW1lbnQqIHBhcmVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyZW50OyB9CiAgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZihjb25zdCBSZW5kZXJP
YmplY3QqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJQcm9ncmVzcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmgK
aW5kZXggM2UxMmFjNzA0MDdmMmYzMTZhM2YxOWMwYWQ5OGJlMTk3ODczYmRhOS4uN2U3ZjI5Njk1
YzhmMTQxZDc4ZjUzN2ExMGVhNzQ4NGQ5MTNhZGUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclByb2dyZXNzLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIEhUTUxQ
cm9ncmVzc0VsZW1lbnQqIHByb2dyZXNzRWxlbWVudCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAg
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
UHJvZ3Jlc3MiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyUHJvZ3Jlc3MiX3M7IH0KICAgICBib29sIGlzUHJvZ3Jlc3MoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgTG9naWNhbEV4dGVudENvbXB1dGVk
VmFsdWVzIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5
b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUXVvdGUuaAppbmRleCBhMmYyNmM2N2M0ODA2ZjY5Y2Y1ODY1Yzk5MzVkM2QwYWIz
NTljZGFlLi5hYTRmNmE3NzFlNzc4NjZkMDE0YWY3ZGZjYjA4ODE3NGE2NGEzOTVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB1cGRhdGVSZW5kZXJlcihSZW5kZXJUcmVlQnVpbGRlciYsIFJlbmRlclF1b3Rl
KiBwcmV2aW91c1F1b3RlKTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclF1b3RlIjsgfQorICAgIEFTQ0lJTGl0
ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclF1b3RlIl9z
OyB9CiAgICAgYm9vbCBpc1F1b3RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIGJvb2wgaXNPcGVuKCkgY29uc3Q7CiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IGJjY2E2MzRjNjM1OTIzNDUxNzFlMWZkMzlk
YzE0MzlhMDQwZTVkMDkuLjQ0M2ExMmNmYzA0NTRkZTQwNmVlYzhjZmE0OTc4ZDY5Nzk2MDk0NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCkBAIC04NSw3ICs4
NSw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlQ29uc3RyYWluZWRMb2dpY2Fs
V2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFJlbmRl
ckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVwbGFj
ZWQiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyUmVwbGFjZWQiX3M7IH0KIAogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsaWNhLmgKaW5kZXggMmNlNzg2MTAxYjQ3ZTMyYzNkYjhiODdlYjY1YTAxNjQy
MzFhYjM3Yy4uMzI4ZGE4ZmRhMTM4MjJiM2ZhNDgwZTMzMGViYmU2YWRlNGJhYzNjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oCkBAIC0zOCw3ICszOCw3IEBAIHB1
YmxpYzoKICAgICBSZW5kZXJSZXBsaWNhKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAg
dmlydHVhbCB+UmVuZGVyUmVwbGljYSgpOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSZXBsaWNhIjsgfQorICAgIEFTQ0lJTGl0
ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJlcGxpY2Ei
X3M7IH0KIAogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnkuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmgKaW5kZXggYTNhMWMw
MjQ0NjgzYTg3YTNkZWRiNTlhNDQ2MWRhZmVhODBkMzlhYS4uZjViZTdiN2I0YTgxZTA1MTgwZDM1
YTMwMzBmMTFhMjIzMWU5ZWQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5o
CkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGlzUnVieUlubGluZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1
YnkgKGlubGluZSkiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUmVuZGVyUnVieSAoaW5saW5lKSJfczsgfQogICAgIGJvb2wgY3JlYXRl
c0Fub255bW91c1dyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9Owog
CkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGlzUnVieUJsb2NrKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUnVi
eSAoYmxvY2spIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclJ1YnkgKGJsb2NrKSJfczsgfQogICAgIGJvb2wgY3JlYXRlc0Fu
b255bW91c1dyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oCmluZGV4IDEyMjE2N2ZhYzk5
NTE5MzFjYjE4OTkzMjMyMzg1NjE0MGVkZGIyNzEuLjRkZTQ4ODlkODFhN2I1NDA1YmJlMDU4M2M0
ODhmOTdkMWEyNzM0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSdWJ5QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFz
ZS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJSdWJ5QmFzZShEb2N1bWVu
dCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlCYXNlKCk7CiAgICAg
Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJSdWJ5QmFzZSAoYW5vbnltb3VzKSI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5QmFzZSAoYW5vbnltb3VzKSJf
czsgfQogICAgIAogICAgIFJlbmRlclJ1YnlSdW4qIHJ1YnlSdW4oKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgKaW5kZXggMzU4NTE5NzhjMjY4YmFiMDhm
NzJjMjQ0ZjhmZGE1M2Y0ZDAzNGVjMy4uM2NlMTY2MDZmYzliYjdlZDUzMjhkZDllODEwZThmYWYx
NGYzNWJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlS
dW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCkBAIC03
Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGlzUnVieVJ1bigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1YnlSdW4gKGFub255bW91cykiOyB9
CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyUnVieVJ1biAoYW5vbnltb3VzKSJfczsgfQogICAgIGJvb2wgY3JlYXRlc0Fub255bW91
c1dyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBjYW5E
cm9wQW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmgKaW5kZXggNjJjNWVl
NmViYjQ2ZjUxMGVhMWIyNzgzYjBiOGExYzhhNTE3NzNkMC4uMDg2OGI4MDIxYjMxODRlNWFlNWQy
OWRiZDE1ZTMwNWQ4NGRkZmJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnlUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnlUZXh0LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuQnJlYWtCZWZv
cmUoY29uc3QgTGF6eUxpbmVCcmVha0l0ZXJhdG9yJikgY29uc3Q7CiAgICAKIHByaXZhdGU6Ci0g
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJSdWJ5VGV4dCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5VGV4dCJfczsgfQogICAgIGJvb2wgaXNSdWJ5VGV4dCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgYXZvaWRzRmxvYXRz
KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclBhcnQuaAppbmRleCA3ZGZjNGIzYTVjMjY2ZjJhM2NhNjRkNWM0NzdhYWFjMDI3ZTJi
Y2JmLi5hM2Y4ZTdlOTZjNjJiOTEwYzVmMWZhOTU1OTA2YzU3NTJiYTQ4YjlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKQEAgLTM5LDcgKzM5
LDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgflJlbmRlclNjcm9sbGJhclBhcnQoKTsK
IAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyU2Nyb2xsYmFyUGFydCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTY3JvbGxiYXJQYXJ0Il9zOyB9CiAgICAgCiAg
ICAgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCmluZGV4IDNiYTA1MTA1Nzg4
ZjFmYzc5MGI2YzQxM2U1MjczNDkzN2QzMmE2NzUuLjdiZmJhMGZiNmY3ODhmODA3ZDg1ZDJmY2Zm
NzI2NWI5M2ZkN2VmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbGlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIGRvdWJsZSB2YWx1ZVJhdGlvKCkgY29uc3Q7
CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTbGlkZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU2xpZGVyIl9zOyB9CiAgICAgYm9vbCBp
c1NsaWRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIExheW91dFVu
aXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCmluZGV4
IGM1ZTJiNTkzZjI3NmQ4YzAwZTZlODczMDcwZjEyMTA3ZWI5MGY2NTQuLmMxYjFkYzlhZjdjY2Q2
ZjhmOTAwOWRjYTUzZDdkMmIyZDBjNGVmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5oCkBAIC0yODAsNyArMjgwLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBz
dGF0aWMgUmVuZGVyUHRyPFJlbmRlclRhYmxlPiBjcmVhdGVUYWJsZVdpdGhTdHlsZShEb2N1bWVu
dCYsIGNvbnN0IFJlbmRlclN0eWxlJik7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclRhYmxlIjsgfQorICAgIEFTQ0lJTGl0ZXJh
bCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclRhYmxlIl9zOyB9
CiAKICAgICBib29sIGlzVGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAppbmRleCAzODRiZjg4ZWFl
YjFhZGE5NGEyMDg2MWRlMWVkNzg2MTVmZmRjYTQyLi4xZjhkOTlhMmQ3OTY3N2M5Y2EyYzQ2MDJl
YTFhOGQwNTEwMWQwMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBSZW5kZXJQ
dHI8UmVuZGVyVGFibGVDZWxsPiBjcmVhdGVUYWJsZUNlbGxXaXRoU3R5bGUoRG9jdW1lbnQmLCBj
b25zdCBSZW5kZXJTdHlsZSYpOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIChpc0Fub255bW91cygpIHx8IGlzUHNldWRvRWxlbWVudCgpKSA/
ICJSZW5kZXJUYWJsZUNlbGwgKGFub255bW91cykiIDogIlJlbmRlclRhYmxlQ2VsbCI7IH0KKyAg
ICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIChpc0Fu
b255bW91cygpIHx8IGlzUHNldWRvRWxlbWVudCgpKSA/ICJSZW5kZXJUYWJsZUNlbGwgKGFub255
bW91cykiX3MgOiAiUmVuZGVyVGFibGVDZWxsIl9zOyB9CiAKICAgICBib29sIGlzVGFibGVDZWxs
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNvbC5oCmluZGV4IGE5ZDFjYTg2NTFkYjg1YzcwZTk0MjVjMzI4YTli
MDQ3ZWE5OTZhNTAuLjhlN2MxZmI5Y2EyZDI2MWQwZTY0YmJlNzQ1MzZkZjhhMmU3NDEwMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJSZW5kZXJUYWJsZUNvbCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJUYWJsZUNvbCJfczsgfQogICAgIGJvb2wgaXNS
ZW5kZXJUYWJsZUNvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lk
IGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCmlu
ZGV4IGJhN2VjMDllNzFmYjg5NmUyMGJiMTFmYTNmMjNlYWVjMDc4NDY1NzUuLjk0MjdmNmFjZjcx
OTVhOWViMjZjYTRmMDA0MDIzODBmOGM0NGI3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJUYWJsZVJvdz4gY3JlYXRlVGFibGVSb3dXaXRoU3R5
bGUoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpOwogCi0gICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIChpc0Fub255bW91cygpIHx8IGlzUHNl
dWRvRWxlbWVudCgpKSA/ICJSZW5kZXJUYWJsZVJvdyAoYW5vbnltb3VzKSIgOiAiUmVuZGVyVGFi
bGVSb3ciOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAoaXNBbm9ueW1vdXMoKSB8fCBpc1BzZXVkb0VsZW1lbnQoKSkgPyAiUmVuZGVyVGFi
bGVSb3cgKGFub255bW91cykiX3MgOiAiUmVuZGVyVGFibGVSb3ciX3M7IH0KIAogICAgIGJvb2wg
Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZv
aWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKElzSW50ZXJuYWxNb3ZlKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAppbmRleCA4NWNiMTJk
YjkzYmIxOTJhZmI2NTZiMTYxNGQyOWYyZGQ2M2VlMTRhLi41NDMzNDc0NWI0ZThhNjljMjg3MjAw
Y2YzMGNkMjg3MzI4NGRhODIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlU2VjdGlvbi5oCkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRG9O
b3RJbmNsdWRlQWxsSW50ZXJzZWN0aW5nQ2VsbHMKICAgICB9OwogCi0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIChpc0Fub255bW91cygpIHx8IGlz
UHNldWRvRWxlbWVudCgpKSA/ICJSZW5kZXJUYWJsZVNlY3Rpb24gKGFub255bW91cykiIDogIlJl
bmRlclRhYmxlU2VjdGlvbiI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIChpc0Fub255bW91cygpIHx8IGlzUHNldWRvRWxlbWVudCgpKSA/
ICJSZW5kZXJUYWJsZVNlY3Rpb24gKGFub255bW91cykiX3MgOiAiUmVuZGVyVGFibGVTZWN0aW9u
Il9zOyB9CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4
IDE5OTExOTY4MTEyYTg2M2Q5MWJmZTE0OTZmMDQzODIwMWVhODc2N2IuLmVlOGI0NWQ3ZjMzYjNk
YThhZWQ0YmQ4ZGUxYWQ0NWZlNjVlOWI0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKQEAgLTIyMSw5ICsyMjEsOSBAQCBSZW5kZXJUZXh0Ojp+UmVuZGVyVGV4dCgp
CiAgICAgQVNTRVJUKCFvcmlnaW5hbFRleHRNYXAoKS5jb250YWlucyh0aGlzKSk7CiB9CiAKLWNv
bnN0IGNoYXIqIFJlbmRlclRleHQ6OnJlbmRlck5hbWUoKSBjb25zdAorQVNDSUlMaXRlcmFsIFJl
bmRlclRleHQ6OnJlbmRlck5hbWUoKSBjb25zdAogewotICAgIHJldHVybiAiUmVuZGVyVGV4dCI7
CisgICAgcmV0dXJuICJSZW5kZXJUZXh0Il9zOwogfQogCiBUZXh0KiBSZW5kZXJUZXh0Ojp0ZXh0
Tm9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCA5MjQ0
NjcyMTYwMmZlMjlkN2VlOTdhYTczZjkwY2EzOGM1OTJjODg2Li4xNjJkMTU5MmY0YTc4YmEzZjM0
OTczY2NlODM1YTVmOGU5Mjg4MTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmgKQEAgLTE5Niw3ICsxOTYsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFJlbmRlclRl
eHQoTm9kZSYsIGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
LmgKaW5kZXggMmU5MDUzNGZmZDhkYTgzYjdkYzU0ZDQ2ZmE3ZGVmMTYzMTliYmI0My4uZmFjOTQw
MjgyMDcwMjk4OWJmNzJlZDI0MjU2NzhiZmI4MmJkNjUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJvdGVjdGVk
OgogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyVGV4
dENvbnRyb2wiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyVGV4dENvbnRyb2wiX3M7IH0KICAgICBib29sIGlzVGV4dENvbnRy
b2woKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBjb21wdXRlSW50cmlu
c2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQm
IG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDI2Y2QzMmE1NGQ2NzJlZDYwMzA1ODFiOTI2Y2Q0
ZTZmNDBjZjMxNjQuLjY3NDQwYjg4MWQ1ZTNiYjk3NzQxZDRiYTE2ZDYxNGJkYTg4YjY5NTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTEz
MCw5ICsxMzAsOSBAQCBzdGF0aWMgdm9pZCBwcmludEJvcmRlclN0eWxlKFRleHRTdHJlYW0mIHRz
LCBjb25zdCBCb3JkZXJTdHlsZSBib3JkZXJTdHlsZSkKIHN0YXRpYyBTdHJpbmcgZ2V0VGFnTmFt
ZShOb2RlKiBuKQogewogICAgIGlmIChuLT5pc0RvY3VtZW50Tm9kZSgpKQotICAgICAgICByZXR1
cm4gIiI7CisgICAgICAgIHJldHVybiAiIl9zOwogICAgIGlmIChuLT5ub2RlVHlwZSgpID09IE5v
ZGU6OkNPTU1FTlRfTk9ERSkKLSAgICAgICAgcmV0dXJuICJDT01NRU5UIjsKKyAgICAgICAgcmV0
dXJuICJDT01NRU5UIl9zOwogICAgIHJldHVybiBuLT5ub2RlTmFtZSgpOwogfQogCkBAIC0yMTQs
NyArMjE0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGhhc05vbkVtcHR5U2libGluZyhjb25zdCBS
ZW5kZXJJbmxpbmUmIGlubGluZVJlbmRlcmVyKQogCiB2b2lkIFJlbmRlclRyZWVBc1RleHQ6Ondy
aXRlUmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3QmIG8sIE9w
dGlvblNldDxSZW5kZXJBc1RleHRGbGFnPiBiZWhhdmlvcikKIHsKLSAgICB0cyA8PCBvLnJlbmRl
ck5hbWUoKTsKKyAgICB0cyA8PCBvLnJlbmRlck5hbWUoKS5jaGFyYWN0ZXJzKCk7CiAKICAgICBp
ZiAoYmVoYXZpb3IuY29udGFpbnMoUmVuZGVyQXNUZXh0RmxhZzo6U2hvd0FkZHJlc3NlcykpCiAg
ICAgICAgIHRzIDw8ICIgIiA8PCAmbzsKQEAgLTQ1MSwxMyArNDUxLDEzIEBAIHZvaWQgUmVuZGVy
VHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRl
ck9iamVjdCYgbywKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHN3aXRjaCAo
dGV4dFswXSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIGJ1bGxldDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRleHQgPSAiYnVsbGV0IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHQgPSAiYnVsbGV0Il9zOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgYmxhY2tTcXVhcmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
ZXh0ID0gImJsYWNrIHNxdWFyZSI7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gImJs
YWNrIHNxdWFyZSJfczsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICBjYXNlIHdoaXRlQnVsbGV0OgotICAgICAgICAgICAgICAgICAgICAgICAgdGV4
dCA9ICJ3aGl0ZSBidWxsZXQiOworICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9ICJ3aGl0
ZSBidWxsZXQiX3M7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBxdW90ZUFu
ZEVzY2FwZU5vblByaW50YWJsZXModGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlkZW8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWRlby5oCmluZGV4IGI0YmExZTU5ZGMxM2M3NzcxMWRmN2Y4NDFlNmRlMjk0NzBmZTgyYjAuLmQ0
YzY0NDQ5NzlhM2RiMGZiZjhmNjE3MjBlYWVlZmRjY2MyYWI0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWRlby5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqKSBmaW5hbDsK
IAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVu
ZGVyVmlkZW8iOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiUmVuZGVyVmlkZW8iX3M7IH0KIAogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzVmlkZW8oKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRl
eCAxNzE2NzMzOGY2YzJkMGJjNGY4ZDRlMmU2OTU3OTRiNTYwYzE4MDNmLi5hMWI0ZTVjNzQ3MjUx
ZmU5OWEyOWYxNzk2ZTBkNTRkNGE5NmU0MmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFJlbmRlclZpZXcoRG9jdW1l
bnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJWaWV3KCk7CiAKLSAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclZp
ZXciOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyVmlldyJfczsgfQogCiAgICAgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggMmZjOGExNmIxM2IwMDRlOWEx
ZGU1Y2U0ZDk3N2Y0MjI2Y2RhMTNhYS4uNmE5M2MwZjVlNDI1YTM3MmYwYTA5N2MzN2M0NjI0ZmZj
ZjE1NzgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MQmxvY2suaApAQCAtOTAsNyArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6
CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTEJsb2NrKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyTWF0aE1MQmxvY2siOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MQmxvY2siX3M7IH0KICAgICBib29s
IGF2b2lkc0Zsb2F0cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGNh
bkRyb3BBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2b2lkIGxheW91dEl0ZW1zKGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CkBAIC0xMTIsNyAr
MTEyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxUYWJs
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTFRhYmxlIjsgfQorICAgIEFT
Q0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhN
TFRhYmxlIl9zOyB9CiAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVmPE1hdGhNTFN0eWxlPiBtX21hdGhNTFN0eWxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxGZW5jZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RmVuY2VkLmgKaW5kZXggYjlkYzFjZDcyNjI0ZDMwODdiZjFjN2FhNGU0ODgyZWQyYTkzZTllMC4u
YWI3ZjczNGYwMzg4N2ZhMzRhZGExYmE3OTJiN2Y3OWViNjc5NzQ2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCkBAIC01
MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1M
RmVuY2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MRmVuY2VkIjsgfQor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRl
ck1hdGhNTEZlbmNlZCJfczsgfQogCiAgICAgU3RyaW5nIG1fb3BlbjsKICAgICBTdHJpbmcgbV9j
bG9zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MRnJhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MRnJhY3Rpb24uaAppbmRleCBmODc1NjI3ZjQ4YTI1NWRkMTcxY2U5MTM4NjgzYWE2MTc5
ZDE5MjcwLi4xMDRiMjdhNzNlOTFiMjEyY2U0MDRlZDFkMWUwNzExNjFkYzFkMWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFj
dGlvbi5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGlz
UmVuZGVyTWF0aE1MRnJhY3Rpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRo
TUxGcmFjdGlvbiI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJSZW5kZXJNYXRoTUxGcmFjdGlvbiJfczsgfQogCiAgICAgdm9pZCBjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocygpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE1hdGguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MTWF0aC5oCmluZGV4IGZiZDc5ZmQ0ZTNkZjAzNzE0ZjAxZGUwY2JlNmExNmVhZjIwMDM1MDEu
LjNlOGE1NzMxYzNhOGYxMDgxNWE2ZGU3ZjBhMGM5MWUwM2M0ZDMzYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MTWF0
aCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1hdGgiOyB9CisgICAgQVND
SUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1M
TWF0aCJfczsgfQogCiAgICAgdm9pZCBjZW50ZXJDaGlsZHJlbihMYXlvdXRVbml0IGNvbnRlbnRX
aWR0aCk7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91
dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwX2x1KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaAppbmRleCBk
MWRlNzU0ZGUyNWRmNTA1MDk1MDdjOTMxYjFhMDY5OTVjOGIyZTU5Li5iYWRkMzU4OTE3NzZkZWE1
ZDBjOWVkNjE3MDU2YjUyNDhhNmY4NzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oCkBAIC0zOSw3ICszOSw3IEBA
IHB1YmxpYzoKICAgICBSZW5kZXJNYXRoTUxNZW5jbG9zZShNYXRoTUxNZW5jbG9zZUVsZW1lbnQm
LCBSZW5kZXJTdHlsZSYmKTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1lbmNsb3NlIjsgfQorICAgIEFT
Q0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhN
TE1lbmNsb3NlIl9zOyB9CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygp
IGZpbmFsOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlv
dXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgZmluYWw7CiAgICAgdm9pZCBwYWludChQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCmluZGV4IDUy
MTgxYjQ2ZDBjZGJlN2I0NWNmZDdmOWYzMWZiYWEyNzEyZTlkMjUuLjY5ZjA1MDk3ODM5MDEzNTZk
NWRiYzA5NTUwODg1ZmVmYjZiODllN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKQEAgLTc0LDcgKzc0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5
b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBfbHUpIGZpbmFsOwogICAgIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBmaW5hbDsKIAotICAgIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc0Fub255bW91cygpID8gIlJlbmRl
ck1hdGhNTE9wZXJhdG9yIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJNYXRoTUxPcGVyYXRvciI7IH0K
KyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGlzQW5v
bnltb3VzKCkgPyAiUmVuZGVyTWF0aE1MT3BlcmF0b3IgKGFub255bW91cykiX3MgOiAiUmVuZGVy
TWF0aE1MT3BlcmF0b3IiX3M7IH0KICAgICB2b2lkIHBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBm
b3JTZWxmLCBjb25zdCBMYXlvdXRQb2ludCYsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNl
UHJpbnRSZWN0KSBmaW5hbDsKICAgICBib29sIGlzUmVuZGVyTWF0aE1MT3BlcmF0b3IoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0ludmlzaWJsZU9wZXJhdG9yKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFBhZGRlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxQYWRkZWQuaAppbmRleCA3NDg4NWYzNGEzYTZhMDVmYTk3Yzk5MzlkM2VhNWM4NGM2YTFh
NzczLi41MTZiNjAzMTA1OTc1MDRmN2YxMTRmMzI4OWI0NmZiMzIwYzkwNWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmgK
QEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIFJlbmRlck1hdGhNTFBhZGRlZChNYXRoTUxQ
YWRkZWRFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxQYWRkZWQi
OyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
UmVuZGVyTWF0aE1MUGFkZGVkIl9zOyB9CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFBhZGRlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKaW5kZXggOTBjYWUwYTI1ZTQyODU1NDBlODViZDc0
NDI1N2QyZmIzMDk3ZTY0ZC4uYTIzY2ZiMDZmZDRkNjZmN2E4MGY5MWIxNmMyZmE5YTI0ZDg5NmMz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJCb3gmIGdldEJh
c2UoKSBjb25zdDsKICAgICBSZW5kZXJCb3gmIGdldEluZGV4KCkgY29uc3Q7CiAgICAgYm9vbCBp
c1JlbmRlck1hdGhNTFJvb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxS
b290IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gIlJlbmRlck1hdGhNTFJvb3QiX3M7IH0KICAgICBNYXRoTUxSb290RWxlbWVudCYgZWxlbWVu
dCgpIGNvbnN0OwogICAgIFJvb3RUeXBlIHJvb3RUeXBlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCmluZGV4IDM3YmI2
MGFhNzY3NTJkZTEyNjQwNjE5OTgxNDk3NjgzMDFlODk1MjYuLjgyMjVkNzU3MTY2MDFjY2ZlYTE3
ODk0NTEwOWJjZDhkMzc0ZDI3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaApAQCAtNTEsNyArNTEsNyBAQCBwcm90ZWN0ZWQ6CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFJvdygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlck1hdGhNTFJvdyI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxSb3ciX3M7IH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKaW5kZXggYWRiOTJmZTQ4NGJmMjBiMGVk
Y2ZhOGJkYmQxNWMwYTA5OTg0NTMyMy4uY2QzOTQzMTllOWE0NDg4MzM3OWZhNGI1Zjk2ZWM3Y2Zm
NWZjMTZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTY3JpcHRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTY3JpcHRzLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiBwcm90ZWN0
ZWQ6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFNjcmlwdHMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJNYXRoTUxTY3JpcHRzIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTFNjcmlwdHMiX3M7
IH0KICAgICBNYXRoTUxTY3JpcHRzRWxlbWVudDo6U2NyaXB0VHlwZSBzY3JpcHRUeXBlKCkgY29u
c3Q7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBh
Z2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKaW5kZXggMTk1OTI4NjQ5YTUx
OWEwOWYxMmZjYmQ2ZTg1YzU0Y2FjNTE2NTU5Zi4uMTEzNTNhMzIzMzgyZTc1NzhiYjhmOGQxMzA0
YjJjNmM1MDU4MTUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU3BhY2UuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgTWF0
aE1MU3BhY2VFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0
aE1MU3BhY2VFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCiBwcml2YXRlOgot
ICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVy
TWF0aE1MU3BhY2UiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiUmVuZGVyTWF0aE1MU3BhY2UiX3M7IH0KICAgICBib29sIGlzUmVuZGVyTWF0
aE1MU3BhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0NoaWxk
QWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxUb2tlbi5oCmluZGV4IGY4MzllZWMwMzUxMjk1ZDg2YzE0MjYyNDMyMDQyODA3
Mjg2Yjc5YTIuLjNlZjc3NTY1MjdmNjdkOWVjMjliMjIwMGNkOGU4YjQ3NWJkYThiMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2Vu
LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNS
ZW5kZXJNYXRoTUxUb2tlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhN
TFRva2VuIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlck1hdGhNTFRva2VuIl9zOyB9CiAgICAgYm9vbCBpc0NoaWxkQWxsb3dl
ZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH07CiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2Us
IGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVN
YXRoVmFyaWFudEdseXBoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAppbmRleCAzY2FlNmMyY2Y3YmNhMGIzZmI1
ZDA3OGMwNjg5ZWYxNTgxNWE4NzFmLi5hYjQyYmM2YzUwM2I1ZGMzNDMzNzYwYmU4ZTA1M2NkNzU4
YzdkNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFVuZGVyT3Zlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MU2NyaXB0cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFVuZGVyT3ZlcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTFVuZGVyT3ZlciI7IH0KKyAgICBBU0NJSUxpdGVyYWwg
cmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxVbmRlck92ZXIi
X3M7IH0KICAgICBNYXRoTUxVbmRlck92ZXJFbGVtZW50JiBlbGVtZW50KCkgY29uc3Q7CiAKICAg
ICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAppbmRl
eCBjMWI4YzRhMzMyYjkyZWY2ODkwY2ZmZTZkMjY3NjZmYjlhZjJkODZlLi45ZjZhYzAzYzczOThk
MTQ2MzZmYjc1NTQ3YTI0ZGM1MmMxMGIwMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tTaGFwZUltYWdlT3JpZ2luKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3R5bGVJbWFnZSYgcwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNv
bnN0IFVSTCYgdXJsID0gY2FjaGVkSW1hZ2UudXJsKCk7Ci0gICAgU3RyaW5nIHVybFN0cmluZyA9
IHVybC5pc051bGwoKSA/ICInJyIgOiB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KCk7CisgICAgU3RyaW5nIHVybFN0cmluZyA9IHVybC5pc051bGwoKSA/ICInJyJfcyA6IHVybC5z
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKTsKICAgICBkb2N1bWVudC5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIlVu
c2FmZSBhdHRlbXB0IHRvIGxvYWQgVVJMICIgKyB1cmxTdHJpbmcgKyAiLiIpOwogCiAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dy
aWRQb3NpdGlvbnNSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
R3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcAppbmRleCAzZGJjYzgyMzQ1MWJlM2Q4NTI3NzA2YWVj
ZGVlZWY5OTljYzU0YTFhLi5lYTNlZTkwNmJmNGNjNDlhZjU2ZjdhYTc3ZDYyNDhhZDQ5MWE5YWUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9u
c1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBv
c2l0aW9uc1Jlc29sdmVyLmNwcApAQCAtMzg5LDEwICszODksMTAgQEAgc3RhdGljIHZvaWQgYWRq
dXN0R3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlk
VHJhY2tTaXoKIAogICAgICAgICBpZiAoaW5pdGlhbFBvc2l0aW9uLmlzQXV0bygpKSB7CiAgICAg
ICAgICAgICAvLyBTZXQgaW5pdGlhbCBwb3NpdGlvbiB0byBzcGFuIDxsaW5lIG5hbWVzIC0gMT4K
LSAgICAgICAgICAgIGluaXRpYWxQb3NpdGlvbi5zZXRTcGFuUG9zaXRpb24oc3RkOjptYXgoMSwg
bGluZUNvdW50IC0gMSksICIiKTsKKyAgICAgICAgICAgIGluaXRpYWxQb3NpdGlvbi5zZXRTcGFu
UG9zaXRpb24oc3RkOjptYXgoMSwgbGluZUNvdW50IC0gMSksIGVtcHR5U3RyaW5nKCkpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gU2V0IGZpbmFsIHBvc2l0aW9uIHRvIHNwYW4g
PGxpbmUgbmFtZXMgLSAxPgotICAgICAgICAgICAgZmluYWxQb3NpdGlvbi5zZXRTcGFuUG9zaXRp
b24oc3RkOjptYXgoMSwgbGluZUNvdW50IC0gMSksICIiKTsKKyAgICAgICAgICAgIGZpbmFsUG9z
aXRpb24uc2V0U3BhblBvc2l0aW9uKHN0ZDo6bWF4KDEsIGxpbmVDb3VudCAtIDEpLCBlbXB0eVN0
cmluZygpKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR0NvbnRhaW5lci5oCmluZGV4IGE3YWU4NTll
YmY3ZmNlMDc4ZjUxZDVhM2VlZTY2NjdhZDNjMTBlMmYuLmM2MzcwZjJlMGFmYmQ3Mzg1MzM0MDY4
NjY0MGYxOWI2NTY3ODNkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdDb250YWluZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyKFNWR0VsZW1lbnQm
LCBSZW5kZXJTdHlsZSYmKTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHQ29udGFpbmVyIjsgfQorICAgIEFTQ0lJTGl0ZXJh
bCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0NvbnRhaW5l
ciJfczsgfQogCiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVn
YWN5UmVuZGVyU1ZHUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lS
ZW5kZXJTVkdSZWN0LmgKaW5kZXggODk3YzkwNmRhYmY5ZmY5ZDQ2NTQxYTdiMTY4YzJkZGMxYWUz
NjY2My4uODY3YjZjMTQzZDE1YjUwODg0ZjM3Zjc4ZTliOTA3NWVhM2EzZjM4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSZWN0LmgKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVu
dCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZWN0IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1JlY3QiX3M7IH0K
IAogICAgIHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOwogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdXNlUGF0aEZhbGxiYWNrID8gTGVn
YWN5UmVuZGVyU1ZHU2hhcGU6OmlzRW1wdHkoKSA6IG1fZmlsbEJvdW5kaW5nQm94LmlzRW1wdHko
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5k
ZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNW
R1Jvb3QuaAppbmRleCBhNjRiN2JhNGNiZjBlYTczNTk4NzE5NzczZGU0YjRkM2QzYmI5YmU2Li44
NjRhOTBkNmZmNGU5NjBmN2Y5ZGNjZWI2NzQ4MzE2OGE2ZDM3MGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1Jvb3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1Jvb3QuaApAQCAtNjksNyAr
NjksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNMZWdhY3lTVkdSb290KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gSW50ZW50aWFsbHkgbGVmdCAnUmVuZGVyU1ZH
Um9vdCcgaW5zdGVhZCBvZiAnTGVnYWN5UmVuZGVyU1ZHUm9vdCcsIHRvIGF2b2lkIGJyZWFraW5n
IGxheW91dCB0ZXN0cy4KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jvb3QiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUm9vdCJfczsgfQogCiAgICAg
TGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZl
cnJlZCAgPSBDb21wdXRlQWN0dWFsKSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IGNv
bXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBlc3Rp
bWF0ZWRVc2VkV2lkdGggPSBzdGQ6Om51bGxvcHQpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdTaGFwZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdTaGFwZS5oCmluZGV4
IDVkMGNhMTRhOGVjYThlM2RkYzNmZjJjZDY2ZmU5NGYxYmU2Y2NmYjguLmQ4OGFmZTcwNTA1YTU2
NWQ0MjVlMWFiM2RmOWMzMTdjZTQ0ZDk4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1NoYXBlLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBpc0xlZ2FjeVNWR1NoYXBlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlclNWR1NoYXBlIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1NoYXBlIl9zOyB9CiAKICAgICB2
b2lkIGxheW91dCgpIGZpbmFsOwogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0NvbnRhaW5lci5oCmluZGV4IDk3NWE4ZjYyY2QwM2MzMjEzYWJiODU0Y2Y3NGQxNjY1
ZDljOTQ0NWMuLjBhZDBiODM0NjVmOTljMzFlOTVhYTNjNzk3NTlhZTM3NzhmYjMwMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaApA
QCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyU1ZHQ29udGFp
bmVyKFNWR0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHQ29udGFpbmVyIjsgfQor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR0NvbnRhaW5lciJfczsgfQogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCmluZGV4IDg4NTMw
ZGMxZTdhZDRiZDQ1MDNhNWM1YzY2MTY4OGUyNDJlMmZjNDMuLjk3ZWE2MjdjMmFjODc1MDdiNGJh
ZmMxYjljZDdlOTcxODAyYjRkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHRWxsaXBzZS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5SZW5kZXJTVkdFbGxpcHNlKCk7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdFbGxpcHNlIjsgfQor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR0VsbGlwc2UiX3M7IH0KIAogICAgIHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVudCgp
IG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
dXNlUGF0aEZhbGxiYWNrID8gTGVnYWN5UmVuZGVyU1ZHU2hhcGU6OmlzRW1wdHkoKSA6IG1fZmls
bEJvdW5kaW5nQm94LmlzRW1wdHkoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAppbmRleCA4NGIxNWQ0NjcyYWEwOTU0
MjNjNzZlZTEyMmU1MmM5ZjVjYTViMGE1Li5lZGIxZjk3MGRiMWJjODljM2Q2ZjNkODJmMThkMzVm
MjM5MzQxYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ZvcmVpZ25PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ZvcmVpZ25PYmplY3QuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZvaWQgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7Ci0gICAg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJT
VkdGb3JlaWduT2JqZWN0IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0ZvcmVpZ25PYmplY3QiX3M7IH0KIAogICAgIHZv
aWQgdXBkYXRlTG9naWNhbFdpZHRoKCkgb3ZlcnJpZGU7CiAgICAgTG9naWNhbEV4dGVudENvbXB1
dGVkVmFsdWVzIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwg
TGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCmluZGV4IDI0Njhk
YzcwYTQ2YzkzNzYyMTc1NjFhOTAzNTVkOWExOTg4ZmRlYWUuLjk4MmVlZTNjMzI5ODFhZTVjNzRl
ZWQ4YzQ2OGU4ZmMxYjA3YzkwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRl
c3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogICAgIGJvb2wgaXNTVkdHcmFkaWVudFN0b3AoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdHcmFkaWVudFN0b3AiOyB9CisgICAgQVNDSUlM
aXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHR3Jh
ZGllbnRTdG9wIl9zOyB9CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIG92ZXJyaWRlIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKaW5kZXggNjdiOWE0MDQxMjQw
YTAwZjU3ZDhlZTE4MTJkMmI2MzVkZDFkZDA4NC4uMGQ4MWJmMzc5NjdlZWRmOGMyYzY1MThiZGM4
MjQ3NDQ2ZTY1MTYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCkBAIC0zNyw3ICszNyw3IEBAIHByb3RlY3Rl
ZDoKIAogcHJpdmF0ZToKICAgICBib29sIGlzU1ZHSGlkZGVuQ29udGFpbmVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIjsgfQorICAgIEFTQ0lJ
TGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0hp
ZGRlbkNvbnRhaW5lciJfczsgfQogCiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmgKaW5kZXggN2QxMGEyMjExMGJlMTg1ZjFhOTFkMjNlOGVkMDZiZWVkY2Fi
YzA3Yi4uMTEwZGM1NGE5OGY2NzQ4NmI0NDg4MmZhZjM4NDlmYjlkM2E3MmY3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAtNTYsNyArNTYs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAg
ICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRl
clNWR0ltYWdlIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclNWR0ltYWdlIl9zOyB9CiAgICAgYm9vbCBpc1NWR0ltYWdlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVu
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKaW5kZXggNWM1ZjY3ZDZmZmFmZWExMWE0
NDRkMzA1ZWJlZjU4ZDAyYzA1MDBiMi4uMjAwMDE0Nzc1Y2VlODI1ZDFkYWZiYTRkOTQwZTJiOGQw
MjMyNzU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lu
bGluZS5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVt
ZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0lubGluZSI7IH0KKyAgICBBU0NJSUxpdGVy
YWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdJbmxpbmUi
X3M7IH0KICAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIGJvb2wgaXNTVkdJbmxpbmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmgKaW5kZXggZTAzYjc0N2IwNzlkOWMzYzk4M2I4NTM5YmVlZTE1MjE2NTU3ZDZjMi4uNDU5
ZTM0OGNhMWU3M2MxZDI3ZGYwM2QyMWUzODRjNDI4NDEwNjQzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmgKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIFNWR0lubGluZVRleHRCb3gqIGZpcnN0VGV4dEJveCgpIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHSW5saW5lVGV4dCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdJbmxpbmVUZXh0Il9z
OyB9CiAKICAgICBTdHJpbmcgb3JpZ2luYWxUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRSZW5kZXJlZFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCmluZGV4IDZhYzJhZDliOWU5ZGQyOTU5
YWVmYzRmNzlhYzk4ZTE2MzgxMGEwZTguLjhlMDM1Y2ZkMTRjYWQ2ZmY4NDNkNzI5NGY3ZDdiZWFi
Yjg5NWY3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0
aC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGlzU1ZH
UGF0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1BhdGgiOyB9Cisg
ICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyU1ZHUGF0aCJfczsgfQogCiAgICAgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3Zl
cnJpZGU7CiAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VCb3VuZGluZ0JveCgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaApp
bmRleCBkYWU1ODRiYzliMjkzODljOGY1MGI1ZTEwN2U2YmNkNDYxYjlhY2Y1Li43NWQ3ZGVlYWIx
NWZhZGJjZjM2ZDc0Mjg4ZDM4Y2FiMzA1YWJhM2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZvaWQgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNW
R1JlY3QiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyU1ZHUmVjdCJfczsgfQogCiAgICAgdm9pZCB1cGRhdGVTaGFwZUZyb21F
bGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBSZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgpIDogbV9m
aWxsQm91bmRpbmdCb3guaXNFbXB0eSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAppbmRleCA4ZmNkOWI0ZWM1
ZmJlMWRiMTZkZGY0YmNlNDc4NGY2NjJhZjNkMmJkLi5iMDkwMzFlNTYwYjM2NTE3YmI0YmRlZDE2
OGY5N2E2MWQwZTkyZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyIl9zOyB9CiAgICAgYm9vbCBpc1NW
R1Jlc291cmNlQ2xpcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IGJvb2wgcGF0aE9ubHlDbGlwcGluZyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBlZmZlY3RpdmVab29tKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
aAppbmRleCBjZjNmNmJhNDkwN2ZhYjJlZjI5MGM0MWNiNDU2NzU3ZDAyOTMzYjFkLi44YTA3Mjg4
NmZhOTZlMmQ4N2UyOGNjZjhiMzQ2OTU5ODQ2OGI1YjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCkBAIC04Niw3
ICs4Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBk
ZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmlsdGVy
Il9zOyB9CiAgICAgYm9vbCBpc1NWR1Jlc291cmNlRmlsdGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBzdGQ6OnVuaXF1ZV9w
dHI8RmlsdGVyRGF0YT4+IG1fcmVuZGVyZXJGaWx0ZXJEYXRhTWFwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZS5oCmluZGV4IDE2MjQ4Mzc3MTk0ZWMyNDI4MDVlNWQ0M2NmOWEzYWEyMjIwMGY0
MGIuLjdjMTJhYjVhMmU1OTUzZmEyYjgxYmRlMWVkMjI5YWMzNDI3NWNmNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmlt
aXRpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3Zl
cnJpZGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlIjsgfQorICAgIEFTQ0lJTGl0
ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlIl9zOyB9CiAKICAgICBpbmxpbmUgdm9pZCBwcmltaXRpdmVBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGlu
ZWFyR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VMaW5lYXJHcmFkaWVudC5oCmluZGV4IGVjNGFjNmI5ZDIxODk4NWJmOWY0NzM2NGVlZDc4
NjMwYzYxYjdkNmUuLjk3ZDFjNTI2OTQxNjMyOGY0NGIxNTY2MGRlMzkyZDVjN2FhNTk3OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VM
aW5lYXJHcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGdyYWRpZW50RWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJj
ZUxpbmVhckdyYWRpZW50IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQiX3M7IH0KIAog
ICAgIExpbmVhckdyYWRpZW50QXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5o
CmluZGV4IGVmZTgwZTk1YzkxYzgxZDk4YzZhNDI1Yjk3YjEyYzA0ODFlZWVkYjEuLmU0ZjZiZjIw
MjliMDdkNTc5MTU0NDMwMmZjNWQ4NDg0OTEzN2ZhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmgKQEAgLTYyLDcg
KzYyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRl
bGV0ZTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIi
X3M7IH0KIAogICAgIC8vIEdlbmVyYXRlcyBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCB1c2FibGUg
dG8gcmVuZGVyIG1hcmtlciBjb250ZW50LiBIYW5kbGVzIHNjYWxpbmcgdGhlIG1hcmtlciBjb250
ZW50CiAgICAgLy8gYWNvcmRpbmcgdG8gU1ZHcyBtYXJrZXJVbml0cz0ic3Ryb2tlV2lkdGgiIGNv
bmNlcHQsIHdoZW4gYSBzdHJva2VXaWR0aCB2YWx1ZSAhPSAtMSBpcyBwYXNzZWQgaW4uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmgKaW5kZXggZjEzM2Y3NTExOTY4YWExNDFiNGI1ZWUxNjcwNTFhYzkwODg1MTBjNC4uNmVi
MWQ1NDk3MjNkZWU5YjRlNjY3Nzc2ODhkODhmMjNmNmRhOGU2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaApAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0
ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciI7IH0KKyAgICBBU0NJSUxpdGVyYWwg
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlciJfczsgfQogCiAgICAgYm9vbCBkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0
YSosIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlck9iamVjdCopOwogICAgIHZv
aWQgY2FsY3VsYXRlTWFza0NvbnRlbnRSZXBhaW50UmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKaW5kZXgg
ZjZjZjIyNjBmYzNmMjY2NTVlMGQxZmYyNGZhYzM4YWE4N2ViNjU4ZC4uNTc1Y2U2NzVlODRiYWZi
MDA0YzgxMDdjZjU2YmRmNjUzYTc1ZGJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCkBAIC01OCw3ICs1OCw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0
ZTsKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlclNWR1Jlc291cmNlUGF0dGVybiI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4iX3M7
IH0KIAogICAgIGJvb2wgYnVpbGRUaWxlSW1hZ2VUcmFuc2Zvcm0oUmVuZGVyRWxlbWVudCYsIGNv
bnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiwgY29uc3QgU1ZHUGF0dGVybkVsZW1lbnQmLCBGbG9hdFJl
Y3QmIHBhdHRlcm5Cb3VuZGFyaWVzLCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9y
bSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKaW5kZXggYTY2OTEyNDI3ZGYz
M2ZiMjkyZWQ1NWY2ZjEyNGJkZjM3M2VhNzZiOS4uM2FiNGIyYjVhZTk0ODdiMzllNzRmNzVhMTQw
YmYzNTRiZmM3N2JhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZ3JhZGllbnRFbGVtZW50KCkgY29uc3QgPSBkZWxl
dGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IlJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJl
bmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxH
cmFkaWVudCJfczsgfQogICAgIGJvb2wgY29sbGVjdEdyYWRpZW50QXR0cmlidXRlcygpIGZpbmFs
OwogCiAgICAgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggNDNjMTJlYTgyNmUx
OWM3MjZkOWRiOTQxMTYyNDEwMTY3OGU2NTA1ZS4uMjRjMzBiY2E3YjY1YmU1MDRkYTllZDhkNmVi
Zjc1OWRmMWFjNTdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmgKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBj
b25zdCA9IGRlbGV0ZTsKIAogICAgIGJvb2wgaXNTVkdSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHUm9vdCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSb290Il9zOyB9CiAgICAgYm9v
bCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
Ly8gVG8gcHJldmVudCBjZXJ0YWluIGxlZ2FjeSBjb2RlIHBhdGhzIHRvIGhpdCBhc3NlcnRpb25z
IGluIGRlYnVnIGJ1aWxkcywgd2hlbiBzd2l0Y2hpbmcgb2ZmIExCU0UgKGR1cmluZyB0aGUgdGVh
cmRvd24gb2YgdGhlIExCU0UgdHJlZSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1NoYXBlLmgKaW5kZXggYTIzZDlhZDI5OGUwMjkxMTM5ODZjNTkwMWI0MzUxNWUx
ZDllNDJiMC4uZDJhMzM2Y2ZhOGFmYjUwYmMxMDg1MTBlMTRlYjM3YmMwMWJlZTYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaApAQCAtMTA2LDcg
KzEwNiw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzU1ZHU2hhcGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHU2hhcGUiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHU2hhcGUiX3M7IH0KIAog
ICAgIHZvaWQgbGF5b3V0KCkgZmluYWw7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUU3Bhbi5oCmluZGV4IDFiYmFlYjM3MmJjNjdhNTQ3NDkyMjUzNGVkMjdiOTFjNWJk
N2I3YWYuLmViOTE0ZGJjODYwMjhiMzRmOTk1NWQ0OTgyMTEzMzgwNjlkMWRjNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKQEAgLTM3LDcgKzM3
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZ3JhcGhpY3NFbGVtZW50KCkgY29u
c3QgPSBkZWxldGU7Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTVkdUU3BhbiI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdUU3BhbiJfczsgfQogICAgIGJv
b2wgaXNTVkdUU3BhbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5kZXggMzJjNmUx
MjQ4MzY3YzU1NTM3MTcyNGQ0ZTczYzZhYmIzMDhjM2QxMS4uNDQxMjY5ODg1NzkxMzAyNDI4MmZm
ZjBhOGU2NjUxYjZiN2YxY2RjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2
b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdUZXh0IjsgfQor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR1RleHQiX3M7IH0KICAgICBib29sIGlzU1ZHVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UG9pbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dFBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dFBhdGguaAppbmRleCBkNjYzMGMyNWU0ZmMyODMwZDFjYmIxYzM1Mjg5ODQ2MDhm
YWU0NmRiLi4xOTZhMjQ3MmVhYmE5YWMxZGUwZGI2OTVmYjk5YjJkMGJkOGI3MmFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCkBAIC00
NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBncmFwaGljc0VsZW1lbnQoKSBjb25zdCA9
IGRlbGV0ZTsKIAogICAgIGJvb2wgaXNTVkdUZXh0UGF0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlclNWR1RleHRQYXRoIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJO
YW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1RleHRQYXRoIl9zOyB9CiAK
ICAgICBQYXRoIG1fbGF5b3V0UGF0aDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKaW5kZXggM2VlM2Jj
MTQ2OWQ0ZjQyZWJhODhmNDc1OTQ1ZTc4NGVjZmUzYWFkYy4uYjg0MTYxZGYwY2FkNTZiMTM1ZjA1
YmQ2N2FlM2NkNDhkNTcxZmVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaApAQCAtNDksNyArNDksNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCiAgICAgYm9v
bCBpc1NWR1ZpZXdwb3J0Q29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIi
X3M7IH0KIAogICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0Owog
ICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUb1BhcmVudFRyYW5zZm9ybTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdDb250YWluZXJMYXlvdXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdDb250YWluZXJMYXlvdXQuY3BwCmluZGV4
IDkxMDUwZjk0MWE5YWFlOTRmOTk0NDJkOTNiNmMzMmEyYmY4ODNiMTcuLjgxM2MzZWNlZjkzOGJk
YTQ4NjQ0NGQ0YWY3MDhkOTdjYjczY2VhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHQ29udGFpbmVyTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0NvbnRhaW5lckxheW91dC5jcHAKQEAgLTIwNiwxMCArMjA2LDEwIEBA
IHZvaWQgU1ZHQ29udGFpbmVyTGF5b3V0Ojp2ZXJpZnlMYXlvdXRMb2NhdGlvbkNvbnNpc3RlbmN5
KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlCiAKICAgICAgICAgYXV0byBpbml0aWFsTGF5b3V0TG9j
YXRpb24gPSBmbG9vcmVkTGF5b3V0UG9pbnQocmVuZGVyZXIub2JqZWN0Qm91bmRpbmdCb3goKS5t
aW5YTWluWUNvcm5lcigpKTsKICAgICAgICAgaWYgKGV4cGVjdGVkTGF5b3V0TG9jYXRpb24gPT0g
aW5pdGlhbExheW91dExvY2F0aW9uKSB7Ci0gICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU1ZH
LCBzdHJlYW0gPDwgIi0tPiBTVkdDb250YWluZXJMYXlvdXQgcmVuZGVyZXIgIiA8PCAmcmVuZGVy
ZXIgPDwgIiAoIiA8PCByZW5kZXJlci5yZW5kZXJOYW1lKCkgPDwgIikiCisgICAgICAgICAgICBM
T0dfV0lUSF9TVFJFQU0oU1ZHLCBzdHJlYW0gPDwgIi0tPiBTVkdDb250YWluZXJMYXlvdXQgcmVu
ZGVyZXIgIiA8PCAmcmVuZGVyZXIgPDwgIiAoIiA8PCByZW5kZXJlci5yZW5kZXJOYW1lKCkuY2hh
cmFjdGVycygpIDw8ICIpIgogICAgICAgICAgICAgICAgIDw8ICIgLSB2ZXJpZnlMYXlvdXRMb2Nh
dGlvbkNvbnNpc3RlbmN5KCkgb2JqZWN0Qm91bmRpbmdCb3ggLyBsYXlvdXRMb2NhdGlvbiBhcmUg
aW4gc3luYy4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIExPR19XSVRIX1NUUkVB
TShTVkcsIHN0cmVhbSA8PCAiLS0+IFNWR0NvbnRhaW5lckxheW91dCByZW5kZXJlciAiIDw8ICZy
ZW5kZXJlciA8PCAiICgiIDw8IHJlbmRlcmVyLnJlbmRlck5hbWUoKSA8PCAiKSIKKyAgICAgICAg
ICAgIExPR19XSVRIX1NUUkVBTShTVkcsIHN0cmVhbSA8PCAiLS0+IFNWR0NvbnRhaW5lckxheW91
dCByZW5kZXJlciAiIDw8ICZyZW5kZXJlciA8PCAiICgiIDw8IHJlbmRlcmVyLnJlbmRlck5hbWUo
KS5jaGFyYWN0ZXJzKCkgPDwgIikiCiAgICAgICAgICAgICAgICAgPDwgIiAtIHZlcmlmeUxheW91
dExvY2F0aW9uQ29uc2lzdGVuY3koKSBvYmplY3RCb3VuZGluZ0JveCAvIGxheW91dExvY2F0aW9u
IGludmFyaWFudCB2aW9sYXRlZCAtLSBvdXQgb2Ygc3luYyBkdWUgdG8gcGFydGlhbCBsYXlvdXQ/
IgogICAgICAgICAgICAgICAgIDw8ICIgY3VycmVudExheW91dExvY2F0aW9uPSIgPDwgY3VycmVu
dExheW91dExvY2F0aW9uCiAgICAgICAgICAgICAgICAgPDwgIiAgKGV4cGVjdGVkTGF5b3V0TG9j
YXRpb249IiA8PCBleHBlY3RlZExheW91dExvY2F0aW9uCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9p
ZCBTVkdDb250YWluZXJMYXlvdXQ6OnZlcmlmeUxheW91dExvY2F0aW9uQ29uc2lzdGVuY3koY29u
c3QgUmVuZGVyRWxlbWVudCYgcmUKIAogI2lmICFkZWZpbmVkKE5ERUJVRykKICAgICBpZiAocmVu
ZGVyZXIuaXNTVkdSb290KCkpIHsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNWRywgc3RyZWFt
IDw8ICItLT4gU1ZHQ29udGFpbmVyTGF5b3V0IHJlbmRlcmVyICIgPDwgJnJlbmRlcmVyIDw8ICIg
KCIgPDwgcmVuZGVyZXIucmVuZGVyTmFtZSgpIDw8ICIpIgorICAgICAgICBMT0dfV0lUSF9TVFJF
QU0oU1ZHLCBzdHJlYW0gPDwgIi0tPiBTVkdDb250YWluZXJMYXlvdXQgcmVuZGVyZXIgIiA8PCAm
cmVuZGVyZXIgPDwgIiAoIiA8PCByZW5kZXJlci5yZW5kZXJOYW1lKCkuY2hhcmFjdGVycygpIDw8
ICIpIgogICAgICAgICAgICAgPDwgIiAtIHZlcmlmeUxheW91dExvY2F0aW9uQ29uc2lzdGVuY3ko
KSBlbmQiKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDg3MzMwMTQ3ZjE0MWMxNmMwOGNl
MDE1ZTc4MTE5MGI4YjY0ZmJiODguLmYxNWU2MzcxNjA0YjhhOTVmN2FiZWE3MjZmNDA3YzlmZjk0
ZmY5ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
VHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJUcmVlQXNUZXh0LmNwcApAQCAtNzUsNyArNzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
Ki8KIGNsYXNzIFRleHRTdHJlYW1TZXBhcmF0b3IgewogcHVibGljOgotICAgIFRleHRTdHJlYW1T
ZXBhcmF0b3IoY29uc3QgU3RyaW5nJiBzKQorICAgIFRleHRTdHJlYW1TZXBhcmF0b3IoVUNoYXIg
cykKICAgICAgICAgOiBtX3NlcGFyYXRvcihzKQogICAgICAgICAsIG1fbmVlZFRvU2VwYXJhdGUo
ZmFsc2UpCiAgICAgewpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZy
aWVuZCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBUZXh0U3RyZWFtU2VwYXJh
dG9yJik7CiAKLSAgICBTdHJpbmcgbV9zZXBhcmF0b3I7CisgICAgVUNoYXIgbV9zZXBhcmF0b3I7
CiAgICAgYm9vbCBtX25lZWRUb1NlcGFyYXRlOwogfTsKIApAQCAtMTc1LDcgKzE3NSw3IEBAIHN0
YXRpYyB2b2lkIHdyaXRlU1ZHUGFpbnRpbmdSZXNvdXJjZShUZXh0U3RyZWFtJiB0cywgY29uc3Qg
UmVuZGVyU1ZHUmVzb3VyY2UmIHJlCiAKIHN0YXRpYyB2b2lkIHdyaXRlU1ZHRmlsbFBhaW50aW5n
UmVzb3VyY2UoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBj
b25zdCBSZW5kZXJTVkdSZXNvdXJjZSYgZmlsbFBhaW50aW5nUmVzb3VyY2UpCiB7Ci0gICAgVGV4
dFN0cmVhbVNlcGFyYXRvciBzKCIgIik7CisgICAgVGV4dFN0cmVhbVNlcGFyYXRvciBzKCcgJyk7
CiAgICAgdHMgPDwgIiBbZmlsbD17IiA8PCBzOwogICAgIHdyaXRlU1ZHUGFpbnRpbmdSZXNvdXJj
ZSh0cywgZmlsbFBhaW50aW5nUmVzb3VyY2UpOwogCkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGlj
IHZvaWQgd3JpdGVTVkdGaWxsUGFpbnRpbmdSZXNvdXJjZShUZXh0U3RyZWFtJiB0cywgY29uc3Qg
UmVuZGVyRWxlbWVudCYgcmUKIAogc3RhdGljIHZvaWQgd3JpdGVTVkdTdHJva2VQYWludGluZ1Jl
c291cmNlKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29u
c3QgUmVuZGVyU1ZHUmVzb3VyY2UmIHN0cm9rZVBhaW50aW5nUmVzb3VyY2UsIGNvbnN0IFNWR0dy
YXBoaWNzRWxlbWVudCYgc2hhcGUpCiB7Ci0gICAgVGV4dFN0cmVhbVNlcGFyYXRvciBzKCIgIik7
CisgICAgVGV4dFN0cmVhbVNlcGFyYXRvciBzKCcgJyk7CiAgICAgdHMgPDwgIiBbc3Ryb2tlPXsi
IDw8IHM7CiAgICAgd3JpdGVTVkdQYWludGluZ1Jlc291cmNlKHRzLCBzdHJva2VQYWludGluZ1Jl
c291cmNlKTsKIApAQCAtNDIyLDcgKzQyMiw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlU3RhbmRhcmRQ
cmVmaXgoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgb2JqZWN0LCBPcHRpCiAg
ICAgaWYgKHdyaXRlSW5kZW50ID09IFdyaXRlSW5kZW50T3JOb3Q6OlllcykKICAgICAgICAgdHMg
PDwgaW5kZW50OwogCi0gICAgdHMgPDwgb2JqZWN0LnJlbmRlck5hbWUoKTsKKyAgICB0cyA8PCBv
YmplY3QucmVuZGVyTmFtZSgpLmNoYXJhY3RlcnMoKTsKIAogICAgIGlmIChiZWhhdmlvci5jb250
YWlucyhSZW5kZXJBc1RleHRGbGFnOjpTaG93QWRkcmVzc2VzKSkKICAgICAgICAgdHMgPDwgIiAi
IDw8ICZvYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGll
bnRBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1
dGVzLmgKaW5kZXggNmZkOTViZDZlZWUzMDJjZTRlNWVmNTE5YzVlMjFhMTY1NzM1NzNjNy4uZmZm
NzE3YTI3YzZkNjFkMzFjMmRkZjVjOTIzYzI1M2YwMzZjOGY2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL0xpbmVhckdyYWRpZW50QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaApAQCAtMjYsNyArMjYsNyBAQCBzdHJ1
Y3QgTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzIDogR3JhZGllbnRBdHRyaWJ1dGVzIHsKICAgICBM
aW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMoKQogICAgICAgICA6IG1feDEoKQogICAgICAgICAsIG1f
eTEoKQotICAgICAgICAsIG1feDIoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIxMDAlIikKKyAgICAg
ICAgLCBtX3gyKFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiMTAwJSJfcykKICAgICAgICAgLCBtX3ky
KCkKICAgICAgICAgLCBtX3gxU2V0KGZhbHNlKQogICAgICAgICAsIG1feTFTZXQoZmFsc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzLmgKaW5kZXggNjEy
M2RiZTkwZjM3NDc2YjFiNGU4Y2NlYmViNzM2MDlkZGQwNzA1OS4uNmNmYzFkZjc1NmRhMDRiNzUy
MGZiMTdjOWFjOGE3ZTdlYjc5YTAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1Jh
ZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9SYWRpYWxH
cmFkaWVudEF0dHJpYnV0ZXMuaApAQCAtMjUsOSArMjUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0cnVjdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMgOiBHcmFkaWVudEF0dHJpYnV0ZXMg
ewogICAgIFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcygpCi0gICAgICAgIDogbV9jeChTVkdMZW5n
dGhNb2RlOjpXaWR0aCwgIjUwJSIpCi0gICAgICAgICwgbV9jeShTVkdMZW5ndGhNb2RlOjpXaWR0
aCwgIjUwJSIpCi0gICAgICAgICwgbV9yKFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiNTAlIikKKyAg
ICAgICAgOiBtX2N4KFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiNTAlIl9zKQorICAgICAgICAsIG1f
Y3koU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiX3MpCisgICAgICAgICwgbV9yKFNWR0xlbmd0
aE1vZGU6OldpZHRoLCAiNTAlIl9zKQogICAgICAgICAsIG1fY3hTZXQoZmFsc2UpCiAgICAgICAg
ICwgbV9jeVNldChmYWxzZSkKICAgICAgICAgLCBtX3JTZXQoZmFsc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCmluZGV4IGUwYTAzMTJjMzc0ZmE3MGJiNDQwNDk2MTMzZDNk
N2EyMGI0OWZkYTkuLjgwZTkzZmM4OTM2MThhMzAyNzNmNTJhODJiNjgwYmQ0OTgxNTJmNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCkBAIC0xMjMsMTMgKzEyMywxMyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gU1ZHRml0VG9WaWV3Qm94OjpwYXJzZQogCiAgICAgICAgIC8vIENoZWNrIHRoYXQgd2lkdGgg
aXMgcG9zaXRpdmUuCiAgICAgICAgIGlmICgqd2lkdGggPCAwLjApIHsKLSAgICAgICAgICAgIGRv
Y3VtZW50LmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRFcnJvcigiQSBuZWdhdGl2ZSB2YWx1
ZSBmb3IgVmlld0JveCB3aWR0aCBpcyBub3QgYWxsb3dlZCIpOworICAgICAgICAgICAgZG9jdW1l
bnQuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZv
ciBWaWV3Qm94IHdpZHRoIGlzIG5vdCBhbGxvd2VkIl9zKTsKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBDaGVjayB0aGF0IGhlaWdodCBp
cyBwb3NpdGl2ZS4KICAgICAgICAgaWYgKCpoZWlnaHQgPCAwLjApIHsKLSAgICAgICAgICAgIGRv
Y3VtZW50LmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRFcnJvcigiQSBuZWdhdGl2ZSB2YWx1
ZSBmb3IgVmlld0JveCBoZWlnaHQgaXMgbm90IGFsbG93ZWQiKTsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRFcnJvcigiQSBuZWdhdGl2ZSB2YWx1ZSBm
b3IgVmlld0JveCBoZWlnaHQgaXMgbm90IGFsbG93ZWQiX3MpOwogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRy
eUVsZW1lbnQuY3BwCmluZGV4IGMwYmYyMWU0NDI0YTM2Mzg4YzdmMjE2NzI3MTU1MzBjMWYyZDE4
M2IuLjI4ZWM0NzdiODRiYTFiYWJlMDk5YjlkNjM5ZjkyMDA3OWQ1NjJmYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9p
ZCBTVkdHZW9tZXRyeUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21TdHIKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cGF0aExlbmd0
aEF0dHIpIHsKICAgICAgICAgbV9wYXRoTGVuZ3RoLT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUu
dG9GbG9hdCgpKTsKICAgICAgICAgaWYgKG1fcGF0aExlbmd0aC0+YmFzZVZhbCgpIDwgMCkKLSAg
ICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydEVycm9yKCJB
IG5lZ2F0aXZlIHZhbHVlIGZvciBwYXRoIGF0dHJpYnV0ZSA8cGF0aExlbmd0aD4gaXMgbm90IGFs
bG93ZWQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJl
cG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBwYXRoIGF0dHJpYnV0ZSA8cGF0aExlbmd0
aD4gaXMgbm90IGFsbG93ZWQiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA0ZGQ3ZjgwZTM3Nzc5ODdkY2I3
MGMxYTNjOGE4N2NkOGE0ZmQ2ZmI5Li4xMzE4NWYyMTE4OTY5NmE0ZmYyNmMwNzI2YWZiYTFkNmYx
ODU4MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTQ1
Nyw3ICs0NTcsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIGZyYW1lLnZpZXcoKS0+c2V0VHJhbnNwYXJlbnQo
dHJ1ZSk7IC8vIFNWRyBJbWFnZXMgYXJlIHRyYW5zcGFyZW50LgogCiAgICAgICAgIEFTU0VSVChs
b2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7IC8vIERvY3VtZW50TG9hZGVyIHNob3VsZCBo
YXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5pdCgpLgotICAgICAgICBsb2FkZXIuYWN0aXZl
RG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiKTsK
KyAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVU
eXBlKCJpbWFnZS9zdmcreG1sIl9zKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCktPndyaXRlcigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBkb2N1bWVu
dAogICAgICAgICBkYXRhKCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8m
JiBidWZmZXIpIHsKICAgICAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53
cml0ZXIoKS5hZGREYXRhKGJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggMjA2N2ExZDAwODhiMzYzNjk2NDlkYTJhZGZkMjQyYWFkNTJjZTAwYi4uNGYwYmY5OWVh
ZjdlNjczM2NmNDIyMjhkYmI0YzAwYzIyYTQ1NGYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtNzY1LDE2ICs3NjUsMTYgQEAgc3RhdGljIFN0cmluZyBzdHlsZVZhbGlk
aXR5VG9Ub1N0cmluZyhTdHlsZTo6VmFsaWRpdHkgdmFsaWRpdHkpCiB7CiAgICAgc3dpdGNoICh2
YWxpZGl0eSkgewogICAgIGNhc2UgU3R5bGU6OlZhbGlkaXR5OjpWYWxpZDoKLSAgICAgICAgcmV0
dXJuICJOb1N0eWxlQ2hhbmdlIjsKKyAgICAgICAgcmV0dXJuICJOb1N0eWxlQ2hhbmdlIl9zOwog
ICAgIGNhc2UgU3R5bGU6OlZhbGlkaXR5OjpFbGVtZW50SW52YWxpZDoKLSAgICAgICAgcmV0dXJu
ICJJbmxpbmVTdHlsZUNoYW5nZSI7CisgICAgICAgIHJldHVybiAiSW5saW5lU3R5bGVDaGFuZ2Ui
X3M7CiAgICAgY2FzZSBTdHlsZTo6VmFsaWRpdHk6OlN1YnRyZWVJbnZhbGlkOgotICAgICAgICBy
ZXR1cm4gIkZ1bGxTdHlsZUNoYW5nZSI7CisgICAgICAgIHJldHVybiAiRnVsbFN0eWxlQ2hhbmdl
Il9zOwogICAgIGNhc2UgU3R5bGU6OlZhbGlkaXR5OjpTdWJ0cmVlQW5kUmVuZGVyZXJzSW52YWxp
ZDoKLSAgICAgICAgcmV0dXJuICJSZWNvbnN0cnVjdFJlbmRlclRyZWUiOworICAgICAgICByZXR1
cm4gIlJlY29uc3RydWN0UmVuZGVyVHJlZSJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiBT
dHJpbmcgSW50ZXJuYWxzOjpzdHlsZUNoYW5nZVR5cGUoTm9kZSYgbm9kZSkKQEAgLTgxNSwzMSAr
ODE1LDMxIEBAIGJvb2wgSW50ZXJuYWxzOjppc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoY29uc3Qg
U3RyaW5nJiB1cmwpCiBzdGF0aWMgU3RyaW5nIHJlc3BvbnNlU291cmNlVG9TdHJpbmcoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmlzTnVsbCgp
KQotICAgICAgICByZXR1cm4gIk51bGwgcmVzcG9uc2UiOworICAgICAgICByZXR1cm4gIk51bGwg
cmVzcG9uc2UiX3M7CiAgICAgc3dpdGNoIChyZXNwb25zZS5zb3VyY2UoKSkgewogICAgIGNhc2Ug
UmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25v
d24iOworICAgICAgICByZXR1cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBSZXNvdXJjZVJlc3Bv
bnNlOjpTb3VyY2U6Ok5ldHdvcms6Ci0gICAgICAgIHJldHVybiAiTmV0d29yayI7CisgICAgICAg
IHJldHVybiAiTmV0d29yayJfczsKICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6
U2VydmljZVdvcmtlcjoKLSAgICAgICAgcmV0dXJuICJTZXJ2aWNlIHdvcmtlciI7CisgICAgICAg
IHJldHVybiAiU2VydmljZSB3b3JrZXIiX3M7CiAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpT
b3VyY2U6OkRpc2tDYWNoZToKLSAgICAgICAgcmV0dXJuICJEaXNrIGNhY2hlIjsKKyAgICAgICAg
cmV0dXJuICJEaXNrIGNhY2hlIl9zOwogICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZTo6U291cmNl
OjpEaXNrQ2FjaGVBZnRlclZhbGlkYXRpb246Ci0gICAgICAgIHJldHVybiAiRGlzayBjYWNoZSBh
ZnRlciB2YWxpZGF0aW9uIjsKKyAgICAgICAgcmV0dXJuICJEaXNrIGNhY2hlIGFmdGVyIHZhbGlk
YXRpb24iX3M7CiAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok1lbW9yeUNhY2hl
OgotICAgICAgICByZXR1cm4gIk1lbW9yeSBjYWNoZSI7CisgICAgICAgIHJldHVybiAiTWVtb3J5
IGNhY2hlIl9zOwogICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpNZW1vcnlDYWNo
ZUFmdGVyVmFsaWRhdGlvbjoKLSAgICAgICAgcmV0dXJuICJNZW1vcnkgY2FjaGUgYWZ0ZXIgdmFs
aWRhdGlvbiI7CisgICAgICAgIHJldHVybiAiTWVtb3J5IGNhY2hlIGFmdGVyIHZhbGlkYXRpb24i
X3M7CiAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGU6
Ci0gICAgICAgIHJldHVybiAiQXBwbGljYXRpb24gY2FjaGUiOworICAgICAgICByZXR1cm4gIkFw
cGxpY2F0aW9uIGNhY2hlIl9zOwogICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpE
T01DYWNoZToKLSAgICAgICAgcmV0dXJuICJET00gY2FjaGUiOworICAgICAgICByZXR1cm4gIkRP
TSBjYWNoZSJfczsKICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6SW5zcGVjdG9y
T3ZlcnJpZGU6Ci0gICAgICAgIHJldHVybiAiSW5zcGVjdG9yIG92ZXJyaWRlIjsKKyAgICAgICAg
cmV0dXJuICJJbnNwZWN0b3Igb3ZlcnJpZGUiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiAiRXJyb3IiOworICAgIHJldHVybiAiRXJyb3IiX3M7CiB9CiAK
IFN0cmluZyBJbnRlcm5hbHM6OnhoclJlc3BvbnNlU291cmNlKFhNTEh0dHBSZXF1ZXN0JiByZXF1
ZXN0KQpAQCAtMjg2Niw3ICsyODY2LDcgQEAgUmVmUHRyPFdpbmRvd1Byb3h5PiBJbnRlcm5hbHM6
Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIGF1
dG8qIGluc3BlY3RlZFBhZ2UgPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpOwog
ICAgIGF1dG8qIHdpbmRvdyA9IGluc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpOwotICAgIGF1dG8gZnJvbnRlbmRXaW5kb3dQcm94eSA9IHdpbmRvdy0+b3Bl
bigqd2luZG93LCAqd2luZG93LCB1cmwsICIiLCAiIikucmVsZWFzZVJldHVyblZhbHVlKCk7Cisg
ICAgYXV0byBmcm9udGVuZFdpbmRvd1Byb3h5ID0gd2luZG93LT5vcGVuKCp3aW5kb3csICp3aW5k
b3csIHVybCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkucmVsZWFzZVJldHVyblZhbHVl
KCk7CiAgICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yU3R1YkZy
b250ZW5kPigqaW5zcGVjdGVkUGFnZSwgZG93bmNhc3Q8RE9NV2luZG93Pihmcm9udGVuZFdpbmRv
d1Byb3h5LT53aW5kb3coKSkpOwogICAgIHJldHVybiBmcm9udGVuZFdpbmRvd1Byb3h5OwogfQpA
QCAtNDA2NCwxNyArNDA2NCwxNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjplbGVtZW50QnVmZmVyaW5n
UG9saWN5KEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgc3dpdGNoIChlbGVtZW50
LmJ1ZmZlcmluZ1BvbGljeSgpKSB7CiAgICAgY2FzZSBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9s
aWN5OjpEZWZhdWx0OgotICAgICAgICByZXR1cm4gIkRlZmF1bHQiOworICAgICAgICByZXR1cm4g
IkRlZmF1bHQiX3M7CiAgICAgY2FzZSBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5OjpMaW1p
dFJlYWRBaGVhZDoKLSAgICAgICAgcmV0dXJuICJMaW1pdFJlYWRBaGVhZCI7CisgICAgICAgIHJl
dHVybiAiTGltaXRSZWFkQWhlYWQiX3M7CiAgICAgY2FzZSBNZWRpYVBsYXllcjo6QnVmZmVyaW5n
UG9saWN5OjpNYWtlUmVzb3VyY2VzUHVyZ2VhYmxlOgotICAgICAgICByZXR1cm4gIk1ha2VSZXNv
dXJjZXNQdXJnZWFibGUiOworICAgICAgICByZXR1cm4gIk1ha2VSZXNvdXJjZXNQdXJnZWFibGUi
X3M7CiAgICAgY2FzZSBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5OjpQdXJnZVJlc291cmNl
czoKLSAgICAgICAgcmV0dXJuICJQdXJnZVJlc291cmNlcyI7CisgICAgICAgIHJldHVybiAiUHVy
Z2VSZXNvdXJjZXMiX3M7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuICJVTktOT1dOIjsKKyAgICByZXR1cm4gIlVOS05PV04iX3M7CiB9CiAKIEV4Y2VwdGlv
bk9yPHZvaWQ+IEludGVybmFsczo6c2V0T3ZlcnJpZGVQcmVmZXJyZWREeW5hbWljUmFuZ2VNb2Rl
KEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZykKQEAg
LTY0NzAsNyArNjQ3MCw3IEBAIFN0cmluZyBJbnRlcm5hbHM6OmZvY3VzUmluZ0NvbG9yKCkKIHVu
c2lnbmVkIEludGVybmFsczo6Y3JlYXRlU2xlZXBEaXNhYmxlcihjb25zdCBTdHJpbmcmIHJlYXNv
biwgYm9vbCBkaXNwbGF5KQogewogICAgIHN0YXRpYyB1bnNpZ25lZCBsYXN0VXNlZElkZW50aWZp
ZXIgPSAwOwotICAgIGF1dG8gc2xlZXBEaXNhYmxlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U2xl
ZXBEaXNhYmxlcj4ocmVhc29uLnV0ZjgoKS5kYXRhKCksIGRpc3BsYXkgPyBQQUw6OlNsZWVwRGlz
YWJsZXI6OlR5cGU6OkRpc3BsYXkgOiBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5cGU6OlN5c3RlbSk7
CisgICAgYXV0byBzbGVlcERpc2FibGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTbGVlcERpc2Fi
bGVyPihyZWFzb24sIGRpc3BsYXkgPyBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5cGU6OkRpc3BsYXkg
OiBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5cGU6OlN5c3RlbSk7CiAgICAgbV9zbGVlcERpc2FibGVy
cy5hZGQoKytsYXN0VXNlZElkZW50aWZpZXIsIFdURk1vdmUoc2xlZXBEaXNhYmxlcikpOwogICAg
IHJldHVybiBsYXN0VXNlZElkZW50aWZpZXI7CiB9CkBAIC02NTc3LDExICs2NTc3LDExIEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2VuZE1lZGlhU2Vzc2lvbkFjdGlvbihNZWRpYVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0CiB2b2lkIEludGVybmFsczo6bG9hZEFydHdvcmtJbWFnZShT
dHJpbmcmJiB1cmwsIEFydHdvcmtJbWFnZVByb21pc2UmJiBwcm9taXNlKQogewogICAgIGlmICgh
Y29udGV4dERvY3VtZW50KCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyBkb2N1bWVudC4iIH0pOworICAgICAgICBwcm9taXNlLnJl
amVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIGRvY3VtZW50LiJfcyB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV9hcnR3b3JrSW1hZ2VQcm9taXNlKSB7
Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAi
QW5vdGhlciBkb3dubG9hZCBpcyBjdXJyZW50bHkgcGVuZGluZy4iIH0pOworICAgICAgICBwcm9t
aXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFub3RoZXIgZG93bmxv
YWQgaXMgY3VycmVudGx5IHBlbmRpbmcuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZSA9IG1ha2VVbmlxdWU8QXJ0d29ya0ltYWdlUHJvbWlz
ZT4oV1RGTW92ZShwcm9taXNlKSk7CkBAIC02NTkzLDcgKzY1OTMsNyBAQCB2b2lkIEludGVybmFs
czo6bG9hZEFydHdvcmtJbWFnZShTdHJpbmcmJiB1cmwsIEFydHdvcmtJbWFnZVByb21pc2UmJiBw
cm9taXNlKQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1fYXJ0d29ya0ltYWdl
UHJvbWlzZS0+cmVqZWN0KGltYWdlRGF0YS5leGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlv
biB7IEludmFsaWRBY2Nlc3NFcnJvciwgIk5vIGltYWdlIHJldHJpZXZlZC4iICB9KTsKKyAgICAg
ICAgICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRB
Y2Nlc3NFcnJvciwgIk5vIGltYWdlIHJldHJpZXZlZC4iX3MgfSk7CiAgICAgICAgIG1fYXJ0d29y
a0ltYWdlUHJvbWlzZSA9IG51bGxwdHI7CiAgICAgfSk7CiAgICAgbV9hcnR3b3JrTG9hZGVyLT5y
ZXF1ZXN0SW1hZ2VSZXNvdXJjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHNNYXBMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
TWFwTGlrZS5jcHAKaW5kZXggOWY3NjgwYzU0NmUxNzhmM2QyZTMwYjBlNzY0NWE1ODBmZDY5OTZk
Yy4uOWEzZGY0ZDRhMTgwMDQ4NWM2ZWJmYTY4MTZlOTU0MzlkMzExMDcyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHNNYXBMaWtlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsc01hcExpa2UuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogSW50ZXJuYWxzTWFwTGlrZTo6SW50ZXJuYWxzTWFwTGlrZSgp
CiB7Ci0gICAgbV92YWx1ZXMuYWRkKCJpbml0IiwgMCk7CisgICAgbV92YWx1ZXMuYWRkKCJpbml0
Il9zLCAwKTsKIH0KIAogdm9pZCBJbnRlcm5hbHNNYXBMaWtlOjppbml0aWFsaXplTWFwTGlrZShE
T01NYXBBZGFwdGVyJiBtYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKaW5kZXggMDhmNDVlNmU3MmZjNGJiOGQ5MWQ0
MWE3NDZlOTUzYzgxZmFkOWM3ZC4uZTBhNjI1Y2YyZDFmOGYzY2ViODdiNjVkZDUxYzhjMDRmNmMy
ZWVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yLmNwcApAQCAtMTA1LDI1ICsxMDUsMjUgQEAgdm9pZCBNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnNldFRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQKIHZvaWQgTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwb3NpdGlvblN0YXRl
Q2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mKQogewogICAg
IEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7Ci0gICAgbV9zdGF0ZUNoYW5n
ZUxpc3RlbmVyLT5zY2hlZHVsZUNhbGxiYWNrKG1fY29udGV4dC5nZXQoKSwgInBvc2l0aW9uU3Rh
dGVDaGFuZ2VkIik7CisgICAgbV9zdGF0ZUNoYW5nZUxpc3RlbmVyLT5zY2hlZHVsZUNhbGxiYWNr
KG1fY29udGV4dC5nZXQoKSwgInBvc2l0aW9uU3RhdGVDaGFuZ2VkIl9zKTsKIH0KIAogdm9pZCBN
b2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnJlYWR5U3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lv
blJlYWR5U3RhdGUgc3RhdGUpCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVO
VElGSUVSLCBzdGF0ZSk7Ci0gICAgbV9zdGF0ZUNoYW5nZUxpc3RlbmVyLT5zY2hlZHVsZUNhbGxi
YWNrKG1fY29udGV4dC5nZXQoKSwgInJlYWR5U3RhdGVDaGFuZ2VkIik7CisgICAgbV9zdGF0ZUNo
YW5nZUxpc3RlbmVyLT5zY2hlZHVsZUNhbGxiYWNrKG1fY29udGV4dC5nZXQoKSwgInJlYWR5U3Rh
dGVDaGFuZ2VkIl9zKTsKIH0KIAogdm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBs
YXliYWNrU3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUgc3RhdGUpCiB7CiAg
ICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCBzdGF0ZSk7Ci0gICAgbV9z
dGF0ZUNoYW5nZUxpc3RlbmVyLT5zY2hlZHVsZUNhbGxiYWNrKG1fY29udGV4dC5nZXQoKSwgInBs
YXliYWNrU3RhdGVDaGFuZ2VkIik7CisgICAgbV9zdGF0ZUNoYW5nZUxpc3RlbmVyLT5zY2hlZHVs
ZUNhbGxiYWNrKG1fY29udGV4dC5nZXQoKSwgInBsYXliYWNrU3RhdGVDaGFuZ2VkIl9zKTsKIH0K
IAogdm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnRyYWNrSWRlbnRpZmllckNoYW5n
ZWQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogewogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lC
TEUoTE9HSURFTlRJRklFUiwgaWRlbnRpZmllcik7Ci0gICAgbV9zdGF0ZUNoYW5nZUxpc3RlbmVy
LT5zY2hlZHVsZUNhbGxiYWNrKG1fY29udGV4dC5nZXQoKSwgInRyYWNrSWRlbnRpZmllckNoYW5n
ZWQiKTsKKyAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250
ZXh0LmdldCgpLCAidHJhY2tJZGVudGlmaWVyQ2hhbmdlZCJfcyk7CiB9CiAKIFdURkxvZ0NoYW5u
ZWwmIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6bG9nQ2hhbm5lbCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Iu
aAppbmRleCA5ZTBmZTUzODdjZTc4NDJhNmMxZGYxZTZmYzZhY2QxMTgwMjZhYTE5Li44MTI0NjJi
ZWYxZDJkYTM1NTU4OGE3YTk4YmZlZDdjMGRmZWNiMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxTdHJpbmdDYWxsYmFjaz4mJik7CiAKLSAg
ICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJNb2NrIENvb3JkaW5h
dG9yIjsgfQorICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1v
Y2sgQ29vcmRpbmF0b3IiX3M7IH0KIAogICAgIHZvaWQgam9pbihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBsZWF2
ZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92
ZXJsYXlDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlD
bGllbnQuY3BwCmluZGV4IGQ5NzVmM2I0Mjg0ZjNiNjZhOGQ3NzkyZjA4YjYzZDdkM2QxNTQzZmEu
LjUyZGI0NzBmMjJkY2FlZjcxN2NkYTkxN2Q4ZjdlNWU3YzI3MzZkNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAKQEAgLTcyLDggKzcy
LDggQEAgU3RyaW5nIE1vY2tQYWdlT3ZlcmxheUNsaWVudDo6bGF5ZXJUcmVlQXNUZXh0KFBhZ2Um
IHBhZ2UsIE9wdGlvblNldDxMYXllclRyZWVBc1QKICAgICBHcmFwaGljc0xheWVyKiB2aWV3T3Zl
cmxheVJvb3QgPSBwYWdlLnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLnZpZXdPdmVybGF5Um9vdExh
eWVyKCk7CiAgICAgR3JhcGhpY3NMYXllciogZG9jdW1lbnRPdmVybGF5Um9vdCA9IHBhZ2UucGFn
ZU92ZXJsYXlDb250cm9sbGVyKCkuZG9jdW1lbnRPdmVybGF5Um9vdExheWVyKCk7CiAgICAgCi0g
ICAgcmV0dXJuICJWaWV3LXJlbGF0aXZlOlxuIiArICh2aWV3T3ZlcmxheVJvb3QgPyB2aWV3T3Zl
cmxheVJvb3QtPmxheWVyVHJlZUFzVGV4dChvcHRpb25zIHwgTGF5ZXJUcmVlQXNUZXh0T3B0aW9u
czo6SW5jbHVkZVBhZ2VPdmVybGF5TGF5ZXJzKSA6ICIobm8gdmlldy1yZWxhdGl2ZSBvdmVybGF5
IHJvb3QpIikKLSAgICAgICAgKyAiXG5cbkRvY3VtZW50LXJlbGF0aXZlOlxuIiArIChkb2N1bWVu
dE92ZXJsYXlSb290ID8gZG9jdW1lbnRPdmVybGF5Um9vdC0+bGF5ZXJUcmVlQXNUZXh0KG9wdGlv
bnMgfCBMYXllclRyZWVBc1RleHRPcHRpb25zOjpJbmNsdWRlUGFnZU92ZXJsYXlMYXllcnMpIDog
IihubyBkb2N1bWVudC1yZWxhdGl2ZSBvdmVybGF5IHJvb3QpIik7CisgICAgcmV0dXJuICJWaWV3
LXJlbGF0aXZlOlxuIiArICh2aWV3T3ZlcmxheVJvb3QgPyB2aWV3T3ZlcmxheVJvb3QtPmxheWVy
VHJlZUFzVGV4dChvcHRpb25zIHwgTGF5ZXJUcmVlQXNUZXh0T3B0aW9uczo6SW5jbHVkZVBhZ2VP
dmVybGF5TGF5ZXJzKSA6ICIobm8gdmlldy1yZWxhdGl2ZSBvdmVybGF5IHJvb3QpIl9zKQorICAg
ICAgICArICJcblxuRG9jdW1lbnQtcmVsYXRpdmU6XG4iICsgKGRvY3VtZW50T3ZlcmxheVJvb3Qg
PyBkb2N1bWVudE92ZXJsYXlSb290LT5sYXllclRyZWVBc1RleHQob3B0aW9ucyB8IExheWVyVHJl
ZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVQYWdlT3ZlcmxheUxheWVycykgOiAiKG5vIGRvY3VtZW50
LXJlbGF0aXZlIG92ZXJsYXkgcm9vdCkiX3MpOwogfQogCiB2b2lkIE1vY2tQYWdlT3ZlcmxheUNs
aWVudDo6d2lsbE1vdmVUb1BhZ2UoUGFnZU92ZXJsYXkmLCBQYWdlKikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IDhiOTM4ODg2
M2M4MWIxMjZiOGI4NDY4N2IwYmQ4NmJmYTM3MGQ5MzMuLmU4MzFiMWEwN2NjNmRhNTAyYjJmMGY2
ZTk5OThhMzEyZjc0NmM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAtNTUsMTUgKzU1LDE1IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6Ok1vY2tQYXltZW50Q29vcmRpbmF0b3IoUGFn
ZSYgcGFnZSkKICAgICA6IG1fcGFnZSB7IHBhZ2UgfQogewotICAgIG1fYXZhaWxhYmxlUGF5bWVu
dE5ldHdvcmtzLmFkZCgiYW1leCIpOwotICAgIG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmFk
ZCgiY2FydGVCYW5jYWlyZSIpOwotICAgIG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmFkZCgi
Y2hpbmFVbmlvblBheSIpOwotICAgIG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmFkZCgiZGlz
Y292ZXIiKTsKLSAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoImludGVyYWMiKTsK
LSAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoImpjYiIpOwotICAgIG1fYXZhaWxh
YmxlUGF5bWVudE5ldHdvcmtzLmFkZCgibWFzdGVyQ2FyZCIpOwotICAgIG1fYXZhaWxhYmxlUGF5
bWVudE5ldHdvcmtzLmFkZCgicHJpdmF0ZUxhYmVsIik7Ci0gICAgbV9hdmFpbGFibGVQYXltZW50
TmV0d29ya3MuYWRkKCJ2aXNhIik7CisgICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRk
KCJhbWV4Il9zKTsKKyAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoImNhcnRlQmFu
Y2FpcmUiX3MpOworICAgIG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmFkZCgiY2hpbmFVbmlv
blBheSJfcyk7CisgICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJkaXNjb3ZlciJf
cyk7CisgICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJpbnRlcmFjIl9zKTsKKyAg
ICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoImpjYiJfcyk7CisgICAgbV9hdmFpbGFi
bGVQYXltZW50TmV0d29ya3MuYWRkKCJtYXN0ZXJDYXJkIl9zKTsKKyAgICBtX2F2YWlsYWJsZVBh
eW1lbnROZXR3b3Jrcy5hZGQoInByaXZhdGVMYWJlbCJfcyk7CisgICAgbV9hdmFpbGFibGVQYXlt
ZW50TmV0d29ya3MuYWRkKCJ2aXNhIl9zKTsKIH0KIAogc3RkOjpvcHRpb25hbDxTdHJpbmc+IE1v
Y2tQYXltZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlZFBheW1lbnROZXR3b3JrKGNvbnN0IFN0cmlu
ZyYgcGF5bWVudE5ldHdvcmspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5jcHAKaW5kZXggN2ZhZmYwYzU4YTY1MDk5NjZhMDY3ZDg0NGIxYjljODVlNTQxOWU4
Ny4uMGM0MDEwMTk5ZjRiZjI2MjQ5ZTJiZGMwZTc4MTBkZjUwOGRmZTFiMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMjY3LDcgKzI2Nyw3
IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpub3RpZnlFcnJvcigpCiB7CiAgICAgbV9mYWls
ZWQgPSB0cnVlOwogICAgIGlmIChtX2Vycm9yLmlzTnVsbCgpKQotICAgICAgICBtX2Vycm9yID0g
eyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwoKSwgIkZhaWxlZCB0byBsb2FkIHNj
cmlwdCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKKyAgICAgICAgbV9lcnJvciA9
IHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsKCksICJGYWlsZWQgdG8gbG9hZCBz
Y3JpcHQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKICAgICBub3RpZnlGaW5p
c2hlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggMTBmZjdlNDJmMGIxMWE0OWE1M2U5
ZWJhZDRlYmJjZGExZGI2ZjhhNi4uNDc1NDJkZGY0MTZlOGUzNjNjYzc0MjYyMjI2NDE0MTRhNGZi
MWYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVT
Y3JpcHRVUkwsIGNvCiAgICAgaWYgKCFvcHRpb25zLnNjb3BlLmlzRW1wdHkoKSkKICAgICAgICAg
am9iRGF0YS5zY29wZVVSTCA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKG9wdGlvbnMuc2NvcGUpOwog
ICAgIGVsc2UKLSAgICAgICAgam9iRGF0YS5zY29wZVVSTCA9IFVSTChqb2JEYXRhLnNjcmlwdFVS
TCwgIi4vIik7CisgICAgICAgIGpvYkRhdGEuc2NvcGVVUkwgPSBVUkwoam9iRGF0YS5zY3JpcHRV
UkwsICIuLyJfcyk7CiAKICAgICBpZiAoIWpvYkRhdGEuc2NvcGVVUkwuaXNOdWxsKCkgJiYgIWpv
YkRhdGEuc2NvcGVVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFqb2JEYXRhLmlzRnJv
bVNlcnZpY2VXb3JrZXJQYWdlKSB7CiAgICAgICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19FUlJP
UigiYWRkUmVnaXN0cmF0aW9uOiBzY29wZVVSTCBzY2hlbWUgaXMgbm90IEhUVFAgb3IgSFRUUFMi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggZGZkZWIwYjJlYmMwZTUzYzMwNjll
ODA4ZmE5MmE0M2U1Y2U1ZmUwNy4uOTc2ZDgwYjg1MDg1YjQ2ZmU3ZWFlMDdkOTAwZDE2MjdjZDI5
MzI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBT
dHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmVuc3VyZVZhbGlkUmVjb3Jkc1RhYmxlKCkKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChzcWxpdGVSZXN1bHQgIT0gU1FMSVRFX1JPVykKLSAgICAg
ICAgICAgIHJldHVybiAiRXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBmZXRjaCBzY2hlbWEg
Zm9yIHRoZSBSZWNvcmRzIHRhYmxlLiI7CisgICAgICAgICAgICByZXR1cm4gIkVycm9yIGV4ZWN1
dGluZyBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0aGUgUmVjb3JkcyB0YWJsZS4iX3M7
CiAKICAgICAgICAgY3VycmVudFNjaGVtYSA9IHN0YXRlbWVudC0+Y29sdW1uVGV4dCgxKTsKICAg
ICB9CkBAIC0zMDYsMTUgKzMwNiwxNSBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmVu
c3VyZVZhbGlkUmVjb3Jkc1RhYmxlKCkKICAgICByZXR1cm4gbWFrZVN0cmluZygiVW5leHBlY3Rl
ZCBzY2hlbWE6ICIsIGN1cnJlbnRTY2hlbWEpOwogfQogCi1zdGF0aWMgU3RyaW5nIHVwZGF0ZVZp
YUNhY2hlVG9TdHJpbmcoU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlIHVwZGF0ZSkKK3N0YXRp
YyBBU0NJSUxpdGVyYWwgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhTZXJ2aWNlV29ya2VyVXBkYXRl
VmlhQ2FjaGUgdXBkYXRlKQogewogICAgIHN3aXRjaCAodXBkYXRlKSB7CiAgICAgY2FzZSBTZXJ2
aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU6OkltcG9ydHM6Ci0gICAgICAgIHJldHVybiAiSW1wb3J0
cyI7CisgICAgICAgIHJldHVybiAiSW1wb3J0cyJfczsKICAgICBjYXNlIFNlcnZpY2VXb3JrZXJV
cGRhdGVWaWFDYWNoZTo6QWxsOgotICAgICAgICByZXR1cm4gIkFsbCI7CisgICAgICAgIHJldHVy
biAiQWxsIl9zOwogICAgIGNhc2UgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpOb25lOgot
ICAgICAgICByZXR1cm4gIk5vbmUiOworICAgICAgICByZXR1cm4gIk5vbmUiX3M7CiAgICAgfQog
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTMzMiwxMyArMzMyLDEzIEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZT4gc3RyaW5n
VG9VcGRhdGVWaWFDYWNoZShjb25zdCBTCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAot
c3RhdGljIFN0cmluZyB3b3JrZXJUeXBlVG9TdHJpbmcoV29ya2VyVHlwZSB3b3JrZXJUeXBlKQor
c3RhdGljIEFTQ0lJTGl0ZXJhbCB3b3JrZXJUeXBlVG9TdHJpbmcoV29ya2VyVHlwZSB3b3JrZXJU
eXBlKQogewogICAgIHN3aXRjaCAod29ya2VyVHlwZSkgewogICAgIGNhc2UgV29ya2VyVHlwZTo6
Q2xhc3NpYzoKLSAgICAgICAgcmV0dXJuICJDbGFzc2ljIjsKKyAgICAgICAgcmV0dXJuICJDbGFz
c2ljIl9zOwogICAgIGNhc2UgV29ya2VyVHlwZTo6TW9kdWxlOgotICAgICAgICByZXR1cm4gIk1v
ZHVsZSI7CisgICAgICAgIHJldHVybiAiTW9kdWxlIl9zOwogICAgIH0KIAogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00NjIsOSArNDYyLDkgQEAgYm9vbCBSZWdpc3RyYXRp
b25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRl
eHREYXRhPiYKICAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZFRleHQoMywgZGF0
YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwucGF0aCgpLnRvU3RyaW5nKCkpICE9IFNRTElURV9PSwog
ICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kVGV4dCg0LCBkYXRhLnJlZ2lzdHJh
dGlvbi5rZXkudG9wT3JpZ2luKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpICE9IFNRTElURV9PSwog
ICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kRG91YmxlKDUsIGRhdGEucmVnaXN0
cmF0aW9uLmxhc3RVcGRhdGVUaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FM
SVRFX09LCi0gICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRUZXh0KDYsIHVwZGF0
ZVZpYUNhY2hlVG9TdHJpbmcoZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUpKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZFRleHQoNiwgU3Ry
aW5nVmlldyB7IHVwZGF0ZVZpYUNhY2hlVG9TdHJpbmcoZGF0YS5yZWdpc3RyYXRpb24udXBkYXRl
VmlhQ2FjaGUpIH0pICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50
LT5iaW5kVGV4dCg3LCBkYXRhLnNjcmlwdFVSTC5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAg
ICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRUZXh0KDgsIHdvcmtlclR5cGVUb1N0cmlu
ZyhkYXRhLndvcmtlclR5cGUpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IGluc2VydFN0
YXRlbWVudC0+YmluZFRleHQoOCwgU3RyaW5nVmlldyB7IHdvcmtlclR5cGVUb1N0cmluZyhkYXRh
LndvcmtlclR5cGUpIH0pICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVt
ZW50LT5iaW5kQmxvYig5LCBTcGFuIHsgY3NwRW5jb2Rlci5idWZmZXIoKSwgY3NwRW5jb2Rlci5i
dWZmZXJTaXplKCkgfSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1l
bnQtPmJpbmRCbG9iKDEwLCBTcGFuIHsgY29lcEVuY29kZXIuYnVmZmVyKCksIGNvZXBFbmNvZGVy
LmJ1ZmZlclNpemUoKSB9KSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IGluc2VydFN0YXRl
bWVudC0+YmluZFRleHQoMTEsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElURV9PSwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApp
bmRleCBiM2VlMGJlZTFjZjkwZmYxYzNiMmI3YTY4YmI5N2E1MzY2MzExMjRjLi5mNjExMDYxMTZh
NGJmNjc1MjY0NGEyNGVhZTE5ZjU1YjRhYTlmYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNDE1LDcgKzQxNSw3IEBA
IHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0
YSkKICAgICAgICAgICAgIGlmIChqb2JRdWV1ZS5zaXplKCkgPT0gMSkKICAgICAgICAgICAgICAg
ICBqb2JRdWV1ZS5ydW5OZXh0Sm9iKCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVq
ZWN0Sm9iKGpvYkRhdGEsIHsgVHlwZUVycm9yLCAiSm9iIHJlamVjdGVkIGZvciBub24gYXBwLWJv
dW5kIGRvbWFpbiIgfSk7CisgICAgICAgICAgICByZWplY3RKb2Ioam9iRGF0YSwgeyBUeXBlRXJy
b3IsICJKb2IgcmVqZWN0ZWQgZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIl9zIH0pOwogICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNw
cAppbmRleCBhZTgzZjMyZDViNmQ4OGU0YzE0ZDZkMjk5YmVkYzAwOTU2MTMxZTViLi5jYmFjYjRh
MjAwNWRiMjVlMTVhZjAxZDNmZTQ4MTkxNWRlNWUxZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGlj
IGlubGluZSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBtYWluVGhyZWFkQ29ubmVjdGlv
bigpCiBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0aW9u
YWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5YmVPcHRpb25zKQog
ewogICAgIGlmICghbWFpblRocmVhZENvbm5lY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0
ZWQiIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIlNo
YXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIl9zIH07CiAKICAgICBhdXRvIHVybCA9IGRv
Y3VtZW50LmNvbXBsZXRlVVJMKHNjcmlwdFVSTFN0cmluZyk7CiAgICAgaWYgKCF1cmwuaXNWYWxp
ZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuY3BwCmluZGV4IDdjOWExOGFkNmE4MDk1ZjExODkxNmQ2MzBiOTFjYmJkNDdjZDY1Y2Yu
LmI4ZDg1MDI2NTBjMjVkOTUwNjZmYmEyNDM4MmU3MzMxMWY1ZTE4MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTc5
LDE2ICs3OSwxNiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
cmVnaXN0ZXJQYWludChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbAogCiAgICAgLy8gVmFsaWRhdGUg
dGhhdCBwYWludENvbnN0cnVjdG9yIGlzIGEgVm9pZEZ1bmN0aW9uCiAgICAgaWYgKCFwYWludENv
bnN0cnVjdG9yLT5pc0NhbGxhYmxlKHZtKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5
cGVFcnJvciwgInBhaW50Q29uc3RydWN0b3IgbXVzdCBiZSBjYWxsYWJsZSIgfTsKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgInBhaW50Q29uc3RydWN0b3IgbXVzdCBiZSBj
YWxsYWJsZSJfcyB9OwogCiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRo
ZSBlbXB0eSBzdHJpbmciIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyJfcyB9Owog
CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcGFpbnREZWZpbml0aW9uTG9jaygpIH07
CiAKICAgICAgICAgaWYgKHBhaW50RGVmaW5pdGlvbk1hcCgpLmNvbnRhaW5zKG5hbWUpKQotICAg
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlRo
aXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiIH07CisgICAgICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yLCAiVGhpcyBuYW1lIGhhcyBh
bHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCJfcyB9OwogCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGlu
cHV0UHJvcGVydGllczsKIApAQCAtMTE5LDE5ICsxMTksMTkgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQoSlNDOjpKU0dsb2JhbE9iamVj
dCYgZ2wKICAgICAgICAgLy8gRklYTUU6IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkRTZXR0aW5ncyBoZXJlIChzdGVwIDE0KS4KIAogICAgICAgICBpZiAoIXBhaW50Q29uc3RydWN0
b3ItPmlzQ29uc3RydWN0b3Iodm0pKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5
cGVFcnJvciwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNvbnN0cnVjdG9yIiB9Owor
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBzZWNvbmQgYXJn
dW1lbnQgbXVzdCBiZSBhIGNvbnN0cnVjdG9yIl9zIH07CiAKICAgICAgICAgSlNWYWx1ZSBwcm90
b3R5cGVWYWx1ZSA9IHBhaW50Q29uc3RydWN0b3ItPmdldCgmZ2xvYmFsT2JqZWN0LCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCiAgICAgICAgIGlmICgh
cHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBUeXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgaGF2ZSBhIHByb3RvdHlwZSB0
aGF0IGlzIGFuIG9iamVjdCIgfTsKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBl
RXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgaGF2ZSBhIHByb3RvdHlwZSB0aGF0IGlz
IGFuIG9iamVjdCJfcyB9OwogCiAgICAgICAgIEpTVmFsdWUgcGFpbnRWYWx1ZSA9IHByb3RvdHlw
ZVZhbHVlLmdldCgmZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFp
bnQiKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4
aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAKICAgICAgICAgaWYgKHBhaW50VmFsdWUuaXNVbmRl
ZmluZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUg
Y2xhc3MgbXVzdCBoYXZlIGEgcGFpbnQgbWV0aG9kIiB9OworICAgICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBjbGFzcyBtdXN0IGhhdmUgYSBwYWludCBtZXRob2Qi
X3MgfTsKIAogICAgICAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZl
cnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihnbG9iYWxPYmplY3Qs
IHBhaW50VmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRp
b24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggMTM2YzA1M2U1NGMxMDg2MzkyZjRkMDRj
ZTcyZTQ0MjdhZjFhNjA1Ny4uNzRkZjI3NTE3OGNhODgwZjg5ZjkyOTk2NTg4NzI5NmQwZGYzNWE4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OnByZXBhcmVGb3JE
ZXN0cnVjdGlvbigpCiBTdHJpbmcgV29ya2xldEdsb2JhbFNjb3BlOjp1c2VyQWdlbnQoY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2RvY3VtZW50KQotICAgICAgICByZXR1cm4g
IiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIHJldHVybiBtX2RvY3VtZW50
LT51c2VyQWdlbnQodXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEVycm9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAppbmRleCBkNmFj
ZWFmMTRjMTY5ZjlmZjhlMDU4MDEwMDM2YTI1Nzg3YTYyZTBkLi42ZGYzZjBjOTNlZjQ1NjBiMjk3
NjNkOGIxNGZkMjg1NzI4ZGJjNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
RXJyb3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcApAQCAtNjMs
MTEgKzYzLDExIEBAIHZvaWQgWE1MRXJyb3JzOjpoYW5kbGVFcnJvcihFcnJvclR5cGUgdHlwZSwg
Y29uc3QgY2hhciogbWVzc2FnZSwgVGV4dFBvc2l0aW9uIHBvCiAgICAgaWYgKHR5cGUgPT0gZmF0
YWwgfHwgKG1fZXJyb3JDb3VudCA8IG1heEVycm9ycyAmJiAoIW1fbGFzdEVycm9yUG9zaXRpb24g
fHwgKG1fbGFzdEVycm9yUG9zaXRpb24tPm1fbGluZSAhPSBwb3NpdGlvbi5tX2xpbmUgJiYgbV9s
YXN0RXJyb3JQb3NpdGlvbi0+bV9jb2x1bW4gIT0gcG9zaXRpb24ubV9jb2x1bW4pKSkpIHsKICAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2Ugd2FybmluZzoKLSAgICAgICAgICAg
IGFwcGVuZEVycm9yTWVzc2FnZSgid2FybmluZyIsIHBvc2l0aW9uLCBtZXNzYWdlKTsKKyAgICAg
ICAgICAgIGFwcGVuZEVycm9yTWVzc2FnZSgid2FybmluZyJfcywgcG9zaXRpb24sIG1lc3NhZ2Up
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZmF0YWw6CiAgICAgICAgIGNhc2Ug
bm9uRmF0YWw6Ci0gICAgICAgICAgICBhcHBlbmRFcnJvck1lc3NhZ2UoImVycm9yIiwgcG9zaXRp
b24sIG1lc3NhZ2UpOworICAgICAgICAgICAgYXBwZW5kRXJyb3JNZXNzYWdlKCJlcnJvciJfcywg
cG9zaXRpb24sIG1lc3NhZ2UpOwogICAgICAgICB9CiAKICAgICAgICAgbV9sYXN0RXJyb3JQb3Np
dGlvbiA9IHBvc2l0aW9uOwpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFhNTEVycm9yczo6aGFuZGxl
RXJyb3IoRXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIFRleHRQb3NpdGlvbiBw
bwogICAgIH0KIH0KIAotdm9pZCBYTUxFcnJvcnM6OmFwcGVuZEVycm9yTWVzc2FnZShjb25zdCBT
dHJpbmcmIHR5cGVTdHJpbmcsIFRleHRQb3NpdGlvbiBwb3NpdGlvbiwgY29uc3QgY2hhciogbWVz
c2FnZSkKK3ZvaWQgWE1MRXJyb3JzOjphcHBlbmRFcnJvck1lc3NhZ2UoQVNDSUlMaXRlcmFsIHR5
cGVTdHJpbmcsIFRleHRQb3NpdGlvbiBwb3NpdGlvbiwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsK
ICAgICAvLyA8dHlwZVN0cmluZz4gb24gbGluZSA8bGluZU51bWJlcj4gYXQgY29sdW1uIDxjb2x1
bW5OdW1iZXI+OiA8bWVzc2FnZT4KICAgICBtX2Vycm9yTWVzc2FnZXMuYXBwZW5kKHR5cGVTdHJp
bmcsICIgb24gbGluZSAiLCBwb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSwgIiBhdCBjb2x1
bW4gIiwgcG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSwgIjogIiwgbWVzc2FnZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MRXJyb3JzLmgKaW5kZXggYWZjOTAwMWE3NjE2M2I2NWM4ZDNiY2E3M2UxN2Q4OTk2
YzMzNmY0NC4uZDg1YTQ0YTMyM2U1MjBlMjY0NmY1ZWIzMzU4NmZlMzljZTViNTA4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxFcnJvcnMuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNl
cnRFcnJvck1lc3NhZ2VCbG9jaygpOwogCiBwcml2YXRlOgotICAgIHZvaWQgYXBwZW5kRXJyb3JN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgVGV4dFBvc2l0aW9uLCBjb25zdCBjaGFy
KiBtZXNzYWdlKTsKKyAgICB2b2lkIGFwcGVuZEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwgdHlw
ZVN0cmluZywgVGV4dFBvc2l0aW9uLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKIAogICAgIERvY3Vt
ZW50JiBtX2RvY3VtZW50OwogICAgIGludCBtX2Vycm9yQ291bnQgeyAwIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA4OTVkYzlkMDg1NTBhZDYwOGU1OTc5YzcwOGQ1
YTlhYTBhNTQ0YjcwLi5lNWJlZjE0YjRkNDJjMjc4ZGY1ZTRjNGRmOTQxODE5OTY0ZDE0MjQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc3Rh
dGljIHZvaWQgcmVwbGFjZUNoYXJzZXRJbk1lZGlhVHlwZUlmTmVlZGVkKFN0cmluZyYgbWVkaWFU
eXBlKQogICAgIGlmICghcGFyc2VkQ29udGVudFR5cGUgfHwgcGFyc2VkQ29udGVudFR5cGUtPmNo
YXJzZXQoKS5pc0VtcHR5KCkgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShwYXJzZWRDb250ZW50
VHlwZS0+Y2hhcnNldCgpLCAiVVRGLTgiKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFyc2Vk
Q29udGVudFR5cGUtPnNldENoYXJzZXQoIlVURi04Iik7CisgICAgcGFyc2VkQ29udGVudFR5cGUt
PnNldENoYXJzZXQoIlVURi04Il9zKTsKICAgICBtZWRpYVR5cGUgPSBwYXJzZWRDb250ZW50VHlw
ZS0+c2VyaWFsaXplKCk7CiB9CiAKQEAgLTIyMyw3ICsyMjMsNyBAQCBSZWZQdHI8QXJyYXlCdWZm
ZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKIEV4Y2VwdGlv
bk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZXRUaW1lb3V0KHVuc2lnbmVkIHRpbWVvdXQpCiB7
CiAgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpICYmICFtX2Fz
eW5jKSB7Ci0gICAgICAgIGxvZ0NvbnNvbGVFcnJvcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
ICJYTUxIdHRwUmVxdWVzdC50aW1lb3V0IGNhbm5vdCBiZSBzZXQgZm9yIHN5bmNocm9ub3VzIEhU
VFAoUykgcmVxdWVzdHMgbWFkZSBmcm9tIHRoZSB3aW5kb3cgY29udGV4dC4iKTsKKyAgICAgICAg
bG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIlhNTEh0dHBSZXF1ZXN0
LnRpbWVvdXQgY2Fubm90IGJlIHNldCBmb3Igc3luY2hyb25vdXMgSFRUUChTKSByZXF1ZXN0cyBt
YWRlIGZyb20gdGhlIHdpbmRvdyBjb250ZXh0LiJfcyk7CiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKICAgICB9CiAgICAgbV90aW1lb3V0TWlsbGlzZWNv
bmRzID0gdGltZW91dDsKQEAgLTI0OSw3ICsyNDksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxI
dHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKFJlc3BvbnNlVHlwZSB0eXBlKQogICAgIC8vIFdl
J2xsIG9ubHkgZGlzYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkgZm9yIEhUVFAoUykgcmVxdWVzdHMg
c2luY2Ugc3luYyByZXF1ZXN0cyBmb3IgbG9jYWwgcHJvdG9jb2xzCiAgICAgLy8gc3VjaCBhcyBm
aWxlOiBhbmQgZGF0YTogc3RpbGwgbWFrZSBzZW5zZSB0byBhbGxvdy4KICAgICBpZiAoIW1fYXN5
bmMgJiYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkgJiYgbV91cmwucHJv
dG9jb2xJc0luSFRUUEZhbWlseSgpKSB7Ci0gICAgICAgIGxvZ0NvbnNvbGVFcnJvcihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksICJYTUxIdHRwUmVxdWVzdC5yZXNwb25zZVR5cGUgY2Fubm90IGJl
IGNoYW5nZWQgZm9yIHN5bmNocm9ub3VzIEhUVFAoUykgcmVxdWVzdHMgbWFkZSBmcm9tIHRoZSB3
aW5kb3cgY29udGV4dC4iKTsKKyAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgIlhNTEh0dHBSZXF1ZXN0LnJlc3BvbnNlVHlwZSBjYW5ub3QgYmUgY2hhbmdl
ZCBmb3Igc3luY2hyb25vdXMgSFRUUChTKSByZXF1ZXN0cyBtYWRlIGZyb20gdGhlIHdpbmRvdyBj
b250ZXh0LiJfcyk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJy
b3IgfTsKICAgICB9CiAKQEAgLTM1NCwxMyArMzU0LDEzIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhN
TEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwg
Ym9vCiAgICAgICAgIC8vIFdlJ2xsIG9ubHkgZGlzYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkgZm9y
IEhUVFAoUykgcmVxdWVzdHMgc2luY2Ugc3luYyByZXF1ZXN0cyBmb3IgbG9jYWwgcHJvdG9jb2xz
CiAgICAgICAgIC8vIHN1Y2ggYXMgZmlsZTogYW5kIGRhdGE6IHN0aWxsIG1ha2Ugc2Vuc2UgdG8g
YWxsb3cuCiAgICAgICAgIGlmICh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmIHJlc3Bv
bnNlVHlwZSgpICE9IFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpIHsKLSAgICAgICAgICAgIGxv
Z0NvbnNvbGVFcnJvcihjb250ZXh0LCAiU3luY2hyb25vdXMgSFRUUChTKSByZXF1ZXN0cyBtYWRl
IGZyb20gdGhlIHdpbmRvdyBjb250ZXh0IGNhbm5vdCBoYXZlIFhNTEh0dHBSZXF1ZXN0LnJlc3Bv
bnNlVHlwZSBzZXQuIik7CisgICAgICAgICAgICBsb2dDb25zb2xlRXJyb3IoY29udGV4dCwgIlN5
bmNocm9ub3VzIEhUVFAoUykgcmVxdWVzdHMgbWFkZSBmcm9tIHRoZSB3aW5kb3cgY29udGV4dCBj
YW5ub3QgaGF2ZSBYTUxIdHRwUmVxdWVzdC5yZXNwb25zZVR5cGUgc2V0LiJfcyk7CiAgICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBTaW1pbGFybHksIHRpbWVvdXRzIGFyZSBkaXNhYmxlZCBmb3Igc3luY2hy
b25vdXMgcmVxdWVzdHMgYXMgd2VsbC4KICAgICAgICAgaWYgKG1fdGltZW91dE1pbGxpc2Vjb25k
cyA+IDApIHsKLSAgICAgICAgICAgIGxvZ0NvbnNvbGVFcnJvcihjb250ZXh0LCAiU3luY2hyb25v
dXMgWE1MSHR0cFJlcXVlc3RzIG11c3Qgbm90IGhhdmUgYSB0aW1lb3V0IHZhbHVlIHNldC4iKTsK
KyAgICAgICAgICAgIGxvZ0NvbnNvbGVFcnJvcihjb250ZXh0LCAiU3luY2hyb25vdXMgWE1MSHR0
cFJlcXVlc3RzIG11c3Qgbm90IGhhdmUgYSB0aW1lb3V0IHZhbHVlIHNldC4iX3MpOwogICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwogICAgICAgICB9
CiAgICAgfQpAQCAtMTAwNCwxMiArMTAwNCwxMiBAQCBSZWY8VGV4dFJlc291cmNlRGVjb2Rlcj4g
WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZURlY29kZXIoKSBjb25zdAogewogICAgIFBBTDo6VGV4dEVu
Y29kaW5nIGZpbmFsUmVzcG9uc2VDaGFyc2V0ID0gdGhpcy0+ZmluYWxSZXNwb25zZUNoYXJzZXQo
KTsKICAgICBpZiAoZmluYWxSZXNwb25zZUNoYXJzZXQuaXNWYWxpZCgpKQotICAgICAgICByZXR1
cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgZmluYWxSZXNwb25z
ZUNoYXJzZXQpOworICAgICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0
ZXh0L3BsYWluIl9zLCBmaW5hbFJlc3BvbnNlQ2hhcnNldCk7CiAKICAgICBzd2l0Y2ggKHJlc3Bv
bnNlVHlwZSgpKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nOgogICAgICAg
ICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShyZXNwb25zZU1JTUVUeXBlKCkp
KSB7Ci0gICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUoImFwcGxpY2F0aW9uL3htbCIpOworICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiX3MpOwogICAgICAgICAgICAg
Ly8gRG9uJ3Qgc3RvcCBvbiBlbmNvZGluZyBlcnJvcnMsIHVubGlrZSBpdCBpcyBkb25lIGZvciBv
dGhlciBraW5kcyBvZiBYTUwgcmVzb3VyY2VzLiBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9m
IHByZXZpb3VzIFdlYktpdCB2ZXJzaW9ucywgRmlyZWZveCBhbmQgT3BlcmEuCiAgICAgICAgICAg
ICBkZWNvZGVyLT51c2VMZW5pZW50WE1MRGVjb2RpbmcoKTsKICAgICAgICAgICAgIHJldHVybiBk
ZWNvZGVyOwpAQCAtMTAxNywxMSArMTAxNywxMSBAQCBSZWY8VGV4dFJlc291cmNlRGVjb2Rlcj4g
WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZURlY29kZXIoKSBjb25zdAogICAgICAgICBGQUxMVEhST1VH
SDsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6VGV4dDoKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6
SnNvbjoKLSAgICAgICAgcmV0dXJuIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9w
bGFpbiIsICJVVEYtOCIpOworICAgICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3Jl
YXRlKCJ0ZXh0L3BsYWluIl9zLCAiVVRGLTgiKTsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RG9j
dW1lbnQ6IHsKICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlc3Bv
bnNlTUlNRVR5cGUoKSwgInRleHQvaHRtbCIpKQotICAgICAgICAgICAgcmV0dXJuIFRleHRSZXNv
dXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9odG1sIiwgIlVURi04Iik7Ci0gICAgICAgIGF1dG8g
ZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7
CisgICAgICAgICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2h0
bWwiX3MsICJVVEYtOCIpOworICAgICAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNv
ZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCJfcyk7CiAgICAgICAgIC8vIERvbid0IHN0b3Ag
b24gZW5jb2RpbmcgZXJyb3JzLCB1bmxpa2UgaXQgaXMgZG9uZSBmb3Igb3RoZXIga2luZHMgb2Yg
WE1MIHJlc291cmNlcy4gVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiBwcmV2aW91cyBXZWJL
aXQgdmVyc2lvbnMsIEZpcmVmb3ggYW5kIE9wZXJhLgogICAgICAgICBkZWNvZGVyLT51c2VMZW5p
ZW50WE1MRGVjb2RpbmcoKTsKICAgICAgICAgcmV0dXJuIGRlY29kZXI7CkBAIC0xMDMxLDcgKzEw
MzEsNyBAQCBSZWY8VGV4dFJlc291cmNlRGVjb2Rlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZURl
Y29kZXIoKSBjb25zdAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQotICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQv
cGxhaW4iLCAiVVRGLTgiKTsKKyAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRl
KCJ0ZXh0L3BsYWluIl9zLCAiVVRGLTgiKTsKIH0KIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
UGFyc2VyLmNwcAppbmRleCBlMzE1NjVlYmU3OGQ5YmZkYWNjMGY2YTFlYTBhNTcyZTg1NjJiODlk
Li45YTBhYmFmZDk1YTE4OWViMzQ4ZDk0ODI5MzIxYTdkODI2M2JiYWMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFBhcnNlci5jcHAKQEAgLTMwOCw3ICszMDgsNyBAQCBpbmxpbmUgUGFyc2VyOjpUb2tl
biBQYXJzZXI6Om5leHRUb2tlbkludGVybmFsKCkKICAgICAgICAgaWYgKGlzQmluYXJ5T3BlcmF0
b3JDb250ZXh0KCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVRva2VuQW5kQWR2YW5jZShNVUxP
UCwgTnVtZXJpY09wOjpPUF9NdWwpOwogICAgICAgICArK21fbmV4dFBvczsKLSAgICAgICAgcmV0
dXJuIFRva2VuKE5BTUVURVNULCAiKiIpOworICAgICAgICByZXR1cm4gVG9rZW4oTkFNRVRFU1Qs
ICIqIl9zKTsKICAgICBjYXNlICckJzogeyAvLyAkIFFOYW1lCiAgICAgICAgIG1fbmV4dFBvcysr
OwogICAgICAgICBTdHJpbmcgbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xUUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcApp
bmRleCAzZDFjZDRjZDJjYmU4ZTA2ZGMwNzUxZTM1M2RlMTgwOTk4NDU2MmIxLi5iZTU4ZDZmNzQ0
MWNkMDgzYjIzMmE0Y2Q0NWQ0MGUxNGY0OGE1YmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3IuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFhT
TFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvRnJhZ21lbnQoTm9kZSYgc291cmNlTm9kZSwgRG8KIAog
ICAgIC8vIElmIHRoZSBvdXRwdXQgZG9jdW1lbnQgaXMgSFRNTCwgZGVmYXVsdCB0byBIVE1MIG1l
dGhvZC4KICAgICBpZiAob3V0cHV0RG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAg
cmVzdWx0TUlNRVR5cGUgPSAidGV4dC9odG1sIjsKKyAgICAgICAgcmVzdWx0TUlNRVR5cGUgPSAi
dGV4dC9odG1sIl9zOwogCiAgICAgaWYgKCF0cmFuc2Zvcm1Ub1N0cmluZyhzb3VyY2VOb2RlLCBy
ZXN1bHRNSU1FVHlwZSwgcmVzdWx0U3RyaW5nLCByZXN1bHRFbmNvZGluZykpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5j
cHAKaW5kZXggZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NC4uNWIyYjA4
N2Y4OTAyYzYyMDU5ODZlYmE3ZWJlYzA5OTg2OTBjMmZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgWFNMVFBy
b2Nlc3Nvcjo6cGFyc2VFcnJvckZ1bmModm9pZCogdXNlckRhdGEsIHhtbEVycm9yKiBlcnJvcikK
ICAgICB9CiAKICAgICAvLyB4bWxFcnJvci0+aW50MiBpcyB0aGUgY29sdW1uIG51bWJlciBvZiB0
aGUgZXJyb3Igb3IgMCBpZiBOL0EuCi0gICAgY29uc29sZS0+YWRkTWVzc2FnZShNZXNzYWdlU291
cmNlOjpYTUwsIGxldmVsLCBlcnJvci0+bWVzc2FnZSwgZXJyb3ItPmZpbGUsIGVycm9yLT5saW5l
LCBlcnJvci0+aW50Mik7CisgICAgY29uc29sZS0+YWRkTWVzc2FnZShNZXNzYWdlU291cmNlOjpY
TUwsIGxldmVsLCBTdHJpbmcgeyBlcnJvci0+bWVzc2FnZSB9LCBTdHJpbmcgeyBlcnJvci0+Zmls
ZSB9LCBlcnJvci0+bGluZSwgZXJyb3ItPmludDIpOwogfQogCiAvLyBGSVhNRTogVGhlcmUgc2Vl
bXMgdG8gYmUgbm8gd2F5IHRvIGNvbnRyb2wgdGhlIGN0eHQgcG9pbnRlciBmb3IgbG9hZGluZyBo
ZXJlLCB0aHVzIHdlIGhhdmUgZ2xvYmFscy4KQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgeG1s
RG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgIGNhc2UgWFNMVF9M
T0FEX0RPQ1VNRU5UOiB7CiAgICAgICAgIHhzbHRUcmFuc2Zvcm1Db250ZXh0UHRyIGNvbnRleHQg
PSAoeHNsdFRyYW5zZm9ybUNvbnRleHRQdHIpY3R4dDsKICAgICAgICAgeG1sQ2hhciogYmFzZSA9
IHhtbE5vZGVHZXRCYXNlKGNvbnRleHQtPmRvY3VtZW50LT5kb2MsIGNvbnRleHQtPm5vZGUpOwot
ICAgICAgICBVUkwgdXJsKFVSTCh7IH0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJh
c2UpKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJpKSk7CisgICAgICAgIFVSTCB1
cmwoVVJMKHsgfSwgU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYmFzZSkg
fSksIFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVyaSkgfSk7CiAgICAg
ICAgIHhtbEZyZWUoYmFzZSk7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAg
IFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CkBAIC0zMDAsMTEgKzMwMCwxMSBAQCBzdGF0aWMg
aW5saW5lIFN0cmluZyByZXN1bHRNSU1FVHlwZSh4bWxEb2NQdHIgcmVzdWx0RG9jLCB4c2x0U3R5
bGVzaGVldFB0ciBzaGVldAogICAgICAgICByZXN1bHRUeXBlID0gKGNvbnN0IHhtbENoYXIqKSJo
dG1sIjsKIAogICAgIGlmICh4bWxTdHJFcXVhbChyZXN1bHRUeXBlLCAoY29uc3QgeG1sQ2hhciop
Imh0bWwiKSkKLSAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiOworICAgICAgICByZXR1cm4gInRl
eHQvaHRtbCJfczsKICAgICBpZiAoeG1sU3RyRXF1YWwocmVzdWx0VHlwZSwgKGNvbnN0IHhtbENo
YXIqKSJ0ZXh0IikpCi0gICAgICAgIHJldHVybiAidGV4dC9wbGFpbiI7CisgICAgICAgIHJldHVy
biAidGV4dC9wbGFpbiJfczsKIAotICAgIHJldHVybiAiYXBwbGljYXRpb24veG1sIjsKKyAgICBy
ZXR1cm4gImFwcGxpY2F0aW9uL3htbCJfczsKIH0KIAogYm9vbCBYU0xUUHJvY2Vzc29yOjp0cmFu
c2Zvcm1Ub1N0cmluZyhOb2RlJiBzb3VyY2VOb2RlLCBTdHJpbmcmIG1pbWVUeXBlLCBTdHJpbmcm
IHJlc3VsdFN0cmluZywgU3RyaW5nJiByZXN1bHRFbmNvZGluZykKQEAgLTM3NCw3ICszNzQsNyBA
QCBib29sIFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvU3RyaW5nKE5vZGUmIHNvdXJjZU5vZGUs
IFN0cmluZyYgbWltZVR5cGUsIFN0cmluZwogCiAgICAgICAgIGlmICgoc3VjY2VzcyA9IHNhdmVS
ZXN1bHRUb1N0cmluZyhyZXN1bHREb2MsIHNoZWV0LCByZXN1bHRTdHJpbmcpKSkgewogICAgICAg
ICAgICAgbWltZVR5cGUgPSByZXN1bHRNSU1FVHlwZShyZXN1bHREb2MsIHNoZWV0KTsKLSAgICAg
ICAgICAgIHJlc3VsdEVuY29kaW5nID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocmVz
dWx0RG9jLT5lbmNvZGluZyk7CisgICAgICAgICAgICByZXN1bHRFbmNvZGluZyA9IFN0cmluZyB7
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHJlc3VsdERvYy0+ZW5jb2RpbmcpIH07CiAg
ICAgICAgIH0KICAgICAgICAgeG1sRnJlZURvYyhyZXN1bHREb2MpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggN2U2YmY0
YWEwMzY1MWFkNjE3OWEyYmI0OTdmMGFiMzA4ZmNlYTU2Ni4uMWFiOGEzNTI0YTZjZDBmOTNmYzY1
ZjFiZjgxYjVkNzMyMGVjMTY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFhNTERvY3VtZW50
UGFyc2VyOjpjcmVhdGVMZWFmVGV4dE5vZGUoKQogCiAgICAgQVNTRVJUKG1fYnVmZmVyZWRUZXh0
LnNpemUoKSA9PSAwKTsKICAgICBBU1NFUlQoIW1fbGVhZlRleHROb2RlKTsKLSAgICBtX2xlYWZU
ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZShtX2N1cnJlbnROb2RlLT5kb2N1bWVudCgpLCAiIik7Cisg
ICAgbV9sZWFmVGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUobV9jdXJyZW50Tm9kZS0+ZG9jdW1lbnQo
KSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQo
Km1fbGVhZlRleHROb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBh
MDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmJkZjdiZmM2N2RhZTFkNDMzYTZiY2QxOGFmNjZiYjQ4
YTU1M2UzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ1OCw3ICs0NTgsNyBAQCBzdGF0aWMgdm9pZCog
b3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNhY2hl
ZFJlc291cmNlTG9hZGVyLmRvY3VtZW50KCk7CiAgICAgLy8gU2FtZSBsb2dpYyBhcyBIVE1MQmFz
ZUVsZW1lbnQ6OmhyZWYoKS4gS2VlcCB0aGVtIGluIHN5bmMuCiAgICAgYXV0byogZW5jb2Rpbmcg
PSAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmRlY29kZXIoKSkgPyBkb2N1bWVudC0+ZGVjb2Rlcigp
LT5lbmNvZGluZ0ZvclVSTFBhcnNpbmcoKSA6IG51bGxwdHI7Ci0gICAgVVJMIHVybChkb2N1bWVu
dCA/IGRvY3VtZW50LT5mYWxsYmFja0Jhc2VVUkwoKSA6IFVSTCgpLCBzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXModXJpKSwgZW5jb2RpbmcpOworICAgIFVSTCB1cmwoZG9jdW1lbnQg
PyBkb2N1bWVudC0+ZmFsbGJhY2tCYXNlVVJMKCkgOiBVUkwoKSwgc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzKFN0cmluZyB7IHVyaSB9KSwgZW5jb2RpbmcpOwogCiAgICAgaWYgKCFz
aG91bGRBbGxvd0V4dGVybmFsTG9hZCh1cmwpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2Ny
aXB0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFza0Jsb2IuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2tCbG9iLmNwcAppbmRleCBhOGU3NDk5N2Q2YzQwNTBmYjIwZTgwYmQ0YWRiYjcyZDgxODQ2
ZjZjLi42ZGJiNTJkYTI1N2U3NDAzNzJjNjJkYmQzYzA0Nzc2YzYyN2I5NTk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAK
QEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBOb3RBbGxvd2VkVGV4dCA9
ICJOb3QgQWxsb3dlZCI7CiBzdGF0aWMgY29uc3QgY2hhciogaHR0cFJlcXVlc3RlZFJhbmdlTm90
U2F0aXNmaWFibGVUZXh0ID0gIlJlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUiOwogc3Rh
dGljIGNvbnN0IGNoYXIqIGh0dHBJbnRlcm5hbEVycm9yVGV4dCA9ICJJbnRlcm5hbCBTZXJ2ZXIg
RXJyb3IiOwogCi1zdGF0aWMgY29uc3QgY2hhciogY29uc3Qgd2ViS2l0QmxvYlJlc291cmNlRG9t
YWluID0gIldlYktpdEJsb2JSZXNvdXJjZSI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gd2ViS2l0
QmxvYlJlc291cmNlRG9tYWluID0gIldlYktpdEJsb2JSZXNvdXJjZSJfczsKIAogTmV0d29ya0Rh
dGFUYXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYihOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwg
QmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5LCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNs
aWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDb250ZW50U25pZmZpbmdQb2xp
Y3kgc2hvdWxkQ29udGVudFNuaWZmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4+JiBmaWxlUmVmZXJlbmNlcykKICAgICA6IE5ldHdvcmtEYXRhVGFz
ayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05v
dFVzZSwgZmFsc2UsIGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggM2U3ZjlkZGQ5MWRhODYxZjZiMWZhMTUwMGFiYTA1MzBlYTJlODgyNi4u
ZmQ1NDA5ZDc1ZmIyOWNkOGFmYjRhMzgyMDQ3ZTExYjM3YmI1YjZiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0yMDc5LDcgKzIwNzksNyBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBl
IHdvcmtlclR5cGUsIGNvbnN0IFVzZQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVNs
ZWVwRGlzYWJsZXIoU2xlZXBEaXNhYmxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiByZWFzb24sIGJvb2wgZGlzcGxheSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKCFyZWFzb24u
aXNOdWxsKCkpOwotICAgIGF1dG8gc2xlZXBEaXNhYmxlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
U2xlZXBEaXNhYmxlcj4ocmVhc29uLnV0ZjgoKS5kYXRhKCksIGRpc3BsYXkgPyBQQUw6OlNsZWVw
RGlzYWJsZXI6OlR5cGU6OkRpc3BsYXkgOiBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5cGU6OlN5c3Rl
bSk7CisgICAgYXV0byBzbGVlcERpc2FibGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTbGVlcERp
c2FibGVyPihyZWFzb24sIGRpc3BsYXkgPyBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5cGU6OkRpc3Bs
YXkgOiBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5cGU6OlN5c3RlbSk7CiAgICAgbV9zbGVlcERpc2Fi
bGVycy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShzbGVlcERpc2FibGVyKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA5MGZiYjZkZDgzM2VhYWExOTUy
MmE4ZGNiMDYyODExOTkwMGU1MjVjLi5jZjU3OWE0MzM3MDJiNWIwMGMzNmUwZWY1MmY4ZTU5OTRk
ZWMwNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00ODUs
NyArNDg1LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAgICAgfSk7CiAgICAgICAg
IG1lbW9yeVByZXNzdXJlSGFuZGxlci5pbnN0YWxsKCk7CiAKLSAgICAgICAgUEFMOjpyZWdpc3Rl
ck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LmxvZ01lbVN0YXRzIiwgW10geworICAg
ICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQubG9nTWVt
U3RhdHMiX3MsIFtdIHsKICAgICAgICAgICAgIFdlYkNvcmU6OmxvZ01lbW9yeVN0YXRpc3RpY3Mo
TG9nTWVtb3J5U3RhdGlzdGljc1JlYXNvbjo6RGVidWdOb3RpZmljYXRpb24pOwogICAgICAgICB9
KTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455855</attachid>
            <date>2022-03-26 13:54:44 -0700</date>
            <delta_ts>2022-03-28 11:45:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238408-20220326135443.patch</filename>
            <type>text/plain</type>
            <size>447631</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxOTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ3ZjIwNGU5YmM0NTc0YzQyMjQ1NzE2
MWE1MGI2NTEwYzgzNmNiNWUuLmZjYWQ3OTMxMWYyZjQyYWE1MTM1NzJiMzYzY2VkOWRmYzBmNDFh
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYkNvcmUgZm9yIG1ha2luZyB0aGUgU3Ry
aW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJlcGFyZSBXZWJDb3JlIGZvciBtYWtpbmcg
dGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQuCisgICAgICAgIE1h
a2luZyB0aGlzIGNvbnN0cnVjdG9yIGV4cGxpY2l0IGhlbHBzIGZpbmRpbmdzIGNhc2VzIHdoZXJl
IGEgU3RyaW5nIGlzIGNvbnN0cnVjdGVkCisgICAgICAgIGZyb20gYSBsaXRlcmFsIHdpdGhvdXQg
dGhlICIiX3Mgc3VmZml4LgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAg
ICAgIChXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UpOgorCiAyMDIyLTAzLTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFN0cmluZ1ZpZXc6OnNwbGl0
KCkgaW5zdGVhZCBvZiBTdHJpbmc6OnNwbGl0KCkgaW4gbW9yZSBwbGFjZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAxNTBlMGNkYmRkNTNlMTdlNWU1NGYwYTE2NzhmNGUzNDBmZmYwNjI5Li44OTU2MTQyMDkxN2M2
YTY2YjlkNmM2YWE2ZTc2Mzg2YWIwMTliNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMyIEBA
CisyMDIyLTAzLTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
UHJlcGFyZSBXZWJDb3JlIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3Ry
dWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzODQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFByZXBhcmUgV2ViQ29yZSBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciop
IGNvbnN0cnVjdG9yIGV4cGxpY2l0LgorICAgICAgICBNYWtpbmcgdGhpcyBjb25zdHJ1Y3RvciBl
eHBsaWNpdCBoZWxwcyBmaW5kaW5ncyBjYXNlcyB3aGVyZSBhIFN0cmluZyBpcyBjb25zdHJ1Y3Rl
ZAorICAgICAgICBmcm9tIGEgbGl0ZXJhbCB3aXRob3V0IHRoZSAiIl9zIHN1ZmZpeC4KKworICAg
ICAgICAqIFNjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuY3BwLmVyYjoKKyAgICAg
ICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuY3BwOgorICAgICAg
ICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oOgorICAgICAgICAq
IGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVl
cnlFdmFsdWF0b3I6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcyk6CisgICAgICAgICogZG9tL0Jyb2Fk
Y2FzdENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbDo6cG9z
dE1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bm9ybWFsaXplVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJRU9wRnJvbURyYWdPcCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpjb21wYXRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjaGFyYWN0
ZXJTZXRXaXRoVVRGOEZhbGxiYWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpwcm9jZXNzTWV0YUh0dHBFcXVpdik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0
RG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpleGVjQ29tbWFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cXVlcnlDb21tYW5kRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6cXVlcnlDb21tYW5kSW5kZXRlcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpxdWVyeUNvbW1hbmRTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnF1ZXJ5Q29tbWFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVS
ZXNpemVPYnNlcnZhdGlvbnMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnNldE91dGVySFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjphbmltYXRlKToKKyAgICAgICAgKiBkb20vSW1hZ2VPdmVybGF5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlT3ZlcmxheTo6dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdCk6
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd1Ry
ZWVGb3JUaGlzQWNyb3NzRnJhbWUgY29uc3QpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpj
aGVja1N0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp2aWV3cG9ydEVycm9yTWVzc2FnZVRlbXBsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OnZpZXdwb3J0RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnRvZ2dsZUJvbGQpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjp0b2dnbGVVbmRlcmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU3R5bGVQcmVzZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVUb2dnbGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHREZWNvcmF0aW9uQ2hhbmdlRm9yVG9nZ2xpbmcp
OgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBl
ZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRl
eHRDb21tYW5kOjppbnNlcnRUYWIpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmFkZFNwYWNlc0ZvclNtYXJ0UmVwbGFj
ZSk6CisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6b2JzZXJ2ZVBhcmFn
cmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWtBbmROb3RpZnlBY2Nlc3NpYmls
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNl
cGFyYXRvckFuZE5vdGlmeUFjY2Vzc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5n
Q29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50QW5kTm90aWZ5
QWNjZXNzaWJpbGl0eSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KToKKyAgICAgICAgKiBm
aWxlYXBpL0Jsb2JVUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlVSTDo6Y3JlYXRlSW50
ZXJuYWxVUkwpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlUmVhZGVyTG9hZGVyOjpjb252ZXJ0VG9UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVSZWFkZXJMb2FkZXI6OmNvbnZlcnRUb0RhdGFVUkwpOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENhY2hlOjpC
YWNrRm9yd2FyZENhY2hlKToKKyAgICAgICAgKiBodG1sL0VtYWlsSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKiBodG1sL0VudGVyS2V5SGludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1
dGVWYWx1ZUZvckVudGVyS2V5SGludCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6
Y3JlYXRlQmFzaWNEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2spOgor
ICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dDo6YmVzdEZpdFNvdXJjZUZyb21QaWN0dXJlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW1hZ2VFbGVtZW50OjpldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5RGVwZW5kZW5jaWVzKToK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6c2hvd1BpY2tlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNsZWVwRGlzYWJs
aW5nKToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKToKKyAgICAgICAg
KiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpj
cmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyb3BwZWRTb3VyY2VSZWN0YW5nbGVX
aXRoRm9ybWF0dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlRnJv
bUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAg
KiBodG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VGcmFnbWVudHMpOgorICAgICAgICAqIGh0bWwvUERG
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OnNlbmRQREZBcnJh
eUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6OkFOR0xFSW5zdGFuY2Vk
QXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQzo6RVhUVGV4dHVy
ZUNvbXByZXNzaW9uUkdUQyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpp
bml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZCk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMxOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlUFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0
ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JH
Qi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6
OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0I6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZWJ1
Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TERlcHRoVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6
V2ViR0xEZXB0aFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZXB0aFRleHR1cmU6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0dXBGbGFncyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBY3RpdmVVbmlm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZEV4
dGVuc2lvblN1cHBvcnRlZEZvcm1hdHNBbmRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dEltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWN5Y2xlQ29u
dGV4dCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlh
bGl6ZUZvck51bWJlclR5cGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjppbml0aWF0
b3JGb3IpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdT
Y2FubmVyOjpwcm9jZXNzQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJl
bG9hZFNjYW5uZXIuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2Fk
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlByZWxvYWRSZXF1ZXN0OjpQcmVsb2FkUmVxdWVzdCk6
CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrQ3VlOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVHZW5lcmljQm94
RWxlbWVudDo6YXBwbHlDU1NQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGllcyk6
CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVlRUUGFyc2VyOjpXZWJWVFRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRU
VHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4pOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRDb21wdXRlZFByb3BlcnRp
ZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJs
YXk6OnNldEdyaWRPdmVybGF5Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JP
dmVybGF5OjpjbGVhckdyaWRPdmVybGF5Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JPdmVybGF5OjpzZXRGbGV4T3ZlcmxheUZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheTo6Y2xlYXJGbGV4T3ZlcmxheUZvck5vZGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclN0eWxlOjpidWlsZE9iamVjdEZvclN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OnNlbGVjdG9yc0Zyb21Tb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQ6OnJlc29sdmVBbmltYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OmdldEZvbnREYXRhRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjphZGRSdWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50Ojpy
ZXNvbHZlQ29udGV4dCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0U3VwcG9y
dGVkRXZlbnROYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2hv
d0dyaWRPdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzaG93
RmxleE92ZXJsYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpzZXRFdmVudEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmJyZWFrT25VUkxJZk5lZWRlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpleGVjdXRlU1FMKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6RXhlY3V0YWJsZVdpdGhEYXRhYmFzZTo6c3RhcnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yTGF5ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVzb2x2
ZVdlYlNvY2tldCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb29raWVPYmplY3QpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEluc2VydERPTU5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVE
T01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50OjpidWlsZFBh
dXNlRGF0YUZvckRPTUJyZWFrcG9pbnQpOgorICAgICAgICAqIGxheW91dC9WZXJpZmljYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94
SW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OmNhblVzZUZvckxpbmVMYXlvdXRXaXRoUmVhc29uKToKKyAgICAgICAgKiBsb2FkZXIv
Q29udGVudEZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6dXJsU2No
ZW1lKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6YWxsb3dz
Q3Jvc3NPcmlnaW5NZXRob2QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OnZhbGlkYXRlQ3Jvc3NPcmlnaW5IZWFkZXJzIGNvbnN0
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlTG9hZEVtcHR5KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2hlY2tVUkxTY2hlbWVBc0NPUlNFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3Qp
OgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdWJtaXNz
aW9uOjpwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFu
ZEFkZEV4dHJhRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUG9z
dFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnRE
b2N1bWVudEl0ZW0pOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZWplY3RQcm9taXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRl
cjo6cmVqZWN0RGVjb2RlUHJvbWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpkZWNvZGUp
OgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9NaXhl
ZENvbnRlbnRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ1dhcm5pbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuRGlzcGxheUluc2VjdXJlQ29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpNaXhlZENvbnRlbnRDaGVja2VyOjpjYW5SdW5JbnNl
Y3VyZUNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNlbmRQaW5nKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVGb250SGFzaFNl
dCk6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVDYW52YXNBY3Rpdml0eVJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6ZGVjb2RlSGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2ViQ29yZTo6
ZGVjb2RlRm9udEhhc2hTZXQpOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlQ2FudmFzQWN0aXZp
dHlSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3RyaW5n
IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCk6CisgICAgICAgICogbG9hZGVyL1NlcnZlclRpbWluZ1Bh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2ZXJUaW1pbmdQYXJzZXI6OnBhcnNlU2Vy
dmVyVGltaW5nKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KToKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRDU1NTdHlsZVNoZWV0OjpDYWNoZWRDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmRpZEFkZENsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRDU1NTdHlsZVNoZWV0OjplbmNvZGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
Ojpsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OkNhY2hlZFNWR0RvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZyBjb25zdCk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0
OjplbmNvZGluZyBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6Q2FjaGVk
WFNMU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0Ojpl
bmNvZGluZyBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpNZW1vcnlDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlDYWNoZTo6b3JpZ2luc1dpdGhDYWNoZSBjb25zdCk6CisgICAgICAgICog
bWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydE1hdGhT
aXplSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6
OmNhcHRpb25zVGV4dEVkZ2VDU1MgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cHJpbnQpOgorICAgICAgICAqIHBhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJv
bGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6
ZXh0ZW5kKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6OnByaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWxlcnQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpjb25maXJtRm9yQmluZGluZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwcm9tcHQpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
V2luZG93OjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnQpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRT
b3VyY2U6OmNvbm5lY3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlUmVnRXhwRm9yTGFiZWxzKToKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoTGFi
ZWxzQWdhaW5zdFN0cmluZyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGp1c3RNZWRpYVR5cGVGb3JQcmludGluZyk6CisgICAg
ICAgICogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZVJvb3RNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6
OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Mb2dnZWRJblN0YXR1cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMb2dnZWRJblN0YXR1czo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRv
ckJhc2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9RdWlya3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVp
cmsgY29uc3QpOgorICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VEaWFsb2dGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpib29sRmVh
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpmbG9hdEZlYXR1cmUpOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zb2xl
TWVzc2FnZUZvclZpb2xhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmFsbG93RXZhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3k6OnJlcG9ydEludmFsaWRQbHVnaW5UeXBlcyBjb25zdCk6CisgICAgICAgICogcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzaG91bGRSZXBvcnRT
YW1wbGUgY29uc3QpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzLmNwcDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lcy5oOgorICAgICAgICAqIHBsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lz
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbEJ1aWx0aW5TY2hlbWVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYTWVu
dUxpc3RQb3B1cEFjdGlvblZlcmIpOgorICAgICAgICAoV2ViQ29yZTo6QVhNZW51TGlzdEFjdGlv
blZlcmIpOgorICAgICAgICAoV2ViQ29yZTo6QVhMaXN0SXRlbUFjdGlvblZlcmIpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NsZWVwRGlzYWJsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xlZXBE
aXNhYmxlcjo6U2xlZXBEaXNhYmxlcik6CisgICAgICAgICogcGxhdGZvcm0vU2xlZXBEaXNhYmxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRGF0YWJhc2U6OkhSVEZEYXRhYmFzZSk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Q
cml2YXRlOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRpb1ZpZGVvVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VMaWNlbnNlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlTGljZW5zZVJlbGVhc2VBY2tub3dsZWRnZW1lbnRGb3JtYXQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZGVzY3JpcHRp
b24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZTo6dG9KU09OU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0aWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVjRnJvbUZvcm1hdERlc2NyaXB0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVZpZGVvSW5mb0Zyb21WUDlIZWFkZXJQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlVmlkZW9JbmZvRnJvbVZQOEhlYWRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlV2ViTTo6Y29kZWMgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
RUJsZW5kOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6Omhhc2hTdHJpbmdXaXRoU2FsdCk6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9SVENOb3RpZmllcnNNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURhdGFDaGFu
bmVsTm90aWZpZXI6OmZpcmUpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyc0Nv
bnRyb2xsZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcnNDb250cm9sbGVy
TW9jazo6bW91c2VFbnRlcmVkQ29udGVudEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyc0NvbnRyb2xsZXJNb2NrOjptb3VzZU1vdmVkSW5Db250ZW50QXJlYSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJzQ29udHJvbGxlck1vY2s6Om1vdXNlRXhpdGVkQ29udGVudEFyZWEp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWltZVR5cGVDYWNoZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9y
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFVUkxEZWNvZGVyOjpEZWNvZGVUYXNrOjpwcm9jZXNzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlU3RydWN0dXJlZEZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVFRQ
SGVhZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VB
Y2Nlc3NRdWlya3MpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OmNoYXJzZXQgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmZpbHRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2luZ1Byb3h5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5l
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2NrZXRT
dHJlYW1IYW5kbGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmFkZENPTk5FQ1RDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6
YXV0aG9yaXplckZ1bmN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVu
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6cmVuZGVyTmFtZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvdW50ZXI6OnJl
bmRlck5hbWUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OnJlbmRlck5hbWUgY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6cmVuZGVyTmFt
ZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZyYWdtZW50ZWRGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1l
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZW5kZXJOYW1lIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJIVE1MQ2FudmFzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpyZW5kZXJO
YW1lIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0ZVByaW1hcnlHcmFwaGljc0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6ZW5zdXJlQ2xpcHBpbmdTdGFja0xheWVycyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURlc2NlbmRhbnRD
bGlwcGluZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZU1hc2tpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZUNoaWxkQ2xpcHBpbmdTdHJhdGVneSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVNjcm9sbGluZ0xheWVycyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTWVkaWEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTW9kZWwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uRmxvdzo6cmVuZGVyTmFtZSBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6cmVuZGVyTmFtZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpyZW5kZXJOYW1lIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6b3V0cHV0UmVuZGVyT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclByb2dy
ZXNzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3RlLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxp
Y2EuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJSdWJ5QmFzZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5UnVu
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
YWJsZUNvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpyZW5kZXJOYW1l
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFRhZ05hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWaWRlby5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmg6CisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxQYWRkZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
b3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1No
YXBlT3V0c2lkZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tTaGFwZUltYWdlT3Jp
Z2luKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSZWN0Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSb290Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9M
ZWdhY3lSZW5kZXJTVkdTaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Q29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFya2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVJhZGlhbEdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQ
YXRoLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5l
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHQ29udGFpbmVyTGF5b3V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0NvbnRhaW5lckxheW91dDo6dmVyaWZ5TGF5b3V0TG9jYXRpb25D
b25zaXN0ZW5jeSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRTdHJlYW1TZXBhcmF0b3I6OlRleHRTdHJlYW1T
ZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdGaWxsUGFpbnRpbmdSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVNWR1N0cm9rZVBhaW50aW5nUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6d3JpdGVTdGFuZGFyZFByZWZpeCk6CisgICAgICAgICogc3ZnL0xp
bmVhckdyYWRpZW50QXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZWFyR3JhZGll
bnRBdHRyaWJ1dGVzOjpMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHN2Zy9S
YWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlhbEdyYWRp
ZW50QXR0cmlidXRlczo6UmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcv
U1ZHRml0VG9WaWV3Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpdFRvVmlld0JveDo6
cGFyc2VWaWV3Qm94R2VuZXJpYyk6CisgICAgICAgICogc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHZW9tZXRyeUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZVZhbGlkaXR5VG9Ub1N0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpyZXNwb25zZVNvdXJjZVRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjplbGVtZW50QnVmZmVyaW5nUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6Y3JlYXRlU2xlZXBEaXNhYmxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmxvYWRBcnR3b3JrSW1hZ2UpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzTWFwTGlr
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHNNYXBMaWtlOjpJbnRlcm5hbHNNYXBM
aWtlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBvc2l0aW9u
U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpwbGF5YmFja1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnRyYWNrSWRlbnRpZmllckNoYW5nZWQpOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmg6CisgICAgICAg
ICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpsYXllclRyZWVBc1RleHQpOgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpu
b3RpZnlFcnJvcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRk
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjplbnN1cmVWYWxpZFJlY29yZHNUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVWaWFD
YWNoZVRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmtlclR5cGVUb1N0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OmNyZWF0
ZSk6CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgor
ICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnVzZXJBZ2VudCBjb25zdCk6CisgICAgICAgICogeG1s
L1hNTEVycm9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxFcnJvcnM6OmhhbmRsZUVycm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEVycm9yczo6YXBwZW5kRXJyb3JNZXNzYWdlKToKKyAg
ICAgICAgKiB4bWwvWE1MRXJyb3JzLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VDaGFyc2V0SW5NZWRpYVR5cGVJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0VGltZW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVEZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKiB4bWwvWFBhdGhQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlBhcnNlcjo6bmV4dFRva2VuSW50ZXJuYWwp
OgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhT
TFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvRnJhZ21lbnQpOgorICAgICAgICAqIHhtbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpwYXJz
ZUVycm9yRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OnJlc3VsdE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNz
b3I6OnRyYW5zZm9ybVRvU3RyaW5nKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGVM
ZWFmVGV4dE5vZGUpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GdW5jKToKKwogMjAyMi0wMy0yNSAgTmlr
b2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNv
cnJlY3QgaGFuZGxpbmcgb2YgTmFOIGluc2lkZSBjYWxjKCkgZm9yIHRvcC1sZXZlbCBjYWxjdWxh
dGlvbgpAQCAtMzA2LDYgKzkzNSwxMiBAQAogICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwOgogICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOjpwYWludFRvVGV4dHVyZU1hcHBlcik6
CiAKKzIwMjItMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBVbnJldmlld2VkLCB1cGRhdGUgRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QuCisK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKwogMjAyMi0wMy0y
NSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IEFkZCBjc3MtdHlwZWQtb20gY29sb3IgSURMIHNrZWxldG9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5k
ZXggOWExOGZjNmRhZTU1ZDdiZTdmMmY4MzY0Mjk2MzFjY2Y1ODRmOTljYy4uZjUwOWNlOGNhMGVj
MjA5ZWZlYzk5MDljOGVhMzc0MTcxYTEyZDRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzEgQEAKKzIwMjItMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBQcmVwYXJlIFdlYkNvcmUgZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIq
KSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM4NDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUHJlcGFyZSBXZWJDb3JlIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25z
dCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQuCisgICAgICAgIE1ha2luZyB0aGlzIGNvbnN0
cnVjdG9yIGV4cGxpY2l0IGhlbHBzIGZpbmRpbmdzIGNhc2VzIHdoZXJlIGEgU3RyaW5nIGlzIGNv
bnN0cnVjdGVkCisgICAgICAgIGZyb20gYSBsaXRlcmFsIHdpdGhvdXQgdGhlICIiX3Mgc3VmZml4
LgorCisgICAgICAgICogcGFsL0xvZ2dpbmcuY3BwOgorICAgICAgICAoUEFMOjpyZWdpc3Rlck5v
dGlmeUNhbGxiYWNrKToKKyAgICAgICAgKiBwYWwvTG9nZ2luZy5oOgorICAgICAgICAqIHBhbC9z
eXN0ZW0vU2xlZXBEaXNhYmxlci5jcHA6CisgICAgICAgIChQQUw6OlNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChQQUw6OlNsZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIpOgorICAg
ICAgICAqIHBhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5oOgorICAgICAgICAqIHBhbC9zeXN0ZW0v
Y29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmNwcDoKKyAgICAgICAgKFBBTDo6U2xlZXBEaXNhYmxl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFBBTDo6U2xlZXBEaXNhYmxlckNvY29hOjpTbGVlcERpc2Fi
bGVyQ29jb2EpOgorICAgICAgICAqIHBhbC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29h
Lmg6CisgICAgICAgICogcGFsL3N5c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmNwcDoKKyAg
ICAgICAgKFBBTDo6U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKToKKyAgICAgICAgKFBBTDo6U2xlZXBE
aXNhYmxlckdMaWI6OlNsZWVwRGlzYWJsZXJHTGliKToKKyAgICAgICAgKFBBTDo6U2xlZXBEaXNh
YmxlckdMaWI6OmFjcXVpcmVJbmhpYml0b3IpOgorICAgICAgICAqIHBhbC9zeXN0ZW0vZ2xpYi9T
bGVlcERpc2FibGVyR0xpYi5oOgorCiAyMDIyLTAzLTI0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBSRUdSRVNTSU9OKHIyODEyOTEp
OiBXaGVuIGFjY2Vzc2liaWxpdHkgYm9sZCBpcyBlbmFibGVkLCBmb250LWZhbWlseTpzeXN0ZW0t
dWkgaXMgc3VwcG9zZWQgdG8gYmUgYm9sZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZWRkMTJmZDgwOTUxYjk4OWIz
MTY4M2JkYzRjMWEyN2YyMTRlOGZjLi40OGI4ZDM0Mjg5Yjk4M2ZiOTdkNDg2MTlmOWEzOWU3OWNh
M2ZlYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAzLTI1ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlcGFyZSBXZWJDb3JlIGZvciBtYWtp
bmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODQwOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXBhcmUgV2ViQ29yZSBm
b3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIGV4cGxpY2l0Lgor
ICAgICAgICBNYWtpbmcgdGhpcyBjb25zdHJ1Y3RvciBleHBsaWNpdCBoZWxwcyBmaW5kaW5ncyBj
YXNlcyB3aGVyZSBhIFN0cmluZyBpcyBjb25zdHJ1Y3RlZAorICAgICAgICBmcm9tIGEgbGl0ZXJh
bCB3aXRob3V0IHRoZSAiIl9zIHN1ZmZpeC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVNsZWVw
RGlzYWJsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAyMi0wMy0y
NSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBUZW1w
b3JhcmlseSBkaXNhYmxlIGFzc2VydGlvbiBpbiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJ
bXBsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDU5NmJiNTAzYzY2ZGIwNDI4MThjZmRi
NGE1MWU4YzJhZWViOWM1YjguLjEwZmVjZDg5NjBmOWYyNTE2YjEyY2UxMDU5MDUyMmE3YjA2Zjlm
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMzcxLDYgKzM3MSw3IEBAIHRlbXBsYXRl
PHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0
b3I8Y2hhciwgaW5saW5lCiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5l
Q2FwYWNpdHk+JiBiKSB7IHJldHVybiBiICE9IGE7IH0KIAogYm9vbCBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IFN0cmluZyYsIEFTQ0lJTGl0ZXJhbCk7CiBib29sIGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOwogCiB0ZW1wbGF0ZTx1bnNp
Z25lZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3Ry
aW5nJiwgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pOwpAQCAtNTk4LDYg
KzU5OSwxMSBAQCBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
ZyYgYSwgY29uc3QgY2hhciogYikKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShh
LmltcGwoKSwgYik7CiB9CiAKK2lubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgU3RyaW5nJiBhLCBBU0NJSUxpdGVyYWwgYikKK3sKKyAgICByZXR1cm4gZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShhLmltcGwoKSwgYi5jaGFyYWN0ZXJzKCkpOworfQorCiB0ZW1wbGF0ZTx1bnNp
Z25lZCBsZW5ndGg+IGlubGluZSBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVts
ZW5ndGhdKQogewogICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZy5pbXBsKCksIGxvd2VyY2FzZUxldHRlcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9Mb2dnaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2lu
Zy5jcHAKaW5kZXggMDBiN2VkODQ1OGI3ZjNlYTg1NGMxZWJhYWJjNmEzNDY0NmU4MGJjYS4uMjZj
M2M2OGIwMTcyNmQ0YWM3MjM0ZGNjY2ZiNGFjNDkwMzM5NDRlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9Mb2dnaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L0xvZ2dpbmcuY3BwCkBAIC0zNSwxMSArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFBBTCB7CiAKLXZv
aWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmIG5vdGlmeUlELCBGdW5jdGlv
bjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soQVNDSUlM
aXRlcmFsIG5vdGlmeUlELCBGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgaW50IHRva2VuOwotICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRj
aChub3RpZnlJRC51dGY4KCkuZGF0YSgpLCAmdG9rZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIG1ha2VCbG9ja1B0cihbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oaW50KSB7Cisg
ICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKG5vdGlmeUlELmNoYXJhY3RlcnMoKSwgJnRva2Vu
LCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGludCkgewogICAgICAgICBjYWxsYmFjaygpOwogICAgIH0pLmdldCgp
KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5oCmluZGV4IDMwYThlNWUxMzFkNmIzOGQ0
YThlZDYzZWI1ZGM5ZDU0ZDM5ODg0YjMuLjkxYjVlNWI1N2UyZGJlNWQyYzYwYWU4ZWE0YjczZWVi
MjViMWQ0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5oCkBAIC0yOSw3ICsyOSw3IEBACiAK
IG5hbWVzcGFjZSBQQUwgewogCi1QQUxfRVhQT1JUIHZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFj
ayhjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKCk+JiYpOworUEFMX0VYUE9SVCB2b2lkIHJl
Z2lzdGVyTm90aWZ5Q2FsbGJhY2soQVNDSUlMaXRlcmFsLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwog
CiB9IC8vIG5hbWVzcGFjZSBQQUwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3Rl
bS9TbGVlcERpc2FibGVyLmNwcAppbmRleCA0NmRiNThmNTY0MDJlYTgyNzgyNjQxMWU5M2Q5MzBl
ZjhmZWViNDRiLi44NGIzODg4MDY2ZGQxYmUxMDdlYTRhZjc5MDA1NzhkNWNiYmRiMjI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9TbGVlcERpc2FibGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9TbGVlcERpc2FibGVyLmNwcApAQCAt
MjYsMTYgKzI2LDE4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2xlZXBEaXNh
Ymxlci5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKIG5hbWVzcGFjZSBQ
QUwgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEdMSUIpCi1zdGQ6OnVuaXF1ZV9w
dHI8U2xlZXBEaXNhYmxlcj4gU2xlZXBEaXNhYmxlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNv
biwgVHlwZSB0eXBlKQorc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+IFNsZWVwRGlzYWJs
ZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHJlYXNvbiwgVHlwZSB0eXBlKQogewogICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4obmV3IFNsZWVwRGlzYWJsZXIocmVhc29u
LCB0eXBlKSk7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEdMSUIpCiAK
LVNsZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciosIFR5cGUgdHlwZSkKK1Ns
ZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIoY29uc3QgU3RyaW5nJiwgVHlwZSB0eXBlKQogICAg
IDogbV90eXBlKHR5cGUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3N5c3RlbS9TbGVlcERpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9T
bGVlcERpc2FibGVyLmgKaW5kZXggZGMwOWU5NDk5NGE4ZDQ0NTZlNTIzMTdkMDFkN2RjY2FjMDMx
ZWJiYS4uNmI5ZjRlMjc1ODg4YTI4NzExZTZkOTExNDk3YzdhNzcxNDA4MjUyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL1NsZWVwRGlzYWJsZXIuaApAQCAtMjUsNiArMjUs
OCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVz
cGFjZSBQQUwgewogCiBjbGFzcyBTbGVlcERpc2FibGVyIHsKQEAgLTMzLDEzICszNSwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIFN5c3RlbSwKICAgICAgICAgRGlzcGxheSwKICAgICB9OwotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gY3JlYXRlKGNvbnN0IGNoYXIqLCBU
eXBlKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+IGNyZWF0ZShj
b25zdCBTdHJpbmcmLCBUeXBlKTsKICAgICBQQUxfRVhQT1JUIHZpcnR1YWwgflNsZWVwRGlzYWJs
ZXIoKTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgUEFMX0VYUE9SVCBTbGVlcERpc2FibGVyKGNvbnN0IGNoYXIqLCBUeXBlKTsK
KyAgICBQQUxfRVhQT1JUIFNsZWVwRGlzYWJsZXIoY29uc3QgU3RyaW5nJiwgVHlwZSk7CiAgICAg
VHlwZSBtX3R5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5
c3RlbS9jb2NvYS9TbGVlcERpc2FibGVyQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmNwcAppbmRleCBlMWMwZDIwMDkwZDM2
YTY3Y2U5YjUxMGEwYmYwMTAwYjk5MTc4NDg4Li5kOTBmMGQ2YTRmYTMxODA3MWJlMDk4M2E3YTAw
M2I1NDE4M2RlOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9j
b2NvYS9TbGVlcERpc2FibGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3lzdGVtL2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5jcHAKQEAgLTMwLDE4ICszMCwxOSBAQAog
CiAjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1BNTGliU1BJLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
UEFMIHsKIAotc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+IFNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZShjb25zdCBjaGFyKiByZWFzb24sIFR5cGUgdHlwZSkKK3N0ZDo6dW5pcXVlX3B0cjxTbGVl
cERpc2FibGVyPiBTbGVlcERpc2FibGVyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiByZWFzb24sIFR5
cGUgdHlwZSkKIHsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+KG5l
dyBTbGVlcERpc2FibGVyQ29jb2EocmVhc29uLCB0eXBlKSk7CiB9CiAKLVNsZWVwRGlzYWJsZXJD
b2NvYTo6U2xlZXBEaXNhYmxlckNvY29hKGNvbnN0IGNoYXIqIHJlYXNvbiwgVHlwZSB0eXBlKQor
U2xlZXBEaXNhYmxlckNvY29hOjpTbGVlcERpc2FibGVyQ29jb2EoY29uc3QgU3RyaW5nJiByZWFz
b24sIFR5cGUgdHlwZSkKICAgICA6IFNsZWVwRGlzYWJsZXIocmVhc29uLCB0eXBlKQogewotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVhc29uQ0YgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVhc29uLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgpKTsKKyAgICBhdXRvIHJlYXNvbkNGID0gcmVhc29uLmNyZWF0ZUNGU3RyaW5nKCk7CiAK
ICAgICBDRlN0cmluZ1JlZiBhc3NlcnRpb25UeXBlOwogICAgIHN3aXRjaCAodHlwZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxl
ckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9jb2NvYS9TbGVlcERpc2Fi
bGVyQ29jb2EuaAppbmRleCBhODFhN2U3ODdiMTMxMDJlYTMxMTlhNGY1YTg5YzA3MzkzYTU5M2Vh
Li4wMGMyNGZiNTQ1NjEzNzVjYTcyODA1YWU3MWVhOWE3YzdjYzJmODcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9jb2NvYS9TbGVlcERpc2FibGVyQ29jb2EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9jb2NvYS9TbGVlcERpc2FibGVyQ29j
b2EuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgUEFMIHsKIAogY2xhc3MgU2xlZXBEaXNh
YmxlckNvY29hIDogcHVibGljIFNsZWVwRGlzYWJsZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0
IFNsZWVwRGlzYWJsZXJDb2NvYShjb25zdCBjaGFyKiwgVHlwZSk7CisgICAgZXhwbGljaXQgU2xl
ZXBEaXNhYmxlckNvY29hKGNvbnN0IFN0cmluZyYsIFR5cGUpOwogICAgIHZpcnR1YWwgflNsZWVw
RGlzYWJsZXJDb2NvYSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zeXN0ZW0vZ2xpYi9TbGVlcERpc2FibGVyR0xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3N5c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmNwcAppbmRleCA5MTUxY2Rk
OWI4ODMzMWRkZTRlZTJkZDMzNTk0ODE0MmY2MGYzOTYwLi5kOGMyNDEwODM2MzVkMGY0MmM3NDdl
MjQyMmQ5MWYwZWY3OTRhNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5
c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3N5c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmNwcApAQCAtMzIsMTIgKzMyLDEyIEBA
CiAKIG5hbWVzcGFjZSBQQUwgewogCi1zdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gU2xl
ZXBEaXNhYmxlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNvbiwgVHlwZSB0eXBlKQorc3RkOjp1
bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+IFNsZWVwRGlzYWJsZXI6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIHJlYXNvbiwgVHlwZSB0eXBlKQogewogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U2xl
ZXBEaXNhYmxlcj4obmV3IFNsZWVwRGlzYWJsZXJHTGliKHJlYXNvbiwgdHlwZSkpOwogfQogCi1T
bGVlcERpc2FibGVyR0xpYjo6U2xlZXBEaXNhYmxlckdMaWIoY29uc3QgY2hhciogcmVhc29uLCBU
eXBlIHR5cGUpCitTbGVlcERpc2FibGVyR0xpYjo6U2xlZXBEaXNhYmxlckdMaWIoY29uc3QgU3Ry
aW5nJiByZWFzb24sIFR5cGUgdHlwZSkKICAgICA6IFNsZWVwRGlzYWJsZXIocmVhc29uLCB0eXBl
KQogICAgICwgbV9jYW5jZWxsYWJsZShhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSkpCiAg
ICAgLCBtX3JlYXNvbihyZWFzb24pCkBAIC04OSwxMCArODksMTAgQEAgdm9pZCBTbGVlcERpc2Fi
bGVyR0xpYjo6YWNxdWlyZUluaGliaXRvcigpCiAgICAgaWYgKHNob3VsZFVzZVBvcnRhbCgpKSB7
CiAgICAgICAgIEdWYXJpYW50QnVpbGRlciBidWlsZGVyOwogICAgICAgICBnX3ZhcmlhbnRfYnVp
bGRlcl9pbml0KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKLSAgICAgICAgZ192
YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2fSIsICJyZWFzb24iLCBnX3ZhcmlhbnRf
bmV3X3N0cmluZyhtX3JlYXNvbi5kYXRhKCkpKTsKKyAgICAgICAgZ192YXJpYW50X2J1aWxkZXJf
YWRkKCZidWlsZGVyLCAie3N2fSIsICJyZWFzb24iLCBnX3ZhcmlhbnRfbmV3X3N0cmluZyhtX3Jl
YXNvbi51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIHBhcmFtZXRlcnMgPSBnX3ZhcmlhbnRfbmV3
KCIoc3VAYXtzdn0pIiwgIiIgLyogbm8gd2luZG93ICovLCA4IC8qIGlkbGUgKi8sIGdfdmFyaWFu
dF9idWlsZGVyX2VuZCgmYnVpbGRlcikpOwogICAgIH0gZWxzZQotICAgICAgICBwYXJhbWV0ZXJz
ID0gZ192YXJpYW50X25ldygiKHNzKSIsIGdfZ2V0X3ByZ25hbWUoKSwgbV9yZWFzb24uZGF0YSgp
KTsKKyAgICAgICAgcGFyYW1ldGVycyA9IGdfdmFyaWFudF9uZXcoIihzcykiLCBnX2dldF9wcmdu
YW1lKCksIG1fcmVhc29uLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgZ19kYnVzX3Byb3h5X2NhbGwo
bV9zY3JlZW5TYXZlclByb3h5LmdldCgpLCAiSW5oaWJpdCIsIHBhcmFtZXRlcnMsIEdfREJVU19D
QUxMX0ZMQUdTX05PTkUsIC0xLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBbXShHT2JqZWN0KiBwcm94
eSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3lzdGVtL2dsaWIvU2xlZXBEaXNhYmxlckdMaWIuaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3lzdGVtL2dsaWIvU2xlZXBEaXNhYmxlckdMaWIuaAppbmRleCA4ZGJmOTU3OTRjMTk5
NjEwNTkyYzg3ZDFmYWE3NDkyZTgxYjU2YjE5Li40MWJjNTAxOTExZjIxZTJlNjVkNThhNzEzMzg2
MmM4MWU1NTQ3Y2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9n
bGliL1NsZWVwRGlzYWJsZXJHTGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0
ZW0vZ2xpYi9TbGVlcERpc2FibGVyR0xpYi5oCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRl
IDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX0dEQnVzUHJveHkgR0RCdXNQcm94eTsKIApAQCAtMzcs
NyArMzcsNyBAQCBuYW1lc3BhY2UgUEFMIHsKIAogY2xhc3MgU2xlZXBEaXNhYmxlckdMaWIgZmlu
YWwgOiBwdWJsaWMgU2xlZXBEaXNhYmxlciB7CiBwdWJsaWM6Ci0gICAgU2xlZXBEaXNhYmxlckdM
aWIoY29uc3QgY2hhciosIFR5cGUpOworICAgIFNsZWVwRGlzYWJsZXJHTGliKGNvbnN0IFN0cmlu
ZyYsIFR5cGUpOwogICAgIHZpcnR1YWwgflNsZWVwRGlzYWJsZXJHTGliKCk7CiAKIHByaXZhdGU6
CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9zY3JlZW5TYXZlckNv
b2tpZSB7IDAgfTsKICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IG1faW5oaWJpdFBvcnRhbFJlcXVl
c3RPYmplY3RQYXRoOwogICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBtX2NhbmNlbGxhYmxlOwot
ICAgIENTdHJpbmcgbV9yZWFzb247CisgICAgU3RyaW5nIG1fcmVhc29uOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgUEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdz
VGVtcGxhdGVzL1NldHRpbmdzLmNwcC5lcmIgYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRp
bmdzVGVtcGxhdGVzL1NldHRpbmdzLmNwcC5lcmIKaW5kZXggN2U5MWQzNWMzOWJlNDYyMGI3MzRk
YzY3NGYyYjFhZjYxN2JmODM1ZC4uYTE1NzU5YzAzY2JiNWJlOWVlYWI5ZDY2YzRiZGUxZjM2ZmM0
YjZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRl
cy9TZXR0aW5ncy5jcHAuZXJiCisrKyBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NU
ZW1wbGF0ZXMvU2V0dGluZ3MuY3BwLmVyYgpAQCAtMzgsNyArMzgsMTEgQEAKICNpZiA8JT0gQHNl
dHRpbmcuY29uZGl0aW9uICU+CiA8JS0gICBlbmQgLSU+CiA8JS0gICBpZiBAc2V0dGluZy5kZWZh
dWx0VmFsdWVzLnNpemUoKSA9PSAxIC0lPgorPCUtICAgICBpZiBAc2V0dGluZy50eXBlID09ICJT
dHJpbmciIGFuZCBAc2V0dGluZy5kZWZhdWx0VmFsdWVzWydkZWZhdWx0J11bLTFdID09ICJcIiIg
LSU+CisjZGVmaW5lIFNFVFRJTkdfREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBzZXR0aW5nLm5hbWUg
JT4gPCU9IEBzZXR0aW5nLmRlZmF1bHRWYWx1ZXNbJ2RlZmF1bHQnXSAlPl9zCis8JS0gICAgIGVs
c2UgLSU+CiAjZGVmaW5lIFNFVFRJTkdfREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBzZXR0aW5nLm5h
bWUgJT4gPCU9IEBzZXR0aW5nLmRlZmF1bHRWYWx1ZXNbJ2RlZmF1bHQnXSAlPgorPCUtICAgICBl
bmQgLSU+CiA8JS0gICBlbHNlIC0lPgogPCUtICAgICBAc2V0dGluZy5kZWZhdWx0VmFsdWVzLmVh
Y2hfd2l0aF9pbmRleCBkbyB8KGtleSwgdmFsdWUpLCBpbmRleHwgLSU+CiA8JS0gICAgICAgaWYg
aW5kZXggPT0gMCAtJT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuY3BwCmluZGV4IDY0OWJkNzBmNjUxMDQ1Mzhk
YzE4OGY0NDhjZTE0ZjZhZTQwODRhZmEuLjRmMjExNjU3NmRhNTljMWRhMjEyMWIyMGNlOTA3Yjc2
NzljNjY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25FcnJvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIAotY29uc3QgY2hh
ciogV2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4gPSAiV2ViS2l0Q29udGVudEJsb2NrZXJEb21h
aW4iOworQVNDSUlMaXRlcmFsIFdlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluID0gIldlYktpdENv
bnRlbnRCbG9ja2VyRG9tYWluIl9zOwogCiBjb25zdCBzdGQ6OmVycm9yX2NhdGVnb3J5JiBjb250
ZW50RXh0ZW5zaW9uRXJyb3JDYXRlZ29yeSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oCmluZGV4IGEyNDVk
OTNlNTAyNGQyMzllNjNkNGNkNjJjY2IxOGU2ZDE1OTk3MzIuLmU4YWQzNTM5ZGI4ZTViN2IxODc5
Y2E5NjRlMTYxZDExYWJjNWI2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oCkBAIC04NCw3ICs4NCw3IEBA
IGVudW0gY2xhc3MgQ29udGVudEV4dGVuc2lvbkVycm9yIHsKICAgICBFcnJvcldyaXRpbmdTZXJp
YWxpemVkTkZBLAogfTsKIAotZXh0ZXJuIGNvbnN0IGNoYXIqIFdlYktpdENvbnRlbnRCbG9ja2Vy
RG9tYWluOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbjsK
ICAgICAKIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHN0ZDo6ZXJyb3JfY2F0ZWdvcnkmIGNvbnRlbnRF
eHRlbnNpb25FcnJvckNhdGVnb3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5
RXZhbHVhdG9yLmNwcAppbmRleCBkOTk0ODYzMDIzMThjNzZmOTY4M2JhMjFjOTFiYmIyMGEwYTM0
NDc4Li42Yzg3ZTRmODk0MWFiYzhkYTk4Mjk4MzNhOTI3NTk3NWRkYzJjOTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC05NTMsNyArOTUzLDcgQEAg
Ym9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRpYUF0dHJpYnV0ZU1hdGNoZXMoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQucmVuZGVyVmll
dygpKTsKICAgICBhdXRvIG1lZGlhUXVlcmllcyA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShhdHRy
aWJ1dGVWYWx1ZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKLSAgICByZXR1
cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iLCBkb2N1bWVudCwgJmRvY3VtZW50LnJl
bmRlclZpZXcoKS0+c3R5bGUoKSB9LmV2YWx1YXRlKG1lZGlhUXVlcmllcy5nZXQoKSk7CisgICAg
cmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgJmRvY3Vt
ZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSB9LmV2YWx1YXRlKG1lZGlhUXVlcmllcy5nZXQoKSk7
CiB9CiAKIH0gLy8gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2Fk
Y2FzdENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3Bw
CmluZGV4IGI4NGI3NGU5NjJiMTg4NTM2MTk4YjNiMWJmZTJjMjgwNmY2ODVkYTUuLmNmYzlhYjhk
M2FmZGMwNjQ3ODE5YTM3Njc5Y2U2MTc4ZDIyZDNkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJv
YWRjYXN0Q2hhbm5lbC5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBC
cm9hZGNhc3RDaGFubmVsOjpwb3N0TWVzc2FnZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplYwogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIlRoaXMgQnJvYWRjYXN0Q2hh
bm5lbCBpcyBjbG9zZWQiIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgIlRoaXMgQnJvYWRjYXN0Q2hhbm5lbCBpcyBjbG9zZWQiX3MgfTsKIAogICAgIFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKICAgICBhdXRvIG1lc3NhZ2VEYXRhID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtZXNzYWdlLCB7IH0s
IHBvcnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggODZhYjg4OWJjMGVh
MTVhNTQ3MzU3ZmI2NGRmZjlmMTBiODYyZGM1NC4uYWNhZjA4Y2JkMTU4NTg5M2QyNjhhZjljY2Jl
YWIzNDZjMDBhOTM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTEyNywx
MSArMTI3LDExIEBAIHN0YXRpYyBTdHJpbmcgbm9ybWFsaXplVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpCiAKICAgICBTdHJpbmcgbG93ZXJjYXNlVHlwZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyh0eXBlKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgIGlmIChsb3dl
cmNhc2VUeXBlID09ICJ0ZXh0IiB8fCBsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvcGxh
aW47IikpCi0gICAgICAgIHJldHVybiAidGV4dC9wbGFpbiI7CisgICAgICAgIHJldHVybiAidGV4
dC9wbGFpbiJfczsKICAgICBpZiAobG93ZXJjYXNlVHlwZSA9PSAidXJsIiB8fCBsb3dlcmNhc2VU
eXBlLnN0YXJ0c1dpdGgoInRleHQvdXJpLWxpc3Q7IikpCi0gICAgICAgIHJldHVybiAidGV4dC91
cmktbGlzdCI7CisgICAgICAgIHJldHVybiAidGV4dC91cmktbGlzdCJfczsKICAgICBpZiAobG93
ZXJjYXNlVHlwZS5zdGFydHNXaXRoKCJ0ZXh0L2h0bWw7IikpCi0gICAgICAgIHJldHVybiAidGV4
dC9odG1sIjsKKyAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiX3M7CiAKICAgICByZXR1cm4gbG93
ZXJjYXNlVHlwZTsKIH0KQEAgLTYzMSwyNSArNjMxLDI1IEBAIHN0YXRpYyBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gZHJhZ09wRnJvbUlFT3AoY29uc3QgU3RyaW5nJiBvcGVyYXRpb24pCiAgICAg
cmV0dXJuIHsgRHJhZ09wZXJhdGlvbjo6UHJpdmF0ZSB9OyAvLyBSZWFsbHkgYSBtYXJrZXIgZm9y
ICJubyBjb252ZXJzaW9uIi4KIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIElFT3BGcm9tRHJhZ09w
KE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrKQorc3RhdGljIEFTQ0lJTGl0
ZXJhbCBJRU9wRnJvbURyYWdPcChPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFz
aykKIHsKICAgICBib29sIGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb25NYXNrLmNvbnRhaW5zQW55
KHsgRHJhZ09wZXJhdGlvbjo6R2VuZXJpYywgRHJhZ09wZXJhdGlvbjo6TW92ZSB9KTsKIAogICAg
IGlmICgoaXNHZW5lcmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zQWxsKHsgRHJhZ09w
ZXJhdGlvbjo6Q29weSwgRHJhZ09wZXJhdGlvbjo6TGluayB9KSkgfHwgb3BlcmF0aW9uTWFzay5j
b250YWluc0FsbCh7IERyYWdPcGVyYXRpb246OkNvcHksIERyYWdPcGVyYXRpb246OkxpbmssIERy
YWdPcGVyYXRpb246OkdlbmVyaWMsIERyYWdPcGVyYXRpb246OlByaXZhdGUsIERyYWdPcGVyYXRp
b246Ok1vdmUsIERyYWdPcGVyYXRpb246OkRlbGV0ZSB9KSkKLSAgICAgICAgcmV0dXJuICJhbGwi
OworICAgICAgICByZXR1cm4gImFsbCJfczsKICAgICBpZiAoaXNHZW5lcmljTW92ZSAmJiBvcGVy
YXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb246OkNvcHkpKQotICAgICAgICByZXR1cm4g
ImNvcHlNb3ZlIjsKKyAgICAgICAgcmV0dXJuICJjb3B5TW92ZSJfczsKICAgICBpZiAoaXNHZW5l
cmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb246OkxpbmspKQot
ICAgICAgICByZXR1cm4gImxpbmtNb3ZlIjsKKyAgICAgICAgcmV0dXJuICJsaW5rTW92ZSJfczsK
ICAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWluc0FsbCh7IERyYWdPcGVyYXRpb246OkNvcHks
IERyYWdPcGVyYXRpb246OkxpbmsgfSkpCi0gICAgICAgIHJldHVybiAiY29weUxpbmsiOworICAg
ICAgICByZXR1cm4gImNvcHlMaW5rIl9zOwogICAgIGlmIChpc0dlbmVyaWNNb3ZlKQotICAgICAg
ICByZXR1cm4gIm1vdmUiOworICAgICAgICByZXR1cm4gIm1vdmUiX3M7CiAgICAgaWYgKG9wZXJh
dGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbjo6Q29weSkpCi0gICAgICAgIHJldHVybiAi
Y29weSI7CisgICAgICAgIHJldHVybiAiY29weSJfczsKICAgICBpZiAob3BlcmF0aW9uTWFzay5j
b250YWlucyhEcmFnT3BlcmF0aW9uOjpMaW5rKSkKLSAgICAgICAgcmV0dXJuICJsaW5rIjsKLSAg
ICByZXR1cm4gIm5vbmUiOworICAgICAgICByZXR1cm4gImxpbmsiX3M7CisgICAgcmV0dXJuICJu
b25lIl9zOwogfQogCiBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gRGF0YVRyYW5zZmVyOjpzb3Vy
Y2VPcGVyYXRpb25NYXNrKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGZkY2Nm
Nzc3OGFlNzhlYjRhMzE0YzM2NDc2MTVjMjNmN2ZjYWE2YzUuLjZkOTk5NmY2M2JhNzI2YWVjZmJi
MzFjNjQ2ZTNiMjg5YWViMzFhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtOTMxLDcg
KzkzMSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29t
cGF0aWJpbGl0eU1vZGUgbW9kZSkKIAogU3RyaW5nIERvY3VtZW50Ojpjb21wYXRNb2RlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gaW5RdWlya3NNb2RlKCkgPyAiQmFja0NvbXBhdCIgOiAiQ1NTMUNv
bXBhdCI7CisgICAgcmV0dXJuIGluUXVpcmtzTW9kZSgpID8gIkJhY2tDb21wYXQiX3MgOiAiQ1NT
MUNvbXBhdCJfczsKIH0KIAogY29uc3QgQ29sb3ImIERvY3VtZW50Ojp0aGVtZUNvbG9yKCkKQEAg
LTE0OTMsNyArMTQ5Myw3IEBAIFN0cmluZyBEb2N1bWVudDo6Y2hhcmFjdGVyU2V0V2l0aFVURjhG
YWxsYmFjaygpIGNvbnN0CiAgICAgQXRvbVN0cmluZyBuYW1lID0gZW5jb2RpbmcoKTsKICAgICBp
ZiAoIW5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBuYW1lOwotICAgIHJldHVybiBQQUw6
OlVURjhFbmNvZGluZygpLmRvbU5hbWUoKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgUEFMOjpVVEY4
RW5jb2RpbmcoKS5kb21OYW1lKCkgfTsKIH0KIAogU3RyaW5nIERvY3VtZW50OjpkZWZhdWx0Q2hh
cnNldEZvckxlZ2FjeUJpbmRpbmdzKCkgY29uc3QKQEAgLTM4MTksMTkgKzM4MTksMTkgQEAgdm9p
ZCBEb2N1bWVudDo6cHJvY2Vzc01ldGFIdHRwRXF1aXYoY29uc3QgU3RyaW5nJiBlcXVpdiwgY29u
c3QgU3RyaW5nJiBjb250ZW50LAogCiAgICAgSHR0cEVxdWl2UG9saWN5IHBvbGljeSA9IGh0dHBF
cXVpdlBvbGljeSgpOwogICAgIGlmIChwb2xpY3kgIT0gSHR0cEVxdWl2UG9saWN5OjpFbmFibGVk
KSB7Ci0gICAgICAgIFN0cmluZyByZWFzb247CisgICAgICAgIEFTQ0lJTGl0ZXJhbCByZWFzb24g
PSAiIl9zOwogICAgICAgICBzd2l0Y2ggKHBvbGljeSkgewogICAgICAgICBjYXNlIEh0dHBFcXVp
dlBvbGljeTo6RW5hYmxlZDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSHR0cEVxdWl2UG9saWN5OjpEaXNhYmxlZEJ5
U2V0dGluZ3M6Ci0gICAgICAgICAgICByZWFzb24gPSAiYnkgdGhlIGVtYmVkZGVyLiI7CisgICAg
ICAgICAgICByZWFzb24gPSAiYnkgdGhlIGVtYmVkZGVyLiJfczsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEh0dHBFcXVpdlBvbGljeTo6RGlzYWJsZWRCeUNvbnRlbnREaXNwb3Np
dGlvbkF0dGFjaG1lbnRTYW5kYm94OgotICAgICAgICAgICAgcmVhc29uID0gImZvciBkb2N1bWVu
dHMgd2l0aCBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50LiI7CisgICAgICAgICAgICBy
ZWFzb24gPSAiZm9yIGRvY3VtZW50cyB3aXRoIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1l
bnQuIl9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgU3RyaW5nIG1l
c3NhZ2UgPSAiaHR0cC1lcXVpdiAnIiArIGVxdWl2ICsgIicgaXMgZGlzYWJsZWQgIiArIHJlYXNv
bjsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJodHRwLWVxdWl2ICciLCBl
cXVpdiwgIicgaXMgZGlzYWJsZWQgIiwgcmVhc29uKTsKICAgICAgICAgYWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTQwMywxMCArNTQwMywxMCBAQCBTdHJpbmcg
RG9jdW1lbnQ6OmRvbWFpbigpIGNvbnN0CiBFeGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6c2V0
RG9tYWluKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKQogewogICAgIGlmICghZnJhbWUoKSkKLSAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJBIGJyb3dzaW5nIGNvbnRl
eHQgaXMgcmVxdWlyZWQgdG8gc2V0IGEgZG9tYWluLiIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFNlY3VyaXR5RXJyb3IsICJBIGJyb3dzaW5nIGNvbnRleHQgaXMgcmVxdWlyZWQgdG8g
c2V0IGEgZG9tYWluLiJfcyB9OwogCiAgICAgaWYgKGlzU2FuZGJveGVkKFNhbmRib3hEb2N1bWVu
dERvbWFpbikpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiQXNz
aWdubWVudCBpcyBmb3JiaWRkZW4gZm9yIHNhbmRib3hlZCBpZnJhbWVzLiIgfTsKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJBc3NpZ25tZW50IGlzIGZvcmJpZGRl
biBmb3Igc2FuZGJveGVkIGlmcmFtZXMuIl9zIH07CiAKICAgICBpZiAoTGVnYWN5U2NoZW1lUmVn
aXN0cnk6OmlzRG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShzZWN1cml0eU9y
aWdpbigpLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlF
cnJvciB9OwpAQCAtNTQxNSwxMCArNTQxNSwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVu
dDo6c2V0RG9tYWluKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKQogCiAgICAgY29uc3QgU3RyaW5n
JiBlZmZlY3RpdmVEb21haW4gPSBkb21haW4oKTsKICAgICBpZiAoZWZmZWN0aXZlRG9tYWluLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJUaGUg
ZG9jdW1lbnQgaGFzIGEgbnVsbCBlZmZlY3RpdmVEb21haW4uIiB9OworICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlRoZSBkb2N1bWVudCBoYXMgYSBudWxsIGVmZmVj
dGl2ZURvbWFpbi4iX3MgfTsKIAogICAgIGlmICghc2VjdXJpdHlPcmlnaW4oKS5pc01hdGNoaW5n
UmVnaXN0cmFibGVEb21haW5TdWZmaXgobmV3RG9tYWluLCBzZXR0aW5ncygpLnRyZWF0SVBBZGRy
ZXNzQXNEb21haW4oKSkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9y
LCAiQXR0ZW1wdGVkIHRvIHVzZSBhIG5vbi1yZWdpc3RyYWJsZSBkb21haW4uIiB9OworICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIkF0dGVtcHRlZCB0byB1c2UgYSBu
b24tcmVnaXN0cmFibGUgZG9tYWluLiJfcyB9OwogCiAgICAgc2VjdXJpdHlPcmlnaW4oKS5zZXRE
b21haW5Gcm9tRE9NKG5ld0RvbWFpbik7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTU4NzcsNyArNTg3
Nyw3IEBAIHN0YXRpYyBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZChEb2N1bWVudCogZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvCiBFeGNlcHRpb25Pcjxib29sPiBEb2N1bWVu
dDo6ZXhlY0NvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgYm9vbCB1c2VySW50ZXJm
YWNlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChVTkxJS0VMWSghaXNIVE1MRG9j
dW1lbnQoKSAmJiAhaXNYSFRNTERvY3VtZW50KCkpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJleGVjQ29tbWFuZCBpcyBvbmx5IHN1cHBvcnRlZCBvbiBI
VE1MIGRvY3VtZW50cy4iIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgImV4ZWNDb21tYW5kIGlzIG9ubHkgc3VwcG9ydGVkIG9uIEhUTUwgZG9jdW1lbnRz
LiJfcyB9OwogCiAgICAgRXZlbnRRdWV1ZVNjb3BlIGV2ZW50UXVldWVTY29wZTsKICAgICByZXR1
cm4gY29tbWFuZCh0aGlzLCBjb21tYW5kTmFtZSwgdXNlckludGVyZmFjZSkuZXhlY3V0ZSh2YWx1
ZSk7CkBAIC01ODg2LDM1ICs1ODg2LDM1IEBAIEV4Y2VwdGlvbk9yPGJvb2w+IERvY3VtZW50Ojpl
eGVjQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBib29sIHVzZXJJbnRlCiBFeGNl
cHRpb25Pcjxib29sPiBEb2N1bWVudDo6cXVlcnlDb21tYW5kRW5hYmxlZChjb25zdCBTdHJpbmcm
IGNvbW1hbmROYW1lKQogewogICAgIGlmIChVTkxJS0VMWSghaXNIVE1MRG9jdW1lbnQoKSAmJiAh
aXNYSFRNTERvY3VtZW50KCkpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJxdWVyeUNvbW1hbmRFbmFibGVkIGlzIG9ubHkgc3VwcG9ydGVkIG9uIEhUTUwg
ZG9jdW1lbnRzLiIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yLCAicXVlcnlDb21tYW5kRW5hYmxlZCBpcyBvbmx5IHN1cHBvcnRlZCBvbiBIVE1MIGRvY3Vt
ZW50cy4iX3MgfTsKICAgICByZXR1cm4gY29tbWFuZCh0aGlzLCBjb21tYW5kTmFtZSkuaXNFbmFi
bGVkKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPGJvb2w+IERvY3VtZW50OjpxdWVyeUNvbW1hbmRJbmRl
dGVybShjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQogewogICAgIGlmIChVTkxJS0VMWSghaXNI
VE1MRG9jdW1lbnQoKSAmJiAhaXNYSFRNTERvY3VtZW50KCkpKQotICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJxdWVyeUNvbW1hbmRJbmRldGVybSBpcyBvbmx5
IHN1cHBvcnRlZCBvbiBIVE1MIGRvY3VtZW50cy4iIH07CisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciwgInF1ZXJ5Q29tbWFuZEluZGV0ZXJtIGlzIG9ubHkgc3Vw
cG9ydGVkIG9uIEhUTUwgZG9jdW1lbnRzLiJfcyB9OwogICAgIHJldHVybiBjb21tYW5kKHRoaXMs
IGNvbW1hbmROYW1lKS5zdGF0ZSgpID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBF
eGNlcHRpb25Pcjxib29sPiBEb2N1bWVudDo6cXVlcnlDb21tYW5kU3RhdGUoY29uc3QgU3RyaW5n
JiBjb21tYW5kTmFtZSkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWlzSFRNTERvY3VtZW50KCkgJiYg
IWlzWEhUTUxEb2N1bWVudCgpKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAicXVlcnlDb21tYW5kU3RhdGUgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBk
b2N1bWVudHMuIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJxdWVyeUNvbW1hbmRTdGF0ZSBpcyBvbmx5IHN1cHBvcnRlZCBvbiBIVE1MIGRvY3VtZW50
cy4iX3MgfTsKICAgICByZXR1cm4gY29tbWFuZCh0aGlzLCBjb21tYW5kTmFtZSkuc3RhdGUoKSA9
PSBUcmlTdGF0ZTo6VHJ1ZTsKIH0KIAogRXhjZXB0aW9uT3I8Ym9vbD4gRG9jdW1lbnQ6OnF1ZXJ5
Q29tbWFuZFN1cHBvcnRlZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQogewogICAgIGlmIChV
TkxJS0VMWSghaXNIVE1MRG9jdW1lbnQoKSAmJiAhaXNYSFRNTERvY3VtZW50KCkpKQotICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJxdWVyeUNvbW1hbmRTdXBw
b3J0ZWQgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBkb2N1bWVudHMuIiB9OworICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJxdWVyeUNvbW1hbmRTdXBwb3J0
ZWQgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBkb2N1bWVudHMuIl9zIH07CiAgICAgcmV0dXJu
IGNvbW1hbmQodGhpcywgY29tbWFuZE5hbWUpLmlzU3VwcG9ydGVkKCk7CiB9CiAKIEV4Y2VwdGlv
bk9yPFN0cmluZz4gRG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZFZhbHVlKGNvbnN0IFN0cmluZyYgY29t
bWFuZE5hbWUpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpc0hUTUxEb2N1bWVudCgpICYmICFpc1hI
VE1MRG9jdW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciwgInF1ZXJ5Q29tbWFuZFZhbHVlIGlzIG9ubHkgc3VwcG9ydGVkIG9uIEhUTUwgZG9jdW1l
bnRzLiIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAi
cXVlcnlDb21tYW5kVmFsdWUgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBkb2N1bWVudHMuIl9z
IH07CiAgICAgcmV0dXJuIGNvbW1hbmQodGhpcywgY29tbWFuZE5hbWUpLnZhbHVlKCk7CiB9CiAK
QEAgLTgyNTksNyArODI1OSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVJlc2l6ZU9ic2VydmF0
aW9ucyhQYWdlJiBwYWdlKQogICAgICAgICB1bnNpZ25lZCBsaW5lID0gMDsKICAgICAgICAgdW5z
aWduZWQgY29sdW1uID0gMDsKICAgICAgICAgZ2V0UGFyc2VyTG9jYXRpb24odXJsLCBsaW5lLCBj
b2x1bW4pOwotICAgICAgICByZXBvcnRFeGNlcHRpb24oIlJlc2l6ZU9ic2VydmVyIGxvb3AgY29t
cGxldGVkIHdpdGggdW5kZWxpdmVyZWQgbm90aWZpY2F0aW9ucy4iLCBsaW5lLCBjb2x1bW4sIHVy
bCwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigiUmVzaXplT2Jz
ZXJ2ZXIgbG9vcCBjb21wbGV0ZWQgd2l0aCB1bmRlbGl2ZXJlZCBub3RpZmljYXRpb25zLiJfcywg
bGluZSwgY29sdW1uLCB1cmwsIG51bGxwdHIsIG51bGxwdHIpOwogICAgICAgICAvLyBTdGFydGlu
ZyBhIG5ldyBzY2hlZHVsZSB0aGUgbmV4dCByb3VuZCBvZiBub3RpZnkuCiAgICAgICAgIHNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZU9ic2VydmF0aW9u
cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGI5OTdiZmQwZmRiOWZlZWY0NDNm
OGIzY2NhNGQyMGU2MWMwYjdjOWMuLjRiMDJhMjY4NjZmY2ZlYzg4NGQzMDI4ODM0YjQxMTA0OGJk
YzJjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMyODUsOCArMzI4NSw4IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEVsZW1lbnQ6OnNldE91dGVySFRNTChjb25zdCBTdHJpbmcmIGh0bWwpCiAg
ICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAoVU5MSUtFTFkoIXBh
cmVudCkpIHsKICAgICAgICAgaWYgKCFwYXJlbnROb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IsICJDYW5ub3Qgc2V0IG91dGVy
SFRNTCBvbiBlbGVtZW50IGJlY2F1c2UgaXQgZG9lc24ndCBoYXZlIGEgcGFyZW50IiB9OwotICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IsICJDYW5u
b3Qgc2V0IG91dGVySFRNTCBvbiBlbGVtZW50IGJlY2F1c2UgaXRzIHBhcmVudCBpcyBub3QgYW4g
RWxlbWVudCIgfTsKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlv
bkFsbG93ZWRFcnJvciwgIkNhbm5vdCBzZXQgb3V0ZXJIVE1MIG9uIGVsZW1lbnQgYmVjYXVzZSBp
dCBkb2Vzbid0IGhhdmUgYSBwYXJlbnQiX3MgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yLCAiQ2Fubm90IHNldCBvdXRlckhUTUwgb24gZWxl
bWVudCBiZWNhdXNlIGl0cyBwYXJlbnQgaXMgbm90IGFuIEVsZW1lbnQiX3MgfTsKICAgICB9CiAK
ICAgICBSZWZQdHI8Tm9kZT4gcHJldiA9IHByZXZpb3VzU2libGluZygpOwpAQCAtNDY5Nyw3ICs0
Njk3LDcgQEAgRWxlbWVudCogRWxlbWVudDo6ZmluZEFuY2hvckVsZW1lbnRGb3JMaW5rKFN0cmlu
ZyYgb3V0QW5jaG9yTmFtZSkKIAogRXhjZXB0aW9uT3I8UmVmPFdlYkFuaW1hdGlvbj4+IEVsZW1l
bnQ6OmFuaW1hdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpTdHJvbmc8SlNDOjpKU09iamVjdD4mJiBrZXlmcmFtZXMsIHN0ZDo6b3B0aW9uYWw8c3RkOjp2
YXJpYW50PGRvdWJsZSwgS2V5ZnJhbWVBbmltYXRpb25PcHRpb25zPj4mJiBvcHRpb25zKQogewot
ICAgIFN0cmluZyBpZCA9ICIiOworICAgIFN0cmluZyBpZCA9IGVtcHR5U3RyaW5nKCk7CiAgICAg
c3RkOjpvcHRpb25hbDxSZWZQdHI8QW5pbWF0aW9uVGltZWxpbmU+PiB0aW1lbGluZTsKICAgICBz
dGQ6OnZhcmlhbnQ8RnJhbWVzUGVyU2Vjb25kLCBBbmltYXRpb25GcmFtZVJhdGVQcmVzZXQ+IGZy
YW1lUmF0ZSA9IEFuaW1hdGlvbkZyYW1lUmF0ZVByZXNldDo6QXV0bzsKICAgICBzdGQ6Om9wdGlv
bmFsPHN0ZDo6dmFyaWFudDxkb3VibGUsIEtleWZyYW1lRWZmZWN0T3B0aW9ucz4+IGtleWZyYW1l
RWZmZWN0T3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJs
YXkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKaW5kZXggODhiOTY4
NTNjZTE3OWI5ZmZkY2E1NDY2MzJiZDNhNjY5NGIxZjU3Ny4uMDU3ZjIwZjhiYzU5ZDMyM2E0ZDJj
MWYxNWI1NzU4ZWQ5NzY0NjM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdl
T3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKQEAg
LTUzMSw3ICs1MzEsNyBAQCB2b2lkIHVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoSFRN
TEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvbgogCiAgICAgICAgICAgICBG
bG9hdFNpemUgdGFyZ2V0U2l6ZSB7IGhvcml6b250YWxFeHRlbnQgLSBob3Jpem9udGFsT2Zmc2V0
LCBsaW5lQm91bmRzLnNpemUuaGVpZ2h0KCkgfTsKICAgICAgICAgICAgIGlmICh0YXJnZXRTaXpl
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIHRleHRDb250YWluZXItPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0sICJzY2FsZSgwLCAwKSIpOworICAgICAg
ICAgICAgICAgIHRleHRDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlUcmFuc2Zvcm0sICJzY2FsZSgwLCAwKSJfcyk7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9CiAKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIHVwZGF0ZVdpdGhUZXh0
UmVjb2duaXRpb25SZXN1bHQoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25p
dGlvbgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc2l6ZUJlZm9yZVRyYW5zZm9y
bS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICB0ZXh0Q29udGFpbmVyLT5zZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtLCAic2NhbGUoMCwgMCkiKTsKKyAgICAg
ICAgICAgICAgICB0ZXh0Q29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5VHJhbnNmb3JtLCAic2NhbGUoMCwgMCkiX3MpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYjFhZjQ1ZjdlYzJmMTBkMmUw
ZDI0Y2M4MGM1NzBhNjFjM2RkOTFjNi4uZDJlMjdkODQ5MDFkNTU5OTI5NDU4YzQ2N2Q5MWY3ZjY0
YTdiODAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTkzMCw3ICsxOTMwLDcgQEAgdm9pZCBOb2Rl
OjpzaG93VHJlZUZvclRoaXNBY3Jvc3NGcmFtZSgpIGNvbnN0CiAgICAgTm9kZSogcm9vdE5vZGUg
PSBjb25zdF9jYXN0PE5vZGUqPih0aGlzKTsKICAgICB3aGlsZSAocGFyZW50T3JTaGFkb3dIb3N0
T3JGcmFtZU93bmVyKHJvb3ROb2RlKSkKICAgICAgICAgcm9vdE5vZGUgPSBwYXJlbnRPclNoYWRv
d0hvc3RPckZyYW1lT3duZXIocm9vdE5vZGUpOwotICAgIHNob3dTdWJUcmVlQWNyb3NzRnJhbWUo
cm9vdE5vZGUsIHRoaXMsICIiKTsKKyAgICBzaG93U3ViVHJlZUFjcm9zc0ZyYW1lKHJvb3ROb2Rl
LCB0aGlzLCBlbXB0eVN0cmluZygpKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShUUkVFX0RFQlVH
R0lORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKaW5k
ZXggMThkODc3MmJlZWE0YjM2OGJlZjQzOWM5ZWY1OThhMDFjYzZmOTczNy4uMDFhNjI0MGQ0YzMy
OTRiMTJmODEwYmQ2ZDFkMzJlNDI5YzA5M2ZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCiAgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9
IHBhcnNlQXR0cmlidXRlcyhkYXRhKCkpOwogICAgICAgICBpZiAoIWF0dHJpYnV0ZXMpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIFN0cmluZyB0eXBlID0gYXR0cmlidXRlcy0+Z2V0KCJ0
eXBlIik7CisgICAgICAgIFN0cmluZyB0eXBlID0gYXR0cmlidXRlcy0+Z2V0KCJ0eXBlIl9zKTsK
IAogICAgICAgICBtX2lzQ1NTID0gdHlwZS5pc0VtcHR5KCkgfHwgdHlwZSA9PSAidGV4dC9jc3Mi
OwogI2lmIEVOQUJMRShYU0xUKQpAQCAtMTAzLDExICsxMDMsMTEgQEAgdm9pZCBQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCiAjZW5kaWYKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBTdHJpbmcgaHJlZiA9IGF0dHJpYnV0ZXMtPmdldCgiaHJlZiIpOwotICAg
ICAgICBTdHJpbmcgYWx0ZXJuYXRlID0gYXR0cmlidXRlcy0+Z2V0KCJhbHRlcm5hdGUiKTsKKyAg
ICAgICAgU3RyaW5nIGhyZWYgPSBhdHRyaWJ1dGVzLT5nZXQoImhyZWYiX3MpOworICAgICAgICBT
dHJpbmcgYWx0ZXJuYXRlID0gYXR0cmlidXRlcy0+Z2V0KCJhbHRlcm5hdGUiX3MpOwogICAgICAg
ICBtX2FsdGVybmF0ZSA9IGFsdGVybmF0ZSA9PSAieWVzIjsKLSAgICAgICAgbV90aXRsZSA9IGF0
dHJpYnV0ZXMtPmdldCgidGl0bGUiKTsKLSAgICAgICAgbV9tZWRpYSA9IGF0dHJpYnV0ZXMtPmdl
dCgibWVkaWEiKTsKKyAgICAgICAgbV90aXRsZSA9IGF0dHJpYnV0ZXMtPmdldCgidGl0bGUiX3Mp
OworICAgICAgICBtX21lZGlhID0gYXR0cmlidXRlcy0+Z2V0KCJtZWRpYSJfcyk7CiAKICAgICAg
ICAgaWYgKG1fYWx0ZXJuYXRlICYmIG1fdGl0bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVj
a1N0eWxlU2hlZXQoKQogICAgICAgICAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBTdHJpbmcgY2hhcnNldCA9IGF0dHJpYnV0ZXMtPmdldCgiY2hhcnNl
dCIpOworICAgICAgICAgICAgICAgIFN0cmluZyBjaGFyc2V0ID0gYXR0cmlidXRlcy0+Z2V0KCJj
aGFyc2V0Il9zKTsKICAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpLCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVm
YXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBzdGQ6Om51bGxvcHQsIGNoYXJzZXQuaXNFbXB0
eSgpID8gZG9jdW1lbnQoKS5jaGFyc2V0KCkgOiBXVEZNb3ZlKGNoYXJzZXQpKTsKIAogICAgICAg
ICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVy
KCkucmVxdWVzdENTU1N0eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAppbmRleCBkNDYzZGUw
M2E0MmRlMTQ4YWI2ZWI3NzU0MDY3ZWY3ZWQ1NjRiYTdkLi44MzYwNmE3YWY1MDRmZjA2M2JjMTgy
ZGY4NGZhNjgyMTE2MmVjYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3Bv
cnRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50
cy5jcHAKQEAgLTM5NiwxMyArMzk2LDEzIEBAIHN0YXRpYyBWaWV3cG9ydEZpdCBwYXJzZVZpZXdw
b3J0Rml0VmFsdWUoU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUsIGNvbnN0CiAgICAg
cmV0dXJuIFZpZXdwb3J0Rml0OjpBdXRvOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogdmlld3Bv
cnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCitzdGF0
aWMgQVNDSUlMaXRlcmFsIHZpZXdwb3J0RXJyb3JNZXNzYWdlVGVtcGxhdGUoVmlld3BvcnRFcnJv
ckNvZGUgZXJyb3JDb2RlKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlcnJvcnNb
XSA9IHsKLSAgICAgICAgIlZpZXdwb3J0IGFyZ3VtZW50IGtleSBcIiVyZXBsYWNlbWVudDFcIiBu
b3QgcmVjb2duaXplZCBhbmQgaWdub3JlZC4iLAotICAgICAgICAiVmlld3BvcnQgYXJndW1lbnQg
dmFsdWUgXCIlcmVwbGFjZW1lbnQxXCIgZm9yIGtleSBcIiVyZXBsYWNlbWVudDJcIiBpcyBpbnZh
bGlkLCBhbmQgaGFzIGJlZW4gaWdub3JlZC4iLAotICAgICAgICAiVmlld3BvcnQgYXJndW1lbnQg
dmFsdWUgXCIlcmVwbGFjZW1lbnQxXCIgZm9yIGtleSBcIiVyZXBsYWNlbWVudDJcIiB3YXMgdHJ1
bmNhdGVkIHRvIGl0cyBudW1lcmljIHByZWZpeC4iLAotICAgICAgICAiVmlld3BvcnQgbWF4aW11
bS1zY2FsZSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gMTAuMC4gVGhlIG1heGltdW0tc2NhbGUgd2ls
bCBiZSBzZXQgdG8gMTAuMC4iCisgICAgc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgZXJy
b3JzW10gPSB7CisgICAgICAgICJWaWV3cG9ydCBhcmd1bWVudCBrZXkgXCIlcmVwbGFjZW1lbnQx
XCIgbm90IHJlY29nbml6ZWQgYW5kIGlnbm9yZWQuIl9zLAorICAgICAgICAiVmlld3BvcnQgYXJn
dW1lbnQgdmFsdWUgXCIlcmVwbGFjZW1lbnQxXCIgZm9yIGtleSBcIiVyZXBsYWNlbWVudDJcIiBp
cyBpbnZhbGlkLCBhbmQgaGFzIGJlZW4gaWdub3JlZC4iX3MsCisgICAgICAgICJWaWV3cG9ydCBh
cmd1bWVudCB2YWx1ZSBcIiVyZXBsYWNlbWVudDFcIiBmb3Iga2V5IFwiJXJlcGxhY2VtZW50Mlwi
IHdhcyB0cnVuY2F0ZWQgdG8gaXRzIG51bWVyaWMgcHJlZml4LiJfcywKKyAgICAgICAgIlZpZXdw
b3J0IG1heGltdW0tc2NhbGUgY2Fubm90IGJlIGxhcmdlciB0aGFuIDEwLjAuIFRoZSBtYXhpbXVt
LXNjYWxlIHdpbGwgYmUgc2V0IHRvIDEwLjAuIl9zCiAgICAgfTsKIAogICAgIHJldHVybiBlcnJv
cnNbZXJyb3JDb2RlXTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBzdGF0aWMgU3RyaW5nIHZpZXdwb3J0
RXJyb3JNZXNzYWdlKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgU3RyaW5nVmlldyByZXBs
YQogICAgICAgICBtZXNzYWdlLnJlcGxhY2UoIiVyZXBsYWNlbWVudDIiLCByZXBsYWNlbWVudDIu
dG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKIAogICAgIGlmICgoZXJyb3JDb2RlID09IFVucmVj
b2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yIHx8IGVycm9yQ29kZSA9PSBUcnVuY2F0
ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvcikgJiYgcmVwbGFjZW1lbnQxLmNvbnRhaW5zKCc7
JykpCi0gICAgICAgIG1lc3NhZ2UuYXBwZW5kKCIgTm90ZSB0aGF0ICc7JyBpcyBub3QgYSBzZXBh
cmF0b3IgaW4gdmlld3BvcnQgdmFsdWVzLiBUaGUgbGlzdCBzaG91bGQgYmUgY29tbWEtc2VwYXJh
dGVkLiIpOworICAgICAgICBtZXNzYWdlLmFwcGVuZCgiIE5vdGUgdGhhdCAnOycgaXMgbm90IGEg
c2VwYXJhdG9yIGluIHZpZXdwb3J0IHZhbHVlcy4gVGhlIGxpc3Qgc2hvdWxkIGJlIGNvbW1hLXNl
cGFyYXRlZC4iX3MpOwogCiAgICAgcmV0dXJuIG1lc3NhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKaW5kZXggY2M5NWQ1MjFmZDgzMDNkOTU1Y2ViYWNkYTQxMTc3MDYzM2YwMTFjNC4u
MDE4MDg2ZDNjY2IwYjJiMGJiMzI4MjM0N2NjOGJjM2FjNjc0N2ZmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtMTkwMywxMiArMTkwMywxMiBAQCB2b2lkIEVkaXRvcjo6ZGlkV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKQogCiB2b2lkIEVkaXRvcjo6dG9nZ2xlQm9sZCgpCiB7
Ci0gICAgY29tbWFuZCgiVG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKKyAgICBjb21tYW5kKCJUb2dn
bGVCb2xkIl9zKS5leGVjdXRlKCk7CiB9CiAKIHZvaWQgRWRpdG9yOjp0b2dnbGVVbmRlcmxpbmUo
KQogewotICAgIGNvbW1hbmQoIlRvZ2dsZVVuZGVybGluZSIpLmV4ZWN1dGUoKTsKKyAgICBjb21t
YW5kKCJUb2dnbGVVbmRlcmxpbmUiX3MpLmV4ZWN1dGUoKTsKIH0KIAogdm9pZCBFZGl0b3I6OnNl
dEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtMTky
NSw3ICsxOTI1LDcgQEAgdm9pZCBFZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1
dG8mIGZvY3VzZWRGb3JtRWxlbWVudCA9IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50PigqZm9jdXNlZEVsZW1lbnQpOwotICAgICAgICBhdXRvIGRpcmVjdGlvblZhbHVlID0gZGly
ZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIjsK
KyAgICAgICAgYXV0byBkaXJlY3Rpb25WYWx1ZSA9IGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0
aW9uOjpMZWZ0VG9SaWdodCA/ICJsdHIiX3MgOiAicnRsIl9zOwogICAgICAgICBhdXRvIHdyaXRp
bmdEaXJlY3Rpb25JbnB1dFR5cGVOYW1lID0gaW5wdXRUeXBlTmFtZUZvckVkaXRpbmdBY3Rpb24o
RWRpdEFjdGlvbjo6U2V0QmxvY2tXcml0aW5nRGlyZWN0aW9uKTsKICAgICAgICAgaWYgKCFkaXNw
YXRjaEJlZm9yZUlucHV0RXZlbnQoZm9jdXNlZEZvcm1FbGVtZW50LCB3cml0aW5nRGlyZWN0aW9u
SW5wdXRUeXBlTmFtZSwgZGlyZWN0aW9uVmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTkzNyw3ICsxOTM3LDcgQEAgdm9pZCBFZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdy
aXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIH0KIAogICAgIGF1dG8gc3R5bGUgPSBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKLSAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9S
aWdodCA/ICJsdHIiIDogZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0
ID8gInJ0bCIgOiAiaW5oZXJpdCIsIGZhbHNlKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9S
aWdodCA/ICJsdHIiX3MgOiBkaXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRUb0xl
ZnQgPyAicnRsIl9zIDogImluaGVyaXQiX3MsIGZhbHNlKTsKICAgICBhcHBseVBhcmFncmFwaFN0
eWxlVG9TZWxlY3Rpb24oc3R5bGUucHRyKCksIEVkaXRBY3Rpb246OlNldEJsb2NrV3JpdGluZ0Rp
cmVjdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmlu
ZGV4IDYxYTFlYTZiOTc1N2M3YmI3NTVmOTQyZGVhYzg4MDExNWU3ZDRkYWMuLmIwM2Y5M2Q5MGMz
NzJhMTA4NjRkYmQ1MzJkYjA5YmQyZDNlNGNmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0YXRpYyBib29sIGFwcGx5Q29t
bWFuZFRvRnJhbWUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRp
dEFjCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgYm9vbCBpc1N0eWxlUHJlc2VudChF
ZGl0b3ImIGVkaXRvciwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBjaGFyKiBvblZh
bHVlKQorc3RhdGljIGJvb2wgaXNTdHlsZVByZXNlbnQoRWRpdG9yJiBlZGl0b3IsIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwgQVNDSUlMaXRlcmFsIG9uVmFsdWUpCiB7CiAgICAgLy8gU3R5bGUg
aXMgY29uc2lkZXJlZCBwcmVzZW50IHdoZW4KICAgICAvLyBNYWM6IHByZXNlbnQgYXQgdGhlIGJl
Z2lubmluZyBvZiBzZWxlY3Rpb24KQEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0aWMgYm9vbCBleGVj
dXRlQXBwbHlTdHlsZShGcmFtZSYgZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBF
ZGl0QWN0aQogICAgIHJldHVybiBhcHBseUNvbW1hbmRUb0ZyYW1lKGZyYW1lLCBzb3VyY2UsIGFj
dGlvbiwgRWRpdGluZ1N0eWxlOjpjcmVhdGUocHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSkpOwog
fQogCi1zdGF0aWMgYm9vbCBleGVjdXRlVG9nZ2xlU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JD
b21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwgY29uc3QgY2hhciogb2ZmVmFsdWUsIGNvbnN0IGNoYXIqIG9uVmFsdWUpCitzdGF0
aWMgYm9vbCBleGVjdXRlVG9nZ2xlU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291
cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwg
QVNDSUlMaXRlcmFsIG9mZlZhbHVlLCBBU0NJSUxpdGVyYWwgb25WYWx1ZSkKIHsKICAgICBib29s
IHN0eWxlSXNQcmVzZW50ID0gaXNTdHlsZVByZXNlbnQoZnJhbWUuZWRpdG9yKCksIHByb3BlcnR5
SUQsIG9uVmFsdWUpOwogICAgIHJldHVybiBhcHBseUNvbW1hbmRUb0ZyYW1lKGZyYW1lLCBzb3Vy
Y2UsIGFjdGlvbiwgRWRpdGluZ1N0eWxlOjpjcmVhdGUocHJvcGVydHlJRCwgc3R5bGVJc1ByZXNl
bnQgPyBvZmZWYWx1ZSA6IG9uVmFsdWUpKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgYm9v
bCBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5KEZyYW1lJiBmcmFtZSwgVGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgVHJpU3RhdGUgc3Rh
dGVTdHlsZShGcmFtZSYgZnJhbWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgY2hh
ciogZGVzaXJlZFZhbHVlKQorc3RhdGljIFRyaVN0YXRlIHN0YXRlU3R5bGUoRnJhbWUmIGZyYW1l
LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEFTQ0lJTGl0ZXJhbCBkZXNpcmVkVmFsdWUpCiB7
CiAgICAgaWYgKGZyYW1lLmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkVG9nZ2xlU3R5bGVCYXNl
ZE9uU3RhcnRPZlNlbGVjdGlvbigpKQogICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuc2Vs
ZWN0aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpID8gVHJpU3RhdGU6
OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBzdGF0aWMgYm9v
bCBleGVjdXRlU2V0TWFyayhGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgVGV4dERlY29yYXRp
b25DaGFuZ2UgdGV4dERlY29yYXRpb25DaGFuZ2VGb3JUb2dnbGluZyhFZGl0b3ImIGVkaXRvciwg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBjaGFyKiBvblZhbHVlKQorc3RhdGljIFRl
eHREZWNvcmF0aW9uQ2hhbmdlIHRleHREZWNvcmF0aW9uQ2hhbmdlRm9yVG9nZ2xpbmcoRWRpdG9y
JiBlZGl0b3IsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgQVNDSUlMaXRlcmFsIG9uVmFsdWUp
CiB7CiAgICAgcmV0dXJuIGlzU3R5bGVQcmVzZW50KGVkaXRvciwgcHJvcGVydHlJRCwgb25WYWx1
ZSkgPyBUZXh0RGVjb3JhdGlvbkNoYW5nZTo6UmVtb3ZlIDogVGV4dERlY29yYXRpb25DaGFuZ2U6
OkFkZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJy
ZWFrQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0Nv
bW1hbmQuY3BwCmluZGV4IDU5NjdkNDRjZjlmMDc0ZTA1MDgwYzZkZWVmN2IxM2Q3MmM1YWJiZTYu
LjNlMzM3M2FjM2Y2ZmQzMWEwYWMwNGQ0NjFkYThjNjcxMzlhMDAwNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcApAQCAtODgsNyAr
ODgsNyBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIGlmIChz
aG91bGRVc2VCcmVha0VsZW1lbnQocG9zaXRpb24pKQogICAgICAgICBub2RlVG9JbnNlcnQgPSBI
VE1MQlJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgZWxzZQotICAgICAgICBub2Rl
VG9JbnNlcnQgPSBkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKCJcbiIpOworICAgICAgICBub2Rl
VG9JbnNlcnQgPSBkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKCJcbiJfcyk7CiAgICAgCiAgICAg
Ly8gRklYTUU6IE5lZWQgdG8gbWVyZ2UgdGV4dCBub2RlcyB3aGVuIGluc2VydGluZyBqdXN0IGFm
dGVyIG9yIGJlZm9yZSB0ZXh0LgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dFRleHRDb21tYW5kLmNwcAppbmRleCA2MWE3N2Y1MTBmZjIyZjdlYWM4ZWNlZThmYjNhNDMyMzcw
OTNiZTc5Li43MWZjYTIzNWVhZWViNWRlM2ZjNGFkY2QzMTY5MTMxOTFiOGZlYzVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcApAQCAtMjQ4LDcgKzI0
OCw3IEBAIFBvc2l0aW9uIEluc2VydFRleHRDb21tYW5kOjppbnNlcnRUYWIoY29uc3QgUG9zaXRp
b24mIHBvcykKICAgICAvLyBrZWVwIHRhYnMgY29hbGVzY2VkIGluIHRhYiBzcGFuCiAgICAgaWYg
KGlzVGFiU3BhblRleHROb2RlKG5vZGUpKSB7CiAgICAgICAgIFJlZjxUZXh0PiB0ZXh0Tm9kZSA9
IGRvd25jYXN0PFRleHQ+KCpub2RlKTsKLSAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRleHRO
b2RlLCBvZmZzZXQsICJcdCIpOworICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUodGV4dE5vZGUs
IG9mZnNldCwgIlx0Il9zKTsKICAgICAgICAgcmV0dXJuIFBvc2l0aW9uKHRleHROb2RlLnB0cigp
LCBvZmZzZXQgKyAxKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGZjMzZiNjM0ZmMwZjI5ODdhODI3
ODdhNzY5Y2JiMzdmNTBkMTMwNjYuLjMwYmEzZjM4MmQzODJhNzM1MTYyYTE3MzY0MDU1MjliNjk5
NWM5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCkBAIC03MTYsOSArNzE2LDkgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZShJbnNlcnQK
IAogICAgICAgICAgICAgLy8gTXV0YXRlIHVzaW5nIHRoZSBDU1NPTSB3cmFwcGVyIHNvIHdlIGdl
dCB0aGUgc2FtZSBldmVudCBiZWhhdmlvciBhcyBhIHNjcmlwdC4KICAgICAgICAgICAgIGlmIChp
c0Jsb2NrKGVsZW1lbnQpKQotICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS5z
ZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RGlzcGxheSwgImlubGluZSIsIGZhbHNlKTsK
KyAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0eWxlKCkuc2V0UHJvcGVydHlJbnRlcm5h
bChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxpbmUiX3MsIGZhbHNlKTsKICAgICAgICAgICAgIGlm
IChlbGVtZW50LT5yZW5kZXJlcigpICYmIGVsZW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCkuaXNG
bG9hdGluZygpKQotICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS5zZXRQcm9w
ZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsICJub25lIiwgZmFsc2UpOworICAgICAgICAg
ICAgICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3Bl
cnR5RmxvYXQsICJub25lIl9zLCBmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xNTk0
LDExICsxNTk0LDExIEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmFkZFNwYWNlc0Zv
clNtYXJ0UmVwbGFjZSgpCiAgICAgaWYgKG5lZWRzVHJhaWxpbmdTcGFjZSAmJiBlbmROb2RlKSB7
CiAgICAgICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlID0gIWVuZE5vZGUtPnJlbmRlcmVyKCkg
fHwgZW5kTm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKTsKICAg
ICAgICAgaWYgKGlzPFRleHQ+KCplbmROb2RlKSkgewotICAgICAgICAgICAgaW5zZXJ0VGV4dElu
dG9Ob2RlKGRvd25jYXN0PFRleHQ+KCplbmROb2RlKSwgZW5kT2Zmc2V0LCBjb2xsYXBzZVdoaXRl
U3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICIpOworICAgICAgICAgICAgaW5z
ZXJ0VGV4dEludG9Ob2RlKGRvd25jYXN0PFRleHQ+KCplbmROb2RlKSwgZW5kT2Zmc2V0LCBjb2xs
YXBzZVdoaXRlU3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICJfcyk7CiAgICAg
ICAgICAgICBpZiAobV9lbmRPZkluc2VydGVkQ29udGVudC5jb250YWluZXJOb2RlKCkgPT0gZW5k
Tm9kZSkKICAgICAgICAgICAgICAgICBtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm1vdmVUb09mZnNl
dChtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpICsgMSk7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIG5vZGUgPSBkb2N1bWVudCgpLmNyZWF0
ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3Ry
aW5nKCkgOiAiICIpOworICAgICAgICAgICAgYXV0byBub2RlID0gZG9jdW1lbnQoKS5jcmVhdGVF
ZGl0aW5nVGV4dE5vZGUoY29sbGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmlu
ZygpIDogIiAiX3MpOwogICAgICAgICAgICAgaW5zZXJ0Tm9kZUFmdGVyKG5vZGUuY29weVJlZigp
LCAqZW5kTm9kZSk7CiAgICAgICAgICAgICB1cGRhdGVOb2Rlc0luc2VydGVkKG5vZGUucHRyKCkp
OwogICAgICAgICB9CkBAIC0xNjE4LDExICsxNjE4LDExIEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OmFkZFNwYWNlc0ZvclNtYXJ0UmVwbGFjZSgpCiAgICAgaWYgKG5lZWRzTGVhZGlu
Z1NwYWNlICYmIHN0YXJ0Tm9kZSkgewogICAgICAgICBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSA9
ICFzdGFydE5vZGUtPnJlbmRlcmVyKCkgfHwgc3RhcnROb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgp
LmNvbGxhcHNlV2hpdGVTcGFjZSgpOwogICAgICAgICBpZiAoaXM8VGV4dD4oKnN0YXJ0Tm9kZSkp
IHsKLSAgICAgICAgICAgIGluc2VydFRleHRJbnRvTm9kZShkb3duY2FzdDxUZXh0Pigqc3RhcnRO
b2RlKSwgc3RhcnRPZmZzZXQsIGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VT
dHJpbmcoKSA6ICIgIik7CisgICAgICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUoZG93bmNhc3Q8
VGV4dD4oKnN0YXJ0Tm9kZSksIHN0YXJ0T2Zmc2V0LCBjb2xsYXBzZVdoaXRlU3BhY2UgPyBub25C
cmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICJfcyk7CiAgICAgICAgICAgICBpZiAobV9lbmRPZklu
c2VydGVkQ29udGVudC5jb250YWluZXJOb2RlKCkgPT0gc3RhcnROb2RlICYmIG1fZW5kT2ZJbnNl
cnRlZENvbnRlbnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpCiAgICAgICAgICAgICAgICAgbV9l
bmRPZkluc2VydGVkQ29udGVudC5tb3ZlVG9PZmZzZXQobV9lbmRPZkluc2VydGVkQ29udGVudC5v
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKSArIDEpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgYXV0byBub2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoY29sbGFwc2VX
aGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIDogIiAiKTsKKyAgICAgICAgICAg
IGF1dG8gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKGNvbGxhcHNlV2hp
dGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIgIl9zKTsKICAgICAgICAgICAg
IC8vIERvbid0IHVwZGF0ZU5vZGVzSW5zZXJ0ZWQuIERvaW5nIHNvIHdvdWxkIHNldCBtX2VuZE9m
SW5zZXJ0ZWRDb250ZW50IHRvIGJlIHRoZSBub2RlIGNvbnRhaW5pbmcgdGhlIGxlYWRpbmcgc3Bh
Y2UsCiAgICAgICAgICAgICAvLyBidXQgbV9lbmRPZkluc2VydGVkQ29udGVudCBpcyBzdXBwb3Nl
ZCB0byBtYXJrIHRoZSBlbmQgb2YgcGFzdGVkIGNvbnRlbnQuCiAgICAgICAgICAgICBpbnNlcnRO
b2RlQmVmb3JlKG5vZGUsICpzdGFydE5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBjNWIyYjJkNTk1Yjc3
NzI0OTBmYThmNjAzMzQzMzE4M2UyYTk4ZWUwLi4wMWM2ZWVhZTkxNmVhNWFhMjM0MjNlZjMxMjNh
MTdjMGRkYjI2ZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyLmNwcApAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Om9ic2VydmVQYXJhZ3JhcGhzKGNvbnN0IFBvc2l0aW9uJiBz
dGFydCwgY29uc3QKIAogICAgICAgICBpZiAoY29udGVudC5pc1JlcGxhY2VkQ29udGVudCkgewog
ICAgICAgICAgICAgaWYgKCF1bml0c0luQ3VycmVudFBhcmFncmFwaC5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgdW5pdHNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kKE1hbmlwdWxhdGlvblVu
aXQgeyAqY29udGVudE5vZGUsIHsgTWFuaXB1bGF0aW9uVG9rZW4geyBtX3Rva2VuSWRlbnRpZmll
ci5nZW5lcmF0ZSgpLCAiW10iLCB0b2tlbkluZm8oY29udGVudC5ub2RlLmdldCgpKSwgdHJ1ZSB9
IH0gfSk7CisgICAgICAgICAgICAgICAgdW5pdHNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kKE1h
bmlwdWxhdGlvblVuaXQgeyAqY29udGVudE5vZGUsIHsgTWFuaXB1bGF0aW9uVG9rZW4geyBtX3Rv
a2VuSWRlbnRpZmllci5nZW5lcmF0ZSgpLCAiW10iX3MsIHRva2VuSW5mbyhjb250ZW50Lm5vZGUu
Z2V0KCkpLCB0cnVlIH0gfSB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDIyNzJlYmIzMGRl
NzkyMTYzNjZmYjExOTM2NTgxYjkyNThiZGNhMWUuLjllN2MwYWM0YTRhZDkwNTRkZjNlNDIxNzA4
MGY0MjkxNWIzYTE4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNw
cApAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFr
QW5kTm90aWZ5QWNjZXNzaWJpbGl0eSgpCiB7CiAgICAgQWNjZXNzaWJpbGl0eVJlcGxhY2VkVGV4
dCByZXBsYWNlZFRleHQoZG9jdW1lbnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CiAgICAg
aW5zZXJ0TGluZUJyZWFrKCk7Ci0gICAgcmVwbGFjZWRUZXh0LnBvc3RUZXh0U3RhdGVDaGFuZ2VO
b3RpZmljYXRpb24oZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSwgQVhUZXh0RWRp
dFR5cGVUeXBpbmcsICJcbiIsIGRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwor
ICAgIHJlcGxhY2VkVGV4dC5wb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKGRvY3VtZW50
KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCksIEFYVGV4dEVkaXRUeXBlVHlwaW5nLCAiXG4iX3Ms
IGRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwogICAgIGNvbXBvc2l0aW9uKCkt
PnNldFJhbmdlRGVsZXRlZEJ5VW5hcHBseShyZXBsYWNlZFRleHQucmVwbGFjZWRSYW5nZSgpKTsK
IH0KIApAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQW5kTm90aWZ5QWNjZXNzaWJpbGl0eSgpCiB7CiAgICAgQWNjZXNzaWJpbGl0
eVJlcGxhY2VkVGV4dCByZXBsYWNlZFRleHQoZG9jdW1lbnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKSk7CiAgICAgaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKCk7Ci0gICAgcmVwbGFjZWRUZXh0
LnBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oZG9jdW1lbnQoKS5leGlzdGluZ0FYT2Jq
ZWN0Q2FjaGUoKSwgQVhUZXh0RWRpdFR5cGVUeXBpbmcsICJcbiIsIGRvY3VtZW50KCkuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkpOworICAgIHJlcGxhY2VkVGV4dC5wb3N0VGV4dFN0YXRlQ2hhbmdl
Tm90aWZpY2F0aW9uKGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCksIEFYVGV4dEVk
aXRUeXBlVHlwaW5nLCAiXG4iX3MsIGRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkp
OwogICAgIGNvbXBvc2l0aW9uKCktPnNldFJhbmdlRGVsZXRlZEJ5VW5hcHBseShyZXBsYWNlZFRl
eHQucmVwbGFjZWRSYW5nZSgpKTsKIH0KIApAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgVHlwaW5n
Q29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50QW5kTm90aWZ5
QWNjZXNzaWJpbGl0CiB7CiAgICAgQWNjZXNzaWJpbGl0eVJlcGxhY2VkVGV4dCByZXBsYWNlZFRl
eHQoZG9jdW1lbnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CiAgICAgaW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50KCk7Ci0gICAgcmVwbGFjZWRUZXh0LnBvc3RUZXh0
U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUo
KSwgQVhUZXh0RWRpdFR5cGVUeXBpbmcsICJcbiIsIGRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkpOworICAgIHJlcGxhY2VkVGV4dC5wb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0
aW9uKGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCksIEFYVGV4dEVkaXRUeXBlVHlw
aW5nLCAiXG4iX3MsIGRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwogICAgIGNv
bXBvc2l0aW9uKCktPnNldFJhbmdlRGVsZXRlZEJ5VW5hcHBseShyZXBsYWNlZFRleHQucmVwbGFj
ZWRSYW5nZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDIwYjNmY2Y4
ZGRmOTU0NDM0OWIxODY0ZWY5ZDliZjBmYjRhZWU2NDYuLjJkOGY4YjMzNTkzMGQwN2RkMzMyNmI4
MTA2NWYyZDRmZDgzNWFjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTE5Niwx
MiArMTk2LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2FuaXRpemlu
Z1dlYkNvbnRlbnQoKQogICAgIGZyYW1lLmluaXQoKTsKIAogICAgIEZyYW1lTG9hZGVyJiBsb2Fk
ZXIgPSBmcmFtZS5sb2FkZXIoKTsKLSAgICBzdGF0aWMgY2hhciBtYXJrdXBbXSA9ICI8IURPQ1RZ
UEUgaHRtbD48aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiI7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBBU0NJSUxpdGVyYWwgbWFya3VwID0gIjwhRE9DVFlQRSBodG1sPjxodG1sPjxib2R5PjwvYm9k
eT48L2h0bWw+Il9zOwogICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7
CiAgICAgYXV0byYgd3JpdGVyID0gbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRl
cigpOwotICAgIHdyaXRlci5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7CisgICAgd3JpdGVyLnNl
dE1JTUVUeXBlKCJ0ZXh0L2h0bWwiX3MpOwogICAgIHdyaXRlci5iZWdpbigpOwotICAgIHdyaXRl
ci5pbnNlcnREYXRhU3luY2hyb25vdXNseShTdHJpbmcobWFya3VwKSk7CisgICAgd3JpdGVyLmlu
c2VydERhdGFTeW5jaHJvbm91c2x5KG1hcmt1cCk7CiAgICAgd3JpdGVyLmVuZCgpOwogICAgIFJF
TEVBU0VfQVNTRVJUKHBhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJvZHkoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCmluZGV4IDNlMWVmM2ZiMzYyYmFmYzQzMDYxZTE4Y2Mw
YzEzZWQ5NWRlNjlmYWQuLjQ0NTg5MTJiYTA4YzY1NjE3NzZlMzJjNzcxNGNkM2U4OTc1ZGVhMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcApAQCAtNTEsNyArNTEsNyBAQCBVUkwgQmxv
YlVSTDo6Y3JlYXRlUHVibGljVVJMKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKIAog
VVJMIEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkKIHsKLSAgICByZXR1cm4gY3JlYXRlQmxv
YlVSTCgiYmxvYmludGVybmFsOi8vIik7CisgICAgcmV0dXJuIGNyZWF0ZUJsb2JVUkwoImJsb2Jp
bnRlcm5hbDovLyJfcyk7CiB9CiAKIHN0YXRpYyBjb25zdCBEb2N1bWVudCogYmxvYk93bmVyKGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiBibG9iT3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggMmZlNWFmMWY5OGQzNmRkYzg5ZjM5Y2NjMTdkN2I3
MGVjOTMzOWU4Yi4uYWNmNGZmOWIxODhmZjZiZTYyODQxMjVkMzg5MTA2NTg0YWM5MjQyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC05Myw3ICs5
Myw3IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uCiAKICAgICAvLyBDb25zdHJ1Y3QgYW5kIGxv
YWQgdGhlIHJlcXVlc3QuCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobV91cmxGb3JSZWFk
aW5nKTsKLSAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgIHJlcXVlc3Quc2V0
SFRUUE1ldGhvZCgiR0VUIl9zKTsKIAogICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9wdGlv
bnM7CiAgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IFNlbmRDYWxsYmFja1BvbGljeTo6
U2VuZENhbGxiYWNrczsKQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6
OmNvbnZlcnRUb1RleHQoKQogICAgIC8vIHByb3ZpZGVkIGVuY29kaW5nLiAgICAgCiAgICAgLy8g
RklYTUU6IGNvbnNpZGVyIHN1cHBvcnRpbmcgaW5jcmVtZW50YWwgZGVjb2RpbmcgdG8gaW1wcm92
ZSB0aGUgcGVyZi4KICAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAgbV9kZWNvZGVyID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgbV9lbmNvZGluZy5pc1ZhbGlk
KCkgPyBtX2VuY29kaW5nIDogUEFMOjpVVEY4RW5jb2RpbmcoKSk7CisgICAgICAgIG1fZGVjb2Rl
ciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiJfcywgbV9lbmNvZGlu
Zy5pc1ZhbGlkKCkgPyBtX2VuY29kaW5nIDogUEFMOjpVVEY4RW5jb2RpbmcoKSk7CiAgICAgaWYg
KGlzQ29tcGxldGVkKCkpCiAgICAgICAgIG1fc3RyaW5nUmVzdWx0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9yYXdEYXRhLT5kYXRhKCkpLCBt
X2J5dGVzTG9hZGVkKTsKICAgICBlbHNlCkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBGaWxlUmVh
ZGVyTG9hZGVyOjpjb252ZXJ0VG9EYXRhVVJMKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fc3RyaW5nUmVzdWx0ID0gbWFrZVN0cmluZygiZGF0YToiLCBtX2RhdGFUeXBlLmlzRW1w
dHkoKSA/ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIDogbV9kYXRhVHlwZSwgIjtiYXNlNjQs
IiwgYmFzZTY0RW5jb2RlZChtX3Jhd0RhdGEtPmRhdGEoKSwgbV9ieXRlc0xvYWRlZCkpOworICAg
IG1fc3RyaW5nUmVzdWx0ID0gbWFrZVN0cmluZygiZGF0YToiLCBtX2RhdGFUeXBlLmlzRW1wdHko
KSA/ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iX3MgOiBtX2RhdGFUeXBlLCAiO2Jhc2U2NCwi
LCBiYXNlNjRFbmNvZGVkKG1fcmF3RGF0YS0+ZGF0YSgpLCBtX2J5dGVzTG9hZGVkKSk7CiB9CiAK
IGJvb2wgRmlsZVJlYWRlckxvYWRlcjo6aXNDb21wbGV0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAKaW5kZXggNmQxYTk4OTViNDg3NWZkMDA2
ZmQ1MjYxNDVhMGRkYjI5NzhjYTc3ZS4uMDlhZTdkOTYzMmUxMzJiOGNjNDMzZWY3ZGFmMjA5MTEz
YTg3MjdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3Bw
CkBAIC0yODUsNyArMjg1LDcgQEAgQmFja0ZvcndhcmRDYWNoZTo6QmFja0ZvcndhcmRDYWNoZSgp
CiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9v
bmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjaygi
Y29tLmFwcGxlLldlYktpdC5zaG93QmFja0ZvcndhcmRDYWNoZSIsIFtdIHsKKyAgICAgICAgUEFM
OjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dCYWNrRm9yd2Fy
ZENhY2hlIl9zLCBbXSB7CiAgICAgICAgICAgICBCYWNrRm9yd2FyZENhY2hlOjpzaW5nbGV0b24o
KS5kdW1wKCk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5w
dXRUeXBlLmNwcAppbmRleCA3OTY2NTcwOGM1MTUyMTIwNDU3MjY2ZDhhOTVlZDQ3MTcwNmMzZjg2
Li41MDg0NWRjNzc0Y2EyODAyNDcwZjhlNDAwODVlMzRlNDUzOTIyZDhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAvLyBGcm9tIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3ZhbGlkLWUt
bWFpbC1hZGRyZXNzLgotc3RhdGljIGNvbnN0IGNoYXIgZW1haWxQYXR0ZXJuW10gPSAiXlthLXpB
LVowLTkuISMkJSYnKitcXC89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17
MCw2MX1bYS16QS1aMC05XSk/KD86XFwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1b
YS16QS1aMC05XSk/KSokIjsKK3N0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGVtYWlsUGF0
dGVybiA9ICJeW2EtekEtWjAtOS4hIyQlJicqK1xcLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/
OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXC5bYS16QS1aMC05XSg/OlthLXpB
LVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQiX3M7CiAKIHN0YXRpYyBib29sIGlzVmFsaWRF
bWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9FbnRlcktleUhpbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbnRl
cktleUhpbnQuY3BwCmluZGV4IGRkYmM0OTI2NDk2MWYwNGE5NmExODA3Mjg3YTk5OTA5OGVmODI1
NDYuLjk3MDM4MTRjODRmNDY5Y2Q0ZmIxMzY1ZTExM2Q2NzMyYTBlZTY5OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRW50ZXJLZXlIaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0VudGVyS2V5SGludC5jcHAKQEAgLTUzLDE5ICs1MywxOSBAQCBTdHJpbmcgYXR0cmli
dXRlVmFsdWVGb3JFbnRlcktleUhpbnQoRW50ZXJLZXlIaW50IGhpbnQpCiAgICAgY2FzZSBFbnRl
cktleUhpbnQ6OlVuc3BlY2lmaWVkOgogICAgICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CiAgICAg
Y2FzZSBFbnRlcktleUhpbnQ6OkVudGVyOgotICAgICAgICByZXR1cm4gImVudGVyIjsKKyAgICAg
ICAgcmV0dXJuICJlbnRlciJfczsKICAgICBjYXNlIEVudGVyS2V5SGludDo6RG9uZToKLSAgICAg
ICAgcmV0dXJuICJkb25lIjsKKyAgICAgICAgcmV0dXJuICJkb25lIl9zOwogICAgIGNhc2UgRW50
ZXJLZXlIaW50OjpHbzoKLSAgICAgICAgcmV0dXJuICJnbyI7CisgICAgICAgIHJldHVybiAiZ28i
X3M7CiAgICAgY2FzZSBFbnRlcktleUhpbnQ6Ok5leHQ6Ci0gICAgICAgIHJldHVybiAibmV4dCI7
CisgICAgICAgIHJldHVybiAibmV4dCJfczsKICAgICBjYXNlIEVudGVyS2V5SGludDo6UHJldmlv
dXM6Ci0gICAgICAgIHJldHVybiAicHJldmlvdXMiOworICAgICAgICByZXR1cm4gInByZXZpb3Vz
Il9zOwogICAgIGNhc2UgRW50ZXJLZXlIaW50OjpTZWFyY2g6Ci0gICAgICAgIHJldHVybiAic2Vh
cmNoIjsKKyAgICAgICAgcmV0dXJuICJzZWFyY2giX3M7CiAgICAgY2FzZSBFbnRlcktleUhpbnQ6
OlNlbmQ6Ci0gICAgICAgIHJldHVybiAic2VuZCI7CisgICAgICAgIHJldHVybiAic2VuZCJfczsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxBdG9tKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDg0
NGNmNjA1MjFmYjY0MTU0YzVjZjk1ZTBjNTU0OTgzN2M0ZmJlMmEuLjdjMjJkZDU3MWY2YmMzMmIy
M2ZiYmI1Y2IwMTlmZmI5Yzc3MzFjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGly
ZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcjo6Y3JlYXRlQmFzaWNEb2N1bWVudCgpCiAKICAgICBib2R5RWxlbWVudC0+
YXBwZW5kQ2hpbGQoKm1fdGFibGVFbGVtZW50KTsKIAotICAgIGRvY3VtZW50LnByb2Nlc3NWaWV3
cG9ydCgid2lkdGg9ZGV2aWNlLXdpZHRoIiwgVmlld3BvcnRBcmd1bWVudHM6OlZpZXdwb3J0TWV0
YSk7CisgICAgZG9jdW1lbnQucHJvY2Vzc1ZpZXdwb3J0KCJ3aWR0aD1kZXZpY2Utd2lkdGgiX3Ms
IFZpZXdwb3J0QXJndW1lbnRzOjpWaWV3cG9ydE1ldGEpOwogfQogCiB2b2lkIEZUUERpcmVjdG9y
eURvY3VtZW50UGFyc2VyOjphcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYgaW5wdXRTb3VyY2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDIyZmM5OTU5
YTcyZjIxMTBlZmIxYTU5OTUxYzA4YWFiNjc1MTk1YmUuLmM5OWU5NzY2YjQ4Mjk5Zjk0NTFmNDM4
YjQ1MzBkZmQ1NThhODUwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1l
bnQuY3BwCkBAIC01ODIsNyArNTgyLDcgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxl
Q2xpY2soRXZlbnQmIGV2ZW50KQogICAgICAgICBpZiAoaXNTYW1lT3JpZ2luKQogICAgICAgICAg
ICAgZG93bmxvYWRBdHRyaWJ1dGUgPSBSZXNvdXJjZVJlc3BvbnNlOjpzYW5pdGl6ZVN1Z2dlc3Rl
ZEZpbGVuYW1lKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZG93bmxvYWRBdHRyKSk7
CiAgICAgICAgIGVsc2UgaWYgKGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZG93
bmxvYWRBdHRyKSkKLSAgICAgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIlRoZSBkb3dubG9h
ZCBhdHRyaWJ1dGUgb24gYW5jaG9yIHdhcyBpZ25vcmVkIGJlY2F1c2UgaXRzIGhyZWYgVVJMIGhh
cyBhIGRpZmZlcmVudCBzZWN1cml0eSBvcmlnaW4uIik7CisgICAgICAgICAgICBkb2N1bWVudCgp
LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsICJUaGUgZG93bmxvYWQgYXR0cmlidXRlIG9uIGFuY2hvciB3YXMgaWdub3JlZCBi
ZWNhdXNlIGl0cyBocmVmIFVSTCBoYXMgYSBkaWZmZXJlbnQgc2VjdXJpdHkgb3JpZ2luLiJfcyk7
CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
QmFzZS5jcHAKaW5kZXggN2M1NzQxNTdhMTg1NWQ5OTU2NjBjYmFhNGI4NmQ1YWNmOGEyM2IwYS4u
MzQ2MjZiMDJhYzUzNDJkOGYxY2U4NWZlZjAyNWI3YjY4N2NiZmE3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2
b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9tUwogICAgICAgICAgICAgaWYgKCFzcmNWYWx1ZS5pc051bGwo
KSkKICAgICAgICAgICAgICAgICBzZXRMb2NhdGlvbihzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoc3JjVmFsdWUpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzZXRMb2Nh
dGlvbigiYWJvdXQ6c3JjZG9jIik7CisgICAgICAgICAgICBzZXRMb2NhdGlvbigiYWJvdXQ6c3Jj
ZG9jIl9zKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gc3JjQXR0ciAmJiAhaGFzQXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNkb2NBdHRyKSkKICAgICAgICAgc2V0TG9jYXRpb24o
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHZhbHVlKSk7CiAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNzk4ZmU4NmJjNGYzMjAy
NjcxY2QyZDcxNDY2MDAwYjZlYmFiYjZiZi4uZGZmNDZhM2YxMjYwMTc1YzhkM2FmNDU5ODg4NjVh
MDFkY2UzNDRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBA
IC0yMTIsNyArMjEyLDcgQEAgSW1hZ2VDYW5kaWRhdGUgSFRNTEltYWdlRWxlbWVudDo6YmVzdEZp
dFNvdXJjZUZyb21QaWN0dXJlRWxlbWVudCgpCiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHIg
ZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgICAg
TWVkaWFRdWVyeUV2YWx1YXRvciBldmFsdWF0b3IgeyBkb2N1bWVudCgpLnByaW50aW5nKCkgPyAi
cHJpbnQiIDogInNjcmVlbiIsIGRvY3VtZW50KCksIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50
RWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgpIDogbnVsbHB0ciB9OworICAgICAgICBNZWRpYVF1ZXJ5
RXZhbHVhdG9yIGV2YWx1YXRvciB7IGRvY3VtZW50KCkucHJpbnRpbmcoKSA/ICJwcmludCJfcyA6
ICJzY3JlZW4iX3MsIGRvY3VtZW50KCksIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVu
dC0+Y29tcHV0ZWRTdHlsZSgpIDogbnVsbHB0ciB9OwogICAgICAgICBhdXRvKiBxdWVyaWVzID0g
c291cmNlLnBhcnNlZE1lZGlhQXR0cmlidXRlKGRvY3VtZW50KCkpOwogICAgICAgICBMT0coTWVk
aWFRdWVyaWVzLCAiSFRNTEltYWdlRWxlbWVudCAlcCBiZXN0Rml0U291cmNlRnJvbVBpY3R1cmVF
bGVtZW50IGV2YWx1YXRpbmcgbWVkaWEgcXVlcmllcyIsIHRoaXMpOwogCkBAIC0yMzYsNyArMjM2
LDcgQEAgSW1hZ2VDYW5kaWRhdGUgSFRNTEltYWdlRWxlbWVudDo6YmVzdEZpdFNvdXJjZUZyb21Q
aWN0dXJlRWxlbWVudCgpCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmV2YWx1YXRlRHluYW1pY01l
ZGlhUXVlcnlEZXBlbmRlbmNpZXMoKQogewogICAgIFJlZlB0ciBkb2N1bWVudEVsZW1lbnQgPSBk
b2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpOwotICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgZXZh
bHVhdG9yIHsgZG9jdW1lbnQoKS5wcmludGluZygpID8gInByaW50IiA6ICJzY3JlZW4iLCBkb2N1
bWVudCgpLCBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPmNvbXB1dGVkU3R5bGUo
KSA6IG51bGxwdHIgfTsKKyAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIGV2YWx1YXRvciB7IGRvY3Vt
ZW50KCkucHJpbnRpbmcoKSA/ICJwcmludCJfcyA6ICJzY3JlZW4iX3MsIGRvY3VtZW50KCksIGRv
Y3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgpIDogbnVsbHB0
ciB9OwogCiAgICAgaWYgKCFldmFsdWF0b3IuZXZhbHVhdGVGb3JDaGFuZ2VzKG1fbWVkaWFRdWVy
eUR5bmFtaWNSZXN1bHRzKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKaW5kZXggOWEwODc0MWIxYzQwZGE2OThmYTY4YzhhNzMwODM4NmQ4
NTVkMjg0ZC4uOWZlZmJhYmQ2MWEzNjM5N2I1ZjdiNWNlZmQ3MjIxMzBmYjU5OTE5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMjk0LDEyICsxMjk0LDEy
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxJbnB1dEVsZW1lbnQ6OnNob3dQaWNrZXIoKQogICAg
IGlmICghbV9pbnB1dFR5cGUtPmFsbG93c1Nob3dQaWNrZXJBY3Jvc3NGcmFtZXMoKSkgewogICAg
ICAgICBGcmFtZSYgdG9wRnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRvcCgpOwogICAgICAgICBpZiAo
IWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmlzU2FtZU9yaWdpbkFzKHRvcEZy
YW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQotICAgICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJJbnB1dCBzaG93UGlja2VyKCkgY2FsbGVkIGZyb20g
Y3Jvc3Mtb3JpZ2luIGlmcmFtZS4iIH07CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
U2VjdXJpdHlFcnJvciwgIklucHV0IHNob3dQaWNrZXIoKSBjYWxsZWQgZnJvbSBjcm9zcy1vcmln
aW4gaWZyYW1lLiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8qIHdpbmRvdyA9IGZyYW1lLT53aW5k
b3coKTsKICAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5oYXNUcmFuc2llbnRBY3RpdmF0aW9u
KCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RBbGxvd2VkRXJyb3IsICJJbnB1dCBz
aG93UGlja2VyKCkgcmVxdWlyZXMgYSB1c2VyIGdlc3R1cmUuIiB9OworICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90QWxsb3dlZEVycm9yLCAiSW5wdXQgc2hvd1BpY2tlcigpIHJlcXVpcmVz
IGEgdXNlciBnZXN0dXJlLiJfcyB9OwogCiAgICAgbV9pbnB1dFR5cGUtPnNob3dQaWNrZXIoKTsK
ICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggZDM3MzJiODE4Y2IyNjFlMjVkY2EzMjdjMzA5OTBiNmU0Nzg3ZGQ1Ni4uMmYyZTQwNDUz
NDUyMTcyYTEyMTZkMDAwYzJiYjZhY2NlM2MwZjU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zNjgyLDcgKzM2ODIsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnBsYXkoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIAogICAgIGlm
IChtX2Vycm9yICYmIG1fZXJyb3ItPmNvZGUoKSA9PSBNZWRpYUVycm9yOjpNRURJQV9FUlJfU1JD
X05PVF9TVVBQT1JURUQpIHsKICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJyZWpl
Y3RpbmcgcHJvbWlzZSBiZWNhdXNlIG9mIGVycm9yIik7Ci0gICAgICAgIHByb21pc2UucmVqZWN0
KE5vdFN1cHBvcnRlZEVycm9yLCAiVGhlIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiIpOwor
ICAgICAgICBwcm9taXNlLnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvciwgIlRoZSBvcGVyYXRpb24g
aXMgbm90IHN1cHBvcnRlZC4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00ODk0
LDcgKzQ4OTQsNyBAQCBVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxk
KENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrZQogICAgICAgICAgICAgICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIsICInbWVkaWEnIGlzICIsIHNvdXJjZS0+YXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihtZWRpYUF0dHIpKTsKICAgICAgICAgICAgIGF1dG8qIHJlbmRl
cmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgIExPRyhNZWRpYVF1ZXJpZXMsICJI
VE1MTWVkaWFFbGVtZW50ICVwIHNlbGVjdE5leHRTb3VyY2VDaGlsZCBldmFsdWF0aW5nIG1lZGlh
IHF1ZXJpZXMiLCB0aGlzKTsKLSAgICAgICAgICAgIGlmICghTWVkaWFRdWVyeUV2YWx1YXRvciB7
ICJzY3JlZW4iLCBkb2N1bWVudCgpLCByZW5kZXJlciA/ICZyZW5kZXJlci0+c3R5bGUoKSA6IG51
bGxwdHIgfS5ldmFsdWF0ZSgqbWVkaWEpKQorICAgICAgICAgICAgaWYgKCFNZWRpYVF1ZXJ5RXZh
bHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQoKSwgcmVuZGVyZXIgPyAmcmVuZGVyZXItPnN0
eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUoKm1lZGlhKSkKICAgICAgICAgICAgICAgICBnb3Rv
IENoZWNrQWdhaW47CiAgICAgICAgIH0KIApAQCAtNzE1OCw3ICs3MTU4LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp1cGRhdGVTbGVlcERpc2FibGluZygpCiAgICAgZWxzZSBpZiAoc2hvdWxk
RGlzYWJsZVNsZWVwICE9IFNsZWVwVHlwZTo6Tm9uZSkgewogICAgICAgICBhdXRvIHR5cGUgPSBz
aG91bGREaXNhYmxlU2xlZXAgPT0gU2xlZXBUeXBlOjpEaXNwbGF5ID8gUEFMOjpTbGVlcERpc2Fi
bGVyOjpUeXBlOjpEaXNwbGF5IDogUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlOjpTeXN0ZW07CiAg
ICAgICAgIGlmICghbV9zbGVlcERpc2FibGVyIHx8IG1fc2xlZXBEaXNhYmxlci0+dHlwZSgpICE9
IHR5cGUpCi0gICAgICAgICAgICBtX3NsZWVwRGlzYWJsZXIgPSBtYWtlVW5pcXVlPFNsZWVwRGlz
YWJsZXI+KCJjb20uYXBwbGUuV2ViQ29yZTogSFRNTE1lZGlhRWxlbWVudCBwbGF5YmFjayIsIHR5
cGUpOworICAgICAgICAgICAgbV9zbGVlcERpc2FibGVyID0gbWFrZVVuaXF1ZTxTbGVlcERpc2Fi
bGVyPigiY29tLmFwcGxlLldlYkNvcmU6IEhUTUxNZWRpYUVsZW1lbnQgcGxheWJhY2siX3MsIHR5
cGUpOwogICAgIH0KIAogICAgIGlmIChtX3BsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZGMxYjg3M2U5NzI4ODczM2E4ZjY1NWQ3YjVjMTJkODlk
NjljZGUyMi4uMzczZDQzNTViNjI0ZmU3OGZhMzE1OTM5MzcwZmU5YjNkNzg4YTMwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTE4Miw3ICsxODIsNyBA
QCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKFZlY3RvcjxTdHJp
bmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8UwogICAgIC8vIGVsc2Ugb3VyIEphdmEgcGx1Z2luIHdp
bGwgbWlzaW50ZXJwcmV0IGl0LiBbNDAwNDUzMV0KICAgICBTdHJpbmcgY29kZWJhc2U7CiAgICAg
aWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1JTUVUeXBlKHNlcnZpY2VUeXBlKSkg
ewotICAgICAgICBjb2RlYmFzZSA9ICJjb2RlYmFzZSI7CisgICAgICAgIGNvZGViYXNlID0gImNv
ZGViYXNlIl9zOwogICAgICAgICB1bmlxdWVQYXJhbU5hbWVzLmFkZChjb2RlYmFzZS5pbXBsKCkp
OyAvLyBwcmV0ZW5kIHdlIGZvdW5kIGl0IGluIGEgUEFSQU0gYWxyZWFkeQogICAgIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggNTliZmM2ZTBmMWU1OTA0M2RjYzVi
YmRhMmQyMmFhZTM2NWE2MTMxNC4uYWNjZWFhNTNiY2JjZjM4MzdiZDRiOTkyZDZlMmFhNTQ3OTQy
OTA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTEyMiw3ICsxMjIsNyBA
QCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgLy8gMS4gSWYgZWl0aGVyIHRoZSBzdyBvciBz
aCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCBidXQgemVybywgcmV0dXJuIGEgcHJvbWlzZQogICAg
IC8vICAgIHJlamVjdGVkIHdpdGggYW4gIlJhbmdlRXJyb3IiIERPTUV4Y2VwdGlvbiBhbmQgYWJv
cnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKCFzdyB8fCAhc2gpIHsKLSAgICAgICAgcHJvbWlzZS5y
ZWplY3QoUmFuZ2VFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgd2l0aCBhIHdpZHRo
IG9yIGhlaWdodCBvZiAwIik7CisgICAgICAgIHByb21pc2UucmVqZWN0KFJhbmdlRXJyb3IsICJD
YW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIHdpdGggYSB3aWR0aCBvciBoZWlnaHQgb2YgMCJfcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBzdGF0aWMgRXhj
ZXB0aW9uT3I8SW50UmVjdD4gY3JvcHBlZFNvdXJjZVJlY3RhbmdsZVdpdGhGb3JtYXR0aW5nKElu
dFNpemUgaW5wdXRTaQogICAgIC8vICAgIHRoYW4gb3IgZXF1YWwgdG8gMCwgdGhlbiByZXR1cm4g
YSBwcm9taXNlIHJlamVjdGVkIHdpdGggIkludmFsaWRTdGF0ZUVycm9yIgogICAgIC8vICAgIERP
TUV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKChvcHRpb25zLnJlc2l6
ZVdpZHRoICYmIG9wdGlvbnMucmVzaXplV2lkdGgudmFsdWUoKSA8PSAwKSB8fCAob3B0aW9ucy5y
ZXNpemVIZWlnaHQgJiYgb3B0aW9ucy5yZXNpemVIZWlnaHQudmFsdWUoKSA8PSAwKSkKLSAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiSW52YWxpZCByZXNpemUg
ZGltZW5zaW9ucyIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yLCAiSW52YWxpZCByZXNpemUgZGltZW5zaW9ucyJfcyB9OwogCiAgICAgLy8gMy4gSWYgc3gs
IHN5LCBzdyBhbmQgc2ggYXJlIHNwZWNpZmllZCwgbGV0IHNvdXJjZVJlY3RhbmdsZSBiZSBhIHJl
Y3RhbmdsZSB3aG9zZQogICAgIC8vICAgIGNvcm5lcnMgYXJlIHRoZSBmb3VyIHBvaW50cyAoc3gs
IHN5KSwgKHN4K3N3LCBzeSksKHN4K3N3LCBzeStzaCksIChzeCxzeStzaCkuCkBAIC0zMTQsNyAr
MzE0LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogCiAgICAgYXV0byogY2FjaGVkSW1hZ2Ug
PSBpbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCAh
aW1hZ2VFbGVtZW50LT5jb21wbGV0ZSgpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEludmFs
aWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCB0aGF0IGlzIG5vdCBjb21w
bGV0ZWx5IGF2YWlsYWJsZSIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVF
cnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgdGhhdCBpcyBub3QgY29tcGxldGVseSBh
dmFpbGFibGUiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMjUsNyArMzI1LDcg
QEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogCiAgICAgYXV0byBpbWFnZVNpemUgPSBjYWNoZWRJ
bWFnZS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50LT5yZW5kZXJlcigpLCAxLjBm
KTsKICAgICBpZiAoKCFpbWFnZVNpemUud2lkdGgoKSB8fCAhaW1hZ2VTaXplLmhlaWdodCgpKSAm
JiAoIW9wdGlvbnMucmVzaXplV2lkdGggfHwgIW9wdGlvbnMucmVzaXplSGVpZ2h0KSkgewotICAg
ICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1h
Z2VCaXRtYXAgZnJvbSBhIHNvdXJjZSB3aXRoIG5vIGludHJpbnNpYyBzaXplIHdpdGhvdXQgcHJv
dmlkaW5nIHJlc2l6ZSBkaW1lbnNpb25zIik7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFs
aWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGEgc291cmNlIHdp
dGggbm8gaW50cmluc2ljIHNpemUgd2l0aG91dCBwcm92aWRpbmcgcmVzaXplIGRpbWVuc2lvbnMi
X3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LAogICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgZm9yIHRoZSBpbWFnZS4K
IAogICAgIGlmICghcmVjdCAmJiAoIWltYWdlU2l6ZS53aWR0aCgpIHx8ICFpbWFnZVNpemUuaGVp
Z2h0KCkpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fu
bm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGEgc291cmNlIHdpdGggbm8gaW50cmluc2ljIHNp
emUgd2l0aG91dCBwcm92aWRpbmcgZGltZW5zaW9ucyIpOworICAgICAgICBwcm9taXNlLnJlamVj
dChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBhIHNv
dXJjZSB3aXRoIG5vIGludHJpbnNpYyBzaXplIHdpdGhvdXQgcHJvdmlkaW5nIGRpbWVuc2lvbnMi
X3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LAogCiAgICAgYXV0byBpbWFnZUZvclJlbmRlcmVyID0gY2FjaGVkSW1h
Z2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50LT5yZW5kZXJlcigpKTsKICAgICBpZiAo
IWltYWdlRm9yUmVuZGVyZXIpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRl
RXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gaW1hZ2UgdGhhdCBjYW4ndCBi
ZSByZW5kZXJlZCIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwg
IkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBpbWFnZSB0aGF0IGNhbid0IGJlIHJlbmRl
cmVkIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDIzLDcgKzQyMyw3IEBAIHZv
aWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICAvLyAgICBET01FeGNlcHRpb24gYW5kIGFib3J0IHRo
ZXNlIHN0ZXBzLgogICAgIGF1dG8gc2l6ZSA9IGNhbnZhcy5zaXplKCk7CiAgICAgaWYgKCFzaXpl
LndpZHRoKCkgfHwgIXNpemUuaGVpZ2h0KCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52
YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gYSBjYW52YXMg
dGhhdCBoYXMgemVybyB3aWR0aCBvciBoZWlnaHQiKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
SW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gYSBjYW52
YXMgdGhhdCBoYXMgemVybyB3aWR0aCBvciBoZWlnaHQiX3MpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC00MzgsNyArNDM4LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogCiAgICAg
YXV0byBpbWFnZUZvclJlbmRlciA9IGNhbnZhcy5jb3BpZWRJbWFnZSgpOwogICAgIGlmICghaW1h
Z2VGb3JSZW5kZXIpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3Is
ICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gY2FudmFzIHRoYXQgY2FuJ3QgYmUgcmVu
ZGVyZWQiKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5u
b3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gY2FudmFzIHRoYXQgY2FuJ3QgYmUgcmVuZGVyZWQi
X3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00ODMsMTQgKzQ4MywxNCBAQCB2b2lk
IEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgLy8gICAgb3IgcmV0dXJucyBiYWQsIHRoZW4gcmV0dXJu
IHAgcmVqZWN0ZWQgd2l0aCBhbiAiSW52YWxpZFN0YXRlRXJyb3IiCiAgICAgLy8gICAgRE9NRXhj
ZXB0aW9uLgogICAgIGlmICh2aWRlby0+cmVhZHlTdGF0ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6
OkhBVkVfTk9USElORyB8fCB2aWRlby0+cmVhZHlTdGF0ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6
OkhBVkVfTUVUQURBVEEpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJy
b3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGJlZm9yZSB0aGUgSFRNTFZpZGVvRWxlbWVu
dCBoYXMgZGF0YSIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwg
IkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgYmVmb3JlIHRoZSBIVE1MVmlkZW9FbGVtZW50IGhh
cyBkYXRhIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIDYuMS4gSWYgaW1h
Z2UncyBuZXR3b3JrU3RhdGUgYXR0cmlidXRlIGlzIE5FVFdPUktfRU1QVFksIHRoZW4gcmV0dXJu
IHAKICAgICAvLyAgICAgIHJlamVjdGVkIHdpdGggYW4gIkludmFsaWRTdGF0ZUVycm9yIiBET01F
eGNlcHRpb24uCiAgICAgaWYgKHZpZGVvLT5uZXR3b3JrU3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVt
ZW50OjpORVRXT1JLX0VNUFRZKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0
ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBiZWZvcmUgdGhlIEhUTUxWaWRlb0Vs
ZW1lbnQgaGFzIGRhdGEiKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJy
b3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGJlZm9yZSB0aGUgSFRNTFZpZGVvRWxlbWVu
dCBoYXMgZGF0YSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU1Niw3ICs1NTYs
NyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAjaWYgRU5BQkxFKENTU19UWVBFRF9PTSkKIHZv
aWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJl
ZlB0cjxDU1NTdHlsZUltYWdlVmFsdWU+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIHN0ZDo6b3B0
aW9uYWw8SW50UmVjdD4sIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKLSAgICBw
cm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCIpOworICAg
IHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zKTsK
IH0KICNlbmRpZgogCkBAIC01NjUsNyArNTY1LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRl
UHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAog
ICAgIC8vIDIuIElmIGltYWdlJ3MgW1tEZXRhY2hlZF1dIGludGVybmFsIHNsb3QgdmFsdWUgaXMg
dHJ1ZSwgcmV0dXJuIGEgcHJvbWlzZQogICAgIC8vICAgIHJlamVjdGVkIHdpdGggYW4gIkludmFs
aWRTdGF0ZUVycm9yIiBET01FeGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlm
IChleGlzdGluZ0ltYWdlQml0bWFwLT5pc0RldGFjaGVkKCkgfHwgIWV4aXN0aW5nSW1hZ2VCaXRt
YXAtPmJ1ZmZlcigpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9y
LCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGEgZGV0YWNoZWQgSW1hZ2VCaXRtYXAi
KTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3Jl
YXRlIEltYWdlQml0bWFwIGZyb20gYSBkZXRhY2hlZCBJbWFnZUJpdG1hcCJfcyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTcyMiw3ICs3MjIsNyBAQCBwcml2YXRlOgogICAgICAgICB9
KTsKIAogICAgICAgICBpZiAoIW1fYXJyYXlCdWZmZXJUb1Byb2Nlc3MpIHsKLSAgICAgICAgICAg
IG1fcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJBbiBlcnJvciBvY2N1cmVkIHJl
YWRpbmcgdGhlIEJsb2IgYXJndW1lbnQgdG8gY3JlYXRlSW1hZ2VCaXRtYXAiKTsKKyAgICAgICAg
ICAgIG1fcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJBbiBlcnJvciBvY2N1cmVk
IHJlYWRpbmcgdGhlIEJsb2IgYXJndW1lbnQgdG8gY3JlYXRlSW1hZ2VCaXRtYXAiX3MpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTc0MSw3ICs3NDEsNyBAQCBwcml2YXRl
Ogogdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWY8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZm
ZXIsIFN0cmluZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29u
c3QgVVJMJiBzb3VyY2VVUkwsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIHN0ZDo6b3B0
aW9uYWw8SW50UmVjdD4gcmVjdCwgUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKCFhcnJh
eUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRT
dGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBhbiBJbWFnZUJpdG1hcCBmcm9tIGFuIGVtcHR5IGJ1
ZmZlciIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5v
dCBjcmVhdGUgYW4gSW1hZ2VCaXRtYXAgZnJvbSBhbiBlbXB0eSBidWZmZXIiX3MpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC03NTAsNyArNzUwLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6
Y3JlYXRlRnJvbUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25D
b250ZXgKICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShvYnNlcnZlci5wdHIo
KSk7CiAgICAgYXV0byByZXN1bHQgPSBpbWFnZS0+c2V0RGF0YShzaGFyZWRCdWZmZXIuY29weVJl
ZigpLCB0cnVlKTsKICAgICBpZiAocmVzdWx0ICE9IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0
ZSB8fCBpbWFnZS0+aXNOdWxsKCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0
YXRlRXJyb3IsICJDYW5ub3QgZGVjb2RlIHRoZSBkYXRhIGluIHRoZSBhcmd1bWVudCB0byBjcmVh
dGVJbWFnZUJpdG1hcCIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJv
ciwgIkNhbm5vdCBkZWNvZGUgdGhlIGRhdGEgaW4gdGhlIGFyZ3VtZW50IHRvIGNyZWF0ZUltYWdl
Qml0bWFwIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzYzLDcgKzc2Myw3IEBA
IHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4CiAgICAgYXV0byBvdXRwdXRTaXplID0gb3V0cHV0U2l6
ZUZvclNvdXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUucmV0dXJuVmFsdWUoKSwgb3B0aW9u
cyk7CiAgICAgYXV0byBiaXRtYXBEYXRhID0gY3JlYXRlSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgb3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSwgaW1hZ2UtPmNvbG9y
U3BhY2UoKSk7CiAgICAgaWYgKCFiaXRtYXBEYXRhKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0
KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBhbiBpbWFnZSBidWZmZXIgZnJvbSB0
aGUgYXJndW1lbnQgdG8gY3JlYXRlSW1hZ2VCaXRtYXAiKTsKKyAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBmcm9t
IHRoZSBhcmd1bWVudCB0byBjcmVhdGVJbWFnZUJpdG1hcCJfcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTc5Miw3ICs3OTIsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9t
aXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAg
Ly8gNi4yLiBJZiBJc0RldGFjaGVkQnVmZmVyKGJ1ZmZlcikgaXMgdHJ1ZSwgdGhlbiByZXR1cm4g
cCByZWplY3RlZCB3aXRoIGFuCiAgICAgLy8gICAgICAiSW52YWxpZFN0YXRlRXJyb3IiIERPTUV4
Y2VwdGlvbi4KICAgICBpZiAoaW1hZ2VEYXRhLT5kYXRhKCkuaXNEZXRhY2hlZCgpKSB7Ci0gICAg
ICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiSW1hZ2VEYXRhJ3Mgdmlld2Vk
IGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZh
bGlkU3RhdGVFcnJvciwgIkltYWdlRGF0YSdzIHZpZXdlZCBidWZmZXIgaGFzIGJlZW4gZGV0YWNo
ZWQiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURv
Y3VtZW50LmNwcAppbmRleCA0ZDEwZmIwNTc3MjQ2Mjg1NzY4ODUwM2Q2NjQ3Njk3ZjBjYjA0YmEx
Li4yMDZjNjZiN2JhMTk3YmI2MzIzNDQ5NTE5NjEyYzZkNjk5NjNkMjBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIEltYWdlRG9j
dW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICBhdXRvIGJvZHkgPSBIVE1MQm9k
eUVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAgICAgYm9keS0+c2V0QXR0cmlidXRlKHN0eWxlQXR0
ciwgIm1hcmdpbjogMHB4Iik7CiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5
cGUoZG9jdW1lbnQoKS5sb2FkZXIoKS0+cmVzcG9uc2VNSU1FVHlwZSgpKSkKLSAgICAgICAgYm9k
eS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgIndo
aXRlIik7CisgICAgICAgIGJvZHktPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IsICJ3aGl0ZSJfcyk7CiAgICAgcm9vdEVsZW1lbnQtPmFwcGVuZENoaWxk
KGJvZHkpOwogICAgIAogICAgIGF1dG8gaW1hZ2VFbGVtZW50ID0gSW1hZ2VEb2N1bWVudEVsZW1l
bnQ6OmNyZWF0ZSgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RnJhZ21lbnRVUklQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50
VVJJUGFyc2VyLmNwcAppbmRleCA2NDRlZjdiNzUyNjc2YjU5M2VjOTc3ODc4ODFlZmI0ZmM3MTAx
M2I5Li4wNjVhNzBkZTJkYTM3Y2Y3M2U2MDUzZjk3MjVmMzgyOGI4MDIxMDIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKQEAgLTEzNCwxMSAr
MTM0LDExIEBAIHZvaWQgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VGcmFnbWVudHMoKQog
ICAgICAgICAvLyAgICAgbmFtZSBvciB2YWx1ZSBhcmUgbm90IHZhbGlkIFVURi04IHN0cmluZ3Ms
IHRoZW4gcmVtb3ZlIHRoZSBuYW1lLXZhbHVlIHBhaXIgZnJvbSB0aGUgbGlzdC4KICAgICAgICAg
Ym9vbCB2YWxpZFVURjggPSBmYWxzZTsKICAgICAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSAmJiAh
dmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBuYW1lID0gbmFtZS51dGY4KFN0cmljdENv
bnZlcnNpb24pLmRhdGEoKTsKKyAgICAgICAgICAgIG5hbWUgPSBTdHJpbmcgeyBuYW1lLnV0Zjgo
U3RyaWN0Q29udmVyc2lvbikuZGF0YSgpIH07CiAgICAgICAgICAgICB2YWxpZFVURjggPSAhbmFt
ZS5pc0VtcHR5KCk7CiAKICAgICAgICAgICAgIGlmICh2YWxpZFVURjgpIHsKLSAgICAgICAgICAg
ICAgICB2YWx1ZSA9IHZhbHVlLnV0ZjgoU3RyaWN0Q29udmVyc2lvbikuZGF0YSgpOworICAgICAg
ICAgICAgICAgIHZhbHVlID0gU3RyaW5nIHsgdmFsdWUudXRmOChTdHJpY3RDb252ZXJzaW9uKS5k
YXRhKCkgfTsKICAgICAgICAgICAgICAgICB2YWxpZFVURjggPSAhdmFsdWUuaXNFbXB0eSgpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1BERkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCmlu
ZGV4IDU5NmE2NTE4M2YxZmY3Nzc1ODZhNmE2NjdjMzU0ZWY0ZTdiNGI4ZTAuLjRlMTk0NjE2ZWNl
MjUzYzk0MTI0Y2ZiZTcyNDU4YWJiYmQ4NTNiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUERGRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1l
bnQuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBQREZEb2N1bWVudDo6c2VuZFBERkFycmF5
QnVmZmVyKCkKIAogICAgIGF1dG8qIGZyYW1lID0gbV9pZnJhbWUtPmNvbnRlbnRGcmFtZSgpOwog
ICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
NjY4IC0gVXNlIHBvc3RNZXNzYWdlCi0gICAgYXV0byBvcGVuRnVuY3Rpb24gPSBmcmFtZS0+c2Ny
aXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKCJQREZKU0NvbnRlbnRTY3JpcHQu
b3BlbiIpLmdldE9iamVjdCgpOworICAgIGF1dG8gb3BlbkZ1bmN0aW9uID0gZnJhbWUtPnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbigiUERGSlNDb250ZW50U2NyaXB0Lm9w
ZW4iX3MpLmdldE9iamVjdCgpOwogCiAgICAgYXV0byBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9i
YWxPYmplY3QoKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcAppbmRl
eCA4NzUzN2UyYmI5M2U0YjY5OTk3NzAwYWZmYzE4N2Y2Y2Y1YmJlYWI1Li40ZTY4ZWQ1MTNjYTM4
MTdhNzEwNjc3NzYyNzM3YmFiM2Q2MDU3NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCkBAIC0zOCw3ICszOCw3IEBAIEFO
R0xFSW5zdGFuY2VkQXJyYXlzOjpBTkdMRUluc3RhbmNlZEFycmF5cyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKICNp
ZiBVU0UoQU5HTEUpCi0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRl
bnNpb25FbmFibGVkKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CisgICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9pbnN0
YW5jZWRfYXJyYXlzIl9zKTsKICNlbmRpZgogfQogCkBAIC01Miw3ICs1Miw3IEBAIFdlYkdMRXh0
ZW5zaW9uOjpFeHRlbnNpb25OYW1lIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpnZXROYW1lKCkgY29u
c3QKIGJvb2wgQU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRH
TCYgY29udGV4dCkKIHsKICNpZiBVU0UoQU5HTEUpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKQotICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV9p
bnN0YW5jZWRfYXJyYXlzIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24o
IkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
Y29udGV4dCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAppbmRleCA0NmM5NjBm
MTkxNjRhNzVmNjg3Y2E5MjZkNGY1ZjYxMTgzMDI1YWJiLi4zNGFiMTBmN2U0YWNiMWFlNTM4ZDYw
NzdmMjQ1OWRjZTFhOTFlOTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcApAQCAtMzcsNyArMzcsNyBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyk7CiBF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjpFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyIpOworICAgIGNvbnRleHQu
Z3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fcmd0YyJfcyk7CiAKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQpOwog
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6
OkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA2ZDBhODcy
ODVhODA2MWM1MGU2NjkxNmQ1MjE0NGJlYzVmNDQ2ZWJlLi4yNDIyOGQzYmU2MDc1ZTdkZjU4MTA4
OWIxMmYzMTAyOWYxMTAwYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjM5LDEwICsyMzksMTAgQEAgdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplVmVydGV4QXJyYXlPYmplY3RzKCkK
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVNoYWRlckV4dGVuc2lvbnMo
KQogewogICAgIC8vIEZJWE1FOiB0aGVzZSBhcmUgaW4gdGhlIFdlYkdMIDIuMCBjb3JlIEFQSSBh
bmQgc2hvdWxkIGJlIHJlbW92ZWQuCi0gICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25FbmFi
bGVkKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKLSAgICBtX2NvbnRleHQtPmVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKLSAgICBtX2NvbnRleHQt
PmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKLSAg
ICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mcmFnX2RlcHRoIik7
CisgICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfc3RhbmRhcmRf
ZGVyaXZhdGl2ZXMiX3MpOworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfRVhUX2RyYXdfYnVmZmVycyJfcyk7CisgICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25F
bmFibGVkKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKKyAgICBtX2NvbnRleHQtPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9mcmFnX2RlcHRoIl9zKTsKIH0KIAogYm9vbCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJ1ZmZlclRhcmdldChjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAKaW5kZXggYmMzZWJl
MmQ1ZTc1M2IxODljYTU3MmE1NGE5MWQ2MmY5MTlkYTJhOC4uMTdhN2IyNGRmZjEwNjZjMzk2MWM5
OWY4M2I4NDExMjVlYjJkZjNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMpOwog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIik7CisgICAgY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTURfY29tcHJl
c3NlZF9BVENfdGV4dHVyZSJfcyk7CiAKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsKICAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01Q
UkVTU0VEX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCk7CkBAIC01NCw3ICs1NCw3IEBAIFdl
YkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6Omdl
dE5hbWUoKSBjb25zdAogCiBib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKKyAgICByZXR1
cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1
cmUiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCmluZGV4
IDkxNWRiMmFlM2U0M2ZkYjc5NmYwNjUxMGQ0MzcwNzk2NmI5ZjM0OWEuLjE1NjVjMTEyN2I1YjMw
OTIyMWIwNDQ1N2NiMGJlZGQ3ZDk3OTBmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuY3BwCkBAIC0zOCw3ICsz
OCw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJl
RVRDKTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVF
VEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5z
aW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIik7CisgICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9B
TkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIl9zKTsKIAogICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUjExX0VBQyk7
CiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRH
TDo6Q09NUFJFU1NFRF9TSUdORURfUjExX0VBQyk7CkBAIC02MSw3ICs2MSw3IEBAIFdlYkdMRXh0
ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OmdldE5hbWUo
KSBjb25zdAogCiBib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEM6OnN1cHBvcnRlZChHcmFw
aGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfQU5HTEVfY29tcHJlc3NlZF90ZXh0dXJlX2V0YyIpOworICAgIHJldHVybiBj
b250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRj
Il9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwCmluZGV4
IGFkMWJmMmZjOTgyNDhiZjE3NzBhM2I2MTkwYjE3MDkyZjYwODA5YjcuLjhlMWY1ZWJkNjdkOWE4
MWM2OGFlNGRmZTk3MzVlOWYyNjgzZTA5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMxKTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDMShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xF
eHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJl
Iik7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFi
bGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSJfcyk7CiAKICAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpFVEMxX1JH
QjhfT0VTKTsKIH0KQEAgLTUyLDcgKzUyLDcgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5h
bWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OmdldE5hbWUoKSBjb25zdAogCiBib29sIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNv
bnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19j
b21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9y
dHNFeHRlbnNpb24oIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIl9zKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKaW5kZXggNWE4NDk5
ZTllNGNmY2I5MTg5YWNmNGY4YmY3NzBjOGU5NTRiNDRlNy4uNDdhNGI0ZWVkYzc3YTIyYmViN2Yy
OTc3MTc4YjU2NDIwZWJkZjAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCkBAIC0zOSw3ICszOSw3
IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZS
VEMpOwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0
ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1
cmVFeHRlbnNpb25FbmFibGVkKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOwor
ICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMiX3MpOwogCiAgICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0Jf
UFZSVENfNEJQUFYxX0lNRyk7CiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1h
dChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyk7CkBA
IC01Niw3ICs1Niw3IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVQVlJUQzo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJvb2wgV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0g
ICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR190ZXh0dXJlX2NvbXBy
ZXNzaW9uX3B2cnRjIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdM
X0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIl9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCmluZGV4IGZhNzA4MTFlNzUzNzBlNzI4ZGU0N2NkYjEw
YTkxODZhM2E1MDIwOWMuLjJmOThiYjIxZjI1NDRiMzdlYzE5OTQ4YzVkZTNhNmY0YjI5NzhmNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQy5jcHAKQEAgLTQwLDkgKzQwLDkgQEAgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiAgICAgYXV0byogZ2NnbCA9
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKLSAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25F
bmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7Ci0gICAgZ2NnbC0+ZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzIik7
Ci0gICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfdGV4dHVyZV9jb21w
cmVzc2lvbl9keHQ1Iik7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSJfcyk7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZCgiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzIl9zKTsKKyAgICBnY2ds
LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4
dDUiX3MpOwogCiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCk7CiAgICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUMV9FWFQpOwpAQCAtNjAsMTIgKzYwLDEyIEBAIFdlYkdMRXh0ZW5zaW9uOjpF
eHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpnZXROYW1lKCkgY29uc3QK
IGJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRl
eHRHTCYgY29udGV4dCkKIHsKICNpZiBVU0UoQU5HTEUpCi0gICAgcmV0dXJuIGNvbnRleHQuc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQotICAgICAg
ICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNz
aW9uX2R4dDMiKQotICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdM
RV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0
c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSJfcykKKyAgICAgICAg
JiYgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQzIl9zKQorICAgICAgICAmJiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdM
RV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiX3MpOwogI2Vsc2UKLSAgICByZXR1cm4gY29udGV4
dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpCi0g
ICAgICAgIHx8IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2R4dDEiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyJfcykKKyAgICAgICAgfHwgY29udGV4dC5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSJfcyk7CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAKaW5kZXggZjY1ZjQyYWUyMmFjNzMxMmUx
Mjg0ZGYxY2MyMWY0ZTY2MDFmNjYzOS4uNDU2YzIwNGFiZWMyNGY0NzdhMDBhNGJlM2M1NGFmODY0
Njg0YjQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0Ip
OwogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQ3NSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdM
RXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5l
bnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3Ny
Z2IiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYiJfcyk7CiAgICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJF
U1NFRF9TUkdCX1MzVENfRFhUMV9FWFQpOwogICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDFfRVhUKTsKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNz
Q29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVCk7CkBAIC01NCw3
ICs1NCw3IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDc1JHQjo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJvb2wgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVENzUkdCOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0g
ICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGNfc3JnYiIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IiX3MpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTERlYnVnU2hhZGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERl
YnVnU2hhZGVycy5jcHAKaW5kZXggYTY5ZGEyOTAzODQxNjE2MDg3OWQ3OGI4YmZjYWUwN2QwZDQ1
NzVhOS4uM2M5NGUyOTU3Y2M1OWRjMzAxYzc3MjM5OWFjOTJiMDAxZjcwYjk3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcApAQCAtNDAs
NyArNDAsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xEZWJ1Z1NoYWRlcnMp
OwogV2ViR0xEZWJ1Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJzKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAg
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIik7CisgICAgY29udGV4dC5ncmFwaGljc0Nv
bnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV90cmFuc2xhdGVkX3No
YWRlcl9zb3VyY2UiX3MpOwogfQogCiBXZWJHTERlYnVnU2hhZGVyczo6fldlYkdMRGVidWdTaGFk
ZXJzKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEZXB0aFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZXB0aFRleHR1cmUuY3BwCmluZGV4IDkxNTYzYmNhZTJmMTE4OTEyNGNmNWM4ZjM2ZmYzMmE5M2Y1
NTgwYTAuLmU4YTI4NDk5ZjI5ZGIyNzM3NDg0YjgwZmVmNmJjN2M4N2RjNmU5NDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKQEAgLTM5
LDggKzM5LDggQEAgV2ViR0xEZXB0aFRleHR1cmU6OldlYkdMRGVwdGhUZXh0dXJlKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0
KQogewogICAgIGF1dG8qIGdjZ2wgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7Ci0gICAg
Z2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2RlcHRoX3RleHR1cmUiKTsKLSAg
ICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOwor
ICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19kZXB0aF90ZXh0dXJlIl9z
KTsKKyAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJfZGVwdGhfdGV4dHVy
ZSJfcyk7CiB9CiAKIFdlYkdMRGVwdGhUZXh0dXJlOjp+V2ViR0xEZXB0aFRleHR1cmUoKSA9IGRl
ZmF1bHQ7CkBAIC01Miw4ICs1Miw4IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdl
YkdMRGVwdGhUZXh0dXJlOjpnZXROYW1lKCkgY29uc3QKIAogYm9vbCBXZWJHTERlcHRoVGV4dHVy
ZTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewotICAgIHJldHVybiBj
b250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0gICAgICAg
IHx8IGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7Cisg
ICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19kZXB0aF90ZXh0dXJl
Il9zKQorICAgICAgICB8fCBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfZGVwdGhf
dGV4dHVyZSJfcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKaW5kZXggMDY3MGE0NzY0MmJm
YmZlY2JkZWY1NjM3OGEyYmViNWIxOGM5NWNiYy4uOWIxNGQ4ZjI4Y2I1ZDc1NGUyMTI2Nzc4NjZl
NmM2ODhkOTE5NWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
cmF3QnVmZmVycy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFdlYkdMRHJhd0J1ZmZlcnMpOwogV2ViR0xEcmF3QnVmZmVyczo6V2ViR0xEcmF3QnVmZmVy
cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNp
b24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZl
cnMiX3MpOwogfQogCiBXZWJHTERyYXdCdWZmZXJzOjp+V2ViR0xEcmF3QnVmZmVycygpID0gZGVm
YXVsdDsKQEAgLTUwLDkgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2Vi
R0xEcmF3QnVmZmVyczo6Z2V0TmFtZSgpIGNvbnN0CiBib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnN1
cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogewogI2lmIFVTRShB
TkdMRSkKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfRVhUX2RyYXdfYnVmZmVycyIpOworICAgIHJldHVybiBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfZHJhd19idWZmZXJzIl9z
KTsKICNlbHNlCi0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+c3VwcG9y
dHNFeHRlbnNpb24oIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKQorICAgIHJldHVybiBjb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfZHJhd19idWZmZXJz
Il9zKQogICAgICAgICAmJiBzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhjb250ZXh0KTsKICNl
bmRpZgogfQpAQCAtMTA2LDEwICsxMDYsMTAgQEAgYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzYXRp
c2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiB3ZWIKICAg
ICBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVS
LCBmYm8pOwogCiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBidWZmZXJbNF0gPSB7IDAsIDAsIDAs
IDAgfTsgLy8gdGV4dHVyZXMgYXJlIHJlcXVpcmVkIHRvIGJlIGluaXRpYWxpemVkIGZvciBvdGhl
ciBwb3J0cy4KLSAgICBib29sIHN1cHBvcnRzRGVwdGggPSBjb250ZXh0LT5zdXBwb3J0c0V4dGVu
c2lvbigiR0xfT0VTX2RlcHRoX3RleHR1cmUiKQotICAgICAgICB8fCBjb250ZXh0LT5zdXBwb3J0
c0V4dGVuc2lvbigiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsKLSAgICBib29sIHN1cHBvcnRzRGVw
dGhTdGVuY2lsID0gKGNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfcGFja2VkX2Rl
cHRoX3N0ZW5jaWwiKQotICAgICAgICB8fCBjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
T0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpOworICAgIGJvb2wgc3VwcG9ydHNEZXB0aCA9IGNv
bnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSJfcykKKyAgICAg
ICAgfHwgY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl9kZXB0aF90ZXh0dXJlIl9z
KTsKKyAgICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPnN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpCisgICAgICAgIHx8IGNvbnRl
eHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpKTsK
ICAgICBQbGF0Zm9ybUdMT2JqZWN0IGRlcHRoU3RlbmNpbCA9IDA7CiAgICAgaWYgKHN1cHBvcnRz
RGVwdGhTdGVuY2lsKSB7CiAgICAgICAgIGRlcHRoU3RlbmNpbCA9IGNvbnRleHQtPmNyZWF0ZVRl
eHR1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggZTY5Zjk2MWM3Y2IyYTFiZmMyM2RjY2I5ODRj
MzMzZGViNGExNGM0My4uOGFjZmMwNzNjZmY1NDY5OWIyNzU4Y2M1N2NjODU0MWI1NmI2YTEwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTg1NSw3ICs4NTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
KENhbgogICAgICAgICAvLyBwYXJ0aWN1bGFyLCBpZiBXZWJHTCBjb250ZXh0cyB3ZXJlIGxvc3Qg
b25lIG9yIG1vcmUgdGltZXMgdmlhIHRoZSBHTF9BUkJfcm9idXN0bmVzcyBleHRlbnNpb24uCiAg
ICAgICAgIGlmICghZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFsbG93V2ViR0woZnJhbWUtPnNl
dHRpbmdzKCkud2ViR0xFbmFibGVkKCkpKSB7CiAgICAgICAgICAgICBjYW52YXNFbGVtZW50LT5k
aXNwYXRjaEV2ZW50KFdlYkdMQ29udGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmds
Y29udGV4dGNyZWF0aW9uZXJyb3JFdmVudCwKLSAgICAgICAgICAgICAgICBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCAiV2ViIHBhZ2Ugd2FzIG5vdCBhbGxv
d2VkIHRvIGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIikpOworICAgICAgICAgICAgICAgIEV2ZW50
OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsICJXZWIgcGFnZSB3YXMg
bm90IGFsbG93ZWQgdG8gY3JlYXRlIGEgV2ViR0wgY29udGV4dC4iX3MpKTsKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKQEAgLTkyNCw3ICs5MjQsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Y3JlYXRlKENhbgogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBpZiAoY2FudmFz
RWxlbWVudCkgewogICAgICAgICAgICAgY2FudmFzRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJH
TENvbnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRjcmVhdGlvbmVy
cm9yRXZlbnQsCi0gICAgICAgICAgICAgICAgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6OlllcywgIkNvdWxkIG5vdCBjcmVhdGUgYSBXZWJHTCBjb250ZXh0LiIpKTsK
KyAgICAgICAgICAgICAgICBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6WWVzLCAiQ291bGQgbm90IGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIl9zKSk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTE0MywxNyArMTE0MywxNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3MoKQogICAgIC8vIHR1
cm5pbmcgaXQgb2ZmIGNhdXNlcyBwcm9ibGVtcy4KICAgICBtX2lzR0xFUzJDb21wbGlhbnQgPSBt
X2NvbnRleHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKICAgICBpZiAobV9pc0dMRVMyQ29tcGxpYW50
KSB7Ci0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5pc0V4dGVuc2lv
bkVuYWJsZWQoIkdMX09FU190ZXh0dXJlX25wb3QiKTsKLSAgICAgICAgbV9pc0RlcHRoU3RlbmNp
bFN1cHBvcnRlZCA9IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKSB8fCBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5H
TEVfZGVwdGhfdGV4dHVyZSIpOworICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29u
dGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Il9zKTsKKyAgICAg
ICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFi
bGVkKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpIHx8IG1fY29udGV4dC0+aXNFeHRl
bnNpb25FbmFibGVkKCJHTF9BTkdMRV9kZXB0aF90ZXh0dXJlIl9zKTsKICAgICB9IGVsc2Ugewog
I2lmIFVTRShBTkdMRSkKICAgICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9IHRydWU7CiAjZWxz
ZQotICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+aXNFeHRlbnNpb25F
bmFibGVkKCJHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdvIik7CisgICAgICAgIG1faXNH
TEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FSQl90
ZXh0dXJlX25vbl9wb3dlcl9vZl90d28iX3MpOwogI2VuZGlmCi0gICAgICAgIG1faXNEZXB0aFN0
ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3Bh
Y2tlZF9kZXB0aF9zdGVuY2lsIikgfHwgbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdM
X0FOR0xFX2RlcHRoX3RleHR1cmUiKTsKKyAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRl
ZCA9IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0
ZW5jaWwiX3MpIHx8IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9kZXB0
aF90ZXh0dXJlIl9zKTsKICAgICB9Ci0gICAgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBt
X2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3JvYnVzdG5lc3MiKTsKKyAgICBt
X2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCA9IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVk
KCJHTF9FWFRfcm9idXN0bmVzcyJfcyk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR0NHTGVudW0gZm9ybWF0KQpAQCAtMzA2
Nyw3ICszMDY3LDcgQEAgUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0QWN0aXZlVW5pZm9ybShXZWJHTFByb2dyYW0KICAgICAvLyBGSVhNRTogRG8g
d2Ugc3RpbGwgbmVlZCB0aGlzIGZvciB0aGUgQU5HTEUgYmFja2VuZD8KICAgICBpZiAoIWlzR0xF
UzJDb21wbGlhbnQoKSkKICAgICAgICAgaWYgKGluZm8uc2l6ZSA+IDEgJiYgIWluZm8ubmFtZS5l
bmRzV2l0aCgiWzBdIikpCi0gICAgICAgICAgICBpbmZvLm5hbWUuYXBwZW5kKCJbMF0iKTsKKyAg
ICAgICAgICAgIGluZm8ubmFtZS5hcHBlbmQoIlswXSJfcyk7CiAKICAgICBMT0coV2ViR0wsICJS
ZXR1cm5pbmcgYWN0aXZlIHVuaWZvcm0gJWQ6ICVzIiwgaW5kZXgsIGluZm8ubmFtZS51dGY4KCku
ZGF0YSgpKTsKIApAQCAtNTYxNywxNyArNTYxNywxNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVuY1BhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25O
YQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZEV4dGVuc2lvblN1cHBvcnRl
ZEZvcm1hdHNBbmRUeXBlcygpCiB7Ci0gICAgaWYgKCFtX2FyZU9FU1RleHR1cmVGbG9hdEZvcm1h
dHNBbmRUeXBlc0FkZGVkICYmIGV4dGVuc2lvbklzRW5hYmxlZCgiT0VTX3RleHR1cmVfZmxvYXQi
KSkgeworICAgIGlmICghbV9hcmVPRVNUZXh0dXJlRmxvYXRGb3JtYXRzQW5kVHlwZXNBZGRlZCAm
JiBleHRlbnNpb25Jc0VuYWJsZWQoIk9FU190ZXh0dXJlX2Zsb2F0Il9zKSkgewogICAgICAgICBB
RERfVkFMVUVTX1RPX1NFVChtX3N1cHBvcnRlZFRleEltYWdlU291cmNlVHlwZXMsIFN1cHBvcnRl
ZFR5cGVzT0VTVGV4dHVyZUZsb2F0KTsKICAgICAgICAgbV9hcmVPRVNUZXh0dXJlRmxvYXRGb3Jt
YXRzQW5kVHlwZXNBZGRlZCA9IHRydWU7CiAgICAgfQogCi0gICAgaWYgKCFtX2FyZU9FU1RleHR1
cmVIYWxmRmxvYXRGb3JtYXRzQW5kVHlwZXNBZGRlZCAmJiBleHRlbnNpb25Jc0VuYWJsZWQoIk9F
U190ZXh0dXJlX2hhbGZfZmxvYXQiKSkgeworICAgIGlmICghbV9hcmVPRVNUZXh0dXJlSGFsZkZs
b2F0Rm9ybWF0c0FuZFR5cGVzQWRkZWQgJiYgZXh0ZW5zaW9uSXNFbmFibGVkKCJPRVNfdGV4dHVy
ZV9oYWxmX2Zsb2F0Il9zKSkgewogICAgICAgICBBRERfVkFMVUVTX1RPX1NFVChtX3N1cHBvcnRl
ZFRleEltYWdlU291cmNlVHlwZXMsIFN1cHBvcnRlZFR5cGVzT0VTVGV4dHVyZUhhbGZGbG9hdCk7
CiAgICAgICAgIG1fYXJlT0VTVGV4dHVyZUhhbGZGbG9hdEZvcm1hdHNBbmRUeXBlc0FkZGVkID0g
dHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoIW1fYXJlRVhUc1JHQkZvcm1hdHNBbmRUeXBlc0FkZGVk
ICYmIGV4dGVuc2lvbklzRW5hYmxlZCgiRVhUX3NSR0IiKSkgeworICAgIGlmICghbV9hcmVFWFRz
UkdCRm9ybWF0c0FuZFR5cGVzQWRkZWQgJiYgZXh0ZW5zaW9uSXNFbmFibGVkKCJFWFRfc1JHQiJf
cykpIHsKICAgICAgICAgQUREX1ZBTFVFU19UT19TRVQobV9zdXBwb3J0ZWRUZXhJbWFnZVNvdXJj
ZUludGVybmFsRm9ybWF0cywgU3VwcG9ydGVkSW50ZXJuYWxGb3JtYXRzRVhUc1JHQik7CiAgICAg
ICAgIEFERF9WQUxVRVNfVE9fU0VUKG1fc3VwcG9ydGVkVGV4SW1hZ2VTb3VyY2VGb3JtYXRzLCBT
dXBwb3J0ZWRGb3JtYXRzRVhUc1JHQik7CiAgICAgICAgIG1fYXJlRVhUc1JHQkZvcm1hdHNBbmRU
eXBlc0FkZGVkID0gdHJ1ZTsKQEAgLTY0NTIsNyArNjQ1Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6bG9zZUNvbnRleHRJbXBsKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
Okxvc3RDCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlm
IChtb2RlID09IFJlYWxMb3N0Q29udGV4dCkKLSAgICAgICAgcHJpbnRUb0NvbnNvbGUoTWVzc2Fn
ZUxldmVsOjpFcnJvciwgIldlYkdMOiBjb250ZXh0IGxvc3QuIik7CisgICAgICAgIHByaW50VG9D
b25zb2xlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJXZWJHTDogY29udGV4dCBsb3N0LiJfcyk7CiAK
ICAgICBtX2NvbnRleHRMb3N0U3RhdGUgPSBDb250ZXh0TG9zdFN0YXRlIHsgbW9kZSB9OwogICAg
IG1fY29udGV4dExvc3RTdGF0ZS0+ZXJyb3JzLmFkZChHcmFwaGljc0NvbnRleHRHTDo6Q09OVEVY
VF9MT1NUX1dFQkdMKTsKQEAgLTczMjgsNyArNzMyOCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmCiAKICAgICAtLW1fbnVtR0xFcnJvcnNUb0NvbnNvbGVBbGxvd2VkOwogICAgIGlmICghbV9u
dW1HTEVycm9yc1RvQ29uc29sZUFsbG93ZWQpCi0gICAgICAgIHByaW50VG9Db25zb2xlKE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgIldlYkdMOiB0b28gbWFueSBlcnJvcnMsIG5vIG1vcmUgZXJyb3Jz
IHdpbGwgYmUgcmVwb3J0ZWQgdG8gdGhlIGNvbnNvbGUgZm9yIHRoaXMgY29udGV4dC4iKTsKKyAg
ICAgICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiV2ViR0w6IHRvbyBt
YW55IGVycm9ycywgbm8gbW9yZSBlcnJvcnMgd2lsbCBiZSByZXBvcnRlZCB0byB0aGUgY29uc29s
ZSBmb3IgdGhpcyBjb250ZXh0LiJfcyk7CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dmFsaWRhdGVGcmFtZWJ1ZmZlclRhcmdldChHQ0dMZW51bSB0YXJnZXQpCkBAIC03Nzc4
LDcgKzc3NzgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9y
ZUNvbnRleHQoKQogICAgICAgICBpZiAobV9jb250ZXh0TG9zdFN0YXRlLT5tb2RlID09IFJlYWxM
b3N0Q29udGV4dCkKICAgICAgICAgICAgIG1fcmVzdG9yZVRpbWVyLnN0YXJ0T25lU2hvdChzZWNv
bmRzQmV0d2VlblJlc3RvcmVBdHRlbXB0cyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBy
aW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJXZWJHTDogZXJyb3IgcmVzdG9yaW5n
IGxvc3QgY29udGV4dC4iKTsKKyAgICAgICAgICAgIHByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZl
bDo6RXJyb3IsICJXZWJHTDogZXJyb3IgcmVzdG9yaW5nIGxvc3QgY29udGV4dC4iX3MpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MTQzLDcgKzgxNDMsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmZvcmNlQ29udGV4dExvc3QoKQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnJlY3ljbGVDb250ZXh0KCkKIHsKLSAgICBwcmludFRvQ29uc29sZShN
ZXNzYWdlTGV2ZWw6OkVycm9yLCAiVGhlcmUgYXJlIHRvbyBtYW55IGFjdGl2ZSBXZWJHTCBjb250
ZXh0cyBvbiB0aGlzIHBhZ2UsIHRoZSBvbGRlc3QgY29udGV4dCB3aWxsIGJlIGxvc3QuIik7Cisg
ICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpFcnJvciwgIlRoZXJlIGFyZSB0b28gbWFu
eSBhY3RpdmUgV2ViR0wgY29udGV4dHMgb24gdGhpcyBwYWdlLCB0aGUgb2xkZXN0IGNvbnRleHQg
d2lsbCBiZSBsb3N0LiJfcyk7CiAgICAgLy8gVXNpbmcgU3ludGhldGljTG9zdENvbnRleHQgbWVh
bnMgdGhlIGRldmVsb3BlciB3b24ndCBiZSBhYmxlIHRvIGZvcmNlIHRoZSByZXN0b3JhdGlvbgog
ICAgIC8vIG9mIHRoZSBjb250ZXh0IGJ5IGNhbGxpbmcgcHJldmVudERlZmF1bHQoKSBpbiBhICJ3
ZWJnbGNvbnRleHRsb3N0IiBldmVudCBoYW5kbGVyLgogICAgIGZvcmNlTG9zdENvbnRleHQoU3lu
dGhldGljTG9zdENvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NT
UHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IGY5ZWVmYzUzMmE1NDhmZTUzYjM2NzNhZmMyMGYyNjkx
NjUwMmU1ZjMuLmE4NTQ4NTIwOTExOGRkMzMxOTZiMzNhZDQwMmFiNzc2NmVjZDQ3MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKQEAg
LTIyOSw3ICsyMjksNyBAQCB2b2lkIENTU1ByZWxvYWRTY2FubmVyOjplbWl0UnVsZSgpCiAgICAg
ICAgIGlmICghdXJsLmlzRW1wdHkoKSAmJiBoYXNWYWxpZEltcG9ydENvbmRpdGlvbnMoY29uZGl0
aW9ucykpIHsKICAgICAgICAgICAgIFVSTCBiYXNlRWxlbWVudFVSTDsgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIHBhc3NlZCBpbiBmcm9tIHRoZSBIVE1MUHJlbG9hZFNjYW5uZXIgdmlhIHNjYW4o
KTogd2l0aG91dCBpdCB3ZSB3aWxsIGdldCByZWxhdGl2ZSBVUkxzIHdyb25nLgogICAgICAgICAg
ICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIGluY2x1ZGluZyB0aGUgY2hhcnNldCBpbiB0aGUg
cHJlbG9hZCByZXF1ZXN0PwotICAgICAgICAgICAgbV9yZXF1ZXN0cy0+YXBwZW5kKG1ha2VVbmlx
dWU8UHJlbG9hZFJlcXVlc3Q+KCJjc3MiLCB1cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNv
dXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCwgU3RyaW5nKCksIFByZWxvYWRSZXF1ZXN0OjpNb2R1
bGVTY3JpcHQ6Ok5vLCBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpKTsKKyAgICAgICAgICAg
IG1fcmVxdWVzdHMtPmFwcGVuZChtYWtlVW5pcXVlPFByZWxvYWRSZXF1ZXN0PigiY3NzIl9zLCB1
cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCwg
U3RyaW5nKCksIFByZWxvYWRSZXF1ZXN0OjpNb2R1bGVTY3JpcHQ6Ok5vLCBSZWZlcnJlclBvbGlj
eTo6RW1wdHlTdHJpbmcpKTsKICAgICAgICAgfQogICAgICAgICBtX3N0YXRlID0gSW5pdGlhbDsK
ICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJ1bGUsICJjaGFy
c2V0IikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
Y3BwCmluZGV4IDlkNmE2Y2NhZGUwYjRkNWVhNDAwMmI1MjJjZmZiZDQxM2YwNTZlMWUuLjYxYzZh
N2IzNGE5NTQ0YzgzZDlkN2VmNTAxMGM0N2ZiNjkyN2RhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFN0
cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGNvbnN0IERlY2ltYWwmIG51bWJlcikKIHsKICAg
ICBpZiAobnVtYmVyLmlzWmVybygpKSB7CiAgICAgICAgIC8vIERlY2ltYWw6OnRvU3RyaW5nIGFw
cGVuZHMgZXhwb25lbnQsIGUuZy4gIjBlLTE4IgotICAgICAgICByZXR1cm4gbnVtYmVyLmlzTmVn
YXRpdmUoKSA/ICItMCIgOiAiMCI7CisgICAgICAgIHJldHVybiBudW1iZXIuaXNOZWdhdGl2ZSgp
ID8gIi0wIl9zIDogIjAiX3M7CiAgICAgfQogICAgIHJldHVybiBudW1iZXIudG9TdHJpbmcoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwCmluZGV4IDI4OTYyOGFlYTg5NWJiMjhjZDA2MzI2NWI1ZTQ1YjY1M2E1MDU4ZjUuLjBhMjcx
ZWZlZGJjNmVkNDJmYjM0NWZhZmViYmRlY2I3YjYxY2E3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtNzcsNyArNzcsNyBA
QCBUb2tlblByZWxvYWRTY2FubmVyOjpUYWdJZCBUb2tlblByZWxvYWRTY2FubmVyOjp0YWdJZEZv
cihjb25zdCBIVE1MVG9rZW46OkRhdGFWZQogICAgIHJldHVybiBUYWdJZDo6VW5rbm93bjsKIH0K
IAotU3RyaW5nIFRva2VuUHJlbG9hZFNjYW5uZXI6OmluaXRpYXRvckZvcihUYWdJZCB0YWdJZCkK
K0FTQ0lJTGl0ZXJhbCBUb2tlblByZWxvYWRTY2FubmVyOjppbml0aWF0b3JGb3IoVGFnSWQgdGFn
SWQpCiB7CiAgICAgc3dpdGNoICh0YWdJZCkgewogICAgIGNhc2UgVGFnSWQ6OlNvdXJjZToKQEAg
LTIzOCw3ICsyMzgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGF1dG8gbWVkaWFTZXQg
PSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoYXR0cmlidXRlVmFsdWUsIE1lZGlhUXVlcnlQYXJzZXJD
b250ZXh0KG1fZG9jdW1lbnQpKTsKICAgICAgICAgICAgICAgICBSZWZQdHIgZG9jdW1lbnRFbGVt
ZW50ID0gbV9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsKICAgICAgICAgICAgICAgICBMT0co
TWVkaWFRdWVyaWVzLCAiSFRNTFByZWxvYWRTY2FubmVyICVwIHByb2Nlc3NBdHRyaWJ1dGUgZXZh
bHVhdGluZyBtZWRpYSBxdWVyaWVzIiwgdGhpcyk7Ci0gICAgICAgICAgICAgICAgbV9tZWRpYU1h
dGNoZWQgPSBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgbV9kb2N1bWVudC5wcmludGluZygpID8gInBy
aW50IiA6ICJzY3JlZW4iLCBtX2RvY3VtZW50LCBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVs
ZW1lbnQtPmNvbXB1dGVkU3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVNldC5nZXQo
KSk7CisgICAgICAgICAgICAgICAgbV9tZWRpYU1hdGNoZWQgPSBNZWRpYVF1ZXJ5RXZhbHVhdG9y
IHsgbV9kb2N1bWVudC5wcmludGluZygpID8gInByaW50Il9zIDogInNjcmVlbiJfcywgbV9kb2N1
bWVudCwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0eWxlKCkg
OiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFTZXQuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIHR5cGVBdHRyKSAmJiBtX3R5cGVBdHRy
aWJ1dGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICAvLyB3aGVuIG11bHRpcGxlIHR5cGUg
YXR0cmlidXRlcyBwcmVzZW50OiBmaXJzdCB2YWx1ZSB3aW5zLCBpZ25vcmUgc3Vic2VxdWVudCAo
dG8gbWF0Y2ggSW1hZ2VFbGVtZW50IHBhcnNlciBhbmQgQmxpbmsgYmVoYXZpb3VycykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKaW5kZXggMzlj
NzA0OGNiMThlMjRlNGZlYzNhZmU2MmI0ZDlmNTc1Y2MwZjM0OC4uNTc2MTFiZDZmY2ExOTI0YjQ0
ZjViOGMxMmU4NGJlYTMyMjAxMWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKIAogICAg
IHN0YXRpYyBUYWdJZCB0YWdJZEZvcihjb25zdCBIVE1MVG9rZW46OkRhdGFWZWN0b3ImKTsKIAot
ICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhdG9yRm9yKFRhZ0lkKTsKKyAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIGluaXRpYXRvckZvcihUYWdJZCk7CiAKICAgICB2b2lkIHVwZGF0ZVByZWRpY3RlZEJh
c2VVUkwoY29uc3QgSFRNTFRva2VuJiwgYm9vbCBzaG91bGRSZXN0cmljdEJhc2VVUkxTY2hlbWVz
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNl
UHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVs
b2FkZXIuaAppbmRleCA5YzQ0NjE4OTEzNmIxYzUxOGQ4ZWQ5YzE3ZDk3NTY4ZGJmZTMxZTczLi44
ZGFmOTM0M2FjMGI4NWFlNmUxZjYxZmQzNDJlNDI5NWJkY2JkYmY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuaApAQCAtMzcsNyAr
MzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFllcywKICAgICAgICAgTm8sCiAgICAgfTsKLSAgICBQ
cmVsb2FkUmVxdWVzdChjb25zdCBTdHJpbmcmIGluaXRpYXRvciwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZVVSTCwgY29uc3QgVVJMJiBiYXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJj
ZVR5cGUsIGNvbnN0IFN0cmluZyYgbWVkaWFBdHRyaWJ1dGUsIE1vZHVsZVNjcmlwdCBtb2R1bGVT
Y3JpcHQsIGNvbnN0IFJlZmVycmVyUG9saWN5JiByZWZlcnJlclBvbGljeSkKKyAgICBQcmVsb2Fk
UmVxdWVzdChBU0NJSUxpdGVyYWwgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJM
LCBjb25zdCBVUkwmIGJhc2VVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSwg
Y29uc3QgU3RyaW5nJiBtZWRpYUF0dHJpYnV0ZSwgTW9kdWxlU2NyaXB0IG1vZHVsZVNjcmlwdCwg
Y29uc3QgUmVmZXJyZXJQb2xpY3kmIHJlZmVycmVyUG9saWN5KQogICAgICAgICA6IG1faW5pdGlh
dG9yKGluaXRpYXRvcikKICAgICAgICAgLCBtX3Jlc291cmNlVVJMKHJlc291cmNlVVJMKQogICAg
ICAgICAsIG1fYmFzZVVSTChiYXNlVVJMLmlzb2xhdGVkQ29weSgpKQpAQCAtNjEsNyArNjEsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFVSTCBjb21wbGV0ZVVSTChEb2N1bWVudCYpOwogCi0g
ICAgU3RyaW5nIG1faW5pdGlhdG9yOworICAgIEFTQ0lJTGl0ZXJhbCBtX2luaXRpYXRvcjsKICAg
ICBTdHJpbmcgbV9yZXNvdXJjZVVSTDsKICAgICBVUkwgbV9iYXNlVVJMOwogICAgIFN0cmluZyBt
X2NoYXJzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5k
ZXggMTlmYzg1Y2Q4OTdhN2NlYWRiNDFkNTAyNWE3OWFiOTI4NzdkZjE2YS4uYmNmOGUxNzJhNjcz
MjBmNjY4ODEyMDc0NzlkZjdhODBhYmFjMTdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHN0YXRpYyB2b2lkIHJlbW92
ZVBzZXVkb0F0dHJpYnV0ZXMoTm9kZSYgbm9kZSkKIEV4Y2VwdGlvbk9yPFJlZjxUZXh0VHJhY2tD
dWU+PiBUZXh0VHJhY2tDdWU6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGRvdWJsZSBzdGFy
dCwgZG91YmxlIGVuZCwgRG9jdW1lbnRGcmFnbWVudCYgY3VlRnJhZ21lbnQpCiB7CiAgICAgaWYg
KCFjdWVGcmFnbWVudC5maXJzdENoaWxkKCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkTm9kZVR5cGVFcnJvciwgIkVtcHR5IGN1ZSBmcmFnbWVudCIgfTsKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWROb2RlVHlwZUVycm9yLCAiRW1wdHkgY3VlIGZyYWdtZW50
Il9zIH07CiAKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBjdWVGcmFnbWVudC5maXJzdENoaWxkKCk7
IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGF1dG8gcmVzdWx0
ID0gY2hlY2tGb3JJbnZhbGlkTm9kZVR5cGVzKCpub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwCmluZGV4IDVlNThjNzk3NGMzOTFi
OGZkNWFhZTMwNWY1NGQ5MWFlOWNkMDZjMTYuLjRlZDBmY2E0NTlmY2YyMDM2NjUyMzUzZWVhZTUy
NDc1MjI2MDdmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWVHZW5lcmljLmNwcApAQCAtMTIyLDEwICsxMjIsMTAgQEAgdm9pZCBUZXh0VHJhY2tDdWVH
ZW5lcmljQm94RWxlbWVudDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVv
U2l6ZSkKICAgICAgICAgbWF4U2l6ZSA9IDEwMC4wIC0gdGV4dFBvc2l0aW9uOwogCiAgICAgaWYg
KGN1ZS0+Z2V0V3JpdGluZ0RpcmVjdGlvbigpID09IFZUVEN1ZTo6SG9yaXpvbnRhbCkgewotICAg
ICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWluV2lkdGgsICJtaW4tY29u
dGVudCIpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWluV2lk
dGgsICJtaW4tY29udGVudCJfcyk7CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlNYXhXaWR0aCwgbWF4U2l6ZSwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
TWluSGVpZ2h0LCAibWluLWNvbnRlbnQiKTsKKyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eU1pbkhlaWdodCwgIm1pbi1jb250ZW50Il9zKTsKICAgICAgICAgc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heEhlaWdodCwgbWF4U2l6ZSwgQ1NTVW5pdFR5
cGU6OkNTU19QRVJDRU5UQUdFKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmNwcAppbmRleCAwMDg4YmZhZTA5MzRjOWI0YWNmMGQwNDJlMTkyMDM1NDQ1MjBjMDBkLi5mY2Ix
ZDg0NDg5YmEyYWYxMDc2MTcwZWMzOGJiZWMyNDRjZjQ4ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WVFRDdWUuY3BwCkBAIC0yMTgsMTQgKzIxOCwxNCBAQCB2b2lkIFZUVEN1ZUJveDo6YXBw
bHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSkKICAgICBpZiAoY3VlLT52
ZXJ0aWNhbCgpID09IGhvcml6b250YWxLZXl3b3JkKCkpIHsKICAgICAgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBuZXdDdWVTaXplLCBDU1NVbml0VHlwZTo6Q1NT
X1BFUkNFTlRBR0UpOwogICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
SGVpZ2h0LCBDU1NWYWx1ZUF1dG8pOwotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5TWluV2lkdGgsICJtaW4tY29udGVudCIpOworICAgICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5TWluV2lkdGgsICJtaW4tY29udGVudCJfcyk7CiAgICAgICAg
IHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhXaWR0aCwgbWF4U2l6ZSwgQ1NT
VW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKICAgICAgICAgaWYgKChhbGlnbm1lbnQgPT0gQ1NT
VmFsdWVNaWRkbGUgfHwgYWxpZ25tZW50ID09IENTU1ZhbHVlQ2VudGVyKSAmJiBtdWx0aXBsaWVy
ICE9IDEuMCAmJiBwb3NpdGlvbi5maXJzdCkKICAgICAgICAgICAgIHNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBzdGF0aWNfY2FzdDxkb3VibGU+KCpwb3NpdGlvbi5maXJz
dCAtIChuZXdDdWVTaXplIC0gY3VlLT5nZXRDU1NTaXplKCkpIC8gMiksIENTU1VuaXRUeXBlOjpD
U1NfUEVSQ0VOVEFHRSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBDU1NWYWx1ZUF1dG8pOwogICAgICAgICBzZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBuZXdDdWVTaXplLCBDU1NVbml0VHlwZTo6
Q1NTX1BFUkNFTlRBR0UpOwotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5TWluSGVpZ2h0LCAibWluLWNvbnRlbnQiKTsKKyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU1pbkhlaWdodCwgIm1pbi1jb250ZW50Il9zKTsKICAgICAgICAgc2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heEhlaWdodCwgbWF4U2l6ZSwgQ1NTVW5p
dFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKICAgICAgICAgaWYgKChhbGlnbm1lbnQgPT0gQ1NTVmFs
dWVNaWRkbGUgfHwgYWxpZ25tZW50ID09IENTU1ZhbHVlQ2VudGVyKSAmJiBtdWx0aXBsaWVyICE9
IDEuMCAmJiBwb3NpdGlvbi5zZWNvbmQpCiAgICAgICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5VG9wLCBzdGF0aWNfY2FzdDxkb3VibGU+KCpwb3NpdGlvbi5zZWNvbmQg
LSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NTU2l6ZSgpKSAvIDIpLCBDU1NVbml0VHlwZTo6Q1NT
X1BFUkNFTlRBR0UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3Bw
CmluZGV4IDA2OTEyNzNhNGEwODMwYWQ3ZmUzMTRjODU2N2JkNGZmYmFlZmEyYjAuLjlmNWRhNTFi
ZTc4ZmRhYTYxYjdlNTA5NTgzNDVkZjQzYjVmMGJkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBXZWJWVFRQYXJz
ZXI6OnBhcnNlRmxvYXRQZXJjZW50YWdlVmFsdWVQYWlyKFZUVFNjYW5uZXImIHZhbHVlU2Nhbm5l
ciwgY2hhcgogCiBXZWJWVFRQYXJzZXI6OldlYlZUVFBhcnNlcihXZWJWVFRQYXJzZXJDbGllbnQm
IGNsaWVudCwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkK
LSAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4i
LCBQQUw6OlVURjhFbmNvZGluZygpKSkKKyAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNv
ZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsIFBBTDo6VVRGOEVuY29kaW5nKCkpKQogICAgICwg
bV9jbGllbnQoY2xpZW50KQogewogfQpAQCAtNzA4LDcgKzcwOCw3IEBAIHZvaWQgV2ViVlRUVHJl
ZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQmIGRvY3VtZW50KQogICAg
ICAgICBTdHJpbmcgY2hhcmFjdGVyc1N0cmluZyA9IG1fdG9rZW4uY2hhcmFjdGVycygpOwogICAg
ICAgICBNZWRpYVRpbWUgcGFyc2VkVGltZVN0YW1wOwogICAgICAgICBpZiAoV2ViVlRUUGFyc2Vy
Ojpjb2xsZWN0VGltZVN0YW1wKGNoYXJhY3RlcnNTdHJpbmcsIHBhcnNlZFRpbWVTdGFtcCkpCi0g
ICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZChQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb246OmNyZWF0ZShkb2N1bWVudCwgInRpbWVzdGFtcCIsIGNoYXJhY3RlcnNTdHJpbmcp
KTsKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPnBhcnNlckFwcGVuZENoaWxkKFByb2Nlc3Np
bmdJbnN0cnVjdGlvbjo6Y3JlYXRlKGRvY3VtZW50LCAidGltZXN0YW1wIl9zLCBjaGFyYWN0ZXJz
U3RyaW5nKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAppbmRleCAzMDkzZjljOTIwMzEyNDlkYTljYzk0YzMyZGU4OTE1YzJj
Yjc5NTkwLi42YWE2MTI2ZGQ3Y2FjNjgwMTE3YjI3N2I0NGE2YzE4NmVjMzcwNTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMTk5LDkgKzE5OSw5IEBAIEV4Y2VwdGlvbk9yPHN0
ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpDb21wdXRlZFBy
b3BlcnRpZXM+CiAgICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2YW50QXR0clZhbHVlID0gYXhP
YmplY3QtPmxpdmVSZWdpb25SZWxldmFudCgpOwogICAgICAgICAgICAgaWYgKCFhcmlhUmVsZXZh
bnRBdHRyVmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4g
bGl2ZVJlZ2lvblJlbGV2YW50OwotICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZhbnRB
ZGRpdGlvbnMgPSAiYWRkaXRpb25zIjsKLSAgICAgICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2
YW50UmVtb3ZhbHMgPSAicmVtb3ZhbHMiOwotICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVs
ZXZhbnRUZXh0ID0gInRleHQiOworICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZhbnRB
ZGRpdGlvbnMgPSAiYWRkaXRpb25zIl9zOworICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVs
ZXZhbnRSZW1vdmFscyA9ICJyZW1vdmFscyJfczsKKyAgICAgICAgICAgICAgICBTdHJpbmcgYXJp
YVJlbGV2YW50VGV4dCA9ICJ0ZXh0Il9zOwogCiAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYg
dmFsdWVzID0gU3BhY2VTcGxpdFN0cmluZyhhcmlhUmVsZXZhbnRBdHRyVmFsdWUsIHRydWUpOwog
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMuY29udGFpbnMoImFsbCIpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IGJiY2M3OWFiYzM4Njk1
ZWMwOWE0MGI4MjUxNmVjOWE5NjRlYzY2YmQuLjRkZmRlNjYzZThiYjgzMzI5ZjU2MjA1MTMzNDk1
YTdhYmIzMmJjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXMuY3BwCkBAIC0xMTAwLDcgKzExMDAsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZv
ckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkKICAgICAgICAgICAgICAgICBpZiAoaW1h
Z2UgJiYgaW1hZ2UgIT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewogICAgICAgICAgICAgICAgICAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZm
ZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KDAsIDApKTsKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3Bu
ZyIpOworICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVS
TCgiaW1hZ2UvcG5nIl9zKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAg
LTExMTUsNyArMTExNSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBs
aWNhdGVEYXRhVmFyaWFudCBkYXRhKQogICAgICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgICAgICBpZiAoaW1hZ2VCdWZmZXIpIHsK
ICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQtPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KGltYWdlQnVmZmVyLT5jb250ZXh0KCksIEZsb2F0UmVjdCgwLCAwLCB2aWRlb1dpZHRoLCB2aWRl
b0hlaWdodCkpOwotICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRh
VVJMKCJpbWFnZS9wbmciKTsKKyAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXIt
PnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aW5kZXggPSBpbmRleEZvckRhdGEoZGF0YVVSTCk7CkBAIC0xMTM0LDcgKzExMzQsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
ICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8Q2FudmFzUGF0dGVybj4mIGNhbnZhc1BhdHRlcm4p
IHsgaXRlbSA9IGJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKCpjYW52YXNQYXR0ZXJuKTsgfSwK
ICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8SW1hZ2VEYXRhPiYgaW1hZ2VEYXRhKSB7IGl0ZW0g
PSBidWlsZEFycmF5Rm9ySW1hZ2VEYXRhKCppbWFnZURhdGEpOyB9LAogICAgICAgICBbJl0gKFJl
ZlB0cjxJbWFnZUJpdG1hcD4mIGltYWdlQml0bWFwKSB7Ci0gICAgICAgICAgICBpbmRleCA9IGlu
ZGV4Rm9yRGF0YShpbWFnZUJpdG1hcC0+YnVmZmVyKCktPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIikp
OworICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoaW1hZ2VCaXRtYXAtPmJ1ZmZlcigp
LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcykpOwogICAgICAgICB9LAogICAgICAgICBbJl0gKGNv
bnN0IFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiBzY3JpcHRDYWxsU3RhY2spIHsKICAgICAgICAg
ICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPGRvdWJsZT46OmNyZWF0ZSgpOwpAQCAtMTE1
MSw3ICsxMTUxLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0
ZURhdGFWYXJpYW50IGRhdGEpCiAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdlICE9
ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCku
ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJf
cyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBAIC0xMzkwLDcgKzEzOTAs
NyBAQCBSZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVp
bGRBcnJheUZvckNhbnZhc1BhdHRlcm4oY29ucwogICAgICAgICByZXBlYXQgPSAibm8tcmVwZWF0
Il9zOwogCiAgICAgYXV0byBhcnJheSA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+OjpjcmVh
dGUoKTsKLSAgICBhcnJheS0+YWRkSXRlbShpbmRleEZvckRhdGEoaW1hZ2VCdWZmZXItPnRvRGF0
YVVSTCgiaW1hZ2UvcG5nIikpKTsKKyAgICBhcnJheS0+YWRkSXRlbShpbmRleEZvckRhdGEoaW1h
Z2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zKSkpOwogICAgIGFycmF5LT5hZGRJdGVt
KGluZGV4Rm9yRGF0YShyZXBlYXQpKTsKICAgICByZXR1cm4gYXJyYXk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAKaW5kZXggYjU4ZTczZTcwNGY0MzQxYzUzNzU5NjIyOTE2ZGM3YzFkOWViZTQyNC4uOTBj
ZTVlN2NiOTZkZjYyNWIwN2I0MjNiZjk1ZGQ4YjdmNzZmYzMyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cApAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBpbnNwZWN0b3JBdHRhY2hlZEhlaWdo
dFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHQiOworc3RhdGljIGNvbnN0ZXhwciBB
U0NJSUxpdGVyYWwgaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHRTZXR0aW5nID0gImluc3BlY3RvckF0
dGFjaGVkSGVpZ2h0Il9zOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRlZmF1bHRBdHRhY2hlZEhl
aWdodCA9IDMwMDsKIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtQXR0YWNoZWRIZWlnaHQgPSAy
NTAuMGY7CiBzdGF0aWMgY29uc3QgZmxvYXQgbWF4aW11bUF0dGFjaGVkSGVpZ2h0UmF0aW8gPSAw
Ljc1ZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAKaW5kZXggYTgwOTljODFjY2U2MjJjNjEzNDNmZWJmMjkyMDZkNjRiYTEyZTY3ZC4u
ZTkyMGFkMTY5Yzc0MWRhM2YzY2MyNWVhMzEyOGE0MzRiZDE4ZmVkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTExMSw3
ICsxMTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2Vz
dHVyZUluZGljYXRvcihQcm9jZXNzaW5nVXNlckdlc3R1cmUsIGR5bmFtaWNEb3duY2FzdDxEb2N1
bWVudD4oZXhlY3V0aW9uQ29udGV4dChtX2Zyb250ZW5kQXBpT2JqZWN0Lmdsb2JhbE9iamVjdCgp
KSkpOwogICAgICAgICAgICAgaW50IGl0ZW1OdW1iZXIgPSBhY3Rpb24gLSBDb250ZXh0TWVudUl0
ZW1CYXNlQ3VzdG9tVGFnOwogCi0gICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24obV9mcm9udGVuZEFwaU9iamVjdCwgImNvbnRleHRNZW51SXRlbVNlbGVj
dGVkIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOworICAgICAg
ICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRlbmRB
cGlPYmplY3QsICJjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCJfcywgV2ViQ29yZTo6ZnVuY3Rpb25D
YWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQoaXRlbU51bWJlcik7CiAgICAgICAgICAgICBmdW5jdGlvbi5jYWxsKCk7CiAgICAgICAg
IH0KQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1lbnVDbGVh
cmVkKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChtX2Zyb250ZW5kSG9zdCkgewotICAg
ICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRl
bmRBcGlPYmplY3QsICJjb250ZXh0TWVudUNsZWFyZWQiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxI
YW5kbGVyRnJvbUFueVRocmVhZCk7CisgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24obV9mcm9udGVuZEFwaU9iamVjdCwgImNvbnRleHRNZW51Q2xlYXJl
ZCJfcywgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgICAg
ICAgICAgZnVuY3Rpb24uY2FsbCgpOwogCiAgICAgICAgICAgICBtX2Zyb250ZW5kSG9zdC0+bV9t
ZW51UHJvdmlkZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXkuY3BwCmluZGV4IDRmNjNhZGNlOTM5MTZkYjIzMjBlOTY3OGFhYmZlMGYzY2Q5
OTc2MmIuLjc3MTBhMWI1ZDgyYjRlY2JjNmI4ZmU2Mjg0Y2Q3NmU0NDk4NzNmYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTYxMyw3ICs2
MTMsNyBAQCBFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck92ZXJsYXk6OnNldEdyaWRPdmVy
bGF5Rm9yTm9kZShOb2RlJiBub2RlLCBjb25zdCBJbgogewogICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7CiAgICAgaWYgKCFpczxSZW5kZXJHcmlkPihyZW5kZXJl
cikpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm9kZSBkb2VzIG5vdCBpbml0aWF0
ZSBhIGdyaWQgY29udGV4dCIpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vZGUg
ZG9lcyBub3QgaW5pdGlhdGUgYSBncmlkIGNvbnRleHQiX3MpOwogCiAgICAgcmVtb3ZlR3JpZE92
ZXJsYXlGb3JOb2RlKG5vZGUpOwogCkBAIC02MjcsNyArNjI3LDcgQEAgRXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JPdmVybGF5OjpzZXRHcmlkT3ZlcmxheUZvck5vZGUoTm9kZSYgbm9kZSwg
Y29uc3QgSW4KIEVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yT3ZlcmxheTo6Y2xlYXJHcmlk
T3ZlcmxheUZvck5vZGUoTm9kZSYgbm9kZSkKIHsKICAgICBpZiAoIXJlbW92ZUdyaWRPdmVybGF5
Rm9yTm9kZShub2RlKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJObyBncmlkIG92
ZXJsYXkgZXhpc3RzIGZvciB0aGUgbm9kZSwgc28gY2Fubm90IGNsZWFyLiIpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vIGdyaWQgb3ZlcmxheSBleGlzdHMgZm9yIHRoZSBub2Rl
LCBzbyBjYW5ub3QgY2xlYXIuIl9zKTsKIAogICAgIHVwZGF0ZSgpOwogCkBAIC02NTIsNyArNjUy
LDcgQEAgYm9vbCBJbnNwZWN0b3JPdmVybGF5OjpyZW1vdmVGbGV4T3ZlcmxheUZvck5vZGUoTm9k
ZSYgbm9kZSkKIEVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yT3ZlcmxheTo6c2V0RmxleE92
ZXJsYXlGb3JOb2RlKE5vZGUmIG5vZGUsIGNvbnN0IEluc3BlY3Rvck92ZXJsYXk6OkZsZXg6OkNv
bmZpZyYgZmxleE92ZXJsYXlDb25maWcpCiB7CiAgICAgaWYgKCFpczxSZW5kZXJGbGV4aWJsZUJv
eD4obm9kZS5yZW5kZXJlcigpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb2Rl
IGRvZXMgbm90IGluaXRpYXRlIGEgZmxleCBjb250ZXh0Iik7CisgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCgiTm9kZSBkb2VzIG5vdCBpbml0aWF0ZSBhIGZsZXggY29udGV4dCJfcyk7CiAK
ICAgICByZW1vdmVGbGV4T3ZlcmxheUZvck5vZGUobm9kZSk7CiAKQEAgLTY2Niw3ICs2NjYsNyBA
QCBFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck92ZXJsYXk6OnNldEZsZXhPdmVybGF5Rm9y
Tm9kZShOb2RlJiBub2RlLCBjb25zdCBJbgogRXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JP
dmVybGF5OjpjbGVhckZsZXhPdmVybGF5Rm9yTm9kZShOb2RlJiBub2RlKQogewogICAgIGlmICgh
cmVtb3ZlRmxleE92ZXJsYXlGb3JOb2RlKG5vZGUpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoIk5vIGZsZXggb3ZlcmxheSBleGlzdHMgZm9yIHRoZSBub2RlLCBzbyBjYW5ub3QgY2xl
YXIuIik7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm8gZmxleCBvdmVybGF5IGV4
aXN0cyBmb3IgdGhlIG5vZGUsIHNvIGNhbm5vdCBjbGVhci4iX3MpOwogCiAgICAgdXBkYXRlKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAppbmRleCAwYTBkYzE0YjkxMjUwMjJiM2I0YmE2MDVkNjc4MGU1NjAwNDcwZTViLi43NzBhZGE0
Y2RhN2RhOWExNzhmOTk4YjlhZjlhMTc3MTliNzJjYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC01NTQsOCArNTU0LDggQEAg
UmVmPFByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmplY3RG
b3JTdHlsZSgpIGNvbnN0CiAgICAgaWYgKGF1dG8gc3R5bGVJZCA9IG1fc3R5bGVJZC5hc1Byb3Rv
Y29sVmFsdWU8UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVJZD4oKSkKICAgICAgICAgcmVzdWx0LT5z
ZXRTdHlsZUlkKHN0eWxlSWQucmVsZWFzZU5vbk51bGwoKSk7CiAKLSAgICByZXN1bHQtPnNldFdp
ZHRoKG1fc3R5bGUtPmdldFByb3BlcnR5VmFsdWUoIndpZHRoIikpOwotICAgIHJlc3VsdC0+c2V0
SGVpZ2h0KG1fc3R5bGUtPmdldFByb3BlcnR5VmFsdWUoImhlaWdodCIpKTsKKyAgICByZXN1bHQt
PnNldFdpZHRoKG1fc3R5bGUtPmdldFByb3BlcnR5VmFsdWUoIndpZHRoIl9zKSk7CisgICAgcmVz
dWx0LT5zZXRIZWlnaHQobV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZSgiaGVpZ2h0Il9zKSk7CiAK
ICAgICBpZiAoYXV0byBzb3VyY2VEYXRhID0gZXh0cmFjdFNvdXJjZURhdGEoKSkgewogICAgICAg
ICBpZiAoYXV0byByYW5nZSA9IGJ1aWxkU291cmNlUmFuZ2VPYmplY3Qoc291cmNlRGF0YS0+cnVs
ZUJvZHlSYW5nZSwgbV9wYXJlbnRTdHlsZVNoZWV0LT5saW5lRW5kaW5ncygpKSkKQEAgLTY4Niw3
ICs2ODYsNyBAQCBSZWY8UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpz
dHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29uc3QKIAogICAgICAgICAvLyBEZWZhdWx0ICJwcmlvcml0
eSIgPT0gIiIuCiAgICAgICAgIGlmIChwcm9wZXJ0eUVudHJ5LmltcG9ydGFudCkKLSAgICAgICAg
ICAgIHByb3BlcnR5LT5zZXRQcmlvcml0eSgiaW1wb3J0YW50Iik7CisgICAgICAgICAgICBwcm9w
ZXJ0eS0+c2V0UHJpb3JpdHkoImltcG9ydGFudCJfcyk7CiAKICAgICAgICAgaWYgKGl0LT5oYXNT
b3VyY2UpIHsKICAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSByYW5nZSBpcyByZWxhdGl2ZSB0
byB0aGUgc3R5bGUgYm9keSBzdGFydC4KQEAgLTEwOTYsNyArMTA5Niw3IEBAIHN0YXRpYyBSZWY8
UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxwZXIo
Y29uc3QgU3RyaW5nCiAKIHN0YXRpYyBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6Q1NTOjpD
U1NTZWxlY3Rvcj4+IHNlbGVjdG9yc0Zyb21Tb3VyY2UoY29uc3QgQ1NTUnVsZVNvdXJjZURhdGEq
IHNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgc2hlZXRUZXh0LCBjb25zdCBWZWN0b3I8Y29uc3Qg
Q1NTU2VsZWN0b3IqPiBzZWxlY3RvcnMpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpT
Qzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24+IGNvbW1lbnQoIi9cXCpbXl0qP1xcKi8iLCBKU0M6
OllhcnI6OlRleHRDYXNlU2Vuc2l0aXZlLCBKU0M6OllhcnI6Ok11bHRpbGluZUVuYWJsZWQpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiBj
b21tZW50KCIvXFwqW15dKj9cXCovIl9zLCBKU0M6OllhcnI6OlRleHRDYXNlU2Vuc2l0aXZlLCBK
U0M6OllhcnI6Ok11bHRpbGluZUVuYWJsZWQpOwogCiAgICAgYXV0byByZXN1bHQgPSBKU09OOjpB
cnJheU9mPFByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPjo6Y3JlYXRlKCk7CiAgICAgdW5zaWdu
ZWQgc2VsZWN0b3JJbmRleCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCmluZGV4IDBiYmNjNTFh
OTM3NDg5ODg1NWVhOTJmOGIzY2E3YjA1MTE1OTQ3YzYuLmEyYzFiOTI0MDk2MWZlYWUzMjEzOTY1
OWI5M2U2YWJjZGIxY2Y5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCkBAIC0zMzMsNyArMzMz
LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+PiBJbnNwZWN0b3JBbmltYXRpb24KIAogICAgIGF1dG8gb2JqZWN0ID0gaW5qZWN0
ZWRTY3JpcHQud3JhcE9iamVjdCh2YWx1ZSwgb2JqZWN0R3JvdXApOwogICAgIGlmICghb2JqZWN0
KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludGVybmFsIGVycm9yOiB1bmFibGUg
dG8gY2FzdCBBbmltYXRpb24iKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRl
cm5hbCBlcnJvcjogdW5hYmxlIHRvIGNhc3QgQW5pbWF0aW9uIl9zKTsKIAogICAgIHJldHVybiBv
YmplY3QucmVsZWFzZU5vbk51bGwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMTU5MTIwMjZkMmMxNTFm
NDE5NDk0NGE5ZjBmYWRhMTg5ODA0ZmZlMy4uMmViOWI3M2NiZWU3YmQ3ZjA0NjBmNDM0ZmY2YWZi
ZTUwYTgxZTI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OkNTUzo6Rm9udD4+IEluc3BlY3RvckNTU0FnZW50Ojpn
ZXRGb250RGF0YQogICAgIAogICAgIGF1dG8qIGNvbXB1dGVkU3R5bGUgPSBub2RlLT5jb21wdXRl
ZFN0eWxlKCk7CiAgICAgaWYgKCFjb21wdXRlZFN0eWxlKQotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIk5vIGNvbXB1dGVkIHN0eWxlIGZvciBub2RlLiIpOworICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoIk5vIGNvbXB1dGVkIHN0eWxlIGZvciBub2RlLiJfcyk7CiAgICAgCiAg
ICAgcmV0dXJuIGJ1aWxkT2JqZWN0Rm9yRm9udChjb21wdXRlZFN0eWxlLT5mb250Q2FzY2FkZSgp
LnByaW1hcnlGb250KCkpOwogfQpAQCAtNjY1LDcgKzY2NSw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPFJlZjxQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4+IEluc3BlY3RvckNT
U0FnZW50CiAKICAgICBhdXRvIHN0eWxlU2hlZXQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWls
ZE9iamVjdEZvclN0eWxlU2hlZXQoKTsKICAgICBpZiAoIXN0eWxlU2hlZXQpCi0gICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IG1pc3Npbmcgc3R5bGUgc2hlZXQi
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRlcm5hbCBlcnJvcjogbWlzc2lu
ZyBzdHlsZSBzaGVldCJfcyk7CiAKICAgICByZXR1cm4gc3R5bGVTaGVldC5yZWxlYXNlTm9uTnVs
bCgpOwogfQpAQCAtNzQ3LDcgKzc0Nyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxQ
cm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTCiAKICAg
ICBhdXRvIHJ1bGUgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUoaW5z
cGVjdG9yU3R5bGVTaGVldC0+cnVsZUZvcklkKGNvbXBvdW5kSWQpKTsKICAgICBpZiAoIXJ1bGUp
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IG1pc3Npbmcg
c3R5bGUgc2hlZXQiKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRlcm5hbCBl
cnJvcjogbWlzc2luZyBzdHlsZSBzaGVldCJfcyk7CiAKICAgICByZXR1cm4gcnVsZS5yZWxlYXNl
Tm9uTnVsbCgpOwogfQpAQCAtODM2LDcgKzgzNiw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PFJlZjxQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUo
CiAKICAgICBhdXRvIHJ1bGUgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1
bGUoaW5zcGVjdG9yU3R5bGVTaGVldC0+cnVsZUZvcklkKHJhd0FjdGlvbi5uZXdSdWxlSWQoKSkp
OwogICAgIGlmICghcnVsZSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRlcm5h
bCBlcnJvcjogbWlzc2luZyBzdHlsZSBzaGVldCIpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoIkludGVybmFsIGVycm9yOiBtaXNzaW5nIHN0eWxlIHNoZWV0Il9zKTsKIAogICAgIHJl
dHVybiBydWxlLnJlbGVhc2VOb25OdWxsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDFjMTY2
OGQ5OWM3YWRhY2IwZTBmMGI1MDhjMjFlY2ZlNjExOTcwNGIuLmY1ZDAwMjlkMWQwZTlmMjk2MDkz
YzM5MDdmNjY1NzI2MTJkNjcxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBAIC0yNDIsNyArMjQyLDcg
QEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+PiBJbnNwZWN0b3JDYW52YXNBZ2UKIAogICAgIGF1dG8gcmVzdWx0ID0gaW5qZWN0ZWRT
Y3JpcHQud3JhcE9iamVjdCh2YWx1ZSwgb2JqZWN0R3JvdXApOwogICAgIGlmICghcmVzdWx0KQot
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludGVybmFsIGVycm9yOiB1bmFibGUgdG8g
Y2FzdCBDb250ZXh0Iik7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwg
ZXJyb3I6IHVuYWJsZSB0byBjYXN0IENvbnRleHQiX3MpOwogCiAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlTm9uTnVsbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA2MDhmMmViNjVmNDBlNmMxOWNhYzNm
MWRmMGUzNWM2ODlhYjFmMTAyLi5mMDQ2Njg4MGU4OGJiMDEzZTQxODE3NWEwN2EwNTgyMWZmZGJl
Zjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcApAQCAtOTU0LDcgKzk1NCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPFJlZjxKU09OOjpBcnJheU9mPFN0cmluZz4+PiBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U3Vw
cG9yCiB7CiAgICAgYXV0byBldmVudE5hbWVzID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+OjpjcmVh
dGUoKTsKIAotI2RlZmluZSBET01fRVZFTlRfTkFNRVNfQUREKG5hbWUpIGV2ZW50TmFtZXMtPmFk
ZEl0ZW0oI25hbWUpOworI2RlZmluZSBET01fRVZFTlRfTkFNRVNfQUREKG5hbWUpIGV2ZW50TmFt
ZXMtPmFkZEl0ZW0oI25hbWUiIl9zKTsKICAgICBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0goRE9N
X0VWRU5UX05BTUVTX0FERCkKICN1bmRlZiBET01fRVZFTlRfTkFNRVNfQURECiAKQEAgLTE1Mjks
NyArMTUyOSw3IEBAIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5z
cGVjdG9yRE9NQWdlbnQ6OnNob3dHcmlkT3ZlcmxheShJbnNwCiAKICAgICBhdXRvIHBhcnNlZENv
bG9yID0gcGFyc2VDb2xvcihXVEZNb3ZlKGdyaWRDb2xvcikpOwogICAgIGlmICghcGFyc2VkQ29s
b3IpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW52YWxpZCBjb2xvciBjb3VsZCBu
b3QgYmUgcGFyc2VkLiIpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludmFsaWQg
Y29sb3IgY291bGQgbm90IGJlIHBhcnNlZC4iX3MpOwogCiAgICAgSW5zcGVjdG9yT3ZlcmxheTo6
R3JpZDo6Q29uZmlnIGNvbmZpZzsKICAgICBjb25maWcuZ3JpZENvbG9yID0gKnBhcnNlZENvbG9y
OwpAQCAtMTU2OSw3ICsxNTY5LDcgQEAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6c2hvd0ZsZXhPdmVybGF5KEluc3AKIAogICAgIGF1
dG8gcGFyc2VkQ29sb3IgPSBwYXJzZUNvbG9yKFdURk1vdmUoZmxleENvbG9yKSk7CiAgICAgaWYg
KCFwYXJzZWRDb2xvcikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnZhbGlkIGNv
bG9yIGNvdWxkIG5vdCBiZSBwYXJzZWQuIik7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZCgiSW52YWxpZCBjb2xvciBjb3VsZCBub3QgYmUgcGFyc2VkLiJfcyk7CiAKICAgICBJbnNwZWN0
b3JPdmVybGF5OjpGbGV4OjpDb25maWcgY29uZmlnOwogICAgIGNvbmZpZy5mbGV4Q29sb3IgPSAq
cGFyc2VkQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCA4MDI2ZTJjZWQwYjJk
MjFiMjEzZTRkYjQ5ZTg1MTNkZDQzMzE0OTM1Li41YTAyMDc1ZTFmYTAzN2VkYTgxYzI3YTMyZjA5
YjA1ZGRkNzIxNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTE3Miw3ICsxNzIs
NyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpzZXRFdmVudEJyZWFrcG9pbnQoUHJvdAogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCIpOworICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCJfcyk7CiB9CiAKIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZUV2
ZW50QnJlYWtwb2ludChQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGUg
YnJlYWtwb2ludFR5cGUsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQpAQCAtMjE1LDcgKzIxNSw3
IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OnJlbW92ZUV2ZW50QnJlYWtwb2ludChQCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb3Qgc3VwcG9ydGVkIik7CisgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb3Qgc3VwcG9ydGVkIl9zKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpCkBAIC00MTAsOCArNDEw
LDggQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpicmVha09uVVJMSWZOZWVkZWQo
Y29uc3QgU3RyaW5nJiB1cmwsIFVSTEJyZWFrcG8KICAgICB9CiAKICAgICBSZWY8SlNPTjo6T2Jq
ZWN0PiBldmVudERhdGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGV2ZW50RGF0YS0+
c2V0U3RyaW5nKCJicmVha3BvaW50VVJMIiwgYnJlYWtwb2ludFVSTCk7Ci0gICAgZXZlbnREYXRh
LT5zZXRTdHJpbmcoInVybCIsIHVybCk7CisgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJyZWFr
cG9pbnRVUkwiX3MsIGJyZWFrcG9pbnRVUkwpOworICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJ1
cmwiX3MsIHVybCk7CiAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oYnJlYWtSZWFz
b24sIFdURk1vdmUoZXZlbnREYXRhKSwgV1RGTW92ZShicmVha3BvaW50KSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcAppbmRleCAxM2ZjMGI4MWVmODc2YjU5ZTkxOGYxOWRkOTg2OTljNDVm
ZjYzMDIwLi5jNDZmOWFiYTYyMjhmNmM3MDY4YmE1MGM3M2MzMjM2OGU2YzE5YzE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xOTcsMTMgKzE5NywxMyBAQCBSZWZQdHI8U3RvcmFnZUFy
ZWE+IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKFByb3RvY29sOjpF
cnJvclN0cgogewogICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBzdG9yYWdlSWQtPmdldFN0cmlu
ZyhQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjpzZWN1cml0eU9yaWdpbktleSk7CiAg
ICAgaWYgKCFzZWN1cml0eU9yaWdpbikgewotICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5n
IHNlY3VyaXR5T3JpZ2luIGluIGdpdmVuIHN0b3JhZ2VJZCI7CisgICAgICAgIGVycm9yU3RyaW5n
ID0gIk1pc3Npbmcgc2VjdXJpdHlPcmlnaW4gaW4gZ2l2ZW4gc3RvcmFnZUlkIl9zOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBhdXRvIGlzTG9jYWxTdG9yYWdlID0gc3Rv
cmFnZUlkLT5nZXRCb29sZWFuKFByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ6OmlzTG9j
YWxTdG9yYWdlS2V5KTsKICAgICBpZiAoIWlzTG9jYWxTdG9yYWdlKSB7Ci0gICAgICAgIGVycm9y
U3RyaW5nID0gIk1pc3NpbmcgaXNMb2NhbFN0b3JhZ2UgaW4gZ2l2ZW4gc3RvcmFnZUlkIjsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBpc0xvY2FsU3RvcmFnZSBpbiBnaXZlbiBzdG9y
YWdlSWQiX3M7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5jcHAKaW5kZXggZjBmM2M3NmQ4NGYyNTU3ODhhMmViNTlmMDU0MjBiOWQ5YTI3MjE2MS4uYWNh
ZjE2Y2Q5NDVmMjhhZGU0MzU3ZGNkZjBjZjMyZGUwZjg2MzQ3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
Y3BwCkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpleGVj
dXRlU1FMKGNvbnN0IFByb3RvY29sOjpEYXRhYmFzZTo6RGF0YWJhc2VJZCYgZGEKIAogICAgIGF1
dG8qIGRhdGFiYXNlID0gZGF0YWJhc2VGb3JJZChkYXRhYmFzZUlkKTsKICAgICBpZiAoIWRhdGFi
YXNlKSB7Ci0gICAgICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIk1pc3NpbmcgZGF0
YWJhc2UgZm9yIGdpdmVuIGRhdGFiYXNlSWQiKTsKKyAgICAgICAgcmVxdWVzdENhbGxiYWNrLT5z
ZW5kRmFpbHVyZSgiTWlzc2luZyBkYXRhYmFzZSBmb3IgZ2l2ZW4gZGF0YWJhc2VJZCJfcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggNWQ1MTJl
NzhlMjAwMzI4OGQwMTUzMTM2ODdlNjgzODk5MDhiNzNlNy4uODc2OTkyMDQyNzkwOGY0YzM0YTYw
Y2RhZjE1OThjY2MyZWI4MzMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTEwMyw3ICsx
MDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgRXZlbnQmIGV2ZW50KSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnR5cGUo
KSAhPSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50KSB7Ci0gICAgICAgICAgICBtX2V4ZWN1dGFi
bGVXaXRoRGF0YWJhc2UtPnJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVk
IGV2ZW50IHR5cGUuIik7CisgICAgICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2UtPnJl
cXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVkIGV2ZW50IHR5cGUuIl9zKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMTEsMTMgKzExMSwxMyBAQCBw
dWJsaWM6CiAKICAgICAgICAgYXV0byByZXN1bHQgPSByZXF1ZXN0LnJlc3VsdCgpOwogICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICBtX2V4ZWN1dGFibGVX
aXRoRGF0YWJhc2UtPnJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0
IHJlc3VsdCBpbiBjYWxsYmFjay4iKTsKKyAgICAgICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRh
YmFzZS0+cmVxdWVzdENhbGxiYWNrKCkuc2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgcmVzdWx0
IGluIGNhbGxiYWNrLiJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICBhdXRvIHJlc3VsdFZhbHVlID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAg
ICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPElEQkRhdGFiYXNlPj4ocmVz
dWx0VmFsdWUpKSB7Ci0gICAgICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2UtPnJlcXVl
c3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVkIHJlc3VsdCB0eXBlLiIpOworICAg
ICAgICAgICAgbV9leGVjdXRhYmxlV2l0aERhdGFiYXNlLT5yZXF1ZXN0Q2FsbGJhY2soKS5zZW5k
RmFpbHVyZSgiVW5leHBlY3RlZCByZXN1bHQgdHlwZS4iX3MpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKQEAgLTEzNiwxMyArMTM2LDEzIEBAIHByaXZhdGU6CiB2b2lkIEV4ZWN1
dGFibGVXaXRoRGF0YWJhc2U6OnN0YXJ0KElEQkZhY3RvcnkqIGlkYkZhY3RvcnksIFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAgICAgaWYgKCFjb250ZXh0
KCkpIHsKLSAgICAgICAgcmVxdWVzdENhbGxiYWNrKCkuc2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBv
cGVuIGRhdGFiYXNlLiIpOworICAgICAgICByZXF1ZXN0Q2FsbGJhY2soKS5zZW5kRmFpbHVyZSgi
Q291bGQgbm90IG9wZW4gZGF0YWJhc2UuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGF1dG8gcmVzdWx0ID0gaWRiRmFjdG9yeS0+b3BlbigqY29udGV4dCgpLCBkYXRhYmFzZU5h
bWUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAg
ICAgICByZXF1ZXN0Q2FsbGJhY2soKS5zZW5kRmFpbHVyZSgiQ291bGQgbm90IG9wZW4gZGF0YWJh
c2UuIik7CisgICAgICAgIHJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qg
b3BlbiBkYXRhYmFzZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNDksNyAr
MzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgRXZlbnQmIGV2ZW50KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYg
KGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50KSB7Ci0gICAgICAgICAg
ICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIlVuZXhwZWN0ZWQgZXZlbnQgdHlwZS4i
KTsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiVW5leHBlY3Rl
ZCBldmVudCB0eXBlLiJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
MzU3LDcgKzM1Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IHJlcXVlc3Qu
cmVzdWx0KCk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAg
ICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCByZXN1bHQg
aW4gY2FsbGJhY2suIik7CisgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1
cmUoIkNvdWxkIG5vdCBnZXQgcmVzdWx0IGluIGNhbGxiYWNrLiJfcyk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zNzEsNyArMzcxLDcgQEAgcHVibGljOgog
CiAgICAgICAgIGlmIChtX3NraXBDb3VudCkgewogICAgICAgICAgICAgaWYgKGN1cnNvci0+YWR2
YW5jZShtX3NraXBDb3VudCkuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgbV9yZXF1
ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgYWR2YW5jZSBjdXJzb3IuIik7Cisg
ICAgICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qg
YWR2YW5jZSBjdXJzb3IuIl9zKTsKICAgICAgICAgICAgIG1fc2tpcENvdW50ID0gMDsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzgzLDcgKzM4Myw3IEBAIHB1YmxpYzoKIAog
ICAgICAgICAvLyBDb250aW51ZSBjdXJzb3IgYmVmb3JlIG1ha2luZyBpbmplY3RlZCBzY3JpcHQg
Y2FsbHMsIG90aGVyd2lzZSB0cmFuc2FjdGlvbiBtaWdodCBiZSBmaW5pc2hlZC4KICAgICAgICAg
aWYgKGN1cnNvci0+Y29udGludWVGdW5jdGlvbihudWxscHRyKS5oYXNFeGNlcHRpb24oKSkgewot
ICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgY29u
dGludWUgY3Vyc29yLiIpOworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWls
dXJlKCJDb3VsZCBub3QgY29udGludWUgY3Vyc29yLiJfcyk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNDQ5LDEzICs0NDksMTMgQEAgcHVibGljOgogCiAgICAgICAgIGF1
dG8gaWRiVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbkZvckRhdGFiYXNlKCZkYXRhYmFzZSwgbV9v
YmplY3RTdG9yZU5hbWUpOwogICAgICAgICBpZiAoIWlkYlRyYW5zYWN0aW9uKSB7Ci0gICAgICAg
ICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgdHJhbnNh
Y3Rpb24iKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291
bGQgbm90IGdldCB0cmFuc2FjdGlvbiJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBhdXRvIGlkYk9iamVjdFN0b3JlID0gb2JqZWN0U3RvcmVGb3JUcmFuc2Fj
dGlvbihpZGJUcmFuc2FjdGlvbi5nZXQoKSwgbV9vYmplY3RTdG9yZU5hbWUpOwogICAgICAgICBp
ZiAoIWlkYk9iamVjdFN0b3JlKSB7Ci0gICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2Vu
ZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgb2JqZWN0IHN0b3JlIik7CisgICAgICAgICAgICBtX3Jl
cXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgb2JqZWN0IHN0b3JlIl9z
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC00NjQsNyArNDY0LDcgQEAg
cHVibGljOgogICAgICAgICBpZiAoIW1faW5kZXhOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgYXV0byBpZGJJbmRleCA9IGluZGV4Rm9yT2JqZWN0U3RvcmUoaWRiT2JqZWN0U3RvcmUuZ2V0
KCksIG1faW5kZXhOYW1lKTsKICAgICAgICAgICAgIGlmICghaWRiSW5kZXgpIHsKLSAgICAgICAg
ICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgaW5k
ZXgiKTsKKyAgICAgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNv
dWxkIG5vdCBnZXQgaW5kZXgiX3MpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KIApAQCAtNDc4LDcgKzQ3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAg
IGlmICghaWRiUmVxdWVzdCkgewotICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRG
YWlsdXJlKCJDb3VsZCBub3Qgb3BlbiBjdXJzb3IgdG8gcG9wdWxhdGUgZGF0YWJhc2UgZGF0YSIp
OworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qg
b3BlbiBjdXJzb3IgdG8gcG9wdWxhdGUgZGF0YWJhc2UgZGF0YSJfcyk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtNjUzLDcgKzY1Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
aWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkuY29tcGxldGVFdmVudCkg
ewotICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVk
IGV2ZW50IHR5cGUuIik7CisgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1
cmUoIlVuZXhwZWN0ZWQgZXZlbnQgdHlwZS4iX3MpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTY5MCwxMyArNjkwLDEzIEBAIHB1YmxpYzoKIAogICAgICAgICBhdXRvIGlk
YlRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25Gb3JEYXRhYmFzZSgmZGF0YWJhc2UsIG1fb2JqZWN0
U3RvcmVOYW1lLCBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWR3cml0ZSk7CiAgICAgICAgIGlmICgh
aWRiVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFp
bHVyZSgiQ291bGQgbm90IGdldCB0cmFuc2FjdGlvbiIpOworICAgICAgICAgICAgbV9yZXF1ZXN0
Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0IHRyYW5zYWN0aW9uIl9zKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gaWRiT2JqZWN0U3Rv
cmUgPSBvYmplY3RTdG9yZUZvclRyYW5zYWN0aW9uKGlkYlRyYW5zYWN0aW9uLmdldCgpLCBtX29i
amVjdFN0b3JlTmFtZSk7CiAgICAgICAgIGlmICghaWRiT2JqZWN0U3RvcmUpIHsKLSAgICAgICAg
ICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCBvYmplY3Qg
c3RvcmUiKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291
bGQgbm90IGdldCBvYmplY3Qgc3RvcmUiX3MpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggNGE2ZjYzMmI2Zjk3MTE0MmM0MDBjNGRi
ODA1M2I0ZDBmMTk0Njg1OS4uMzQ0ZjZmZTUwMGVkNWVjY2I4NWQ2YjdkNDY1NTcxNjAyMzhjMzVj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAgLTE5Miw5ICsxOTIsOSBAQCBSZWY8UHJvdG9j
b2w6OkxheWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVj
dEZvckxheWVyKFJlbgogICAgICAgICBsYXllck9iamVjdC0+c2V0SXNHZW5lcmF0ZWRDb250ZW50
KHRydWUpOwogICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRvRWxlbWVudElkKGJpbmRQc2V1
ZG9FbGVtZW50KGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KHJlbmRlcmVyLT5ub2RlKCkpKSk7CiAg
ICAgICAgIGlmIChyZW5kZXJlci0+aXNCZWZvcmVDb250ZW50KCkpCi0gICAgICAgICAgICBsYXll
ck9iamVjdC0+c2V0UHNldWRvRWxlbWVudCgiYmVmb3JlIik7CisgICAgICAgICAgICBsYXllck9i
amVjdC0+c2V0UHNldWRvRWxlbWVudCgiYmVmb3JlIl9zKTsKICAgICAgICAgZWxzZSBpZiAocmVu
ZGVyZXItPmlzQWZ0ZXJDb250ZW50KCkpCi0gICAgICAgICAgICBsYXllck9iamVjdC0+c2V0UHNl
dWRvRWxlbWVudCgiYWZ0ZXIiKTsKKyAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9F
bGVtZW50KCJhZnRlciJfcyk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFJlbmRlclZpZXcgaXMg
bm93IHJlYWxseSBhbm9ueW1vdXMgYnV0IGRvbid0IHRlbGwgYWJvdXQgaXQgdG8gdGhlIGZyb250
ZW5kIGJlZm9yZSBtYWtpbmcgc3VyZSBpdCBjYW4gaGFuZGxlIGl0LgpAQCAtMjAyLDkgKzIwMiw5
IEBAIFJlZjxQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIoUmVuCiAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRJc0Fu
b255bW91cyh0cnVlKTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVy
ZXItPnN0eWxlKCk7CiAgICAgICAgIGlmIChzdHlsZS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6
Rmlyc3RMZXR0ZXIpCi0gICAgICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRvRWxlbWVudCgi
Zmlyc3QtbGV0dGVyIik7CisgICAgICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRvRWxlbWVu
dCgiZmlyc3QtbGV0dGVyIl9zKTsKICAgICAgICAgZWxzZSBpZiAoc3R5bGUuc3R5bGVUeXBlKCkg
PT0gUHNldWRvSWQ6OkZpcnN0TGluZSkKLSAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1
ZG9FbGVtZW50KCJmaXJzdC1saW5lIik7CisgICAgICAgICAgICBsYXllck9iamVjdC0+c2V0UHNl
dWRvRWxlbWVudCgiZmlyc3QtbGluZSJfcyk7CiAgICAgfQogCiAgICAgcmV0dXJuIGxheWVyT2Jq
ZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDZlNWE1ZmM4OWNjZWYwNWI3M2NlZGEyNTdkNmM1
OWNiMGU4Mjg2MWMuLmQ4MTI5NGM0NWFjZGIwODFkMWQxZmEyNGRjZWQyODlmOWVjNzY2ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEwMzIsNyArMTAzMiw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4gSW5zcGVjdG9yTmV0
d29ya0FnCiAKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2ODQ3NT4gV2Vi
IEluc3BlY3RvcjogQ29ycmVjdGx5IGRpc3BsYXkgaWZyYW1lJ3MgYW5kIHdvcmtlcidzIFdlYlNv
Y2tldHMKICAgICBpZiAoIWlzPERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCIp
OworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQiX3MpOwogCiAg
ICAgYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4od2ViU29ja2V0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7
CkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+IEluc3BlY3Rvck5ldHdvcmtBZwogCiAgICAgYXV0
byBvYmplY3QgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KHdlYlNvY2tldEFzU2NyaXB0VmFs
dWUoZ2xvYmFsT2JqZWN0LCB3ZWJTb2NrZXQpLCBvYmplY3RHcm91cCk7CiAgICAgaWYgKCFvYmpl
Y3QpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IHVuYWJs
ZSB0byBjYXN0IFdlYlNvY2tldCIpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIklu
dGVybmFsIGVycm9yOiB1bmFibGUgdG8gY2FzdCBXZWJTb2NrZXQiX3MpOwogCiAgICAgcmV0dXJu
IG9iamVjdC5yZWxlYXNlTm9uTnVsbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGQxYjI2OWY4ZmE3
ZDY1YWE0ODQyMDVmZDUwMjhkODk0NTdlM2FmMTcuLmFmMzVlMGE5NWVhODE0OWFhNTQ5MzJiMDlm
YWRkYmVhYjUyMDA0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTU3MCwzMSArNTcwLDMxIEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVPYmplY3QoUHJvdG9jb2w6OkVycm9y
U3RyaW5nJiBlcnJvclN0cmluCiAKICAgICBjb29raWUubmFtZSA9IGNvb2tpZU9iamVjdC0+Z2V0
U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6Om5hbWVLZXkpOwogICAgIGlmICghY29va2ll
Lm5hbWUpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IG5h
bWUgaW4gZ2l2ZW4gY29va2llIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1
ZSBmb3Iga2V5IG5hbWUgaW4gZ2l2ZW4gY29va2llIl9zOwogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGNvb2tpZS52YWx1ZSA9IGNvb2tpZU9iamVjdC0+Z2V0U3Ry
aW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnZhbHVlS2V5KTsKICAgICBpZiAoIWNvb2tpZS52
YWx1ZSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgdmFs
dWUgaW4gZ2l2ZW4gY29va2llIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1
ZSBmb3Iga2V5IHZhbHVlIGluIGdpdmVuIGNvb2tpZSJfczsKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICBjb29raWUuZG9tYWluID0gY29va2llT2JqZWN0LT5nZXRT
dHJpbmcoUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6ZG9tYWluS2V5KTsKICAgICBpZiAoIWNvb2tp
ZS5kb21haW4pIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5
IGRvbWFpbiBpbiBnaXZlbiBjb29raWUiOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlk
IHZhbHVlIGZvciBrZXkgZG9tYWluIGluIGdpdmVuIGNvb2tpZSJfczsKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBjb29raWUucGF0aCA9IGNvb2tpZU9iamVjdC0+
Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnBhdGhLZXkpOwogICAgIGlmICghY29v
a2llLnBhdGgpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5
IHBhdGggaW4gZ2l2ZW4gY29va2llIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2
YWx1ZSBmb3Iga2V5IHBhdGggaW4gZ2l2ZW4gY29va2llIl9zOwogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gaHR0cE9ubHkgPSBjb29raWVPYmplY3QtPmdl
dEJvb2xlYW4oUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6aHR0cE9ubHlLZXkpOwogICAgIGlmICgh
aHR0cE9ubHkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5
IGh0dHBPbmx5IGluIGdpdmVuIGNvb2tpZSI7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFs
aWQgdmFsdWUgZm9yIGtleSBodHRwT25seSBpbiBnaXZlbiBjb29raWUiX3M7CiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCkBAIC02MDIsNyArNjAyLDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJyb3JTdHJp
bmcmIGVycm9yU3RyaW4KIAogICAgIGF1dG8gc2VjdXJlID0gY29va2llT2JqZWN0LT5nZXRCb29s
ZWFuKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlY3VyZUtleSk7CiAgICAgaWYgKCFzZWN1cmUp
IHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNlY3VyZSBp
biBnaXZlbiBjb29raWUiOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZv
ciBrZXkgc2VjdXJlIGluIGdpdmVuIGNvb2tpZSJfczsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAKQEAgLTYxMSw3ICs2MTEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
b29raWU+IHBhcnNlQ29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJp
bgogICAgIGF1dG8gc2Vzc2lvbiA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6
UGFnZTo6Q29va2llOjpzZXNzaW9uS2V5KTsKICAgICBjb29raWUuZXhwaXJlcyA9IGNvb2tpZU9i
amVjdC0+Z2V0RG91YmxlKFByb3RvY29sOjpQYWdlOjpDb29raWU6OmV4cGlyZXNLZXkpOwogICAg
IGlmICghc2Vzc2lvbiAmJiAhY29va2llLmV4cGlyZXMpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcg
PSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IGV4cGlyZXMgaW4gZ2l2ZW4gY29va2llIjsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IGV4cGlyZXMgaW4gZ2l2ZW4g
Y29va2llIl9zOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIApAQCAtNjE5
LDEzICs2MTksMTMgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZU9i
amVjdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KIAogICAgIGF1dG8gc2FtZVNp
dGVTdHJpbmcgPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2ll
OjpzYW1lU2l0ZUtleSk7CiAgICAgaWYgKCFzYW1lU2l0ZVN0cmluZykgewotICAgICAgICBlcnJv
clN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgc2FtZVNpdGUgaW4gZ2l2ZW4gY29va2ll
IjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNhbWVTaXRl
IGluIGdpdmVuIGNvb2tpZSJfczsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICBhdXRvIHNhbWVTaXRlID0gUHJvdG9jb2w6OkhlbHBlcnM6OnBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzxQcm90b2NvbDo6UGFnZTo6Q29va2llU2FtZVNpdGVQb2xpY3k+KHNhbWVTaXRl
U3RyaW5nKTsKICAgICBpZiAoIXNhbWVTaXRlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIklu
dmFsaWQgdmFsdWUgZm9yIGtleSBzYW1lU2l0ZSBpbiBnaXZlbiBjb29raWUiOworICAgICAgICBl
cnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgc2FtZVNpdGUgaW4gZ2l2ZW4gY29v
a2llIl9zOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVi
dWdnZXJBZ2VudC5jcHAKaW5kZXggZGFkNTA0MTg4NjRlOTVlYzIxMzMwMjAzZTZkMzlmYWNmYWIw
NWUxYy4uNjI2MGVhNzg2YzE4ODU1YTg4NDk2YmEyODlhNmNlZDdjMDlhMmMzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURP
TURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gUGFnZURPTURlYnVnZ2VyQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQoUHJvdG9j
b2w6OkQKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQiKTsKKyAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
Ik5vdCBzdXBwb3J0ZWQiX3MpOwogfQogCiBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBQ
YWdlRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludChQcm90b2NvbDo6RE9NOjpO
b2RlSWQgbm9kZUlkLCBQcm90b2NvbDo6RE9NRGVidWdnZXI6OkRPTUJyZWFrcG9pbnRUeXBlIHR5
cGUpCkBAIC0xMzUsNyArMTM1LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gUGFn
ZURPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQoUHJvdG9jb2wKICAgICB9CiAK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5v
dCBzdXBwb3J0ZWQiKTsKKyAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQi
X3MpOwogfQogCiB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjptYWluRnJhbWVOYXZpZ2F0ZWQo
KQpAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxJbnNl
cnRET01Ob2RlKE5vZGUmIHBhcmVudCkKICAgICBBU1NFUlQoY2xvc2VzdEJyZWFrcG9pbnRPd25l
cik7CiAKICAgICBhdXRvIHBhdXNlRGF0YSA9IGJ1aWxkUGF1c2VEYXRhRm9yRE9NQnJlYWtwb2lu
dChQcm90b2NvbDo6RE9NRGVidWdnZXI6OkRPTUJyZWFrcG9pbnRUeXBlOjpTdWJ0cmVlTW9kaWZp
ZWQsICpjbG9zZXN0QnJlYWtwb2ludE93bmVyKTsKLSAgICBwYXVzZURhdGEtPnNldEJvb2xlYW4o
Imluc2VydGlvbiIsIHRydWUpOworICAgIHBhdXNlRGF0YS0+c2V0Qm9vbGVhbigiaW5zZXJ0aW9u
Il9zLCB0cnVlKTsKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMzQ5OT4g
V2ViIEluc3BlY3RvcjogYWxsb3cgRE9NIG5vZGVzIHRvIGJlIGluc3RydW1lbnRlZCBhdCBhbnkg
cG9pbnQsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgbWFpbiBkb2N1bWVudCBoYXMgYWxzbyBi
ZWVuIGluc3RydW1lbnRlZAogICAgIC8vIEluY2x1ZGUgdGhlIG5ldyBjaGlsZCBub2RlIElEIHNv
IHRoZSBmcm9udGVuZCBjYW4gc2hvdyB0aGUgbm9kZSB0aGF0J3MgYWJvdXQgdG8gYmUgaW5zZXJ0
ZWQuCiAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dl
ckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURk1vdmUocGF1c2VEYXRhKSwgV1RG
TW92ZShjbG9zZXN0QnJlYWtwb2ludCkpOwpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgUGFnZURP
TURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAgaWYgKGF1
dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgp
KSB7CiAgICAgICAgIGlmICgmbm9kZSAhPSBjbG9zZXN0QnJlYWtwb2ludE93bmVyKSB7CiAgICAg
ICAgICAgICBpZiAoYXV0byB0YXJnZXROb2RlSWQgPSBkb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250
ZW5kKCZub2RlKSkKLSAgICAgICAgICAgICAgICBwYXVzZURhdGEtPnNldEludGVnZXIoInRhcmdl
dE5vZGVJZCIsIHRhcmdldE5vZGVJZCk7CisgICAgICAgICAgICAgICAgcGF1c2VEYXRhLT5zZXRJ
bnRlZ2VyKCJ0YXJnZXROb2RlSWQiX3MsIHRhcmdldE5vZGVJZCk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZy
b250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURk1vdmUocGF1c2VEYXRhKSwgV1RGTW92
ZShjbG9zZXN0QnJlYWtwb2ludCkpOwpAQCAtMzUwLDEwICszNTAsMTAgQEAgUmVmPEpTT046Ok9i
amVjdD4gUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmJ1aWxkUGF1c2VEYXRhRm9yRE9NQnJlYWtwb2lu
dChQcm90b2NvbDoKICAgICBBU1NFUlQobV9kb21TdWJ0cmVlTW9kaWZpZWRCcmVha3BvaW50cy5j
b250YWlucygmYnJlYWtwb2ludE93bmVyKSB8fCBtX2RvbUF0dHJpYnV0ZU1vZGlmaWVkQnJlYWtw
b2ludHMuY29udGFpbnMoJmJyZWFrcG9pbnRPd25lcikgfHwgbV9kb21Ob2RlUmVtb3ZlZEJyZWFr
cG9pbnRzLmNvbnRhaW5zKCZicmVha3BvaW50T3duZXIpKTsKIAogICAgIGF1dG8gcGF1c2VEYXRh
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBwYXVzZURhdGEtPnNldFN0cmluZygidHlw
ZSIsIFByb3RvY29sOjpIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShicmVha3BvaW50VHlw
ZSkpOworICAgIHBhdXNlRGF0YS0+c2V0U3RyaW5nKCJ0eXBlIl9zLCBQcm90b2NvbDo6SGVscGVy
czo6Z2V0RW51bUNvbnN0YW50VmFsdWUoYnJlYWtwb2ludFR5cGUpKTsKICAgICBpZiAoYXV0byog
ZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpIHsK
ICAgICAgICAgaWYgKGF1dG8gYnJlYWtwb2ludE93bmVyTm9kZUlkID0gZG9tQWdlbnQtPnB1c2hO
b2RlVG9Gcm9udGVuZCgmYnJlYWtwb2ludE93bmVyKSkKLSAgICAgICAgICAgIHBhdXNlRGF0YS0+
c2V0SW50ZWdlcigibm9kZUlkIiwgYnJlYWtwb2ludE93bmVyTm9kZUlkKTsKKyAgICAgICAgICAg
IHBhdXNlRGF0YS0+c2V0SW50ZWdlcigibm9kZUlkIl9zLCBicmVha3BvaW50T3duZXJOb2RlSWQp
OwogICAgIH0KICAgICByZXR1cm4gcGF1c2VEYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVy
aWZpY2F0aW9uLmNwcAppbmRleCA1MzFkMjRjNDNlZmIxNGEyNzg2NGZmNWY5NjBlMjEwOTkwYzVk
YzJlLi5lNjlkZDEyMDUwNjQyNjExZDliNTJiZjk2MDllN2E4ZDgxMTY5Y2ExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcApAQCAtMTY3LDE0ICsxNjcsMTQgQEAgc3RhdGlj
IGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUluZm9ybWF0aW9uSWZOZWVkZWQoVGV4
dFN0cmVhbSYgc3RyZWFtLAogc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveElu
Zm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUsIGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IEJveCYgbGF5b3V0
Qm94KQogewogICAgIGJvb2wgZmlyc3RNaXNtYXRjaGluZ1JlY3QgPSB0cnVlOwotICAgIGF1dG8g
b3V0cHV0UmVjdCA9IFsmXSAoY29uc3QgU3RyaW5nJiBwcmVmaXgsIGNvbnN0IExheW91dFJlY3Qm
IHJlbmRlcmVyUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5b3V0UmVjdCkgeworICAgIGF1dG8g
b3V0cHV0UmVjdCA9IFsmXSAoQVNDSUlMaXRlcmFsIHByZWZpeCwgY29uc3QgTGF5b3V0UmVjdCYg
cmVuZGVyZXJSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXlvdXRSZWN0KSB7CiAgICAgICAgIGlm
IChmaXJzdE1pc21hdGNoaW5nUmVjdCkgewotICAgICAgICAgICAgc3RyZWFtIDw8IChyZW5kZXJl
ci5lbGVtZW50KCkgPyByZW5kZXJlci5lbGVtZW50KCktPm5vZGVOYW1lKCkudXRmOCgpLmRhdGEo
KSA6ICIiKSA8PCAiICIgPDwgcmVuZGVyZXIucmVuZGVyTmFtZSgpIDw8ICIoIiA8PCAmcmVuZGVy
ZXIgPDwgIikgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSI7CisgICAgICAgICAgICBz
dHJlYW0gPDwgKHJlbmRlcmVyLmVsZW1lbnQoKSA/IHJlbmRlcmVyLmVsZW1lbnQoKS0+bm9kZU5h
bWUoKS51dGY4KCkuZGF0YSgpIDogIiIpIDw8ICIgIiA8PCByZW5kZXJlci5yZW5kZXJOYW1lKCku
Y2hhcmFjdGVycygpIDw8ICIoIiA8PCAmcmVuZGVyZXIgPDwgIikgbGF5b3V0Qm94KCIgPDwgJmxh
eW91dEJveCA8PCAiKSI7CiAgICAgICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsKICAgICAgICAg
ICAgIGZpcnN0TWlzbWF0Y2hpbmdSZWN0ID0gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBz
dHJlYW0gIDw8IHByZWZpeC51dGY4KCkuZGF0YSgpIDw8ICJcdHJlbmRlcmVyLT4oIiA8PCByZW5k
ZXJlclJlY3QueCgpIDw8ICIsIiA8PCByZW5kZXJlclJlY3QueSgpIDw8ICIpICgiIDw8IHJlbmRl
cmVyUmVjdC53aWR0aCgpIDw8ICJ4IiA8PCByZW5kZXJlclJlY3QuaGVpZ2h0KCkgPDwgIikiCisg
ICAgICAgIHN0cmVhbSAgPDwgcHJlZml4LmNoYXJhY3RlcnMoKSA8PCAiXHRyZW5kZXJlci0+KCIg
PDwgcmVuZGVyZXJSZWN0LngoKSA8PCAiLCIgPDwgcmVuZGVyZXJSZWN0LnkoKSA8PCAiKSAoIiA8
PCByZW5kZXJlclJlY3Qud2lkdGgoKSA8PCAieCIgPDwgcmVuZGVyZXJSZWN0LmhlaWdodCgpIDw8
ICIpIgogICAgICAgICAgICAgPDwgIlx0bGF5b3V0LT4oIiA8PCBsYXlvdXRSZWN0LngoKSA8PCAi
LCIgPDwgbGF5b3V0UmVjdC55KCkgPDwgIikgKCIgPDwgbGF5b3V0UmVjdC53aWR0aCgpIDw8ICJ4
IiA8PCBsYXlvdXRSZWN0LmhlaWdodCgpIDw8ICIpIjsgCiAgICAgICAgIHN0cmVhbS5uZXh0TGlu
ZSgpOwogICAgIH07CkBAIC0yMzcsMTkgKzIzNywxOSBAQCBzdGF0aWMgYm9vbCBvdXRwdXRNaXNt
YXRjaGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNv
bgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoIWFyZUVzc2VudGlh
bGx5RXF1YWwoZnJhbWVSZWN0LCBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChib3hHZW9tZXRy
eSkpKSB7Ci0gICAgICAgIG91dHB1dFJlY3QoImZyYW1lQm94IiwgcmVuZGVyZXIuZnJhbWVSZWN0
KCksIEJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGJveEdlb21ldHJ5KSk7CisgICAgICAgIG91
dHB1dFJlY3QoImZyYW1lQm94Il9zLCByZW5kZXJlci5mcmFtZVJlY3QoKSwgQm94R2VvbWV0cnk6
OmJvcmRlckJveFJlY3QoYm94R2VvbWV0cnkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCiAgICAgaWYgKCFhcmVFc3NlbnRpYWxseUVxdWFsKHJlbmRlcmVyLmJvcmRlckJveFJlY3Qo
KSwgYm94R2VvbWV0cnkuYm9yZGVyQm94KCkpKSB7Ci0gICAgICAgIG91dHB1dFJlY3QoImJvcmRl
ckJveCIsIHJlbmRlcmVyLmJvcmRlckJveFJlY3QoKSwgYm94R2VvbWV0cnkuYm9yZGVyQm94KCkp
OworICAgICAgICBvdXRwdXRSZWN0KCJib3JkZXJCb3giX3MsIHJlbmRlcmVyLmJvcmRlckJveFJl
Y3QoKSwgYm94R2VvbWV0cnkuYm9yZGVyQm94KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKICAgICAvLyBXaGVuIHRoZSB0YWJsZSByb3cgYm9yZGVyIG92ZXJmbG93cyB0aGUgcm93
LCBwYWRkaW5nIGJveCBiZWNvbWVzIG5lZ2F0aXZlIGFuZCBjb250ZW50IGJveCBpcyBpbmNvcnJl
Y3QuCiAgICAgYXV0byBzaG91bGRDaGVja1BhZGRpbmdBbmRDb250ZW50Qm94ID0gIWlzPFJlbmRl
clRhYmxlUm93PihyZW5kZXJlcikgfHwgcmVuZGVyZXIucGFkZGluZ0JveFJlY3QoKS53aWR0aCgp
ID49IDA7CiAgICAgaWYgKHNob3VsZENoZWNrUGFkZGluZ0FuZENvbnRlbnRCb3ggJiYgIWFyZUVz
c2VudGlhbGx5RXF1YWwocmVuZGVyZXIucGFkZGluZ0JveFJlY3QoKSwgYm94R2VvbWV0cnkucGFk
ZGluZ0JveCgpKSkgewotICAgICAgICBvdXRwdXRSZWN0KCJwYWRkaW5nQm94IiwgcmVuZGVyZXIu
cGFkZGluZ0JveFJlY3QoKSwgYm94R2VvbWV0cnkucGFkZGluZ0JveCgpKTsKKyAgICAgICAgb3V0
cHV0UmVjdCgicGFkZGluZ0JveCJfcywgcmVuZGVyZXIucGFkZGluZ0JveFJlY3QoKSwgYm94R2Vv
bWV0cnkucGFkZGluZ0JveCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0y
NjMsNyArMjYzLDcgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9y
bWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb24KICAgICAgICAgcmV0dXJuICFp
czxSZW5kZXJUYWJsZT4ocmVuZGVyZXIpIHx8ICFkb3duY2FzdDxSZW5kZXJUYWJsZT4ocmVuZGVy
ZXIpLmNvbGxhcHNlQm9yZGVycygpOwogICAgIH0oKTsKICAgICBpZiAoc2hvdWxkQ2hlY2tDb250
ZW50Qm94ICYmICFhcmVFc3NlbnRpYWxseUVxdWFsKHJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCks
IGJveEdlb21ldHJ5LmNvbnRlbnRCb3goKSkpIHsKLSAgICAgICAgb3V0cHV0UmVjdCgiY29udGVu
dEJveCIsIHJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCksIGJveEdlb21ldHJ5LmNvbnRlbnRCb3go
KSk7CisgICAgICAgIG91dHB1dFJlY3QoImNvbnRlbnRCb3giX3MsIHJlbmRlcmVyLmNvbnRlbnRC
b3hSZWN0KCksIGJveEdlb21ldHJ5LmNvbnRlbnRCb3goKSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApAQCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNo
aW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uCiAg
ICAgICAgICAgICAmJiBib3hHZW9tZXRyeS5tYXJnaW5FbmQoKSA9PSByZW5kZXJlci5tYXJnaW5F
bmQoKTsKIAogICAgICAgICBpZiAoIW1hcmdpbnNNYXRjaCkgewotICAgICAgICAgICAgb3V0cHV0
UmVjdCgibWFyZ2luQm94IiwgcmVuZGVyZXIubWFyZ2luQm94UmVjdCgpLCByZW5kZXJCb3hMaWtl
TWFyZ2luQm94KGJveEdlb21ldHJ5KSk7CisgICAgICAgICAgICBvdXRwdXRSZWN0KCJtYXJnaW5C
b3giX3MsIHJlbmRlcmVyLm1hcmdpbkJveFJlY3QoKSwgcmVuZGVyQm94TGlrZU1hcmdpbkJveChi
b3hHZW9tZXRyeSkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25Db3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKaW5kZXggNzYyYzlkZTliMDQ3MjAzNGU2NjU3
MmZmMjBmN2E4ZDgzMzczN2U1Yy4uMjMxZDM2YmMwYTM3MWQ0OTY1NTdjYmI1MmQwZTczMTgxMDhj
NjBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcApAQCAtNTUzLDggKzU1Myw4IEBA
IE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZvckxpbmVMYXlvdXRXaXRoUmVhc29u
KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYKICNpZm5kZWYgTkRFQlVHCiAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0g
ICAgICAgIFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjaygiY29tLmFwcGxlLldlYktpdC5zaG93
TW9kZXJuTGluZUxheW91dENvdmVyYWdlIiwgRnVuY3Rpb248dm9pZCgpPiB7IHByaW50TW9kZXJu
TGluZUxheW91dENvdmVyYWdlIH0pOwotICAgICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJh
Y2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd01vZGVybkxpbmVMYXlvdXRSZWFzb25zIiwgRnVuY3Rp
b248dm9pZCgpPiB7IHByaW50TW9kZXJuTGluZUxheW91dEJsb2NrTGlzdCB9KTsKKyAgICAgICAg
UEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dNb2Rlcm5M
aW5lTGF5b3V0Q292ZXJhZ2UiX3MsIEZ1bmN0aW9uPHZvaWQoKT4geyBwcmludE1vZGVybkxpbmVM
YXlvdXRDb3ZlcmFnZSB9KTsKKyAgICAgICAgUEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJj
b20uYXBwbGUuV2ViS2l0LnNob3dNb2Rlcm5MaW5lTGF5b3V0UmVhc29ucyJfcywgRnVuY3Rpb248
dm9pZCgpPiB7IHByaW50TW9kZXJuTGluZUxheW91dEJsb2NrTGlzdCB9KTsKICAgICB9KTsKICNl
bmRpZgogICAgIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IHJlYXNvbnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAppbmRleCAxMTg0YjdjMzk2MWY2NDhkZGViZDZkNGRiZGRh
NDZhM2YxZTQ2MjU0Li4xN2M0NDNmNzc5OGQwNDEzMzgyYjFmNmQyYjI5Y2VmOWQ5ZTE0MjEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZp
bHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+
Q29udGVudEZpbHRlcigpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHVybFNjaGVtZSgpIHsg
cmV0dXJuICJ4LWFwcGxlLWNvbnRlbnQtZmlsdGVyIjsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIg
QVNDSUlMaXRlcmFsIHVybFNjaGVtZSgpIHsgcmV0dXJuICJ4LWFwcGxlLWNvbnRlbnQtZmlsdGVy
Il9zOyB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2Uo
Y29uc3QgVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2wuY3BwCmluZGV4IGQ5Y2E2ZmNkOTQ1Njk5OGY1OGM2MjQ1N2QyMTY2MjI1MjY1
MmE3M2IuLjkyMjNlMDQ0MGZhM2ExYzA4ZjJmZTZlZDY0Njc3ODMzZjcyMWUyNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCkBA
IC04Nyw3ICs4Nyw3IEBAIFJlc291cmNlUmVxdWVzdCBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxp
Z2h0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgc3RhdGljIGNvbnN0
IGRvdWJsZSBwbGF0Zm9ybURlZmF1bHRUaW1lb3V0ID0gMDsKICAgICBwcmVmbGlnaHRSZXF1ZXN0
LnNldFRpbWVvdXRJbnRlcnZhbChwbGF0Zm9ybURlZmF1bHRUaW1lb3V0KTsKICAgICB1cGRhdGVS
ZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChwcmVmbGlnaHRSZXF1ZXN0LCBzZWN1cml0eU9yaWdpbiwg
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlKTsKLSAgICBwcmVmbGlnaHRSZXF1ZXN0
LnNldEhUVFBNZXRob2QoIk9QVElPTlMiKTsKKyAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhUVFBN
ZXRob2QoIk9QVElPTlMiX3MpOwogICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SFRUUEhlYWRlckZp
ZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sUmVxdWVzdE1ldGhvZCwgcmVxdWVzdC5o
dHRwTWV0aG9kKCkpOwogICAgIHByZWZsaWdodFJlcXVlc3Quc2V0UHJpb3JpdHkocmVxdWVzdC5w
cmlvcml0eSgpKTsKICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVz
KHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKaW5kZXgg
YzRmOGNhYjZlZTNhMWZkYjkyNmJjZWM5OGEzMTMyYmU1M2Y3ZjM1My4uZWY0ZDU4Y2E3MzA1ZGE2
Nzg1NTYxNTdhNDY5NGFhMGY5NDQxZjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcApAQCAtODUsMTIg
Kzg1LDEyIEBAIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBDcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dENhY2hlSXRlbTo6dmFsaWRhdGVNZXRob2RBbmRIZWFkCiAKIGJvb2wgQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZUl0ZW06OmFsbG93c0Nyb3NzT3JpZ2luTWV0aG9kKGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tZXRob2RzLmNvbnRhaW5zKG1ldGhvZCkgfHwgKG1f
bWV0aG9kcy5jb250YWlucygiKiIpICYmIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ICE9IFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpIHx8IGlzT25BY2Nlc3NDb250cm9sU2ltcGxlUmVxdWVz
dE1ldGhvZEFsbG93bGlzdChtZXRob2QpOworICAgIHJldHVybiBtX21ldGhvZHMuY29udGFpbnMo
bWV0aG9kKSB8fCAobV9tZXRob2RzLmNvbnRhaW5zKCIqIl9zKSAmJiBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSAhPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKSB8fCBpc09uQWNjZXNzQ29u
dHJvbFNpbXBsZVJlcXVlc3RNZXRob2RBbGxvd2xpc3QobWV0aG9kKTsKIH0KIAogc3RkOjpvcHRp
b25hbDxTdHJpbmc+IENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjp2YWxpZGF0
ZUNyb3NzT3JpZ2luSGVhZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycywg
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIGNvbnN0CiB7
Ci0gICAgYm9vbCB2YWxpZFdpbGRjYXJkID0gbV9oZWFkZXJzLmNvbnRhaW5zKCIqIikgJiYgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgIT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKKyAg
ICBib29sIHZhbGlkV2lsZGNhcmQgPSBtX2hlYWRlcnMuY29udGFpbnMoIioiX3MpICYmIHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5ICE9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiByZXF1ZXN0SGVhZGVycykgewogICAgICAgICBpZiAo
aGVhZGVyLmtleUFzSFRUUEhlYWRlck5hbWUgJiYgaXNDcm9zc09yaWdpblNhZmVSZXF1ZXN0SGVh
ZGVyKGhlYWRlci5rZXlBc0hUVFBIZWFkZXJOYW1lLnZhbHVlKCksIGhlYWRlci52YWx1ZSkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IDI4ZGU3MzM3NDM0YmVjODk4ZTE2NTFkYWM0MmQ5NzczNzQ5MDg0ZWUuLjg3ODZj
NTI1OWI4OTgwMTI4MzU3NDQ1MjBmZWY1OWJhYzA2NGY5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjAwNCw3ICsyMDA0LDcgQEAgYm9vbCBEb2N1bWVu
dExvYWRlcjo6bWF5YmVMb2FkRW1wdHkoKQogICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xp
ZW50KCkuZGlzcGF0Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCgpOwogICAgIH0KIAotICAgIFN0
cmluZyBtaW1lVHlwZSA9IHNob3VsZExvYWRFbXB0eSA/ICJ0ZXh0L2h0bWwiIDogZnJhbWVMb2Fk
ZXIoKS0+Y2xpZW50KCkuZ2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUobV9yZXF1ZXN0LnVy
bCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKKyAgICBTdHJpbmcgbWlt
ZVR5cGUgPSBzaG91bGRMb2FkRW1wdHkgPyAidGV4dC9odG1sIl9zIDogZnJhbWVMb2FkZXIoKS0+
Y2xpZW50KCkuZ2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUobV9yZXF1ZXN0LnVybCgpLnBy
b3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKICAgICBtX3Jlc3BvbnNlID0gUmVz
b3VyY2VSZXNwb25zZShtX3JlcXVlc3QudXJsKCksIG1pbWVUeXBlLCAwLCAiVVRGLTgiX3MpOwog
CiAgICAgaWYgKCFmcmFtZUxvYWRlcigpLT5zdGF0ZU1hY2hpbmUoKS5pc0Rpc3BsYXlpbmdJbml0
aWFsRW1wdHlEb2N1bWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDdiYzJiNzc3MTBlYzgwMTVmOTYwNDUxZGRl
YzUwN2Y0ZTBiYTBlNDcuLjEzNDQ2Mjg5YjVmZmZiZjA0MjEwYzFmMjMwMWU5YzI2N2RiZWU0ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmwKIAogICAg
IGlmIChkb2N1bWVudC5zZXR0aW5ncygpLmRpc2FsbG93U3luY1hIUkR1cmluZ1BhZ2VEaXNtaXNz
YWxFbmFibGVkKCkgJiYgIW1fYXN5bmMgJiYgKCFkb2N1bWVudC5wYWdlKCkgfHwgIWRvY3VtZW50
LnBhZ2UoKS0+YXJlU3luY2hyb25vdXNMb2Fkc0FsbG93ZWQoKSkpIHsKICAgICAgICAgZG9jdW1l
bnQuZGlkUmVqZWN0U3luY1hIUkR1cmluZ1BhZ2VEaXNtaXNzYWwoKTsKLSAgICAgICAgbG9nRXJy
b3JBbmRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVx
dWVzdC51cmwoKSwgIlN5bmNocm9ub3VzIGxvYWRzIGFyZSBub3QgYWxsb3dlZCBhdCB0aGlzIHRp
bWUiKSk7CisgICAgICAgIGxvZ0Vycm9yQW5kRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QudXJsKCksICJTeW5jaHJvbm91cyBsb2FkcyBhcmUg
bm90IGFsbG93ZWQgYXQgdGhpcyB0aW1lIl9zKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTE3OSw3ICsxNzksNyBAQCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIFRocmVhZGFibAogICAgIH0KIAogICAg
IGlmIChtX29wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW4pIHsK
LSAgICAgICAgbG9nRXJyb3JBbmRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgcmVxdWVzdC51cmwoKSwgIkNyb3NzIG9yaWdpbiByZXF1ZXN0cyBhcmUgbm90
IGFsbG93ZWQgd2hlbiB1c2luZyBzYW1lLW9yaWdpbiBmZXRjaCBtb2RlLiIpKTsKKyAgICAgICAg
bG9nRXJyb3JBbmRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwg
MCwgcmVxdWVzdC51cmwoKSwgIkNyb3NzIG9yaWdpbiByZXF1ZXN0cyBhcmUgbm90IGFsbG93ZWQg
d2hlbiB1c2luZyBzYW1lLW9yaWdpbiBmZXRjaCBtb2RlLiJfcykpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xOTAsNyArMTkwLDcgQEAgYm9vbCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmNoZWNrVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBVUkwmIHVybCkKIHsKICAgICAv
LyBDcm9zcy1vcmlnaW4gcmVxdWVzdHMgYXJlIG9ubHkgYWxsb3dlZCBmb3IgSFRUUCBhbmQgcmVn
aXN0ZXJlZCBzY2hlbWVzLiBXZSB3b3VsZCBjYXRjaCB0aGlzIHdoZW4gY2hlY2tpbmcgcmVzcG9u
c2UgaGVhZGVycyBsYXRlciwgYnV0IHRoZXJlIGlzIG5vIHJlYXNvbiB0byBzZW5kIGEgcmVxdWVz
dCB0aGF0J3MgZ3VhcmFudGVlZCB0byBiZSBkZW5pZWQuCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVS
ZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybC5wcm90b2NvbCgp
LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpIHsKLSAgICAgICAgbG9nRXJyb3JBbmRGYWlsKFJl
c291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCAiQ3Jvc3Mgb3Jp
Z2luIHJlcXVlc3RzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgSFRUUC4iLCBSZXNvdXJjZUVycm9y
OjpUeXBlOjpBY2Nlc3NDb250cm9sKSk7CisgICAgICAgIGxvZ0Vycm9yQW5kRmFpbChSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIkNyb3NzIG9yaWdpbiBy
ZXF1ZXN0cyBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIEhUVFAuIl9zLCBSZXNvdXJjZUVycm9yOjpU
eXBlOjpBY2Nlc3NDb250cm9sKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
cmV0dXJuIHRydWU7CkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmNhbmNlbCgpCiAgICAgLy8gQ2FuY2VsIGNhbiByZS1lbnRlciBhbmQgbV9yZXNvdXJj
ZSBtaWdodCBiZSBudWxsIGhlcmUgYXMgYSByZXN1bHQuCiAgICAgaWYgKG1fY2xpZW50ICYmIG1f
cmVzb3VyY2UpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgZXJyb3IgaXMgc2VudCB0byB0aGUg
Y2xpZW50IGluIGRpZEZhaWwoKSwgc28gaXQgc2hvdWxkIG5vdCBiZSBhbiBpbnRlcm5hbCBvbmUu
IFVzZSBGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVkRXJyb3IoKSBpbnN0ZWFkLgotICAgICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1fcmVz
b3VyY2UtPnVybCgpLCAiTG9hZCBjYW5jZWxsZWQiLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5j
ZWxsYXRpb24pOworICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIG1fcmVzb3VyY2UtPnVybCgpLCAiTG9hZCBjYW5jZWxsZWQiX3MsIFJlc291
cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CiAgICAgICAgIG1fY2xpZW50LT5kaWRGYWls
KGVycm9yKTsKICAgICB9CiAgICAgY2xlYXJSZXNvdXJjZSgpOwpAQCAtNjMxLDcgKzYzMSw3IEBA
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgfQogCiAgICAgaWYgKHJlc3BvbnNlLmNvbnRh
aW5zSW52YWxpZEhUVFBIZWFkZXJzKCkpIHsKLSAgICAgICAgZGlkRmFpbChpZGVudGlmaWVyLCBS
ZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QudXJsKCks
ICJSZXNwb25zZSBjb250YWluZWQgaW52YWxpZCBIVFRQIGhlYWRlcnMiLCBSZXNvdXJjZUVycm9y
OjpUeXBlOjpHZW5lcmFsKSk7CisgICAgICAgIGRpZEZhaWwoaWRlbnRpZmllciwgUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLCAiUmVzcG9u
c2UgY29udGFpbmVkIGludmFsaWQgSFRUUCBoZWFkZXJzIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBl
OjpHZW5lcmFsKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IGNlZTgyYTNmMDcxM2FjNDAyZTUyZWZhZDhiNWEw
Zjg1YTM0OGU4NDEuLmU2NGQ5YmJhOGYxNDEyMzg0ZTAwNjkwMTBhMjljY2NmMTk5OTFhMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMjAzLDcgKzIwMyw3
IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1MRm9ybUVs
ZW1lbnQmIGZvcm0sIEhUTUxGb3JtQ29udHJvCiAgICAgaWYgKGNvcGllZEF0dHJpYnV0ZXMubWV0
aG9kKCkgPT0gTWV0aG9kOjpQb3N0KSB7CiAgICAgICAgIGlzTXVsdGlQYXJ0Rm9ybSA9IGNvcGll
ZEF0dHJpYnV0ZXMuaXNNdWx0aVBhcnRGb3JtKCk7CiAgICAgICAgIGlmIChpc011bHRpUGFydEZv
cm0gJiYgaXNNYWlsdG9Gb3JtKSB7Ci0gICAgICAgICAgICBlbmNvZGluZ1R5cGUgPSAiYXBwbGlj
YXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIjsKKyAgICAgICAgICAgIGVuY29kaW5nVHlwZSA9
ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiX3M7CiAgICAgICAgICAgICBpc011
bHRpUGFydEZvcm0gPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTIyMSw3ICsyMjEsNyBA
QCBSZWY8Rm9ybVN1Ym1pc3Npb24+IEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUoSFRNTEZvcm1FbGVt
ZW50JiBmb3JtLCBIVE1MRm9ybUNvbnRybwogCiAgICAgaWYgKGlzTXVsdGlQYXJ0Rm9ybSkgewog
ICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoZG9tRm9ybURhdGEp
OwotICAgICAgICBib3VuZGFyeSA9IGZvcm1EYXRhLT5ib3VuZGFyeSgpLmRhdGEoKTsKKyAgICAg
ICAgYm91bmRhcnkgPSBTdHJpbmcgeyBmb3JtRGF0YS0+Ym91bmRhcnkoKS5kYXRhKCkgfTsKICAg
ICB9IGVsc2UgewogICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoZG9tRm9ybURh
dGEsIGF0dHJpYnV0ZXMubWV0aG9kKCkgPT0gTWV0aG9kOjpHZXQgPyBGb3JtRGF0YTo6Rm9ybVVS
TEVuY29kZWQgOiBGb3JtRGF0YTo6cGFyc2VFbmNvZGluZ1R5cGUoZW5jb2RpbmdUeXBlKSk7CiAg
ICAgICAgIGlmIChjb3BpZWRBdHRyaWJ1dGVzLm1ldGhvZCgpID09IE1ldGhvZDo6UG9zdCAmJiBp
c01haWx0b0Zvcm0pIHsKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIEZvcm1TdWJtaXNzaW9uOjpw
b3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVSZXF1ZXN0KQog
ICAgICAgICBmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVyKG1f
cmVmZXJyZXIpOwogCiAgICAgaWYgKG1fbWV0aG9kID09IE1ldGhvZDo6UG9zdCkgewotICAgICAg
ICBmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwor
ICAgICAgICBmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUE1ldGhvZCgiUE9T
VCJfcyk7CiAgICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQm9k
eShtX2Zvcm1EYXRhLmNvcHlSZWYoKSk7CiAKICAgICAgICAgLy8gY29uc3RydWN0IHNvbWUgdXNl
ciBoZWFkZXJzIGlmIG5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggOTZlNjJiYTU5NWQzYzEzMjA2M2I1YTRhOWJlMTY2YTA0M2QxYzExOS4uOWVkODA2YjRj
M2NiMTgyNmE3NDMyYTZkNjhmYjYzZmYwNzUyOWM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0yOTcxLDcgKzI5NzEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cGRh
dGVSZXF1ZXN0QW5kQWRkRXh0cmFGaWVsZHMoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBJc01h
aQogICAgIC8vIE9ubHkgc2V0IGZhbGxiYWNrIGFycmF5IGlmIGl0J3Mgc3RpbGwgZW1wdHkgKGxh
dGVyIGF0dGVtcHRzIG1heSBiZSBpbmNvcnJlY3QsIHNlZSBidWcgMTE3ODE4KS4KICAgICBpZiAo
cmVxdWVzdC5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgp
LmlzRW1wdHkoKSkgewogICAgICAgICAvLyBBbHdheXMgdHJ5IFVURi04LiBJZiB0aGF0IGZhaWxz
LCB0cnkgZnJhbWUgZW5jb2RpbmcgKGlmIGFueSkgYW5kIHRoZW4gdGhlIGRlZmF1bHQuCi0gICAg
ICAgIHJlcXVlc3Quc2V0UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXkoIlVURi04IiwgbV9mcmFtZS5kb2N1bWVudCgpLT5lbmNvZGluZygpLCBtX2ZyYW1lLnNl
dHRpbmdzKCkuZGVmYXVsdFRleHRFbmNvZGluZ05hbWUoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0
UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoIlVURi04Il9z
LCBtX2ZyYW1lLmRvY3VtZW50KCktPmVuY29kaW5nKCksIG1fZnJhbWUuc2V0dGluZ3MoKS5kZWZh
dWx0VGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICB9CiAKICAgICBpZiAoc2hvdWxkVXBkYXRlID09
IFNob3VsZFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlOjpZZXMgJiYgbV9mcmFtZS5tYWluRnJhbWUo
KS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQpAQCAtMzA2MSw3ICszMDYxLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBTdHJpbmcmIHJlZmUKICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkKICAgICAgICAg
d29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAgIHdv
cmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE9yaWdpbihvcmlnaW4pOwotICAgIHdvcmtpbmdS
ZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOworICAgIHdvcmtpbmdSZXNvdXJj
ZVJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCJfcyk7CiAgICAgd29ya2luZ1Jlc291cmNlUmVx
dWVzdC5zZXRIVFRQQm9keShpblJlcXVlc3QuaHR0cEJvZHkoKSk7CiAgICAgd29ya2luZ1Jlc291
cmNlUmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoY29udGVudFR5cGUpOwogICAgIHVwZGF0ZVJl
cXVlc3RBbmRBZGRFeHRyYUZpZWxkcyh3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBJc01haW5SZXNv
dXJjZTo6WWVzLCBsb2FkVHlwZSwgU2hvdWxkVXBkYXRlQXBwSW5pdGlhdGVkVmFsdWU6Olllcywg
RnJhbWVMb2FkZXI6OklzU2VydmljZVdvcmtlck5hdmlnYXRpb25Mb2FkOjpObywgJnJlcXVlc3Qu
cmVxdWVzdGVyKCkpOwpAQCAtMzgxOCw3ICszODE4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZERpZmZlcmVudERvY3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0ZW0qIGZy
b20KICAgICAvLyBJZiB0aGlzIHdhcyBhIHJlcG9zdCB0aGF0IGZhaWxlZCB0aGUgcGFnZSBjYWNo
ZSwgd2UgbWlnaHQgdHJ5IHRvIHJlcG9zdCB0aGUgZm9ybS4KICAgICBOYXZpZ2F0aW9uQWN0aW9u
IGFjdGlvbjsKICAgICBpZiAoZm9ybURhdGEpIHsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJQT1NUIik7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCJfcyk7CiAg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBDb250ZW50VHlwZShpdGVtLmZvcm1Db250ZW50VHlwZSgpKTsKICAgICAg
ICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KGl0ZW0ucmVmZXJyZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1h
Z2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRl
eCBjM2NiNmQ0ODI5MGIyMWFiYTE4NjVlZGNhZDQ1M2VkZDZhNzczMzQ1Li5jYjMzNmY4Y2IwMWNh
YmQ1M2FhMjc5OGNlNjgwODk4N2NmNjYwOTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAKQEAgLTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVzb2x2ZVBy
b21pc2VzKFZlY3RvcjxSZWZQdHI8RGVmZXJyZWRQcm9taXNlPj4mIHByb21pc2VzKQogICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCByZWplY3RQcm9t
aXNlcyhWZWN0b3I8UmVmUHRyPERlZmVycmVkUHJvbWlzZT4+JiBwcm9taXNlcywgY29uc3QgY2hh
ciogbWVzc2FnZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCByZWplY3RQcm9taXNlcyhWZWN0b3I8UmVm
UHRyPERlZmVycmVkUHJvbWlzZT4+JiBwcm9taXNlcywgQVNDSUlMaXRlcmFsIG1lc3NhZ2UpCiB7
CiAgICAgQVNTRVJUKCFwcm9taXNlcy5pc0VtcHR5KCkpOwogICAgIGF1dG8gcHJvbWlzZXNUb0Jl
UmVqZWN0ZWQgPSBzdGQ6OmV4Y2hhbmdlKHByb21pc2VzLCB7IH0pOwpAQCAtMzQxLDcgKzM0MSw3
IEBAIGlubGluZSB2b2lkIEltYWdlTG9hZGVyOjpyZXNvbHZlRGVjb2RlUHJvbWlzZXMoKQogICAg
IHJlc29sdmVQcm9taXNlcyhtX2RlY29kaW5nUHJvbWlzZXMpOwogfQogCi1pbmxpbmUgdm9pZCBJ
bWFnZUxvYWRlcjo6cmVqZWN0RGVjb2RlUHJvbWlzZXMoY29uc3QgY2hhciogbWVzc2FnZSkKK2lu
bGluZSB2b2lkIEltYWdlTG9hZGVyOjpyZWplY3REZWNvZGVQcm9taXNlcyhBU0NJSUxpdGVyYWwg
bWVzc2FnZSkKIHsKICAgICByZWplY3RQcm9taXNlcyhtX2RlY29kaW5nUHJvbWlzZXMsIG1lc3Nh
Z2UpOwogfQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyCiAgICAg
ICAgIGVsZW1lbnQoKS5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKIAogICAgICAgICBpZiAo
aGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkpCi0gICAgICAgICAgICByZWplY3REZWNvZGVQcm9t
aXNlcygiQWNjZXNzIGNvbnRyb2wgZXJyb3IuIik7CisgICAgICAgICAgICByZWplY3REZWNvZGVQ
cm9taXNlcygiQWNjZXNzIGNvbnRyb2wgZXJyb3IuIl9zKTsKICAgICAgICAgCiAgICAgICAgIEFT
U0VSVCghbV9oYXNQZW5kaW5nTG9hZEV2ZW50KTsKIApAQCAtMzg3LDcgKzM4Nyw3IEBAIHZvaWQg
SW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyCiAKICAgICBpZiAobV9pbWFnZS0+d2FzQ2FuY2VsZWQoKSkgewog
ICAgICAgICBpZiAoaGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkpCi0gICAgICAgICAgICByZWpl
Y3REZWNvZGVQcm9taXNlcygiTG9hZGluZyB3YXMgY2FuY2VsZWQuIik7CisgICAgICAgICAgICBy
ZWplY3REZWNvZGVQcm9taXNlcygiTG9hZGluZyB3YXMgY2FuY2VsZWQuIl9zKTsKICAgICAgICAg
bV9oYXNQZW5kaW5nTG9hZEV2ZW50ID0gZmFsc2U7CiAgICAgICAgIC8vIE9ubHkgY29uc2lkZXIg
dXBkYXRpbmcgdGhlIHByb3RlY3Rpb24gcmVmLWNvdW50IG9mIHRoZSBFbGVtZW50IGltbWVkaWF0
ZWx5IGJlZm9yZSByZXR1cm5pbmcKICAgICAgICAgLy8gZnJvbSB0aGlzIGZ1bmN0aW9uIGFzIGRv
aW5nIHNvIG1pZ2h0IHJlc3VsdCBpbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhpcyBJbWFnZUxvYWRl
ci4KQEAgLTQ2NCwxMyArNDY0LDEzIEBAIHZvaWQgSW1hZ2VMb2FkZXI6OmRlY29kZShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgbV9kZWNvZGluZ1Byb21pc2VzLmFwcGVuZChX
VEZNb3ZlKHByb21pc2UpKTsKIAogICAgIGlmICghZWxlbWVudCgpLmRvY3VtZW50KCkuZG9tV2lu
ZG93KCkpIHsKLSAgICAgICAgcmVqZWN0RGVjb2RlUHJvbWlzZXMoIkluYWN0aXZlIGRvY3VtZW50
LiIpOworICAgICAgICByZWplY3REZWNvZGVQcm9taXNlcygiSW5hY3RpdmUgZG9jdW1lbnQuIl9z
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEF0b21TdHJpbmcgYXR0ciA9IGVsZW1l
bnQoKS5pbWFnZVNvdXJjZVVSTCgpOwogICAgIGlmIChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoYXR0cikuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlamVjdERlY29kZVByb21pc2Vz
KCJNaXNzaW5nIHNvdXJjZSBVUkwuIik7CisgICAgICAgIHJlamVjdERlY29kZVByb21pc2VzKCJN
aXNzaW5nIHNvdXJjZSBVUkwuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDgz
LDEyICs0ODMsMTIgQEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGVjb2RlKCkKICAgICBBU1NFUlQoaGFz
UGVuZGluZ0RlY29kZVByb21pc2VzKCkpOwogICAgIAogICAgIGlmICghZWxlbWVudCgpLmRvY3Vt
ZW50KCkuZG9tV2luZG93KCkpIHsKLSAgICAgICAgcmVqZWN0RGVjb2RlUHJvbWlzZXMoIkluYWN0
aXZlIGRvY3VtZW50LiIpOworICAgICAgICByZWplY3REZWNvZGVQcm9taXNlcygiSW5hY3RpdmUg
ZG9jdW1lbnQuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghbV9pbWFn
ZSB8fCAhbV9pbWFnZS0+aW1hZ2UoKSB8fCBtX2ltYWdlLT5lcnJvck9jY3VycmVkKCkpIHsKLSAg
ICAgICAgcmVqZWN0RGVjb2RlUHJvbWlzZXMoIkxvYWRpbmcgZXJyb3IuIik7CisgICAgICAgIHJl
amVjdERlY29kZVByb21pc2VzKCJMb2FkaW5nIGVycm9yLiJfcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggYWFhMTQxNDk4OGVk
Yzg2ODM1NjJjZTdjNjAwMjE0ZmVlOTNmNTE2Ny4uMTU4N2RhZmFkMTlkNmUzNDdhNDMwNjEyZTk1
MDYxODdlZTdjM2M3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKQEAgLTExMyw3
ICsxMTMsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBoYXNQZW5kaW5nRGVjb2RlUHJvbWlzZXMo
KSBjb25zdCB7IHJldHVybiAhbV9kZWNvZGluZ1Byb21pc2VzLmlzRW1wdHkoKTsgfQogICAgIHZv
aWQgcmVzb2x2ZURlY29kZVByb21pc2VzKCk7Ci0gICAgdm9pZCByZWplY3REZWNvZGVQcm9taXNl
cyhjb25zdCBjaGFyKiBtZXNzYWdlKTsKKyAgICB2b2lkIHJlamVjdERlY29kZVByb21pc2VzKEFT
Q0lJTGl0ZXJhbCBtZXNzYWdlKTsKICAgICB2b2lkIGRlY29kZSgpOwogICAgIAogICAgIHZvaWQg
dGltZXJGaXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29u
dGVudENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNr
ZXIuY3BwCmluZGV4IDIxOTBkOTdiOGQ4YTFkZGUyMWIzN2FiMjg0MjExYWJiNTE1Yzk0ZjAuLmY0
YzVhMjVmYTJhY2I4MTU4ZmViMmJlOGI4ODM2NWMxYzU1ZDM3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKQEAgLTUyLDEwICs1MiwxMCBAQCBi
b29sIE1peGVkQ29udGVudENoZWNrZXI6OmlzTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luJiBz
ZWN1cml0eU9yaWdpbiwgY29uc3QgVQogICAgIHJldHVybiAhU2VjdXJpdHlPcmlnaW46OmlzU2Vj
dXJlKHVybCk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ1dhcm5pbmcoY29uc3QgRnJhbWUmIGZyYW1l
LCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBVUkwmIHRhcmdldCkK
K3N0YXRpYyB2b2lkIGxvZ1dhcm5pbmcoY29uc3QgRnJhbWUmIGZyYW1lLCBib29sIGFsbG93ZWQs
IEFTQ0lJTGl0ZXJhbCBhY3Rpb24sIGNvbnN0IFVSTCYgdGFyZ2V0KQogewogICAgIGNvbnN0IGNo
YXIqIGVycm9yU3RyaW5nID0gYWxsb3dlZCA/ICIgd2FzIGFsbG93ZWQgdG8gIiA6ICIgd2FzIG5v
dCBhbGxvd2VkIHRvICI7Ci0gICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygoYWxsb3dlZCA/
IFN0cmluZygpIDogIltibG9ja2VkXSAiKSwgIlRoZSBwYWdlIGF0ICIsIGZyYW1lLmRvY3VtZW50
KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCBlcnJvclN0cmluZywg
YWN0aW9uLCAiIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiLCB0YXJnZXQuc3RyaW5nQ2VudGVyRWxs
aXBzaXplZFRvTGVuZ3RoKCksICIuXG4iKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5n
KChhbGxvd2VkID8gIiIgOiAiW2Jsb2NrZWRdICIpLCAiVGhlIHBhZ2UgYXQgIiwgZnJhbWUuZG9j
dW1lbnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksIGVycm9yU3Ry
aW5nLCBhY3Rpb24sICIgaW5zZWN1cmUgY29udGVudCBmcm9tICIsIHRhcmdldC5zdHJpbmdDZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIi5cbiIpOwogICAgIGZyYW1lLmRvY3VtZW50KCktPmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsIG1lc3NhZ2UpOwogfQogCkBAIC03Miw3ICs3Miw3IEBAIGJvb2wgTWl4ZWRDb250ZW50
Q2hlY2tlcjo6Y2FuRGlzcGxheUluc2VjdXJlQ29udGVudChGcmFtZSYgZnJhbWUsIFNlY3VyaXR5
T3JpZ2luCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYm9vbCBhbGxvd2VkID0gIWlzU3Ry
aWN0TW9kZSAmJiAoZnJhbWUuc2V0dGluZ3MoKS5hbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVu
dCgpIHx8IHR5cGUgPT0gQ29udGVudFR5cGU6OkFjdGl2ZUNhbldhcm4pICYmICFmcmFtZS5kb2N1
bWVudCgpLT5nZW9sb2NhdGlvbkFjY2Vzc2VkKCk7Ci0gICAgbG9nV2FybmluZyhmcmFtZSwgYWxs
b3dlZCwgImRpc3BsYXkiLCB1cmwpOworICAgIGxvZ1dhcm5pbmcoZnJhbWUsIGFsbG93ZWQsICJk
aXNwbGF5Il9zLCB1cmwpOwogCiAgICAgaWYgKGFsbG93ZWQpIHsKICAgICAgICAgZnJhbWUuZG9j
dW1lbnQoKS0+c2V0Rm91bmRNaXhlZENvbnRlbnQoU2VjdXJpdHlDb250ZXh0OjpNaXhlZENvbnRl
bnRUeXBlOjpJbmFjdGl2ZSk7CkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgTWl4ZWRDb250ZW50Q2hl
Y2tlcjo6Y2FuUnVuSW5zZWN1cmVDb250ZW50KEZyYW1lJiBmcmFtZSwgU2VjdXJpdHlPcmlnaW4m
IHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgYWxsb3dlZCA9ICFmcmFtZS5k
b2N1bWVudCgpLT5pc1N0cmljdE1peGVkQ29udGVudE1vZGUoKSAmJiBmcmFtZS5zZXR0aW5ncygp
LmFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KCkgJiYgIWZyYW1lLmRvY3VtZW50KCktPmdl
b2xvY2F0aW9uQWNjZXNzZWQoKSAmJiAhZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJlQ29va2llc0Fj
Y2Vzc2VkKCk7Ci0gICAgbG9nV2FybmluZyhmcmFtZSwgYWxsb3dlZCwgInJ1biIsIHVybCk7Cisg
ICAgbG9nV2FybmluZyhmcmFtZSwgYWxsb3dlZCwgInJ1biJfcywgdXJsKTsKIAogICAgIGlmIChh
bGxvd2VkKSB7CiAgICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnNldEZvdW5kTWl4ZWRDb250ZW50
KFNlY3VyaXR5Q29udGV4dDo6TWl4ZWRDb250ZW50VHlwZTo6QWN0aXZlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9QaW5nTG9hZGVyLmNwcAppbmRleCA2NmU3YTM5M2YzNGNlMzcyZWMzMGZmY2I1NDY4MDc3
ZTEyMzgxOGNmLi4wZTJhM2QzZDJjMGE0ZjQ1ZWE3YTkzODkwZmQyYTg3ODgyOWUwMTVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCkBAIC0xMzQsOCArMTM0LDggQEAgdm9pZCBQ
aW5nTG9hZGVyOjpzZW5kUGluZyhGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgcGluZ1VSTCwgY29u
c3QgVVJMJiBkZXN0aW5hdGkKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgp
OwogICAgIGRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT51cGdyYWRlSW5zZWN1cmVS
ZXF1ZXN0SWZOZWVkZWQocmVxdWVzdCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJl
cXVlc3RUeXBlOjpMb2FkKTsKIAotICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwot
ICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKCJ0ZXh0L3BpbmciKTsKKyAgICByZXF1ZXN0
LnNldEhUVFBNZXRob2QoIlBPU1QiX3MpOworICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBl
KCJ0ZXh0L3BpbmciX3MpOwogICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoRm9ybURhdGE6OmNyZWF0
ZSgiUElORyIpKTsKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6Q2FjaGVDb250cm9sLCBIVFRQSGVhZGVyVmFsdWVzOjptYXhBZ2UwKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKaW5kZXggZTU1
NWIyNzk3ZDhjNWNmNzI5OGU3NzA5OTVkNmJmZDAwZGFiMzc5My4uNDZiNWM5ZTIzZDUyNWJlZDFj
ZjcyNjgwOTM5NTZlNDU3YWEwMDY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcApAQCAtNzIsMTUgKzcyLDE1IEBAIHN0YXRpYyB2b2lk
IGVuY29kZUhhc2hTZXQoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVs
LCAgY29uc3QgU3RyCiAKIHN0YXRpYyB2b2lkIGVuY29kZUZvbnRIYXNoU2V0KEtleWVkRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBo
YXNoU2V0KQogewotICAgIGVuY29kZUhhc2hTZXQoZW5jb2RlciwgbGFiZWwsICJmb250IiwgaGFz
aFNldCk7CisgICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCBsYWJlbCwgImZvbnQiX3MsIGhhc2hT
ZXQpOwogfQogICAgIAogc3RhdGljIHZvaWQgZW5jb2RlQ2FudmFzQWN0aXZpdHlSZWNvcmQoS2V5
ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBDYW52YXNBY3Rp
dml0eVJlY29yZCYgY2FudmFzQWN0aXZpdHlSZWNvcmQpCiB7CiAgICAgZW5jb2Rlci5lbmNvZGVP
YmplY3QobGFiZWwsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLCBbXSAoS2V5ZWRFbmNvZGVyJiBlbmNv
ZGVySW5uZXIsIGNvbnN0IENhbnZhc0FjdGl2aXR5UmVjb3JkJiBjYW52YXNBY3Rpdml0eVJlY29y
ZCkgewotICAgICAgICBlbmNvZGVySW5uZXIuZW5jb2RlQm9vbCgid2FzRGF0YVJlYWQiLCBjYW52
YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCk7Ci0gICAgICAgIGVuY29kZXJJbm5lci5lbmNv
ZGVPYmplY3RzKCJ0ZXh0V3JpdHRlbiIsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVu
LmJlZ2luKCksIGNhbnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVuLmVuZCgpLCBbXSAoS2V5
ZWRFbmNvZGVyJiBlbmNvZGVySW5uZXIyLCBjb25zdCBTdHJpbmcmIHRleHQpIHsKLSAgICAgICAg
ICAgIGVuY29kZXJJbm5lcjIuZW5jb2RlU3RyaW5nKCJ0ZXh0IiwgdGV4dCk7CisgICAgICAgIGVu
Y29kZXJJbm5lci5lbmNvZGVCb29sKCJ3YXNEYXRhUmVhZCJfcywgY2FudmFzQWN0aXZpdHlSZWNv
cmQud2FzRGF0YVJlYWQpOworICAgICAgICBlbmNvZGVySW5uZXIuZW5jb2RlT2JqZWN0cygidGV4
dFdyaXR0ZW4iX3MsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVuLmJlZ2luKCksIGNh
bnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVuLmVuZCgpLCBbXSAoS2V5ZWRFbmNvZGVyJiBl
bmNvZGVySW5uZXIyLCBjb25zdCBTdHJpbmcmIHRleHQpIHsKKyAgICAgICAgICAgIGVuY29kZXJJ
bm5lcjIuZW5jb2RlU3RyaW5nKCJ0ZXh0Il9zLCB0ZXh0KTsKICAgICAgICAgfSk7CiAgICAgfSk7
CiB9CkBAIC0xMDMsOSArMTAzLDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNv
ZGUoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIC8vIFRvcCBmcmFtZSBzdGF0cwog
ICAgIGVuY29kZUhhc2hTZXQoZW5jb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iX3Ms
ICJkb21haW4iX3MsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pOwogICAgIGVuY29kZUhhc2hT
ZXQoZW5jb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgImRvbWFpbiJfcywg
dG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKTsKLSAgICBlbmNvZGVIYXNoU2V0KGVuY29kZXIs
ICJ0b3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iX3MsICJkb21haW4iLCB0b3BGcmFtZUxpbmtE
ZWNvcmF0aW9uc0Zyb20pOworICAgIGVuY29kZUhhc2hTZXQoZW5jb2RlciwgInRvcEZyYW1lTGlu
a0RlY29yYXRpb25zRnJvbSJfcywgImRvbWFpbiJfcywgdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNG
cm9tKTsKICAgICBlbmNvZGVyLmVuY29kZUJvb2woImdvdExpbmtEZWNvcmF0aW9uRnJvbVByZXZh
bGVudFJlc291cmNlIl9zLCBnb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSk7
Ci0gICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCAidG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2Ny
aXB0cyJfcywgImRvbWFpbiIsIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMpOworICAg
IGVuY29kZUhhc2hTZXQoZW5jb2RlciwgInRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMi
X3MsICJkb21haW4iX3MsIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMpOwogCiAgICAg
Ly8gU3ViZnJhbWUgc3RhdHMKICAgICBlbmNvZGVIYXNoU2V0KGVuY29kZXIsICJzdWJmcmFtZVVu
ZGVyVG9wRnJhbWVEb21haW5zIl9zLCAiZG9tYWluIl9zLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVE
b21haW5zKTsKQEAgLTEyNCwxMiArMTI0LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6ZW5jb2RlKEtleWVkRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29k
ZVVJbnQzMigidGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSJf
cywgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSk7CiAKICNp
ZiBFTkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQotICAgIGVuY29kZUZvbnRIYXNoU2V0KGVuY29k
ZXIsICJmb250c0ZhaWxlZFRvTG9hZCIsIGZvbnRzRmFpbGVkVG9Mb2FkKTsKLSAgICBlbmNvZGVG
b250SGFzaFNldChlbmNvZGVyLCAiZm9udHNTdWNjZXNzZnVsbHlMb2FkZWQiLCBmb250c1N1Y2Nl
c3NmdWxseUxvYWRlZCk7Ci0gICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCAidG9wRnJhbWVSZWdp
c3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyIsICJkb21haW4iLCB0b3BGcmFtZVJl
Z2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzKTsKLSAgICBlbmNvZGVDYW52YXNB
Y3Rpdml0eVJlY29yZChlbmNvZGVyLCAiY2FudmFzQWN0aXZpdHlSZWNvcmQiLCBjYW52YXNBY3Rp
dml0eVJlY29yZCk7Ci0gICAgZW5jb2RlT3B0aW9uU2V0KGVuY29kZXIsICJuYXZpZ2F0b3JGdW5j
dGlvbnNBY2Nlc3NlZEJpdE1hc2siLCBuYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZCk7Ci0gICAg
ZW5jb2RlT3B0aW9uU2V0KGVuY29kZXIsICJzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZEJpdE1hc2si
LCBzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZCk7CisgICAgZW5jb2RlRm9udEhhc2hTZXQoZW5jb2Rl
ciwgImZvbnRzRmFpbGVkVG9Mb2FkIl9zLCBmb250c0ZhaWxlZFRvTG9hZCk7CisgICAgZW5jb2Rl
Rm9udEhhc2hTZXQoZW5jb2RlciwgImZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkIl9zLCBmb250c1N1
Y2Nlc3NmdWxseUxvYWRlZCk7CisgICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCAidG9wRnJhbWVS
ZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyJfcywgImRvbWFpbiJfcywgdG9w
RnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyk7CisgICAgZW5jb2Rl
Q2FudmFzQWN0aXZpdHlSZWNvcmQoZW5jb2RlciwgImNhbnZhc0FjdGl2aXR5UmVjb3JkIl9zLCBj
YW52YXNBY3Rpdml0eVJlY29yZCk7CisgICAgZW5jb2RlT3B0aW9uU2V0KGVuY29kZXIsICJuYXZp
Z2F0b3JGdW5jdGlvbnNBY2Nlc3NlZEJpdE1hc2siX3MsIG5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vz
c2VkKTsKKyAgICBlbmNvZGVPcHRpb25TZXQoZW5jb2RlciwgInNjcmVlbkZ1bmN0aW9uc0FjY2Vz
c2VkQml0TWFzayJfcywgc2NyZWVuRnVuY3Rpb25zQWNjZXNzZWQpOwogI2VuZGlmCiB9CiAKQEAg
LTEzOCwxMSArMTM4LDExIEBAIHN0YXRpYyB2b2lkIGRlY29kZUhhc2hDb3VudGVkU2V0KEtleWVk
RGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgSGFzCiAgICAgVmVjdG9yPFN0
cmluZz4gaWdub3JlZDsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW51c2VkLXJlc3VsdCIpCiAg
ICAgZGVjb2Rlci5kZWNvZGVPYmplY3RzKGxhYmVsLCBpZ25vcmVkLCBbJmhhc2hDb3VudGVkU2V0
XShLZXllZERlY29kZXImIGRlY29kZXJJbm5lciwgU3RyaW5nJiBkb21haW4pIHsKLSAgICAgICAg
aWYgKCFkZWNvZGVySW5uZXIuZGVjb2RlU3RyaW5nKCJvcmlnaW4iLCBkb21haW4pKQorICAgICAg
ICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVTdHJpbmcoIm9yaWdpbiJfcywgZG9tYWluKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIGNvdW50
OwotICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVVSW50MzIoImNvdW50IiwgY291bnQp
KQorICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVVSW50MzIoImNvdW50Il9zLCBjb3Vu
dCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaGFzaENvdW50ZWRTZXQu
YWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21h
aW5TdHJpbmcoZG9tYWluKSwgY291bnQpOwpAQCAtMTkwLDE4ICsxOTAsMTggQEAgSUdOT1JFX1dB
Uk5JTkdTX0VORAogCiBzdGF0aWMgdm9pZCBkZWNvZGVGb250SGFzaFNldChLZXllZERlY29kZXIm
IGRlY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEhhc2hTZXQ8U3RyaW5nPiYgaGFzaFNldCkK
IHsKLSAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsIGxhYmVsLCAiZm9udCIsIGhhc2hTZXQpOwor
ICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgbGFiZWwsICJmb250Il9zLCBoYXNoU2V0KTsKIH0K
ICAgICAKIHN0YXRpYyB2b2lkIGRlY29kZUNhbnZhc0FjdGl2aXR5UmVjb3JkKEtleWVkRGVjb2Rl
ciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ2FudmFzQWN0aXZpdHlSZWNvcmQmIGNh
bnZhc0FjdGl2aXR5UmVjb3JkKQogewogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnVzZWQtcmVz
dWx0IikKICAgICBkZWNvZGVyLmRlY29kZU9iamVjdChsYWJlbCwgY2FudmFzQWN0aXZpdHlSZWNv
cmQsIFtdIChLZXllZERlY29kZXImIGRlY29kZXJJbm5lciwgQ2FudmFzQWN0aXZpdHlSZWNvcmQm
IGNhbnZhc0FjdGl2aXR5UmVjb3JkKSB7Ci0gICAgICAgIGlmICghZGVjb2RlcklubmVyLmRlY29k
ZUJvb2woIndhc0RhdGFSZWFkIiwgY2FudmFzQWN0aXZpdHlSZWNvcmQud2FzRGF0YVJlYWQpKQor
ICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVCb29sKCJ3YXNEYXRhUmVhZCJfcywgY2Fu
dmFzQWN0aXZpdHlSZWNvcmQud2FzRGF0YVJlYWQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBpZ25vcmU7Ci0gICAgICAgIGRlY29kZXJJbm5lci5k
ZWNvZGVPYmplY3RzKCJ0ZXh0V3JpdHRlbiIsIGlnbm9yZSwgWyZjYW52YXNBY3Rpdml0eVJlY29y
ZF0gKEtleWVkRGVjb2RlciYgZGVjb2RlcklubmVyMiwgU3RyaW5nJiB0ZXh0KSB7Ci0gICAgICAg
ICAgICBpZiAoIWRlY29kZXJJbm5lcjIuZGVjb2RlU3RyaW5nKCJ0ZXh0IiwgdGV4dCkpCisgICAg
ICAgIGRlY29kZXJJbm5lci5kZWNvZGVPYmplY3RzKCJ0ZXh0V3JpdHRlbiJfcywgaWdub3JlLCBb
JmNhbnZhc0FjdGl2aXR5UmVjb3JkXSAoS2V5ZWREZWNvZGVyJiBkZWNvZGVySW5uZXIyLCBTdHJp
bmcmIHRleHQpIHsKKyAgICAgICAgICAgIGlmICghZGVjb2RlcklubmVyMi5kZWNvZGVTdHJpbmco
InRleHQiX3MsIHRleHQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGNhbnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVuLmFkZCh0ZXh0KTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMjE2LDgxICsyMTYsODEgQEAgYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCB1bnNpZ25lZCBtb2RlbFZl
cnNpb24KIHsKICAgICBTdHJpbmcgcmVnaXN0cmFibGVEb21haW5Bc1N0cmluZzsKICAgICBpZiAo
bW9kZWxWZXJzaW9uID49IDE1KSB7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmco
IlByZXZhbGVudFJlc291cmNlRG9tYWluIiwgcmVnaXN0cmFibGVEb21haW5Bc1N0cmluZykpCisg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlRG9tYWlu
Il9zLCByZWdpc3RyYWJsZURvbWFpbkFzU3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKCJQcmV2
YWxlbnRSZXNvdXJjZU9yaWdpbiIsIHJlZ2lzdHJhYmxlRG9tYWluQXNTdHJpbmcpKQorICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKCJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbiJfcywg
cmVnaXN0cmFibGVEb21haW5Bc1N0cmluZykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIHJlZ2lzdHJhYmxlRG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tl
ZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhyZWdpc3RyYWJsZURvbWFpbkFzU3Ry
aW5nKTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
Qm9vbCgiaGFkVXNlckludGVyYWN0aW9uIiwgaGFkVXNlckludGVyYWN0aW9uKSkKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlQm9vbCgiaGFkVXNlckludGVyYWN0aW9uIl9zLCBoYWRVc2VySW50ZXJh
Y3Rpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBTdG9yYWdlIGFjY2Vzcwog
ICAgIGlmIChtb2RlbFZlcnNpb24gPj0gMTUpCi0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2Rl
ciwgInN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyIsICJkb21haW4iLCBzdG9yYWdl
QWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOworICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29k
ZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsICJkb21haW4iX3MsIHN0
b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyk7CiAgICAgZWxzZQotICAgICAgICBkZWNv
ZGVIYXNoU2V0KGRlY29kZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCAi
b3JpZ2luIiwgc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zKTsKKyAgICAgICAgZGVj
b2RlSGFzaFNldChkZWNvZGVyLCAic3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5zIl9z
LCAib3JpZ2luIl9zLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogCiAgICAg
Ly8gVG9wIGZyYW1lIHN0YXRzCiAgICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAxNSkgewotICAgICAg
ICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwgImRv
bWFpbiIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pOwotICAgICAgICBkZWNvZGVIYXNoU2V0
KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCAiZG9tYWluIiwgdG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKyAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAi
dG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcywgImRvbWFpbiJfcywgdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbyk7CisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzRnJvbSJfcywgImRvbWFpbiJfcywgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNG
cm9tKTsKICAgICB9IGVsc2UgaWYgKG1vZGVsVmVyc2lvbiA+PSAxMSkgewogICAgICAgICBIYXNo
Q291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0Nv
dW50ZWQ7Ci0gICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c1RvIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQpOworICAg
ICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNUbyJfcywgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQpOwogICAgICAgICBmb3Ig
KGF1dG8mIGRvbWFpbiA6IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudGVkLnZhbHVlcygp
KQogICAgICAgICAgICAgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUby5hZGQoZG9tYWluKTsKICAg
ICAgICAgCiAgICAgICAgIEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiB0b3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c0Zyb21Db3VudGVkOwotICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNl
dChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIiwgdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNGcm9tQ291bnRlZCk7CisgICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29k
ZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iX3MsIHRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzRnJvbUNvdW50ZWQpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzRnJvbUNvdW50ZWQudmFsdWVzKCkpCiAgICAgICAgICAgICB0b3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c0Zyb20uYWRkKGRvbWFpbik7CiAgICAgfQogCiAgICAgaWYgKG1vZGVsVmVy
c2lvbiA+PSAxNikgewotICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZUxp
bmtEZWNvcmF0aW9uc0Zyb20iLCAiZG9tYWluIiwgdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9t
KTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woImdvdExpbmtEZWNvcmF0aW9uRnJv
bVByZXZhbGVudFJlc291cmNlIiwgZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3Vy
Y2UpKQorICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZUxpbmtEZWNvcmF0
aW9uc0Zyb20iX3MsICJkb21haW4iX3MsIHRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSk7Cisg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVCb29sKCJnb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2
YWxlbnRSZXNvdXJjZSJfcywgZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2Up
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChtb2RlbFZlcnNp
b24gPj0gMTcpIHsKICAgICAgICAgSGFzaENvdW50ZWRTZXQ8UmVnaXN0cmFibGVEb21haW4+IHRv
cEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNDb3VudGVkOwotICAgICAgICBkZWNvZGVIYXNo
Q291bnRlZFNldChkZWNvZGVyLCAidG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIsIHRv
cEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNDb3VudGVkKTsKKyAgICAgICAgZGVjb2RlSGFz
aENvdW50ZWRTZXQoZGVjb2RlciwgInRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiX3Ms
IHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNDb3VudGVkKTsKICAgICAgICAgZm9yIChh
dXRvJiBkb21haW4gOiB0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzQ291bnRlZC52YWx1
ZXMoKSkKICAgICAgICAgICAgIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMuYWRkKGRv
bWFpbik7CiAgICAgfQogCiAgICAgLy8gU3ViZnJhbWUgc3RhdHMKICAgICBpZiAobW9kZWxWZXJz
aW9uID49IDE1KQotICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdWJmcmFtZVVuZGVy
VG9wRnJhbWVEb21haW5zIiwgImRvbWFpbiIsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMp
OworICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdWJmcmFtZVVuZGVyVG9wRnJhbWVE
b21haW5zIl9zLCAiZG9tYWluIl9zLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zKTsKICAg
ICBlbHNlIGlmIChtb2RlbFZlcnNpb24gPj0gMTQpIHsKICAgICAgICAgSGFzaENvdW50ZWRTZXQ8
UmVnaXN0cmFibGVEb21haW4+IHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkOwot
ICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3ViZnJhbWVVbmRlclRvcEZy
YW1lT3JpZ2lucyIsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkKTsKKyAgICAg
ICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFtZU9y
aWdpbnMiX3MsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkKTsKICAgICAgICAg
Zm9yIChhdXRvJiBkb21haW4gOiBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRlZC52
YWx1ZXMoKSkKICAgICAgICAgICAgIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMuYWRkKGRv
bWFpbik7CiAgICAgfQogCiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKICAgICBpZiAobW9kZWxW
ZXJzaW9uID49IDE1KSB7Ci0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMiLCAiZG9tYWluIiwgc3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lRG9tYWlucyk7Ci0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzVG8iLCAiZG9tYWluIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNU
byk7Ci0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzRnJvbSIsICJkb21haW4iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOwor
ICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVE
b21haW5zIl9zLCAiZG9tYWluIl9zLCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zKTsK
KyAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNUbyJfcywgImRvbWFpbiJfcywgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAg
ICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJv
bSJfcywgImRvbWFpbiJfcywgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKTsKICAgICB9
IGVsc2UgewogICAgICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gc3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQ7Ci0gICAgICAgIGRlY29kZUhhc2hDb3Vu
dGVkU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQpOworICAgICAgICBkZWNvZGVIYXNoQ291
bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyJfcywgc3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQpOwogICAgICAgICBmb3IgKGF1dG8m
IGRvbWFpbiA6IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkLnZhbHVlcygp
KQogICAgICAgICAgICAgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQoZG9tYWlu
KTsKIAogICAgICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gc3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQ7Ci0gICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0
KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIiwgc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUb0NvdW50ZWQpOworICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNv
ZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyJfcywgc3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNUb0NvdW50ZWQpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudGVkLnZhbHVlcygpKQogICAgICAgICAgICAgc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQoZG9tYWluKTsKICAgICAgICAgaWYgKG1vZGVsVmVy
c2lvbiA+PSAxMSkgewogICAgICAgICAgICAgSGFzaENvdW50ZWRTZXQ8UmVnaXN0cmFibGVEb21h
aW4+IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbUNvdW50ZWQ7Ci0gICAgICAgICAgICBk
ZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNG
cm9tIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tQ291bnRlZCk7CisgICAgICAgICAg
ICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNGcm9tIl9zLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21Db3VudGVkKTsKICAgICAg
ICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9t
Q291bnRlZC52YWx1ZXMoKSkKICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb20uYWRkKGRvbWFpbik7CiAgICAgICAgIH0KQEAgLTI5OCwxMSArMjk4LDExIEBAIGJv
b2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKEtleWVkRGVjb2RlciYgZGVjb2Rlciwg
dW5zaWduZWQgbW9kZWxWZXJzaW9uCiAKIAogICAgIC8vIFByZXZhbGVudCBSZXNvdXJjZQotICAg
IGlmICghZGVjb2Rlci5kZWNvZGVCb29sKCJpc1ByZXZhbGVudFJlc291cmNlIiwgaXNQcmV2YWxl
bnRSZXNvdXJjZSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woImlzUHJldmFsZW50UmVz
b3VyY2UiX3MsIGlzUHJldmFsZW50UmVzb3VyY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAobW9kZWxWZXJzaW9uID49IDEyKSB7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVCb29sKCJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSIsIGlzVmVyeVByZXZhbGVudFJlc291cmNl
KSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woImlzVmVyeVByZXZhbGVudFJlc291
cmNlIl9zLCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC0zMTIsMzcgKzMxMiwzNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIsIHVuc2lnbmVkIG1vZGVsVmVyc2lv
bgogICAgICAgICBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSA9IGZhbHNlOwogICAgIH0KIAotICAg
IGlmICghZGVjb2Rlci5kZWNvZGVVSW50MzIoImRhdGFSZWNvcmRzUmVtb3ZlZCIsIGRhdGFSZWNv
cmRzUmVtb3ZlZCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJbnQzMigiZGF0YVJlY29yZHNS
ZW1vdmVkIl9zLCBkYXRhUmVjb3Jkc1JlbW92ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVBc0RvdWJsZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlRG91YmxlKCJtb3N0UmVjZW50VXNlckludGVyYWN0aW9uIiwgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVBc0RvdWJsZSkpCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZURvdWJsZSgibW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiJfcywgbW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblRpbWVBc0RvdWJsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uVGltZUFzRG91YmxlKTsKIAotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGVCb29sKCJncmFuZGZhdGhlcmVkIiwgZ3JhbmRmYXRoZXJlZCkpCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUJvb2woImdyYW5kZmF0aGVyZWQiX3MsIGdyYW5kZmF0aGVyZWQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBkb3VibGUgbGFzdFNlZW5UaW1lQXNEb3VibGU7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZURvdWJsZSgibGFzdFNlZW4iLCBsYXN0U2VlblRpbWVBc0RvdWJs
ZSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZURvdWJsZSgibGFzdFNlZW4iX3MsIGxhc3RTZWVu
VGltZUFzRG91YmxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGxhc3RTZWVuID0gV2Fs
bFRpbWU6OmZyb21SYXdTZWNvbmRzKGxhc3RTZWVuVGltZUFzRG91YmxlKTsKIAogICAgIGlmICht
b2RlbFZlcnNpb24gPj0gMTEpIHsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJbnQzMigi
dGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uIiwgdGltZXNBY2Nl
c3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKSkKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZVVJbnQzMigidGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVy
YWN0aW9uIl9zLCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24p
KQogICAgICAgICAgICAgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0
aW9uID0gMDsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJbnQzMigidGltZXNBY2Nlc3Nl
ZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSIsIHRpbWVzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkpKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
VUludDMyKCJ0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJIl9z
LCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJKSkKICAgICAg
ICAgICAgIHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkgPSAw
OwogICAgIH0KIAogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCiAgICAgaWYgKG1vZGVs
VmVyc2lvbiA+PSAxMykgewotICAgICAgICBkZWNvZGVGb250SGFzaFNldChkZWNvZGVyLCAiZm9u
dHNGYWlsZWRUb0xvYWQiLCBmb250c0ZhaWxlZFRvTG9hZCk7Ci0gICAgICAgIGRlY29kZUZvbnRI
YXNoU2V0KGRlY29kZXIsICJmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCIsIGZvbnRzU3VjY2Vzc2Z1
bGx5TG9hZGVkKTsKLSAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAidG9wRnJhbWVSZWdp
c3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyIsICJkb21haW4iLCB0b3BGcmFtZVJl
Z2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzKTsKLSAgICAgICAgZGVjb2RlQ2Fu
dmFzQWN0aXZpdHlSZWNvcmQoZGVjb2RlciwgImNhbnZhc0FjdGl2aXR5UmVjb3JkIiwgY2FudmFz
QWN0aXZpdHlSZWNvcmQpOwotICAgICAgICBkZWNvZGVPcHRpb25TZXQoZGVjb2RlciwgIm5hdmln
YXRvckZ1bmN0aW9uc0FjY2Vzc2VkQml0TWFzayIsIG5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2Vk
KTsKLSAgICAgICAgZGVjb2RlT3B0aW9uU2V0KGRlY29kZXIsICJzY3JlZW5GdW5jdGlvbnNBY2Nl
c3NlZEJpdE1hc2siLCBzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZCk7CisgICAgICAgIGRlY29kZUZv
bnRIYXNoU2V0KGRlY29kZXIsICJmb250c0ZhaWxlZFRvTG9hZCJfcywgZm9udHNGYWlsZWRUb0xv
YWQpOworICAgICAgICBkZWNvZGVGb250SGFzaFNldChkZWNvZGVyLCAiZm9udHNTdWNjZXNzZnVs
bHlMb2FkZWQiX3MsIGZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkKTsKKyAgICAgICAgZGVjb2RlSGFz
aFNldChkZWNvZGVyLCAidG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2Vi
QVBJcyJfcywgImRvbWFpbiJfcywgdG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vz
c2VkV2ViQVBJcyk7CisgICAgICAgIGRlY29kZUNhbnZhc0FjdGl2aXR5UmVjb3JkKGRlY29kZXIs
ICJjYW52YXNBY3Rpdml0eVJlY29yZCJfcywgY2FudmFzQWN0aXZpdHlSZWNvcmQpOworICAgICAg
ICBkZWNvZGVPcHRpb25TZXQoZGVjb2RlciwgIm5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkQml0
TWFzayJfcywgbmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWQpOworICAgICAgICBkZWNvZGVPcHRp
b25TZXQoZGVjb2RlciwgInNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkQml0TWFzayJfcywgc2NyZWVu
RnVuY3Rpb25zQWNjZXNzZWQpOwogICAgIH0KICNlbmRpZgogCkBAIC00NTAsNDggKzQ1MCw0OCBA
QCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcoKSBjb25zdAogICAgIGJ1
aWxkZXIuYXBwZW5kKCJSZWdpc3RyYWJsZSBkb21haW46ICIsIHJlZ2lzdHJhYmxlRG9tYWluLnN0
cmluZygpLCAnXG4nKTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KLSAgICBhcHBlbmRCb29s
ZWFuKGJ1aWxkZXIsICJoYWRVc2VySW50ZXJhY3Rpb24iLCBoYWRVc2VySW50ZXJhY3Rpb24pOwor
ICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImhhZFVzZXJJbnRlcmFjdGlvbiJfcywgaGFkVXNl
ckludGVyYWN0aW9uKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBidWlsZGVyLmFw
cGVuZCgiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICIsIGhhc0hhZFJlY2VudFVzZXJJ
bnRlcmFjdGlvbihtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2luY2VFcG9j
aCgpKSA/ICJ3aXRoaW4gMjQgaG91cnMiIDogIi0xIik7CisgICAgYnVpbGRlci5hcHBlbmQoIiAg
ICBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uOiAiX3MsIGhhc0hhZFJlY2VudFVzZXJJbnRlcmFj
dGlvbihtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2luY2VFcG9jaCgpKSA/
ICJ3aXRoaW4gMjQgaG91cnMiIDogIi0xIik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0g
ICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCIsIGdyYW5kZmF0aGVyZWQp
OworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImdyYW5kZmF0aGVyZWQiX3MsIGdyYW5kZmF0
aGVyZWQpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCiAgICAgLy8gU3RvcmFnZSBhY2Nl
c3MKLSAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFt
ZURvbWFpbnMiLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOworICAgIGFwcGVu
ZEhhc2hTZXQoYnVpbGRlciwgInN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyJfcywg
c3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zKTsKIAogICAgIC8vIFRvcCBmcmFtZSBz
dGF0cwotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
VG8iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKTsKLSAgICBhcHBlbmRIYXNoU2V0KGJ1aWxk
ZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c0Zyb20pOwotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1lTGlua0RlY29yYXRp
b25zRnJvbSIsIHRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSk7Ci0gICAgYXBwZW5kQm9vbGVh
bihidWlsZGVyLCAiZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2UiLCBnb3RM
aW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSk7CisgICAgYXBwZW5kSGFzaFNldChi
dWlsZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcywgdG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNUbyk7CisgICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNGcm9tIl9zLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOworICAgIGFwcGVuZEhh
c2hTZXQoYnVpbGRlciwgInRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSJfcywgdG9wRnJhbWVM
aW5rRGVjb3JhdGlvbnNGcm9tKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJnb3RMaW5r
RGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSJfcywgZ290TGlua0RlY29yYXRpb25Gcm9t
UHJldmFsZW50UmVzb3VyY2UpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGFwcGVu
ZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiLCB0b3BG
cmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzKTsKKyAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIs
ICJ0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIl9zLCB0b3BGcmFtZUxvYWRlZFRoaXJk
UGFydHlTY3JpcHRzKTsKIAogICAgIC8vIFN1YmZyYW1lIHN0YXRzCi0gICAgYXBwZW5kSGFzaFNl
dChidWlsZGVyLCAic3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyIsIHN1YmZyYW1lVW5kZXJU
b3BGcmFtZURvbWFpbnMpOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInN1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbnMiX3MsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogICAg
IAogICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCi0gICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAi
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyIsIHN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMpOwotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzVG8iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKLSAgICBhcHBlbmRI
YXNoU2V0KGJ1aWxkZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCBzdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIHN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMpOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzVG8iX3MsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8pOworICAgIGFwcGVu
ZEhhc2hTZXQoYnVpbGRlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKTsKIAogICAgIC8vIFByZXZhbGVudCBSZXNvdXJj
ZQotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFsZW50UmVzb3VyY2UiLCBpc1By
ZXZhbGVudFJlc291cmNlKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ByZXZhbGVu
dFJlc291cmNlIl9zLCBpc1ByZXZhbGVudFJlc291cmNlKTsKICAgICBidWlsZGVyLmFwcGVuZCgn
XG4nKTsKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZSIsIGlzVmVyeVByZXZhbGVudFJlc291cmNlKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIs
ICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSJfcywgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpOwog
ICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgZGF0YVJl
Y29yZHNSZW1vdmVkOiAiLCBkYXRhUmVjb3Jkc1JlbW92ZWQpOwogICAgIGJ1aWxkZXIuYXBwZW5k
KCdcbicpOwogCiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKLSAgICBhcHBlbmRIYXNo
U2V0KGJ1aWxkZXIsICJmb250c0ZhaWxlZFRvTG9hZCIsIGZvbnRzRmFpbGVkVG9Mb2FkKTsKLSAg
ICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCIsIGZvbnRz
U3VjY2Vzc2Z1bGx5TG9hZGVkKTsKLSAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJ0b3BGcmFt
ZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzIiwgdG9wRnJhbWVSZWdpc3Ry
YWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyk7CisgICAgYXBwZW5kSGFzaFNldChidWls
ZGVyLCAiZm9udHNGYWlsZWRUb0xvYWQiX3MsIGZvbnRzRmFpbGVkVG9Mb2FkKTsKKyAgICBhcHBl
bmRIYXNoU2V0KGJ1aWxkZXIsICJmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCJfcywgZm9udHNTdWNj
ZXNzZnVsbHlMb2FkZWQpOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1lUmVn
aXN0cmFibGVEb21haW5zV2hpY2hBY2Nlc3NlZFdlYkFQSXMiX3MsIHRvcEZyYW1lUmVnaXN0cmFi
bGVEb21haW5zV2hpY2hBY2Nlc3NlZFdlYkFQSXMpOwogICAgIGFwcGVuZE5hdmlnYXRvckFQSU9w
dGlvblNldChidWlsZGVyLCBuYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZCk7CiAgICAgYXBwZW5k
U2NyZWVuQVBJT3B0aW9uU2V0KGJ1aWxkZXIsIHNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkKTsKLSAg
ICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJjYW52YXNUZXh0V3JpdHRlbiIsIGNhbnZhc0FjdGl2
aXR5UmVjb3JkLnRleHRXcml0dGVuKTsKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJjYW52
YXNSZWFkRGF0YSIsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLndhc0RhdGFSZWFkKTsKKyAgICBhcHBl
bmRIYXNoU2V0KGJ1aWxkZXIsICJjYW52YXNUZXh0V3JpdHRlbiJfcywgY2FudmFzQWN0aXZpdHlS
ZWNvcmQudGV4dFdyaXR0ZW4pOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImNhbnZhc1Jl
YWREYXRhIl9zLCBjYW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCk7CiAgICAgYnVpbGRl
ci5hcHBlbmQoJ1xuJyk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDYxOTA4MzU0OWY5MmQyOTlm
ODUyZjA4MTZmZDk1Yjc3MWU5NDIxYmMuLjQ1ZWQyMTUyMGYwMmVhOWZmY2YyZGE0NGNhMTI1MGIx
YmNlODUyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
MjQxLDcgKzI0MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGlmIChpc1BERkpTUmVzb3VyY2VMb2FkKCkpIHsKLSAgICAgICAgQnVu
ZGxlUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZUZyb21CdW5kbGUoKnRoaXMsICJwZGZqcy8i
KTsKKyAgICAgICAgQnVuZGxlUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZUZyb21CdW5kbGUo
KnRoaXMsICJwZGZqcy8iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC0z
MDEsNyArMzAxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoIWRlY29kZVJlc3VsdCkgewogICAgICAgICAgICAg
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImxvYWREYXRhVVJMOiBkZWNvZGluZyBvZiBkYXRh
IGZhaWxlZCIpOwotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkRmFpbChSZXNvdXJjZUVy
cm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIkRhdGEgVVJMIGRlY29kaW5n
IGZhaWxlZCIpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEZhaWwoUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJEYXRhIFVSTCBkZWNvZGlu
ZyBmYWlsZWQiX3MpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBp
ZiAodGhpcy0+d2FzQ2FuY2VsbGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TZXJ2ZXJUaW1pbmdQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZl
clRpbWluZ1BhcnNlci5jcHAKaW5kZXggMDFiZDA1NzNlM2FiNjA5MWUwYzI5MDY2OTk4NGFhZWMy
YmQzMzc1Ni4uZmIyNDUzNjk2OWNkZGJmYjNjMGE1YTE4MWY4YzE4NWRmNGU4NDIxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZ1BhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZ1BhcnNlci5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgVmVjdG9yPFNlcnZlclRpbWluZz4gcGFyc2VTZXJ2ZXJUaW1pbmcoY29uc3QgU3RyaW5n
JiBoZWFkZXJWYWx1ZSkKICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJOYW1lLmlzTnVsbCgpKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSAiIjsK
KyAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICBp
ZiAodG9rZW5pemVyLmNvbnN1bWUoJz0nKSkgewogICAgICAgICAgICAgICAgIHZhbHVlID0gdG9r
ZW5pemVyLmNvbnN1bWVUb2tlbk9yUXVvdGVkU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgdG9r
ZW5pemVyLmNvbnN1bWVCZWZvcmVBbnlDaGFyTWF0Y2goeycsJywgJzsnfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3ZWZjZWNjNDkzZjhiNDE0
ODk3NzI2NTUxOTRkNmJhY2YzMTY0ZmMxLi42NTA4Y2NjOTUzMjg1NzNiYmY4MTJiNjFhM2M5ZTg5
Yzc3NTk3ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbQogICAgIENvbXBs
ZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUo
cG9saWN5Q29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIGlmIChyZXNwb25zZS5jb250YWluc0lu
dmFsaWRIVFRQSGVhZGVycygpKSB7Ci0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0KCkudXJsKCksICJSZXNwb25zZSBjb250
YWluZWQgaW52YWxpZCBIVFRQIGhlYWRlcnMiLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFs
KSk7CisgICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCByZXF1ZXN0KCkudXJsKCksICJSZXNwb25zZSBjb250YWluZWQgaW52YWxpZCBIVFRQ
IGhlYWRlcnMiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNv
dXJjZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29k
ZXIuY3BwCmluZGV4IDU2ZGJjNGUyOTAzZTJlYmMyMGQ2MzQzMzczMDQ0ZDA0ZjYxYjY0MjUuLjA2
MTI4YjZhM2EzYzM3MzFlMWZiNzE2OWQ0ZTlmMTUzMWVjOGQ5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkUHJlcGVuZEJPTShjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAvLyBodHRwczovL2VuY29kaW5nLnNwZWMud2hhdHdnLm9y
Zy8jdXRmLTgtZGVjb2RlCiBTdHJpbmcgVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICBhdXRv
IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCAiVVRG
LTgiKTsKKyAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRl
eHQvcGxhaW4iX3MsICJVVEYtOCIpOwogICAgIGlmIChzaG91bGRQcmVwZW5kQk9NKGRhdGEsIGxl
bmd0aCkpCiAgICAgICAgIGRlY29kZXItPmRlY29kZSgiXHhlZlx4YmJceGJmIiwgMyk7CiAgICAg
cmV0dXJuIGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmlu
ZGV4IDA3MzI0ZGQxZTAwY2EyM2UzZGUzMDg1YTI3MGY4ZWIzNTE3NWE1OWMuLmRmMDQ2MmNmMzk0
NzNiMDY3ODYzNzgxYjNlMGIyZGEzYTE3MGE3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC01MTIsNyArNTEy
LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywgRnIKICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxs
KCkpCiAgICAgICAgIHJlc3BvbnNlVVJMID0gVVJMKHsgfSwgZW1wdHlTdHJpbmcoKSk7CiAKLSAg
ICBhdXRvIG1haW5SZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIo
bWFya3VwU3RyaW5nKSwgcmVzcG9uc2VVUkwsIHJlc3BvbnNlLm1pbWVUeXBlKCksICJVVEYtOCIs
IGZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCkpOworICAgIGF1dG8gbWFpblJlc291cmNlID0gQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihtYXJrdXBTdHJpbmcpLCByZXNwb25zZVVS
TCwgcmVzcG9uc2UubWltZVR5cGUoKSwgIlVURi04Il9zLCBmcmFtZS50cmVlKCkudW5pcXVlTmFt
ZSgpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
QEAgLTYwOCw3ICs2MDgsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgLy8gV3JhcCB0aGUg
ZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwog
ICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVz
ZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFt
ZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRo
PVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsK
LSAgICBhdXRvIGlmcmFtZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1
ZmZlcihpZnJhbWVNYXJrdXApLCBhYm91dEJsYW5rVVJMKCksICJ0ZXh0L2h0bWwiLCAiVVRGLTgi
LCBTdHJpbmcoKSk7CisgICAgYXV0byBpZnJhbWVSZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6
Y3JlYXRlKHV0ZjhCdWZmZXIoaWZyYW1lTWFya3VwKSwgYWJvdXRCbGFua1VSTCgpLCAidGV4dC9o
dG1sIl9zLCAiVVRGLTgiX3MsIFN0cmluZygpKTsKIAogICAgIHJldHVybiBjcmVhdGUoaWZyYW1l
UmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgeyB9LCB7IGFyY2hpdmUucmVsZWFzZU5vbk51bGwo
KSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCBlOTlmYTVmY2IyYjcyYjA0M2Y4Njg5OTU0
ODA4NmVlMGEwYmUzZDIyLi5hZDIxMDBkYmE1ZGU1ODNiYTQzNDY2M2MwNGY4MDE4MzA2NjJhYWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IENvb2tpZUphciogY29va2llSmFyKQogICAgIDogQ2FjaGVkUmVzb3VyY2UoV1RG
TW92ZShyZXF1ZXN0KSwgVHlwZTo6QXBwbGljYXRpb25NYW5pZmVzdCwgc2Vzc2lvbklELCBjb29r
aWVKYXIpCi0gICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBs
aWNhdGlvbi9tYW5pZmVzdCtqc29uIiwgUEFMOjpVVEY4RW5jb2RpbmcoKSkpCisgICAgLCBtX2Rl
Y29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi9tYW5pZmVzdCtq
c29uIl9zLCBQQUw6OlVURjhFbmNvZGluZygpKSkKIHsKIH0KIApAQCAtNjEsNyArNjEsNyBAQCB2
b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OnNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYg
Y2hzKQogCiBTdHJpbmcgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZW5jb2RpbmcoKSBjb25z
dAogewotICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOworICAgIHJldHVy
biBTdHJpbmcgeyBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpIH07CiB9CiAKIHN0ZDo6b3B0
aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6cHJv
Y2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1
bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNzBiMzhmNjFmYzBmZjBlYjYyMzJiNDcwMWZmYjY4
OWIwZTYxODY2ZS4uNjNlYzRkNjI3OTkzNzMzYWZiMWU0MTU5MzFkMGQ1Yzk1N2U3MDdmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZENTU1N0
eWxlU2hlZXQ6OkNhY2hlZENTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXIqIGNvb2tpZUph
cikKICAgICA6IENhY2hlZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFR5cGU6OkNTU1N0eWxl
U2hlZXQsIHNlc3Npb25JRCwgY29va2llSmFyKQotICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZSgidGV4dC9jc3MiLCByZXF1ZXN0LmNoYXJzZXQoKSkpCisgICAgLCBt
X2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2NzcyJfcywgcmVxdWVz
dC5jaGFyc2V0KCkpKQogewogfQogCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5
bGVTaGVldDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAg
Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudChjbGllbnQpOwogCiAgICAgaWYgKCFpc0xvYWRp
bmcoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkU3R5bGVTaGVldENsaWVudCY+KGNsaWVu
dCkuc2V0Q1NTU3R5bGVTaGVldChtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgbV9y
ZXNwb25zZS51cmwoKSwgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSwgdGhpcyk7CisgICAg
ICAgIHN0YXRpY19jYXN0PENhY2hlZFN0eWxlU2hlZXRDbGllbnQmPihjbGllbnQpLnNldENTU1N0
eWxlU2hlZXQobV9yZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCksIG1fcmVzcG9uc2UudXJs
KCksIFN0cmluZyB7IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkgfSwgdGhpcyk7CiB9CiAK
IHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBjaHMp
CkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJiBjaHMpCiAKIFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjplbmNvZGlu
ZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkgfTsKIH0KIAog
Y29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNr
SGludCBtaW1lVHlwZUNoZWNrSGludCwgYm9vbCogaGFzVmFsaWRNSU1FVHlwZSkgY29uc3QKQEAg
LTEyMiw3ICsxMjIsNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtl
cjxDYWNoZWRTdHlsZVNoZWV0Q2xpZW50PiB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hl
ZFN0eWxlU2hlZXRDbGllbnQqIGMgPSB3Lm5leHQoKSkKLSAgICAgICAgYy0+c2V0Q1NTU3R5bGVT
aGVldChtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgbV9yZXNwb25zZS51cmwoKSwg
bV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSwgdGhpcyk7CisgICAgICAgIGMtPnNldENTU1N0
eWxlU2hlZXQobV9yZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCksIG1fcmVzcG9uc2UudXJs
KCksIFN0cmluZyB7IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkgfSwgdGhpcyk7CiB9CiAK
IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpyZXNwb25zZU1JTUVUeXBlKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGJi
YzFiMzA1OTUyN2Y0YjVjMGYwYzRlOTY2ZDljZDQ4ZGQyODdhZjEuLjczYmVhNmQ0Y2U3YjM4Yjcw
YjUwZDIyZDAxOTljMTNkNmE0YzExYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyKQog
ICAgIH0KIAogICAgIGlmICh0eXBlKCkgPT0gVHlwZTo6TGlua1ByZWZldGNoKQotICAgICAgICBt
X3Jlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlB1cnBv
c2UsICJwcmVmZXRjaCIpOworICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OlB1cnBvc2UsICJwcmVmZXRjaCJfcyk7CiAgICAgbV9yZXNv
dXJjZVJlcXVlc3Quc2V0UHJpb3JpdHkobG9hZFByaW9yaXR5KCkpOwogCiAgICAgLy8gTmF2aWdh
dGlvbiBhbGdvcml0aG0gaXMgc2V0dGluZyB1cCB0aGUgcmVxdWVzdCBiZWZvcmUgc2VuZGluZyBp
dCB0byBDYWNoZWRSZXNvdXJjZUxvYWRlcj9DYWNoZWRSZXNvdXJjZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IGRiNDMxNjA3
YWU1NjM4MzAzODAwZGQyNTljMTAzNGNkMDkwZmNmZTEuLmUzM2Y3Nzk0MGVhYjA4MmJmYjExYTg0
MjExNjRkOWZhNDc5ZDE3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIENhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tp
ZUphciogY29va2llSmFyLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgOiBDYWNoZWRS
ZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBUeXBlOjpTVkdEb2N1bWVudFJlc291cmNlLCBzZXNz
aW9uSUQsIGNvb2tpZUphcikKLSAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpj
cmVhdGUoImFwcGxpY2F0aW9uL3htbCIpKQorICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIl9zKSkKICAgICAsIG1fc2V0dGluZ3Moc2V0
dGluZ3MpCiB7CiB9CkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OnNl
dEVuY29kaW5nKGNvbnN0IFN0cmluZyYgY2hzKQogCiBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6
OmVuY29kaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5h
bWUoKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSB9
OwogfQogCiB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRl
eCBkMmMxZGU0N2VmYjc4MTM5OGY0NDM4YjdjYTRlYTI2MGUyMjE5NzY3Li5lMmRiYjRjNjgzY2Iy
NzQ1ZDcyYTY4OWNjZjY2YjA2ZDJmMGM5MDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgQ2FjaGVkU1ZH
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQog
ICAgICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIGR1cmluZyByZW5kZXIgdHJlZSB1cGRhdGVz
IHdoZW4gZXZlbnRzIGFyZSBmb3JiaWRkZW4uCiAgICAgICAgICAgICAvLyBGcmFtZWxlc3MgZG9j
dW1lbnQgY2FuJ3QgcnVuIHNjcmlwdHMgb3IgY2FsbCBiYWNrIHRvIHRoZSBjbGllbnQgc28gdGhp
cyBpcyBzYWZlLgogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gU1ZHRG9jdW1l
bnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCBVUkwoKSk7Ci0gICAgICAgICAgICBhdXRv
IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIp
OworICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRl
KCJhcHBsaWNhdGlvbi94bWwiX3MpOwogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDI1ZDA1OGY3YTZlNmQw
ODYyNzUzNTU5YmZhYTM4MmY0MDMzZjNiODcuLmYyNjFhZmYxYTk0ODI5M2FjMmIyZWEwOWNiOWYz
N2EzNGJmMjAxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHZvaWQgQ2FjaGVkU2NyaXB0OjpzZXRFbmNvZGluZyhj
b25zdCBTdHJpbmcmIGNocykKIAogU3RyaW5nIENhY2hlZFNjcmlwdDo6ZW5jb2RpbmcoKSBjb25z
dAogewotICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOworICAgIHJldHVy
biBTdHJpbmcgeyBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpIH07CiB9CiAKIFN0cmluZ1Zp
ZXcgQ2FjaGVkU2NyaXB0OjpzY3JpcHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IDE3ZWZkNmMzZjZlZDZhYWVjN2Zi
NGE1NWE4Nzc5MTMzOWVjNDk3MGUuLjJjMzAwOTkzZjVkZWQxZjIyNTQ4OWJhMTU2YTY4OWE2M2Fi
NWU4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBD
YWNoZWRYU0xTdHlsZVNoZWV0OjpDYWNoZWRYU0xTdHlsZVNoZWV0KENhY2hlZFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFy
KiBjb29raWVKYXIpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBUeXBl
OjpYU0xTdHlsZVNoZWV0LCBzZXNzaW9uSUQsIGNvb2tpZUphcikKLSAgICAsIG1fZGVjb2RlcihU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQveHNsIikpCisgICAgLCBtX2RlY29kZXIo
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3hzbCJfcykpCiB7CiB9CiAKQEAgLTU4
LDcgKzU4LDcgQEAgdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpzZXRFbmNvZGluZyhjb25zdCBT
dHJpbmcmIGNocykKIAogU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKKyAgICByZXR1
cm4gU3RyaW5nIHsgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSB9OwogfQogCiB2b2lkIENh
Y2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggYjIwMmZlZjY3OTI2ZDFh
ZThjZjRjYTZjMDA4NzRmZTQ1ZWI1YmZhZC4uMDM0NDRiMzk5YzM2ZTU4NjNhNTZjMWRkZWZiYzAw
NjkxZGRiMDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
Y3BwCkBAIC02OCw3ICs2OCw3IEBAIE1lbW9yeUNhY2hlOjpNZW1vcnlDYWNoZSgpCiAKICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZs
YWcsIFtdIHsKLSAgICAgICAgUEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUu
V2ViS2l0LnNob3dNZW1vcnlDYWNoZSIsIFtdIHsKKyAgICAgICAgUEFMOjpyZWdpc3Rlck5vdGlm
eUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dNZW1vcnlDYWNoZSJfcywgW10gewogICAg
ICAgICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmR1bXBTdGF0cygpOwogICAgICAgICAg
ICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmR1bXBMUlVMaXN0cyh0cnVlKTsKICAgICAgICAg
fSk7CkBAIC01NTgsNyArNTU4LDcgQEAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBN
ZW1vcnlDYWNoZTo6b3JpZ2luc1dpdGhDYWNoZShQQUw6OlNlc3Npb25JRCBzZXMKICAgICAgICAg
ICAgIGF1dG8mIHJlc291cmNlID0gKmtleVZhbHVlLnZhbHVlOwogICAgICAgICAgICAgYXV0byYg
cGFydGl0aW9uTmFtZSA9IGtleVZhbHVlLmtleS5zZWNvbmQ7CiAgICAgICAgICAgICBpZiAoIXBh
cnRpdGlvbk5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoImh0dHAiLCBwYXJ0aXRpb25OYW1lLCAwKSk7CisgICAgICAgICAg
ICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0cCJfcywgcGFydGl0
aW9uTmFtZSwgMCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG9yaWdpbnMu
YWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzb3VyY2UudXJsKCkpKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCmluZGV4IDUyMzBhNjhkYjYxNGU2
N2U2NWQxMWE4ZmUxNDRlZjk2NmZjZWVjNmMuLjY3YzA3OGRjZTQyYzM0YjQxZTQ3OGUyNmY4Mzky
NzBhMjJjZmEwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKQEAg
LTExNywxMSArMTE3LDExIEBAIGJvb2wgTWF0aE1MRWxlbWVudDo6aGFzUHJlc2VudGF0aW9uYWxI
aW50c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lCiBzdGF0aWMgU3RyaW5n
IGNvbnZlcnRNYXRoU2l6ZUlmTmVlZGVkKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAg
IGlmICh2YWx1ZSA9PSAic21hbGwiKQotICAgICAgICByZXR1cm4gIjAuNzVlbSI7CisgICAgICAg
IHJldHVybiAiMC43NWVtIl9zOwogICAgIGlmICh2YWx1ZSA9PSAibm9ybWFsIikKLSAgICAgICAg
cmV0dXJuICIxZW0iOworICAgICAgICByZXR1cm4gIjFlbSJfczsKICAgICBpZiAodmFsdWUgPT0g
ImJpZyIpCi0gICAgICAgIHJldHVybiAiMS41ZW0iOworICAgICAgICByZXR1cm4gIjEuNWVtIl9z
OwogCiAgICAgLy8gRklYTUU6IG1hdGhzaXplIGFjY2VwdHMgYW55IE1hdGhNTCBsZW5ndGgsIGlu
Y2x1ZGluZyBuYW1lZCBzcGFjZXMgKHNlZSBwYXJzZU1hdGhNTExlbmd0aCkuCiAgICAgLy8gRklY
TUU6IE1pZ2h0IGJlIGJldHRlciB0byB1c2UgZG91YmxlIHRoYW4gZmxvYXQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCmlu
ZGV4IDBlZmZhNjNmM2NmNGNlZjc3Y2ExMDM3ZTkyOWM2ZDUzNjM1MTNjMDcuLmE3NWY3MGNlNWIy
OTdmOGFlNmE4YzE1NDU1MzNiN2I3MTI5ODFmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCkBAIC00NzcsNyArNDc3
LDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1RleHRF
ZGdlQ1NTKCkgY29uc3QKICAgICAgICAgYXBwZW5kQ1NTKGJ1aWxkZXIsIENTU1Byb3BlcnR5VGV4
dFNoYWRvdywgbWFrZVN0cmluZyhlZGdlU3R5bGVEcm9wU2hhZG93LmdldCgpLCAiIGJsYWNrIiks
IGltcG9ydGFudCk7CiAKICAgICBpZiAodGV4dEVkZ2VTdHlsZSA9PSBrTUFDYXB0aW9uQXBwZWFy
YW5jZVRleHRFZGdlU3R5bGVEcm9wU2hhZG93IHx8IHRleHRFZGdlU3R5bGUgPT0ga01BQ2FwdGlv
bkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlVW5pZm9ybSkgewotICAgICAgICBhcHBlbmRDU1MoYnVp
bGRlciwgQ1NTUHJvcGVydHlTdHJva2VDb2xvciwgImJsYWNrIiwgaW1wb3J0YW50KTsKKyAgICAg
ICAgYXBwZW5kQ1NTKGJ1aWxkZXIsIENTU1Byb3BlcnR5U3Ryb2tlQ29sb3IsICJibGFjayJfcywg
aW1wb3J0YW50KTsKICAgICAgICAgYXBwZW5kQ1NTKGJ1aWxkZXIsIENTU1Byb3BlcnR5UGFpbnRP
cmRlciwgZ2V0VmFsdWVOYW1lKENTU1ZhbHVlU3Ryb2tlKSwgaW1wb3J0YW50KTsKICAgICAgICAg
YXBwZW5kQ1NTKGJ1aWxkZXIsIENTU1Byb3BlcnR5U3Ryb2tlTGluZWpvaW4sIGdldFZhbHVlTmFt
ZShDU1NWYWx1ZVJvdW5kKSwgaW1wb3J0YW50KTsKICAgICAgICAgYXBwZW5kQ1NTKGJ1aWxkZXIs
IENTU1Byb3BlcnR5U3Ryb2tlTGluZWNhcCwgZ2V0VmFsdWVOYW1lKENTU1ZhbHVlUm91bmQpLCBp
bXBvcnRhbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IGRhNzVjZTAxOTc1NGY2Yjc4NDM4
OGVmYTQxNTZiODZiZmJmODU3MTUuLjdiNWFlYmI5YmNmMzg5NDdiYjYyZWQ5ZmRjYzUwMjliMDU2
Yjk4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTQwOCw3ICs0MDgsNyBAQCBib29sIENo
cm9tZTo6cHJpbnQoRnJhbWUmIGZyYW1lKQogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBoYXZl
IFBhZ2VHcm91cExvYWREZWZlcnJlciwgbGlrZSBydW5Nb2RhbCgpIG9yIHJ1bkphdmFTY3JpcHRB
bGVydCgpLCBiZWNhdXNlIGl0J3Mgbm8gZGlmZmVyZW50IGZyb20gdGhvc2UuCiAKICAgICBpZiAo
ZnJhbWUuZG9jdW1lbnQoKS0+aXNTYW5kYm94ZWQoU2FuZGJveE1vZGFscykpIHsKLSAgICAgICAg
ZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Yg
d2luZG93LnByaW50IGlzIG5vdCBhbGxvd2VkIGluIGEgc2FuZGJveGVkIGZyYW1lIHdoZW4gdGhl
IGFsbG93LW1vZGFscyBmbGFnIGlzIG5vdCBzZXQuIik7CisgICAgICAgIGZyYW1lLmRvY3VtZW50
KCktPmRvbVdpbmRvdygpLT5wcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5wcmludCBp
cyBub3QgYWxsb3dlZCBpbiBhIHNhbmRib3hlZCBmcmFtZSB3aGVuIHRoZSBhbGxvdy1tb2RhbHMg
ZmxhZyBpcyBub3Qgc2V0LiJfcyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCAxNGIx
ZTM3YmRjNjUxZmUzN2U2M2RkOGFiODgxNjRkOGIyMmJjNzVkLi5lOTI4Y2U5YTE0ZmFiZmVlZWZk
NDkwOWVkZDFjMGRiOWE0Y2ZmMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMTUsMTAgKzMxNSwxMCBAQCB2b2lkIENvbnRleHRNZW51
Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rpb24gYWN0
aW9uLCBjbwogICAgICAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2FkKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ3V0OgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiQ3V0Il9zKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0
ZSIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9z
KS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1Bhc3RlQXNQbGFpblRleHQ6CkBAIC00MTIsMTAgKzQxMiwxMCBA
QCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29u
dGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjbwogICAgICAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2Nv
bnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCAqZnJhbWUsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93KTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdCb2xkOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiVG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNv
bW1hbmQoIlRvZ2dsZUJvbGQiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21t
YW5kKCJUb2dnbGVJdGFsaWMiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJUb2dnbGVJdGFsaWMiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6CiAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS50b2dnbGVVbmRlcmxpbmUoKTsKQEAgLTQ0NCwxMyArNDQ0LDEzIEBAIHZvaWQgQ29udGV4dE1l
bnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBh
Y3Rpb24sIGNvCiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihXcml0aW5nRGlyZWN0aW9uOjpSaWdodFRvTGVmdCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQ6Ci0gICAgICAgIGZyYW1l
LT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIikuZXhl
Y3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5n
RGlyZWN0aW9uTmF0dXJhbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDoKLSAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0
IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRX
cml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ6Ci0g
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25S
aWdodFRvTGVmdCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
Ik1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0Il9zKS5leGVjdXRlKCk7CiAgICAg
ICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnU2VhcmNoSW5TcG90bGlnaHQ6CkBAIC0xMjQ4LDI1ICsxMjQ4LDI1IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBp
dGVtKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnTGVmdFRvUmlnaHQ6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUmlnaHRU
b0xlZnQ6IHsKLSAgICAgICAgICAgIFN0cmluZyBkaXJlY3Rpb24gPSBpdGVtLmFjdGlvbigpID09
IENvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIjsKKyAgICAgICAg
ICAgIFN0cmluZyBkaXJlY3Rpb24gPSBpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRh
Z0xlZnRUb1JpZ2h0ID8gImx0ciJfcyA6ICJydGwiX3M7CiAgICAgICAgICAgICBzaG91bGRDaGVj
ayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURpcmVjdGlv
biwgZGlyZWN0aW9uKSAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAgICAgICBzaG91bGRFbmFi
bGUgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdDogewotICAgICAgICAgICAgRWRp
dG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRX
cml0aW5nRGlyZWN0aW9uTmF0dXJhbCIpOworICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNv
bW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9u
TmF0dXJhbCJfcyk7CiAgICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9
PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGNvbW1hbmQuaXNF
bmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDogewotICAgICAgICAgICAg
RWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQiKTsKKyAgICAgICAgICAgIEVkaXRvcjo6Q29t
bWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0Rp
cmVjdGlvbkxlZnRUb1JpZ2h0Il9zKTsKICAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29tbWFu
ZC5zdGF0ZSgpID09IFRyaVN0YXRlOjpUcnVlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0g
Y29tbWFuZC5pc0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0OiB7Ci0g
ICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21t
YW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpOworICAgICAgICAgICAg
RWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQiX3MpOwogICAgICAgICAgICAgc2hvdWxkQ2hl
Y2sgPSBjb21tYW5kLnN0YXRlKCkgPT0gVHJpU3RhdGU6OlRydWU7CiAgICAgICAgICAgICBzaG91
bGRFbmFibGUgPSBjb21tYW5kLmlzRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
MzExLDcgKzEzMTEsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJs
ZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QKICAgICAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lOiB7Ci0g
ICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHls
ZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIikg
IT0gVHJpU3RhdGU6OkZhbHNlOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCwgInVuZGVybGluZSJfcykgIT0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAgICAg
c2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMzI0LDEyICsxMzI0LDEyIEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBp
dGVtKSBjb25zdAogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gdHJ1ZTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0l0YWxpYzogewotICAgICAg
ICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NT
UHJvcGVydHlGb250U3R5bGUsICJpdGFsaWMiKSAhPSBUcmlTdGF0ZTo6RmFsc2U7CisgICAgICAg
ICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQ
cm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyJfcykgIT0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAg
ICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnQm9sZDogewotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2Vs
ZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpICE9IFRyaVN0YXRl
OjpGYWxzZTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVj
dGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiX3MpICE9IFRyaVN0YXRl
OjpGYWxzZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5F
ZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01TZWxlY3Rpb24uY3BwCmluZGV4IDZiMDZhYWEyMzUyNzg0Yjg1ZWNkYmM2NzFiMGEwZDQz
YTI4MWYzNGYuLjZlYTBjMzQ5NWFiNmNjNTQzZjliZmU2NTdjZjExMmZiOGQwMTQ5ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKQEAgLTM0MCw3ICszNDAsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBET01TZWxlY3Rpb246OmV4dGVuZChOb2RlJiBub2RlLCB1bnNpZ25lZCBvZmZz
ZXQpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgCiAgICAgaWYgKHJhbmdlQ291bnQoKSA8IDEp
Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgImV4dGVuZCgp
IHJlcXVpcmVzIGEgUmFuZ2UgdG8gYmUgYWRkZWQgdG8gdGhlIFNlbGVjdGlvbiIgfTsKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiZXh0ZW5kKCkgcmVxdWly
ZXMgYSBSYW5nZSB0byBiZSBhZGRlZCB0byB0aGUgU2VsZWN0aW9uIl9zIH07CiAKICAgICBpZiAo
ZnJhbWUtPnNldHRpbmdzKCkubGl2ZVJhbmdlU2VsZWN0aW9uRW5hYmxlZCgpKSB7CiAgICAgICAg
IGlmICghZnJhbWUtPmRvY3VtZW50KCktPmNvbnRhaW5zKG5vZGUpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCmluZGV4IDU0NmI0YTRkZGVlYmRiYzNkNTgyM2IwYjI3OTcyZDY2N2JjNzIxMGYu
LmRkM2NjZGJiZDEzNDVmYWI5MjJmOWZmMzYwZTJhOGVhYjk2ZmJmYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKQEAgLTEwOTQsNyArMTA5NCw3IEBAIHZvaWQgRE9NV2luZG93Ojpwcmlu
dCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghcGFnZS0+YXJlUHJvbXB0c0FsbG93ZWQo
KSkgewotICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5wcmludCBpcyBu
b3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRpbmcgYSBwYWdlLiIpOworICAgICAgICBwcmludEVycm9y
TWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5wcmludCBpcyBub3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRp
bmcgYSBwYWdlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMjgsNyArMTEy
OCw3IEBAIHZvaWQgRE9NV2luZG93OjphbGVydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKICAg
ICBSZWZQdHIgZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgIGlmIChkb2N1bWVudC0+
aXNTYW5kYm94ZWQoU2FuZGJveE1vZGFscykpIHsKLSAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2Uo
IlVzZSBvZiB3aW5kb3cuYWxlcnQgaXMgbm90IGFsbG93ZWQgaW4gYSBzYW5kYm94ZWQgZnJhbWUg
d2hlbiB0aGUgYWxsb3ctbW9kYWxzIGZsYWcgaXMgbm90IHNldC4iKTsKKyAgICAgICAgcHJpbnRF
cnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cuYWxlcnQgaXMgbm90IGFsbG93ZWQgaW4gYSBzYW5k
Ym94ZWQgZnJhbWUgd2hlbiB0aGUgYWxsb3ctbW9kYWxzIGZsYWcgaXMgbm90IHNldC4iX3MpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTM3LDcgKzExMzcsNyBAQCB2b2lkIERPTVdp
bmRvdzo6YWxlcnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoIXBhZ2UtPmFyZVByb21wdHNBbGxvd2VkKCkpIHsKLSAgICAgICAgcHJpbnRFcnJvck1l
c3NhZ2UoIlVzZSBvZiB3aW5kb3cuYWxlcnQgaXMgbm90IGFsbG93ZWQgd2hpbGUgdW5sb2FkaW5n
IGEgcGFnZS4iKTsKKyAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cuYWxl
cnQgaXMgbm90IGFsbG93ZWQgd2hpbGUgdW5sb2FkaW5nIGEgcGFnZS4iX3MpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xMTU3LDcgKzExNTcsNyBAQCBib29sIERPTVdpbmRvdzo6Y29u
ZmlybUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogICAgIFJlZlB0ciBkb2N1
bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgaWYgKGRvY3VtZW50LT5pc1NhbmRib3hlZChT
YW5kYm94TW9kYWxzKSkgewotICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRv
dy5jb25maXJtIGlzIG5vdCBhbGxvd2VkIGluIGEgc2FuZGJveGVkIGZyYW1lIHdoZW4gdGhlIGFs
bG93LW1vZGFscyBmbGFnIGlzIG5vdCBzZXQuIik7CisgICAgICAgIHByaW50RXJyb3JNZXNzYWdl
KCJVc2Ugb2Ygd2luZG93LmNvbmZpcm0gaXMgbm90IGFsbG93ZWQgaW4gYSBzYW5kYm94ZWQgZnJh
bWUgd2hlbiB0aGUgYWxsb3ctbW9kYWxzIGZsYWcgaXMgbm90IHNldC4iX3MpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTY2LDcgKzExNjYsNyBAQCBib29sIERPTVdpbmRv
dzo6Y29uZmlybUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKCFwYWdlLT5hcmVQcm9tcHRzQWxsb3dlZCgpKSB7Ci0gICAg
ICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LmNvbmZpcm0gaXMgbm90IGFsbG93
ZWQgd2hpbGUgdW5sb2FkaW5nIGEgcGFnZS4iKTsKKyAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2Uo
IlVzZSBvZiB3aW5kb3cuY29uZmlybSBpcyBub3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRpbmcgYSBw
YWdlLiJfcyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTExODYsNyArMTE4
Niw3IEBAIFN0cmluZyBET01XaW5kb3c6OnByb21wdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlKQogCiAgICAgUmVmUHRyIGRvY3VtZW50ID0gdGhpcy0+
ZG9jdW1lbnQoKTsKICAgICBpZiAoZG9jdW1lbnQtPmlzU2FuZGJveGVkKFNhbmRib3hNb2RhbHMp
KSB7Ci0gICAgICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LnByb21wdCBpcyBu
b3QgYWxsb3dlZCBpbiBhIHNhbmRib3hlZCBmcmFtZSB3aGVuIHRoZSBhbGxvdy1tb2RhbHMgZmxh
ZyBpcyBub3Qgc2V0LiIpOworICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRv
dy5wcm9tcHQgaXMgbm90IGFsbG93ZWQgaW4gYSBzYW5kYm94ZWQgZnJhbWUgd2hlbiB0aGUgYWxs
b3ctbW9kYWxzIGZsYWcgaXMgbm90IHNldC4iX3MpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAgICAgfQogCkBAIC0xMTk1LDcgKzExOTUsNyBAQCBTdHJpbmcgRE9NV2luZG93Ojpwcm9tcHQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKCFwYWdlLT5hcmVQcm9tcHRzQWxsb3dlZCgp
KSB7Ci0gICAgICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LnByb21wdCBpcyBu
b3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRpbmcgYSBwYWdlLiIpOworICAgICAgICBwcmludEVycm9y
TWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5wcm9tcHQgaXMgbm90IGFsbG93ZWQgd2hpbGUgdW5sb2Fk
aW5nIGEgcGFnZS4iX3MpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCkBAIC0y
NjkwLDcgKzI2OTAsNyBAQCB2b2lkIERPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIXBhZ2UtPmFyZVByb21wdHNBbGxvd2VkKCkpIHsKLSAgICAgICAgcHJpbnRF
cnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGlzIG5vdCBhbGxvd2Vk
IHdoaWxlIHVubG9hZGluZyBhIHBhZ2UuIik7CisgICAgICAgIHByaW50RXJyb3JNZXNzYWdlKCJV
c2Ugb2Ygd2luZG93LnNob3dNb2RhbERpYWxvZyBpcyBub3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRp
bmcgYSBwYWdlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAppbmRleCA5OTZlMTgxODIxNjBhZDBmMWY3ZDQ5MDM3MjM3NWYzZWZm
MWZhYzdlLi5kNmJhMmIzMzA3NmFiZjY4ZmRkODlmMzkyZTRlOWI4YTFmZmJmYzFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zNzkyLDExICszNzkyLDExIEBAIHN0YXRp
YyB2b2lkIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnQoRnJhbWUmIGZyYW1lLCBLZXli
b2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBGcmFtZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJh
bWUuc2VsZWN0aW9uKCk7CiAKLSAgICBib29sIGlzQ29tbWFuZGVkID0gZXZlbnQuZ2V0TW9kaWZp
ZXJTdGF0ZSgiTWV0YSIpOwotICAgIGJvb2wgaXNPcHRpb25lZCA9IGV2ZW50LmdldE1vZGlmaWVy
U3RhdGUoIkFsdCIpOworICAgIGJvb2wgaXNDb21tYW5kZWQgPSBldmVudC5nZXRNb2RpZmllclN0
YXRlKCJNZXRhIl9zKTsKKyAgICBib29sIGlzT3B0aW9uZWQgPSBldmVudC5nZXRNb2RpZmllclN0
YXRlKCJBbHQiX3MpOwogICAgIGJvb2wgaXNTZWxlY3Rpb24gPSAhc2VsZWN0aW9uLmlzTm9uZSgp
OwogCi0gICAgRnJhbWVTZWxlY3Rpb246OkVBbHRlcmF0aW9uIGFsdGVybmF0aW9uID0gZXZlbnQu
Z2V0TW9kaWZpZXJTdGF0ZSgiU2hpZnQiKSA/IEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0
ZW5kIDogRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlOworICAgIEZyYW1lU2VsZWN0aW9u
OjpFQWx0ZXJhdGlvbiBhbHRlcm5hdGlvbiA9IGV2ZW50LmdldE1vZGlmaWVyU3RhdGUoIlNoaWZ0
Il9zKSA/IEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kIDogRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25Nb3ZlOwogICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQ7CiAgICAgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50U291cmNlLmNwcAppbmRleCAxMGNkYWNkMGU2YzkwN2RmNDNjYzhjZTUyMGRhZDE3ZWVh
OWE4MDg3Li44ZDdkOWU2NmQ3YmMxZDQyOWFhNWQ3ZmY0NjY4NTA0MDA4YWFjZDRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtOTUsOSArOTUsOSBAQCB2b2lkIEV2ZW50U291
cmNlOjpjb25uZWN0KCkKICAgICBBU1NFUlQoIW1fcmVxdWVzdEluRmxpZ2h0KTsKIAogICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0IHsgbV91cmwgfTsKLSAgICByZXF1ZXN0LnNldEhUVFBNZXRo
b2QoIkdFVCIpOwotICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpBY2NlcHQsICJ0ZXh0L2V2ZW50LXN0cmVhbSIpOwotICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wsICJuby1jYWNoZSIpOworICAgIHJl
cXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJG
aWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXB0LCAidGV4dC9ldmVudC1zdHJlYW0iX3MpOworICAg
IHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2ws
ICJuby1jYWNoZSJfcyk7CiAgICAgaWYgKCFtX2xhc3RFdmVudElkLmlzRW1wdHkoKSkKICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6Okxhc3RFdmVudElE
LCBtX2xhc3RFdmVudElkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA5ZmFmOGFkZjY5YjVj
YzU1YzJiM2FmYTdhYTYxY2UyYmRjMGEwNDdmLi4wNTJjZWQ5N2JlNWY0ZTZmYzQ1ZDFiMjhmZTVi
ZWE0MzM5MmM2NzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIHN0
YXRpYyBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYKICAgICAvLyBSRVZJRVctIHZlcnNpb24gb2YgdGhpcyBjYWxs
IGluIEZyYW1lTWFjLm1tIGNhY2hlcyBiYXNlZCBvbiB0aGUgTlNBcnJheSBwdHJzIGJlaW5nCiAg
ICAgLy8gdGhlIHNhbWUgYWNyb3NzIGNhbGxzLiAgV2UgY2FuJ3QgZG8gdGhhdC4KIAotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiB3b3JkUmVn
RXhwKCJcXHciKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpSZWd1bGFy
RXhwcmVzc2lvbj4gd29yZFJlZ0V4cCgiXFx3Il9zKTsKICAgICBTdHJpbmdCdWlsZGVyIHBhdHRl
cm47CiAgICAgcGF0dGVybi5hcHBlbmQoJygnKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBu
dW1MYWJlbHMgPSBsYWJlbHMuc2l6ZSgpOyBpIDwgbnVtTGFiZWxzOyBpKyspIHsKQEAgLTUwMiw3
ICs1MDIsNyBAQCBzdGF0aWMgU3RyaW5nIG1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBjb25zdCBTdHJpbgogICAgIFN0cmluZyBtdXRhYmxlU3Ry
aW5nVG9NYXRjaCA9IHN0cmluZ1RvTWF0Y2g7CiAKICAgICAvLyBNYWtlIG51bWJlcnMgYW5kIF8n
cyBpbiBmaWVsZCBuYW1lcyBiZWhhdmUgbGlrZSB3b3JkIGJvdW5kYXJpZXMsIGUuZy4sICJhZGRy
ZXNzMiIKLSAgICByZXBsYWNlKG11dGFibGVTdHJpbmdUb01hdGNoLCBKU0M6OllhcnI6OlJlZ3Vs
YXJFeHByZXNzaW9uKCJcXGQiKSwgIiAiKTsKKyAgICByZXBsYWNlKG11dGFibGVTdHJpbmdUb01h
dGNoLCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uKCJcXGQiX3MpLCAiICJfcyk7CiAgICAg
bXV0YWJsZVN0cmluZ1RvTWF0Y2gucmVwbGFjZSgnXycsICcgJyk7CiAgICAgCiAgICAgSlNDOjpZ
YXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdFeHAgPSBjcmVhdGVSZWdFeHBGb3JMYWJlbHMobGFi
ZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBjOWY1ZDQ4ZGNiNDZjODI0Yzgx
ZTI4NjY2M2FmYjcxYTRhNTUyZGI0Li4yM2IzODY1YmQ3N2I4YzQ2OTA4OWJlNGYxYzdmNDM2MTUz
MjVhNTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xNDA2LDcgKzE0MDYsNyBA
QCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0TWVkaWFUeXBlRm9yUHJpbnRpbmcoYm9vbCBwcmludGlu
ZykKICAgICBpZiAocHJpbnRpbmcpIHsKICAgICAgICAgaWYgKG1fbWVkaWFUeXBlV2hlbk5vdFBy
aW50aW5nLmlzTnVsbCgpKQogICAgICAgICAgICAgbV9tZWRpYVR5cGVXaGVuTm90UHJpbnRpbmcg
PSBtZWRpYVR5cGUoKTsKLSAgICAgICAgc2V0TWVkaWFUeXBlKCJwcmludCIpOworICAgICAgICBz
ZXRNZWRpYVR5cGUoInByaW50Il9zKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIW1fbWVk
aWFUeXBlV2hlbk5vdFByaW50aW5nLmlzTnVsbCgpKQogICAgICAgICAgICAgc2V0TWVkaWFUeXBl
KG1fbWVkaWFUeXBlV2hlbk5vdFByaW50aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRl
cnNlY3Rpb25PYnNlcnZlci5jcHAKaW5kZXggNTEwYjllNDE3YzY3MTYyMDU2YWM1ZTE2OTZiYWRl
YzdjYzI2OGUyNS4uZDJhY2FiMjk0NWI2NTUzNzcyNzU1YTdjYWUxOWExZWJjYjZhZTk2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKQEAgLTQ4LDE2
ICs0OCwxNiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8TGVuZ3RoQm94PiBwYXJzZVJvb3RNYXJnaW4o
U3RyaW5nJiByb290TWFyZ2luKQogICAgIFZlY3RvcjxMZW5ndGgsIDQ+IG1hcmdpbnM7CiAgICAg
d2hpbGUgKCF0b2tlblJhbmdlLmF0RW5kKCkpIHsKICAgICAgICAgaWYgKG1hcmdpbnMuc2l6ZSgp
ID09IDQpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJGYWls
ZWQgdG8gY29uc3RydWN0ICdJbnRlcnNlY3Rpb25PYnNlcnZlcic6IEV4dHJhIHRleHQgZm91bmQg
YXQgdGhlIGVuZCBvZiByb290TWFyZ2luLiIgfTsKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTeW50YXhFcnJvciwgIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2VjdGlvbk9ic2Vy
dmVyJzogRXh0cmEgdGV4dCBmb3VuZCBhdCB0aGUgZW5kIG9mIHJvb3RNYXJnaW4uIl9zIH07CiAg
ICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VkVmFsdWUgPSBDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVMZW5ndGhPclBlcmNlbnQodG9rZW5SYW5nZSwgSFRNTFN0
YW5kYXJkTW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSB8
fCBwYXJzZWRWYWx1ZS0+aXNDYWxjdWxhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgU3ludGF4RXJyb3IsICJGYWlsZWQgdG8gY29uc3RydWN0ICdJbnRlcnNlY3Rpb25PYnNl
cnZlcic6IHJvb3RNYXJnaW4gbXVzdCBiZSBzcGVjaWZpZWQgaW4gcGl4ZWxzIG9yIHBlcmNlbnQu
IiB9OworICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiRmFpbGVk
IHRvIGNvbnN0cnVjdCAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInOiByb290TWFyZ2luIG11c3QgYmUg
c3BlY2lmaWVkIGluIHBpeGVscyBvciBwZXJjZW50LiJfcyB9OwogICAgICAgICBpZiAocGFyc2Vk
VmFsdWUtPmlzUGVyY2VudGFnZSgpKQogICAgICAgICAgICAgbWFyZ2lucy5hcHBlbmQoTGVuZ3Ro
KHBhcnNlZFZhbHVlLT5kb3VibGVWYWx1ZSgpLCBMZW5ndGhUeXBlOjpQZXJjZW50KSk7CiAgICAg
ICAgIGVsc2UgaWYgKHBhcnNlZFZhbHVlLT5pc1B4KCkpCiAgICAgICAgICAgICBtYXJnaW5zLmFw
cGVuZChMZW5ndGgocGFyc2VkVmFsdWUtPmludFZhbHVlKCksIExlbmd0aFR5cGU6OkZpeGVkKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJv
ciwgIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2VjdGlvbk9ic2VydmVyJzogcm9vdE1hcmdp
biBtdXN0IGJlIHNwZWNpZmllZCBpbiBwaXhlbHMgb3IgcGVyY2VudC4iIH07CisgICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJGYWlsZWQgdG8gY29uc3RydWN0ICdJ
bnRlcnNlY3Rpb25PYnNlcnZlcic6IHJvb3RNYXJnaW4gbXVzdCBiZSBzcGVjaWZpZWQgaW4gcGl4
ZWxzIG9yIHBlcmNlbnQuIl9zIH07CiAgICAgfQogICAgIHN3aXRjaCAobWFyZ2lucy5zaXplKCkp
IHsKICAgICBjYXNlIDA6CkBAIC0xMDgsNyArMTA4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPEludGVy
c2VjdGlvbk9ic2VydmVyPj4gSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OmNyZWF0ZShEb2N1bWVudCYg
ZG8KIAogICAgIGZvciAoYXV0byB0aHJlc2hvbGQgOiB0aHJlc2hvbGRzKSB7CiAgICAgICAgIGlm
ICghKHRocmVzaG9sZCA+PSAwICYmIHRocmVzaG9sZCA8PSAxKSkKLSAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCAnSW50ZXJzZWN0
aW9uT2JzZXJ2ZXInOiBhbGwgdGhyZXNob2xkcyBtdXN0IGxpZSBpbiB0aGUgcmFuZ2UgWzAuMCwg
MS4wXS4iIH07CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUmFuZ2VFcnJvciwgIkZh
aWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2VjdGlvbk9ic2VydmVyJzogYWxsIHRocmVzaG9sZHMg
bXVzdCBsaWUgaW4gdGhlIHJhbmdlIFswLjAsIDEuMF0uIl9zIH07CiAgICAgfQogCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZG9jdW1lbnQsIFdURk1vdmUo
Y2FsbGJhY2spLCByb290LmdldCgpLCByb290TWFyZ2luT3JFeGNlcHRpb24ucmVsZWFzZVJldHVy
blZhbHVlKCksIFdURk1vdmUodGhyZXNob2xkcykpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTG9nZ2VkSW5TdGF0dXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2dnZWRJ
blN0YXR1cy5jcHAKaW5kZXggNDY3MzhiZDM0MzIyY2RjMWMyOGFkNmY2ZmMzY2JhODNkOTFmOTIz
OC4uNjU3NTI3N2ExYWQyOGNhZGVjOWYwMzFkY2VhODkzYzBlMTcxMTcyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2dnZWRJblN0YXR1cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Mb2dnZWRJblN0YXR1cy5jcHAKQEAgLTQ0LDEwICs0NCwxMCBAQCBFeGNlcHRpb25P
cjxVbmlxdWVSZWY8TG9nZ2VkSW5TdGF0dXM+PiBMb2dnZWRJblN0YXR1czo6Y3JlYXRlKGNvbnN0
IFJlZ2lzdHJhYmxlRAogRXhjZXB0aW9uT3I8VW5pcXVlUmVmPExvZ2dlZEluU3RhdHVzPj4gTG9n
Z2VkSW5TdGF0dXM6OmNyZWF0ZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBjb25z
dCBTdHJpbmcmIHVzZXJuYW1lLCBDcmVkZW50aWFsVG9rZW5UeXBlIHRva2VuVHlwZSwgQXV0aGVu
dGljYXRpb25UeXBlIGF1dGhUeXBlLCBTZWNvbmRzIHRpbWVUb0xpdmUpCiB7CiAgICAgaWYgKGRv
bWFpbi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9y
LCAiSXNMb2dnZWRJbiBzdGF0dXMgY2FuIG9ubHkgYmUgc2V0IGZvciBvcmlnaW5zIHdpdGggYSBy
ZWdpc3RyYWJsZSBkb21haW4uIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJp
dHlFcnJvciwgIklzTG9nZ2VkSW4gc3RhdHVzIGNhbiBvbmx5IGJlIHNldCBmb3Igb3JpZ2lucyB3
aXRoIGEgcmVnaXN0cmFibGUgZG9tYWluLiJfcyB9OwogCiAgICAgaWYgKHVzZXJuYW1lLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiSXNMb2dnZWRJ
biByZXF1aXJlcyBhIG5vbi1lbXB0eSB1c2VybmFtZS4iIH07CisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBTeW50YXhFcnJvciwgIklzTG9nZ2VkSW4gcmVxdWlyZXMgYSBub24tZW1wdHkgdXNl
cm5hbWUuIl9zIH07CiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSB1c2VybmFtZS5sZW5ndGgoKTsK
ICAgICBpZiAobGVuZ3RoID4gVXNlcm5hbWVNYXhMZW5ndGgpCkBAIC01Nyw3ICs1Nyw3IEBAIEV4
Y2VwdGlvbk9yPFVuaXF1ZVJlZjxMb2dnZWRJblN0YXR1cz4+IExvZ2dlZEluU3RhdHVzOjpjcmVh
dGUoY29uc3QgUmVnaXN0cmFibGVECiAgICAgICAgIHJldHVybiBpc1NwYWNlT3JOZXdsaW5lKGNo
KTsKICAgICB9KTsKICAgICBpZiAoc3BhY2VPck5ld2xpbmUgIT0gbm90Rm91bmQpCi0gICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQ2hhcmFjdGVyRXJyb3IsICJJc0xvZ2dlZEluIHVz
ZXJuYW1lcyBjYW5ub3QgY29udGFpbiB3aGl0ZXNwYWNlIG9yIG5ld2xpbmVzLiIgfTsKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRDaGFyYWN0ZXJFcnJvciwgIklzTG9nZ2VkSW4g
dXNlcm5hbWVzIGNhbm5vdCBjb250YWluIHdoaXRlc3BhY2Ugb3IgbmV3bGluZXMuIl9zIH07CiAK
ICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxMb2dnZWRJblN0YXR1cz4oKm5ldyBMb2dnZWRJblN0
YXR1cyhkb21haW4sIHVzZXJuYW1lLCB0b2tlblR5cGUsIGF1dGhUeXBlLCB0aW1lVG9MaXZlKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAppbmRleCA3YjEwYzYzNTYwODE5
Mzg4ZDc4ODViZTAzNzRkOGYwZjE5NDczYjA5Li5jMDdjY2U0ODZjN2M2YzVhZWMxYjM3Njc5NzE1
ODBhOTE1ZGQ2NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKQEAgLTE3
MSw3ICsxNzEsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyJiBOYXZpZ2F0b3JCYXNlOjpzZXJ2
aWNlV29ya2VyKCkKIEV4Y2VwdGlvbk9yPFNlcnZpY2VXb3JrZXJDb250YWluZXImPiBOYXZpZ2F0
b3JCYXNlOjpzZXJ2aWNlV29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7
CiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSAmJiBkb3duY2FzdDxEb2N1bWVudD4oY29u
dGV4dCkuaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikpCi0gICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTZWN1cml0eUVycm9yLCAiU2VydmljZSBXb3JrZXIgaXMgZGlzYWJsZWQgYmVjYXVzZSB0
aGUgY29udGV4dCBpcyBzYW5kYm94ZWQgYW5kIGxhY2tzIHRoZSAnYWxsb3ctc2FtZS1vcmlnaW4n
IGZsYWciIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiU2Vy
dmljZSBXb3JrZXIgaXMgZGlzYWJsZWQgYmVjYXVzZSB0aGUgY29udGV4dCBpcyBzYW5kYm94ZWQg
YW5kIGxhY2tzIHRoZSAnYWxsb3ctc2FtZS1vcmlnaW4nIGZsYWciX3MgfTsKICAgICByZXR1cm4g
c2VydmljZVdvcmtlcigpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA2NjNmOTg0
YjU3ZDRkMGVkMzQzOWYwOTEzYzE0YjFjYjFlMThmYzE3Li5kOTRkM2NkMTdhZTVmZjA1NmJmNmEz
ZjBiMjk3YmQwYjZhNTFlN2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTIwNDIsNyArMjA0Miw3
IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKLSAgICBtX3VzZXJTdHls
ZVNoZWV0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2NzcyIpLT5kZWNvZGVB
bmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgbV91c2VyU3R5bGVTaGVl
dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9jc3MiX3MpLT5kZWNvZGVBbmRG
bHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICByZXR1cm4gbV91c2VyU3R5
bGVTaGVldDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAppbmRleCAxZTBlNjMzZWNjNGY0YzNkNjU3
NTNjMjMwNWZkYTZjMzZlZGRmMjVhLi5kZGJhODM1ZWY4OTIwM2FhZWFkYTFkMzAzYjIzNjk0NThk
NDcyODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCkBAIC0xMTgzLDcgKzExODMsNyBAQCBRdWly
a3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNj
ZXNzUXVpcmsoRWxlbWVudCYgZQogICAgIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGxvZ2luUG9wdXBXaW5kb3dGZWF0dXJlU3RyaW5nID0gInRvb2xiYXI9bm8sbG9jYXRpb249
eWVzLGRpcmVjdG9yaWVzPW5vLHN0YXR1cz1ubyxtZW51YmFyPW5vLHNjcm9sbGJhcnM9eWVzLHJl
c2l6YWJsZT15ZXMsY29weWhpc3Rvcnk9bm8sd2lkdGg9NTk5LGhlaWdodD02MDAsdG9wPTQyMCxs
ZWZ0PTk4MC41Il9zOwogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVzZXJTY3JpcHQ+IGtp
bmphTG9naW5Vc2VyU2NyaXB0IHsgImZ1bmN0aW9uIHRyaWdnZXJMb2dpbkZvcm0oKSB7IGxldCBl
bGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2pzX2hlYWRlci11c2Vy
YnV0dG9uJyk7IGlmIChlbGVtZW50cyAmJiBlbGVtZW50c1swXSkgeyBlbGVtZW50c1swXS5jbGlj
aygpOyBjbGVhckludGVydmFsKGludGVydmFsKTsgfSB9IGxldCBpbnRlcnZhbCA9IHNldEludGVy
dmFsKHRyaWdnZXJMb2dpbkZvcm0sIDIwMCk7IiwgVVJMKGFib3V0QmxhbmtVUkwoKSksIFZlY3Rv
cjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpE
b2N1bWVudEVuZCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9u
bHksIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6OlllcyB9OworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxVc2VyU2NyaXB0PiBraW5qYUxvZ2luVXNlclNjcmlwdCB7ICJmdW5j
dGlvbiB0cmlnZ2VyTG9naW5Gb3JtKCkgeyBsZXQgZWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCdqc19oZWFkZXItdXNlcmJ1dHRvbicpOyBpZiAoZWxlbWVudHMgJiYg
ZWxlbWVudHNbMF0pIHsgZWxlbWVudHNbMF0uY2xpY2soKTsgY2xlYXJJbnRlcnZhbChpbnRlcnZh
bCk7IH0gfSBsZXQgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCh0cmlnZ2VyTG9naW5Gb3JtLCAyMDAp
OyJfcywgVVJMKGFib3V0QmxhbmtVUkwoKSksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJp
bmc+KCksIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCwgVXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHksIFdhaXRGb3JOb3RpZmljYXRpb25C
ZWZvcmVJbmplY3Rpbmc6OlllcyB9OwogCiAgICAgaWYgKGV2ZW50VHlwZSA9PSAiY2xpY2siKSB7
CiAgICAgICAgIGlmICghbV9kb2N1bWVudCkKQEAgLTEyMjAsNyArMTIyMCw3IEBAIFF1aXJrczo6
U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NR
dWlyayhFbGVtZW50JiBlCiAgICAgICAgICAgICBhdXRvKiBhYnN0cmFjdEZyYW1lID0gcHJveHkt
PmZyYW1lKCk7CiAgICAgICAgICAgICBpZiAoYWJzdHJhY3RGcmFtZSAmJiBpczxGcmFtZT4oKmFi
c3RyYWN0RnJhbWUpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgZnJhbWUgPSBkb3duY2FzdDxG
cmFtZT4oKmFic3RyYWN0RnJhbWUpOwotICAgICAgICAgICAgICAgIGF1dG8gd29ybGQgPSBTY3Jp
cHRDb250cm9sbGVyOjpjcmVhdGVXb3JsZCgia2luamFDb21RdWlya1dvcmxkIiwgU2NyaXB0Q29u
dHJvbGxlcjo6V29ybGRUeXBlOjpVc2VyKTsKKyAgICAgICAgICAgICAgICBhdXRvIHdvcmxkID0g
U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV29ybGQoImtpbmphQ29tUXVpcmtXb3JsZCJfcywgU2Ny
aXB0Q29udHJvbGxlcjo6V29ybGRUeXBlOjpVc2VyKTsKICAgICAgICAgICAgICAgICBmcmFtZS5h
ZGRVc2VyU2NyaXB0QXdhaXRpbmdOb3RpZmljYXRpb24od29ybGQuZ2V0KCksIGtpbmphTG9naW5V
c2VyU2NyaXB0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNz
UmVzdWx0OjpTaG91bGRDYW5jZWxFdmVudDsKICAgICAgICAgICAgIH0KQEAgLTEyMzksNyArMTIz
OSw3IEBAIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWdnZXJPcHRpb25h
bFN0b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50JiBlCiAgICAgICAgIH0KIAogICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBCQkNSYWRpb1BsYXllclBvcFVwV2luZG93RmVhdHVy
ZVN0cmluZyA9ICJmZWF0dXJlc3RyaW5nIHdpZHRoPTQwMCxoZWlnaHQ9NzMwIl9zOwotICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlclNjcmlwdD4gQkJDVXNlclNjcmlwdCB7ICJmdW5j
dGlvbiB0cmlnZ2VyUmVkaXJlY3QoKSB7IGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBcImh0dHBz
Oi8vd3d3LmJiYy5jby51ay9zb3VuZHMvcGxheWVyL2JiY193b3JsZF9zZXJ2aWNlXCI7IH0gd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7IHRyaWdnZXJSZWRpcmVj
dCgpOyB9KSIsIFVSTChhYm91dEJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8
U3RyaW5nPigpLCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBXYWl0Rm9yTm90aWZpY2F0
aW9uQmVmb3JlSW5qZWN0aW5nOjpZZXMgfTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFVzZXJTY3JpcHQ+IEJCQ1VzZXJTY3JpcHQgeyAiZnVuY3Rpb24gdHJpZ2dlclJlZGlyZWN0KCkg
eyBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gXCJodHRwczovL3d3dy5iYmMuY28udWsvc291bmRz
L3BsYXllci9iYmNfd29ybGRfc2VydmljZVwiOyB9IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCds
b2FkJywgZnVuY3Rpb24gKCkgeyB0cmlnZ2VyUmVkaXJlY3QoKTsgfSkiX3MsIFVSTChhYm91dEJs
YW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluVG9wRnJhbWVPbmx5LCBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZ
ZXMgfTsKIAogICAgICAgICAvLyBCQkMgUmFkaW9QbGF5ZXIgY2FzZS4KICAgICAgICAgaWYgKGlz
QkJDRG9tYWluKGRvbWFpbikgJiYgaXNCQkNQb3BVcFBsYXllckVsZW1lbnQoZWxlbWVudCkpIHsK
QEAgLTEyNTYsNyArMTI1Niw3IEBAIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6
OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50JiBlCiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8qIGFic3RyYWN0RnJhbWUgPSBwcm94eS0+ZnJhbWUoKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGlzPEZyYW1lPihhYnN0cmFjdEZyYW1lKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byogZnJhbWUgPSBkb3duY2FzdDxGcmFtZT4oYWJzdHJhY3RGcmFtZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHdvcmxkID0gU2NyaXB0Q29udHJvbGxlcjo6
Y3JlYXRlV29ybGQoImJiY1JhZGlvUGxheWVyV29ybGQiLCBTY3JpcHRDb250cm9sbGVyOjpXb3Js
ZFR5cGU6OlVzZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byB3b3JsZCA9IFNjcmlw
dENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKCJiYmNSYWRpb1BsYXllcldvcmxkIl9zLCBTY3JpcHRD
b250cm9sbGVyOjpXb3JsZFR5cGU6OlVzZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWUtPmFkZFVzZXJTY3JpcHRBd2FpdGluZ05vdGlmaWNhdGlvbih3b3JsZC5nZXQoKSwgQkJDVXNl
clNjcmlwdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKaW5kZXggYzgzMmNm
NTZhOTU4YTJlN2E5ZWY5MWIyNzJjMmYwYzE0NWM2ZmNjMy4uMjA4MzQwOTdiYjE4OTEyYjE5NzYy
MjMwZjQwNmFiZTViMDhjNGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5k
b3dGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5j
cHAKQEAgLTM4LDggKzM4LDggQEAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+IERpYWxvZ0ZlYXR1cmVzTWFwOwogc3RhdGljIHZvaWQgc2V0
V2luZG93RmVhdHVyZShXaW5kb3dGZWF0dXJlcyYsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3
IHZhbHVlKTsKIAogc3RhdGljIERpYWxvZ0ZlYXR1cmVzTWFwIHBhcnNlRGlhbG9nRmVhdHVyZXNN
YXAoU3RyaW5nVmlldyk7Ci1zdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBib29sRmVhdHVyZShj
b25zdCBEaWFsb2dGZWF0dXJlc01hcCYsIGNvbnN0IGNoYXIqIGtleSk7Ci1zdGF0aWMgc3RkOjpv
cHRpb25hbDxmbG9hdD4gZmxvYXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiwgY29u
c3QgY2hhcioga2V5LCBmbG9hdCBtaW4sIGZsb2F0IG1heCk7CitzdGF0aWMgc3RkOjpvcHRpb25h
bDxib29sPiBib29sRmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYsIEFTQ0lJTGl0ZXJh
bCBrZXkpOworc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGZsb2F0RmVhdHVyZShjb25zdCBE
aWFsb2dGZWF0dXJlc01hcCYsIEFTQ0lJTGl0ZXJhbCBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4
KTsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jZmVhdHVyZS1zZXBhcmF0b3IK
IHN0YXRpYyBib29sIGlzU2VwYXJhdG9yKFVDaGFyIGNoYXJhY3RlciwgRmVhdHVyZU1vZGUgbW9k
ZSkKQEAgLTE4NSwzMCArMTg1LDMwIEBAIFdpbmRvd0ZlYXR1cmVzIHBhcnNlRGlhbG9nRmVhdHVy
ZXMoU3RyaW5nVmlldyBkaWFsb2dGZWF0dXJlc1N0cmluZywgY29uc3QgRmxvYXRSCiAgICAgZmVh
dHVyZXMubG9jYXRpb25CYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgZmVhdHVyZXMuZGlhbG9nID0g
dHJ1ZTsKIAotICAgIGZsb2F0IHdpZHRoID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlh
bG9nd2lkdGgiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3Qud2lkdGgoKSkudmFsdWVfb3IoNjIw
KTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJ
RQotICAgIGZsb2F0IGhlaWdodCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ2hl
aWdodCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkudmFsdWVfb3IoNDUwKTsg
Ly8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQor
ICAgIGZsb2F0IHdpZHRoID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nd2lkdGgi
X3MsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpKS52YWx1ZV9vcig2MjApOyAvLyBk
ZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCisgICAg
ZmxvYXQgaGVpZ2h0ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9naGVpZ2h0Il9z
LCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpLnZhbHVlX29yKDQ1MCk7IC8vIGRl
ZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKIAogICAg
IGZlYXR1cmVzLndpZHRoID0gd2lkdGg7CiAgICAgZmVhdHVyZXMuaGVpZ2h0ID0gaGVpZ2h0Owog
Ci0gICAgZmVhdHVyZXMueCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ2xlZnQi
LCBzY3JlZW5BdmFpbGFibGVSZWN0LngoKSwgc2NyZWVuQXZhaWxhYmxlUmVjdC5tYXhYKCkgLSB3
aWR0aCk7Ci0gICAgZmVhdHVyZXMueSA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxv
Z3RvcCIsIHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1heFko
KSAtIGhlaWdodCk7CisgICAgZmVhdHVyZXMueCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwg
ImRpYWxvZ2xlZnQiX3MsIHNjcmVlbkF2YWlsYWJsZVJlY3QueCgpLCBzY3JlZW5BdmFpbGFibGVS
ZWN0Lm1heFgoKSAtIHdpZHRoKTsKKyAgICBmZWF0dXJlcy55ID0gZmxvYXRGZWF0dXJlKGZlYXR1
cmVzTWFwLCAiZGlhbG9ndG9wIl9zLCBzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSwgc2NyZWVuQXZh
aWxhYmxlUmVjdC5tYXhZKCkgLSBoZWlnaHQpOwogCi0gICAgaWYgKGJvb2xGZWF0dXJlKGZlYXR1
cmVzTWFwLCAiY2VudGVyIikudmFsdWVfb3IodHJ1ZSkpIHsKKyAgICBpZiAoYm9vbEZlYXR1cmUo
ZmVhdHVyZXNNYXAsICJjZW50ZXIiX3MpLnZhbHVlX29yKHRydWUpKSB7CiAgICAgICAgIGlmICgh
ZmVhdHVyZXMueCkKICAgICAgICAgICAgIGZlYXR1cmVzLnggPSBzY3JlZW5BdmFpbGFibGVSZWN0
LngoKSArIChzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkgLSB3aWR0aCkgLyAyOwogICAgICAg
ICBpZiAoIWZlYXR1cmVzLnkpCiAgICAgICAgICAgICBmZWF0dXJlcy55ID0gc2NyZWVuQXZhaWxh
YmxlUmVjdC55KCkgKyAoc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSAtIGhlaWdodCkgLyAy
OwogICAgIH0KIAotICAgIGZlYXR1cmVzLnJlc2l6YWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVz
TWFwLCAicmVzaXphYmxlIikudmFsdWVfb3IoZmFsc2UpOwotICAgIGZlYXR1cmVzLnNjcm9sbGJh
cnNWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzY3JvbGwiKS52YWx1ZV9vcih0
cnVlKTsKLSAgICBmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVy
ZXNNYXAsICJzdGF0dXMiKS52YWx1ZV9vcihmYWxzZSk7CisgICAgZmVhdHVyZXMucmVzaXphYmxl
ID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJyZXNpemFibGUiX3MpLnZhbHVlX29yKGZhbHNl
KTsKKyAgICBmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVz
TWFwLCAic2Nyb2xsIl9zKS52YWx1ZV9vcih0cnVlKTsKKyAgICBmZWF0dXJlcy5zdGF0dXNCYXJW
aXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzdGF0dXMiX3MpLnZhbHVlX29yKGZh
bHNlKTsKIAogICAgIHJldHVybiBmZWF0dXJlczsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gYm9vbEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmIGZlYXR1cmVzLCBjb25z
dCBjaGFyKiBrZXkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBib29sRmVhdHVyZShjb25z
dCBEaWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIEFTQ0lJTGl0ZXJhbCBrZXkpCiB7CiAgICAg
YXV0byBpdCA9IGZlYXR1cmVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXQgPT0gZmVhdHVyZXMuZW5k
KCkpCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYm9vbEZl
YXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmIGZlYXR1cmVzLCBjb25zdAogICAgICAgICB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgIm9uIik7CiB9CiAKLXN0YXRp
YyBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBmbG9hdEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNN
YXAmIGZlYXR1cmVzLCBjb25zdCBjaGFyKiBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4KQorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGZsb2F0RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJl
c01hcCYgZmVhdHVyZXMsIEFTQ0lJTGl0ZXJhbCBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4KQog
ewogICAgIGF1dG8gaXQgPSBmZWF0dXJlcy5maW5kKGtleSk7CiAgICAgaWYgKGl0ID09IGZlYXR1
cmVzLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5jcHAKaW5kZXggMTYyNzRlOTRhZjEwYzhkMzg1NDBlOWM4MzUxOTIxYzcwYjhmOGQ3
Zi4uY2Y2NjlhMDU1NmJkNzY0NDQ3MGFkZDlhYjYwOTg4NmQ0OTVkY2IzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC03MCw5
ICs3MCw5IEBAIHN0YXRpYyBTdHJpbmcgY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2CiB7CiAgICAgYm9vbCBpc0RlZmF1bHRT
cmMgPSB2aW9sYXRlZERpcmVjdGl2ZS5pc0RlZmF1bHRTcmMoKTsKICAgICBTdHJpbmcgbmFtZSA9
IHZpb2xhdGVkRGlyZWN0aXZlLm5hbWVGb3JSZXBvcnRpbmcoKTsKLSAgICBpZiAodmlvbGF0ZWRE
aXJlY3RpdmUubmFtZUZvclJlcG9ydGluZygpLnN0YXJ0c1dpdGgoQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYykpCisgICAgaWYgKHZpb2xhdGVkRGlyZWN0aXZl
Lm5hbWVGb3JSZXBvcnRpbmcoKS5zdGFydHNXaXRoKFN0cmluZ1ZpZXcgeyBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjIH0pKQogICAgICAgICBuYW1lID0gQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYzsKLSAgICBlbHNlIGlm
ICh2aW9sYXRlZERpcmVjdGl2ZS5uYW1lRm9yUmVwb3J0aW5nKCkuc3RhcnRzV2l0aChDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmMpKQorICAgIGVsc2UgaWYgKHZp
b2xhdGVkRGlyZWN0aXZlLm5hbWVGb3JSZXBvcnRpbmcoKS5zdGFydHNXaXRoKFN0cmluZ1ZpZXcg
eyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmMgfSkpCiAgICAg
ICAgIG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmM7
CiAKICAgICByZXR1cm4gbWFrZVN0cmluZyh2aW9sYXRlZERpcmVjdGl2ZS5kaXJlY3RpdmVMaXN0
KCkuaXNSZXBvcnRPbmx5KCkgPyAiW1JlcG9ydCBPbmx5XSAiIDogIiIsCkBAIC00OTMsNyArNDkz
LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93RXZhbChKU0M6OkpTR2xvYmFs
T2JqZWN0KiBzdGF0ZSwgTG9nVG9Db25zb2xlIHMKICAgICBib29sIGRpZE5vdGlmeUluc3BlY3Rv
ciA9IGZhbHNlOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKICAg
ICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gc2hvdWxkTG9nVG9Db25zb2xlID09IExvZ1Rv
Q29uc29sZTo6WWVzID8gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24odmlvbGF0ZWREaXJlY3Rp
dmUsIFVSTCgpLCAiUmVmdXNlZCB0byBleGVjdXRlIGEgc2NyaXB0IiwgIid1bnNhZmUtZXZhbCci
KSA6IFN0cmluZygpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24odmlvbGF0ZWREaXJlY3RpdmUs
ICJldmFsIiwgY29uc29sZU1lc3NhZ2UsIHN0YXRlLCBjb2RlQ29udGVudCk7CisgICAgICAgIHJl
cG9ydFZpb2xhdGlvbih2aW9sYXRlZERpcmVjdGl2ZSwgImV2YWwiX3MsIGNvbnNvbGVNZXNzYWdl
LCBzdGF0ZSwgY29kZUNvbnRlbnQpOwogICAgICAgICBpZiAoIWRpZE5vdGlmeUluc3BlY3RvciAm
JiAhdmlvbGF0ZWREaXJlY3RpdmUuZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpKSB7CiAg
ICAgICAgICAgICByZXBvcnRCbG9ja2VkU2NyaXB0RXhlY3V0aW9uVG9JbnNwZWN0b3IodmlvbGF0
ZWREaXJlY3RpdmUudGV4dCgpKTsKICAgICAgICAgICAgIGRpZE5vdGlmeUluc3BlY3RvciA9IHRy
dWU7CkBAIC05MDAsNyArOTAwLDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9y
dEludmFsaWRQbHVnaW5UeXBlcyhjb25zdCBTdHJpbmcmIHBsdWdpblR5cGUpIGMKIHsKICAgICBT
dHJpbmcgbWVzc2FnZTsKICAgICBpZiAocGx1Z2luVHlwZS5pc051bGwoKSkKLSAgICAgICAgbWVz
c2FnZSA9ICIncGx1Z2luLXR5cGVzJyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmUg
aXMgZW1wdHk7IGFsbCBwbHVnaW5zIHdpbGwgYmUgYmxvY2tlZC5cbiI7CisgICAgICAgIG1lc3Nh
Z2UgPSAiJ3BsdWdpbi10eXBlcycgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlIGlz
IGVtcHR5OyBhbGwgcGx1Z2lucyB3aWxsIGJlIGJsb2NrZWQuXG4iX3M7CiAgICAgZWxzZQogICAg
ICAgICBtZXNzYWdlID0gbWFrZVN0cmluZygiSW52YWxpZCBwbHVnaW4gdHlwZSBpbiAncGx1Z2lu
LXR5cGVzJyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICciLCBwbHVnaW5UeXBl
LCAiJy5cbiIpOwogICAgIGxvZ1RvQ29uc29sZShtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdC5jcHAKaW5kZXggMGZkNjY4YjAyODMyZGQ0MmY0ZmRlYzFlMTAyMDUyYjRhNzA1MWJlMS4u
YTA1MWY2ZWJhMDY2YjRmZTdlNDI5NGY5N2EwZWY1MzhiNWM0OTBhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdC5jcHAKQEAgLTY3MSw5ICs2NzEsOSBAQCBib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OnN0cmljdER5bmFtaWNJbmNsdWRlZCgpCiBib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnNob3VsZFJlcG9ydFNhbXBsZShjb25zdCBTdHJp
bmcmIHZpb2xhdGVkRGlyZWN0aXZlKSBjb25zdAogewogICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdGl2ZSA9IG51bGxwdHI7Ci0gICAgaWYgKHZpb2xh
dGVkRGlyZWN0aXZlLnN0YXJ0c1dpdGgoQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXM6OnN0eWxlU3JjKSkKKyAgICBpZiAodmlvbGF0ZWREaXJlY3RpdmUuc3RhcnRzV2l0aChTdHJp
bmdWaWV3IHsgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnN0eWxlU3JjIH0p
KQogICAgICAgICBkaXJlY3RpdmUgPSBtX3N0eWxlU3JjLmdldCgpOwotICAgIGVsc2UgaWYgKHZp
b2xhdGVkRGlyZWN0aXZlLnN0YXJ0c1dpdGgoQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXM6OnNjcmlwdFNyYykpCisgICAgZWxzZSBpZiAodmlvbGF0ZWREaXJlY3RpdmUuc3RhcnRz
V2l0aChTdHJpbmdWaWV3IHsgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNj
cmlwdFNyYyB9KSkKICAgICAgICAgZGlyZWN0aXZlID0gbV9zY3JpcHRTcmMuZ2V0KCk7CiAKICAg
ICByZXR1cm4gZGlyZWN0aXZlICYmIGRpcmVjdGl2ZS0+c2hvdWxkUmVwb3J0U2FtcGxlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHAKaW5kZXggMWEwYmMzNjQyMmIzNzQ0YTkwN2IyNzg5
NmUzMGE0MmRkYzE5MGUwMy4uNDRlOTRlNTZlMWYwNWY2NzA0MDgwOGIwMWUwMjk2N2FlZGNjZGNi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcApAQCAtMzAsMzIgKzMwLDMyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzIHsKIAotY29uc3QgY2hhciogY29uc3QgYmFzZVVSSSA9ICJiYXNlLXVyaSI7Ci1j
b25zdCBjaGFyKiBjb25zdCBjaGlsZFNyYyA9ICJjaGlsZC1zcmMiOwotY29uc3QgY2hhciogY29u
c3QgY29ubmVjdFNyYyA9ICJjb25uZWN0LXNyYyI7Ci1jb25zdCBjaGFyKiBjb25zdCBkZWZhdWx0
U3JjID0gImRlZmF1bHQtc3JjIjsKLWNvbnN0IGNoYXIqIGNvbnN0IGZvbnRTcmMgPSAiZm9udC1z
cmMiOwotY29uc3QgY2hhciogY29uc3QgZm9ybUFjdGlvbiA9ICJmb3JtLWFjdGlvbiI7Ci1jb25z
dCBjaGFyKiBjb25zdCBmcmFtZUFuY2VzdG9ycyA9ICJmcmFtZS1hbmNlc3RvcnMiOwotY29uc3Qg
Y2hhciogY29uc3QgZnJhbWVTcmMgPSAiZnJhbWUtc3JjIjsKK0FTQ0lJTGl0ZXJhbCBiYXNlVVJJ
ID0gImJhc2UtdXJpIl9zOworQVNDSUlMaXRlcmFsIGNoaWxkU3JjID0gImNoaWxkLXNyYyJfczsK
K0FTQ0lJTGl0ZXJhbCBjb25uZWN0U3JjID0gImNvbm5lY3Qtc3JjIl9zOworQVNDSUlMaXRlcmFs
IGRlZmF1bHRTcmMgPSAiZGVmYXVsdC1zcmMiX3M7CitBU0NJSUxpdGVyYWwgZm9udFNyYyA9ICJm
b250LXNyYyJfczsKK0FTQ0lJTGl0ZXJhbCBmb3JtQWN0aW9uID0gImZvcm0tYWN0aW9uIl9zOwor
QVNDSUlMaXRlcmFsIGZyYW1lQW5jZXN0b3JzID0gImZyYW1lLWFuY2VzdG9ycyJfczsKK0FTQ0lJ
TGl0ZXJhbCBmcmFtZVNyYyA9ICJmcmFtZS1zcmMiX3M7CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQotY29uc3QgY2hhciogY29uc3QgbWFuaWZlc3RTcmMgPSAibWFuaWZlc3Qtc3Jj
IjsKK0FTQ0lJTGl0ZXJhbCBtYW5pZmVzdFNyYyA9ICJtYW5pZmVzdC1zcmMiX3M7CiAjZW5kaWYK
LWNvbnN0IGNoYXIqIGNvbnN0IGltZ1NyYyA9ICJpbWctc3JjIjsKLWNvbnN0IGNoYXIqIGNvbnN0
IG1lZGlhU3JjID0gIm1lZGlhLXNyYyI7Ci1jb25zdCBjaGFyKiBjb25zdCBvYmplY3RTcmMgPSAi
b2JqZWN0LXNyYyI7Ci1jb25zdCBjaGFyKiBjb25zdCBwbHVnaW5UeXBlcyA9ICJwbHVnaW4tdHlw
ZXMiOwotY29uc3QgY2hhciogY29uc3QgcmVwb3J0VVJJID0gInJlcG9ydC11cmkiOwotY29uc3Qg
Y2hhciogY29uc3Qgc2FuZGJveCA9ICJzYW5kYm94IjsKLWNvbnN0IGNoYXIqIGNvbnN0IHNjcmlw
dFNyYyA9ICJzY3JpcHQtc3JjIjsKLWNvbnN0IGNoYXIqIGNvbnN0IHNjcmlwdFNyY0F0dHIgPSAi
c2NyaXB0LXNyYy1hdHRyIjsKLWNvbnN0IGNoYXIqIGNvbnN0IHNjcmlwdFNyY0VsZW0gPSAic2Ny
aXB0LXNyYy1lbGVtIjsKLWNvbnN0IGNoYXIqIGNvbnN0IHN0eWxlU3JjID0gInN0eWxlLXNyYyI7
Ci1jb25zdCBjaGFyKiBjb25zdCBzdHlsZVNyY0F0dHIgPSAic3R5bGUtc3JjLWF0dHIiOwotY29u
c3QgY2hhciogY29uc3Qgc3R5bGVTcmNFbGVtID0gInN0eWxlLXNyYy1lbGVtIjsKLWNvbnN0IGNo
YXIqIGNvbnN0IHVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RzID0gInVwZ3JhZGUtaW5zZWN1cmUtcmVx
dWVzdHMiOwotY29uc3QgY2hhciogY29uc3QgYmxvY2tBbGxNaXhlZENvbnRlbnQgPSAiYmxvY2st
YWxsLW1peGVkLWNvbnRlbnQiOwotY29uc3QgY2hhciogY29uc3Qgd29ya2VyU3JjID0gIndvcmtl
ci1zcmMiOworQVNDSUlMaXRlcmFsIGltZ1NyYyA9ICJpbWctc3JjIl9zOworQVNDSUlMaXRlcmFs
IG1lZGlhU3JjID0gIm1lZGlhLXNyYyJfczsKK0FTQ0lJTGl0ZXJhbCBvYmplY3RTcmMgPSAib2Jq
ZWN0LXNyYyJfczsKK0FTQ0lJTGl0ZXJhbCBwbHVnaW5UeXBlcyA9ICJwbHVnaW4tdHlwZXMiX3M7
CitBU0NJSUxpdGVyYWwgcmVwb3J0VVJJID0gInJlcG9ydC11cmkiX3M7CitBU0NJSUxpdGVyYWwg
c2FuZGJveCA9ICJzYW5kYm94Il9zOworQVNDSUlMaXRlcmFsIHNjcmlwdFNyYyA9ICJzY3JpcHQt
c3JjIl9zOworQVNDSUlMaXRlcmFsIHNjcmlwdFNyY0F0dHIgPSAic2NyaXB0LXNyYy1hdHRyIl9z
OworQVNDSUlMaXRlcmFsIHNjcmlwdFNyY0VsZW0gPSAic2NyaXB0LXNyYy1lbGVtIl9zOworQVND
SUlMaXRlcmFsIHN0eWxlU3JjID0gInN0eWxlLXNyYyJfczsKK0FTQ0lJTGl0ZXJhbCBzdHlsZVNy
Y0F0dHIgPSAic3R5bGUtc3JjLWF0dHIiX3M7CitBU0NJSUxpdGVyYWwgc3R5bGVTcmNFbGVtID0g
InN0eWxlLXNyYy1lbGVtIl9zOworQVNDSUlMaXRlcmFsIHVwZ3JhZGVJbnNlY3VyZVJlcXVlc3Rz
ID0gInVwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMiX3M7CitBU0NJSUxpdGVyYWwgYmxvY2tBbGxN
aXhlZENvbnRlbnQgPSAiYmxvY2stYWxsLW1peGVkLWNvbnRlbnQiX3M7CitBU0NJSUxpdGVyYWwg
d29ya2VyU3JjID0gIndvcmtlci1zcmMiX3M7CiAKIH0gLy8gbmFtZXNwYWNlIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oCmluZGV4
IDBkMGMxY2U2ZTg0MWUyNDQ3MTlkZmQzMGFhMWE1MGNmMjhjNzQ1NmQuLjA5YjRkZjhjNTcwYzZh
MjVkZjk5OTQxZjQzMzgwMmRjZjBmODgwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaApA
QCAtMjUsMzYgKzI1LDM4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXMgewogCi1leHRlcm4gY29uc3QgY2hhciogY29uc3QgYmFzZVVS
STsKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBjaGlsZFNyYzsKLWV4dGVybiBjb25zdCBjaGFy
KiBjb25zdCBjb25uZWN0U3JjOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGRlZmF1bHRTcmM7
Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3QgZm9udFNyYzsKLWV4dGVybiBjb25zdCBjaGFyKiBj
b25zdCBmb3JtQWN0aW9uOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGZyYW1lQW5jZXN0b3Jz
OwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGZyYW1lU3JjOwotZXh0ZXJuIGNvbnN0IGNoYXIq
IGNvbnN0IGltZ1NyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgYmFzZVVSSTsKK2V4dGVybiBBU0NJ
SUxpdGVyYWwgY2hpbGRTcmM7CitleHRlcm4gQVNDSUlMaXRlcmFsIGNvbm5lY3RTcmM7CitleHRl
cm4gQVNDSUlMaXRlcmFsIGRlZmF1bHRTcmM7CitleHRlcm4gQVNDSUlMaXRlcmFsIGZvbnRTcmM7
CitleHRlcm4gQVNDSUlMaXRlcmFsIGZvcm1BY3Rpb247CitleHRlcm4gQVNDSUlMaXRlcmFsIGZy
YW1lQW5jZXN0b3JzOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBmcmFtZVNyYzsKK2V4dGVybiBBU0NJ
SUxpdGVyYWwgaW1nU3JjOwogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLWV4dGVy
biBjb25zdCBjaGFyKiBjb25zdCBtYW5pZmVzdFNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgbWFu
aWZlc3RTcmM7CiAjZW5kaWYKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBtZWRpYVNyYzsKLWV4
dGVybiBjb25zdCBjaGFyKiBjb25zdCBvYmplY3RTcmM7Ci1leHRlcm4gY29uc3QgY2hhciogY29u
c3QgcGx1Z2luVHlwZXM7Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3QgcmVwb3J0VVJJOwotZXh0
ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNhbmRib3g7Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3Qg
c2NyaXB0U3JjOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNjcmlwdFNyY0VsZW07Ci1leHRl
cm4gY29uc3QgY2hhciogY29uc3Qgc2NyaXB0U3JjQXR0cjsKLWV4dGVybiBjb25zdCBjaGFyKiBj
b25zdCBzdHlsZVNyYzsKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzdHlsZVNyY0F0dHI7Ci1l
eHRlcm4gY29uc3QgY2hhciogY29uc3Qgc3R5bGVTcmNFbGVtOwotZXh0ZXJuIGNvbnN0IGNoYXIq
IGNvbnN0IHVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RzOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0
IGJsb2NrQWxsTWl4ZWRDb250ZW50OwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHdvcmtlclNy
YzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgbWVkaWFTcmM7CitleHRlcm4gQVNDSUlMaXRlcmFsIG9i
amVjdFNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgcGx1Z2luVHlwZXM7CitleHRlcm4gQVNDSUlM
aXRlcmFsIHJlcG9ydFVSSTsKK2V4dGVybiBBU0NJSUxpdGVyYWwgc2FuZGJveDsKK2V4dGVybiBB
U0NJSUxpdGVyYWwgc2NyaXB0U3JjOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBzY3JpcHRTcmNFbGVt
OworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBzY3JpcHRTcmNBdHRyOworZXh0ZXJuIEFTQ0lJTGl0ZXJh
bCBzdHlsZVNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgc3R5bGVTcmNBdHRyOworZXh0ZXJuIEFT
Q0lJTGl0ZXJhbCBzdHlsZVNyY0VsZW07CitleHRlcm4gQVNDSUlMaXRlcmFsIHVwZ3JhZGVJbnNl
Y3VyZVJlcXVlc3RzOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBibG9ja0FsbE1peGVkQ29udGVudDsK
K2V4dGVybiBBU0NJSUxpdGVyYWwgd29ya2VyU3JjOwogCiB9IC8vIG5hbWVzcGFjZSBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKaW5kZXggNWEzNGNlYTA1NGFjNjU0YWQzMjQy
ZjkyMGE0MjgxNzAxZmViNjZiNC4uNDE5NjU3OWEzYzc0NjE5ZmUzN2RkZjA5NTMyMzY4YzhiMWNk
Njc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVn
aXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lz
dHJ5LmNwcApAQCAtNzksMTAgKzc5LDEwIEBAIHN0YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFwJiBh
bGxCdWlsdGluU2NoZW1lcygpCiAgICAgICAgIH07CiAKICAgICAgICAgLy8gT3RoZXIgbWlzYyBz
Y2hlbWVzIHRoYXQgdGhlIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5IGRvZXNuJ3Qga25vdyBhYm91dC4K
LSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG90aGVyU2NoZW1lc1tdID0gewotICAg
ICAgICAgICAgIndlYmtpdC1mYWtlLXVybCIsCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgQVND
SUlMaXRlcmFsIG90aGVyU2NoZW1lc1tdID0geworICAgICAgICAgICAgIndlYmtpdC1mYWtlLXVy
bCJfcywKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICAic2FmYXJpLWV4dGVuc2lvbiIs
CisgICAgICAgICAgICAic2FmYXJpLWV4dGVuc2lvbiJfcywKICNlbmRpZgogI2lmIFVTRShRVUlD
S19MT09LKQogICAgICAgICAgICAgUUxQcmV2aWV3UHJvdG9jb2wsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4IDhhN2U4ZWY2YmNlMjNjMWY4NGFk
NDAzMDZjZDZmNWY1YzkwZTU4ZGEuLjI5ZmZjNTQ5M2FjZjA4ODA5MjBmNmVlNTFjY2M2MGQyOTM5
ZWYwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
CkBAIC03NDUsMTkgKzc0NSwxOSBAQCBTdHJpbmcgQVhMaW5rQWN0aW9uVmVyYigpCiBTdHJpbmcg
QVhNZW51TGlzdFBvcHVwQWN0aW9uVmVyYigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gInNlbGVjdCI7CisgICAgcmV0dXJuICJzZWxlY3QiX3M7CiB9CiAKIFN0cmluZyBB
WE1lbnVMaXN0QWN0aW9uVmVyYigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gInNlbGVjdCI7CisgICAgcmV0dXJuICJzZWxlY3QiX3M7CiB9CiAKIFN0cmluZyBBWExpc3RJ
dGVtQWN0aW9uVmVyYigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gInNl
bGVjdCI7CisgICAgcmV0dXJuICJzZWxlY3QiX3M7CiB9CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2xlZXBEaXNhYmxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmNwcAppbmRleCAyOWRmY2I0
M2UzYWRiMTMwMjU1YmVjNjZhYjIwZjkwNzU3YjQ3Y2NmLi4xZTgyYTk5NDc3NzE0NDJhZTYzN2I4
Zjc1NDQwZDFiMTVlNTdlNDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
bGVlcERpc2FibGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2Fi
bGVyLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNsZWVw
RGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciogcmVhc29uLCBQQUw6OlNsZWVwRGlz
YWJsZXI6OlR5cGUgdHlwZSkKK1NsZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIoY29uc3QgU3Ry
aW5nJiByZWFzb24sIFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZSB0eXBlKQogICAgIDogbV90eXBl
KHR5cGUpCiB7CiAgICAgaWYgKHNsZWVwRGlzYWJsZXJDbGllbnQoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2xlZXBEaXNhYmxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2xlZXBEaXNhYmxlci5oCmluZGV4IGY2ZTExYzY0OGY1NDIxMTAyNmMxYzkyMDJj
ZTQ2YWU1YzcyM2RmODYuLmNhMjc1YzM1Zjc0YTE0ZDNhYzNkZDFkMDA2OTljYWIyM2ZhN2JkM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NsZWVwRGlzYWJsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmgKQEAgLTMzLDcgKzMzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2xlZXBEaXNhYmxlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2xlZXBEaXNh
Ymxlcihjb25zdCBjaGFyKiwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTbGVlcERpc2FibGVyKGNvbnN0IFN0cmluZyYsIFBBTDo6U2xlZXBEaXNhYmxlcjo6
VHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgflNsZWVwRGlzYWJsZXIoKTsKIAogICAgIFBBTDo6
U2xlZXBEaXNhYmxlcjo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmNwcAppbmRleCAxM2Nm
MjcyNDAyMzFiNTRjNWE4ZWZiYmQ1YTYwYTAxNGU2ZjMxNTVlLi5hZDA0M2EzODJiMWQxODg1NjFj
ZDY2NzU2N2IxYjg3NzY3NjQ1NjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgSFJURkRhdGFiYXNlOjpIUlRG
RGF0YWJhc2UoZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICB1bnNpZ25lZCBlbGV2YXRpb25JbmRl
eCA9IDA7CiAgICAgZm9yIChpbnQgZWxldmF0aW9uID0gTWluRWxldmF0aW9uOyBlbGV2YXRpb24g
PD0gTWF4RWxldmF0aW9uOyBlbGV2YXRpb24gKz0gUmF3RWxldmF0aW9uQW5nbGVTcGFjaW5nKSB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBocnRmRWxldmF0aW9uID0g
SFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVjdCgiQ29tcG9zaXRlIiwgZWxldmF0aW9uLCBz
YW1wbGVSYXRlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IGhydGZF
bGV2YXRpb24gPSBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KCJDb21wb3NpdGUiX3Ms
IGVsZXZhdGlvbiwgc2FtcGxlUmF0ZSk7CiAgICAgICAgIEFTU0VSVChocnRmRWxldmF0aW9uLmdl
dCgpKTsKICAgICAgICAgaWYgKCFocnRmRWxldmF0aW9uLmdldCgpKQogICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcml2YXRlLmNwcAppbmRleCBkODNiMmYwZWM5M2U0MmEyZGEwY2RlMjUwODllYTBlNjQ5ZDdj
NjMxLi4xNWIxZTAwZjRhYjJkMDJhNjNiNWE0N2M2NWUyZTU1MmEyZjk0Mjg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmNw
cApAQCAtMzk5LDcgKzM5OSw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2FwYWJp
bGl0eT4+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENhcGFiaWxpdGllc0ZvCiAgICAgICAgIC8v
IDMuOC4gSWYgdGhlIHVzZXIgYWdlbnQgZG9lcyBub3QgcmVjb2duaXplIG9uZSBvciBtb3JlIHBh
cmFtZXRlcnMsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KICAgICAgICAgLy8gMy45
LiBMZXQgbWVkaWEgdHlwZXMgYmUgdGhlIHNldCBvZiBjb2RlY3MgYW5kIGNvZGVjIGNvbnN0cmFp
bnRzIHNwZWNpZmllZCBieSBwYXJhbWV0ZXJzLiBUaGUgY2FzZS1zZW5zaXRpdml0eQogICAgICAg
ICAvLyAgICAgIG9mIHN0cmluZyBjb21wYXJpc29ucyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhcHBy
b3ByaWF0ZSBSRkMgb3Igb3RoZXIgc3BlY2lmaWNhdGlvbi4KLSAgICAgICAgU3RyaW5nIGNvZGVj
cyA9IGNvbnRlbnRUeXBlLT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoImNvZGVjcyIpOworICAgICAg
ICBTdHJpbmcgY29kZWNzID0gY29udGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgiY29k
ZWNzIl9zKTsKICAgICAgICAgaWYgKGNvbnRlbnRUeXBlLT5wYXJhbWV0ZXJDb3VudCgpID4gKGNv
ZGVjcy5pc0VtcHR5KCkgPyAwIDogMSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDE4ZDc4ZjcxYjVkYmMxNTIzOTI3MmE4MmVlZTI4
Njc5OTI4NGE5MGIuLmZhOWI4MjUzZmEwZDI0OGI2YTZjODRkMDg2OTgyNzk1NjcyZDE0MGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxLZXlIYW5kbGU+Pj4gcGFyc2VMaWNlbnNlRm9ybWF0
KGNvbnN0IEpTT046Ok8KIHsKICAgICAvLyBJZiB0aGUgJ2tleXMnIGtleSBpcyBwcmVzZW50IGlu
IHRoZSByb290IG9iamVjdCwgcGFyc2UgdGhlIEpTT04gZnVydGhlcgogICAgIC8vIGFjY29yZGlu
ZyB0byB0aGUgc3BlY2lmaWVkICdsaWNlbnNlJyBmb3JtYXQuCi0gICAgYXV0byBpdCA9IHJvb3Qu
ZmluZCgia2V5cyIpOworICAgIGF1dG8gaXQgPSByb290LmZpbmQoImtleXMiX3MpOwogICAgIGlm
IChpdCA9PSByb290LmVuZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC02
NywxNSArNjcsMTUgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxLZXlIYW5k
bGU+Pj4gcGFyc2VMaWNlbnNlRm9ybWF0KGNvbnN0IEpTT046Ok8KICAgICAgICAgICAgIGlmICgh
a2V5T2JqZWN0KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAg
YXV0byBrZXlUeXBlID0ga2V5T2JqZWN0LT5nZXRTdHJpbmcoImt0eSIpOworICAgICAgICAgICAg
YXV0byBrZXlUeXBlID0ga2V5T2JqZWN0LT5nZXRTdHJpbmcoImt0eSJfcyk7CiAgICAgICAgICAg
ICBpZiAoIWtleVR5cGUgfHwgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleVR5cGUs
ICJvY3QiKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIGF1
dG8ga2V5SUQgPSBrZXlPYmplY3QtPmdldFN0cmluZygia2lkIik7CisgICAgICAgICAgICBhdXRv
IGtleUlEID0ga2V5T2JqZWN0LT5nZXRTdHJpbmcoImtpZCJfcyk7CiAgICAgICAgICAgICBpZiAo
IWtleUlEKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgYXV0
byBrZXlWYWx1ZSA9IGtleU9iamVjdC0+Z2V0U3RyaW5nKCJrIik7CisgICAgICAgICAgICBhdXRv
IGtleVZhbHVlID0ga2V5T2JqZWN0LT5nZXRTdHJpbmcoImsiX3MpOwogICAgICAgICAgICAgaWYg
KCFrZXlWYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTk5LDcgKzk5
LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VMaWNlbnNlUmVsZWFzZUFja25vd2xlZGdlbWVudEZvcm1h
dChjb25zdCBKU09OOjpPYmplY3QmIHJvb3QpCiB7CiAgICAgLy8gSWYgdGhlICdraWRzJyBrZXkg
aXMgcHJlc2VudCBpbiB0aGUgcm9vdCBvYmplY3QsIHBhcnNlIHRoZSBKU09OIGZ1cnRoZXIKICAg
ICAvLyBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCAnbGljZW5zZSByZWxlYXNlIGFja25vd2xl
ZGdlbWVudCcgZm9ybWF0LgotICAgIGF1dG8gaXQgPSByb290LmZpbmQoImtpZHMiKTsKKyAgICBh
dXRvIGl0ID0gcm9vdC5maW5kKCJraWRzIl9zKTsKICAgICBpZiAoaXQgPT0gcm9vdC5lbmQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yMjQsNyArMjI0LDcgQEAgc3RhdGljIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25z
dCBGcmFnbWVudGUKICAgICAgICAgaW5kZXggKz0gQ2xlYXJLZXk6OktleUlEU2l6ZUluQnl0ZXM7
CiAgICAgfQogCi0gICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJy
YXkpKTsKKyAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIl9zLCBXVEZNb3ZlKGtleUlkc0FycmF5
KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgp
OwogICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7
CiAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNv
bnN0IEZyYWdtZW50ZWQKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVsZW1lbnQg
b2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0IHNlcXVl
bmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KICAgICBrZXlJZHNBcnJheS0+cHVzaFN0
cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCi0gICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIs
IFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKKyAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIl9zLCBX
VEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9K
U09OU3RyaW5nKCkudXRmOCgpOwogICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBq
c29uRGF0YS5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CkBAIC01OTIsNyAr
NTkyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAgICAgICAgICAgICBBU1NFUlQo
a2V5LT5pZCgpLnNpemUoKSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
OwogICAgICAgICAgICAgICAgIGFycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3Ry
aW5nKGtleS0+aWQoKS5kYXRhKCksIGtleS0+aWQoKS5zaXplKCkpKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJvb3RPYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShhcnJheSkp
OworICAgICAgICAgICAgcm9vdE9iamVjdC0+c2V0QXJyYXkoImtpZHMiX3MsIFdURk1vdmUoYXJy
YXkpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwCmluZGV4IDNlNzdhYjc5NGNkNTFhZjYyZTI3MGUzNWFjYWJjYmE5Zjhm
NTEwYTguLmNmNWYwMzUxYmQ1N2JkNTA4MjA4YWQxNjljZTAzNDYxZTg5YmViZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC01MjMsNyArNTIzLDcgQEAg
Ym9vbCBGb250Ojppc1Byb2JhYmx5T25seVVzZWRUb1JlbmRlckljb25zKCkgY29uc3QKIFN0cmlu
ZyBGb250OjpkZXNjcmlwdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKG9yaWdpbigpID09IE9yaWdp
bjo6UmVtb3RlKQotICAgICAgICByZXR1cm4gIltjdXN0b20gZm9udF0iOworICAgICAgICByZXR1
cm4gIltjdXN0b20gZm9udF0iX3M7CiAKICAgICByZXR1cm4gcGxhdGZvcm1EYXRhKCkuZGVzY3Jp
cHRpb24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NUeXBlcy5jcHAKaW5kZXggMjg4YjhhNWYwMDAwNmVjN2IzZTFjMmNhNWFjNjZkYWFhYzFl
MjU2My4uMTU3ZDgzMDlhZTNiNjU2MDEzZGQ3ZGFhZWMyMWY5MjhmOTdjMTM2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKQEAg
LTM1LDQyICszNSw0MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCBjb21wb3NpdGVPcGVyYXRvck5hbWVzW10gPSB7Ci0gICAgImNsZWFyIiwKLSAg
ICAiY29weSIsCi0gICAgInNvdXJjZS1vdmVyIiwKLSAgICAic291cmNlLWluIiwKLSAgICAic291
cmNlLW91dCIsCi0gICAgInNvdXJjZS1hdG9wIiwKLSAgICAiZGVzdGluYXRpb24tb3ZlciIsCi0g
ICAgImRlc3RpbmF0aW9uLWluIiwKLSAgICAiZGVzdGluYXRpb24tb3V0IiwKLSAgICAiZGVzdGlu
YXRpb24tYXRvcCIsCi0gICAgInhvciIsCi0gICAgImRhcmtlciIsCi0gICAgImxpZ2h0ZXIiLAot
ICAgICJkaWZmZXJlbmNlIgorc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgY29tcG9zaXRl
T3BlcmF0b3JOYW1lc1tdID0geworICAgICJjbGVhciJfcywKKyAgICAiY29weSJfcywKKyAgICAi
c291cmNlLW92ZXIiX3MsCisgICAgInNvdXJjZS1pbiJfcywKKyAgICAic291cmNlLW91dCJfcywK
KyAgICAic291cmNlLWF0b3AiX3MsCisgICAgImRlc3RpbmF0aW9uLW92ZXIiX3MsCisgICAgImRl
c3RpbmF0aW9uLWluIl9zLAorICAgICJkZXN0aW5hdGlvbi1vdXQiX3MsCisgICAgImRlc3RpbmF0
aW9uLWF0b3AiX3MsCisgICAgInhvciJfcywKKyAgICAiZGFya2VyIl9zLAorICAgICJsaWdodGVy
Il9zLAorICAgICJkaWZmZXJlbmNlIl9zCiB9OwogCi1zdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
YmxlbmRPcGVyYXRvck5hbWVzW10gPSB7Ci0gICAgIm5vcm1hbCIsCi0gICAgIm11bHRpcGx5IiwK
LSAgICAic2NyZWVuIiwKLSAgICAiZGFya2VuIiwKLSAgICAibGlnaHRlbiIsCi0gICAgIm92ZXJs
YXkiLAotICAgICJjb2xvci1kb2RnZSIsCi0gICAgImNvbG9yLWJ1cm4iLAotICAgICJoYXJkLWxp
Z2h0IiwKLSAgICAic29mdC1saWdodCIsCi0gICAgImRpZmZlcmVuY2UiLAotICAgICJleGNsdXNp
b24iLAotICAgICJodWUiLAotICAgICJzYXR1cmF0aW9uIiwKLSAgICAiY29sb3IiLAotICAgICJs
dW1pbm9zaXR5IiwKLSAgICAicGx1cy1kYXJrZXIiLAotICAgICJwbHVzLWxpZ2h0ZXIiCitzdGF0
aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBibGVuZE9wZXJhdG9yTmFtZXNbXSA9IHsKKyAgICAi
bm9ybWFsIl9zLAorICAgICJtdWx0aXBseSJfcywKKyAgICAic2NyZWVuIl9zLAorICAgICJkYXJr
ZW4iX3MsCisgICAgImxpZ2h0ZW4iX3MsCisgICAgIm92ZXJsYXkiX3MsCisgICAgImNvbG9yLWRv
ZGdlIl9zLAorICAgICJjb2xvci1idXJuIl9zLAorICAgICJoYXJkLWxpZ2h0Il9zLAorICAgICJz
b2Z0LWxpZ2h0Il9zLAorICAgICJkaWZmZXJlbmNlIl9zLAorICAgICJleGNsdXNpb24iX3MsCisg
ICAgImh1ZSJfcywKKyAgICAic2F0dXJhdGlvbiJfcywKKyAgICAiY29sb3IiX3MsCisgICAgImx1
bWlub3NpdHkiX3MsCisgICAgInBsdXMtZGFya2VyIl9zLAorICAgICJwbHVzLWxpZ2h0ZXIiX3MK
IH07CiBjb25zdCB1aW50OF90IG51bUNvbXBvc2l0ZU9wZXJhdG9yTmFtZXMgPSBXVEZfQVJSQVlf
TEVOR1RIKGNvbXBvc2l0ZU9wZXJhdG9yTmFtZXMpOwogY29uc3QgdWludDhfdCBudW1CbGVuZE9w
ZXJhdG9yTmFtZXMgPSBXVEZfQVJSQVlfTEVOR1RIKGJsZW5kT3BlcmF0b3JOYW1lcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5lcmljQ3Vl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUu
Y3BwCmluZGV4IDNlYzgwMDVmMzhiNmRlNmExNTVjMzA1Zjc1OGM1YjA5ODlkOWU3ZDEuLjhlNzM4
ZjdmMDRiNzA1MTlhMTY3ZWMyYTk5NmI0N2Y4ODc1ZmVmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuY3BwCkBAIC01MCwy
MiArNTAsMjIgQEAgU3RyaW5nIEluYmFuZEdlbmVyaWNDdWU6OnRvSlNPTlN0cmluZygpIGNvbnN0
CiAgICAgb2JqZWN0LT5zZXREb3VibGUoInN0YXJ0Il9zLCBtX2N1ZURhdGEubV9zdGFydFRpbWUu
dG9Eb3VibGUoKSk7CiAgICAgb2JqZWN0LT5zZXREb3VibGUoImVuZCJfcywgbV9jdWVEYXRhLm1f
ZW5kVGltZS50b0RvdWJsZSgpKTsKIAotICAgIGNvbnN0IGNoYXIqIHN0YXR1cyA9ICIiOworICAg
IEFTQ0lJTGl0ZXJhbCBzdGF0dXMgPSAiIl9zOwogICAgIHN3aXRjaCAobV9jdWVEYXRhLm1fc3Rh
dHVzKSB7CiAgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpVbmluaXRpYWxpemVkOgot
ICAgICAgICBzdGF0dXMgPSAiVW5pbml0aWFsaXplZCI7CisgICAgICAgIHN0YXR1cyA9ICJVbmlu
aXRpYWxpemVkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpT
dGF0dXM6OlBhcnRpYWw6Ci0gICAgICAgIHN0YXR1cyA9ICJQYXJ0aWFsIjsKKyAgICAgICAgc3Rh
dHVzID0gIlBhcnRpYWwiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2VuZXJpY0N1ZURh
dGE6OlN0YXR1czo6Q29tcGxldGU6Ci0gICAgICAgIHN0YXR1cyA9ICJDb21wbGV0ZSI7CisgICAg
ICAgIHN0YXR1cyA9ICJDb21wbGV0ZSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG9i
amVjdC0+c2V0U3RyaW5nKCJzdGF0dXMiLCBzdGF0dXMpOworICAgIG9iamVjdC0+c2V0U3RyaW5n
KCJzdGF0dXMiX3MsIHN0YXR1cyk7CiAKICAgICBpZiAoIW1fY3VlRGF0YS5tX2lkLmlzRW1wdHko
KSkKLSAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImlkIiwgbV9jdWVEYXRhLm1faWQpOworICAg
ICAgICBvYmplY3QtPnNldFN0cmluZygiaWQiX3MsIG1fY3VlRGF0YS5tX2lkKTsKIAogICAgIGlm
IChtX2N1ZURhdGEubV9saW5lID4gMCkKICAgICAgICAgb2JqZWN0LT5zZXREb3VibGUoImxpbmUi
X3MsIG1fY3VlRGF0YS5tX2xpbmUpOwpAQCAtNzcsMTkgKzc3LDE5IEBAIFN0cmluZyBJbmJhbmRH
ZW5lcmljQ3VlOjp0b0pTT05TdHJpbmcoKSBjb25zdAogICAgICAgICBvYmplY3QtPnNldERvdWJs
ZSgicG9zaXRpb24iX3MsIG1fY3VlRGF0YS5tX3Bvc2l0aW9uKTsKIAogICAgIGlmIChtX2N1ZURh
dGEubV9hbGlnbiAhPSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpOb25lKSB7Ci0gICAgICAg
IGNvbnN0IGNoYXIqIGFsaWduID0gIiI7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBhbGlnbiA9ICIi
X3M7CiAgICAgICAgIHN3aXRjaCAobV9jdWVEYXRhLm1fYWxpZ24pIHsKICAgICAgICAgY2FzZSBH
ZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50OjpTdGFydDoKLSAgICAgICAgICAgIGFsaWduID0gIlN0
YXJ0IjsKKyAgICAgICAgICAgIGFsaWduID0gIlN0YXJ0Il9zOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkFsaWdubWVudDo6TWlkZGxlOgotICAgICAg
ICAgICAgYWxpZ24gPSAiTWlkZGxlIjsKKyAgICAgICAgICAgIGFsaWduID0gIk1pZGRsZSJfczsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1l
bnQ6OkVuZDoKLSAgICAgICAgICAgIGFsaWduID0gIkVuZCI7CisgICAgICAgICAgICBhbGlnbiA9
ICJFbmQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZW5lcmljQ3VlRGF0
YTo6QWxpZ25tZW50OjpOb25lOgotICAgICAgICAgICAgYWxpZ24gPSAiTm9uZSI7CisgICAgICAg
ICAgICBhbGlnbiA9ICJOb25lIl9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImFsaWduIl9zLCBhbGlnbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNmY0OWFmMDQ2
ZDEyNDYzYTRkZWZhOWYxNDg5YTcxNTMyYThkYWY4YS4uZWRkOTMxMGI1NmIwYWM4ODlhMmM5MzIx
MWNhYjA4YTM0YWNkNzQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHBsYXkoKSBmaW5hbCB7IH0KICAgICB2b2lkIHBhdXNlKCkgZmluYWwgeyB9CiAKLSAgICBTdHJp
bmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTnVsbE1lZGlhUGxh
eWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJOdWxsTWVkaWFQbGF5ZXIiX3M7IH0KIAogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlw
dGlvblV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCmluZGV4IDYyZDQ5MWQyODc5
NDYxNzUwNzgwMTRhMDk0NWIyNjIyNmUyZGViZjAuLjAzYmVmZjk5MzdhZjY0MWM4NzljOWE2ZDhj
MzE0YzFmMDE1NzdmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0
aW9uVXRpbGl0aWVzLmNwcApAQCAtMTAyLDE0ICsxMDIsMTQgQEAgU3RyaW5nIGNvZGVjRnJvbUZv
cm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24p
CiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9uc0RpY3QgPSBzdGF0
aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KFBBTDo6Q01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVu
c2lvbihmb3JtYXREZXNjcmlwdGlvbiwgUEFMOjpnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2Ny
aXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMoKSkpOwogICAg
ICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zRGljdCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gImF2YzEiOworICAgICAgICAgICAgICAgIHJldHVybiAiYXZjMSJfczsKICAgICAgICAgICAg
IGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJhdmNDIikpKTsKICAgICAg
ICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKLSAgICAgICAgICAgICAgICByZXR1cm4gImF2
YzEiOworICAgICAgICAgICAgICAgIHJldHVybiAiYXZjMSJfczsKICAgICAgICAgICAgIGF1dG8g
Y29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4
dGVuc2lvbnMpOwogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VBVkNEZWNvZGVy
Q29uZmlndXJhdGlvblJlY29yZChjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAg
ICAgIGlmICghcGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICByZXR1cm4gImF2YzEiOworICAg
ICAgICAgICAgICAgIHJldHVybiAiYXZjMSJfczsKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVB
VkNDb2RlY1BhcmFtZXRlcnNTdHJpbmcoKnBhcmFtZXRlcnMpOwogICAgICAgICB9CiAgICAgY2Fz
ZSBrQ01WaWRlb0NvZGVjVHlwZV9IRVZDOgpAQCAtMTE4LDE0ICsxMTgsMTQgQEAgU3RyaW5nIGNv
ZGVjRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVz
Y3JpcHRpb24pCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9uc0Rp
Y3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KFBBTDo6Q01Gb3JtYXREZXNjcmlwdGlv
bkdldEV4dGVuc2lvbihmb3JtYXREZXNjcmlwdGlvbiwgUEFMOjpnZXRfQ29yZU1lZGlhX2tDTUZv
cm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMo
KSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zRGljdCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gImh2YzEiOworICAgICAgICAgICAgICAgIHJldHVybiAiaHZjMSJfczsKICAg
ICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4o
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJodmNDIikp
KTsKICAgICAgICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gImh2YzEiOworICAgICAgICAgICAgICAgIHJldHVybiAiaHZjMSJfczsKICAgICAgICAg
ICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHNhbXBsZUV4dGVuc2lvbnMpOwogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VI
RVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoa0NNVmlkZW9Db2RlY1R5cGVfSEVWQywgY29u
ZmlndXJhdGlvblJlY29yZEJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuICJodmMxIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gImh2
YzEiX3M7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSEVWQ0NvZGVjUGFyYW1ldGVyc1N0cmlu
ZygqcGFyYW1ldGVycyk7CiAgICAgICAgIH0KICAgICBjYXNlIGtDTVZpZGVvQ29kZWNUeXBlX0Rv
bGJ5VmlzaW9uSEVWQzoKQEAgLTEzMyw0MyArMTMzLDQzIEBAIFN0cmluZyBjb2RlY0Zyb21Gb3Jt
YXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQog
ICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIHNhbXBsZUV4dGVuc2lvbnNEaWN0ID0gc3RhdGlj
X2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihQQUw6OkNNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNp
b24oZm9ybWF0RGVzY3JpcHRpb24sIFBBTDo6Z2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlw
dGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zKCkpKTsKICAgICAg
ICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9uc0RpY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJu
ICJkdmgxIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gImR2aDEiX3M7CiAgICAgICAgICAgICBh
dXRvIHNhbXBsZUV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFy
eUdldFZhbHVlKHNhbXBsZUV4dGVuc2lvbnNEaWN0LCBDRlNUUigiZHZjQyIpKSk7CiAgICAgICAg
ICAgICBpZiAoIXNhbXBsZUV4dGVuc2lvbnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuICJkdmgx
IjsKKyAgICAgICAgICAgICAgICByZXR1cm4gImR2aDEiX3M7CiAgICAgICAgICAgICBhdXRvIGNv
bmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRl
bnNpb25zKTsKICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBhcnNlRG9WaURlY29kZXJD
b25maWd1cmF0aW9uUmVjb3JkKGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIpOwogICAgICAgICAg
ICAgaWYgKCFwYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7CisgICAg
ICAgICAgICAgICAgcmV0dXJuICJkdmgxIl9zOwogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZURv
VmlDb2RlY1BhcmFtZXRlcnNTdHJpbmcoKnBhcmFtZXRlcnMpOwogICAgICAgICB9CiAgICAgY2Fz
ZSBrQ01WaWRlb0NvZGVjVHlwZV9NUEVHNFZpZGVvOgotICAgICAgICByZXR1cm4gIm1wNHYiOwor
ICAgICAgICByZXR1cm4gIm1wNHYiX3M7CiAgICAgY2FzZSBrQ01WaWRlb0NvZGVjVHlwZV9WUDk6
Ci0gICAgICAgIHJldHVybiAidnAwOSI7CisgICAgICAgIHJldHVybiAidnAwOSJfczsKICAgICBj
YXNlIGtBdWRpb0Zvcm1hdEFDMzoKLSAgICAgICAgcmV0dXJuICJhYy0zIjsKKyAgICAgICAgcmV0
dXJuICJhYy0zIl9zOwogICAgIGNhc2Uga0F1ZGlvRm9ybWF0TVBFRzRBQUM6Ci0gICAgICAgIHJl
dHVybiAibXA0YS40MC4yIjsKKyAgICAgICAgcmV0dXJuICJtcDRhLjQwLjIiX3M7CiAgICAgY2Fz
ZSBrQXVkaW9Gb3JtYXRNUEVHNEFBQ19IRToKLSAgICAgICAgcmV0dXJuICJtcDRhLjQwLjUiOwor
ICAgICAgICByZXR1cm4gIm1wNGEuNDAuNSJfczsKICAgICBjYXNlIGtBdWRpb0Zvcm1hdE1QRUc0
QUFDX0hFX1YyOgotICAgICAgICByZXR1cm4gIm1wNGEuNDAuMjkiOworICAgICAgICByZXR1cm4g
Im1wNGEuNDAuMjkiX3M7CiAgICAgY2FzZSBrQXVkaW9Gb3JtYXRNUEVHNEFBQ19MRDoKLSAgICAg
ICAgcmV0dXJuICJtcDRhLjQwLjIzIjsKKyAgICAgICAgcmV0dXJuICJtcDRhLjQwLjIzIl9zOwog
ICAgIGNhc2Uga0F1ZGlvRm9ybWF0TVBFRzRBQUNfRUxEOgotICAgICAgICByZXR1cm4gIm1wNGEu
NDAuMzkiOworICAgICAgICByZXR1cm4gIm1wNGEuNDAuMzkiX3M7CiAgICAgY2FzZSBrQXVkaW9G
b3JtYXRGTEFDOgotICAgICAgICByZXR1cm4gImZsYWMiOworICAgICAgICByZXR1cm4gImZsYWMi
X3M7CiAgICAgY2FzZSBrQXVkaW9Gb3JtYXRPcHVzOgotICAgICAgICByZXR1cm4gIm9wdXMiOwor
ICAgICAgICByZXR1cm4gIm9wdXMiX3M7CiAgICAgY2FzZSBrQXVkaW9Gb3JtYXRFbmhhbmNlZEFD
MzoKICAgICBjYXNlICdlYyszJzoKICAgICBjYXNlICdxZWMzJzoKICAgICBjYXNlICdjZS0zJzoK
LSAgICAgICAgcmV0dXJuICJlYy0zIjsKKyAgICAgICAgcmV0dXJuICJlYy0zIl9zOwogICAgIGNh
c2UgJ2R0cyAnOgotICAgICAgICByZXR1cm4gImR0cyI7CisgICAgICAgIHJldHVybiAiZHRzIl9z
OwogICAgIH0KIAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXgg
Yjg2NmM3MTcxOGNiZmM1NDRhZTU3Mjc5NWYzYTQ0MzVlZGM5ODJlYy4uZGFlZmNiNzY3M2VmZDNm
OGYwOGNiMDgzZGY4YjcyYTdlZGQ5NGZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0zMTAyLDcgKzMx
MDIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQW5pbWF0aW9ucygpCiAgICAgYXV0
byBjdXJyZW50VGltZSA9IFNlY29uZHMoQ0FDdXJyZW50TWVkaWFUaW1lKCkpOwogCiAgICAgYXV0
byBhZGRBbmltYXRpb25Hcm91cCA9IFsmXShBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNv
bnN0IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4+JiBhbmltYXRpb25zKSB7Ci0g
ICAgICAgIGF1dG8gY2FBbmltYXRpb25Hcm91cCA9IGNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24o
UGxhdGZvcm1DQUFuaW1hdGlvbjo6R3JvdXAsICIiKTsKKyAgICAgICAgYXV0byBjYUFuaW1hdGlv
bkdyb3VwID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpH
cm91cCwgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIGNhQW5pbWF0aW9uR3JvdXAtPnNldER1cmF0
aW9uKGluZmluaXRlRHVyYXRpb24pOwogICAgICAgICBjYUFuaW1hdGlvbkdyb3VwLT5zZXRBbmlt
YXRpb25zKGFuaW1hdGlvbnMpOwogCkBAIC00ODIwLDIyICs0ODIwLDIyIEBAIHN0YXRpYyBTdHJp
bmcgYW5pbWF0ZWRQcm9wZXJ0eUlEQXNTdHJpbmcoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5
KQogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVNjYWxlOgogICAgIGNhc2UgQW5pbWF0ZWRQcm9w
ZXJ0eVJvdGF0ZToKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm06Ci0gICAgICAg
IHJldHVybiAidHJhbnNmb3JtIjsKKyAgICAgICAgcmV0dXJuICJ0cmFuc2Zvcm0iX3M7CiAgICAg
Y2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eToKLSAgICAgICAgcmV0dXJuICJvcGFjaXR5IjsK
KyAgICAgICAgcmV0dXJuICJvcGFjaXR5Il9zOwogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcjoKLSAgICAgICAgcmV0dXJuICJiYWNrZ3JvdW5kLWNvbG9yIjsKKyAgICAg
ICAgcmV0dXJuICJiYWNrZ3JvdW5kLWNvbG9yIl9zOwogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0
eUZpbHRlcjoKLSAgICAgICAgcmV0dXJuICJmaWx0ZXIiOworICAgICAgICByZXR1cm4gImZpbHRl
ciJfczsKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQogICAgIGNhc2UgQW5pbWF0ZWRQcm9w
ZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyOgotICAgICAgICByZXR1cm4gImJhY2tkcm9wLWZpbHRl
ciI7CisgICAgICAgIHJldHVybiAiYmFja2Ryb3AtZmlsdGVyIl9zOwogI2VuZGlmCiAgICAgY2Fz
ZSBBbmltYXRlZFByb3BlcnR5SW52YWxpZDoKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuICIiX3M7CiB9CiAKIFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBkb3VibGU+PiBHcmFwaGljc0xheWVyQ0E6OmFjY2VsZXJhdGVkQW5pbWF0aW9u
c0ZvclRlc3RpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCBlNmNlMmZiOTcyNDdhNmI4
NmMwOWIxYWQzNjE3MDFjMmVjM2U4NjI1Li40Njg5YjEwNjRlNDgzZjZkZTlmMDY3NmFlNDY3ZDc0
NTZjYzY2NGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBQREZEb2N1bWVu
dEltYWdlOjp+UERGRG9jdW1lbnRJbWFnZSgpID0gZGVmYXVsdDsKIAogU3RyaW5nIFBERkRvY3Vt
ZW50SW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gInBkZiI7
CisgICAgcmV0dXJuICJwZGYiX3M7CiB9CiAKIEZsb2F0U2l6ZSBQREZEb2N1bWVudEltYWdlOjpz
aXplKEltYWdlT3JpZW50YXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCmluZGV4IDg0
MjIxMGIzNzEyN2ZlOGVlZWU5YWNjMjNjY2M5NmMwNGQ4YzU3YTEuLjQwMWE1MmUzZmRkY2Y1ZjRl
ZjFkY2IwNDNmOWEwYzczODAyNTNhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCkBAIC01OTcs
NyArNTk3LDcgQEAgUmVmPFZpZGVvSW5mbz4gY3JlYXRlVmlkZW9JbmZvRnJvbVZQOUhlYWRlclBh
cnNlcihjb25zdCB2cDlfcGFyc2VyOjpWcDlIZWFkZXJQYXIKIHsKICAgICBWUENvZGVjQ29uZmln
dXJhdGlvblJlY29yZCByZWNvcmQ7CiAKLSAgICByZWNvcmQuY29kZWNOYW1lID0gInZwMDkiOwor
ICAgIHJlY29yZC5jb2RlY05hbWUgPSAidnAwOSJfczsKICAgICByZWNvcmQucHJvZmlsZSA9IHBh
cnNlci5wcm9maWxlKCk7CiAgICAgLy8gQ29yZU1lZGlhIGRvZXMgbmF0IGNhcmUgYWJvdXQgdGhl
IFZQOSBjb2RlYyBsZXZlbDsgaGFyZC1jb2RlIHRvIExldmVsIDEuMCBoZXJlOgogICAgIHJlY29y
ZC5sZXZlbCA9IDEwOwpAQCAtNjkzLDcgKzY5Myw3IEBAIHN0ZDo6b3B0aW9uYWw8VlA4RnJhbWVI
ZWFkZXI+IHBhcnNlVlA4RnJhbWVIZWFkZXIoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXpl
CiBSZWY8VmlkZW9JbmZvPiBjcmVhdGVWaWRlb0luZm9Gcm9tVlA4SGVhZGVyKGNvbnN0IFZQOEZy
YW1lSGVhZGVyJiBoZWFkZXIsIGNvbnN0IHdlYm06OkVsZW1lbnQ8Q29sb3VyPiYgY29sb3IpCiB7
CiAgICAgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgcmVjb3JkOwotICAgIHJlY29yZC5jb2Rl
Y05hbWUgPSAidnAwOCI7CisgICAgcmVjb3JkLmNvZGVjTmFtZSA9ICJ2cDA4Il9zOwogICAgIHJl
Y29yZC5wcm9maWxlID0gMDsKICAgICByZWNvcmQubGV2ZWwgPSAxMDsKICAgICByZWNvcmQuYml0
RGVwdGggPSA4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKaW5kZXggNTc3YjExMDAw
YmUxMzU3ZjIzNWE5MTdhZjQ3NTVhYmE3ZGRhZDhiMC4uMDVkNWI5MDU3MGYyOGZhYjRiMjgyYjZh
NzJjM2MxNTNiZmYzZmZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCkBAIC05
NywxMCArOTcsMTAgQEAgU3RyaW5nIFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6Y29kZWMoKSBjb25z
dAogCiAgICAgLy8gVE9ETzogU3BlY2lmaWMgY29kZWMgcGFyYW1ldGVycyBhcmUgcGFyc2VkIG91
dCBvZiB0aGUgc2FtcGxlIGhlYWRlcjsgdGhleSBhcmVuJ3QgdHlwaWNhbGx5IGNvbnRhaW5lZCBp
biB0aGUgV2ViTSBUcmFjayBlbGVtZW50LgogICAgIGlmIChjb2RlY0lEID09ICJWX1ZQOSIpCi0g
ICAgICAgIHJldHVybiAidnAwOSI7CisgICAgICAgIHJldHVybiAidnAwOSJfczsKIAogICAgIGlm
IChjb2RlY0lEID09ICJWX1ZQOCIpCi0gICAgICAgIHJldHVybiAidnAwOCI7CisgICAgICAgIHJl
dHVybiAidnAwOCJfczsKIAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKaW5k
ZXggNDE4ZWMwZDcxMzI4YmRmOTFjNDVmMjI0NDQwNDdmMTgwMGQ0MDk5Mi4uOWI5MDFjNDdjYWNi
ODQxOTVkYzY5YmNkNzUxYmZjYTBkNmFmZmE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCkBAIC02Miw3ICs2Miw3IEBA
IFRleHRTdHJlYW0mIEZFQmxlbmQ6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYg
dHMsIEZpbHRlclJlcHJlc2VudGF0aW9uCiAgICAgdHMgPDwgaW5kZW50IDw8ICJbZmVCbGVuZCI7
CiAgICAgRmlsdGVyRWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzLCByZXByZXNlbnRh
dGlvbik7CiAKLSAgICB0cyA8PCAiIG1vZGU9XCIiIDw8IChtX21vZGUgPT0gQmxlbmRNb2RlOjpO
b3JtYWwgPyAibm9ybWFsIiA6IGNvbXBvc2l0ZU9wZXJhdG9yTmFtZShDb21wb3NpdGVPcGVyYXRv
cjo6U291cmNlT3ZlciwgbV9tb2RlKSk7CisgICAgdHMgPDwgIiBtb2RlPVwiIiA8PCAobV9tb2Rl
ID09IEJsZW5kTW9kZTo6Tm9ybWFsID8gIm5vcm1hbCJfcyA6IGNvbXBvc2l0ZU9wZXJhdG9yTmFt
ZShDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlciwgbV9tb2RlKSk7CiAKICAgICB0cyA8PCAi
XCJdXG4iOwogICAgIHJldHVybiB0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwCmluZGV4IGQ5MjAzZmM4MWJjYTkzNGExNGIzNmVhYmNjZWNmM2IyY2QzMTQ2NTkuLmNhYWFi
NmZjNTk4YjM5MGVhNTQ1MzRhYWUwOThjNDhjOWM5MjQ2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmNwcApAQCAtMzY2LDExICszNjYsMTEgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVw
dGhTdGVuY2kKICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwogICAgIH0KICAg
ICBpZiAoYXR0cnMuYW50aWFsaWFzICYmICFtX2lzRm9yV2ViR0wyKSB7Ci0gICAgICAgIGlmICgh
c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikpIHsK
KyAgICAgICAgaWYgKCFzdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVs
dGlzYW1wbGUiX3MpKSB7CiAgICAgICAgICAgICBhdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKICAg
ICAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJzKTsKICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZSIpOworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5H
TEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiX3MpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1F1aWNrTG9vay5oCmluZGV4IDBhNmVmYWVmM2U4NjFlZjU5ZmQ0Mjg5Y2Vm
OTExYzc3OGRhNzBjYTEuLjI2NjZlZThjMWExNzhjY2ExNTY2YTdmODQ3OTllYTg4ODBjYzYwMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmgKQEAgLTQxLDYgKzQxLDYg
QEAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVnaXN0ZXJRTFByZXZp
ZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTAogV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1F1aWNrTG9v
a1ByZXZpZXdVUkwoY29uc3QgVVJMJik7CiBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqY3JlYXRl
VGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vayhOU1N0cmluZyAqZmlsZU5hbWUpOwogCi1leHRlcm4g
Y29uc3QgY2hhciogUUxQcmV2aWV3UHJvdG9jb2w7CitzdGF0aWMgY29uc3RleHByIGF1dG8gUUxQ
cmV2aWV3UHJvdG9jb2wgPSAieC1hcHBsZS1xbC1pZCJfczsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KaW5kZXggZTNjMzA3
YzgxZTFiOWM3ZjI5ZjAzZWI0MzIzYTgxZjNhODllOTFlZi4uMmZhMjc2OWQ5MzEzMDQ4MDIyYzIy
OTFkY2UzZTU3OTg3ODJiNDE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tM
b29rLm1tCkBAIC0zOCw4ICszOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3Qg
Y2hhciogUUxQcmV2aWV3UHJvdG9jb2wgPSAieC1hcHBsZS1xbC1pZCI7Ci0KIE5TU2V0ICpRTFBy
ZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNTZXQ+PiBzZXQgPSBQQUw6OnNvZnRMaW5rX1F1aWNrTG9va19RTFBy
ZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5jcHAKaW5kZXggMDA3NGQxNDQ5NWU5Y2YxMGNlMDU0YjllZjA5YjQxYjc3ZDZiODZkZS4uYWEw
ZTg0MmM2NDU4ODYwYzRhNThiYWNmNGYxNzE2OWQwNThmMWUyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBTdHJpbmcgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6aGFzaFN0cmluZ1dpdGhTYWx0KGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0
IFN0cgogICAgIFNIQTE6OkRpZ2VzdCBkaWdlc3Q7CiAgICAgc2hhMS5jb21wdXRlSGFzaChkaWdl
c3QpOwogICAgIAotICAgIHJldHVybiBTSEExOjpoZXhEaWdlc3QoZGlnZXN0KS5kYXRhKCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNIQTE6OmhleERpZ2VzdChkaWdlc3QpLmRhdGEoKSB9OwogfQog
CiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmFkZERldmljZXNDaGFuZ2VkT2JzZXJ2
ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svUlRDTm90aWZpZXJzTW9jay5jcHAKaW5kZXggMmM3YzQxYmQ2OTZmZjFmOWJhYjM4MzgxYTRi
NTgzODU2OGIxOGE0ZS4uODNiYzllZTIwZDhjNmI0NDMwZTVmNjQ5M2Y0NWMyZjFkNTUxNDlkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2Nr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2su
Y3BwCkBAIC05OCw3ICs5OCw3IEBAIFJlbW90ZURhdGFDaGFubmVsTm90aWZpZXI6OlJlbW90ZURh
dGFDaGFubmVsTm90aWZpZXIoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpCiAKIHZvaWQgUmVt
b3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6ZmlyZSgpCiB7Ci0gICAgbV9jbGllbnQtPmRpZEFkZFJl
bW90ZURhdGFDaGFubmVsKG1ha2VVbmlxdWU8UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jaz4oIlJU
Q0RhdGFDaGFubmVsSGFuZGxlck1vY2siLCBSVENEYXRhQ2hhbm5lbEluaXQoKSkpOworICAgIG1f
Y2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChtYWtlVW5pcXVlPFJUQ0RhdGFDaGFubmVs
SGFuZGxlck1vY2s+KCJSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIl9zLCBSVENEYXRhQ2hhbm5l
bEluaXQoKSkpOwogfQogCiBEYXRhQ2hhbm5lbFN0YXRlTm90aWZpZXI6OkRhdGFDaGFubmVsU3Rh
dGVOb3RpZmllcihSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNsaWVudCwgUlRDRGF0YUNo
YW5uZWxTdGF0ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrLmNwcAppbmRleCA1OTZiZWViNjEzM2EwNmJi
MzhlNTNjZjU3N2EzODk5Y2FkY2RlM2RjLi4zMDA0N2Y5NzFmNzE0NDlhNzdjOWFkM2U5YWFlMzRh
NmQzMTQwZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9s
bGJhcnNDb250cm9sbGVyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9TY3JvbGxiYXJzQ29udHJvbGxlck1vY2suY3BwCkBAIC03MCwxOSArNzAsMTkgQEAgdm9pZCBT
Y3JvbGxiYXJzQ29udHJvbGxlck1vY2s6OndpbGxSZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKFNj
cm9sbGJhciogc2Nyb2xsYmEKIAogdm9pZCBTY3JvbGxiYXJzQ29udHJvbGxlck1vY2s6Om1vdXNl
RW50ZXJlZENvbnRlbnRBcmVhKCkKIHsKLSAgICBtX2xvZ2dlcigibW91c2VFbnRlcmVkQ29udGVu
dEFyZWEiKTsKKyAgICBtX2xvZ2dlcigibW91c2VFbnRlcmVkQ29udGVudEFyZWEiX3MpOwogICAg
IFNjcm9sbGJhcnNDb250cm9sbGVyOjptb3VzZUVudGVyZWRDb250ZW50QXJlYSgpOwogfQogCiB2
b2lkIFNjcm9sbGJhcnNDb250cm9sbGVyTW9jazo6bW91c2VNb3ZlZEluQ29udGVudEFyZWEoKQog
ewotICAgIG1fbG9nZ2VyKCJtb3VzZU1vdmVkSW5Db250ZW50QXJlYSIpOworICAgIG1fbG9nZ2Vy
KCJtb3VzZU1vdmVkSW5Db250ZW50QXJlYSJfcyk7CiAgICAgU2Nyb2xsYmFyc0NvbnRyb2xsZXI6
Om1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKCk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyc0NvbnRyb2xs
ZXJNb2NrOjptb3VzZUV4aXRlZENvbnRlbnRBcmVhKCkKIHsKLSAgICBtX2xvZ2dlcigibW91c2VF
eGl0ZWRDb250ZW50QXJlYSIpOworICAgIG1fbG9nZ2VyKCJtb3VzZUV4aXRlZENvbnRlbnRBcmVh
Il9zKTsKICAgICBTY3JvbGxiYXJzQ29udHJvbGxlcjo6bW91c2VFeGl0ZWRDb250ZW50QXJlYSgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCmluZGV4
IGU5NDNmODZkOGI4YTRiZjEzYTQ0MDhiNmE0ZTRkZDA3MjAxNmZjNjQuLjYwODgwYTAxNWVlM2Qx
NTU5ODRhMDBjMjIzZWFiZTUxODE4NDA3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UuY3BwCkBAIC02NCw4ICs2NCw4IEBAIHZvaWQgTW9ja01lZGlhUGxheWVy
TWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVn
aXN0CiBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIG1pbWVUeXBlQ2FjaGUoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBjYWNoZSA9
IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsKLSAgICAgICAgInZp
ZGVvL21vY2siLAotICAgICAgICAiYXVkaW8vbW9jayIsCisgICAgICAgICJ2aWRlby9tb2NrIl9z
LAorICAgICAgICAiYXVkaW8vbW9jayJfcywKICAgICB9OwogICAgIHJldHVybiBjYWNoZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNl
SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNl
SGFuZGxlLmNwcAppbmRleCAwOThhNzQyZTc1ZTVlOGUxMDc2MTdlN2Q4MTE0YmRmZWZmN2U5YTE3
Li4xZTU5ZDRkMWE2YmZhZWM3NGRmZTM2ZDc4NDk5MDRmOTQxNGY1ZjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3Bw
CkBAIC01OSwxMyArNTksMTMgQEAgc3RhdGljIGNvbnN0IGludCBodHRwUGFydGlhbENvbnRlbnQg
PSAyMDY7CiBzdGF0aWMgY29uc3QgaW50IGh0dHBOb3RBbGxvd2VkID0gNDAzOwogc3RhdGljIGNv
bnN0IGludCBodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZSA9IDQxNjsKIHN0YXRpYyBj
b25zdCBpbnQgaHR0cEludGVybmFsRXJyb3IgPSA1MDA7Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0
cE9LVGV4dCA9ICJPSyI7Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0cFBhcnRpYWxDb250ZW50VGV4
dCA9ICJQYXJ0aWFsIENvbnRlbnQiOwotc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBOb3RBbGxvd2Vk
VGV4dCA9ICJOb3QgQWxsb3dlZCI7Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0cFJlcXVlc3RlZFJh
bmdlTm90U2F0aXNmaWFibGVUZXh0ID0gIlJlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUi
Owotc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBJbnRlcm5hbEVycm9yVGV4dCA9ICJJbnRlcm5hbCBT
ZXJ2ZXIgRXJyb3IiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGh0dHBPS1RleHQgPSAiT0siX3M7
CitzdGF0aWMgY29uc3RleHByIGF1dG8gaHR0cFBhcnRpYWxDb250ZW50VGV4dCA9ICJQYXJ0aWFs
IENvbnRlbnQiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gaHR0cE5vdEFsbG93ZWRUZXh0ID0g
Ik5vdCBBbGxvd2VkIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGh0dHBSZXF1ZXN0ZWRSYW5n
ZU5vdFNhdGlzZmlhYmxlVGV4dCA9ICJSZXF1ZXN0ZWQgUmFuZ2UgTm90IFNhdGlzZmlhYmxlIl9z
Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGh0dHBJbnRlcm5hbEVycm9yVGV4dCA9ICJJbnRlcm5h
bCBTZXJ2ZXIgRXJyb3IiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB3ZWJLaXRCbG9i
UmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291cmNlIjsKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byB3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291cmNlIl9zOwog
CiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRl
cgpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgQmxvYlJlc291cmNlU3luY2hyb25vdXNMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kCiB7CiAgICAgLy8g
V2UgY2Fubm90IGhhbmRsZSB0aGUgc2l6ZSB0aGF0IGlzIG1vcmUgdGhhbiBtYXhpbXVtIGludGVn
ZXIuCiAgICAgaWYgKHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gSU5UX01BWCkg
ewotICAgICAgICBtX2Vycm9yID0gUmVzb3VyY2VFcnJvcih3ZWJLaXRCbG9iUmVzb3VyY2VEb21h
aW4sIHN0YXRpY19jYXN0PGludD4oQmxvYlJlc291cmNlSGFuZGxlOjpFcnJvcjo6Tm90UmVhZGFi
bGVFcnJvciksIHJlc3BvbnNlLnVybCgpLCAiRmlsZSBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAg
bV9lcnJvciA9IFJlc291cmNlRXJyb3Iod2ViS2l0QmxvYlJlc291cmNlRG9tYWluLCBzdGF0aWNf
Y2FzdDxpbnQ+KEJsb2JSZXNvdXJjZUhhbmRsZTo6RXJyb3I6Ok5vdFJlYWRhYmxlRXJyb3IpLCBy
ZXNwb25zZS51cmwoKSwgIkZpbGUgaXMgdG9vIGxhcmdlIl9zKTsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCBS
ZWY8QmxvYlJlc291cmNlSGFuZGxlPiBCbG9iUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUFzeW5jKEJs
b2JEYXRhKiBibG9iRGF0YSwgY29ucwogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoQmxvYkRhdGEqIGJsb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewogICAgIGlmICghZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UocmVxdWVzdC5odHRwTWV0aG9kKCksICJnZXQiKSkgewotICAgICAgICBl
cnJvciA9IFJlc291cmNlRXJyb3Iod2ViS2l0QmxvYlJlc291cmNlRG9tYWluLCBzdGF0aWNfY2Fz
dDxpbnQ+KEVycm9yOjpNZXRob2ROb3RBbGxvd2VkKSwgcmVzcG9uc2UudXJsKCksICJSZXF1ZXN0
IG1ldGhvZCBtdXN0IGJlIEdFVCIpOworICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3Iod2Vi
S2l0QmxvYlJlc291cmNlRG9tYWluLCBzdGF0aWNfY2FzdDxpbnQ+KEVycm9yOjpNZXRob2ROb3RB
bGxvd2VkKSwgcmVzcG9uc2UudXJsKCksICJSZXF1ZXN0IG1ldGhvZCBtdXN0IGJlIEdFVCJfcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYwMCw3ICs2MDAsNyBAQCB2b2lkIEJsb2JS
ZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9yKCkKIHsKICAgICBBU1NFUlQobV9l
cnJvckNvZGUgIT0gRXJyb3I6Ok5vRXJyb3IpOwogCi0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZShmaXJzdFJlcXVlc3QoKS51cmwoKSwgInRleHQvcGxhaW4iLCAwLCBTdHJpbmcoKSk7Cisg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShmaXJzdFJlcXVlc3QoKS51cmwoKSwgInRleHQv
cGxhaW4iX3MsIDAsIFN0cmluZygpKTsKICAgICBzd2l0Y2ggKG1fZXJyb3JDb2RlKSB7CiAgICAg
Y2FzZSBFcnJvcjo6UmFuZ2VFcnJvcjoKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0Nv
ZGUoaHR0cFJlcXVlc3RlZFJhbmdlTm90U2F0aXNmaWFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAppbmRleCA5MzFlMmNjZGE2
MmNiZDIyM2RlMjQ1Njg5YTc4MTlmMWY4YzJmZTQyLi5hZjUzZDY0MThkYzUxNjUyZjJhMTA3OTg1
N2VlMzc4ZmNhMzg0MGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgYXV0byBtZWRpYVR5cGUgPSAoaXNCYXNlNjQgPyBoZWFkZXIuc3Vic3RyaW5nKDAsIG1lZGlh
VHlwZUVuZCkgOiBoZWFkZXIpLnRvU3RyaW5nKCk7CiAgICAgICAgIG1lZGlhVHlwZSA9IHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhtZWRpYVR5cGUpOwogICAgICAgICBpZiAobWVk
aWFUeXBlLnN0YXJ0c1dpdGgoJzsnKSkKLSAgICAgICAgICAgIG1lZGlhVHlwZS5pbnNlcnQoInRl
eHQvcGxhaW4iLCAwKTsKKyAgICAgICAgICAgIG1lZGlhVHlwZS5pbnNlcnQoInRleHQvcGxhaW4i
X3MsIDApOwogCiAgICAgICAgIGlmIChzaG91bGRSZW1vdmVGcmFnbWVudElkZW50aWZpZXIobWVk
aWFUeXBlKSkKICAgICAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXgg
ZDQzNWNlYmY0ZDBmNTVmZDA2ZGU4YzAzZTFiM2E2ZjE2NGZjZjM0OS4uODE0ZWZlMDIwNzBlYWE5
NjE2OGYzMTI0MzE4YzQ5ZjMyMDE3MWI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTYyMCw3ICs2MjAsNyBAQCBzdGQ6Om9wdGlv
bmFsPHN0ZDo6cGFpcjxTdHJpbmdWaWV3LCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4+IHBhcnNl
U3RydWN0dXJlZEZpZQogICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgfQogICAgICAgICBT
dHJpbmcga2V5ID0gaGVhZGVyLnN1YnN0cmluZyhrZXlTdGFydCwgaW5kZXggLSBrZXlTdGFydCku
dG9TdHJpbmcoKTsKLSAgICAgICAgU3RyaW5nIHZhbHVlID0gInRydWUiOworICAgICAgICBTdHJp
bmcgdmFsdWUgPSAidHJ1ZSJfczsKICAgICAgICAgaWYgKGluZGV4IDwgaGVhZGVyLmxlbmd0aCgp
ICYmIGhlYWRlcltpbmRleF0gPT0gJz0nKSB7CiAgICAgICAgICAgICArK2luZGV4OyAvLyBDb25z
dW1lICc9Jy4KICAgICAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGEoaGVhZGVyW2luZGV4XSkgfHwg
aGVhZGVyW2luZGV4XSA9PSAnKicpIHsKQEAgLTc4NSw3ICs3ODUsNyBAQCBzaXplX3QgcGFyc2VI
VFRQSGVhZGVyKGNvbnN0IHVpbnQ4X3QqIHN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcmIGZh
aWx1cmVSZWFzbwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKCFpc1ZhbGlkSGVh
ZGVyTmFtZUNoYXJhY3RlcigqcCkpIHsKICAgICAgICAgICAgICAgICBpZiAobmFtZS5zaXplKCkg
PCAxKQotICAgICAgICAgICAgICAgICAgICBmYWlsdXJlUmVhc29uID0gIlVuZXhwZWN0ZWQgc3Rh
cnQgY2hhcmFjdGVyIGluIGhlYWRlciBuYW1lIjsKKyAgICAgICAgICAgICAgICAgICAgZmFpbHVy
ZVJlYXNvbiA9ICJVbmV4cGVjdGVkIHN0YXJ0IGNoYXJhY3RlciBpbiBoZWFkZXIgbmFtZSJfczsK
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVSZWFzb24g
PSBtYWtlU3RyaW5nKCJVbmV4cGVjdGVkIGNoYXJhY3RlciBpbiBoZWFkZXIgbmFtZSBhdCAiLCB0
cmltSW5wdXRTYW1wbGUobmFtZS5kYXRhKCksIG5hbWUuc2l6ZSgpKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggYjIxNzc5ZjcwOTQwOGQzMjg1NmYw
MWRkZDU0Nzk4OGFhNjQxYmMzYy4uOWE4NTdlYWRmYzFjMWY2OTRmMTI4MmYzOTZjNWY5OGM5OTNm
ODcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtMzg1LDE0ICszODUsMTQgQEAgY29uc3QgSGFz
aE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+JiBOZXR3
b3JrU3RvcmFnZVNlc3MKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxSZWdp
c3RyYWJsZURvbWFpbiwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+PiBtYXAgPSBbXSB7CiAg
ICAgICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+PiBtYXA7Ci0gICAgICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibWljcm9zb2Z0LmNvbSIpLAorICAgICAg
ICBtYXAuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFi
bGVEb21haW5TdHJpbmcoIm1pY3Jvc29mdC5jb20iX3MpLAogICAgICAgICAgICAgSGFzaFNldCB7
IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5T
dHJpbmcoIm1pY3Jvc29mdG9ubGluZS5jb20iX3MpIH0pOwotICAgICAgICBtYXAuYWRkKFJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmco
ImxpdmUuY29tIiksCisgICAgICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tl
ZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibGl2ZS5jb20iX3MpLAogICAgICAg
ICAgICAgSGFzaFNldCB7IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVn
aXN0cmFibGVEb21haW5TdHJpbmcoInNreXBlLmNvbSJfcykgfSk7Ci0gICAgICAgIG1hcC5hZGQo
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0
cmluZygicGxheXN0YXRpb24uY29tIiksIEhhc2hTZXQgeworICAgICAgICBtYXAuYWRkKFJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmco
InBsYXlzdGF0aW9uLmNvbSJfcyksIEhhc2hTZXQgewogICAgICAgICAgICAgUmVnaXN0cmFibGVE
b21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygic29ueWVu
dGVydGFpbm1lbnRuZXR3b3JrLmNvbSJfcyksCiAgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFp
bjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJzb255LmNvbSJf
cykgfSk7Ci0gICAgICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygiYmJjLmNvLnVrIiksIEhhc2hTZXQgeworICAg
ICAgICBtYXAuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0
cmFibGVEb21haW5TdHJpbmcoImJiYy5jby51ayJfcyksIEhhc2hTZXQgewogICAgICAgICAgICAg
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0
cmluZygicmFkaW9wbGF5ZXIuY28udWsiX3MpIH0pOwogICAgICAgICByZXR1cm4gbWFwOwogICAg
IH0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2Vk
Q29udGVudFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRD
b250ZW50VHlwZS5jcHAKaW5kZXggOWVmMmExNzIwZDU3MTI2ZmJlNzEyY2Q5YTJhMWQyMjIxYTFj
NGU5ZC4uYjJlN2JkZDNmOWZlZGYyODY5YTExYmM3NjNiZWM2NzQ1YjUzOWIyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5j
cHAKQEAgLTM0Nyw3ICszNDcsNyBAQCBQYXJzZWRDb250ZW50VHlwZTo6UGFyc2VkQ29udGVudFR5
cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIAogU3RyaW5nIFBhcnNlZENvbnRlbnRUeXBl
OjpjaGFyc2V0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJj
aGFyc2V0Iik7CisgICAgcmV0dXJuIHBhcmFtZXRlclZhbHVlRm9yTmFtZSgiY2hhcnNldCJfcyk7
CiB9CiAKIHZvaWQgUGFyc2VkQ29udGVudFR5cGU6OnNldENoYXJzZXQoU3RyaW5nJiYgY2hhcnNl
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXggM2ExNTJiYjJlMWY5ZGUwMjhkMDFiMzIwNDFiMmEzOWUw
MDM5YzNmNi4uZDkyYTkzYjE0MjdhYTI0NDI0YmNiY2UzNDIyNTBlOWY5ZGM5OTk2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBSZXNvdXJjZVJlc3BvbnNlIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpmaWx0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsCiAg
ICAgZmlsdGVyZWRSZXNwb25zZS5zZXRUeXBlKFR5cGU6OkNvcnMpOwogCiAgICAgYXV0byBhY2Nl
c3NDb250cm9sRXhwb3NlSGVhZGVyU2V0ID0gdmFsdWVPckRlZmF1bHQocGFyc2VBY2Nlc3NDb250
cm9sQWxsb3dMaXN0PEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4ocmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVycykpKTsKLSAg
ICBpZiAocGVyZm9ybUNoZWNrID09IFBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6OlllcyAm
JiBhY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVyU2V0LmNvbnRhaW5zKCIqIikpCisgICAgaWYgKHBl
cmZvcm1DaGVjayA9PSBQZXJmb3JtRXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpZZXMgJiYgYWNjZXNz
Q29udHJvbEV4cG9zZUhlYWRlclNldC5jb250YWlucygiKiJfcykpCiAgICAgICAgIHJldHVybiBm
aWx0ZXJlZFJlc3BvbnNlOwogCiAgICAgZmlsdGVyZWRSZXNwb25zZS5tX2h0dHBIZWFkZXJGaWVs
ZHMudW5jb21tb25IZWFkZXJzKCkucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGF1dG8mIGVudHJ5KSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29s
dmVRdWV1ZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCmluZGV4IGIzODJhMGQ3ZWRmMTY1NDNjYTNjZjQ3YjNkZTFj
NzcxNWViMTc0NTAuLmNhOGE1ZGVlY2FjODhmNWU2NjE0MmJmZjEzMDE1ODRhZjFlNzFmZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCkBAIC01NSw4ICs1NSw4IEBAIHZvaWQgRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQ6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBDRlVSTCA9IFVSTCh7IH0sICJodHRwOi8vZXhh
bXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBz
Q0ZVUkwgPSBVUkwoeyB9LCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwor
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gVVJMKHsgfSwgImh0dHA6Ly9leGFt
cGxlLmNvbS8iX3MpLmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRw
c0NGVVJMID0gVVJMKHsgfSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIl9zKS5jcmVhdGVDRlVSTCgp
OwogCiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFycmF5ID0gYWRvcHRDRihD
Rk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3Mu
Z2V0KCkpKTsKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFycmF5ID0gYWRv
cHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLmdldCgpLCBwcm94eVNl
dHRpbmdzLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKaW5kZXgg
NzA0MGIzMjYyNTc1NzhjNzEwM2JmZTM2NDEzZmE5MzlhYmZjNTEwMC4uMzAzZWU3NjMzZmViZjVh
ZDVmYmMwZmJiOGU0YjFiM2JkN2YzNTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENG
TmV0LmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tl
dFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsCiAgICAg
ICAgICYmIF9DRk5ldHdvcmtJc0tub3duSFNUU0hvc3RXaXRoU2Vzc2lvbihtX2h0dHBzVVJMLmdl
dCgpLCBudWxscHRyKSkgewogICAgICAgICAvLyBDYWxsIHRoaXMgYXN5bmNocm9ub3VzbHkgYmVj
YXVzZSB0aGUgc29ja2V0IHN0cmVhbSBpcyBub3QgZnVsbHkgY29uc3RydWN0ZWQgYXQgdGhpcyBw
b2ludC4KICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH1dIHsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0o
KnRoaXMsIFNvY2tldFN0cmVhbUVycm9yKDAsIG1fdXJsLnN0cmluZygpLCAiV2ViU29ja2V0IGNv
bm5lY3Rpb24gZmFpbGVkIGJlY2F1c2UgaXQgdmlvbGF0ZXMgSFRUUCBTdHJpY3QgVHJhbnNwb3J0
IFNlY3VyaXR5LiIpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0o
KnRoaXMsIFNvY2tldFN0cmVhbUVycm9yKDAsIG1fdXJsLnN0cmluZygpLCAiV2ViU29ja2V0IGNv
bm5lY3Rpb24gZmFpbGVkIGJlY2F1c2UgaXQgdmlvbGF0ZXMgSFRUUCBTdHJpY3QgVHJhbnNwb3J0
IFNlY3VyaXR5LiJfcykpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTQzNCw3ICs0MzQsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmFkZENPTk5FQ1RD
cmVkZW50aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9ucwogCiAgICAgaWYgKCFDRkhU
VFBBdXRoZW50aWNhdGlvblJlcXVpcmVzVXNlck5hbWVBbmRQYXNzd29yZChhdXRoZW50aWNhdGlv
bi5nZXQoKSkpIHsKICAgICAgICAgLy8gVGhhdCdzIGFsbCB3ZSBjYW4gb2ZmZXIuLi4KLSAgICAg
ICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3Io
MCwgbV91cmwuc3RyaW5nKCksICJQcm94eSBhdXRoZW50aWNhdGlvbiBzY2hlbWUgaXMgbm90IHN1
cHBvcnRlZCBmb3IgV2ViU29ja2V0cyIpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tl
dFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5nKCksICJQcm94
eSBhdXRoZW50aWNhdGlvbiBzY2hlbWUgaXMgbm90IHN1cHBvcnRlZCBmb3IgV2ViU29ja2V0cyJf
cykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjphZGRDT05ORUNUQ3JlZGVudGlhbHMoQ0ZIVFRQTWVzc2Fn
ZVJlZiBwcm94eVJlc3BvbnMKIAogICAgIGlmICghbWV0aG9kQ0YgfHwgIXJlYWxtQ0YpIHsKICAg
ICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBidXQgb24gc29tZSBPUyB2ZXJzaW9ucyB3
ZSBnZXQgaW5jb21wbGV0ZSBhdXRoZW50aWNhdGlvbiBkYXRhLCBzZWUgPHJkYXI6Ly9wcm9ibGVt
LzEwNDE2MzE2Pi4KLSAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywg
U29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5nKCksICJXZWJTb2NrZXQgcHJveHkgYXV0
aGVudGljYXRpb24gY291bGRuJ3QgYmUgaGFuZGxlZCIpKTsKKyAgICAgICAgbV9jbGllbnQuZGlk
RmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5n
KCksICJXZWJTb2NrZXQgcHJveHkgYXV0aGVudGljYXRpb24gY291bGRuJ3QgYmUgaGFuZGxlZCJf
cykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NjQsNyArNDY0LDcgQEAgdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjphZGRDT05ORUNUQ3JlZGVudGlhbHMoQ0ZIVFRQTWVzc2Fn
ZVJlZiBwcm94eVJlc3BvbnMKIAogICAgICAgICBpZiAoIXByb3h5QXV0aG9yaXphdGlvblN0cmlu
ZykgewogICAgICAgICAgICAgLy8gRmFpbHMgZS5nLiBmb3IgTlRMTSBhdXRoLgotICAgICAgICAg
ICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3Io
MCwgbV91cmwuc3RyaW5nKCksICJQcm94eSBhdXRoZW50aWNhdGlvbiBzY2hlbWUgaXMgbm90IHN1
cHBvcnRlZCBmb3IgV2ViU29ja2V0cyIpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxT
b2NrZXRTdHJlYW0oKnRoaXMsIFNvY2tldFN0cmVhbUVycm9yKDAsIG1fdXJsLnN0cmluZygpLCAi
UHJveHkgYXV0aGVudGljYXRpb24gc2NoZW1lIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFdlYlNvY2tl
dHMiX3MpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC00NzYsNyArNDc2
LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjphZGRDT05ORUNUQ3JlZGVudGlhbHMo
Q0ZIVFRQTWVzc2FnZVJlZiBwcm94eVJlc3BvbnMKIAogICAgIC8vIEZJWE1FOiBPbiBwbGF0Zm9y
bXMgd2hlcmUgQXV0aEJyb2tlckFnZW50IGlzIG5vdCBhdmFpbGFibGUsIGFzayB0aGUgY2xpZW50
IGlmIGNyZWRlbnRpYWxzIGNvdWxkIG5vdCBiZSBmb3VuZC4KIAotICAgIG1fY2xpZW50LmRpZEZh
aWxTb2NrZXRTdHJlYW0oKnRoaXMsIFNvY2tldFN0cmVhbUVycm9yKDAsIG1fdXJsLnN0cmluZygp
LCAiUHJveHkgY3JlZGVudGlhbHMgYXJlIG5vdCBhdmFpbGFibGUiKSk7CisgICAgbV9jbGllbnQu
ZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3Ry
aW5nKCksICJQcm94eSBjcmVkZW50aWFscyBhcmUgbm90IGF2YWlsYWJsZSJfcykpOwogfQogCiBD
RlN0cmluZ1JlZiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjb3B5Q0ZTdHJlYW1EZXNjcmlwdGlv
bih2b2lkKiBpbmZvKQpAQCAtNTczLDcgKzU3Myw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxl
SW1wbDo6cmVhZFN0cmVhbUNhbGxiYWNrKENGU3RyZWFtRXZlbnRUeXBlIHR5cGUpCiAgICAgICAg
ICAgICAgICAgICAgIGFkZENPTk5FQ1RDcmVkZW50aWFscyhwcm94eVJlc3BvbnNlLmdldCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0oKnRoaXMsIFNv
Y2tldFN0cmVhbUVycm9yKHN0YXRpY19jYXN0PGludD4ocHJveHlSZXNwb25zZUNvZGUpLCBtX3Vy
bC5zdHJpbmcoKSwgIlByb3h5IGNvbm5lY3Rpb24gY291bGQgbm90IGJlIGVzdGFibGlzaGVkLCB1
bmV4cGVjdGVkIHJlc3BvbnNlIGNvZGUiKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY2xpZW50
LmRpZEZhaWxTb2NrZXRTdHJlYW0oKnRoaXMsIFNvY2tldFN0cmVhbUVycm9yKHN0YXRpY19jYXN0
PGludD4ocHJveHlSZXNwb25zZUNvZGUpLCBtX3VybC5zdHJpbmcoKSwgIlByb3h5IGNvbm5lY3Rp
b24gY291bGQgbm90IGJlIGVzdGFibGlzaGVkLCB1bmV4cGVjdGVkIHJlc3BvbnNlIGNvZGUiX3Mp
KTsKICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1DbG9zZSgpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggOGVmYjE1NDhhNWIwZDk5ZDkxYzdmZDY3
ZjM4NWI0MDM5NWRjOWM3Mi4uZjJlM2VkYWQ1MGVkYTJmZGUwZTVkNTY3YWFlMzM3M2RjNTVkYjA1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3Bw
CkBAIC01MzcsNjkgKzUzNyw3MSBAQCBpbnQgU1FMaXRlRGF0YWJhc2U6OmF1dGhvcml6ZXJGdW5j
dGlvbih2b2lkKiB1c2VyRGF0YSwgaW50IGFjdGlvbkNvZGUsIGNvbnN0IGNoYQogICAgIERhdGFi
YXNlQXV0aG9yaXplciogYXV0aCA9IHN0YXRpY19jYXN0PERhdGFiYXNlQXV0aG9yaXplcio+KHVz
ZXJEYXRhKTsKICAgICBBU1NFUlQoYXV0aCk7CiAKKyAgICBTdHJpbmcgcGFyYW1ldGVyMVN0cmlu
ZyB7IHBhcmFtZXRlcjEgfTsKKyAgICBTdHJpbmcgcGFyYW1ldGVyMlN0cmluZyB7IHBhcmFtZXRl
cjIgfTsKICAgICBzd2l0Y2ggKGFjdGlvbkNvZGUpIHsKICAgICAgICAgY2FzZSBTUUxJVEVfQ1JF
QVRFX0lOREVYOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmNyZWF0ZUluZGV4KHBhcmFtZXRl
cjEsIHBhcmFtZXRlcjIpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmNyZWF0ZUluZGV4KHBh
cmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9D
UkVBVEVfVEFCTEU6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVGFibGUocGFyYW1l
dGVyMSk7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVGFibGUocGFyYW1ldGVyMVN0
cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0NSRUFURV9URU1QX0lOREVYOgotICAgICAgICAg
ICAgcmV0dXJuIGF1dGgtPmNyZWF0ZVRlbXBJbmRleChwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsK
KyAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVhdGVUZW1wSW5kZXgocGFyYW1ldGVyMVN0cmlu
ZywgcGFyYW1ldGVyMlN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0NSRUFURV9URU1QX1RB
QkxFOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmNyZWF0ZVRlbXBUYWJsZShwYXJhbWV0ZXIx
KTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVhdGVUZW1wVGFibGUocGFyYW1ldGVyMVN0
cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0NSRUFURV9URU1QX1RSSUdHRVI6Ci0gICAgICAg
ICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVGVtcFRyaWdnZXIocGFyYW1ldGVyMSwgcGFyYW1ldGVy
Mik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVGVtcFRyaWdnZXIocGFyYW1ldGVy
MVN0cmluZywgcGFyYW1ldGVyMlN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0NSRUFURV9U
RU1QX1ZJRVc6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVGVtcFZpZXcocGFyYW1l
dGVyMSk7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVGVtcFZpZXcocGFyYW1ldGVy
MVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0NSRUFURV9UUklHR0VSOgotICAgICAgICAg
ICAgcmV0dXJuIGF1dGgtPmNyZWF0ZVRyaWdnZXIocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7Cisg
ICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVHJpZ2dlcihwYXJhbWV0ZXIxU3RyaW5nLCBw
YXJhbWV0ZXIyU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfQ1JFQVRFX1ZJRVc6Ci0gICAg
ICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVmlldyhwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAg
IHJldHVybiBhdXRoLT5jcmVhdGVWaWV3KHBhcmFtZXRlcjFTdHJpbmcpOwogICAgICAgICBjYXNl
IFNRTElURV9ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dEZWxldGUocGFy
YW1ldGVyMSk7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dEZWxldGUocGFyYW1ldGVy
MVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0RST1BfSU5ERVg6Ci0gICAgICAgICAgICBy
ZXR1cm4gYXV0aC0+ZHJvcEluZGV4KHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAgICAgICAg
ICAgcmV0dXJuIGF1dGgtPmRyb3BJbmRleChwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0ZXIyU3Ry
aW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfRFJPUF9UQUJMRToKLSAgICAgICAgICAgIHJldHVy
biBhdXRoLT5kcm9wVGFibGUocGFyYW1ldGVyMSk7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+
ZHJvcFRhYmxlKHBhcmFtZXRlcjFTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9EUk9QX1RF
TVBfSU5ERVg6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+ZHJvcFRlbXBJbmRleChwYXJhbWV0
ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVGVtcEluZGV4
KHBhcmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElU
RV9EUk9QX1RFTVBfVEFCTEU6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+ZHJvcFRlbXBUYWJs
ZShwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVGVtcFRhYmxlKHBh
cmFtZXRlcjFTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9EUk9QX1RFTVBfVFJJR0dFUjoK
LSAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVGVtcFRyaWdnZXIocGFyYW1ldGVyMSwgcGFy
YW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+ZHJvcFRlbXBUcmlnZ2VyKHBhcmFt
ZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9EUk9Q
X1RFTVBfVklFVzoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVGVtcFZpZXcocGFyYW1l
dGVyMSk7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+ZHJvcFRlbXBWaWV3KHBhcmFtZXRlcjFT
dHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9EUk9QX1RSSUdHRVI6Ci0gICAgICAgICAgICBy
ZXR1cm4gYXV0aC0+ZHJvcFRyaWdnZXIocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7CisgICAgICAg
ICAgICByZXR1cm4gYXV0aC0+ZHJvcFRyaWdnZXIocGFyYW1ldGVyMVN0cmluZywgcGFyYW1ldGVy
MlN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0RST1BfVklFVzoKLSAgICAgICAgICAgIHJl
dHVybiBhdXRoLT5kcm9wVmlldyhwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRo
LT5kcm9wVmlldyhwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfSU5TRVJU
OgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93SW5zZXJ0KHBhcmFtZXRlcjEpOworICAg
ICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93SW5zZXJ0KHBhcmFtZXRlcjFTdHJpbmcpOwogICAg
ICAgICBjYXNlIFNRTElURV9QUkFHTUE6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dQ
cmFnbWEocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+
YWxsb3dQcmFnbWEocGFyYW1ldGVyMVN0cmluZywgcGFyYW1ldGVyMlN0cmluZyk7CiAgICAgICAg
IGNhc2UgU1FMSVRFX1JFQUQ6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dSZWFkKHBh
cmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93UmVh
ZChwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0ZXIyU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJ
VEVfU0VMRUNUOgogICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93U2VsZWN0KCk7CiAgICAg
ICAgIGNhc2UgU1FMSVRFX1RSQU5TQUNUSU9OOgogICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFs
bG93VHJhbnNhY3Rpb24oKTsKICAgICAgICAgY2FzZSBTUUxJVEVfVVBEQVRFOgotICAgICAgICAg
ICAgcmV0dXJuIGF1dGgtPmFsbG93VXBkYXRlKHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAg
ICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93VXBkYXRlKHBhcmFtZXRlcjFTdHJpbmcsIHBhcmFt
ZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9BVFRBQ0g6Ci0gICAgICAgICAgICBy
ZXR1cm4gYXV0aC0+YWxsb3dBdHRhY2gocGFyYW1ldGVyMSk7CisgICAgICAgICAgICByZXR1cm4g
YXV0aC0+YWxsb3dBdHRhY2gocGFyYW1ldGVyMVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRF
X0RFVEFDSDoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0RldGFjaChwYXJhbWV0ZXIx
KTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0RldGFjaChwYXJhbWV0ZXIxU3RyaW5n
KTsKICAgICAgICAgY2FzZSBTUUxJVEVfQUxURVJfVEFCTEU6Ci0gICAgICAgICAgICByZXR1cm4g
YXV0aC0+YWxsb3dBbHRlclRhYmxlKHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAgICAgICAg
ICAgcmV0dXJuIGF1dGgtPmFsbG93QWx0ZXJUYWJsZShwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0
ZXIyU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfUkVJTkRFWDoKLSAgICAgICAgICAgIHJl
dHVybiBhdXRoLT5hbGxvd1JlaW5kZXgocGFyYW1ldGVyMSk7CisgICAgICAgICAgICByZXR1cm4g
YXV0aC0+YWxsb3dSZWluZGV4KHBhcmFtZXRlcjFTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElU
RV9BTkFMWVpFOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93QW5hbHl6ZShwYXJhbWV0
ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0FuYWx5emUocGFyYW1ldGVyMVN0
cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0NSRUFURV9WVEFCTEU6Ci0gICAgICAgICAgICBy
ZXR1cm4gYXV0aC0+Y3JlYXRlVlRhYmxlKHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAgICAg
ICAgICAgcmV0dXJuIGF1dGgtPmNyZWF0ZVZUYWJsZShwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0
ZXIyU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfRFJPUF9WVEFCTEU6Ci0gICAgICAgICAg
ICByZXR1cm4gYXV0aC0+ZHJvcFZUYWJsZShwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICAg
ICAgICAgIHJldHVybiBhdXRoLT5kcm9wVlRhYmxlKHBhcmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRl
cjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9GVU5DVElPTjoKLSAgICAgICAgICAgIHJl
dHVybiBhdXRoLT5hbGxvd0Z1bmN0aW9uKHBhcmFtZXRlcjIpOworICAgICAgICAgICAgcmV0dXJu
IGF1dGgtPmFsbG93RnVuY3Rpb24ocGFyYW1ldGVyMlN0cmluZyk7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBT
UUxBdXRoRGVueTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJB
dHRhY2htZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5o
CmluZGV4IDUwZGQ5MjRiM2VhZTcxMmZiYjBkYTNmN2MxYzBiMzJlYTE2N2JiNTguLjExM2E4NTNl
NGFkM2NiNzU2N2VhYzBiYTVjMjdmZWE4ZDM4ZGFiOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogICAgIGJvb2wgaXNBdHRh
Y2htZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyQXR0YWNobWVudCI7
IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJSZW5kZXJBdHRhY2htZW50Il9zOyB9CiAKICAgICBib29sIHNob3VsZERyYXdTZWxlY3Rpb25U
aW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIG9mZnNldCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA1ZTZkZjBiZDYwMGQzMGQ1
ZGU5NWMxM2ZkMDkxM2Q0YmQ1MTVlZTc3Li43MGE3MWJmMDZiNGZkYzc3MDE5Y2FlOTgyOGRjOTQ0
NjMxMmM1YjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAg
LTMwNDYsMjggKzMwNDYsMjggQEAgYm9vbCBSZW5kZXJCbG9jazo6aGFzTWFyZ2luQWZ0ZXJRdWly
ayhjb25zdCBSZW5kZXJCb3gmIGNoaWxkKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Y29uc3QgY2hhciogUmVuZGVyQmxvY2s6OnJlbmRlck5hbWUoKSBjb25zdAorQVNDSUlMaXRlcmFs
IFJlbmRlckJsb2NrOjpyZW5kZXJOYW1lKCkgY29uc3QKIHsKICAgICBpZiAoaXNCb2R5KCkpCi0g
ICAgICAgIHJldHVybiAiUmVuZGVyQm9keSI7IC8vIEZJWE1FOiBUZW1wb3JhcnkgaGFjayB1bnRp
bCB3ZSBrbm93IHRoYXQgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgcGFzcy4KKyAgICAgICAgcmV0dXJu
ICJSZW5kZXJCb2R5Il9zOyAvLyBGSVhNRTogVGVtcG9yYXJ5IGhhY2sgdW50aWwgd2Uga25vdyB0
aGF0IHRoZSByZWdyZXNzaW9uIHRlc3RzIHBhc3MuCiAgICAgaWYgKGlzRmllbGRzZXQoKSkKLSAg
ICAgICAgcmV0dXJuICJSZW5kZXJGaWVsZFNldCI7IC8vIEZJWE1FOiBSZW1vdmUgZXZlbnR1YWxs
eSwgYnV0IGRvbmUgdG8ga2VlcCB0ZXN0cyBmcm9tIGJyZWFraW5nLgorICAgICAgICByZXR1cm4g
IlJlbmRlckZpZWxkU2V0Il9zOyAvLyBGSVhNRTogUmVtb3ZlIGV2ZW50dWFsbHksIGJ1dCBkb25l
IHRvIGtlZXAgdGVzdHMgZnJvbSBicmVha2luZy4KICAgICBpZiAoaXNGbG9hdGluZygpKQotICAg
ICAgICByZXR1cm4gIlJlbmRlckJsb2NrIChmbG9hdGluZykiOworICAgICAgICByZXR1cm4gIlJl
bmRlckJsb2NrIChmbG9hdGluZykiX3M7CiAgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
KQotICAgICAgICByZXR1cm4gIlJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSI7CisgICAgICAgIHJl
dHVybiAiUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIl9zOwogICAgIGlmIChpc0Fub255bW91c0Js
b2NrKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGFub255bW91cykiOworICAgICAg
ICByZXR1cm4gIlJlbmRlckJsb2NrIChhbm9ueW1vdXMpIl9zOwogICAgIC8vIEZJWE1FOiBUZW1w
b3JhcnkgaGFjayB3aGlsZSB0aGUgbmV3IGdlbmVyYXRlZCBjb250ZW50IHN5c3RlbSBpcyBiZWlu
ZyBpbXBsZW1lbnRlZC4KICAgICBpZiAoaXNQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIHJldHVy
biAiUmVuZGVyQmxvY2sgKGdlbmVyYXRlZCkiOworICAgICAgICByZXR1cm4gIlJlbmRlckJsb2Nr
IChnZW5lcmF0ZWQpIl9zOwogICAgIGlmIChpc0Fub255bW91cygpKQotICAgICAgICByZXR1cm4g
IlJlbmRlckJsb2NrIChnZW5lcmF0ZWQpIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAo
Z2VuZXJhdGVkKSJfczsKICAgICBpZiAoaXNSZWxhdGl2ZWx5UG9zaXRpb25lZCgpKQotICAgICAg
ICByZXR1cm4gIlJlbmRlckJsb2NrIChyZWxhdGl2ZSBwb3NpdGlvbmVkKSI7CisgICAgICAgIHJl
dHVybiAiUmVuZGVyQmxvY2sgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIl9zOwogICAgIGlmIChpc1N0
aWNraWx5UG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gIlJlbmRlckJsb2NrIChzdGlja3kg
cG9zaXRpb25lZCkiOwotICAgIHJldHVybiAiUmVuZGVyQmxvY2siOworICAgICAgICByZXR1cm4g
IlJlbmRlckJsb2NrIChzdGlja3kgcG9zaXRpb25lZCkiX3M7CisgICAgcmV0dXJuICJSZW5kZXJC
bG9jayJfczsKIH0KIAogVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihTdHJp
bmdWaWV3IHN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVo
YXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCmluZGV4IDIyMGZkNzQxMzA3OTExNDAzODVkMGQyZDUwNmE2MzQ0MGVj
ZGNjMTguLmFmMTVmOWNiMTBlYWZmNGI0NmUxMWI0MDg5MGViMzMzZmZkODRkMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC00MzUsNyArNDM1LDcgQEAgcHJpdmF0
ZToKICAgICBMYXlvdXRVbml0IGFkanVzdExvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoTGF5b3V0
VW5pdCBvZmZzZXRGcm9tRmxvYXRzLCBib29sIGFwcGx5VGV4dEluZGVudCkgY29uc3Q7CiAgICAg
TGF5b3V0VW5pdCBhZGp1c3RMb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCBvZmZz
ZXRGcm9tRmxvYXRzLCBib29sIGFwcGx5VGV4dEluZGVudCkgY29uc3Q7CiAKLSAgICBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVNDSUlMaXRlcmFsIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNTZWxmQ29sbGFwc2luZ0Jsb2Nr
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkcmVuUHJldmVudFNlbGZD
b2xsYXBzaW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQnV0dG9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgK
aW5kZXggYTQ5MzljNGEwMDc1MDJhNTc4OTQ5ZmRjNWNjNjU2Y2M3OTVkNTM4OS4uOWYyODc0MjVm
YWQ4NWYxODg3OTk2ZTVhNmM2NTgzNzJjNTBlZWFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCdXR0b24uaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJCdXR0b24iOyB9CisgICAgQVND
SUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyQnV0
dG9uIl9zOyB9CiAgICAgYm9vbCBpc1JlbmRlckJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAogICAgIGJvb2wgaGFzTGluZUlmRW1wdHkoKSBjb25zdCBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmgKaW5kZXggZTVk
MWFiMzFmMjJjNmU3MWFmM2Q0M2FmOTVjMDMxMjRjNjI3NWQ1Yi4uYzExYWI0NjRkOTgyMTE5ZmQz
NmI4MWYzMTJkOGUwNzZiNWFmN2QxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvbWJpbmVUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvbWJpbmVUZXh0LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5v
ZGUoKSBjb25zdCA9IGRlbGV0ZTsKIAogICAgIGJvb2wgaXNDb21iaW5lVGV4dCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckNvbWJpbmVUZXh0IjsgfQorICAgIEFTQ0lJTGl0
ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckNvbWJpbmVU
ZXh0Il9zOyB9CiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZW5kZXJlZFRl
eHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJDb3VudGVyLmNwcAppbmRleCBjZWNlZDM1ZTVjZTg3YmZiYzE0MDE4MzZjZDEzZWExYWVk
ZDdhZmMwLi5hM2ZlZmFkMDZhNmIyNzJiMWFmMWI1OTA0MzY5ODJhMTY4NTNiMWFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC00MDYsOSArNDA2LDkg
QEAgdm9pZCBSZW5kZXJDb3VudGVyOjp3aWxsQmVEZXN0cm95ZWQoKQogICAgIFJlbmRlclRleHQ6
OndpbGxCZURlc3Ryb3llZCgpOwogfQogCi1jb25zdCBjaGFyKiBSZW5kZXJDb3VudGVyOjpyZW5k
ZXJOYW1lKCkgY29uc3QKK0FTQ0lJTGl0ZXJhbCBSZW5kZXJDb3VudGVyOjpyZW5kZXJOYW1lKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gIlJlbmRlckNvdW50ZXIiOworICAgIHJldHVybiAiUmVuZGVy
Q291bnRlciJfczsKIH0KIAogYm9vbCBSZW5kZXJDb3VudGVyOjppc0NvdW50ZXIoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKaW5kZXggYjUzNTY2M2FmYzgx
NDQ4OWEyODExNTI2MTNhOTY0YjEzMjM4NDE1ZC4uZWNkM2Y4MzQ4N2IyNzA5MTg0ZmMxNDBjNjcz
ZDQyZWNlNWU5NThiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckNvdW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5o
CkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBv
dmVycmlkZTsKICAgICBzdGF0aWMgdm9pZCByZW5kZXJlclN0eWxlQ2hhbmdlZFNsb3dDYXNlKFJl
bmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlJiBuZXdTdHlsZSk7CiAgICAgCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBpc0NvdW50ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgb3JpZ2lu
YWxUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IGFlZDMy
ZTY5ZDI4YWU4ZWIyNzNhYmFmODE4NGMzMjZhYTU3OTM0YTIuLmEwNmU1ZjNiYTc2NDg3NWRkNjdm
NzEwNjA3NzI5NDY0Yzc0MTI4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC0xMTgzLDIwICsxMTgz
LDIwIEBAIExheW91dFVuaXQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphbGxvd2VkQ2hp
bGRGbGV4KFJlbmRlckJveCogY2hpbGQsIGJvb2wKICAgICByZXR1cm4gMDsKIH0KIAotY29uc3Qg
Y2hhciogUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpyZW5kZXJOYW1lKCkgY29uc3QKK0FT
Q0lJTGl0ZXJhbCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OnJlbmRlck5hbWUoKSBjb25z
dAogewogICAgIGlmIChpc0Zsb2F0aW5nKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94IChmbG9hdGluZykiOworICAgICAgICByZXR1cm4gIlJlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveCAoZmxvYXRpbmcpIl9zOwogICAgIGlmIChpc091dE9mRmxvd1Bvc2l0
aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKHBv
c2l0aW9uZWQpIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gg
KHBvc2l0aW9uZWQpIl9zOwogICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgaGFjayB3aGlsZSB0aGUg
bmV3IGdlbmVyYXRlZCBjb250ZW50IHN5c3RlbSBpcyBiZWluZyBpbXBsZW1lbnRlZC4KICAgICBp
ZiAoaXNQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94IChnZW5lcmF0ZWQpIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3ggKGdlbmVyYXRlZCkiX3M7CiAgICAgaWYgKGlzQW5vbnltb3VzKCkpCi0gICAg
ICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IChnZW5lcmF0ZWQpIjsKKyAg
ICAgICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKGdlbmVyYXRlZCkiX3M7
CiAgICAgaWYgKGlzUmVsYXRpdmVseVBvc2l0aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuICJSZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKHJlbGF0aXZlIHBvc2l0aW9uZWQpIjsKLSAgICByZXR1
cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCI7CisgICAgICAgIHJldHVybiAiUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94IChyZWxhdGl2ZSBwb3NpdGlvbmVkKSJfczsKKyAgICByZXR1
cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5oCmluZGV4IDkwMTNhNDZjZGQyODk0NjZjZTc4YmMxY2QxZDVhZjk0
YzA4ZjkyMDguLjQ3MDkxMzRkMDNmZjRkYzljMzYwNGFhZWYyNzc2ZTBhZDg4ZTk3MDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogCiAgICAgRWxlbWVudCYgZWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMo
KSk7IH0KIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBz
dHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5
bGUpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRGV0YWlsc01hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFp
bHNNYXJrZXIuaAppbmRleCBhYmQ4ODNkODA5OWY1NzI3ODQ2NjAyMjk2MWVkYTY0OTFjYWYwOGVk
Li5kZDg0ODA5ZjAyNWVmMTRlYTllNTE2ZjFmZDNjNzY3YTUwYmU2MWJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgKQEAgLTM1LDcgKzM1LDcg
QEAgcHVibGljOgogICAgIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7CiAKIHByaXZh
dGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJSZW5kZXJEZXRhaWxzTWFya2VyIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckRldGFpbHNNYXJrZXIiX3M7IH0KICAgICBi
b29sIGlzRGV0YWlsc01hcmtlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKaW5k
ZXggZjFmZDlmZjA1ZGRhOTU3YzY0NjRkMTQ3MDdjOTQyMWJhODM4NWY0ZS4uYzA0MWM5Njk0YjQ4
ZTBkODFlYTliYzI5NjllNzhhODY2YTgxN2Q5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGxheW91dCgpIGZpbmFsOwogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgZmlu
YWw7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IlJlbmRlckVtYmVkZGVkT2JqZWN0IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlckVtYmVkZGVkT2JqZWN0Il9zOyB9CiAgICAgYm9v
bCBpc0VtYmVkZGVkT2JqZWN0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
Ym9vbCBzaG93c1VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yKCkgY29uc3QgeyByZXR1cm4gaXNQ
bHVnaW5VbmF2YWlsYWJsZSgpICYmIG1faXNVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvclN0YXRl
ICE9IFVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yU3RhdGU6OkhpZGRlbjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAppbmRleCBk
MzBhOWJiZjU4ODdiMTQwMTA4NDEzNWRkMTMwMDE0ZmY4NGFjMWFjLi45YzIzNWIxMDcyOWY5Zjdj
YjQyZmFmZTlkNDYyMDEwM2FmYzZkM2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBpc0ZpbGVVcGxvYWRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJGaWxlVXBsb2FkQ29udHJvbCI7IH0KKyAgICBBU0NJSUxpdGVyYWwg
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbCJfczsgfQogCiAgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNh
bFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggNWQx
ZGE2YWY5NWZjMjJhMjUzNWIzNDhlYWU2OGFlNDI3YjYzNmNjMS4uZmM0MzRmMTlhNDQ4OTY0NzZi
YmM0ZmRiM2E2MWQ3NzljMjg5ZDUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC04OSw5ICs4OSw5IEBAIFJlbmRlckZsZXhpYmxlQm94
Ojp+UmVuZGVyRmxleGlibGVCb3goKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Om5vZGVMYXlvdXRDb250ZXh0Q2hhbmdlZChub2RlRm9yTm9uQW5vbnltb3VzKCksIG51bGxwdHIp
OwogfQogCi1jb25zdCBjaGFyKiBSZW5kZXJGbGV4aWJsZUJveDo6cmVuZGVyTmFtZSgpIGNvbnN0
CitBU0NJSUxpdGVyYWwgUmVuZGVyRmxleGlibGVCb3g6OnJlbmRlck5hbWUoKSBjb25zdAogewot
ICAgIHJldHVybiAiUmVuZGVyRmxleGlibGVCb3giOworICAgIHJldHVybiAiUmVuZGVyRmxleGli
bGVCb3giX3M7CiB9CiAKIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4
TG9naWNhbFdpZHRoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guaAppbmRleCA0YjU1NTJiMTg5NWQ1MGUwZGNlMTkyMzA3OTY3YTNkNDFkN2VmZWNl
Li5jZWUwMzE3NzQyNzViNzBhZTFjYjBiZmIxNWQ4ZmM4OTE1N2YxMWY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAtNDYsNyArNDYsNyBAQCBw
dWJsaWM6CiAKICAgICBib29sIGlzRmxleGlibGVCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJv
b2wgYXZvaWRzRmxvYXRzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wg
Y2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29u
dGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWlu
ZXIuaAppbmRleCBiNzBlNzE2ZDMwZDJhMWJiZDFjN2EwNjY1YmZmNjRhMWYxYTI4YzM1Li4xZmIw
MTAwYTNiNGNmYTkzYTM1NzNjYTA4ZGZkNWI0N2NlZjZiYzVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuaApAQCAtMTQ0LDcgKzE0
NCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyRnJhZ21lbnRD
b250YWluZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJGcmFnbWVudENvbnRh
aW5lciI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJGcmFnbWVudENvbnRhaW5lciJfczsgfQogCiAgICAgdm9pZCBpbnNlcnRl
ZEludG9UcmVlKElzSW50ZXJuYWxNb3ZlKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxCZVJlbW92
ZWRGcm9tVHJlZShJc0ludGVybmFsTW92ZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXJTZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lclNldC5oCmluZGV4IGU0NGIy
ZGZkNjZlOWU3MDczMDQ3ZTk2YThmYjMyYjdjNTRkZDEwZGEuLjI0MWRhOTI3Y2U0MDEwMzA1Yzg3
NzMzMDM3MzM0MDEwOTY1ODFmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFnbWVudENvbnRhaW5lclNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lclNldC5oCkBAIC01Myw3ICs1Myw3IEBAIHByb3Rl
Y3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBpbnN0YWxsRnJhZ21lbnRlZEZsb3coKSBmaW5hbDsK
IAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSA9IDA7CisgICAg
QVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSA9IDA7CiAgICAgCiAgICAg
Ym9vbCBpc1JlbmRlckZyYWdtZW50Q29udGFpbmVyU2V0KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFnbWVudGVkRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50
ZWRGbG93LmgKaW5kZXggNzVmYjUwMzcwMzA2OWQwYWQxMDQ4NzIzMzM1MWZiNDMxNmRjNWU3Yy4u
MGQzODlhZDc1MWM2ZGI0MDJmOTM4NmEyZDI1YTNhMDEzMjBlOWI2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmgKQEAgLTE4Niw3ICsxODYs
NyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBSZW5kZXJGcmFnbWVudGVkRmxvdyogbG9jYXRlRW5jbG9z
aW5nRnJhZ21lbnRlZEZsb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb25zdF9jYXN0PFJl
bmRlckZyYWdtZW50ZWRGbG93Kj4odGhpcyk7IH0KIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSA9IDA7CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSA9IDA7CiAKICAgICAvLyBPdmVycmlkZGVuIGJ5IGNvbHVtbnMvcGFnZXMg
dG8gc2V0IHVwIGFuIGluaXRpYWwgbG9naWNhbCB3aWR0aCBvZiB0aGUgcGFnZSB3aWR0aCBldmVu
IHdoZW4KICAgICAvLyBubyBmcmFnbWVudHMgaGF2ZSBiZWVuIGdlbmVyYXRlZCB5ZXQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5oCmluZGV4IDNkNjdhMGZkN2Y2OGEyNWRhMzIz
NzExYjQyNDc3YmY3YmI4YzUyYzEuLmY0MjEyNWRiNjFhZmVlMGFiYTE4M2ViYWRiZmZlYmYzMTJj
MzliZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBmcmFtZU93bmVyRWxlbWVudCgpIGNv
bnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJSZW5kZXJGcmFtZSI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJGcmFtZSJfczsgfQogICAgIGJvb2wgaXNGcmFt
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYW1lU2V0LmgKaW5kZXggMGY4YTA5MDk3MTI4MmNmMTEyYWI1MGYxODg2
ZDBjMTA3MWM5NWNjMi4uYWRhNDM0ZTg0N2VjM2U5MWZjYzNkN2Q0MDcxZmI4ZGE0MTM5YzY0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmgKQEAgLTkxLDcgKzkx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaW50IG1fc3BsaXRSZXNpemVPZmZzZXQ7CiAgICAgfTsK
IAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyRnJhbWVTZXQiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyRnJhbWVTZXQiX3M7IH0KICAgICBib29sIGlzRnJhbWVT
ZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIGxheW91dCgp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1
bGxTY3JlZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgK
aW5kZXggNjkwNDMzNTkyYzdmNGViMjJmMmFjNDU2MTdkMTAwY2VmNTE5OTkwOS4uMDAwZjMxZjA0
ZjI1ZWEwNTkxNmYxMWU0OGVhYjNjYTMwZWY5ZGJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBS
ZW5kZXJGdWxsU2NyZWVuKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+
UmVuZGVyRnVsbFNjcmVlbigpOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJGdWxsU2NyZWVuIjsgfQorICAgIEFTQ0lJTGl0ZXJh
bCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZ1bGxTY3JlZW4i
X3M7IH0KIAogICAgIFJlbmRlckJsb2NrKiBwbGFjZWhvbGRlcigpIHsgcmV0dXJuIG1fcGxhY2Vo
b2xkZXIuZ2V0KCk7IH0KICAgICB2b2lkIHNldFBsYWNlaG9sZGVyKFJlbmRlckJsb2NrJiBwbGFj
ZWhvbGRlcikgeyBtX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCAzZGVhZmVkZjIxYTZjMDM4OTU3M2Q0MjBhMDU2
NGRmYWI5YThkYmJmLi44MzEzNzY0MWE0Yjk5MWI4NjkxZWFkYzRjNDY0NGQ5MjM1ZTk1ZWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0xOTg3LDE3ICsxOTg3
LDE3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGFpbnRDaGlsZHJlbihQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmCiAgICAgICAgIHBhaW50Q2hpbGQoKmNoaWxk
LCBwYWludEluZm8sIHBhaW50T2Zmc2V0LCBmb3JDaGlsZCwgdXNlUHJpbnRSZWN0LCBQYWludEFz
SW5saW5lQmxvY2spOwogfQogCi1jb25zdCBjaGFyKiBSZW5kZXJHcmlkOjpyZW5kZXJOYW1lKCkg
Y29uc3QKK0FTQ0lJTGl0ZXJhbCBSZW5kZXJHcmlkOjpyZW5kZXJOYW1lKCkgY29uc3QKIHsKICAg
ICBpZiAoaXNGbG9hdGluZygpKQotICAgICAgICByZXR1cm4gIlJlbmRlckdyaWQgKGZsb2F0aW5n
KSI7CisgICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAoZmxvYXRpbmcpIl9zOwogICAgIGlmIChp
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJHcmlkIChwb3Np
dGlvbmVkKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAocG9zaXRpb25lZCkiX3M7CiAg
ICAgaWYgKGlzQW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAoZ2VuZXJh
dGVkKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAoZ2VuZXJhdGVkKSJfczsKICAgICBp
ZiAoaXNSZWxhdGl2ZWx5UG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gIlJlbmRlckdyaWQg
KHJlbGF0aXZlIHBvc2l0aW9uZWQpIjsKLSAgICByZXR1cm4gIlJlbmRlckdyaWQiOworICAgICAg
ICByZXR1cm4gIlJlbmRlckdyaWQgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIl9zOworICAgIHJldHVy
biAiUmVuZGVyR3JpZCJfczsKIH0KIAogYm9vbCBSZW5kZXJHcmlkOjpoYXNBdXRvU2l6ZUluQ29s
dW1uQXhpcyhjb25zdCBSZW5kZXJCb3gmIGNoaWxkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmgKaW5kZXggMTg0ZTY0MmJhYzIzMzczYjBlMmRlM2QzOGJjY2FiZTdmZmNj
MjJiOS4uOGU2NjlhMGI4N2I2NGQyMmUwMzU4NTkwNjBlNWU0ODhkYjI0NTFkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIGNoaWxkLT5pc1JlbmRlclJlcGxhY2VkKCkgPyBJdGVtUG9zaXRpb246
OlN0YXJ0IDogSXRlbVBvc2l0aW9uOjpTdHJldGNoOwogICAgIH0KIAotICAgIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNSZW5kZXJHcmlkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0
aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lk
dGgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySFRNTENhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhU
TUxDYW52YXMuaAppbmRleCBmZjM1NjNjNzgzNzZlMjUwYzNmN2Q5MjJlMWNmMTE5MmY0NDYwYzUx
Li5lYWZkMDg0ODM2MGY5MjI0NjdhNGI1ZDEyYjY4YWJjYTQzMDVkYmNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKICAgICBib29sIHJlcXVp
cmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzQ2FudmFzKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVySFRNTENhbnZhcyI7IH0KKyAgICBBU0NJSUxpdGVy
YWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJIVE1MQ2FudmFz
Il9zOyB9CiAgICAgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIG92ZXJyaWRl
IHsgY2FudmFzU2l6ZUNoYW5nZWQoKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJRnJhbWUuaAppbmRleCA5MWNkODU1NjQ0YWI3OGJlOWIxY2Y0ZTkzYWViMjA3MjI1MDdiMTE2
Li41OWE3ODg1ZWQ3NzUwMTIyNTMzYzNmNmRiYTAwNzdmMGIwYjc3YTgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIGlzUmVuZGVySUZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJSZW5kZXJJRnJhbWUiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVySUZyYW1lIl9zOyB9CiAKICAgICBib29sIHJlcXVpcmVz
TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuaAppbmRleCA4YWFjZDRjMDczZGM4OTc5NjcwZDc1ZDEzZWNkMjE3NGJjOWMyNzY0Li40NDI5
ZDMwN2Y3YjA2YjY3MjE1ZGM0NmJjNmYyYjQwNWI1YTM0YzhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtMTA0LDcgKzEwNCw3IEBAIHByb3RlY3RlZDoKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJJbWFnZSI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJJbWFnZSJfczsgfQogCiAgICAgYm9vbCBj
YW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcAppbmRleCAwYjQ1ZWFlYzEzNGM1YzdkMDFhMDJjMzNlZjgzYzk3
ODRiOGY2YmVhLi43NjAwNTAwMWQzYzBkZGU0MzcwZGFiNzg0ZmUyNDVlN2VkODhiOTkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtNDAyLDE4ICs0MDIs
MTggQEAgTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6Om1hcmdpbkFmdGVyKGNvbnN0IFJlbmRlclN0
eWxlKiBvdGhlclN0eWxlKSBjb25zdAogICAgIHJldHVybiBjb21wdXRlTWFyZ2luKHRoaXMsIHN0
eWxlKCkubWFyZ2luQWZ0ZXJVc2luZyhvdGhlclN0eWxlID8gb3RoZXJTdHlsZSA6ICZzdHlsZSgp
KSk7CiB9CiAKLWNvbnN0IGNoYXIqIFJlbmRlcklubGluZTo6cmVuZGVyTmFtZSgpIGNvbnN0CitB
U0NJSUxpdGVyYWwgUmVuZGVySW5saW5lOjpyZW5kZXJOYW1lKCkgY29uc3QKIHsKICAgICBpZiAo
aXNSZWxhdGl2ZWx5UG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gIlJlbmRlcklubGluZSAo
cmVsYXRpdmUgcG9zaXRpb25lZCkiOworICAgICAgICByZXR1cm4gIlJlbmRlcklubGluZSAocmVs
YXRpdmUgcG9zaXRpb25lZCkiX3M7CiAgICAgaWYgKGlzU3RpY2tpbHlQb3NpdGlvbmVkKCkpCi0g
ICAgICAgIHJldHVybiAiUmVuZGVySW5saW5lIChzdGlja3kgcG9zaXRpb25lZCkiOworICAgICAg
ICByZXR1cm4gIlJlbmRlcklubGluZSAoc3RpY2t5IHBvc2l0aW9uZWQpIl9zOwogICAgIC8vIEZJ
WE1FOiBUZW1wb3JhcnkgaGFjayB3aGlsZSB0aGUgbmV3IGdlbmVyYXRlZCBjb250ZW50IHN5c3Rl
bSBpcyBiZWluZyBpbXBsZW1lbnRlZC4KICAgICBpZiAoaXNQc2V1ZG9FbGVtZW50KCkpCi0gICAg
ICAgIHJldHVybiAiUmVuZGVySW5saW5lIChnZW5lcmF0ZWQpIjsKKyAgICAgICAgcmV0dXJuICJS
ZW5kZXJJbmxpbmUgKGdlbmVyYXRlZCkiX3M7CiAgICAgaWYgKGlzQW5vbnltb3VzKCkpCi0gICAg
ICAgIHJldHVybiAiUmVuZGVySW5saW5lIChnZW5lcmF0ZWQpIjsKLSAgICByZXR1cm4gIlJlbmRl
cklubGluZSI7CisgICAgICAgIHJldHVybiAiUmVuZGVySW5saW5lIChnZW5lcmF0ZWQpIl9zOwor
ICAgIHJldHVybiAiUmVuZGVySW5saW5lIl9zOwogfQogCiBib29sIFJlbmRlcklubGluZTo6bm9k
ZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJl
c3VsdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCAwYTE3MWFm
OGJiYWRjYWIwZTBiYTQxNmQyYTA5ODc5OGJlZDI3NDM1Li40M2JkMDZiZWNhNTA1MTIxNjZlZjEy
NjNlM2RhZDZmMzU4MDRkYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5oCkBAIC05Myw3ICs5Myw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHVwZGF0ZUZyb21TdHls
ZSgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKaW5kZXggMjM0NTUyNWIyYzgwZmEyMmNlYjYyMGQ1ZGFmNzAxMDAyMTk4NTJmNC4uZmYw
ZTkxY2NmNGMwODdlM2RlNmIzNTExNzQ4M2U0NGI3YTMwMTExNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTUxNywxMiArNTE3LDEy
IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpjcmVhdGVQcmltYXJ5R3JhcGhpY3NMYXllcigp
CiAgICAgY29uc3QgdW5zaWduZWQgbWF4TGF5ZXJOYW1lTGVuZ3RoID0gMTAwOwogICAgIGlmIChs
YXllck5hbWUubGVuZ3RoKCkgPiBtYXhMYXllck5hbWVMZW5ndGgpIHsKICAgICAgICAgbGF5ZXJO
YW1lLnRydW5jYXRlKG1heExheWVyTmFtZUxlbmd0aCk7Ci0gICAgICAgIGxheWVyTmFtZS5hcHBl
bmQoIi4uLiIpOworICAgICAgICBsYXllck5hbWUuYXBwZW5kKCIuLi4iX3MpOwogICAgIH0KICAg
ICBtX2dyYXBoaWNzTGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKGxheWVyTmFtZSwgbV9pc0Zy
YW1lTGF5ZXJXaXRoVGlsZWRCYWNraW5nID8gR3JhcGhpY3NMYXllcjo6VHlwZTo6UGFnZVRpbGVk
QmFja2luZyA6IEdyYXBoaWNzTGF5ZXI6OlR5cGU6Ok5vcm1hbCk7CiAKICAgICBpZiAobV9pc0Zy
YW1lTGF5ZXJXaXRoVGlsZWRCYWNraW5nKSB7Ci0gICAgICAgIG1fY2hpbGRDb250YWlubWVudExh
eWVyID0gY3JlYXRlR3JhcGhpY3NMYXllcigiUGFnZSBUaWxlZEJhY2tpbmcgY29udGFpbm1lbnQi
KTsKKyAgICAgICAgbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVy
KCJQYWdlIFRpbGVkQmFja2luZyBjb250YWlubWVudCJfcyk7CiAgICAgICAgIG1fZ3JhcGhpY3NM
YXllci0+YWRkQ2hpbGQoKm1fY2hpbGRDb250YWlubWVudExheWVyKTsKICAgICB9CiAKQEAgLTE5
MzcsNyArMTkzNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjplbnN1cmVDbGlwcGluZ1N0
YWNrTGF5ZXJzKExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrJiBjCiB7CiAgICAgZm9yIChhdXRv
JiBlbnRyeSA6IGNsaXBwaW5nU3RhY2suc3RhY2soKSkgewogICAgICAgICBpZiAoIWVudHJ5LmNs
aXBwaW5nTGF5ZXIpIHsKLSAgICAgICAgICAgIGVudHJ5LmNsaXBwaW5nTGF5ZXIgPSBjcmVhdGVH
cmFwaGljc0xheWVyKGVudHJ5LmNsaXBEYXRhLmlzT3ZlcmZsb3dTY3JvbGwgPyAiY2xpcCBmb3Ig
c2Nyb2xsZXIiIDogImFuY2VzdG9yIGNsaXBwaW5nIik7CisgICAgICAgICAgICBlbnRyeS5jbGlw
cGluZ0xheWVyID0gY3JlYXRlR3JhcGhpY3NMYXllcihlbnRyeS5jbGlwRGF0YS5pc092ZXJmbG93
U2Nyb2xsID8gImNsaXAgZm9yIHNjcm9sbGVyIl9zIDogImFuY2VzdG9yIGNsaXBwaW5nIl9zKTsK
ICAgICAgICAgICAgIGVudHJ5LmNsaXBwaW5nTGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7
CiAgICAgICAgICAgICBlbnRyeS5jbGlwcGluZ0xheWVyLT5zZXRQYWludGluZ1BoYXNlKHsgfSk7
CiAgICAgICAgIH0KQEAgLTIwMjYsNyArMjAyNiw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5n
Ojp1cGRhdGVEZXNjZW5kYW50Q2xpcHBpbmdMYXllcihib29sIG5lZWRzRGVzY2VuZGFudENsaXAp
CiAKICAgICBpZiAobmVlZHNEZXNjZW5kYW50Q2xpcCkgewogICAgICAgICBpZiAoIW1fY2hpbGRD
b250YWlubWVudExheWVyICYmICFtX2lzRnJhbWVMYXllcldpdGhUaWxlZEJhY2tpbmcpIHsKLSAg
ICAgICAgICAgIG1fY2hpbGRDb250YWlubWVudExheWVyID0gY3JlYXRlR3JhcGhpY3NMYXllcigi
Y2hpbGQgY2xpcHBpbmciKTsKKyAgICAgICAgICAgIG1fY2hpbGRDb250YWlubWVudExheWVyID0g
Y3JlYXRlR3JhcGhpY3NMYXllcigiY2hpbGQgY2xpcHBpbmciX3MpOwogICAgICAgICAgICAgbV9j
aGlsZENvbnRhaW5tZW50TGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAgICAgICAgICAg
ICBsYXllcnNDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjExOCw3ICsyMTE4LDcgQEAg
Ym9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnJlcXVpcmVzU2Nyb2xsQ29ybmVyTGF5ZXIoKSBjb25z
dAogCiBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVy
cyhib29sIG5lZWRzSG9yaXpvbnRhbFNjcm9sbGJhckxheWVyLCBib29sIG5lZWRzVmVydGljYWxT
Y3JvbGxiYXJMYXllciwgYm9vbCBuZWVkc1Njcm9sbENvcm5lckxheWVyKQogewotICAgIGF1dG8g
Y3JlYXRlT3JEZXN0cm95TGF5ZXIgPSBbJl0oUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiBsYXllciwg
Ym9vbCBuZWVkTGF5ZXIsIGJvb2wgZHJhd3NDb250ZW50LCBjb25zdCBjaGFyKiBsYXllck5hbWUp
IHsKKyAgICBhdXRvIGNyZWF0ZU9yRGVzdHJveUxheWVyID0gWyZdKFJlZlB0cjxHcmFwaGljc0xh
eWVyPiYgbGF5ZXIsIGJvb2wgbmVlZExheWVyLCBib29sIGRyYXdzQ29udGVudCwgQVNDSUlMaXRl
cmFsIGxheWVyTmFtZSkgewogICAgICAgICBpZiAobmVlZExheWVyID09ICEhbGF5ZXIpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTIxMzgsMTUgKzIxMzgsMTUgQEAgYm9vbCBSZW5k
ZXJMYXllckJhY2tpbmc6OnVwZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMoYm9vbCBuZWVkc0hv
cml6b250YWxTY3JvbGwKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKIAotICAgIGJvb2wg
bGF5ZXJzQ2hhbmdlZCA9IGNyZWF0ZU9yRGVzdHJveUxheWVyKG1fb3ZlcmZsb3dDb250cm9sc0Nv
bnRhaW5lciwgbmVlZHNIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIgfHwgbmVlZHNWZXJ0aWNhbFNj
cm9sbGJhckxheWVyIHx8IG5lZWRzU2Nyb2xsQ29ybmVyTGF5ZXIsIGZhbHNlLCAib3ZlcmZsb3cg
Y29udHJvbHMgY29udGFpbmVyIik7CisgICAgYm9vbCBsYXllcnNDaGFuZ2VkID0gY3JlYXRlT3JE
ZXN0cm95TGF5ZXIobV9vdmVyZmxvd0NvbnRyb2xzQ29udGFpbmVyLCBuZWVkc0hvcml6b250YWxT
Y3JvbGxiYXJMYXllciB8fCBuZWVkc1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIgfHwgbmVlZHNTY3Jv
bGxDb3JuZXJMYXllciwgZmFsc2UsICJvdmVyZmxvdyBjb250cm9scyBjb250YWluZXIiX3MpOwog
Ci0gICAgYm9vbCBob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkID0gY3JlYXRlT3JEZXN0
cm95TGF5ZXIobV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIsIG5lZWRzSG9yaXpvbnRhbFNj
cm9sbGJhckxheWVyLCB0cnVlLCAiaG9yaXpvbnRhbCBzY3JvbGxiYXIiKTsKKyAgICBib29sIGhv
cml6b250YWxTY3JvbGxiYXJMYXllckNoYW5nZWQgPSBjcmVhdGVPckRlc3Ryb3lMYXllcihtX2xh
eWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhciwgbmVlZHNIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIs
IHRydWUsICJob3Jpem9udGFsIHNjcm9sbGJhciJfcyk7CiAgICAgbGF5ZXJzQ2hhbmdlZCB8PSBo
b3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkOwogCi0gICAgYm9vbCB2ZXJ0aWNhbFNjcm9s
bGJhckxheWVyQ2hhbmdlZCA9IGNyZWF0ZU9yRGVzdHJveUxheWVyKG1fbGF5ZXJGb3JWZXJ0aWNh
bFNjcm9sbGJhciwgbmVlZHNWZXJ0aWNhbFNjcm9sbGJhckxheWVyLCB0cnVlLCAidmVydGljYWwg
c2Nyb2xsYmFyIik7CisgICAgYm9vbCB2ZXJ0aWNhbFNjcm9sbGJhckxheWVyQ2hhbmdlZCA9IGNy
ZWF0ZU9yRGVzdHJveUxheWVyKG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhciwgbmVlZHNWZXJ0
aWNhbFNjcm9sbGJhckxheWVyLCB0cnVlLCAidmVydGljYWwgc2Nyb2xsYmFyIl9zKTsKICAgICBs
YXllcnNDaGFuZ2VkIHw9IHZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkOwogCi0gICAgbGF5
ZXJzQ2hhbmdlZCB8PSBjcmVhdGVPckRlc3Ryb3lMYXllcihtX2xheWVyRm9yU2Nyb2xsQ29ybmVy
LCBuZWVkc1Njcm9sbENvcm5lckxheWVyLCB0cnVlLCAic2Nyb2xsIGNvcm5lciIpOworICAgIGxh
eWVyc0NoYW5nZWQgfD0gY3JlYXRlT3JEZXN0cm95TGF5ZXIobV9sYXllckZvclNjcm9sbENvcm5l
ciwgbmVlZHNTY3JvbGxDb3JuZXJMYXllciwgdHJ1ZSwgInNjcm9sbCBjb3JuZXIiX3MpOwogCiAg
ICAgaWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9vd25pbmdMYXllci5wYWdlKCku
c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkgewogICAgICAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUFy
ZWEgPSBtX293bmluZ0xheWVyLnNjcm9sbGFibGVBcmVhKCkpIHsKQEAgLTIyODIsNyArMjI4Miw3
IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVNYXNraW5nTGF5ZXIoYm9vbCBoYXNN
YXNrLCBib29sIGhhc0NsaXBQYXRoKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX21hc2tM
YXllcikgewotICAgICAgICAgICAgbV9tYXNrTGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJt
YXNrIiwgcmVxdWlyZWRMYXllclR5cGUpOworICAgICAgICAgICAgbV9tYXNrTGF5ZXIgPSBjcmVh
dGVHcmFwaGljc0xheWVyKCJtYXNrIl9zLCByZXF1aXJlZExheWVyVHlwZSk7CiAgICAgICAgICAg
ICBsYXllckNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRN
YXNrTGF5ZXIobV9tYXNrTGF5ZXIuY29weVJlZigpKTsKICAgICAgICAgICAgIC8vIFdlIG5lZWQg
YSBnZW9tZXRyeSB1cGRhdGUgdG8gc2l6ZSB0aGUgbmV3IG1hc2sgbGF5ZXIuCkBAIC0yMzA4LDcg
KzIzMDgsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ2hpbGRDbGlwcGluZ1N0
cmF0ZWd5KGJvb2wgbmVlZHNEZXNjZW5kYW50c0NsaXBwaQogCiAgICAgYXV0byogY2xpcHBpbmdM
YXllciA9IHRoaXMtPmNsaXBwaW5nTGF5ZXIoKTsKICAgICBpZiAobmVlZHNDbGlwTWFza0xheWVy
KCkpIHsKLSAgICAgICAgbV9jaGlsZENsaXBwaW5nTWFza0xheWVyID0gY3JlYXRlR3JhcGhpY3NM
YXllcigiY2hpbGQgY2xpcHBpbmcgbWFzayIpOworICAgICAgICBtX2NoaWxkQ2xpcHBpbmdNYXNr
TGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJjaGlsZCBjbGlwcGluZyBtYXNrIl9zKTsKICAg
ICAgICAgbV9jaGlsZENsaXBwaW5nTWFza0xheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAg
ICAgICAgIG1fY2hpbGRDbGlwcGluZ01hc2tMYXllci0+c2V0UGFpbnRpbmdQaGFzZSh7IEdyYXBo
aWNzTGF5ZXJQYWludGluZ1BoYXNlOjpDaGlsZENsaXBwaW5nTWFzayB9KTsKICAgICAgICAgaWYg
KGNsaXBwaW5nTGF5ZXIpCkBAIC0yMzI3LDEzICsyMzI3LDEzIEBAIGJvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVTY3JvbGxpbmdMYXllcnMoYm9vbCBuZWVkc1Njcm9sbGluZ0xheWVycykK
IAogICAgIGlmICghbV9zY3JvbGxDb250YWluZXJMYXllcikgewogICAgICAgICAvLyBPdXRlciBs
YXllciB3aGljaCBjb3JyZXNwb25kcyB3aXRoIHRoZSBzY3JvbGwgdmlldy4gVGhpcyBuZXZlciBw
YWludHMgY29udGVudC4KLSAgICAgICAgbV9zY3JvbGxDb250YWluZXJMYXllciA9IGNyZWF0ZUdy
YXBoaWNzTGF5ZXIoInNjcm9sbCBjb250YWluZXIiLCBHcmFwaGljc0xheWVyOjpUeXBlOjpTY3Jv
bGxDb250YWluZXIpOworICAgICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVyID0gY3JlYXRlR3Jh
cGhpY3NMYXllcigic2Nyb2xsIGNvbnRhaW5lciJfcywgR3JhcGhpY3NMYXllcjo6VHlwZTo6U2Ny
b2xsQ29udGFpbmVyKTsKICAgICAgICAgbV9zY3JvbGxDb250YWluZXJMYXllci0+c2V0UGFpbnRp
bmdQaGFzZSh7IH0pOwogICAgICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVyLT5zZXREcmF3c0Nv
bnRlbnQoZmFsc2UpOwogICAgICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVyLT5zZXRNYXNrc1Rv
Qm91bmRzKHRydWUpOwogCiAgICAgICAgIC8vIElubmVyIGxheWVyIHdoaWNoIHJlbmRlcnMgdGhl
IGNvbnRlbnQgdGhhdCBzY3JvbGxzLgotICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllciA9
IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoInNjcm9sbGVkIGNvbnRlbnRzIiwgR3JhcGhpY3NMYXllcjo6
VHlwZTo6U2Nyb2xsZWRDb250ZW50cyk7CisgICAgICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVy
ID0gY3JlYXRlR3JhcGhpY3NMYXllcigic2Nyb2xsZWQgY29udGVudHMiX3MsIEdyYXBoaWNzTGF5
ZXI6OlR5cGU6OlNjcm9sbGVkQ29udGVudHMpOwogICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNM
YXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOwogICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNM
YXllci0+c2V0QW5jaG9yUG9pbnQoeyB9KTsKICAgICAgICAgbV9zY3JvbGxDb250YWluZXJMYXll
ci0+YWRkQ2hpbGQoKm1fc2Nyb2xsZWRDb250ZW50c0xheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAppbmRleCA4NDMyNjYzYzE3N2ZjYzRiMTI1NWMzNWNk
MTNmM2Q0MGUzMTcyNWJmLi45ZTllMWUzOTk0YjFjOWVkOTM4NGM1OGIxZmM3MWRhY2I5ZWEzMjcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCkBAIC0zNiw3
ICszNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW5kZXJMaW5lQnJlYWsoKTsKIAogICAg
IC8vIEZJWE1FOiBUaGUgbGllcyBoZXJlIGtlZXAgcmVuZGVyIHRyZWUgZHVtcCBiYXNlZCB0ZXN0
IHJlc3VsdHMgdW5jaGFuZ2VkLgotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2lzV0JSID8gIlJlbmRlcldvcmRCcmVhayIgOiAiUmVuZGVyQlIiOyB9
CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
V0JSID8gIlJlbmRlcldvcmRCcmVhayJfcyA6ICJSZW5kZXJCUiJfczsgfQogCiAgICAgYm9vbCBp
c1dCUigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNXQlI7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggZDc0OGQwZjg0OTA0NDliYzhjNmZiMTRhOTZj
YWZmOGU4MmU2YzA4Ni4uODU3ZDg0ODM3NWE0NjI4NDQ4ZmFmNWZhZDNiZGM5NWMzNjI1OTJkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC03MSw3ICs3MSw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAg
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
TGlzdEJveCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJMaXN0Qm94Il9zOyB9CiAKICAgICBib29sIGlzTGlzdEJveCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uaAppbmRleCA4NTBkZGVjYThlOTQ1NjAzODBhZDk1YjY1MTExYmM3ZDk4
YTVmOWI2Li42YWE1MTkyYzJiM2EzYmZhOTQxOGI3MGU3ZDUyMzkxYzE5OGUyNzUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaApAQCAtNjIsNyArNjIsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0luUmV2ZXJzZWRPcmRlcmVkTGlzdCgpIGNvbnN0OwogCiBwcml2
YXRlOgotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
UmVuZGVyTGlzdEl0ZW0iOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiUmVuZGVyTGlzdEl0ZW0iX3M7IH0KIAogICAgIGJvb2wgaXNMaXN0SXRl
bSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCmluZGV4IGNjZjhhYmZkOWUxNDhiMDcxMzczMmVj
NzY2N2ZjNzdlYzEwYzEwNGUuLjNlZGJmZTE0Y2ZkNWQ5OTYwMGM0MWJjNmIyY2U1ZDg5NzQxNWI3
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaApAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95
ZWQoKSBmaW5hbDsKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gIlJlbmRlckxpc3RNYXJrZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTGlzdE1hcmtlciJfczsgfQogICAgIHZvaWQg
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKICAgICBib29sIGlzTGlzdE1h
cmtlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGNhbkhhdmVDaGls
ZHJlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZWRpYS5oCmluZGV4IDEwMWRkMDQ3MDI3ZTI3NzE5OWU1YzMyNmY0YzcyMGQ3ODdi
NmYwNTAuLmRjYThjNzQ0NTMxZmU3NGM4YjhkNmZlNGVlMjM3YjUwODA1NmI1YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6
CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyTWVkaWEiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWVkaWEiX3M7IH0KICAgICBib29sIGlzTWVkaWEoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0ltYWdlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmgKaW5kZXggM2MwMmM5MDJhZjZiMzUyM2VmOGY3OWYzNzk1MzIxZWYyMjM1
MWFiOS4uNjhhOTE4OGRiZmI5MjQwNWZiOGJlZjkxYmU1OTU0YmY5MDRjNDNlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKQEAgLTgzLDcgKzgzLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIGhhc0NvbnRyb2xDbGlwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIGJvb2wgY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWVudUxpc3QiOyB9CisgICAgQVNDSUlMaXRlcmFs
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWVudUxpc3QiX3M7
IH0KIAogICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYg
bWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgKaW5kZXggMWMzNzA2MzE0YzlkZjVk
Mjg5Y2ZjZGFmZjM1YTdhMDAyMGJiZmRhZi4uY2ExNzQzMWM5ZmQyNDBiMGI3NTgxNzYxODg1NmNh
YjRlODI5YTc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgKQEAgLTM5
LDcgKzM5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aCgpIG92ZXJy
aWRlOwogICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRlTG9naWNhbEhlaWdo
dChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlck1ldGVyIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1ldGVyIl9zOyB9CiAgICAgYm9vbCBpc01l
dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTW9kZWwuaAppbmRleCA5NDE5NzE5YzAyNzBiZjQ3M2FmNWFkMzZjM2Yy
MWQxNTE1M2E5YTQ3Li4zN2E0OTIyYWZlNDFmZGMyNTBiMDk1ODQ4YjRkZDhlNTdjMGI4ZGJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTW9kZWwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTW9kZWwuaApAQCAtNDMsNyArNDMsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7Ci0g
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJN
b2RlbCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJSZW5kZXJNb2RlbCJfczsgfQogICAgIGJvb2wgaXNSZW5kZXJNb2RlbCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5G
bG93LmNwcAppbmRleCAwYTYwMzNhN2JiNWM3YjE1YmMyYWRlNWRlZjZmYTQxM2QzZWVjMDI5Li44
M2ZlMmQ5NTFkNjcxMWI5NzJkNmFlOTA4ZjQxZDU5OTJmODM1YjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcApAQCAtNDksOSAr
NDksOSBAQCBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyhEb2N1
bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgcwogCiBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6
On5SZW5kZXJNdWx0aUNvbHVtbkZsb3coKSA9IGRlZmF1bHQ7CiAKLWNvbnN0IGNoYXIqIFJlbmRl
ck11bHRpQ29sdW1uRmxvdzo6cmVuZGVyTmFtZSgpIGNvbnN0CitBU0NJSUxpdGVyYWwgUmVuZGVy
TXVsdGlDb2x1bW5GbG93OjpyZW5kZXJOYW1lKCkgY29uc3QKIHsgICAgCi0gICAgcmV0dXJuICJS
ZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQiOworICAgIHJldHVybiAiUmVuZGVyTXVsdGlDb2x1
bW5GbG93VGhyZWFkIl9zOwogfQogCiBSZW5kZXJNdWx0aUNvbHVtblNldCogUmVuZGVyTXVsdGlD
b2x1bW5GbG93OjpmaXJzdE11bHRpQ29sdW1uU2V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuaAppbmRleCAwNWQ5ZTc2YWEwNmQ2
YjFmMmM5NDM4M2U0OGQ1NTIyYjJiMWIzMDQ4Li5hYjY1YzliYzhhMjA3MmE1MzE1MDA4ZjYyNmJh
MjBmNzU0YmM1ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5GbG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvdy5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIGJvb2wgaXNSZW5kZXJNdWx0aUNvbHVtbkZsb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBh
ZGRGcmFnbWVudFRvVGhyZWFkKFJlbmRlckZyYWdtZW50Q29udGFpbmVyKikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB3aWxsQmVSZW1vdmVkRnJvbVRyZWUoSXNJbnRlcm5hbE1vdmUpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZnJhZ21lbnRlZEZsb3dEZXNjZW5kYW50Qm94TGFpZE91dChSZW5kZXJCb3gqKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TZXQuY3BwCmluZGV4IGUzOTZmYTEyMjgyOThkNTBkNjBkNmFmZjc2Y2Q0MmNlZTBlMmJiYTQu
LjBkZTczM2QyNGUxNDZkNTA4YTBjYWI5ZDQ5M2RlZDYxZTgzNjVlZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcApAQCAtMTA0Niw5
ICsxMDQ2LDkgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6dXBkYXRlSGl0VGVzdFJlc3Vs
dChIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IExheW8KICAgICB9CiB9CiAKLWNvbnN0IGNo
YXIqIFJlbmRlck11bHRpQ29sdW1uU2V0OjpyZW5kZXJOYW1lKCkgY29uc3QKK0FTQ0lJTGl0ZXJh
bCBSZW5kZXJNdWx0aUNvbHVtblNldDo6cmVuZGVyTmFtZSgpIGNvbnN0CiB7ICAgIAotICAgIHJl
dHVybiAiUmVuZGVyTXVsdGlDb2x1bW5TZXQiOworICAgIHJldHVybiAiUmVuZGVyTXVsdGlDb2x1
bW5TZXQiX3M7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtblNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU2V0LmgKaW5kZXggNDg4MjYwM2E0MjQwNGFiNmM3ZmYwNDM5YzU2NjBkZWI2Njdk
NmQ0NC4uODA0ZTg4Y2E5MjQyMjVkYmE5NGZhYWY2NzVjZDYxZjBjMDY4YTAxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmgKQEAgLTE2OSw3
ICsxNjksNyBAQCBwcml2YXRlOgogCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9p
bnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciopIG92
ZXJyaWRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBMYXlv
dXRVbml0IGNhbGN1bGF0ZU1heENvbHVtbkhlaWdodCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5l
clBsYWNlaG9sZGVyLmNwcAppbmRleCA2ZWZjNTE1YjJlNDg5YzBjMzYxMTI0YTc3MmQ1NjdhNDJj
ODAyYWVmLi5kZWM0Mjc1MmRlZDdjZmEzMDhiN2U0MzhkYzBmNzI2ZmJlMDE0ZmFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxh
Y2Vob2xkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNv
bHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgUmVuZGVyTXVsdGlD
b2x1bW5TcGFubmVyUGxhY2Vob2xkZXI6OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9s
ZGVyKFJlbmRlck0KIHsKIH0KIAotY29uc3QgY2hhciogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVy
UGxhY2Vob2xkZXI6OnJlbmRlck5hbWUoKSBjb25zdAorQVNDSUlMaXRlcmFsIFJlbmRlck11bHRp
Q29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpyZW5kZXJOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gIlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyIjsKKyAgICByZXR1cm4gIlJl
bmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyIl9zOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oCmluZGV4IDY1MGQ0OTE0Y2QyMjI2
OTE2NDZkOTFmY2U3Y2IzN2Y0M2FlN2YyZmEuLmQwN2VhZDRkMTY5ZGNlOGQyNzdiMjI4NGRmZmY5
NmQ3MTkxOGEzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oCkBAIC01MCw3ICs1MCw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpIG92ZXJyaWRlIHsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgV2Vha1B0cjxSZW5kZXJCb3g+IG1fc3Bhbm5lcjsKICAgICBXZWFrUHRyPFJlbmRl
ck11bHRpQ29sdW1uRmxvdz4gbV9mcmFnbWVudGVkRmxvdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMTU5MGQyMGRkMGIyYjJkOGM0ZmM2Y2JiMzk0NDhm
NGU0YWQ1MDA0ZC4uZWExZmU5NDIwNTlkNDdiMGM4Njc3MjgxZGQ0OThiNWNkZGQ2ZjBhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTEyMjYsMTMgKzEy
MjYsMTQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Om91dHB1dFJlbmRlck9iamVjdChUZXh0U3RyZWFt
JiBzdHJlYW0sIGJvb2wgbWFyaywgaW50IGRlcHRoKQogICAgIGlmIChub2RlKCkpCiAgICAgICAg
IHN0cmVhbSA8PCBub2RlKCktPm5vZGVOYW1lKCkudXRmOCgpLmRhdGEoKSA8PCAiICI7CiAKLSAg
ICBTdHJpbmcgbmFtZSA9IHJlbmRlck5hbWUoKTsKKyAgICBBU0NJSUxpdGVyYWwgbmFtZSA9IHJl
bmRlck5hbWUoKTsKKyAgICBTdHJpbmdWaWV3IG5hbWVWaWV3IHsgbmFtZSB9OwogICAgIC8vIEZJ
WE1FOiBSZW5kZXJlcidzIG5hbWUgc2hvdWxkIG5vdCBpbmNsdWRlIHByb3BlcnR5IHZhbHVlIGxp
c3RpbmcuCi0gICAgaW50IHBvcyA9IG5hbWUuZmluZCgnKCcpOworICAgIGludCBwb3MgPSBuYW1l
Vmlldy5maW5kKCcoJyk7CiAgICAgaWYgKHBvcyA+IDApCi0gICAgICAgIHN0cmVhbSA8PCBuYW1l
LmxlZnQocG9zIC0gMSkudXRmOCgpLmRhdGEoKTsKKyAgICAgICAgc3RyZWFtIDw8IG5hbWVWaWV3
LmxlZnQocG9zIC0gMSkuY2hhcmFjdGVyczgoKTsKICAgICBlbHNlCi0gICAgICAgIHN0cmVhbSA8
PCBuYW1lLnV0ZjgoKS5kYXRhKCk7CisgICAgICAgIHN0cmVhbSA8PCBuYW1lVmlldzsKIAogICAg
IGlmIChpczxSZW5kZXJCb3g+KCp0aGlzKSkgewogICAgICAgICBhdXRvJiByZW5kZXJCb3ggPSBk
b3duY2FzdDxSZW5kZXJCb3g+KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAppbmRleCA5Y2ZlZThiOGI1OGYyYTgwYjdkYzBlNDJkMjk4MjdiMzIyNGNmNTA2Li5m
Y2FjZjM4NTRjOGVhNGUwODI3YTdiZTIyMGQ0OTJmMjU1N2U2YTk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogCiAg
ICAgUmVuZGVyVGhlbWUmIHRoZW1lKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBU0NJSUxpdGVyYWwgcmVuZGVy
TmFtZSgpIGNvbnN0ID0gMDsKIAogICAgIFJlbmRlckVsZW1lbnQqIHBhcmVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyZW50OyB9CiAgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZihjb25zdCBSZW5kZXJP
YmplY3QqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJQcm9ncmVzcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmgK
aW5kZXggM2UxMmFjNzA0MDdmMmYzMTZhM2YxOWMwYWQ5OGJlMTk3ODczYmRhOS4uN2U3ZjI5Njk1
YzhmMTQxZDc4ZjUzN2ExMGVhNzQ4NGQ5MTNhZGUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclByb2dyZXNzLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIEhUTUxQ
cm9ncmVzc0VsZW1lbnQqIHByb2dyZXNzRWxlbWVudCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAg
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
UHJvZ3Jlc3MiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyUHJvZ3Jlc3MiX3M7IH0KICAgICBib29sIGlzUHJvZ3Jlc3MoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgTG9naWNhbEV4dGVudENvbXB1dGVk
VmFsdWVzIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5
b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUXVvdGUuaAppbmRleCBhMmYyNmM2N2M0ODA2ZjY5Y2Y1ODY1Yzk5MzVkM2QwYWIz
NTljZGFlLi5hYTRmNmE3NzFlNzc4NjZkMDE0YWY3ZGZjYjA4ODE3NGE2NGEzOTVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB1cGRhdGVSZW5kZXJlcihSZW5kZXJUcmVlQnVpbGRlciYsIFJlbmRlclF1b3Rl
KiBwcmV2aW91c1F1b3RlKTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclF1b3RlIjsgfQorICAgIEFTQ0lJTGl0
ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclF1b3RlIl9z
OyB9CiAgICAgYm9vbCBpc1F1b3RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIGJvb2wgaXNPcGVuKCkgY29uc3Q7CiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IGJjY2E2MzRjNjM1OTIzNDUxNzFlMWZkMzlk
YzE0MzlhMDQwZTVkMDkuLjQ0M2ExMmNmYzA0NTRkZTQwNmVlYzhjZmE0OTc4ZDY5Nzk2MDk0NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCkBAIC04NSw3ICs4
NSw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlQ29uc3RyYWluZWRMb2dpY2Fs
V2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFJlbmRl
ckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVwbGFj
ZWQiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyUmVwbGFjZWQiX3M7IH0KIAogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsaWNhLmgKaW5kZXggMmNlNzg2MTAxYjQ3ZTMyYzNkYjhiODdlYjY1YTAxNjQy
MzFhYjM3Yy4uMzI4ZGE4ZmRhMTM4MjJiM2ZhNDgwZTMzMGViYmU2YWRlNGJhYzNjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oCkBAIC0zOCw3ICszOCw3IEBAIHB1
YmxpYzoKICAgICBSZW5kZXJSZXBsaWNhKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAg
dmlydHVhbCB+UmVuZGVyUmVwbGljYSgpOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSZXBsaWNhIjsgfQorICAgIEFTQ0lJTGl0
ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJlcGxpY2Ei
X3M7IH0KIAogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnkuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmgKaW5kZXggYTNhMWMw
MjQ0NjgzYTg3YTNkZWRiNTlhNDQ2MWRhZmVhODBkMzlhYS4uZjViZTdiN2I0YTgxZTA1MTgwZDM1
YTMwMzBmMTFhMjIzMWU5ZWQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5o
CkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGlzUnVieUlubGluZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1
YnkgKGlubGluZSkiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUmVuZGVyUnVieSAoaW5saW5lKSJfczsgfQogICAgIGJvb2wgY3JlYXRl
c0Fub255bW91c1dyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9Owog
CkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGlzUnVieUJsb2NrKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUnVi
eSAoYmxvY2spIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclJ1YnkgKGJsb2NrKSJfczsgfQogICAgIGJvb2wgY3JlYXRlc0Fu
b255bW91c1dyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oCmluZGV4IDEyMjE2N2ZhYzk5
NTE5MzFjYjE4OTkzMjMyMzg1NjE0MGVkZGIyNzEuLjRkZTQ4ODlkODFhN2I1NDA1YmJlMDU4M2M0
ODhmOTdkMWEyNzM0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSdWJ5QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFz
ZS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJSdWJ5QmFzZShEb2N1bWVu
dCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlCYXNlKCk7CiAgICAg
Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJSdWJ5QmFzZSAoYW5vbnltb3VzKSI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5QmFzZSAoYW5vbnltb3VzKSJf
czsgfQogICAgIAogICAgIFJlbmRlclJ1YnlSdW4qIHJ1YnlSdW4oKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgKaW5kZXggMzU4NTE5NzhjMjY4YmFiMDhm
NzJjMjQ0ZjhmZGE1M2Y0ZDAzNGVjMy4uM2NlMTY2MDZmYzliYjdlZDUzMjhkZDllODEwZThmYWYx
NGYzNWJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlS
dW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCkBAIC03
Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGlzUnVieVJ1bigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1YnlSdW4gKGFub255bW91cykiOyB9
CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyUnVieVJ1biAoYW5vbnltb3VzKSJfczsgfQogICAgIGJvb2wgY3JlYXRlc0Fub255bW91
c1dyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBjYW5E
cm9wQW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmgKaW5kZXggNjJjNWVl
NmViYjQ2ZjUxMGVhMWIyNzgzYjBiOGExYzhhNTE3NzNkMC4uMDg2OGI4MDIxYjMxODRlNWFlNWQy
OWRiZDE1ZTMwNWQ4NGRkZmJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnlUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnlUZXh0LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuQnJlYWtCZWZv
cmUoY29uc3QgTGF6eUxpbmVCcmVha0l0ZXJhdG9yJikgY29uc3Q7CiAgICAKIHByaXZhdGU6Ci0g
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJSdWJ5VGV4dCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5VGV4dCJfczsgfQogICAgIGJvb2wgaXNSdWJ5VGV4dCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgYXZvaWRzRmxvYXRz
KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclBhcnQuaAppbmRleCA3ZGZjNGIzYTVjMjY2ZjJhM2NhNjRkNWM0NzdhYWFjMDI3ZTJi
Y2JmLi5hM2Y4ZTdlOTZjNjJiOTEwYzVmMWZhOTU1OTA2YzU3NTJiYTQ4YjlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKQEAgLTM5LDcgKzM5
LDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgflJlbmRlclNjcm9sbGJhclBhcnQoKTsK
IAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyU2Nyb2xsYmFyUGFydCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTY3JvbGxiYXJQYXJ0Il9zOyB9CiAgICAgCiAg
ICAgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCmluZGV4IDNiYTA1MTA1Nzg4
ZjFmYzc5MGI2YzQxM2U1MjczNDkzN2QzMmE2NzUuLjdiZmJhMGZiNmY3ODhmODA3ZDg1ZDJmY2Zm
NzI2NWI5M2ZkN2VmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbGlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIGRvdWJsZSB2YWx1ZVJhdGlvKCkgY29uc3Q7
CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTbGlkZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU2xpZGVyIl9zOyB9CiAgICAgYm9vbCBp
c1NsaWRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIExheW91dFVu
aXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCmluZGV4
IGM1ZTJiNTkzZjI3NmQ4YzAwZTZlODczMDcwZjEyMTA3ZWI5MGY2NTQuLmMxYjFkYzlhZjdjY2Q2
ZjhmOTAwOWRjYTUzZDdkMmIyZDBjNGVmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5oCkBAIC0yODAsNyArMjgwLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBz
dGF0aWMgUmVuZGVyUHRyPFJlbmRlclRhYmxlPiBjcmVhdGVUYWJsZVdpdGhTdHlsZShEb2N1bWVu
dCYsIGNvbnN0IFJlbmRlclN0eWxlJik7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclRhYmxlIjsgfQorICAgIEFTQ0lJTGl0ZXJh
bCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclRhYmxlIl9zOyB9
CiAKICAgICBib29sIGlzVGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAppbmRleCAzODRiZjg4ZWFl
YjFhZGE5NGEyMDg2MWRlMWVkNzg2MTVmZmRjYTQyLi4xZjhkOTlhMmQ3OTY3N2M5Y2EyYzQ2MDJl
YTFhOGQwNTEwMWQwMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBSZW5kZXJQ
dHI8UmVuZGVyVGFibGVDZWxsPiBjcmVhdGVUYWJsZUNlbGxXaXRoU3R5bGUoRG9jdW1lbnQmLCBj
b25zdCBSZW5kZXJTdHlsZSYpOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIChpc0Fub255bW91cygpIHx8IGlzUHNldWRvRWxlbWVudCgpKSA/
ICJSZW5kZXJUYWJsZUNlbGwgKGFub255bW91cykiIDogIlJlbmRlclRhYmxlQ2VsbCI7IH0KKyAg
ICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIChpc0Fu
b255bW91cygpIHx8IGlzUHNldWRvRWxlbWVudCgpKSA/ICJSZW5kZXJUYWJsZUNlbGwgKGFub255
bW91cykiX3MgOiAiUmVuZGVyVGFibGVDZWxsIl9zOyB9CiAKICAgICBib29sIGlzVGFibGVDZWxs
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNvbC5oCmluZGV4IGE5ZDFjYTg2NTFkYjg1YzcwZTk0MjVjMzI4YTli
MDQ3ZWE5OTZhNTAuLjhlN2MxZmI5Y2EyZDI2MWQwZTY0YmJlNzQ1MzZkZjhhMmU3NDEwMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJSZW5kZXJUYWJsZUNvbCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJUYWJsZUNvbCJfczsgfQogICAgIGJvb2wgaXNS
ZW5kZXJUYWJsZUNvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lk
IGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCmlu
ZGV4IGJhN2VjMDllNzFmYjg5NmUyMGJiMTFmYTNmMjNlYWVjMDc4NDY1NzUuLjk0MjdmNmFjZjcx
OTVhOWViMjZjYTRmMDA0MDIzODBmOGM0NGI3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJUYWJsZVJvdz4gY3JlYXRlVGFibGVSb3dXaXRoU3R5
bGUoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpOwogCi0gICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIChpc0Fub255bW91cygpIHx8IGlzUHNl
dWRvRWxlbWVudCgpKSA/ICJSZW5kZXJUYWJsZVJvdyAoYW5vbnltb3VzKSIgOiAiUmVuZGVyVGFi
bGVSb3ciOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAoaXNBbm9ueW1vdXMoKSB8fCBpc1BzZXVkb0VsZW1lbnQoKSkgPyAiUmVuZGVyVGFi
bGVSb3cgKGFub255bW91cykiX3MgOiAiUmVuZGVyVGFibGVSb3ciX3M7IH0KIAogICAgIGJvb2wg
Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZv
aWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKElzSW50ZXJuYWxNb3ZlKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAppbmRleCA4NWNiMTJk
YjkzYmIxOTJhZmI2NTZiMTYxNGQyOWYyZGQ2M2VlMTRhLi41NDMzNDc0NWI0ZThhNjljMjg3MjAw
Y2YzMGNkMjg3MzI4NGRhODIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlU2VjdGlvbi5oCkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRG9O
b3RJbmNsdWRlQWxsSW50ZXJzZWN0aW5nQ2VsbHMKICAgICB9OwogCi0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIChpc0Fub255bW91cygpIHx8IGlz
UHNldWRvRWxlbWVudCgpKSA/ICJSZW5kZXJUYWJsZVNlY3Rpb24gKGFub255bW91cykiIDogIlJl
bmRlclRhYmxlU2VjdGlvbiI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIChpc0Fub255bW91cygpIHx8IGlzUHNldWRvRWxlbWVudCgpKSA/
ICJSZW5kZXJUYWJsZVNlY3Rpb24gKGFub255bW91cykiX3MgOiAiUmVuZGVyVGFibGVTZWN0aW9u
Il9zOyB9CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4
IDE5OTExOTY4MTEyYTg2M2Q5MWJmZTE0OTZmMDQzODIwMWVhODc2N2IuLmVlOGI0NWQ3ZjMzYjNk
YThhZWQ0YmQ4ZGUxYWQ0NWZlNjVlOWI0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKQEAgLTIyMSw5ICsyMjEsOSBAQCBSZW5kZXJUZXh0Ojp+UmVuZGVyVGV4dCgp
CiAgICAgQVNTRVJUKCFvcmlnaW5hbFRleHRNYXAoKS5jb250YWlucyh0aGlzKSk7CiB9CiAKLWNv
bnN0IGNoYXIqIFJlbmRlclRleHQ6OnJlbmRlck5hbWUoKSBjb25zdAorQVNDSUlMaXRlcmFsIFJl
bmRlclRleHQ6OnJlbmRlck5hbWUoKSBjb25zdAogewotICAgIHJldHVybiAiUmVuZGVyVGV4dCI7
CisgICAgcmV0dXJuICJSZW5kZXJUZXh0Il9zOwogfQogCiBUZXh0KiBSZW5kZXJUZXh0Ojp0ZXh0
Tm9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCA5MjQ0
NjcyMTYwMmZlMjlkN2VlOTdhYTczZjkwY2EzOGM1OTJjODg2Li4xNjJkMTU5MmY0YTc4YmEzZjM0
OTczY2NlODM1YTVmOGU5Mjg4MTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmgKQEAgLTE5Niw3ICsxOTYsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFJlbmRlclRl
eHQoTm9kZSYsIGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
LmgKaW5kZXggMmU5MDUzNGZmZDhkYTgzYjdkYzU0ZDQ2ZmE3ZGVmMTYzMTliYmI0My4uZmFjOTQw
MjgyMDcwMjk4OWJmNzJlZDI0MjU2NzhiZmI4MmJkNjUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJvdGVjdGVk
OgogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyVGV4
dENvbnRyb2wiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyVGV4dENvbnRyb2wiX3M7IH0KICAgICBib29sIGlzVGV4dENvbnRy
b2woKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBjb21wdXRlSW50cmlu
c2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQm
IG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDI2Y2QzMmE1NGQ2NzJlZDYwMzA1ODFiOTI2Y2Q0
ZTZmNDBjZjMxNjQuLjY3NDQwYjg4MWQ1ZTNiYjk3NzQxZDRiYTE2ZDYxNGJkYTg4YjY5NTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTEz
MCw5ICsxMzAsOSBAQCBzdGF0aWMgdm9pZCBwcmludEJvcmRlclN0eWxlKFRleHRTdHJlYW0mIHRz
LCBjb25zdCBCb3JkZXJTdHlsZSBib3JkZXJTdHlsZSkKIHN0YXRpYyBTdHJpbmcgZ2V0VGFnTmFt
ZShOb2RlKiBuKQogewogICAgIGlmIChuLT5pc0RvY3VtZW50Tm9kZSgpKQotICAgICAgICByZXR1
cm4gIiI7CisgICAgICAgIHJldHVybiAiIl9zOwogICAgIGlmIChuLT5ub2RlVHlwZSgpID09IE5v
ZGU6OkNPTU1FTlRfTk9ERSkKLSAgICAgICAgcmV0dXJuICJDT01NRU5UIjsKKyAgICAgICAgcmV0
dXJuICJDT01NRU5UIl9zOwogICAgIHJldHVybiBuLT5ub2RlTmFtZSgpOwogfQogCkBAIC0yMTQs
NyArMjE0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGhhc05vbkVtcHR5U2libGluZyhjb25zdCBS
ZW5kZXJJbmxpbmUmIGlubGluZVJlbmRlcmVyKQogCiB2b2lkIFJlbmRlclRyZWVBc1RleHQ6Ondy
aXRlUmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3QmIG8sIE9w
dGlvblNldDxSZW5kZXJBc1RleHRGbGFnPiBiZWhhdmlvcikKIHsKLSAgICB0cyA8PCBvLnJlbmRl
ck5hbWUoKTsKKyAgICB0cyA8PCBvLnJlbmRlck5hbWUoKS5jaGFyYWN0ZXJzKCk7CiAKICAgICBp
ZiAoYmVoYXZpb3IuY29udGFpbnMoUmVuZGVyQXNUZXh0RmxhZzo6U2hvd0FkZHJlc3NlcykpCiAg
ICAgICAgIHRzIDw8ICIgIiA8PCAmbzsKQEAgLTQ1MSwxMyArNDUxLDEzIEBAIHZvaWQgUmVuZGVy
VHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRl
ck9iamVjdCYgbywKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHN3aXRjaCAo
dGV4dFswXSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIGJ1bGxldDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRleHQgPSAiYnVsbGV0IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHQgPSAiYnVsbGV0Il9zOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgYmxhY2tTcXVhcmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
ZXh0ID0gImJsYWNrIHNxdWFyZSI7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gImJs
YWNrIHNxdWFyZSJfczsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICBjYXNlIHdoaXRlQnVsbGV0OgotICAgICAgICAgICAgICAgICAgICAgICAgdGV4
dCA9ICJ3aGl0ZSBidWxsZXQiOworICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9ICJ3aGl0
ZSBidWxsZXQiX3M7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBxdW90ZUFu
ZEVzY2FwZU5vblByaW50YWJsZXModGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlkZW8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWRlby5oCmluZGV4IGI0YmExZTU5ZGMxM2M3NzcxMWRmN2Y4NDFlNmRlMjk0NzBmZTgyYjAuLmQ0
YzY0NDQ5NzlhM2RiMGZiZjhmNjE3MjBlYWVlZmRjY2MyYWI0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWRlby5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqKSBmaW5hbDsK
IAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVu
ZGVyVmlkZW8iOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiUmVuZGVyVmlkZW8iX3M7IH0KIAogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzVmlkZW8oKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRl
eCAxNzE2NzMzOGY2YzJkMGJjNGY4ZDRlMmU2OTU3OTRiNTYwYzE4MDNmLi5hMWI0ZTVjNzQ3MjUx
ZmU5OWEyOWYxNzk2ZTBkNTRkNGE5NmU0MmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFJlbmRlclZpZXcoRG9jdW1l
bnQmLCBSZW5kZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJWaWV3KCk7CiAKLSAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclZp
ZXciOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyVmlldyJfczsgfQogCiAgICAgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggMmZjOGExNmIxM2IwMDRlOWEx
ZGU1Y2U0ZDk3N2Y0MjI2Y2RhMTNhYS4uNmE5M2MwZjVlNDI1YTM3MmYwYTA5N2MzN2M0NjI0ZmZj
ZjE1NzgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MQmxvY2suaApAQCAtOTAsNyArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6
CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTEJsb2NrKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyTWF0aE1MQmxvY2siOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MQmxvY2siX3M7IH0KICAgICBib29s
IGF2b2lkc0Zsb2F0cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGNh
bkRyb3BBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2b2lkIGxheW91dEl0ZW1zKGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CkBAIC0xMTIsNyAr
MTEyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxUYWJs
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTFRhYmxlIjsgfQorICAgIEFT
Q0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhN
TFRhYmxlIl9zOyB9CiAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVmPE1hdGhNTFN0eWxlPiBtX21hdGhNTFN0eWxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxGZW5jZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RmVuY2VkLmgKaW5kZXggYjlkYzFjZDcyNjI0ZDMwODdiZjFjN2FhNGU0ODgyZWQyYTkzZTllMC4u
YWI3ZjczNGYwMzg4N2ZhMzRhZGExYmE3OTJiN2Y3OWViNjc5NzQ2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCkBAIC01
MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1M
RmVuY2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MRmVuY2VkIjsgfQor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRl
ck1hdGhNTEZlbmNlZCJfczsgfQogCiAgICAgU3RyaW5nIG1fb3BlbjsKICAgICBTdHJpbmcgbV9j
bG9zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MRnJhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MRnJhY3Rpb24uaAppbmRleCBmODc1NjI3ZjQ4YTI1NWRkMTcxY2U5MTM4NjgzYWE2MTc5
ZDE5MjcwLi4xMDRiMjdhNzNlOTFiMjEyY2U0MDRlZDFkMWUwNzExNjFkYzFkMWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFj
dGlvbi5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGlz
UmVuZGVyTWF0aE1MRnJhY3Rpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRo
TUxGcmFjdGlvbiI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJSZW5kZXJNYXRoTUxGcmFjdGlvbiJfczsgfQogCiAgICAgdm9pZCBjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocygpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE1hdGguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MTWF0aC5oCmluZGV4IGZiZDc5ZmQ0ZTNkZjAzNzE0ZjAxZGUwY2JlNmExNmVhZjIwMDM1MDEu
LjNlOGE1NzMxYzNhOGYxMDgxNWE2ZGU3ZjBhMGM5MWUwM2M0ZDMzYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MTWF0
aCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1hdGgiOyB9CisgICAgQVND
SUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1M
TWF0aCJfczsgfQogCiAgICAgdm9pZCBjZW50ZXJDaGlsZHJlbihMYXlvdXRVbml0IGNvbnRlbnRX
aWR0aCk7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91
dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwX2x1KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaAppbmRleCBk
MWRlNzU0ZGUyNWRmNTA1MDk1MDdjOTMxYjFhMDY5OTVjOGIyZTU5Li5iYWRkMzU4OTE3NzZkZWE1
ZDBjOWVkNjE3MDU2YjUyNDhhNmY4NzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oCkBAIC0zOSw3ICszOSw3IEBA
IHB1YmxpYzoKICAgICBSZW5kZXJNYXRoTUxNZW5jbG9zZShNYXRoTUxNZW5jbG9zZUVsZW1lbnQm
LCBSZW5kZXJTdHlsZSYmKTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1lbmNsb3NlIjsgfQorICAgIEFT
Q0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhN
TE1lbmNsb3NlIl9zOyB9CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygp
IGZpbmFsOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlv
dXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgZmluYWw7CiAgICAgdm9pZCBwYWludChQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCmluZGV4IDUy
MTgxYjQ2ZDBjZGJlN2I0NWNmZDdmOWYzMWZiYWEyNzEyZTlkMjUuLjY5ZjA1MDk3ODM5MDEzNTZk
NWRiYzA5NTUwODg1ZmVmYjZiODllN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKQEAgLTc0LDcgKzc0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5
b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBfbHUpIGZpbmFsOwogICAgIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBmaW5hbDsKIAotICAgIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc0Fub255bW91cygpID8gIlJlbmRl
ck1hdGhNTE9wZXJhdG9yIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJNYXRoTUxPcGVyYXRvciI7IH0K
KyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGlzQW5v
bnltb3VzKCkgPyAiUmVuZGVyTWF0aE1MT3BlcmF0b3IgKGFub255bW91cykiX3MgOiAiUmVuZGVy
TWF0aE1MT3BlcmF0b3IiX3M7IH0KICAgICB2b2lkIHBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBm
b3JTZWxmLCBjb25zdCBMYXlvdXRQb2ludCYsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNl
UHJpbnRSZWN0KSBmaW5hbDsKICAgICBib29sIGlzUmVuZGVyTWF0aE1MT3BlcmF0b3IoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0ludmlzaWJsZU9wZXJhdG9yKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFBhZGRlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxQYWRkZWQuaAppbmRleCA3NDg4NWYzNGEzYTZhMDVmYTk3Yzk5MzlkM2VhNWM4NGM2YTFh
NzczLi41MTZiNjAzMTA1OTc1MDRmN2YxMTRmMzI4OWI0NmZiMzIwYzkwNWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmgK
QEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIFJlbmRlck1hdGhNTFBhZGRlZChNYXRoTUxQ
YWRkZWRFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxQYWRkZWQi
OyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
UmVuZGVyTWF0aE1MUGFkZGVkIl9zOyB9CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFBhZGRlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKaW5kZXggOTBjYWUwYTI1ZTQyODU1NDBlODViZDc0
NDI1N2QyZmIzMDk3ZTY0ZC4uYTIzY2ZiMDZmZDRkNjZmN2E4MGY5MWIxNmMyZmE5YTI0ZDg5NmMz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJCb3gmIGdldEJh
c2UoKSBjb25zdDsKICAgICBSZW5kZXJCb3gmIGdldEluZGV4KCkgY29uc3Q7CiAgICAgYm9vbCBp
c1JlbmRlck1hdGhNTFJvb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxS
b290IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gIlJlbmRlck1hdGhNTFJvb3QiX3M7IH0KICAgICBNYXRoTUxSb290RWxlbWVudCYgZWxlbWVu
dCgpIGNvbnN0OwogICAgIFJvb3RUeXBlIHJvb3RUeXBlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCmluZGV4IDM3YmI2
MGFhNzY3NTJkZTEyNjQwNjE5OTgxNDk3NjgzMDFlODk1MjYuLjgyMjVkNzU3MTY2MDFjY2ZlYTE3
ODk0NTEwOWJjZDhkMzc0ZDI3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaApAQCAtNTEsNyArNTEsNyBAQCBwcm90ZWN0ZWQ6CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFJvdygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlck1hdGhNTFJvdyI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxSb3ciX3M7IH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKaW5kZXggYWRiOTJmZTQ4NGJmMjBiMGVk
Y2ZhOGJkYmQxNWMwYTA5OTg0NTMyMy4uY2QzOTQzMTllOWE0NDg4MzM3OWZhNGI1Zjk2ZWM3Y2Zm
NWZjMTZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTY3JpcHRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTY3JpcHRzLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiBwcm90ZWN0
ZWQ6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFNjcmlwdHMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJNYXRoTUxTY3JpcHRzIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTFNjcmlwdHMiX3M7
IH0KICAgICBNYXRoTUxTY3JpcHRzRWxlbWVudDo6U2NyaXB0VHlwZSBzY3JpcHRUeXBlKCkgY29u
c3Q7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBh
Z2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKaW5kZXggMTk1OTI4NjQ5YTUx
OWEwOWYxMmZjYmQ2ZTg1YzU0Y2FjNTE2NTU5Zi4uMTEzNTNhMzIzMzgyZTc1NzhiYjhmOGQxMzA0
YjJjNmM1MDU4MTUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU3BhY2UuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgTWF0
aE1MU3BhY2VFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0
aE1MU3BhY2VFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCiBwcml2YXRlOgot
ICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVy
TWF0aE1MU3BhY2UiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiUmVuZGVyTWF0aE1MU3BhY2UiX3M7IH0KICAgICBib29sIGlzUmVuZGVyTWF0
aE1MU3BhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0NoaWxk
QWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxUb2tlbi5oCmluZGV4IGY4MzllZWMwMzUxMjk1ZDg2YzE0MjYyNDMyMDQyODA3
Mjg2Yjc5YTIuLjNlZjc3NTY1MjdmNjdkOWVjMjliMjIwMGNkOGU4YjQ3NWJkYThiMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2Vu
LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNS
ZW5kZXJNYXRoTUxUb2tlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhN
TFRva2VuIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlck1hdGhNTFRva2VuIl9zOyB9CiAgICAgYm9vbCBpc0NoaWxkQWxsb3dl
ZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH07CiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2Us
IGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVN
YXRoVmFyaWFudEdseXBoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAppbmRleCAzY2FlNmMyY2Y3YmNhMGIzZmI1
ZDA3OGMwNjg5ZWYxNTgxNWE4NzFmLi5hYjQyYmM2YzUwM2I1ZGMzNDMzNzYwYmU4ZTA1M2NkNzU4
YzdkNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFVuZGVyT3Zlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MU2NyaXB0cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFVuZGVyT3ZlcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTFVuZGVyT3ZlciI7IH0KKyAgICBBU0NJSUxpdGVyYWwg
cmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxVbmRlck92ZXIi
X3M7IH0KICAgICBNYXRoTUxVbmRlck92ZXJFbGVtZW50JiBlbGVtZW50KCkgY29uc3Q7CiAKICAg
ICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAppbmRl
eCBjMWI4YzRhMzMyYjkyZWY2ODkwY2ZmZTZkMjY3NjZmYjlhZjJkODZlLi45ZjZhYzAzYzczOThk
MTQ2MzZmYjc1NTQ3YTI0ZGM1MmMxMGIwMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tTaGFwZUltYWdlT3JpZ2luKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3R5bGVJbWFnZSYgcwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNv
bnN0IFVSTCYgdXJsID0gY2FjaGVkSW1hZ2UudXJsKCk7Ci0gICAgU3RyaW5nIHVybFN0cmluZyA9
IHVybC5pc051bGwoKSA/ICInJyIgOiB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KCk7CisgICAgU3RyaW5nIHVybFN0cmluZyA9IHVybC5pc051bGwoKSA/ICInJyJfcyA6IHVybC5z
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKTsKICAgICBkb2N1bWVudC5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIlVu
c2FmZSBhdHRlbXB0IHRvIGxvYWQgVVJMICIgKyB1cmxTdHJpbmcgKyAiLiIpOwogCiAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dy
aWRQb3NpdGlvbnNSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
R3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcAppbmRleCAzZGJjYzgyMzQ1MWJlM2Q4NTI3NzA2YWVj
ZGVlZWY5OTljYzU0YTFhLi5lYTNlZTkwNmJmNGNjNDlhZjU2ZjdhYTc3ZDYyNDhhZDQ5MWE5YWUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9u
c1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBv
c2l0aW9uc1Jlc29sdmVyLmNwcApAQCAtMzg5LDEwICszODksMTAgQEAgc3RhdGljIHZvaWQgYWRq
dXN0R3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlk
VHJhY2tTaXoKIAogICAgICAgICBpZiAoaW5pdGlhbFBvc2l0aW9uLmlzQXV0bygpKSB7CiAgICAg
ICAgICAgICAvLyBTZXQgaW5pdGlhbCBwb3NpdGlvbiB0byBzcGFuIDxsaW5lIG5hbWVzIC0gMT4K
LSAgICAgICAgICAgIGluaXRpYWxQb3NpdGlvbi5zZXRTcGFuUG9zaXRpb24oc3RkOjptYXgoMSwg
bGluZUNvdW50IC0gMSksICIiKTsKKyAgICAgICAgICAgIGluaXRpYWxQb3NpdGlvbi5zZXRTcGFu
UG9zaXRpb24oc3RkOjptYXgoMSwgbGluZUNvdW50IC0gMSksIGVtcHR5U3RyaW5nKCkpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gU2V0IGZpbmFsIHBvc2l0aW9uIHRvIHNwYW4g
PGxpbmUgbmFtZXMgLSAxPgotICAgICAgICAgICAgZmluYWxQb3NpdGlvbi5zZXRTcGFuUG9zaXRp
b24oc3RkOjptYXgoMSwgbGluZUNvdW50IC0gMSksICIiKTsKKyAgICAgICAgICAgIGZpbmFsUG9z
aXRpb24uc2V0U3BhblBvc2l0aW9uKHN0ZDo6bWF4KDEsIGxpbmVDb3VudCAtIDEpLCBlbXB0eVN0
cmluZygpKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR0NvbnRhaW5lci5oCmluZGV4IGE3YWU4NTll
YmY3ZmNlMDc4ZjUxZDVhM2VlZTY2NjdhZDNjMTBlMmYuLmM2MzcwZjJlMGFmYmQ3Mzg1MzM0MDY4
NjY0MGYxOWI2NTY3ODNkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdDb250YWluZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyKFNWR0VsZW1lbnQm
LCBSZW5kZXJTdHlsZSYmKTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHQ29udGFpbmVyIjsgfQorICAgIEFTQ0lJTGl0ZXJh
bCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0NvbnRhaW5l
ciJfczsgfQogCiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVn
YWN5UmVuZGVyU1ZHUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lS
ZW5kZXJTVkdSZWN0LmgKaW5kZXggODk3YzkwNmRhYmY5ZmY5ZDQ2NTQxYTdiMTY4YzJkZGMxYWUz
NjY2My4uODY3YjZjMTQzZDE1YjUwODg0ZjM3Zjc4ZTliOTA3NWVhM2EzZjM4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSZWN0LmgKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVu
dCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZWN0IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1JlY3QiX3M7IH0K
IAogICAgIHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOwogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdXNlUGF0aEZhbGxiYWNrID8gTGVn
YWN5UmVuZGVyU1ZHU2hhcGU6OmlzRW1wdHkoKSA6IG1fZmlsbEJvdW5kaW5nQm94LmlzRW1wdHko
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5k
ZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNW
R1Jvb3QuaAppbmRleCBhNjRiN2JhNGNiZjBlYTczNTk4NzE5NzczZGU0YjRkM2QzYmI5YmU2Li44
NjRhOTBkNmZmNGU5NjBmN2Y5ZGNjZWI2NzQ4MzE2OGE2ZDM3MGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1Jvb3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1Jvb3QuaApAQCAtNjksNyAr
NjksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNMZWdhY3lTVkdSb290KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gSW50ZW50aWFsbHkgbGVmdCAnUmVuZGVyU1ZH
Um9vdCcgaW5zdGVhZCBvZiAnTGVnYWN5UmVuZGVyU1ZHUm9vdCcsIHRvIGF2b2lkIGJyZWFraW5n
IGxheW91dCB0ZXN0cy4KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jvb3QiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUm9vdCJfczsgfQogCiAgICAg
TGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZl
cnJlZCAgPSBDb21wdXRlQWN0dWFsKSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IGNv
bXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBlc3Rp
bWF0ZWRVc2VkV2lkdGggPSBzdGQ6Om51bGxvcHQpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdTaGFwZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdTaGFwZS5oCmluZGV4
IDVkMGNhMTRhOGVjYThlM2RkYzNmZjJjZDY2ZmU5NGYxYmU2Y2NmYjguLmQ4OGFmZTcwNTA1YTU2
NWQ0MjVlMWFiM2RmOWMzMTdjZTQ0ZDk4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1NoYXBlLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBpc0xlZ2FjeVNWR1NoYXBlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlclNWR1NoYXBlIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1NoYXBlIl9zOyB9CiAKICAgICB2
b2lkIGxheW91dCgpIGZpbmFsOwogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0NvbnRhaW5lci5oCmluZGV4IDk3NWE4ZjYyY2QwM2MzMjEzYWJiODU0Y2Y3NGQxNjY1
ZDljOTQ0NWMuLjBhZDBiODM0NjVmOTljMzFlOTVhYTNjNzk3NTlhZTM3NzhmYjMwMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaApA
QCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyU1ZHQ29udGFp
bmVyKFNWR0VsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHQ29udGFpbmVyIjsgfQor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR0NvbnRhaW5lciJfczsgfQogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCmluZGV4IDg4NTMw
ZGMxZTdhZDRiZDQ1MDNhNWM1YzY2MTY4OGUyNDJlMmZjNDMuLjk3ZWE2MjdjMmFjODc1MDdiNGJh
ZmMxYjljZDdlOTcxODAyYjRkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHRWxsaXBzZS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5SZW5kZXJTVkdFbGxpcHNlKCk7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdFbGxpcHNlIjsgfQor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR0VsbGlwc2UiX3M7IH0KIAogICAgIHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVudCgp
IG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
dXNlUGF0aEZhbGxiYWNrID8gTGVnYWN5UmVuZGVyU1ZHU2hhcGU6OmlzRW1wdHkoKSA6IG1fZmls
bEJvdW5kaW5nQm94LmlzRW1wdHkoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAppbmRleCA4NGIxNWQ0NjcyYWEwOTU0
MjNjNzZlZTEyMmU1MmM5ZjVjYTViMGE1Li5lZGIxZjk3MGRiMWJjODljM2Q2ZjNkODJmMThkMzVm
MjM5MzQxYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ZvcmVpZ25PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ZvcmVpZ25PYmplY3QuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZvaWQgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7Ci0gICAg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJT
VkdGb3JlaWduT2JqZWN0IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0ZvcmVpZ25PYmplY3QiX3M7IH0KIAogICAgIHZv
aWQgdXBkYXRlTG9naWNhbFdpZHRoKCkgb3ZlcnJpZGU7CiAgICAgTG9naWNhbEV4dGVudENvbXB1
dGVkVmFsdWVzIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwg
TGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCmluZGV4IDI0Njhk
YzcwYTQ2YzkzNzYyMTc1NjFhOTAzNTVkOWExOTg4ZmRlYWUuLjk4MmVlZTNjMzI5ODFhZTVjNzRl
ZWQ4YzQ2OGU4ZmMxYjA3YzkwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRl
c3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogICAgIGJvb2wgaXNTVkdHcmFkaWVudFN0b3AoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdHcmFkaWVudFN0b3AiOyB9CisgICAgQVNDSUlM
aXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHR3Jh
ZGllbnRTdG9wIl9zOyB9CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIG92ZXJyaWRlIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKaW5kZXggNjdiOWE0MDQxMjQw
YTAwZjU3ZDhlZTE4MTJkMmI2MzVkZDFkZDA4NC4uMGQ4MWJmMzc5NjdlZWRmOGMyYzY1MThiZGM4
MjQ3NDQ2ZTY1MTYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCkBAIC0zNyw3ICszNyw3IEBAIHByb3RlY3Rl
ZDoKIAogcHJpdmF0ZToKICAgICBib29sIGlzU1ZHSGlkZGVuQ29udGFpbmVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIjsgfQorICAgIEFTQ0lJ
TGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0hp
ZGRlbkNvbnRhaW5lciJfczsgfQogCiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmgKaW5kZXggN2QxMGEyMjExMGJlMTg1ZjFhOTFkMjNlOGVkMDZiZWVkY2Fi
YzA3Yi4uMTEwZGM1NGE5OGY2NzQ4NmI0NDg4MmZhZjM4NDlmYjlkM2E3MmY3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAtNTYsNyArNTYs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAg
ICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRl
clNWR0ltYWdlIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclNWR0ltYWdlIl9zOyB9CiAgICAgYm9vbCBpc1NWR0ltYWdlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVu
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKaW5kZXggNWM1ZjY3ZDZmZmFmZWExMWE0
NDRkMzA1ZWJlZjU4ZDAyYzA1MDBiMi4uMjAwMDE0Nzc1Y2VlODI1ZDFkYWZiYTRkOTQwZTJiOGQw
MjMyNzU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lu
bGluZS5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVt
ZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0lubGluZSI7IH0KKyAgICBBU0NJSUxpdGVy
YWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdJbmxpbmUi
X3M7IH0KICAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIGJvb2wgaXNTVkdJbmxpbmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmgKaW5kZXggZTAzYjc0N2IwNzlkOWMzYzk4M2I4NTM5YmVlZTE1MjE2NTU3ZDZjMi4uNDU5
ZTM0OGNhMWU3M2MxZDI3ZGYwM2QyMWUzODRjNDI4NDEwNjQzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmgKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIFNWR0lubGluZVRleHRCb3gqIGZpcnN0VGV4dEJveCgpIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHSW5saW5lVGV4dCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdJbmxpbmVUZXh0Il9z
OyB9CiAKICAgICBTdHJpbmcgb3JpZ2luYWxUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRSZW5kZXJlZFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCmluZGV4IDZhYzJhZDliOWU5ZGQyOTU5
YWVmYzRmNzlhYzk4ZTE2MzgxMGEwZTguLjhlMDM1Y2ZkMTRjYWQ2ZmY4NDNkNzI5NGY3ZDdiZWFi
Yjg5NWY3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0
aC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGlzU1ZH
UGF0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1BhdGgiOyB9Cisg
ICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyU1ZHUGF0aCJfczsgfQogCiAgICAgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3Zl
cnJpZGU7CiAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VCb3VuZGluZ0JveCgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaApp
bmRleCBkYWU1ODRiYzliMjkzODljOGY1MGI1ZTEwN2U2YmNkNDYxYjlhY2Y1Li43NWQ3ZGVlYWIx
NWZhZGJjZjM2ZDc0Mjg4ZDM4Y2FiMzA1YWJhM2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZvaWQgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNW
R1JlY3QiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyU1ZHUmVjdCJfczsgfQogCiAgICAgdm9pZCB1cGRhdGVTaGFwZUZyb21F
bGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBSZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgpIDogbV9m
aWxsQm91bmRpbmdCb3guaXNFbXB0eSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAppbmRleCA4ZmNkOWI0ZWM1
ZmJlMWRiMTZkZGY0YmNlNDc4NGY2NjJhZjNkMmJkLi5iMDkwMzFlNTYwYjM2NTE3YmI0YmRlZDE2
OGY5N2E2MWQwZTkyZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyIl9zOyB9CiAgICAgYm9vbCBpc1NW
R1Jlc291cmNlQ2xpcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IGJvb2wgcGF0aE9ubHlDbGlwcGluZyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBlZmZlY3RpdmVab29tKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
aAppbmRleCBjZjNmNmJhNDkwN2ZhYjJlZjI5MGM0MWNiNDU2NzU3ZDAyOTMzYjFkLi44YTA3Mjg4
NmZhOTZlMmQ4N2UyOGNjZjhiMzQ2OTU5ODQ2OGI1YjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCkBAIC04Niw3
ICs4Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBk
ZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmlsdGVy
Il9zOyB9CiAgICAgYm9vbCBpc1NWR1Jlc291cmNlRmlsdGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBzdGQ6OnVuaXF1ZV9w
dHI8RmlsdGVyRGF0YT4+IG1fcmVuZGVyZXJGaWx0ZXJEYXRhTWFwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZS5oCmluZGV4IDE2MjQ4Mzc3MTk0ZWMyNDI4MDVlNWQ0M2NmOWEzYWEyMjIwMGY0
MGIuLjdjMTJhYjVhMmU1OTUzZmEyYjgxYmRlMWVkMjI5YWMzNDI3NWNmNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmlt
aXRpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3Zl
cnJpZGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlIjsgfQorICAgIEFTQ0lJTGl0
ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlIl9zOyB9CiAKICAgICBpbmxpbmUgdm9pZCBwcmltaXRpdmVBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGlu
ZWFyR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VMaW5lYXJHcmFkaWVudC5oCmluZGV4IGVjNGFjNmI5ZDIxODk4NWJmOWY0NzM2NGVlZDc4
NjMwYzYxYjdkNmUuLjk3ZDFjNTI2OTQxNjMyOGY0NGIxNTY2MGRlMzkyZDVjN2FhNTk3OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VM
aW5lYXJHcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGdyYWRpZW50RWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJj
ZUxpbmVhckdyYWRpZW50IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQiX3M7IH0KIAog
ICAgIExpbmVhckdyYWRpZW50QXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5o
CmluZGV4IGVmZTgwZTk1YzkxYzgxZDk4YzZhNDI1Yjk3YjEyYzA0ODFlZWVkYjEuLmU0ZjZiZjIw
MjliMDdkNTc5MTU0NDMwMmZjNWQ4NDg0OTEzN2ZhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmgKQEAgLTYyLDcg
KzYyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRl
bGV0ZTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIi
X3M7IH0KIAogICAgIC8vIEdlbmVyYXRlcyBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCB1c2FibGUg
dG8gcmVuZGVyIG1hcmtlciBjb250ZW50LiBIYW5kbGVzIHNjYWxpbmcgdGhlIG1hcmtlciBjb250
ZW50CiAgICAgLy8gYWNvcmRpbmcgdG8gU1ZHcyBtYXJrZXJVbml0cz0ic3Ryb2tlV2lkdGgiIGNv
bmNlcHQsIHdoZW4gYSBzdHJva2VXaWR0aCB2YWx1ZSAhPSAtMSBpcyBwYXNzZWQgaW4uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmgKaW5kZXggZjEzM2Y3NTExOTY4YWExNDFiNGI1ZWUxNjcwNTFhYzkwODg1MTBjNC4uNmVi
MWQ1NDk3MjNkZWU5YjRlNjY3Nzc2ODhkODhmMjNmNmRhOGU2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaApAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0
ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciI7IH0KKyAgICBBU0NJSUxpdGVyYWwg
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlciJfczsgfQogCiAgICAgYm9vbCBkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0
YSosIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlck9iamVjdCopOwogICAgIHZv
aWQgY2FsY3VsYXRlTWFza0NvbnRlbnRSZXBhaW50UmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKaW5kZXgg
ZjZjZjIyNjBmYzNmMjY2NTVlMGQxZmYyNGZhYzM4YWE4N2ViNjU4ZC4uNTc1Y2U2NzVlODRiYWZi
MDA0YzgxMDdjZjU2YmRmNjUzYTc1ZGJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCkBAIC01OCw3ICs1OCw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0
ZTsKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlclNWR1Jlc291cmNlUGF0dGVybiI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4iX3M7
IH0KIAogICAgIGJvb2wgYnVpbGRUaWxlSW1hZ2VUcmFuc2Zvcm0oUmVuZGVyRWxlbWVudCYsIGNv
bnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiwgY29uc3QgU1ZHUGF0dGVybkVsZW1lbnQmLCBGbG9hdFJl
Y3QmIHBhdHRlcm5Cb3VuZGFyaWVzLCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9y
bSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKaW5kZXggYTY2OTEyNDI3ZGYz
M2ZiMjkyZWQ1NWY2ZjEyNGJkZjM3M2VhNzZiOS4uM2FiNGIyYjVhZTk0ODdiMzllNzRmNzVhMTQw
YmYzNTRiZmM3N2JhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZ3JhZGllbnRFbGVtZW50KCkgY29uc3QgPSBkZWxl
dGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IlJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJl
bmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxH
cmFkaWVudCJfczsgfQogICAgIGJvb2wgY29sbGVjdEdyYWRpZW50QXR0cmlidXRlcygpIGZpbmFs
OwogCiAgICAgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggNDNjMTJlYTgyNmUx
OWM3MjZkOWRiOTQxMTYyNDEwMTY3OGU2NTA1ZS4uMjRjMzBiY2E3YjY1YmU1MDRkYTllZDhkNmVi
Zjc1OWRmMWFjNTdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmgKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBj
b25zdCA9IGRlbGV0ZTsKIAogICAgIGJvb2wgaXNTVkdSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHUm9vdCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSb290Il9zOyB9CiAgICAgYm9v
bCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
Ly8gVG8gcHJldmVudCBjZXJ0YWluIGxlZ2FjeSBjb2RlIHBhdGhzIHRvIGhpdCBhc3NlcnRpb25z
IGluIGRlYnVnIGJ1aWxkcywgd2hlbiBzd2l0Y2hpbmcgb2ZmIExCU0UgKGR1cmluZyB0aGUgdGVh
cmRvd24gb2YgdGhlIExCU0UgdHJlZSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1NoYXBlLmgKaW5kZXggYTIzZDlhZDI5OGUwMjkxMTM5ODZjNTkwMWI0MzUxNWUx
ZDllNDJiMC4uZDJhMzM2Y2ZhOGFmYjUwYmMxMDg1MTBlMTRlYjM3YmMwMWJlZTYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaApAQCAtMTA2LDcg
KzEwNiw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzU1ZHU2hhcGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHU2hhcGUiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHU2hhcGUiX3M7IH0KIAog
ICAgIHZvaWQgbGF5b3V0KCkgZmluYWw7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUU3Bhbi5oCmluZGV4IDFiYmFlYjM3MmJjNjdhNTQ3NDkyMjUzNGVkMjdiOTFjNWJk
N2I3YWYuLmViOTE0ZGJjODYwMjhiMzRmOTk1NWQ0OTgyMTEzMzgwNjlkMWRjNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKQEAgLTM3LDcgKzM3
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZ3JhcGhpY3NFbGVtZW50KCkgY29u
c3QgPSBkZWxldGU7Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTVkdUU3BhbiI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdUU3BhbiJfczsgfQogICAgIGJv
b2wgaXNTVkdUU3BhbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5kZXggMzJjNmUx
MjQ4MzY3YzU1NTM3MTcyNGQ0ZTczYzZhYmIzMDhjM2QxMS4uNDQxMjY5ODg1NzkxMzAyNDI4MmZm
ZjBhOGU2NjUxYjZiN2YxY2RjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2
b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdUZXh0IjsgfQor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR1RleHQiX3M7IH0KICAgICBib29sIGlzU1ZHVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UG9pbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dFBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dFBhdGguaAppbmRleCBkNjYzMGMyNWU0ZmMyODMwZDFjYmIxYzM1Mjg5ODQ2MDhm
YWU0NmRiLi4xOTZhMjQ3MmVhYmE5YWMxZGUwZGI2OTVmYjk5YjJkMGJkOGI3MmFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCkBAIC00
NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBncmFwaGljc0VsZW1lbnQoKSBjb25zdCA9
IGRlbGV0ZTsKIAogICAgIGJvb2wgaXNTVkdUZXh0UGF0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlclNWR1RleHRQYXRoIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJO
YW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1RleHRQYXRoIl9zOyB9CiAK
ICAgICBQYXRoIG1fbGF5b3V0UGF0aDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKaW5kZXggM2VlM2Jj
MTQ2OWQ0ZjQyZWJhODhmNDc1OTQ1ZTc4NGVjZmUzYWFkYy4uYjg0MTYxZGYwY2FkNTZiMTM1ZjA1
YmQ2N2FlM2NkNDhkNTcxZmVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaApAQCAtNDksNyArNDksNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCiAgICAgYm9v
bCBpc1NWR1ZpZXdwb3J0Q29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIi
X3M7IH0KIAogICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0Owog
ICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUb1BhcmVudFRyYW5zZm9ybTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdDb250YWluZXJMYXlvdXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdDb250YWluZXJMYXlvdXQuY3BwCmluZGV4
IDkxMDUwZjk0MWE5YWFlOTRmOTk0NDJkOTNiNmMzMmEyYmY4ODNiMTcuLjgxM2MzZWNlZjkzOGJk
YTQ4NjQ0NGQ0YWY3MDhkOTdjYjczY2VhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHQ29udGFpbmVyTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0NvbnRhaW5lckxheW91dC5jcHAKQEAgLTIwNiwxMCArMjA2LDEwIEBA
IHZvaWQgU1ZHQ29udGFpbmVyTGF5b3V0Ojp2ZXJpZnlMYXlvdXRMb2NhdGlvbkNvbnNpc3RlbmN5
KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlCiAKICAgICAgICAgYXV0byBpbml0aWFsTGF5b3V0TG9j
YXRpb24gPSBmbG9vcmVkTGF5b3V0UG9pbnQocmVuZGVyZXIub2JqZWN0Qm91bmRpbmdCb3goKS5t
aW5YTWluWUNvcm5lcigpKTsKICAgICAgICAgaWYgKGV4cGVjdGVkTGF5b3V0TG9jYXRpb24gPT0g
aW5pdGlhbExheW91dExvY2F0aW9uKSB7Ci0gICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU1ZH
LCBzdHJlYW0gPDwgIi0tPiBTVkdDb250YWluZXJMYXlvdXQgcmVuZGVyZXIgIiA8PCAmcmVuZGVy
ZXIgPDwgIiAoIiA8PCByZW5kZXJlci5yZW5kZXJOYW1lKCkgPDwgIikiCisgICAgICAgICAgICBM
T0dfV0lUSF9TVFJFQU0oU1ZHLCBzdHJlYW0gPDwgIi0tPiBTVkdDb250YWluZXJMYXlvdXQgcmVu
ZGVyZXIgIiA8PCAmcmVuZGVyZXIgPDwgIiAoIiA8PCByZW5kZXJlci5yZW5kZXJOYW1lKCkuY2hh
cmFjdGVycygpIDw8ICIpIgogICAgICAgICAgICAgICAgIDw8ICIgLSB2ZXJpZnlMYXlvdXRMb2Nh
dGlvbkNvbnNpc3RlbmN5KCkgb2JqZWN0Qm91bmRpbmdCb3ggLyBsYXlvdXRMb2NhdGlvbiBhcmUg
aW4gc3luYy4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIExPR19XSVRIX1NUUkVB
TShTVkcsIHN0cmVhbSA8PCAiLS0+IFNWR0NvbnRhaW5lckxheW91dCByZW5kZXJlciAiIDw8ICZy
ZW5kZXJlciA8PCAiICgiIDw8IHJlbmRlcmVyLnJlbmRlck5hbWUoKSA8PCAiKSIKKyAgICAgICAg
ICAgIExPR19XSVRIX1NUUkVBTShTVkcsIHN0cmVhbSA8PCAiLS0+IFNWR0NvbnRhaW5lckxheW91
dCByZW5kZXJlciAiIDw8ICZyZW5kZXJlciA8PCAiICgiIDw8IHJlbmRlcmVyLnJlbmRlck5hbWUo
KS5jaGFyYWN0ZXJzKCkgPDwgIikiCiAgICAgICAgICAgICAgICAgPDwgIiAtIHZlcmlmeUxheW91
dExvY2F0aW9uQ29uc2lzdGVuY3koKSBvYmplY3RCb3VuZGluZ0JveCAvIGxheW91dExvY2F0aW9u
IGludmFyaWFudCB2aW9sYXRlZCAtLSBvdXQgb2Ygc3luYyBkdWUgdG8gcGFydGlhbCBsYXlvdXQ/
IgogICAgICAgICAgICAgICAgIDw8ICIgY3VycmVudExheW91dExvY2F0aW9uPSIgPDwgY3VycmVu
dExheW91dExvY2F0aW9uCiAgICAgICAgICAgICAgICAgPDwgIiAgKGV4cGVjdGVkTGF5b3V0TG9j
YXRpb249IiA8PCBleHBlY3RlZExheW91dExvY2F0aW9uCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9p
ZCBTVkdDb250YWluZXJMYXlvdXQ6OnZlcmlmeUxheW91dExvY2F0aW9uQ29uc2lzdGVuY3koY29u
c3QgUmVuZGVyRWxlbWVudCYgcmUKIAogI2lmICFkZWZpbmVkKE5ERUJVRykKICAgICBpZiAocmVu
ZGVyZXIuaXNTVkdSb290KCkpIHsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNWRywgc3RyZWFt
IDw8ICItLT4gU1ZHQ29udGFpbmVyTGF5b3V0IHJlbmRlcmVyICIgPDwgJnJlbmRlcmVyIDw8ICIg
KCIgPDwgcmVuZGVyZXIucmVuZGVyTmFtZSgpIDw8ICIpIgorICAgICAgICBMT0dfV0lUSF9TVFJF
QU0oU1ZHLCBzdHJlYW0gPDwgIi0tPiBTVkdDb250YWluZXJMYXlvdXQgcmVuZGVyZXIgIiA8PCAm
cmVuZGVyZXIgPDwgIiAoIiA8PCByZW5kZXJlci5yZW5kZXJOYW1lKCkuY2hhcmFjdGVycygpIDw8
ICIpIgogICAgICAgICAgICAgPDwgIiAtIHZlcmlmeUxheW91dExvY2F0aW9uQ29uc2lzdGVuY3ko
KSBlbmQiKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDg3MzMwMTQ3ZjE0MWMxNmMwOGNl
MDE1ZTc4MTE5MGI4YjY0ZmJiODguLmYxNWU2MzcxNjA0YjhhOTVmN2FiZWE3MjZmNDA3YzlmZjk0
ZmY5ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
VHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJUcmVlQXNUZXh0LmNwcApAQCAtNzUsNyArNzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
Ki8KIGNsYXNzIFRleHRTdHJlYW1TZXBhcmF0b3IgewogcHVibGljOgotICAgIFRleHRTdHJlYW1T
ZXBhcmF0b3IoY29uc3QgU3RyaW5nJiBzKQorICAgIFRleHRTdHJlYW1TZXBhcmF0b3IoVUNoYXIg
cykKICAgICAgICAgOiBtX3NlcGFyYXRvcihzKQogICAgICAgICAsIG1fbmVlZFRvU2VwYXJhdGUo
ZmFsc2UpCiAgICAgewpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZy
aWVuZCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBUZXh0U3RyZWFtU2VwYXJh
dG9yJik7CiAKLSAgICBTdHJpbmcgbV9zZXBhcmF0b3I7CisgICAgVUNoYXIgbV9zZXBhcmF0b3I7
CiAgICAgYm9vbCBtX25lZWRUb1NlcGFyYXRlOwogfTsKIApAQCAtMTc1LDcgKzE3NSw3IEBAIHN0
YXRpYyB2b2lkIHdyaXRlU1ZHUGFpbnRpbmdSZXNvdXJjZShUZXh0U3RyZWFtJiB0cywgY29uc3Qg
UmVuZGVyU1ZHUmVzb3VyY2UmIHJlCiAKIHN0YXRpYyB2b2lkIHdyaXRlU1ZHRmlsbFBhaW50aW5n
UmVzb3VyY2UoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBj
b25zdCBSZW5kZXJTVkdSZXNvdXJjZSYgZmlsbFBhaW50aW5nUmVzb3VyY2UpCiB7Ci0gICAgVGV4
dFN0cmVhbVNlcGFyYXRvciBzKCIgIik7CisgICAgVGV4dFN0cmVhbVNlcGFyYXRvciBzKCcgJyk7
CiAgICAgdHMgPDwgIiBbZmlsbD17IiA8PCBzOwogICAgIHdyaXRlU1ZHUGFpbnRpbmdSZXNvdXJj
ZSh0cywgZmlsbFBhaW50aW5nUmVzb3VyY2UpOwogCkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGlj
IHZvaWQgd3JpdGVTVkdGaWxsUGFpbnRpbmdSZXNvdXJjZShUZXh0U3RyZWFtJiB0cywgY29uc3Qg
UmVuZGVyRWxlbWVudCYgcmUKIAogc3RhdGljIHZvaWQgd3JpdGVTVkdTdHJva2VQYWludGluZ1Jl
c291cmNlKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29u
c3QgUmVuZGVyU1ZHUmVzb3VyY2UmIHN0cm9rZVBhaW50aW5nUmVzb3VyY2UsIGNvbnN0IFNWR0dy
YXBoaWNzRWxlbWVudCYgc2hhcGUpCiB7Ci0gICAgVGV4dFN0cmVhbVNlcGFyYXRvciBzKCIgIik7
CisgICAgVGV4dFN0cmVhbVNlcGFyYXRvciBzKCcgJyk7CiAgICAgdHMgPDwgIiBbc3Ryb2tlPXsi
IDw8IHM7CiAgICAgd3JpdGVTVkdQYWludGluZ1Jlc291cmNlKHRzLCBzdHJva2VQYWludGluZ1Jl
c291cmNlKTsKIApAQCAtNDIyLDcgKzQyMiw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlU3RhbmRhcmRQ
cmVmaXgoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgb2JqZWN0LCBPcHRpCiAg
ICAgaWYgKHdyaXRlSW5kZW50ID09IFdyaXRlSW5kZW50T3JOb3Q6OlllcykKICAgICAgICAgdHMg
PDwgaW5kZW50OwogCi0gICAgdHMgPDwgb2JqZWN0LnJlbmRlck5hbWUoKTsKKyAgICB0cyA8PCBv
YmplY3QucmVuZGVyTmFtZSgpLmNoYXJhY3RlcnMoKTsKIAogICAgIGlmIChiZWhhdmlvci5jb250
YWlucyhSZW5kZXJBc1RleHRGbGFnOjpTaG93QWRkcmVzc2VzKSkKICAgICAgICAgdHMgPDwgIiAi
IDw8ICZvYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGll
bnRBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1
dGVzLmgKaW5kZXggNmZkOTViZDZlZWUzMDJjZTRlNWVmNTE5YzVlMjFhMTY1NzM1NzNjNy4uZmZm
NzE3YTI3YzZkNjFkMzFjMmRkZjVjOTIzYzI1M2YwMzZjOGY2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL0xpbmVhckdyYWRpZW50QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaApAQCAtMjYsNyArMjYsNyBAQCBzdHJ1
Y3QgTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzIDogR3JhZGllbnRBdHRyaWJ1dGVzIHsKICAgICBM
aW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMoKQogICAgICAgICA6IG1feDEoKQogICAgICAgICAsIG1f
eTEoKQotICAgICAgICAsIG1feDIoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIxMDAlIikKKyAgICAg
ICAgLCBtX3gyKFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiMTAwJSJfcykKICAgICAgICAgLCBtX3ky
KCkKICAgICAgICAgLCBtX3gxU2V0KGZhbHNlKQogICAgICAgICAsIG1feTFTZXQoZmFsc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzLmgKaW5kZXggNjEy
M2RiZTkwZjM3NDc2YjFiNGU4Y2NlYmViNzM2MDlkZGQwNzA1OS4uNmNmYzFkZjc1NmRhMDRiNzUy
MGZiMTdjOWFjOGE3ZTdlYjc5YTAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1Jh
ZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9SYWRpYWxH
cmFkaWVudEF0dHJpYnV0ZXMuaApAQCAtMjUsOSArMjUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0cnVjdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMgOiBHcmFkaWVudEF0dHJpYnV0ZXMg
ewogICAgIFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcygpCi0gICAgICAgIDogbV9jeChTVkdMZW5n
dGhNb2RlOjpXaWR0aCwgIjUwJSIpCi0gICAgICAgICwgbV9jeShTVkdMZW5ndGhNb2RlOjpXaWR0
aCwgIjUwJSIpCi0gICAgICAgICwgbV9yKFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiNTAlIikKKyAg
ICAgICAgOiBtX2N4KFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiNTAlIl9zKQorICAgICAgICAsIG1f
Y3koU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiX3MpCisgICAgICAgICwgbV9yKFNWR0xlbmd0
aE1vZGU6OldpZHRoLCAiNTAlIl9zKQogICAgICAgICAsIG1fY3hTZXQoZmFsc2UpCiAgICAgICAg
ICwgbV9jeVNldChmYWxzZSkKICAgICAgICAgLCBtX3JTZXQoZmFsc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCmluZGV4IGUwYTAzMTJjMzc0ZmE3MGJiNDQwNDk2MTMzZDNk
N2EyMGI0OWZkYTkuLjgwZTkzZmM4OTM2MThhMzAyNzNmNTJhODJiNjgwYmQ0OTgxNTJmNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCkBAIC0xMjMsMTMgKzEyMywxMyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gU1ZHRml0VG9WaWV3Qm94OjpwYXJzZQogCiAgICAgICAgIC8vIENoZWNrIHRoYXQgd2lkdGgg
aXMgcG9zaXRpdmUuCiAgICAgICAgIGlmICgqd2lkdGggPCAwLjApIHsKLSAgICAgICAgICAgIGRv
Y3VtZW50LmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRFcnJvcigiQSBuZWdhdGl2ZSB2YWx1
ZSBmb3IgVmlld0JveCB3aWR0aCBpcyBub3QgYWxsb3dlZCIpOworICAgICAgICAgICAgZG9jdW1l
bnQuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZv
ciBWaWV3Qm94IHdpZHRoIGlzIG5vdCBhbGxvd2VkIl9zKTsKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBDaGVjayB0aGF0IGhlaWdodCBp
cyBwb3NpdGl2ZS4KICAgICAgICAgaWYgKCpoZWlnaHQgPCAwLjApIHsKLSAgICAgICAgICAgIGRv
Y3VtZW50LmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRFcnJvcigiQSBuZWdhdGl2ZSB2YWx1
ZSBmb3IgVmlld0JveCBoZWlnaHQgaXMgbm90IGFsbG93ZWQiKTsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRFcnJvcigiQSBuZWdhdGl2ZSB2YWx1ZSBm
b3IgVmlld0JveCBoZWlnaHQgaXMgbm90IGFsbG93ZWQiX3MpOwogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRy
eUVsZW1lbnQuY3BwCmluZGV4IGMwYmYyMWU0NDI0YTM2Mzg4YzdmMjE2NzI3MTU1MzBjMWYyZDE4
M2IuLjI4ZWM0NzdiODRiYTFiYWJlMDk5YjlkNjM5ZjkyMDA3OWQ1NjJmYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9p
ZCBTVkdHZW9tZXRyeUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21TdHIKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cGF0aExlbmd0
aEF0dHIpIHsKICAgICAgICAgbV9wYXRoTGVuZ3RoLT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUu
dG9GbG9hdCgpKTsKICAgICAgICAgaWYgKG1fcGF0aExlbmd0aC0+YmFzZVZhbCgpIDwgMCkKLSAg
ICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydEVycm9yKCJB
IG5lZ2F0aXZlIHZhbHVlIGZvciBwYXRoIGF0dHJpYnV0ZSA8cGF0aExlbmd0aD4gaXMgbm90IGFs
bG93ZWQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJl
cG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBwYXRoIGF0dHJpYnV0ZSA8cGF0aExlbmd0
aD4gaXMgbm90IGFsbG93ZWQiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA0ZGQ3ZjgwZTM3Nzc5ODdkY2I3
MGMxYTNjOGE4N2NkOGE0ZmQ2ZmI5Li4xMzE4NWYyMTE4OTY5NmE0ZmYyNmMwNzI2YWZiYTFkNmYx
ODU4MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTQ1
Nyw3ICs0NTcsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIGZyYW1lLnZpZXcoKS0+c2V0VHJhbnNwYXJlbnQo
dHJ1ZSk7IC8vIFNWRyBJbWFnZXMgYXJlIHRyYW5zcGFyZW50LgogCiAgICAgICAgIEFTU0VSVChs
b2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7IC8vIERvY3VtZW50TG9hZGVyIHNob3VsZCBo
YXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5pdCgpLgotICAgICAgICBsb2FkZXIuYWN0aXZl
RG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiKTsK
KyAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVU
eXBlKCJpbWFnZS9zdmcreG1sIl9zKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCktPndyaXRlcigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBkb2N1bWVu
dAogICAgICAgICBkYXRhKCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8m
JiBidWZmZXIpIHsKICAgICAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53
cml0ZXIoKS5hZGREYXRhKGJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggMjA2N2ExZDAwODhiMzYzNjk2NDlkYTJhZGZkMjQyYWFkNTJjZTAwYi4uNGYwYmY5OWVh
ZjdlNjczM2NmNDIyMjhkYmI0YzAwYzIyYTQ1NGYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtNzY1LDE2ICs3NjUsMTYgQEAgc3RhdGljIFN0cmluZyBzdHlsZVZhbGlk
aXR5VG9Ub1N0cmluZyhTdHlsZTo6VmFsaWRpdHkgdmFsaWRpdHkpCiB7CiAgICAgc3dpdGNoICh2
YWxpZGl0eSkgewogICAgIGNhc2UgU3R5bGU6OlZhbGlkaXR5OjpWYWxpZDoKLSAgICAgICAgcmV0
dXJuICJOb1N0eWxlQ2hhbmdlIjsKKyAgICAgICAgcmV0dXJuICJOb1N0eWxlQ2hhbmdlIl9zOwog
ICAgIGNhc2UgU3R5bGU6OlZhbGlkaXR5OjpFbGVtZW50SW52YWxpZDoKLSAgICAgICAgcmV0dXJu
ICJJbmxpbmVTdHlsZUNoYW5nZSI7CisgICAgICAgIHJldHVybiAiSW5saW5lU3R5bGVDaGFuZ2Ui
X3M7CiAgICAgY2FzZSBTdHlsZTo6VmFsaWRpdHk6OlN1YnRyZWVJbnZhbGlkOgotICAgICAgICBy
ZXR1cm4gIkZ1bGxTdHlsZUNoYW5nZSI7CisgICAgICAgIHJldHVybiAiRnVsbFN0eWxlQ2hhbmdl
Il9zOwogICAgIGNhc2UgU3R5bGU6OlZhbGlkaXR5OjpTdWJ0cmVlQW5kUmVuZGVyZXJzSW52YWxp
ZDoKLSAgICAgICAgcmV0dXJuICJSZWNvbnN0cnVjdFJlbmRlclRyZWUiOworICAgICAgICByZXR1
cm4gIlJlY29uc3RydWN0UmVuZGVyVHJlZSJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiBT
dHJpbmcgSW50ZXJuYWxzOjpzdHlsZUNoYW5nZVR5cGUoTm9kZSYgbm9kZSkKQEAgLTgxNSwzMSAr
ODE1LDMxIEBAIGJvb2wgSW50ZXJuYWxzOjppc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoY29uc3Qg
U3RyaW5nJiB1cmwpCiBzdGF0aWMgU3RyaW5nIHJlc3BvbnNlU291cmNlVG9TdHJpbmcoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmlzTnVsbCgp
KQotICAgICAgICByZXR1cm4gIk51bGwgcmVzcG9uc2UiOworICAgICAgICByZXR1cm4gIk51bGwg
cmVzcG9uc2UiX3M7CiAgICAgc3dpdGNoIChyZXNwb25zZS5zb3VyY2UoKSkgewogICAgIGNhc2Ug
UmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25v
d24iOworICAgICAgICByZXR1cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBSZXNvdXJjZVJlc3Bv
bnNlOjpTb3VyY2U6Ok5ldHdvcms6Ci0gICAgICAgIHJldHVybiAiTmV0d29yayI7CisgICAgICAg
IHJldHVybiAiTmV0d29yayJfczsKICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6
U2VydmljZVdvcmtlcjoKLSAgICAgICAgcmV0dXJuICJTZXJ2aWNlIHdvcmtlciI7CisgICAgICAg
IHJldHVybiAiU2VydmljZSB3b3JrZXIiX3M7CiAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpT
b3VyY2U6OkRpc2tDYWNoZToKLSAgICAgICAgcmV0dXJuICJEaXNrIGNhY2hlIjsKKyAgICAgICAg
cmV0dXJuICJEaXNrIGNhY2hlIl9zOwogICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZTo6U291cmNl
OjpEaXNrQ2FjaGVBZnRlclZhbGlkYXRpb246Ci0gICAgICAgIHJldHVybiAiRGlzayBjYWNoZSBh
ZnRlciB2YWxpZGF0aW9uIjsKKyAgICAgICAgcmV0dXJuICJEaXNrIGNhY2hlIGFmdGVyIHZhbGlk
YXRpb24iX3M7CiAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok1lbW9yeUNhY2hl
OgotICAgICAgICByZXR1cm4gIk1lbW9yeSBjYWNoZSI7CisgICAgICAgIHJldHVybiAiTWVtb3J5
IGNhY2hlIl9zOwogICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpNZW1vcnlDYWNo
ZUFmdGVyVmFsaWRhdGlvbjoKLSAgICAgICAgcmV0dXJuICJNZW1vcnkgY2FjaGUgYWZ0ZXIgdmFs
aWRhdGlvbiI7CisgICAgICAgIHJldHVybiAiTWVtb3J5IGNhY2hlIGFmdGVyIHZhbGlkYXRpb24i
X3M7CiAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGU6
Ci0gICAgICAgIHJldHVybiAiQXBwbGljYXRpb24gY2FjaGUiOworICAgICAgICByZXR1cm4gIkFw
cGxpY2F0aW9uIGNhY2hlIl9zOwogICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpE
T01DYWNoZToKLSAgICAgICAgcmV0dXJuICJET00gY2FjaGUiOworICAgICAgICByZXR1cm4gIkRP
TSBjYWNoZSJfczsKICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6SW5zcGVjdG9y
T3ZlcnJpZGU6Ci0gICAgICAgIHJldHVybiAiSW5zcGVjdG9yIG92ZXJyaWRlIjsKKyAgICAgICAg
cmV0dXJuICJJbnNwZWN0b3Igb3ZlcnJpZGUiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiAiRXJyb3IiOworICAgIHJldHVybiAiRXJyb3IiX3M7CiB9CiAK
IFN0cmluZyBJbnRlcm5hbHM6OnhoclJlc3BvbnNlU291cmNlKFhNTEh0dHBSZXF1ZXN0JiByZXF1
ZXN0KQpAQCAtMjg2Niw3ICsyODY2LDcgQEAgUmVmUHRyPFdpbmRvd1Byb3h5PiBJbnRlcm5hbHM6
Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIGF1
dG8qIGluc3BlY3RlZFBhZ2UgPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpOwog
ICAgIGF1dG8qIHdpbmRvdyA9IGluc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpOwotICAgIGF1dG8gZnJvbnRlbmRXaW5kb3dQcm94eSA9IHdpbmRvdy0+b3Bl
bigqd2luZG93LCAqd2luZG93LCB1cmwsICIiLCAiIikucmVsZWFzZVJldHVyblZhbHVlKCk7Cisg
ICAgYXV0byBmcm9udGVuZFdpbmRvd1Byb3h5ID0gd2luZG93LT5vcGVuKCp3aW5kb3csICp3aW5k
b3csIHVybCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkucmVsZWFzZVJldHVyblZhbHVl
KCk7CiAgICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yU3R1YkZy
b250ZW5kPigqaW5zcGVjdGVkUGFnZSwgZG93bmNhc3Q8RE9NV2luZG93Pihmcm9udGVuZFdpbmRv
d1Byb3h5LT53aW5kb3coKSkpOwogICAgIHJldHVybiBmcm9udGVuZFdpbmRvd1Byb3h5OwogfQpA
QCAtNDA2NCwxNyArNDA2NCwxNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjplbGVtZW50QnVmZmVyaW5n
UG9saWN5KEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgc3dpdGNoIChlbGVtZW50
LmJ1ZmZlcmluZ1BvbGljeSgpKSB7CiAgICAgY2FzZSBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9s
aWN5OjpEZWZhdWx0OgotICAgICAgICByZXR1cm4gIkRlZmF1bHQiOworICAgICAgICByZXR1cm4g
IkRlZmF1bHQiX3M7CiAgICAgY2FzZSBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5OjpMaW1p
dFJlYWRBaGVhZDoKLSAgICAgICAgcmV0dXJuICJMaW1pdFJlYWRBaGVhZCI7CisgICAgICAgIHJl
dHVybiAiTGltaXRSZWFkQWhlYWQiX3M7CiAgICAgY2FzZSBNZWRpYVBsYXllcjo6QnVmZmVyaW5n
UG9saWN5OjpNYWtlUmVzb3VyY2VzUHVyZ2VhYmxlOgotICAgICAgICByZXR1cm4gIk1ha2VSZXNv
dXJjZXNQdXJnZWFibGUiOworICAgICAgICByZXR1cm4gIk1ha2VSZXNvdXJjZXNQdXJnZWFibGUi
X3M7CiAgICAgY2FzZSBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5OjpQdXJnZVJlc291cmNl
czoKLSAgICAgICAgcmV0dXJuICJQdXJnZVJlc291cmNlcyI7CisgICAgICAgIHJldHVybiAiUHVy
Z2VSZXNvdXJjZXMiX3M7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuICJVTktOT1dOIjsKKyAgICByZXR1cm4gIlVOS05PV04iX3M7CiB9CiAKIEV4Y2VwdGlv
bk9yPHZvaWQ+IEludGVybmFsczo6c2V0T3ZlcnJpZGVQcmVmZXJyZWREeW5hbWljUmFuZ2VNb2Rl
KEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZykKQEAg
LTY0NzAsNyArNjQ3MCw3IEBAIFN0cmluZyBJbnRlcm5hbHM6OmZvY3VzUmluZ0NvbG9yKCkKIHVu
c2lnbmVkIEludGVybmFsczo6Y3JlYXRlU2xlZXBEaXNhYmxlcihjb25zdCBTdHJpbmcmIHJlYXNv
biwgYm9vbCBkaXNwbGF5KQogewogICAgIHN0YXRpYyB1bnNpZ25lZCBsYXN0VXNlZElkZW50aWZp
ZXIgPSAwOwotICAgIGF1dG8gc2xlZXBEaXNhYmxlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U2xl
ZXBEaXNhYmxlcj4ocmVhc29uLnV0ZjgoKS5kYXRhKCksIGRpc3BsYXkgPyBQQUw6OlNsZWVwRGlz
YWJsZXI6OlR5cGU6OkRpc3BsYXkgOiBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5cGU6OlN5c3RlbSk7
CisgICAgYXV0byBzbGVlcERpc2FibGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTbGVlcERpc2Fi
bGVyPihyZWFzb24sIGRpc3BsYXkgPyBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5cGU6OkRpc3BsYXkg
OiBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5cGU6OlN5c3RlbSk7CiAgICAgbV9zbGVlcERpc2FibGVy
cy5hZGQoKytsYXN0VXNlZElkZW50aWZpZXIsIFdURk1vdmUoc2xlZXBEaXNhYmxlcikpOwogICAg
IHJldHVybiBsYXN0VXNlZElkZW50aWZpZXI7CiB9CkBAIC02NTc3LDExICs2NTc3LDExIEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2VuZE1lZGlhU2Vzc2lvbkFjdGlvbihNZWRpYVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0CiB2b2lkIEludGVybmFsczo6bG9hZEFydHdvcmtJbWFnZShT
dHJpbmcmJiB1cmwsIEFydHdvcmtJbWFnZVByb21pc2UmJiBwcm9taXNlKQogewogICAgIGlmICgh
Y29udGV4dERvY3VtZW50KCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyBkb2N1bWVudC4iIH0pOworICAgICAgICBwcm9taXNlLnJl
amVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIGRvY3VtZW50LiJfcyB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV9hcnR3b3JrSW1hZ2VQcm9taXNlKSB7
Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAi
QW5vdGhlciBkb3dubG9hZCBpcyBjdXJyZW50bHkgcGVuZGluZy4iIH0pOworICAgICAgICBwcm9t
aXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFub3RoZXIgZG93bmxv
YWQgaXMgY3VycmVudGx5IHBlbmRpbmcuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZSA9IG1ha2VVbmlxdWU8QXJ0d29ya0ltYWdlUHJvbWlz
ZT4oV1RGTW92ZShwcm9taXNlKSk7CkBAIC02NTkzLDcgKzY1OTMsNyBAQCB2b2lkIEludGVybmFs
czo6bG9hZEFydHdvcmtJbWFnZShTdHJpbmcmJiB1cmwsIEFydHdvcmtJbWFnZVByb21pc2UmJiBw
cm9taXNlKQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1fYXJ0d29ya0ltYWdl
UHJvbWlzZS0+cmVqZWN0KGltYWdlRGF0YS5leGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlv
biB7IEludmFsaWRBY2Nlc3NFcnJvciwgIk5vIGltYWdlIHJldHJpZXZlZC4iICB9KTsKKyAgICAg
ICAgICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRB
Y2Nlc3NFcnJvciwgIk5vIGltYWdlIHJldHJpZXZlZC4iX3MgfSk7CiAgICAgICAgIG1fYXJ0d29y
a0ltYWdlUHJvbWlzZSA9IG51bGxwdHI7CiAgICAgfSk7CiAgICAgbV9hcnR3b3JrTG9hZGVyLT5y
ZXF1ZXN0SW1hZ2VSZXNvdXJjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHNNYXBMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
TWFwTGlrZS5jcHAKaW5kZXggOWY3NjgwYzU0NmUxNzhmM2QyZTMwYjBlNzY0NWE1ODBmZDY5OTZk
Yy4uOWEzZGY0ZDRhMTgwMDQ4NWM2ZWJmYTY4MTZlOTU0MzlkMzExMDcyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHNNYXBMaWtlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsc01hcExpa2UuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogSW50ZXJuYWxzTWFwTGlrZTo6SW50ZXJuYWxzTWFwTGlrZSgp
CiB7Ci0gICAgbV92YWx1ZXMuYWRkKCJpbml0IiwgMCk7CisgICAgbV92YWx1ZXMuYWRkKCJpbml0
Il9zLCAwKTsKIH0KIAogdm9pZCBJbnRlcm5hbHNNYXBMaWtlOjppbml0aWFsaXplTWFwTGlrZShE
T01NYXBBZGFwdGVyJiBtYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKaW5kZXggMDhmNDVlNmU3MmZjNGJiOGQ5MWQ0
MWE3NDZlOTUzYzgxZmFkOWM3ZC4uZTBhNjI1Y2YyZDFmOGYzY2ViODdiNjVkZDUxYzhjMDRmNmMy
ZWVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yLmNwcApAQCAtMTA1LDI1ICsxMDUsMjUgQEAgdm9pZCBNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnNldFRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQKIHZvaWQgTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwb3NpdGlvblN0YXRl
Q2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mKQogewogICAg
IEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7Ci0gICAgbV9zdGF0ZUNoYW5n
ZUxpc3RlbmVyLT5zY2hlZHVsZUNhbGxiYWNrKG1fY29udGV4dC5nZXQoKSwgInBvc2l0aW9uU3Rh
dGVDaGFuZ2VkIik7CisgICAgbV9zdGF0ZUNoYW5nZUxpc3RlbmVyLT5zY2hlZHVsZUNhbGxiYWNr
KG1fY29udGV4dC5nZXQoKSwgInBvc2l0aW9uU3RhdGVDaGFuZ2VkIl9zKTsKIH0KIAogdm9pZCBN
b2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnJlYWR5U3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lv
blJlYWR5U3RhdGUgc3RhdGUpCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVO
VElGSUVSLCBzdGF0ZSk7Ci0gICAgbV9zdGF0ZUNoYW5nZUxpc3RlbmVyLT5zY2hlZHVsZUNhbGxi
YWNrKG1fY29udGV4dC5nZXQoKSwgInJlYWR5U3RhdGVDaGFuZ2VkIik7CisgICAgbV9zdGF0ZUNo
YW5nZUxpc3RlbmVyLT5zY2hlZHVsZUNhbGxiYWNrKG1fY29udGV4dC5nZXQoKSwgInJlYWR5U3Rh
dGVDaGFuZ2VkIl9zKTsKIH0KIAogdm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBs
YXliYWNrU3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUgc3RhdGUpCiB7CiAg
ICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCBzdGF0ZSk7Ci0gICAgbV9z
dGF0ZUNoYW5nZUxpc3RlbmVyLT5zY2hlZHVsZUNhbGxiYWNrKG1fY29udGV4dC5nZXQoKSwgInBs
YXliYWNrU3RhdGVDaGFuZ2VkIik7CisgICAgbV9zdGF0ZUNoYW5nZUxpc3RlbmVyLT5zY2hlZHVs
ZUNhbGxiYWNrKG1fY29udGV4dC5nZXQoKSwgInBsYXliYWNrU3RhdGVDaGFuZ2VkIl9zKTsKIH0K
IAogdm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnRyYWNrSWRlbnRpZmllckNoYW5n
ZWQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogewogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lC
TEUoTE9HSURFTlRJRklFUiwgaWRlbnRpZmllcik7Ci0gICAgbV9zdGF0ZUNoYW5nZUxpc3RlbmVy
LT5zY2hlZHVsZUNhbGxiYWNrKG1fY29udGV4dC5nZXQoKSwgInRyYWNrSWRlbnRpZmllckNoYW5n
ZWQiKTsKKyAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250
ZXh0LmdldCgpLCAidHJhY2tJZGVudGlmaWVyQ2hhbmdlZCJfcyk7CiB9CiAKIFdURkxvZ0NoYW5u
ZWwmIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6bG9nQ2hhbm5lbCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Iu
aAppbmRleCA5ZTBmZTUzODdjZTc4NDJhNmMxZGYxZTZmYzZhY2QxMTgwMjZhYTE5Li44MTI0NjJi
ZWYxZDJkYTM1NTU4OGE3YTk4YmZlZDdjMGRmZWNiMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxTdHJpbmdDYWxsYmFjaz4mJik7CiAKLSAg
ICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJNb2NrIENvb3JkaW5h
dG9yIjsgfQorICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1v
Y2sgQ29vcmRpbmF0b3IiX3M7IH0KIAogICAgIHZvaWQgam9pbihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBsZWF2
ZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92
ZXJsYXlDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlD
bGllbnQuY3BwCmluZGV4IGQ5NzVmM2I0Mjg0ZjNiNjZhOGQ3NzkyZjA4YjYzZDdkM2QxNTQzZmEu
LjUyZGI0NzBmMjJkY2FlZjcxN2NkYTkxN2Q4ZjdlNWU3YzI3MzZkNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAKQEAgLTcyLDggKzcy
LDggQEAgU3RyaW5nIE1vY2tQYWdlT3ZlcmxheUNsaWVudDo6bGF5ZXJUcmVlQXNUZXh0KFBhZ2Um
IHBhZ2UsIE9wdGlvblNldDxMYXllclRyZWVBc1QKICAgICBHcmFwaGljc0xheWVyKiB2aWV3T3Zl
cmxheVJvb3QgPSBwYWdlLnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLnZpZXdPdmVybGF5Um9vdExh
eWVyKCk7CiAgICAgR3JhcGhpY3NMYXllciogZG9jdW1lbnRPdmVybGF5Um9vdCA9IHBhZ2UucGFn
ZU92ZXJsYXlDb250cm9sbGVyKCkuZG9jdW1lbnRPdmVybGF5Um9vdExheWVyKCk7CiAgICAgCi0g
ICAgcmV0dXJuICJWaWV3LXJlbGF0aXZlOlxuIiArICh2aWV3T3ZlcmxheVJvb3QgPyB2aWV3T3Zl
cmxheVJvb3QtPmxheWVyVHJlZUFzVGV4dChvcHRpb25zIHwgTGF5ZXJUcmVlQXNUZXh0T3B0aW9u
czo6SW5jbHVkZVBhZ2VPdmVybGF5TGF5ZXJzKSA6ICIobm8gdmlldy1yZWxhdGl2ZSBvdmVybGF5
IHJvb3QpIikKLSAgICAgICAgKyAiXG5cbkRvY3VtZW50LXJlbGF0aXZlOlxuIiArIChkb2N1bWVu
dE92ZXJsYXlSb290ID8gZG9jdW1lbnRPdmVybGF5Um9vdC0+bGF5ZXJUcmVlQXNUZXh0KG9wdGlv
bnMgfCBMYXllclRyZWVBc1RleHRPcHRpb25zOjpJbmNsdWRlUGFnZU92ZXJsYXlMYXllcnMpIDog
IihubyBkb2N1bWVudC1yZWxhdGl2ZSBvdmVybGF5IHJvb3QpIik7CisgICAgcmV0dXJuICJWaWV3
LXJlbGF0aXZlOlxuIiArICh2aWV3T3ZlcmxheVJvb3QgPyB2aWV3T3ZlcmxheVJvb3QtPmxheWVy
VHJlZUFzVGV4dChvcHRpb25zIHwgTGF5ZXJUcmVlQXNUZXh0T3B0aW9uczo6SW5jbHVkZVBhZ2VP
dmVybGF5TGF5ZXJzKSA6ICIobm8gdmlldy1yZWxhdGl2ZSBvdmVybGF5IHJvb3QpIl9zKQorICAg
ICAgICArICJcblxuRG9jdW1lbnQtcmVsYXRpdmU6XG4iICsgKGRvY3VtZW50T3ZlcmxheVJvb3Qg
PyBkb2N1bWVudE92ZXJsYXlSb290LT5sYXllclRyZWVBc1RleHQob3B0aW9ucyB8IExheWVyVHJl
ZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVQYWdlT3ZlcmxheUxheWVycykgOiAiKG5vIGRvY3VtZW50
LXJlbGF0aXZlIG92ZXJsYXkgcm9vdCkiX3MpOwogfQogCiB2b2lkIE1vY2tQYWdlT3ZlcmxheUNs
aWVudDo6d2lsbE1vdmVUb1BhZ2UoUGFnZU92ZXJsYXkmLCBQYWdlKikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IDhiOTM4ODg2
M2M4MWIxMjZiOGI4NDY4N2IwYmQ4NmJmYTM3MGQ5MzMuLmU4MzFiMWEwN2NjNmRhNTAyYjJmMGY2
ZTk5OThhMzEyZjc0NmM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAtNTUsMTUgKzU1LDE1IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6Ok1vY2tQYXltZW50Q29vcmRpbmF0b3IoUGFn
ZSYgcGFnZSkKICAgICA6IG1fcGFnZSB7IHBhZ2UgfQogewotICAgIG1fYXZhaWxhYmxlUGF5bWVu
dE5ldHdvcmtzLmFkZCgiYW1leCIpOwotICAgIG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmFk
ZCgiY2FydGVCYW5jYWlyZSIpOwotICAgIG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmFkZCgi
Y2hpbmFVbmlvblBheSIpOwotICAgIG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmFkZCgiZGlz
Y292ZXIiKTsKLSAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoImludGVyYWMiKTsK
LSAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoImpjYiIpOwotICAgIG1fYXZhaWxh
YmxlUGF5bWVudE5ldHdvcmtzLmFkZCgibWFzdGVyQ2FyZCIpOwotICAgIG1fYXZhaWxhYmxlUGF5
bWVudE5ldHdvcmtzLmFkZCgicHJpdmF0ZUxhYmVsIik7Ci0gICAgbV9hdmFpbGFibGVQYXltZW50
TmV0d29ya3MuYWRkKCJ2aXNhIik7CisgICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRk
KCJhbWV4Il9zKTsKKyAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoImNhcnRlQmFu
Y2FpcmUiX3MpOworICAgIG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmFkZCgiY2hpbmFVbmlv
blBheSJfcyk7CisgICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJkaXNjb3ZlciJf
cyk7CisgICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJpbnRlcmFjIl9zKTsKKyAg
ICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoImpjYiJfcyk7CisgICAgbV9hdmFpbGFi
bGVQYXltZW50TmV0d29ya3MuYWRkKCJtYXN0ZXJDYXJkIl9zKTsKKyAgICBtX2F2YWlsYWJsZVBh
eW1lbnROZXR3b3Jrcy5hZGQoInByaXZhdGVMYWJlbCJfcyk7CisgICAgbV9hdmFpbGFibGVQYXlt
ZW50TmV0d29ya3MuYWRkKCJ2aXNhIl9zKTsKIH0KIAogc3RkOjpvcHRpb25hbDxTdHJpbmc+IE1v
Y2tQYXltZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlZFBheW1lbnROZXR3b3JrKGNvbnN0IFN0cmlu
ZyYgcGF5bWVudE5ldHdvcmspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5jcHAKaW5kZXggN2ZhZmYwYzU4YTY1MDk5NjZhMDY3ZDg0NGIxYjljODVlNTQxOWU4
Ny4uMGM0MDEwMTk5ZjRiZjI2MjQ5ZTJiZGMwZTc4MTBkZjUwOGRmZTFiMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMjY3LDcgKzI2Nyw3
IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpub3RpZnlFcnJvcigpCiB7CiAgICAgbV9mYWls
ZWQgPSB0cnVlOwogICAgIGlmIChtX2Vycm9yLmlzTnVsbCgpKQotICAgICAgICBtX2Vycm9yID0g
eyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwoKSwgIkZhaWxlZCB0byBsb2FkIHNj
cmlwdCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKKyAgICAgICAgbV9lcnJvciA9
IHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsKCksICJGYWlsZWQgdG8gbG9hZCBz
Y3JpcHQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKICAgICBub3RpZnlGaW5p
c2hlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggMTBmZjdlNDJmMGIxMWE0OWE1M2U5
ZWJhZDRlYmJjZGExZGI2ZjhhNi4uNDc1NDJkZGY0MTZlOGUzNjNjYzc0MjYyMjI2NDE0MTRhNGZi
MWYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVT
Y3JpcHRVUkwsIGNvCiAgICAgaWYgKCFvcHRpb25zLnNjb3BlLmlzRW1wdHkoKSkKICAgICAgICAg
am9iRGF0YS5zY29wZVVSTCA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKG9wdGlvbnMuc2NvcGUpOwog
ICAgIGVsc2UKLSAgICAgICAgam9iRGF0YS5zY29wZVVSTCA9IFVSTChqb2JEYXRhLnNjcmlwdFVS
TCwgIi4vIik7CisgICAgICAgIGpvYkRhdGEuc2NvcGVVUkwgPSBVUkwoam9iRGF0YS5zY3JpcHRV
UkwsICIuLyJfcyk7CiAKICAgICBpZiAoIWpvYkRhdGEuc2NvcGVVUkwuaXNOdWxsKCkgJiYgIWpv
YkRhdGEuc2NvcGVVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFqb2JEYXRhLmlzRnJv
bVNlcnZpY2VXb3JrZXJQYWdlKSB7CiAgICAgICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19FUlJP
UigiYWRkUmVnaXN0cmF0aW9uOiBzY29wZVVSTCBzY2hlbWUgaXMgbm90IEhUVFAgb3IgSFRUUFMi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggZGZkZWIwYjJlYmMwZTUzYzMwNjll
ODA4ZmE5MmE0M2U1Y2U1ZmUwNy4uOTc2ZDgwYjg1MDg1YjQ2ZmU3ZWFlMDdkOTAwZDE2MjdjZDI5
MzI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBT
dHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmVuc3VyZVZhbGlkUmVjb3Jkc1RhYmxlKCkKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChzcWxpdGVSZXN1bHQgIT0gU1FMSVRFX1JPVykKLSAgICAg
ICAgICAgIHJldHVybiAiRXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBmZXRjaCBzY2hlbWEg
Zm9yIHRoZSBSZWNvcmRzIHRhYmxlLiI7CisgICAgICAgICAgICByZXR1cm4gIkVycm9yIGV4ZWN1
dGluZyBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0aGUgUmVjb3JkcyB0YWJsZS4iX3M7
CiAKICAgICAgICAgY3VycmVudFNjaGVtYSA9IHN0YXRlbWVudC0+Y29sdW1uVGV4dCgxKTsKICAg
ICB9CkBAIC0zMDYsMTUgKzMwNiwxNSBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmVu
c3VyZVZhbGlkUmVjb3Jkc1RhYmxlKCkKICAgICByZXR1cm4gbWFrZVN0cmluZygiVW5leHBlY3Rl
ZCBzY2hlbWE6ICIsIGN1cnJlbnRTY2hlbWEpOwogfQogCi1zdGF0aWMgU3RyaW5nIHVwZGF0ZVZp
YUNhY2hlVG9TdHJpbmcoU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlIHVwZGF0ZSkKK3N0YXRp
YyBBU0NJSUxpdGVyYWwgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhTZXJ2aWNlV29ya2VyVXBkYXRl
VmlhQ2FjaGUgdXBkYXRlKQogewogICAgIHN3aXRjaCAodXBkYXRlKSB7CiAgICAgY2FzZSBTZXJ2
aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU6OkltcG9ydHM6Ci0gICAgICAgIHJldHVybiAiSW1wb3J0
cyI7CisgICAgICAgIHJldHVybiAiSW1wb3J0cyJfczsKICAgICBjYXNlIFNlcnZpY2VXb3JrZXJV
cGRhdGVWaWFDYWNoZTo6QWxsOgotICAgICAgICByZXR1cm4gIkFsbCI7CisgICAgICAgIHJldHVy
biAiQWxsIl9zOwogICAgIGNhc2UgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpOb25lOgot
ICAgICAgICByZXR1cm4gIk5vbmUiOworICAgICAgICByZXR1cm4gIk5vbmUiX3M7CiAgICAgfQog
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTMzMiwxMyArMzMyLDEzIEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZT4gc3RyaW5n
VG9VcGRhdGVWaWFDYWNoZShjb25zdCBTCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAot
c3RhdGljIFN0cmluZyB3b3JrZXJUeXBlVG9TdHJpbmcoV29ya2VyVHlwZSB3b3JrZXJUeXBlKQor
c3RhdGljIEFTQ0lJTGl0ZXJhbCB3b3JrZXJUeXBlVG9TdHJpbmcoV29ya2VyVHlwZSB3b3JrZXJU
eXBlKQogewogICAgIHN3aXRjaCAod29ya2VyVHlwZSkgewogICAgIGNhc2UgV29ya2VyVHlwZTo6
Q2xhc3NpYzoKLSAgICAgICAgcmV0dXJuICJDbGFzc2ljIjsKKyAgICAgICAgcmV0dXJuICJDbGFz
c2ljIl9zOwogICAgIGNhc2UgV29ya2VyVHlwZTo6TW9kdWxlOgotICAgICAgICByZXR1cm4gIk1v
ZHVsZSI7CisgICAgICAgIHJldHVybiAiTW9kdWxlIl9zOwogICAgIH0KIAogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00NjIsOSArNDYyLDkgQEAgYm9vbCBSZWdpc3RyYXRp
b25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRl
eHREYXRhPiYKICAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZFRleHQoMywgZGF0
YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwucGF0aCgpLnRvU3RyaW5nKCkpICE9IFNRTElURV9PSwog
ICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kVGV4dCg0LCBkYXRhLnJlZ2lzdHJh
dGlvbi5rZXkudG9wT3JpZ2luKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpICE9IFNRTElURV9PSwog
ICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kRG91YmxlKDUsIGRhdGEucmVnaXN0
cmF0aW9uLmxhc3RVcGRhdGVUaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FM
SVRFX09LCi0gICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRUZXh0KDYsIHVwZGF0
ZVZpYUNhY2hlVG9TdHJpbmcoZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUpKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZFRleHQoNiwgU3Ry
aW5nVmlldyB7IHVwZGF0ZVZpYUNhY2hlVG9TdHJpbmcoZGF0YS5yZWdpc3RyYXRpb24udXBkYXRl
VmlhQ2FjaGUpIH0pICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50
LT5iaW5kVGV4dCg3LCBkYXRhLnNjcmlwdFVSTC5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAg
ICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRUZXh0KDgsIHdvcmtlclR5cGVUb1N0cmlu
ZyhkYXRhLndvcmtlclR5cGUpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IGluc2VydFN0
YXRlbWVudC0+YmluZFRleHQoOCwgU3RyaW5nVmlldyB7IHdvcmtlclR5cGVUb1N0cmluZyhkYXRh
LndvcmtlclR5cGUpIH0pICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVt
ZW50LT5iaW5kQmxvYig5LCBTcGFuIHsgY3NwRW5jb2Rlci5idWZmZXIoKSwgY3NwRW5jb2Rlci5i
dWZmZXJTaXplKCkgfSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1l
bnQtPmJpbmRCbG9iKDEwLCBTcGFuIHsgY29lcEVuY29kZXIuYnVmZmVyKCksIGNvZXBFbmNvZGVy
LmJ1ZmZlclNpemUoKSB9KSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IGluc2VydFN0YXRl
bWVudC0+YmluZFRleHQoMTEsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElURV9PSwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApp
bmRleCBiM2VlMGJlZTFjZjkwZmYxYzNiMmI3YTY4YmI5N2E1MzY2MzExMjRjLi5mNjExMDYxMTZh
NGJmNjc1MjY0NGEyNGVhZTE5ZjU1YjRhYTlmYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNDE1LDcgKzQxNSw3IEBA
IHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0
YSkKICAgICAgICAgICAgIGlmIChqb2JRdWV1ZS5zaXplKCkgPT0gMSkKICAgICAgICAgICAgICAg
ICBqb2JRdWV1ZS5ydW5OZXh0Sm9iKCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVq
ZWN0Sm9iKGpvYkRhdGEsIHsgVHlwZUVycm9yLCAiSm9iIHJlamVjdGVkIGZvciBub24gYXBwLWJv
dW5kIGRvbWFpbiIgfSk7CisgICAgICAgICAgICByZWplY3RKb2Ioam9iRGF0YSwgeyBUeXBlRXJy
b3IsICJKb2IgcmVqZWN0ZWQgZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIl9zIH0pOwogICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRX
b3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNw
cAppbmRleCBhZTgzZjMyZDViNmQ4OGU0YzE0ZDZkMjk5YmVkYzAwOTU2MTMxZTViLi5jYmFjYjRh
MjAwNWRiMjVlMTVhZjAxZDNmZTQ4MTkxNWRlNWUxZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGlj
IGlubGluZSBTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uKiBtYWluVGhyZWFkQ29ubmVjdGlv
bigpCiBFeGNlcHRpb25PcjxSZWY8U2hhcmVkV29ya2VyPj4gU2hhcmVkV29ya2VyOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBzY3JpcHRVUkxTdHJpbmcsIHN0ZDo6b3B0aW9u
YWw8c3RkOjp2YXJpYW50PFN0cmluZywgV29ya2VyT3B0aW9ucz4+JiYgbWF5YmVPcHRpb25zKQog
ewogICAgIGlmICghbWFpblRocmVhZENvbm5lY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0
ZWQiIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIlNo
YXJlZCB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIl9zIH07CiAKICAgICBhdXRvIHVybCA9IGRv
Y3VtZW50LmNvbXBsZXRlVVJMKHNjcmlwdFVSTFN0cmluZyk7CiAgICAgaWYgKCF1cmwuaXNWYWxp
ZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuY3BwCmluZGV4IDdjOWExOGFkNmE4MDk1ZjExODkxNmQ2MzBiOTFjYmJkNDdjZDY1Y2Yu
LmI4ZDg1MDI2NTBjMjVkOTUwNjZmYmEyNDM4MmU3MzMxMWY1ZTE4MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTc5
LDE2ICs3OSwxNiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
cmVnaXN0ZXJQYWludChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbAogCiAgICAgLy8gVmFsaWRhdGUg
dGhhdCBwYWludENvbnN0cnVjdG9yIGlzIGEgVm9pZEZ1bmN0aW9uCiAgICAgaWYgKCFwYWludENv
bnN0cnVjdG9yLT5pc0NhbGxhYmxlKHZtKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5
cGVFcnJvciwgInBhaW50Q29uc3RydWN0b3IgbXVzdCBiZSBjYWxsYWJsZSIgfTsKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgInBhaW50Q29uc3RydWN0b3IgbXVzdCBiZSBj
YWxsYWJsZSJfcyB9OwogCiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRo
ZSBlbXB0eSBzdHJpbmciIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyJfcyB9Owog
CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcGFpbnREZWZpbml0aW9uTG9jaygpIH07
CiAKICAgICAgICAgaWYgKHBhaW50RGVmaW5pdGlvbk1hcCgpLmNvbnRhaW5zKG5hbWUpKQotICAg
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlRo
aXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiIH07CisgICAgICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yLCAiVGhpcyBuYW1lIGhhcyBh
bHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCJfcyB9OwogCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGlu
cHV0UHJvcGVydGllczsKIApAQCAtMTE5LDE5ICsxMTksMTkgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQoSlNDOjpKU0dsb2JhbE9iamVj
dCYgZ2wKICAgICAgICAgLy8gRklYTUU6IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkRTZXR0aW5ncyBoZXJlIChzdGVwIDE0KS4KIAogICAgICAgICBpZiAoIXBhaW50Q29uc3RydWN0
b3ItPmlzQ29uc3RydWN0b3Iodm0pKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5
cGVFcnJvciwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNvbnN0cnVjdG9yIiB9Owor
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBzZWNvbmQgYXJn
dW1lbnQgbXVzdCBiZSBhIGNvbnN0cnVjdG9yIl9zIH07CiAKICAgICAgICAgSlNWYWx1ZSBwcm90
b3R5cGVWYWx1ZSA9IHBhaW50Q29uc3RydWN0b3ItPmdldCgmZ2xvYmFsT2JqZWN0LCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCiAgICAgICAgIGlmICgh
cHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBUeXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgaGF2ZSBhIHByb3RvdHlwZSB0
aGF0IGlzIGFuIG9iamVjdCIgfTsKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBl
RXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgaGF2ZSBhIHByb3RvdHlwZSB0aGF0IGlz
IGFuIG9iamVjdCJfcyB9OwogCiAgICAgICAgIEpTVmFsdWUgcGFpbnRWYWx1ZSA9IHByb3RvdHlw
ZVZhbHVlLmdldCgmZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFp
bnQiKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4
aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAKICAgICAgICAgaWYgKHBhaW50VmFsdWUuaXNVbmRl
ZmluZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUg
Y2xhc3MgbXVzdCBoYXZlIGEgcGFpbnQgbWV0aG9kIiB9OworICAgICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBjbGFzcyBtdXN0IGhhdmUgYSBwYWludCBtZXRob2Qi
X3MgfTsKIAogICAgICAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZl
cnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihnbG9iYWxPYmplY3Qs
IHBhaW50VmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRp
b24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggMTM2YzA1M2U1NGMxMDg2MzkyZjRkMDRj
ZTcyZTQ0MjdhZjFhNjA1Ny4uNzRkZjI3NTE3OGNhODgwZjg5ZjkyOTk2NTg4NzI5NmQwZGYzNWE4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OnByZXBhcmVGb3JE
ZXN0cnVjdGlvbigpCiBTdHJpbmcgV29ya2xldEdsb2JhbFNjb3BlOjp1c2VyQWdlbnQoY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2RvY3VtZW50KQotICAgICAgICByZXR1cm4g
IiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIHJldHVybiBtX2RvY3VtZW50
LT51c2VyQWdlbnQodXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEVycm9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAppbmRleCBkNmFj
ZWFmMTRjMTY5ZjlmZjhlMDU4MDEwMDM2YTI1Nzg3YTYyZTBkLi42ZGYzZjBjOTNlZjQ1NjBiMjk3
NjNkOGIxNGZkMjg1NzI4ZGJjNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
RXJyb3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcApAQCAtNjMs
MTEgKzYzLDExIEBAIHZvaWQgWE1MRXJyb3JzOjpoYW5kbGVFcnJvcihFcnJvclR5cGUgdHlwZSwg
Y29uc3QgY2hhciogbWVzc2FnZSwgVGV4dFBvc2l0aW9uIHBvCiAgICAgaWYgKHR5cGUgPT0gZmF0
YWwgfHwgKG1fZXJyb3JDb3VudCA8IG1heEVycm9ycyAmJiAoIW1fbGFzdEVycm9yUG9zaXRpb24g
fHwgKG1fbGFzdEVycm9yUG9zaXRpb24tPm1fbGluZSAhPSBwb3NpdGlvbi5tX2xpbmUgJiYgbV9s
YXN0RXJyb3JQb3NpdGlvbi0+bV9jb2x1bW4gIT0gcG9zaXRpb24ubV9jb2x1bW4pKSkpIHsKICAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2Ugd2FybmluZzoKLSAgICAgICAgICAg
IGFwcGVuZEVycm9yTWVzc2FnZSgid2FybmluZyIsIHBvc2l0aW9uLCBtZXNzYWdlKTsKKyAgICAg
ICAgICAgIGFwcGVuZEVycm9yTWVzc2FnZSgid2FybmluZyJfcywgcG9zaXRpb24sIG1lc3NhZ2Up
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZmF0YWw6CiAgICAgICAgIGNhc2Ug
bm9uRmF0YWw6Ci0gICAgICAgICAgICBhcHBlbmRFcnJvck1lc3NhZ2UoImVycm9yIiwgcG9zaXRp
b24sIG1lc3NhZ2UpOworICAgICAgICAgICAgYXBwZW5kRXJyb3JNZXNzYWdlKCJlcnJvciJfcywg
cG9zaXRpb24sIG1lc3NhZ2UpOwogICAgICAgICB9CiAKICAgICAgICAgbV9sYXN0RXJyb3JQb3Np
dGlvbiA9IHBvc2l0aW9uOwpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFhNTEVycm9yczo6aGFuZGxl
RXJyb3IoRXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIFRleHRQb3NpdGlvbiBw
bwogICAgIH0KIH0KIAotdm9pZCBYTUxFcnJvcnM6OmFwcGVuZEVycm9yTWVzc2FnZShjb25zdCBT
dHJpbmcmIHR5cGVTdHJpbmcsIFRleHRQb3NpdGlvbiBwb3NpdGlvbiwgY29uc3QgY2hhciogbWVz
c2FnZSkKK3ZvaWQgWE1MRXJyb3JzOjphcHBlbmRFcnJvck1lc3NhZ2UoQVNDSUlMaXRlcmFsIHR5
cGVTdHJpbmcsIFRleHRQb3NpdGlvbiBwb3NpdGlvbiwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsK
ICAgICAvLyA8dHlwZVN0cmluZz4gb24gbGluZSA8bGluZU51bWJlcj4gYXQgY29sdW1uIDxjb2x1
bW5OdW1iZXI+OiA8bWVzc2FnZT4KICAgICBtX2Vycm9yTWVzc2FnZXMuYXBwZW5kKHR5cGVTdHJp
bmcsICIgb24gbGluZSAiLCBwb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSwgIiBhdCBjb2x1
bW4gIiwgcG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSwgIjogIiwgbWVzc2FnZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MRXJyb3JzLmgKaW5kZXggYWZjOTAwMWE3NjE2M2I2NWM4ZDNiY2E3M2UxN2Q4OTk2
YzMzNmY0NC4uZDg1YTQ0YTMyM2U1MjBlMjY0NmY1ZWIzMzU4NmZlMzljZTViNTA4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxFcnJvcnMuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNl
cnRFcnJvck1lc3NhZ2VCbG9jaygpOwogCiBwcml2YXRlOgotICAgIHZvaWQgYXBwZW5kRXJyb3JN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgVGV4dFBvc2l0aW9uLCBjb25zdCBjaGFy
KiBtZXNzYWdlKTsKKyAgICB2b2lkIGFwcGVuZEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwgdHlw
ZVN0cmluZywgVGV4dFBvc2l0aW9uLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKIAogICAgIERvY3Vt
ZW50JiBtX2RvY3VtZW50OwogICAgIGludCBtX2Vycm9yQ291bnQgeyAwIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA4OTVkYzlkMDg1NTBhZDYwOGU1OTc5YzcwOGQ1
YTlhYTBhNTQ0YjcwLi5lNWJlZjE0YjRkNDJjMjc4ZGY1ZTRjNGRmOTQxODE5OTY0ZDE0MjQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc3Rh
dGljIHZvaWQgcmVwbGFjZUNoYXJzZXRJbk1lZGlhVHlwZUlmTmVlZGVkKFN0cmluZyYgbWVkaWFU
eXBlKQogICAgIGlmICghcGFyc2VkQ29udGVudFR5cGUgfHwgcGFyc2VkQ29udGVudFR5cGUtPmNo
YXJzZXQoKS5pc0VtcHR5KCkgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShwYXJzZWRDb250ZW50
VHlwZS0+Y2hhcnNldCgpLCAiVVRGLTgiKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFyc2Vk
Q29udGVudFR5cGUtPnNldENoYXJzZXQoIlVURi04Iik7CisgICAgcGFyc2VkQ29udGVudFR5cGUt
PnNldENoYXJzZXQoIlVURi04Il9zKTsKICAgICBtZWRpYVR5cGUgPSBwYXJzZWRDb250ZW50VHlw
ZS0+c2VyaWFsaXplKCk7CiB9CiAKQEAgLTIyMyw3ICsyMjMsNyBAQCBSZWZQdHI8QXJyYXlCdWZm
ZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKIEV4Y2VwdGlv
bk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZXRUaW1lb3V0KHVuc2lnbmVkIHRpbWVvdXQpCiB7
CiAgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpICYmICFtX2Fz
eW5jKSB7Ci0gICAgICAgIGxvZ0NvbnNvbGVFcnJvcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
ICJYTUxIdHRwUmVxdWVzdC50aW1lb3V0IGNhbm5vdCBiZSBzZXQgZm9yIHN5bmNocm9ub3VzIEhU
VFAoUykgcmVxdWVzdHMgbWFkZSBmcm9tIHRoZSB3aW5kb3cgY29udGV4dC4iKTsKKyAgICAgICAg
bG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIlhNTEh0dHBSZXF1ZXN0
LnRpbWVvdXQgY2Fubm90IGJlIHNldCBmb3Igc3luY2hyb25vdXMgSFRUUChTKSByZXF1ZXN0cyBt
YWRlIGZyb20gdGhlIHdpbmRvdyBjb250ZXh0LiJfcyk7CiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKICAgICB9CiAgICAgbV90aW1lb3V0TWlsbGlzZWNv
bmRzID0gdGltZW91dDsKQEAgLTI0OSw3ICsyNDksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxI
dHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKFJlc3BvbnNlVHlwZSB0eXBlKQogICAgIC8vIFdl
J2xsIG9ubHkgZGlzYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkgZm9yIEhUVFAoUykgcmVxdWVzdHMg
c2luY2Ugc3luYyByZXF1ZXN0cyBmb3IgbG9jYWwgcHJvdG9jb2xzCiAgICAgLy8gc3VjaCBhcyBm
aWxlOiBhbmQgZGF0YTogc3RpbGwgbWFrZSBzZW5zZSB0byBhbGxvdy4KICAgICBpZiAoIW1fYXN5
bmMgJiYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkgJiYgbV91cmwucHJv
dG9jb2xJc0luSFRUUEZhbWlseSgpKSB7Ci0gICAgICAgIGxvZ0NvbnNvbGVFcnJvcihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksICJYTUxIdHRwUmVxdWVzdC5yZXNwb25zZVR5cGUgY2Fubm90IGJl
IGNoYW5nZWQgZm9yIHN5bmNocm9ub3VzIEhUVFAoUykgcmVxdWVzdHMgbWFkZSBmcm9tIHRoZSB3
aW5kb3cgY29udGV4dC4iKTsKKyAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgIlhNTEh0dHBSZXF1ZXN0LnJlc3BvbnNlVHlwZSBjYW5ub3QgYmUgY2hhbmdl
ZCBmb3Igc3luY2hyb25vdXMgSFRUUChTKSByZXF1ZXN0cyBtYWRlIGZyb20gdGhlIHdpbmRvdyBj
b250ZXh0LiJfcyk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJy
b3IgfTsKICAgICB9CiAKQEAgLTM1NCwxMyArMzU0LDEzIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhN
TEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwg
Ym9vCiAgICAgICAgIC8vIFdlJ2xsIG9ubHkgZGlzYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkgZm9y
IEhUVFAoUykgcmVxdWVzdHMgc2luY2Ugc3luYyByZXF1ZXN0cyBmb3IgbG9jYWwgcHJvdG9jb2xz
CiAgICAgICAgIC8vIHN1Y2ggYXMgZmlsZTogYW5kIGRhdGE6IHN0aWxsIG1ha2Ugc2Vuc2UgdG8g
YWxsb3cuCiAgICAgICAgIGlmICh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmIHJlc3Bv
bnNlVHlwZSgpICE9IFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpIHsKLSAgICAgICAgICAgIGxv
Z0NvbnNvbGVFcnJvcihjb250ZXh0LCAiU3luY2hyb25vdXMgSFRUUChTKSByZXF1ZXN0cyBtYWRl
IGZyb20gdGhlIHdpbmRvdyBjb250ZXh0IGNhbm5vdCBoYXZlIFhNTEh0dHBSZXF1ZXN0LnJlc3Bv
bnNlVHlwZSBzZXQuIik7CisgICAgICAgICAgICBsb2dDb25zb2xlRXJyb3IoY29udGV4dCwgIlN5
bmNocm9ub3VzIEhUVFAoUykgcmVxdWVzdHMgbWFkZSBmcm9tIHRoZSB3aW5kb3cgY29udGV4dCBj
YW5ub3QgaGF2ZSBYTUxIdHRwUmVxdWVzdC5yZXNwb25zZVR5cGUgc2V0LiJfcyk7CiAgICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBTaW1pbGFybHksIHRpbWVvdXRzIGFyZSBkaXNhYmxlZCBmb3Igc3luY2hy
b25vdXMgcmVxdWVzdHMgYXMgd2VsbC4KICAgICAgICAgaWYgKG1fdGltZW91dE1pbGxpc2Vjb25k
cyA+IDApIHsKLSAgICAgICAgICAgIGxvZ0NvbnNvbGVFcnJvcihjb250ZXh0LCAiU3luY2hyb25v
dXMgWE1MSHR0cFJlcXVlc3RzIG11c3Qgbm90IGhhdmUgYSB0aW1lb3V0IHZhbHVlIHNldC4iKTsK
KyAgICAgICAgICAgIGxvZ0NvbnNvbGVFcnJvcihjb250ZXh0LCAiU3luY2hyb25vdXMgWE1MSHR0
cFJlcXVlc3RzIG11c3Qgbm90IGhhdmUgYSB0aW1lb3V0IHZhbHVlIHNldC4iX3MpOwogICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwogICAgICAgICB9
CiAgICAgfQpAQCAtMTAwNCwxMiArMTAwNCwxMiBAQCBSZWY8VGV4dFJlc291cmNlRGVjb2Rlcj4g
WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZURlY29kZXIoKSBjb25zdAogewogICAgIFBBTDo6VGV4dEVu
Y29kaW5nIGZpbmFsUmVzcG9uc2VDaGFyc2V0ID0gdGhpcy0+ZmluYWxSZXNwb25zZUNoYXJzZXQo
KTsKICAgICBpZiAoZmluYWxSZXNwb25zZUNoYXJzZXQuaXNWYWxpZCgpKQotICAgICAgICByZXR1
cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgZmluYWxSZXNwb25z
ZUNoYXJzZXQpOworICAgICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0
ZXh0L3BsYWluIl9zLCBmaW5hbFJlc3BvbnNlQ2hhcnNldCk7CiAKICAgICBzd2l0Y2ggKHJlc3Bv
bnNlVHlwZSgpKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nOgogICAgICAg
ICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShyZXNwb25zZU1JTUVUeXBlKCkp
KSB7Ci0gICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUoImFwcGxpY2F0aW9uL3htbCIpOworICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiX3MpOwogICAgICAgICAgICAg
Ly8gRG9uJ3Qgc3RvcCBvbiBlbmNvZGluZyBlcnJvcnMsIHVubGlrZSBpdCBpcyBkb25lIGZvciBv
dGhlciBraW5kcyBvZiBYTUwgcmVzb3VyY2VzLiBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9m
IHByZXZpb3VzIFdlYktpdCB2ZXJzaW9ucywgRmlyZWZveCBhbmQgT3BlcmEuCiAgICAgICAgICAg
ICBkZWNvZGVyLT51c2VMZW5pZW50WE1MRGVjb2RpbmcoKTsKICAgICAgICAgICAgIHJldHVybiBk
ZWNvZGVyOwpAQCAtMTAxNywxMSArMTAxNywxMSBAQCBSZWY8VGV4dFJlc291cmNlRGVjb2Rlcj4g
WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZURlY29kZXIoKSBjb25zdAogICAgICAgICBGQUxMVEhST1VH
SDsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6VGV4dDoKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6
SnNvbjoKLSAgICAgICAgcmV0dXJuIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9w
bGFpbiIsICJVVEYtOCIpOworICAgICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3Jl
YXRlKCJ0ZXh0L3BsYWluIl9zLCAiVVRGLTgiKTsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RG9j
dW1lbnQ6IHsKICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlc3Bv
bnNlTUlNRVR5cGUoKSwgInRleHQvaHRtbCIpKQotICAgICAgICAgICAgcmV0dXJuIFRleHRSZXNv
dXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9odG1sIiwgIlVURi04Iik7Ci0gICAgICAgIGF1dG8g
ZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7
CisgICAgICAgICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2h0
bWwiX3MsICJVVEYtOCIpOworICAgICAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNv
ZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCJfcyk7CiAgICAgICAgIC8vIERvbid0IHN0b3Ag
b24gZW5jb2RpbmcgZXJyb3JzLCB1bmxpa2UgaXQgaXMgZG9uZSBmb3Igb3RoZXIga2luZHMgb2Yg
WE1MIHJlc291cmNlcy4gVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiBwcmV2aW91cyBXZWJL
aXQgdmVyc2lvbnMsIEZpcmVmb3ggYW5kIE9wZXJhLgogICAgICAgICBkZWNvZGVyLT51c2VMZW5p
ZW50WE1MRGVjb2RpbmcoKTsKICAgICAgICAgcmV0dXJuIGRlY29kZXI7CkBAIC0xMDMxLDcgKzEw
MzEsNyBAQCBSZWY8VGV4dFJlc291cmNlRGVjb2Rlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZURl
Y29kZXIoKSBjb25zdAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQotICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQv
cGxhaW4iLCAiVVRGLTgiKTsKKyAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRl
KCJ0ZXh0L3BsYWluIl9zLCAiVVRGLTgiKTsKIH0KIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
UGFyc2VyLmNwcAppbmRleCBlMzE1NjVlYmU3OGQ5YmZkYWNjMGY2YTFlYTBhNTcyZTg1NjJiODlk
Li45YTBhYmFmZDk1YTE4OWViMzQ4ZDk0ODI5MzIxYTdkODI2M2JiYWMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFBhcnNlci5jcHAKQEAgLTMwOCw3ICszMDgsNyBAQCBpbmxpbmUgUGFyc2VyOjpUb2tl
biBQYXJzZXI6Om5leHRUb2tlbkludGVybmFsKCkKICAgICAgICAgaWYgKGlzQmluYXJ5T3BlcmF0
b3JDb250ZXh0KCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVRva2VuQW5kQWR2YW5jZShNVUxP
UCwgTnVtZXJpY09wOjpPUF9NdWwpOwogICAgICAgICArK21fbmV4dFBvczsKLSAgICAgICAgcmV0
dXJuIFRva2VuKE5BTUVURVNULCAiKiIpOworICAgICAgICByZXR1cm4gVG9rZW4oTkFNRVRFU1Qs
ICIqIl9zKTsKICAgICBjYXNlICckJzogeyAvLyAkIFFOYW1lCiAgICAgICAgIG1fbmV4dFBvcysr
OwogICAgICAgICBTdHJpbmcgbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xUUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcApp
bmRleCAzZDFjZDRjZDJjYmU4ZTA2ZGMwNzUxZTM1M2RlMTgwOTk4NDU2MmIxLi5iZTU4ZDZmNzQ0
MWNkMDgzYjIzMmE0Y2Q0NWQ0MGUxNGY0OGE1YmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3IuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFhT
TFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvRnJhZ21lbnQoTm9kZSYgc291cmNlTm9kZSwgRG8KIAog
ICAgIC8vIElmIHRoZSBvdXRwdXQgZG9jdW1lbnQgaXMgSFRNTCwgZGVmYXVsdCB0byBIVE1MIG1l
dGhvZC4KICAgICBpZiAob3V0cHV0RG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAg
cmVzdWx0TUlNRVR5cGUgPSAidGV4dC9odG1sIjsKKyAgICAgICAgcmVzdWx0TUlNRVR5cGUgPSAi
dGV4dC9odG1sIl9zOwogCiAgICAgaWYgKCF0cmFuc2Zvcm1Ub1N0cmluZyhzb3VyY2VOb2RlLCBy
ZXN1bHRNSU1FVHlwZSwgcmVzdWx0U3RyaW5nLCByZXN1bHRFbmNvZGluZykpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5j
cHAKaW5kZXggZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NC4uNWIyYjA4
N2Y4OTAyYzYyMDU5ODZlYmE3ZWJlYzA5OTg2OTBjMmZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgWFNMVFBy
b2Nlc3Nvcjo6cGFyc2VFcnJvckZ1bmModm9pZCogdXNlckRhdGEsIHhtbEVycm9yKiBlcnJvcikK
ICAgICB9CiAKICAgICAvLyB4bWxFcnJvci0+aW50MiBpcyB0aGUgY29sdW1uIG51bWJlciBvZiB0
aGUgZXJyb3Igb3IgMCBpZiBOL0EuCi0gICAgY29uc29sZS0+YWRkTWVzc2FnZShNZXNzYWdlU291
cmNlOjpYTUwsIGxldmVsLCBlcnJvci0+bWVzc2FnZSwgZXJyb3ItPmZpbGUsIGVycm9yLT5saW5l
LCBlcnJvci0+aW50Mik7CisgICAgY29uc29sZS0+YWRkTWVzc2FnZShNZXNzYWdlU291cmNlOjpY
TUwsIGxldmVsLCBTdHJpbmcgeyBlcnJvci0+bWVzc2FnZSB9LCBTdHJpbmcgeyBlcnJvci0+Zmls
ZSB9LCBlcnJvci0+bGluZSwgZXJyb3ItPmludDIpOwogfQogCiAvLyBGSVhNRTogVGhlcmUgc2Vl
bXMgdG8gYmUgbm8gd2F5IHRvIGNvbnRyb2wgdGhlIGN0eHQgcG9pbnRlciBmb3IgbG9hZGluZyBo
ZXJlLCB0aHVzIHdlIGhhdmUgZ2xvYmFscy4KQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgeG1s
RG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgIGNhc2UgWFNMVF9M
T0FEX0RPQ1VNRU5UOiB7CiAgICAgICAgIHhzbHRUcmFuc2Zvcm1Db250ZXh0UHRyIGNvbnRleHQg
PSAoeHNsdFRyYW5zZm9ybUNvbnRleHRQdHIpY3R4dDsKICAgICAgICAgeG1sQ2hhciogYmFzZSA9
IHhtbE5vZGVHZXRCYXNlKGNvbnRleHQtPmRvY3VtZW50LT5kb2MsIGNvbnRleHQtPm5vZGUpOwot
ICAgICAgICBVUkwgdXJsKFVSTCh7IH0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJh
c2UpKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJpKSk7CisgICAgICAgIFVSTCB1
cmwoVVJMKHsgfSwgU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYmFzZSkg
fSksIFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVyaSkgfSk7CiAgICAg
ICAgIHhtbEZyZWUoYmFzZSk7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAg
IFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CkBAIC0zMDAsMTEgKzMwMCwxMSBAQCBzdGF0aWMg
aW5saW5lIFN0cmluZyByZXN1bHRNSU1FVHlwZSh4bWxEb2NQdHIgcmVzdWx0RG9jLCB4c2x0U3R5
bGVzaGVldFB0ciBzaGVldAogICAgICAgICByZXN1bHRUeXBlID0gKGNvbnN0IHhtbENoYXIqKSJo
dG1sIjsKIAogICAgIGlmICh4bWxTdHJFcXVhbChyZXN1bHRUeXBlLCAoY29uc3QgeG1sQ2hhciop
Imh0bWwiKSkKLSAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiOworICAgICAgICByZXR1cm4gInRl
eHQvaHRtbCJfczsKICAgICBpZiAoeG1sU3RyRXF1YWwocmVzdWx0VHlwZSwgKGNvbnN0IHhtbENo
YXIqKSJ0ZXh0IikpCi0gICAgICAgIHJldHVybiAidGV4dC9wbGFpbiI7CisgICAgICAgIHJldHVy
biAidGV4dC9wbGFpbiJfczsKIAotICAgIHJldHVybiAiYXBwbGljYXRpb24veG1sIjsKKyAgICBy
ZXR1cm4gImFwcGxpY2F0aW9uL3htbCJfczsKIH0KIAogYm9vbCBYU0xUUHJvY2Vzc29yOjp0cmFu
c2Zvcm1Ub1N0cmluZyhOb2RlJiBzb3VyY2VOb2RlLCBTdHJpbmcmIG1pbWVUeXBlLCBTdHJpbmcm
IHJlc3VsdFN0cmluZywgU3RyaW5nJiByZXN1bHRFbmNvZGluZykKQEAgLTM3NCw3ICszNzQsNyBA
QCBib29sIFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvU3RyaW5nKE5vZGUmIHNvdXJjZU5vZGUs
IFN0cmluZyYgbWltZVR5cGUsIFN0cmluZwogCiAgICAgICAgIGlmICgoc3VjY2VzcyA9IHNhdmVS
ZXN1bHRUb1N0cmluZyhyZXN1bHREb2MsIHNoZWV0LCByZXN1bHRTdHJpbmcpKSkgewogICAgICAg
ICAgICAgbWltZVR5cGUgPSByZXN1bHRNSU1FVHlwZShyZXN1bHREb2MsIHNoZWV0KTsKLSAgICAg
ICAgICAgIHJlc3VsdEVuY29kaW5nID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocmVz
dWx0RG9jLT5lbmNvZGluZyk7CisgICAgICAgICAgICByZXN1bHRFbmNvZGluZyA9IFN0cmluZyB7
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHJlc3VsdERvYy0+ZW5jb2RpbmcpIH07CiAg
ICAgICAgIH0KICAgICAgICAgeG1sRnJlZURvYyhyZXN1bHREb2MpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggN2U2YmY0
YWEwMzY1MWFkNjE3OWEyYmI0OTdmMGFiMzA4ZmNlYTU2Ni4uMWFiOGEzNTI0YTZjZDBmOTNmYzY1
ZjFiZjgxYjVkNzMyMGVjMTY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFhNTERvY3VtZW50
UGFyc2VyOjpjcmVhdGVMZWFmVGV4dE5vZGUoKQogCiAgICAgQVNTRVJUKG1fYnVmZmVyZWRUZXh0
LnNpemUoKSA9PSAwKTsKICAgICBBU1NFUlQoIW1fbGVhZlRleHROb2RlKTsKLSAgICBtX2xlYWZU
ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZShtX2N1cnJlbnROb2RlLT5kb2N1bWVudCgpLCAiIik7Cisg
ICAgbV9sZWFmVGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUobV9jdXJyZW50Tm9kZS0+ZG9jdW1lbnQo
KSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQo
Km1fbGVhZlRleHROb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBh
MDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmJkZjdiZmM2N2RhZTFkNDMzYTZiY2QxOGFmNjZiYjQ4
YTU1M2UzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ1OCw3ICs0NTgsNyBAQCBzdGF0aWMgdm9pZCog
b3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNhY2hl
ZFJlc291cmNlTG9hZGVyLmRvY3VtZW50KCk7CiAgICAgLy8gU2FtZSBsb2dpYyBhcyBIVE1MQmFz
ZUVsZW1lbnQ6OmhyZWYoKS4gS2VlcCB0aGVtIGluIHN5bmMuCiAgICAgYXV0byogZW5jb2Rpbmcg
PSAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmRlY29kZXIoKSkgPyBkb2N1bWVudC0+ZGVjb2Rlcigp
LT5lbmNvZGluZ0ZvclVSTFBhcnNpbmcoKSA6IG51bGxwdHI7Ci0gICAgVVJMIHVybChkb2N1bWVu
dCA/IGRvY3VtZW50LT5mYWxsYmFja0Jhc2VVUkwoKSA6IFVSTCgpLCBzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXModXJpKSwgZW5jb2RpbmcpOworICAgIFVSTCB1cmwoZG9jdW1lbnQg
PyBkb2N1bWVudC0+ZmFsbGJhY2tCYXNlVVJMKCkgOiBVUkwoKSwgc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzKFN0cmluZyB7IHVyaSB9KSwgZW5jb2RpbmcpOwogCiAgICAgaWYgKCFz
aG91bGRBbGxvd0V4dGVybmFsTG9hZCh1cmwpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2Ny
aXB0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFza0Jsb2IuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2tCbG9iLmNwcAppbmRleCBhOGU3NDk5N2Q2YzQwNTBmYjIwZTgwYmQ0YWRiYjcyZDgxODQ2
ZjZjLi42ZGJiNTJkYTI1N2U3NDAzNzJjNjJkYmQzYzA0Nzc2YzYyN2I5NTk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAK
QEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBOb3RBbGxvd2VkVGV4dCA9
ICJOb3QgQWxsb3dlZCI7CiBzdGF0aWMgY29uc3QgY2hhciogaHR0cFJlcXVlc3RlZFJhbmdlTm90
U2F0aXNmaWFibGVUZXh0ID0gIlJlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUiOwogc3Rh
dGljIGNvbnN0IGNoYXIqIGh0dHBJbnRlcm5hbEVycm9yVGV4dCA9ICJJbnRlcm5hbCBTZXJ2ZXIg
RXJyb3IiOwogCi1zdGF0aWMgY29uc3QgY2hhciogY29uc3Qgd2ViS2l0QmxvYlJlc291cmNlRG9t
YWluID0gIldlYktpdEJsb2JSZXNvdXJjZSI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gd2ViS2l0
QmxvYlJlc291cmNlRG9tYWluID0gIldlYktpdEJsb2JSZXNvdXJjZSJfczsKIAogTmV0d29ya0Rh
dGFUYXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYihOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwg
QmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5LCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNs
aWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDb250ZW50U25pZmZpbmdQb2xp
Y3kgc2hvdWxkQ29udGVudFNuaWZmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4+JiBmaWxlUmVmZXJlbmNlcykKICAgICA6IE5ldHdvcmtEYXRhVGFz
ayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05v
dFVzZSwgZmFsc2UsIGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggM2U3ZjlkZGQ5MWRhODYxZjZiMWZhMTUwMGFiYTA1MzBlYTJlODgyNi4u
ZmQ1NDA5ZDc1ZmIyOWNkOGFmYjRhMzgyMDQ3ZTExYjM3YmI1YjZiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0yMDc5LDcgKzIwNzksNyBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBl
IHdvcmtlclR5cGUsIGNvbnN0IFVzZQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVNs
ZWVwRGlzYWJsZXIoU2xlZXBEaXNhYmxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiByZWFzb24sIGJvb2wgZGlzcGxheSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKCFyZWFzb24u
aXNOdWxsKCkpOwotICAgIGF1dG8gc2xlZXBEaXNhYmxlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
U2xlZXBEaXNhYmxlcj4ocmVhc29uLnV0ZjgoKS5kYXRhKCksIGRpc3BsYXkgPyBQQUw6OlNsZWVw
RGlzYWJsZXI6OlR5cGU6OkRpc3BsYXkgOiBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5cGU6OlN5c3Rl
bSk7CisgICAgYXV0byBzbGVlcERpc2FibGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTbGVlcERp
c2FibGVyPihyZWFzb24sIGRpc3BsYXkgPyBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5cGU6OkRpc3Bs
YXkgOiBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5cGU6OlN5c3RlbSk7CiAgICAgbV9zbGVlcERpc2Fi
bGVycy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShzbGVlcERpc2FibGVyKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA5MGZiYjZkZDgzM2VhYWExOTUy
MmE4ZGNiMDYyODExOTkwMGU1MjVjLi5jZjU3OWE0MzM3MDJiNWIwMGMzNmUwZWY1MmY4ZTU5OTRk
ZWMwNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00ODUs
NyArNDg1LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAgICAgfSk7CiAgICAgICAg
IG1lbW9yeVByZXNzdXJlSGFuZGxlci5pbnN0YWxsKCk7CiAKLSAgICAgICAgUEFMOjpyZWdpc3Rl
ck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LmxvZ01lbVN0YXRzIiwgW10geworICAg
ICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQubG9nTWVt
U3RhdHMiX3MsIFtdIHsKICAgICAgICAgICAgIFdlYkNvcmU6OmxvZ01lbW9yeVN0YXRpc3RpY3Mo
TG9nTWVtb3J5U3RhdGlzdGljc1JlYXNvbjo6RGVidWdOb3RpZmljYXRpb24pOwogICAgICAgICB9
KTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455935</attachid>
            <date>2022-03-28 11:45:07 -0700</date>
            <delta_ts>2022-03-28 23:33:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238408-20220328114506.patch</filename>
            <type>text/plain</type>
            <size>446109</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmNTkyNGFkMDVjZjc3YjkyZTI0Yjc0
MTNhYTUzMDE0MjFiZjhlMWUuLjc4YzlkZTEwNjk0YTllOGM1NDgyODk5Yjk0OWQ2NThhYjAwMzEx
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDMtMjggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYkNvcmUgZm9yIG1ha2luZyB0aGUgU3Ry
aW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgUHJlcGFyZSBXZWJDb3JlIGZvciBtYWtpbmcgdGhl
IFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQuCisgICAgICAgIE1ha2lu
ZyB0aGlzIGNvbnN0cnVjdG9yIGV4cGxpY2l0IGhlbHBzIGZpbmRpbmdzIGNhc2VzIHdoZXJlIGEg
U3RyaW5nIGlzIGNvbnN0cnVjdGVkCisgICAgICAgIGZyb20gYSBsaXRlcmFsIHdpdGhvdXQgdGhl
ICIiX3Mgc3VmZml4LgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAg
IChXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UpOgorCiAyMDIyLTAzLTI4ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFN0cmluZ1ZpZXcgZm9yIFlhcnIg
LyBSZWd1bGFyRXhwcmVzc2lvbiBwYXJzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmI4YTJjYmQ0MGNhMDQy
MDc0ODI4MDlhMTdhNGNmZTNjOTdmNjVhZC4uNzdmOWQyNjkwNDY1YWRmOTg5Y2U2MGY4NDgyZDA0
ZmE0MTFmOTYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzMiBAQAorMjAyMi0wMy0yOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgV2ViQ29yZSBm
b3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIGV4cGxpY2l0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg0MDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBQcmVwYXJlIFdlYkNv
cmUgZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNp
dC4KKyAgICAgICAgTWFraW5nIHRoaXMgY29uc3RydWN0b3IgZXhwbGljaXQgaGVscHMgZmluZGlu
Z3MgY2FzZXMgd2hlcmUgYSBTdHJpbmcgaXMgY29uc3RydWN0ZWQKKyAgICAgICAgZnJvbSBhIGxp
dGVyYWwgd2l0aG91dCB0aGUgIiJfcyBzdWZmaXguCisKKyAgICAgICAgKiBTY3JpcHRzL1NldHRp
bmdzVGVtcGxhdGVzL1NldHRpbmdzLmNwcC5lcmI6CisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmNwcDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaDoKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRpYUF0
dHJpYnV0ZU1hdGNoZXMpOgorICAgICAgICAqIGRvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWw6OnBvc3RNZXNzYWdlKToKKyAgICAgICAg
KiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6SUVPcEZyb21EcmFnT3ApOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y29tcGF0TW9kZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2hhcmFjdGVyU2V0V2l0aFVURjhGYWxsYmFj
ayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc01ldGFIdHRwRXF1
aXYpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldERvbWFpbik6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6ZXhlY0NvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnF1ZXJ5Q29tbWFuZEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnF1
ZXJ5Q29tbWFuZEluZGV0ZXJtKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpxdWVyeUNv
bW1hbmRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cXVlcnlDb21tYW5kU3Vw
cG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpxdWVyeUNvbW1hbmRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlUmVzaXplT2JzZXJ2YXRpb25zKToK
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpz
ZXRPdXRlckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YW5pbWF0ZSk6CisgICAg
ICAgICogZG9tL0ltYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAqIGRvbS9Ob2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNob3dUcmVlRm9yVGhpc0Fjcm9zc0ZyYW1l
IGNvbnN0KToKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KToKKyAg
ICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmll
d3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjp2aWV3cG9ydEVy
cm9yTWVzc2FnZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjp0b2dnbGVCb2xkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dG9n
Z2xlVW5kZXJsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0QmFzZVdyaXRpbmdE
aXJlY3Rpb24pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc1N0eWxlUHJlc2VudCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVG9n
Z2xlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6c3RhdGVTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjp0ZXh0RGVjb3JhdGlvbkNoYW5nZUZvclRvZ2dsaW5nKToKKyAgICAgICAgKiBlZGl0aW5n
L0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0TGlu
ZUJyZWFrQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRUZXh0Q29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0VGFi
KToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHls
ZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjphZGRTcGFjZXNGb3JTbWFydFJlcGxhY2UpOgorICAgICAgICAqIGVkaXRp
bmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Om9ic2VydmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBl
ZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFu
ZDo6aW5zZXJ0TGluZUJyZWFrQW5kTm90aWZ5QWNjZXNzaWJpbGl0eSk6CisgICAgICAgIChXZWJD
b3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JBbmROb3RpZnlBY2Nl
c3NpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFn
cmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudEFuZE5vdGlmeUFjY2Vzc2liaWxpdHkpOgorICAg
ICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhZ2VG
b3JTYW5pdGl6aW5nV2ViQ29udGVudCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iVVJMLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKToKKyAgICAgICAg
KiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJl
YWRlckxvYWRlcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6
Y29udmVydFRvVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpjb252
ZXJ0VG9EYXRhVVJMKToKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDYWNoZTo6QmFja0ZvcndhcmRDYWNoZSk6Cisg
ICAgICAgICogaHRtbC9FbWFpbElucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRtbC9FbnRlcktl
eUhpbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXR0cmlidXRlVmFsdWVGb3JFbnRlcktleUhp
bnQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUJhc2ljRG9jdW1lbnQp
OgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKToKKyAgICAgICAgKiBodG1sL0hUTUxG
cmFtZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRC
YXNlOjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmJlc3RGaXRTb3VyY2VGcm9t
UGljdHVyZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6ZXZh
bHVhdGVEeW5hbWljTWVkaWFRdWVyeURlcGVuZGVuY2llcyk6CisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNo
b3dQaWNrZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVTbGVlcERpc2FibGluZyk6CisgICAgICAgICogaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxl
bWVudDo6cGFyYW1ldGVyc0ZvclBsdWdpbik6CisgICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpjcm9wcGVkU291cmNlUmVjdGFuZ2xlV2l0aEZvcm1hdHRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIpOgorICAgICAgICAq
IGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50
OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogaHRtbC9NZWRpYUZyYWdtZW50
VVJJUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRnJhZ21lbnRVUklQYXJzZXI6
OnBhcnNlRnJhZ21lbnRzKToKKyAgICAgICAgKiBodG1sL1BERkRvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBERkRvY3VtZW50OjpzZW5kUERGQXJyYXlCdWZmZXIpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFOR0xFSW5zdGFuY2VkQXJyYXlzOjpBTkdMRUluc3RhbmNlZEFycmF5cyk6CisgICAgICAgIChX
ZWJDb3JlOjpBTkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6OkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVNoYWRlckV4dGVu
c2lvbnMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6V2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFUQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUFZSVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQ3NSR0IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VENzUkdCOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFk
ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVidWdTaGFkZXJzOjpXZWJHTERlYnVn
U2hhZGVycyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZXB0aFRleHR1cmU6OldlYkdMRGVwdGhUZXh0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xEcmF3QnVmZmVyczo6V2ViR0xEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3
QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphZGRFeHRlbnNpb25TdXBwb3J0ZWRGb3Jt
YXRzQW5kVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6bG9zZUNvbnRleHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnByaW50VG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVjeWNsZUNvbnRleHQpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
ZWxvYWRTY2FubmVyOjplbWl0UnVsZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNl
cklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVGb3JOdW1iZXJUeXBlKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6aW5pdGlhdG9yRm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcjo6cHJvY2Vzc0F0dHJp
YnV0ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmg6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpQcmVsb2FkUmVxdWVzdDo6UHJlbG9hZFJlcXVlc3QpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlR2VuZXJpY0JveEVsZW1lbnQ6OmFwcGx5Q1NTUHJv
cGVydGllcyk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svV2ViVlRUUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6V2Vi
VlRUUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFRyZWVCdWlsZGVyOjpjb25zdHJ1
Y3RUcmVlRnJvbVRva2VuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNj
ZXNzaWJpbGl0eU9iamVjdDo6Z2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNh
bnZhczo6aW5kZXhGb3JEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6
YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpzZXRHcmlkT3ZlcmxheUZv
ck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6Y2xlYXJHcmlkT3Zl
cmxheUZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6c2V0Rmxl
eE92ZXJsYXlGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmNs
ZWFyRmxleE92ZXJsYXlGb3JOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmpl
Y3RGb3JTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6c3R5
bGVXaXRoUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RvcnNGcm9t
U291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFuaW1hdGlvbkFnZW50OjpyZXNv
bHZlQW5pbWF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRGb250RGF0
YUZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0eWxl
U2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVzb2x2ZUNvbnRleHQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldFN1cHBvcnRlZEV2ZW50TmFtZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNob3dHcmlkT3ZlcmxheSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2hvd0ZsZXhPdmVybGF5KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0RXZlbnRCcmVha3Bv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92
ZUV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50OjpicmVha09uVVJMSWZOZWVkZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGF0YWJhc2VBZ2VudDo6ZXhlY3V0ZVNRTCk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3I6OkV4ZWN1dGFibGVXaXRoRGF0YWJhc2U6OnN0YXJ0KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckxheWVyKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlc29sdmVXZWJTb2NrZXQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlQ29va2llT2JqZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURl
YnVnZ2VyQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURP
TURlYnVnZ2VyQWdlbnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxJbnNlcnRET01Ob2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxsUmVtb3ZlRE9NTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6YnVpbGRQYXVzZURhdGFGb3JET01CcmVha3Bv
aW50KToKKyAgICAgICAgKiBsYXlvdXQvVmVyaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9uSWZOZWVkZWQp
OgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpjYW5Vc2VGb3JMaW5l
TGF5b3V0V2l0aFJlYXNvbik6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnVybFNjaGVtZSk6CisgICAgICAgICogbG9h
ZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OmFsbG93c0Nyb3NzT3JpZ2luTWV0aG9kIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJ
dGVtOjp2YWxpZGF0ZUNyb3NzT3JpZ2luSGVhZGVycyBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpt
YXliZUxvYWRFbXB0eSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmNoZWNrVVJMU2NoZW1lQXNDT1JTRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1pc3Npb246OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6cG9wdWxhdGVGcmFtZUxv
YWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OnVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZpZWxkcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToKKyAgICAg
ICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVqZWN0UHJv
bWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnJlamVjdERlY29kZVByb21p
c2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBsb2FkZXIv
SW1hZ2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpsb2dXYXJuaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1peGVk
Q29udGVudENoZWNrZXI6OmNhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuUnVuSW5zZWN1cmVDb250ZW50KToKKyAgICAg
ICAgKiBsb2FkZXIvUGluZ0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaW5nTG9hZGVy
OjpzZW5kUGluZyk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlRm9udEhhc2hTZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZW5jb2RlQ2FudmFzQWN0aXZpdHlSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmRlY29k
ZUhhc2hDb3VudGVkU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUZvbnRIYXNoU2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUNhbnZhc0FjdGl2aXR5UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFV
UkwpOgorICAgICAgICAqIGxvYWRlci9TZXJ2ZXJUaW1pbmdQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmVyVGltaW5nUGFyc2VyOjpwYXJzZVNlcnZlclRpbWluZyk6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIGxvYWRlci9UZXh0
UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29k
ZXI6OnRleHRGcm9tVVRGOCk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlv
bik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0OjplbmNvZGluZyBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6
Q2FjaGVkQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpkaWRBZGRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVl
dDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVl
dDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZCk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0ZvbnQ6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZW5jb2RpbmcgY29uc3QpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OkNhY2hlZFhTTFN0eWxlU2hlZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcgY29uc3QpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZW1vcnlDYWNoZTo6TWVtb3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6
Om9yaWdpbnNXaXRoQ2FjaGUgY29uc3QpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRNYXRoU2l6ZUlmTmVlZGVkKToKKyAgICAg
ICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1RleHRFZGdlQ1NT
IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWU6OnByaW50KToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hl
Y2tPckVuYWJsZUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmV4dGVuZCk6CisgICAgICAgICog
cGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpwcmludCk6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmFsZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvdzo6Y29uZmlybUZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvdzo6cHJvbXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2hvd01vZGFsRGlh
bG9nKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpjb25uZWN0KToKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlZ0V4cEZv
ckxhYmVscyk6CisgICAgICAgIChXZWJDb3JlOjptYXRjaExhYmVsc0FnYWluc3RTdHJpbmcpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6YWRqdXN0TWVkaWFUeXBlRm9yUHJpbnRpbmcpOgorICAgICAgICAqIHBhZ2UvSW50ZXJzZWN0
aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VSb290TWFyZ2luKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVyc2VjdGlvbk9ic2VydmVyOjpjcmVhdGUpOgorICAgICAgICAq
IHBhZ2UvTG9nZ2VkSW5TdGF0dXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9nZ2VkSW5TdGF0
dXM6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcDoKKyAgICAgICAg
KiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQg
Y29uc3QpOgorICAgICAgICAqIHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1
aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrIGNvbnN0KToKKyAgICAgICAg
KiBwYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRGlhbG9n
RmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6Ym9vbEZlYXR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6ZmxvYXRGZWF0dXJlKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0V2YWwgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRJbnZh
bGlkUGx1Z2luVHlwZXMgY29uc3QpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6c2hvdWxkUmVwb3J0U2FtcGxlIGNvbnN0KToKKyAgICAg
ICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA6Cisg
ICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphbGxCdWlsdGluU2NoZW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJi
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYTWVudUxpc3RBY3Rpb25WZXJiKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYTGlzdEl0ZW1BY3Rpb25WZXJiKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TbGVlcERp
c2FibGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJs
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NsZWVwRGlzYWJsZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFi
YXNlOjpIUlRGRGF0YWJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVk
Q2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlTGljZW5zZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUxpY2Vuc2VSZWxlYXNl
QWNrbm93bGVkZ2VtZW50Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNG
cm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJN
SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6
OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbmJhbmRHZW5lcmljQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFu
ZEdlbmVyaWNDdWU6OnRvSlNPTlN0cmluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb2RlY0Zyb21Gb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdl
OjpmaWxlbmFtZUV4dGVuc2lvbiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVWaWRl
b0luZm9Gcm9tVlA5SGVhZGVyUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVZpZGVv
SW5mb0Zyb21WUDhIZWFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Zp
ZGVvVHJhY2tQcml2YXRlV2ViTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJp
dmF0ZVdlYk06OmNvZGVjIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6ZXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1F1aWNrTG9vay5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlja0xvb2subW06Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpoYXNoU3Ry
aW5nV2l0aFNhbHQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpmaXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhcnNDb250cm9sbGVyTW9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJzQ29udHJvbGxlck1vY2s6Om1vdXNlRW50ZXJlZENv
bnRlbnRBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcnNDb250cm9sbGVyTW9jazo6
bW91c2VNb3ZlZEluQ29udGVudEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyc0Nv
bnRyb2xsZXJNb2NrOjptb3VzZUV4aXRlZENvbnRlbnRBcmVhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om1pbWVUeXBlQ2FjaGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhh
bmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9i
UmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlT25FcnJvcik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVVJM
RGVjb2Rlcjo6RGVjb2RlVGFzazo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVN0cnVjdHVyZWRGaWVs
ZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUEhlYWRlcik6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlQWNjZXNzUXVpcmtzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpjaGFyc2V0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjpmaWx0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlQ0ZOZXQ6OnVwZGF0ZUlzVXNpbmdQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjphZGRDT05ORUNUQ3JlZGVu
dGlhbHMpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cmVhZFN0
cmVhbUNhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmF1dGhvcml6ZXJGdW5jdGlvbik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJl
bmRlck5hbWUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCdXR0b24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQ29tYmluZVRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb3VudGVyOjpyZW5kZXJOYW1lIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94OjpyZW5kZXJOYW1lIGNvbnN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckRldGFpbHNNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnJlbmRlck5hbWUgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGcmFnbWVudENvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVu
dENvbnRhaW5lclNldC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxv
dy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJGcmFtZVNldC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGdWxsU2Ny
ZWVuLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6cmVuZGVyTmFtZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckdyaWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6cmVuZGVyTmFtZSBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpj
cmVhdGVQcmltYXJ5R3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OmVuc3VyZUNsaXBwaW5nU3RhY2tMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVEZXNjZW5kYW50Q2xpcHBpbmdMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZU92ZXJmbG93Q29udHJvbHNM
YXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVNYXNr
aW5nTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVD
aGlsZENsaXBwaW5nU3RyYXRlZ3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNr
aW5nOjp1cGRhdGVTY3JvbGxpbmdMYXllcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
aW5lQnJlYWsuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck1ldGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1vZGVsLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OnJlbmRlck5hbWUgY29uc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1
bW5TZXQ6OnJlbmRlck5hbWUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5u
ZXJQbGFjZWhvbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNw
YW5uZXJQbGFjZWhvbGRlcjo6cmVuZGVyTmFtZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91
dHB1dFJlbmRlck9iamVjdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJRdW90ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJ1YnkuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieUJhc2Uu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJSdWJ5VGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJQYXJ0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cmVuZGVyTmFtZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRUYWdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVB
c1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlk
ZW8uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRnJhY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE1hdGguaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNs
b3NlLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5o
OgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFNwYWNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxUb2tlbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJP
dmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNoZWNrU2hhcGVJbWFnZU9yaWdpbik6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjphZGp1c3RHcmlkUG9zaXRpb25zRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L0xlZ2FjeVJlbmRlclNWR0NvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvTGVn
YWN5UmVuZGVyU1ZHUmVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVy
U1ZHUm9vdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHU2hhcGUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHR3JhZGllbnRTdG9wLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdIaWRkZW5Db250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lt
YWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1JlY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0
aXZlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdy
YWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RTcGFuLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1NWR0NvbnRhaW5lckxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdD
b250YWluZXJMYXlvdXQ6OnZlcmlmeUxheW91dExvY2F0aW9uQ29uc2lzdGVuY3kpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0U3RyZWFtU2VwYXJhdG9yOjpUZXh0U3RyZWFtU2VwYXJhdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OndyaXRlU1ZHRmlsbFBhaW50aW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6d3JpdGVTVkdTdHJva2VQYWludGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ondy
aXRlU3RhbmRhcmRQcmVmaXgpOgorICAgICAgICAqIHN2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0
ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVhckdyYWRpZW50QXR0cmlidXRlczo6TGluZWFy
R3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1
dGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXM6OlJhZGlh
bEdyYWRpZW50QXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmlld0JveEdlbmVyaWMp
OgorICAgICAgICAqIHN2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHR2VvbWV0cnlFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkYXRhQ2hh
bmdlZCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c3R5bGVWYWxpZGl0eVRvVG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6cmVzcG9uc2VT
b3VyY2VUb1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5EdW1teUlu
c3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZWxlbWVudEJ1
ZmZlcmluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNyZWF0ZVNsZWVw
RGlzYWJsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpsb2FkQXJ0d29ya0ltYWdl
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsc01hcExpa2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzTWFwTGlrZTo6SW50ZXJuYWxzTWFwTGlrZSk6CisgICAgICAgICogdGVz
dGluZy9Nb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwb3NpdGlvblN0YXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnJlYWR5U3RhdGVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxh
eWJhY2tTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yOjp0cmFja0lkZW50aWZpZXJDaGFuZ2VkKToKKyAgICAgICAgKiB0ZXN0aW5nL01v
Y2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5oOgorICAgICAgICAqIHRlc3RpbmcvTW9ja1BhZ2VP
dmVybGF5Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tQYWdlT3ZlcmxheUNsaWVu
dDo6bGF5ZXJUcmVlQXNUZXh0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tQYXltZW50Q29vcmRp
bmF0b3IuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bm90aWZ5RXJyb3IpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbik6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZW5zdXJlVmFsaWRSZWNvcmRz
VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlVmlhQ2FjaGVUb1N0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjp3b3JrZXJUeXBlVG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVn
aXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENoYW5nZXMpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNj
aGVkdWxlSm9iKToKKyAgICAgICAgKiB3b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjpjcmVhdGUpOgorICAgICAgICAqIHdvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50
V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9X
b3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNj
b3BlOjp1c2VyQWdlbnQgY29uc3QpOgorICAgICAgICAqIHhtbC9YTUxFcnJvcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MRXJyb3JzOjpoYW5kbGVFcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxFcnJvcnM6OmFwcGVuZEVycm9yTWVzc2FnZSk6CisgICAgICAgICogeG1sL1hNTEVycm9y
cy5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXBsYWNlQ2hhcnNldEluTWVkaWFUeXBlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
WE1MSHR0cFJlcXVlc3Q6OnNldFRpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OnNldFJlc3BvbnNlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlRGVjb2Rl
ciBjb25zdCk6CisgICAgICAgICogeG1sL1hQYXRoUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhQYXRoOjpQYXJzZXI6Om5leHRUb2tlbkludGVybmFsKToKKyAgICAgICAgKiB4bWwvWFNM
VFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjp0cmFuc2Zv
cm1Ub0ZyYWdtZW50KToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6cGFyc2VFcnJvckZ1bmMpOgorICAgICAg
ICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpyZXN1bHRNSU1F
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub1N0cmlu
Zyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlTGVhZlRleHROb2RlKToKKyAgICAg
ICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjItMDMtMjggIElhbiBBbmRlcnNvbiAgPGlhbmFAYXBw
bGUuY29tPgogCiAgICAgICAgIFNvbWUgQXBwbGUgaW50ZXJuYWwgY2xpZW50cyBmYWlsIHRvIGJ1
aWxkIGR1ZSB0byByZWRlY2xhcmVkIEFwcEtpdCB0eXBlcyBpbiBXZWJLaXRMZWdhY3kKQEAgLTkz
NCw2ICsxNTYzLDEyIEBACiAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKIAorMjAyMi0w
My0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVucmV2aWV3
ZWQsIHVwZGF0ZSBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdC4KKworICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorCiAyMDIyLTAzLTI1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGNzcy10
eXBlZC1vbSBjb2xvciBJREwgc2tlbGV0b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA5YTE4ZmM2
ZGFlNTVkN2JlN2YyZjgzNjQyOTYzMWNjZjU4NGY5OWNjLi5jOTE5MjM5MTRlMTllZGRmMzk0ZjFi
NzZlOWU1MGU1ZTU4NTk3MTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAor
MjAyMi0wMy0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBy
ZXBhcmUgV2ViQ29yZSBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVj
dG9yIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzg0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAg
ICBQcmVwYXJlIFdlYkNvcmUgZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25z
dHJ1Y3RvciBleHBsaWNpdC4KKyAgICAgICAgTWFraW5nIHRoaXMgY29uc3RydWN0b3IgZXhwbGlj
aXQgaGVscHMgZmluZGluZ3MgY2FzZXMgd2hlcmUgYSBTdHJpbmcgaXMgY29uc3RydWN0ZWQKKyAg
ICAgICAgZnJvbSBhIGxpdGVyYWwgd2l0aG91dCB0aGUgIiJfcyBzdWZmaXguCisKKyAgICAgICAg
KiBwYWwvTG9nZ2luZy5jcHA6CisgICAgICAgIChQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2sp
OgorICAgICAgICAqIHBhbC9Mb2dnaW5nLmg6CisgICAgICAgICogcGFsL3N5c3RlbS9TbGVlcERp
c2FibGVyLmNwcDoKKyAgICAgICAgKFBBTDo6U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFBBTDo6U2xlZXBEaXNhYmxlcjo6U2xlZXBEaXNhYmxlcik6CisgICAgICAgICogcGFsL3N5
c3RlbS9TbGVlcERpc2FibGVyLmg6CisgICAgICAgICogcGFsL3N5c3RlbS9jb2NvYS9TbGVlcERp
c2FibGVyQ29jb2EuY3BwOgorICAgICAgICAoUEFMOjpTbGVlcERpc2FibGVyOjpjcmVhdGUpOgor
ICAgICAgICAoUEFMOjpTbGVlcERpc2FibGVyQ29jb2E6OlNsZWVwRGlzYWJsZXJDb2NvYSk6Cisg
ICAgICAgICogcGFsL3N5c3RlbS9jb2NvYS9TbGVlcERpc2FibGVyQ29jb2EuaDoKKyAgICAgICAg
KiBwYWwvc3lzdGVtL2dsaWIvU2xlZXBEaXNhYmxlckdMaWIuY3BwOgorICAgICAgICAoUEFMOjpT
bGVlcERpc2FibGVyOjpjcmVhdGUpOgorICAgICAgICAoUEFMOjpTbGVlcERpc2FibGVyR0xpYjo6
U2xlZXBEaXNhYmxlckdMaWIpOgorICAgICAgICAoUEFMOjpTbGVlcERpc2FibGVyR0xpYjo6YWNx
dWlyZUluaGliaXRvcik6CisgICAgICAgICogcGFsL3N5c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJH
TGliLmg6CisKIDIwMjItMDMtMjQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ29jb2FdIFJFR1JFU1NJT04ocjI4MTI5MSk6IFdoZW4gYWNjZXNz
aWJpbGl0eSBib2xkIGlzIGVuYWJsZWQsIGZvbnQtZmFtaWx5OnN5c3RlbS11aSBpcyBzdXBwb3Nl
ZCB0byBiZSBib2xkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiOWE1NWQ2ZDkyNjM2MWY2NmFkODgzNjBkNGQ4OTMy
MTRmYzRhMmQuLjcyZjc2ZTQzNTQ0OTE0N2NhNzdmMjYwMzlkYzJjZjBkZjYyZGJiYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjItMDMtMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYkNvcmUgZm9yIG1ha2luZyB0aGUgU3RyaW5n
KGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
R2VvZmYgR2FyZW4uCisKKyAgICAgICAgUHJlcGFyZSBXZWJDb3JlIGZvciBtYWtpbmcgdGhlIFN0
cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQuCisgICAgICAgIE1ha2luZyB0
aGlzIGNvbnN0cnVjdG9yIGV4cGxpY2l0IGhlbHBzIGZpbmRpbmdzIGNhc2VzIHdoZXJlIGEgU3Ry
aW5nIGlzIGNvbnN0cnVjdGVkCisgICAgICAgIGZyb20gYSBsaXRlcmFsIHdpdGhvdXQgdGhlICIi
X3Mgc3VmZml4LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDIyLTAzLTI4ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBTaGFyZSBtb3JlIGNvZGUgYmV0d2VlbiBS
ZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlIGFuZCBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA1OTZiYjUwM2M2NmRiMDQyODE4Y2ZkYjRhNTFlOGMy
YWVlYjljNWI4Li4xMGZlY2Q4OTYwZjlmMjUxNmIxMmNlMTA1OTA1MjJhN2IwNmY5ZmE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTM3MSw2ICszNzEsNyBAQCB0ZW1wbGF0ZTxzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVmVjdG9yPGNoYXIs
IGlubGluZQogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVmVjdG9yPGNoYXIsIGlubGluZUNhcGFjaXR5
PiYgYikgeyByZXR1cm4gYiAhPSBhOyB9CiAKIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmLCBBU0NJSUxpdGVyYWwpOwogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKIAogdGVtcGxhdGU8dW5zaWduZWQgbGVu
Z3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKQEAgLTU5OCw2ICs1OTksMTEg
QEAgaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIGEsIGNv
bnN0IGNoYXIqIGIpCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5pbXBsKCks
IGIpOwogfQogCitpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
ZyYgYSwgQVNDSUlMaXRlcmFsIGIpCit7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UoYS5pbXBsKCksIGIuY2hhcmFjdGVycygpKTsKK30KKwogdGVtcGxhdGU8dW5zaWduZWQgbGVu
Z3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSkK
IHsKICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcu
aW1wbCgpLCBsb3dlcmNhc2VMZXR0ZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvTG9nZ2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuY3BwCmlu
ZGV4IDAwYjdlZDg0NThiN2YzZWE4NTRjMWViYWFiYzZhMzQ2NDZlODBiY2EuLjI2YzNjNjhiMDE3
MjZkNGFjNzIzNGRjY2NmYjRhYzQ5MDMzOTQ0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvTG9nZ2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnaW5n
LmNwcApAQCAtMzUsMTEgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBQQUwgewogCi12b2lkIHJlZ2lz
dGVyTm90aWZ5Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBub3RpZnlJRCwgRnVuY3Rpb248dm9pZCgp
PiYmIGNhbGxiYWNrKQordm9pZCByZWdpc3Rlck5vdGlmeUNhbGxiYWNrKEFTQ0lJTGl0ZXJhbCBu
b3RpZnlJRCwgRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGludCB0b2tlbjsKLSAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2gobm90aWZ5
SUQudXRmOCgpLmRhdGEoKSwgJnRva2VuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtl
QmxvY2tQdHIoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGludCkgeworICAgIG5vdGlm
eV9yZWdpc3Rlcl9kaXNwYXRjaChub3RpZnlJRC5jaGFyYWN0ZXJzKCksICZ0b2tlbiwgZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFtjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShpbnQpIHsKICAgICAgICAgY2FsbGJhY2soKTsKICAgICB9KS5nZXQoKSk7CiAjZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuaAppbmRleCAzMGE4ZTVlMTMxZDZiMzhkNGE4ZWQ2M2Vi
NWRjOWQ1NGQzOTg4NGIzLi45MWI1ZTViNTdlMmRiZTVkMmM2MGFlOGVhNGI3M2VlYjI1YjFkNGFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3Bh
Y2UgUEFMIHsKIAotUEFMX0VYUE9SVCB2b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soY29uc3Qg
U3RyaW5nJiwgRnVuY3Rpb248dm9pZCgpPiYmKTsKK1BBTF9FWFBPUlQgdm9pZCByZWdpc3Rlck5v
dGlmeUNhbGxiYWNrKEFTQ0lJTGl0ZXJhbCwgRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogfSAvLyBu
YW1lc3BhY2UgUEFMCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVt
L1NsZWVwRGlzYWJsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vU2xlZXBE
aXNhYmxlci5jcHAKaW5kZXggNDZkYjU4ZjU2NDAyZWE4Mjc4MjY0MTFlOTNkOTMwZWY4ZmVlYjQ0
Yi4uODRiMzg4ODA2NmRkMWJlMTA3ZWE0YWY3OTAwNTc4ZDVjYmJkYjIyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5jcHAKQEAgLTI2LDE2ICsy
NiwxOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNsZWVwRGlzYWJsZXIuaCIK
IAorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCiBuYW1lc3BhY2UgUEFMIHsKIAog
I2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShHTElCKQotc3RkOjp1bmlxdWVfcHRyPFNsZWVw
RGlzYWJsZXI+IFNsZWVwRGlzYWJsZXI6OmNyZWF0ZShjb25zdCBjaGFyKiByZWFzb24sIFR5cGUg
dHlwZSkKK3N0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPiBTbGVlcERpc2FibGVyOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiByZWFzb24sIFR5cGUgdHlwZSkKIHsKICAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+KG5ldyBTbGVlcERpc2FibGVyKHJlYXNvbiwgdHlwZSkp
OwogfQogI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShHTElCKQogCi1TbGVlcERp
c2FibGVyOjpTbGVlcERpc2FibGVyKGNvbnN0IGNoYXIqLCBUeXBlIHR5cGUpCitTbGVlcERpc2Fi
bGVyOjpTbGVlcERpc2FibGVyKGNvbnN0IFN0cmluZyYsIFR5cGUgdHlwZSkKICAgICA6IG1fdHlw
ZSh0eXBlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0v
U2xlZXBEaXNhYmxlci5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vU2xlZXBEaXNh
Ymxlci5oCmluZGV4IGRjMDllOTQ5OTRhOGQ0NDU2ZTUyMzE3ZDAxZDdkY2NhYzAzMWViYmEuLjZi
OWY0ZTI3NTg4OGEyODcxMWU2ZDkxMTQ5N2M3YTc3MTQwODI1MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL1NsZWVwRGlzYWJsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3N5c3RlbS9TbGVlcERpc2FibGVyLmgKQEAgLTI1LDYgKzI1LDggQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgUEFM
IHsKIAogY2xhc3MgU2xlZXBEaXNhYmxlciB7CkBAIC0zMywxMyArMzUsMTMgQEAgcHVibGljOgog
ICAgICAgICBTeXN0ZW0sCiAgICAgICAgIERpc3BsYXksCiAgICAgfTsKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+IGNyZWF0ZShjb25zdCBjaGFyKiwgVHlwZSk7Cisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiwgVHlwZSk7CiAgICAgUEFMX0VYUE9SVCB2aXJ0dWFsIH5TbGVlcERpc2FibGVyKCk7CiAK
ICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogcHJvdGVjdGVkOgot
ICAgIFBBTF9FWFBPUlQgU2xlZXBEaXNhYmxlcihjb25zdCBjaGFyKiwgVHlwZSk7CisgICAgUEFM
X0VYUE9SVCBTbGVlcERpc2FibGVyKGNvbnN0IFN0cmluZyYsIFR5cGUpOwogICAgIFR5cGUgbV90
eXBlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vY29j
b2EvU2xlZXBEaXNhYmxlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVt
L2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5jcHAKaW5kZXggZTFjMGQyMDA5MGQzNmE2N2NlOWI1
MTBhMGJmMDEwMGI5OTE3ODQ4OC4uZDkwZjBkNmE0ZmEzMTgwNzFiZTA5ODNhN2EwMDNiNTQxODNk
ZTliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vY29jb2EvU2xl
ZXBEaXNhYmxlckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9j
b2NvYS9TbGVlcERpc2FibGVyQ29jb2EuY3BwCkBAIC0zMCwxOCArMzAsMTkgQEAKIAogI2luY2x1
ZGUgPHBhbC9zcGkvY29jb2EvSU9QTUxpYlNQSS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFBBTCB7CiAK
LXN0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPiBTbGVlcERpc2FibGVyOjpjcmVhdGUoY29u
c3QgY2hhciogcmVhc29uLCBUeXBlIHR5cGUpCitzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxl
cj4gU2xlZXBEaXNhYmxlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcmVhc29uLCBUeXBlIHR5cGUp
CiB7CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPihuZXcgU2xlZXBE
aXNhYmxlckNvY29hKHJlYXNvbiwgdHlwZSkpOwogfQogCi1TbGVlcERpc2FibGVyQ29jb2E6OlNs
ZWVwRGlzYWJsZXJDb2NvYShjb25zdCBjaGFyKiByZWFzb24sIFR5cGUgdHlwZSkKK1NsZWVwRGlz
YWJsZXJDb2NvYTo6U2xlZXBEaXNhYmxlckNvY29hKGNvbnN0IFN0cmluZyYgcmVhc29uLCBUeXBl
IHR5cGUpCiAgICAgOiBTbGVlcERpc2FibGVyKHJlYXNvbiwgdHlwZSkKIHsKLSAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHJlYXNvbkNGID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlYXNvbiwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7
CisgICAgYXV0byByZWFzb25DRiA9IHJlYXNvbi5jcmVhdGVDRlN0cmluZygpOwogCiAgICAgQ0ZT
dHJpbmdSZWYgYXNzZXJ0aW9uVHlwZTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5o
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29h
LmgKaW5kZXggYTgxYTdlNzg3YjEzMTAyZWEzMTE5YTRmNWE4OWMwNzM5M2E1OTNlYS4uMDBjMjRm
YjU0NTYxMzc1Y2E3MjgwNWFlNzFlYTlhN2M3Y2MyZjg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmgKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFBBTCB7CiAKIGNsYXNzIFNsZWVwRGlzYWJsZXJDb2Nv
YSA6IHB1YmxpYyBTbGVlcERpc2FibGVyIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTbGVlcERp
c2FibGVyQ29jb2EoY29uc3QgY2hhciosIFR5cGUpOworICAgIGV4cGxpY2l0IFNsZWVwRGlzYWJs
ZXJDb2NvYShjb25zdCBTdHJpbmcmLCBUeXBlKTsKICAgICB2aXJ0dWFsIH5TbGVlcERpc2FibGVy
Q29jb2EoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3lzdGVtL2dsaWIvU2xlZXBEaXNhYmxlckdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zeXN0ZW0vZ2xpYi9TbGVlcERpc2FibGVyR0xpYi5jcHAKaW5kZXggOTE1MWNkZDliODgzMzFk
ZGU0ZWUyZGQzMzU5NDgxNDJmNjBmMzk2MC4uZDhjMjQxMDgzNjM1ZDBmNDJjNzQ3ZTI0MjJkOTFm
MGVmNzk0YTY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vZ2xp
Yi9TbGVlcERpc2FibGVyR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0
ZW0vZ2xpYi9TbGVlcERpc2FibGVyR0xpYi5jcHAKQEAgLTMyLDEyICszMiwxMiBAQAogCiBuYW1l
c3BhY2UgUEFMIHsKIAotc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+IFNsZWVwRGlzYWJs
ZXI6OmNyZWF0ZShjb25zdCBjaGFyKiByZWFzb24sIFR5cGUgdHlwZSkKK3N0ZDo6dW5pcXVlX3B0
cjxTbGVlcERpc2FibGVyPiBTbGVlcERpc2FibGVyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiByZWFz
b24sIFR5cGUgdHlwZSkKIHsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJs
ZXI+KG5ldyBTbGVlcERpc2FibGVyR0xpYihyZWFzb24sIHR5cGUpKTsKIH0KIAotU2xlZXBEaXNh
YmxlckdMaWI6OlNsZWVwRGlzYWJsZXJHTGliKGNvbnN0IGNoYXIqIHJlYXNvbiwgVHlwZSB0eXBl
KQorU2xlZXBEaXNhYmxlckdMaWI6OlNsZWVwRGlzYWJsZXJHTGliKGNvbnN0IFN0cmluZyYgcmVh
c29uLCBUeXBlIHR5cGUpCiAgICAgOiBTbGVlcERpc2FibGVyKHJlYXNvbiwgdHlwZSkKICAgICAs
IG1fY2FuY2VsbGFibGUoYWRvcHRHUmVmKGdfY2FuY2VsbGFibGVfbmV3KCkpKQogICAgICwgbV9y
ZWFzb24ocmVhc29uKQpAQCAtODksMTAgKzg5LDEwIEBAIHZvaWQgU2xlZXBEaXNhYmxlckdMaWI6
OmFjcXVpcmVJbmhpYml0b3IoKQogICAgIGlmIChzaG91bGRVc2VQb3J0YWwoKSkgewogICAgICAg
ICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZ192YXJpYW50X2J1aWxkZXJfaW5p
dCgmYnVpbGRlciwgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7Ci0gICAgICAgIGdfdmFyaWFudF9i
dWlsZGVyX2FkZCgmYnVpbGRlciwgIntzdn0iLCAicmVhc29uIiwgZ192YXJpYW50X25ld19zdHJp
bmcobV9yZWFzb24uZGF0YSgpKSk7CisgICAgICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmYnVp
bGRlciwgIntzdn0iLCAicmVhc29uIiwgZ192YXJpYW50X25ld19zdHJpbmcobV9yZWFzb24udXRm
OCgpLmRhdGEoKSkpOwogICAgICAgICBwYXJhbWV0ZXJzID0gZ192YXJpYW50X25ldygiKHN1QGF7
c3Z9KSIsICIiIC8qIG5vIHdpbmRvdyAqLywgOCAvKiBpZGxlICovLCBnX3ZhcmlhbnRfYnVpbGRl
cl9lbmQoJmJ1aWxkZXIpKTsKICAgICB9IGVsc2UKLSAgICAgICAgcGFyYW1ldGVycyA9IGdfdmFy
aWFudF9uZXcoIihzcykiLCBnX2dldF9wcmduYW1lKCksIG1fcmVhc29uLmRhdGEoKSk7CisgICAg
ICAgIHBhcmFtZXRlcnMgPSBnX3ZhcmlhbnRfbmV3KCIoc3MpIiwgZ19nZXRfcHJnbmFtZSgpLCBt
X3JlYXNvbi51dGY4KCkuZGF0YSgpKTsKIAogICAgIGdfZGJ1c19wcm94eV9jYWxsKG1fc2NyZWVu
U2F2ZXJQcm94eS5nZXQoKSwgIkluaGliaXQiLCBwYXJhbWV0ZXJzLCBHX0RCVVNfQ0FMTF9GTEFH
U19OT05FLCAtMSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwgW10oR09iamVjdCogcHJveHksIEdBc3lu
Y1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBHVW5pcXVlT3V0
UHRyPEdFcnJvcj4gZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5
c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5
c3RlbS9nbGliL1NsZWVwRGlzYWJsZXJHTGliLmgKaW5kZXggOGRiZjk1Nzk0YzE5OTYxMDU5MmM4
N2QxZmFhNzQ5MmU4MWI1NmIxOS4uNDFiYzUwMTkxMWYyMWUyZTY1ZDU4YTcxMzM4NjJjODFlNTU0
N2NmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vZ2xpYi9TbGVl
cERpc2FibGVyR0xpYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL2dsaWIv
U2xlZXBEaXNhYmxlckdMaWIuaApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IHR5cGVkZWYgc3RydWN0IF9HREJ1c1Byb3h5IEdEQnVzUHJveHk7CiAKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFBBTCB7CiAKIGNsYXNzIFNsZWVwRGlzYWJsZXJHTGliIGZpbmFsIDogcHVi
bGljIFNsZWVwRGlzYWJsZXIgewogcHVibGljOgotICAgIFNsZWVwRGlzYWJsZXJHTGliKGNvbnN0
IGNoYXIqLCBUeXBlKTsKKyAgICBTbGVlcERpc2FibGVyR0xpYihjb25zdCBTdHJpbmcmLCBUeXBl
KTsKICAgICB2aXJ0dWFsIH5TbGVlcERpc2FibGVyR0xpYigpOwogCiBwcml2YXRlOgpAQCAtNTMs
NyArNTMsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc2NyZWVuU2F2ZXJDb29raWUgeyAw
IH07CiAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBtX2luaGliaXRQb3J0YWxSZXF1ZXN0T2JqZWN0
UGF0aDsKICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKLSAgICBDU3Ry
aW5nIG1fcmVhc29uOworICAgIFN0cmluZyBtX3JlYXNvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRl
cy9TZXR0aW5ncy5jcHAuZXJiIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBs
YXRlcy9TZXR0aW5ncy5jcHAuZXJiCmluZGV4IDdlOTFkMzVjMzliZTQ2MjBiNzM0ZGM2NzRmMmIx
YWY2MTdiZjgzNWQuLmExNTc1OWMwM2NiYjViZTllZWFiOWQ2NmM0YmRlMWYzNmZjNGI2YjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGlu
Z3MuY3BwLmVyYgorKysgYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVz
L1NldHRpbmdzLmNwcC5lcmIKQEAgLTM4LDcgKzM4LDExIEBACiAjaWYgPCU9IEBzZXR0aW5nLmNv
bmRpdGlvbiAlPgogPCUtICAgZW5kIC0lPgogPCUtICAgaWYgQHNldHRpbmcuZGVmYXVsdFZhbHVl
cy5zaXplKCkgPT0gMSAtJT4KKzwlLSAgICAgaWYgQHNldHRpbmcudHlwZSA9PSAiU3RyaW5nIiBh
bmQgQHNldHRpbmcuZGVmYXVsdFZhbHVlc1snZGVmYXVsdCddWy0xXSA9PSAiXCIiIC0lPgorI2Rl
ZmluZSBTRVRUSU5HX0RFRkFVTFRfVkFMVUVfRk9SXzwlPSBAc2V0dGluZy5uYW1lICU+IDwlPSBA
c2V0dGluZy5kZWZhdWx0VmFsdWVzWydkZWZhdWx0J10gJT5fcworPCUtICAgICBlbHNlIC0lPgog
I2RlZmluZSBTRVRUSU5HX0RFRkFVTFRfVkFMVUVfRk9SXzwlPSBAc2V0dGluZy5uYW1lICU+IDwl
PSBAc2V0dGluZy5kZWZhdWx0VmFsdWVzWydkZWZhdWx0J10gJT4KKzwlLSAgICAgZW5kIC0lPgog
PCUtICAgZWxzZSAtJT4KIDwlLSAgICAgQHNldHRpbmcuZGVmYXVsdFZhbHVlcy5lYWNoX3dpdGhf
aW5kZXggZG8gfChrZXksIHZhbHVlKSwgaW5kZXh8IC0lPgogPCUtICAgICAgIGlmIGluZGV4ID09
IDAgLSU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uRXJyb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbkVycm9yLmNwcAppbmRleCA2NDliZDcwZjY1MTA0NTM4ZGMxODhmNDQ4
Y2UxNGY2YWU0MDg0YWZhLi40ZjIxMTY1NzZkYTU5YzFkYTIxMjFiMjBjZTkwN2I3Njc5YzY2NjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25FcnJvci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CiAKLWNvbnN0IGNoYXIqIFdlYktp
dENvbnRlbnRCbG9ja2VyRG9tYWluID0gIldlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluIjsKK0FT
Q0lJTGl0ZXJhbCBXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbiA9ICJXZWJLaXRDb250ZW50Qmxv
Y2tlckRvbWFpbiJfczsKIAogY29uc3Qgc3RkOjplcnJvcl9jYXRlZ29yeSYgY29udGVudEV4dGVu
c2lvbkVycm9yQ2F0ZWdvcnkoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaAppbmRleCBhMjQ1ZDkzZTUwMjRk
MjM5ZTYzZDRjZDYyY2NiMThlNmQxNTk5NzMyLi5lOGFkMzUzOWRiOGU1YjdiMTg3OWNhOTY0ZTE2
MWQxMWFiYzViNjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaApAQCAtODQsNyArODQsNyBAQCBlbnVtIGNs
YXNzIENvbnRlbnRFeHRlbnNpb25FcnJvciB7CiAgICAgRXJyb3JXcml0aW5nU2VyaWFsaXplZE5G
QSwKIH07CiAKLWV4dGVybiBjb25zdCBjaGFyKiBXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbjsK
K2V4dGVybiBBU0NJSUxpdGVyYWwgV2ViS2l0Q29udGVudEJsb2NrZXJEb21haW47CiAgICAgCiBX
RUJDT1JFX0VYUE9SVCBjb25zdCBzdGQ6OmVycm9yX2NhdGVnb3J5JiBjb250ZW50RXh0ZW5zaW9u
RXJyb3JDYXRlZ29yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAKaW5kZXggZDk5NDg2MzAyMzE4Yzc2Zjk2ODNiYTIxYzkxYmJiMjBhMGEzNDQ3OC4uNmM4
N2U0Zjg5NDFhYmM4ZGE5ODI5ODMzYTkyNzU5NzVkZGMyYzk2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtOTUzLDcgKzk1Myw3IEBAIGJvb2wgTWVk
aWFRdWVyeUV2YWx1YXRvcjo6bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50LnJlbmRlclZpZXcoKSk7CiAg
ICAgYXV0byBtZWRpYVF1ZXJpZXMgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoYXR0cmlidXRlVmFs
dWUsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7Ci0gICAgcmV0dXJuIE1lZGlh
UXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1lbnQsICZkb2N1bWVudC5yZW5kZXJWaWV3
KCktPnN0eWxlKCkgfS5ldmFsdWF0ZShtZWRpYVF1ZXJpZXMuZ2V0KCkpOworICAgIHJldHVybiBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQsICZkb2N1bWVudC5yZW5k
ZXJWaWV3KCktPnN0eWxlKCkgfS5ldmFsdWF0ZShtZWRpYVF1ZXJpZXMuZ2V0KCkpOwogfQogCiB9
IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFu
bmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcAppbmRleCBi
ODRiNzRlOTYyYjE4ODUzNjE5OGIzYjFiZmUyYzI4MDZmNjg1ZGE1Li5jZmM5YWI4ZDNhZmRjMDY0
NzgxOWEzNzY3OWNlNjE3OGQyMmQzZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
QnJvYWRjYXN0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENo
YW5uZWwuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQnJvYWRjYXN0
Q2hhbm5lbDo6cG9zdE1lc3NhZ2UoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWMKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKQotICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJUaGlzIEJyb2FkY2FzdENoYW5uZWwgaXMg
Y2xvc2VkIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJUaGlzIEJyb2FkY2FzdENoYW5uZWwgaXMgY2xvc2VkIl9zIH07CiAKICAgICBWZWN0b3I8UmVm
UHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7CiAgICAgYXV0byBtZXNzYWdlRGF0YSA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWVzc2FnZSwgeyB9LCBwb3J0cyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDg2YWI4ODliYzBlYTE1YTU0NzM1
N2ZiNjRkZmY5ZjEwYjg2MmRjNTQuLmFjYWYwOGNiZDE1ODU4OTNkMjY4YWY5Y2NiZWFiMzQ2YzAw
YTkzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0xMjcsMTEgKzEyNywx
MSBAQCBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiAg
ICAgU3RyaW5nIGxvd2VyY2FzZVR5cGUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFj
ZXModHlwZSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICBpZiAobG93ZXJjYXNlVHlw
ZSA9PSAidGV4dCIgfHwgbG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoKCJ0ZXh0L3BsYWluOyIpKQot
ICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iOworICAgICAgICByZXR1cm4gInRleHQvcGxhaW4i
X3M7CiAgICAgaWYgKGxvd2VyY2FzZVR5cGUgPT0gInVybCIgfHwgbG93ZXJjYXNlVHlwZS5zdGFy
dHNXaXRoKCJ0ZXh0L3VyaS1saXN0OyIpKQotICAgICAgICByZXR1cm4gInRleHQvdXJpLWxpc3Qi
OworICAgICAgICByZXR1cm4gInRleHQvdXJpLWxpc3QiX3M7CiAgICAgaWYgKGxvd2VyY2FzZVR5
cGUuc3RhcnRzV2l0aCgidGV4dC9odG1sOyIpKQotICAgICAgICByZXR1cm4gInRleHQvaHRtbCI7
CisgICAgICAgIHJldHVybiAidGV4dC9odG1sIl9zOwogCiAgICAgcmV0dXJuIGxvd2VyY2FzZVR5
cGU7CiB9CkBAIC02MzEsMjUgKzYzMSwyNSBAQCBzdGF0aWMgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IGRyYWdPcEZyb21JRU9wKGNvbnN0IFN0cmluZyYgb3BlcmF0aW9uKQogICAgIHJldHVybiB7
IERyYWdPcGVyYXRpb246OlByaXZhdGUgfTsgLy8gUmVhbGx5IGEgbWFya2VyIGZvciAibm8gY29u
dmVyc2lvbiIuCiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJvbURyYWdPcChPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykKK3N0YXRpYyBBU0NJSUxpdGVyYWwgSUVP
cEZyb21EcmFnT3AoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2spCiB7CiAg
ICAgYm9vbCBpc0dlbmVyaWNNb3ZlID0gb3BlcmF0aW9uTWFzay5jb250YWluc0FueSh7IERyYWdP
cGVyYXRpb246OkdlbmVyaWMsIERyYWdPcGVyYXRpb246Ok1vdmUgfSk7CiAKICAgICBpZiAoKGlz
R2VuZXJpY01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWluc0FsbCh7IERyYWdPcGVyYXRpb246
OkNvcHksIERyYWdPcGVyYXRpb246OkxpbmsgfSkpIHx8IG9wZXJhdGlvbk1hc2suY29udGFpbnNB
bGwoeyBEcmFnT3BlcmF0aW9uOjpDb3B5LCBEcmFnT3BlcmF0aW9uOjpMaW5rLCBEcmFnT3BlcmF0
aW9uOjpHZW5lcmljLCBEcmFnT3BlcmF0aW9uOjpQcml2YXRlLCBEcmFnT3BlcmF0aW9uOjpNb3Zl
LCBEcmFnT3BlcmF0aW9uOjpEZWxldGUgfSkpCi0gICAgICAgIHJldHVybiAiYWxsIjsKKyAgICAg
ICAgcmV0dXJuICJhbGwiX3M7CiAgICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgb3BlcmF0aW9uTWFz
ay5jb250YWlucyhEcmFnT3BlcmF0aW9uOjpDb3B5KSkKLSAgICAgICAgcmV0dXJuICJjb3B5TW92
ZSI7CisgICAgICAgIHJldHVybiAiY29weU1vdmUiX3M7CiAgICAgaWYgKGlzR2VuZXJpY01vdmUg
JiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uOjpMaW5rKSkKLSAgICAgICAg
cmV0dXJuICJsaW5rTW92ZSI7CisgICAgICAgIHJldHVybiAibGlua01vdmUiX3M7CiAgICAgaWYg
KG9wZXJhdGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0aW9uOjpDb3B5LCBEcmFnT3Bl
cmF0aW9uOjpMaW5rIH0pKQotICAgICAgICByZXR1cm4gImNvcHlMaW5rIjsKKyAgICAgICAgcmV0
dXJuICJjb3B5TGluayJfczsKICAgICBpZiAoaXNHZW5lcmljTW92ZSkKLSAgICAgICAgcmV0dXJu
ICJtb3ZlIjsKKyAgICAgICAgcmV0dXJuICJtb3ZlIl9zOwogICAgIGlmIChvcGVyYXRpb25NYXNr
LmNvbnRhaW5zKERyYWdPcGVyYXRpb246OkNvcHkpKQotICAgICAgICByZXR1cm4gImNvcHkiOwor
ICAgICAgICByZXR1cm4gImNvcHkiX3M7CiAgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMo
RHJhZ09wZXJhdGlvbjo6TGluaykpCi0gICAgICAgIHJldHVybiAibGluayI7Ci0gICAgcmV0dXJu
ICJub25lIjsKKyAgICAgICAgcmV0dXJuICJsaW5rIl9zOworICAgIHJldHVybiAibm9uZSJfczsK
IH0KIAogT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IERhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0
aW9uTWFzaygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmZGNjZjc3NzhhZTc4
ZWI0YTMxNGMzNjQ3NjE1YzIzZjdmY2FhNmM1Li42ZDk5OTZmNjNiYTcyNmFlY2ZiYjMxYzY0NmUz
YjI4OWFlYjMxYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTkzMSw3ICs5MzEsNyBA
QCB2b2lkIERvY3VtZW50OjpzZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBhdGliaWxp
dHlNb2RlIG1vZGUpCiAKIFN0cmluZyBEb2N1bWVudDo6Y29tcGF0TW9kZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGluUXVpcmtzTW9kZSgpID8gIkJhY2tDb21wYXQiIDogIkNTUzFDb21wYXQiOwor
ICAgIHJldHVybiBpblF1aXJrc01vZGUoKSA/ICJCYWNrQ29tcGF0Il9zIDogIkNTUzFDb21wYXQi
X3M7CiB9CiAKIGNvbnN0IENvbG9yJiBEb2N1bWVudDo6dGhlbWVDb2xvcigpCkBAIC0xNDkzLDcg
KzE0OTMsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OmNoYXJhY3RlclNldFdpdGhVVEY4RmFsbGJhY2so
KSBjb25zdAogICAgIEF0b21TdHJpbmcgbmFtZSA9IGVuY29kaW5nKCk7CiAgICAgaWYgKCFuYW1l
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbmFtZTsKLSAgICByZXR1cm4gUEFMOjpVVEY4RW5j
b2RpbmcoKS5kb21OYW1lKCk7CisgICAgcmV0dXJuIFN0cmluZyB7IFBBTDo6VVRGOEVuY29kaW5n
KCkuZG9tTmFtZSgpIH07CiB9CiAKIFN0cmluZyBEb2N1bWVudDo6ZGVmYXVsdENoYXJzZXRGb3JM
ZWdhY3lCaW5kaW5ncygpIGNvbnN0CkBAIC0zODE5LDE5ICszODE5LDE5IEBAIHZvaWQgRG9jdW1l
bnQ6OnByb2Nlc3NNZXRhSHR0cEVxdWl2KGNvbnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudCwKIAogICAgIEh0dHBFcXVpdlBvbGljeSBwb2xpY3kgPSBodHRwRXF1aXZQb2xp
Y3koKTsKICAgICBpZiAocG9saWN5ICE9IEh0dHBFcXVpdlBvbGljeTo6RW5hYmxlZCkgewotICAg
ICAgICBTdHJpbmcgcmVhc29uOworICAgICAgICBBU0NJSUxpdGVyYWwgcmVhc29uID0gIiJfczsK
ICAgICAgICAgc3dpdGNoIChwb2xpY3kpIHsKICAgICAgICAgY2FzZSBIdHRwRXF1aXZQb2xpY3k6
OkVuYWJsZWQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEh0dHBFcXVpdlBvbGljeTo6RGlzYWJsZWRCeVNldHRpbmdz
OgotICAgICAgICAgICAgcmVhc29uID0gImJ5IHRoZSBlbWJlZGRlci4iOworICAgICAgICAgICAg
cmVhc29uID0gImJ5IHRoZSBlbWJlZGRlci4iX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBIdHRwRXF1aXZQb2xpY3k6OkRpc2FibGVkQnlDb250ZW50RGlzcG9zaXRpb25BdHRh
Y2htZW50U2FuZGJveDoKLSAgICAgICAgICAgIHJlYXNvbiA9ICJmb3IgZG9jdW1lbnRzIHdpdGgg
Q29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudC4iOworICAgICAgICAgICAgcmVhc29uID0g
ImZvciBkb2N1bWVudHMgd2l0aCBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50LiJfczsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlID0g
Imh0dHAtZXF1aXYgJyIgKyBlcXVpdiArICInIGlzIGRpc2FibGVkICIgKyByZWFzb247CisgICAg
ICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiaHR0cC1lcXVpdiAnIiwgZXF1aXYsICIn
IGlzIGRpc2FibGVkICIsIHJlYXNvbik7CiAgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTU0MDMsMTAgKzU0MDMsMTAgQEAgU3RyaW5nIERvY3VtZW50
Ojpkb21haW4oKSBjb25zdAogRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OnNldERvbWFpbihj
b25zdCBTdHJpbmcmIG5ld0RvbWFpbikKIHsKICAgICBpZiAoIWZyYW1lKCkpCi0gICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiQSBicm93c2luZyBjb250ZXh0IGlzIHJl
cXVpcmVkIHRvIHNldCBhIGRvbWFpbi4iIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
ZWN1cml0eUVycm9yLCAiQSBicm93c2luZyBjb250ZXh0IGlzIHJlcXVpcmVkIHRvIHNldCBhIGRv
bWFpbi4iX3MgfTsKIAogICAgIGlmIChpc1NhbmRib3hlZChTYW5kYm94RG9jdW1lbnREb21haW4p
KQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIkFzc2lnbm1lbnQg
aXMgZm9yYmlkZGVuIGZvciBzYW5kYm94ZWQgaWZyYW1lcy4iIH07CisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiQXNzaWdubWVudCBpcyBmb3JiaWRkZW4gZm9yIHNh
bmRib3hlZCBpZnJhbWVzLiJfcyB9OwogCiAgICAgaWYgKExlZ2FjeVNjaGVtZVJlZ2lzdHJ5Ojpp
c0RvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoc2VjdXJpdHlPcmlnaW4oKS5w
cm90b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsK
QEAgLTU0MTUsMTAgKzU0MTUsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OnNldERv
bWFpbihjb25zdCBTdHJpbmcmIG5ld0RvbWFpbikKIAogICAgIGNvbnN0IFN0cmluZyYgZWZmZWN0
aXZlRG9tYWluID0gZG9tYWluKCk7CiAgICAgaWYgKGVmZmVjdGl2ZURvbWFpbi5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiVGhlIGRvY3VtZW50
IGhhcyBhIG51bGwgZWZmZWN0aXZlRG9tYWluLiIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNlY3VyaXR5RXJyb3IsICJUaGUgZG9jdW1lbnQgaGFzIGEgbnVsbCBlZmZlY3RpdmVEb21h
aW4uIl9zIH07CiAKICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKCkuaXNNYXRjaGluZ1JlZ2lzdHJh
YmxlRG9tYWluU3VmZml4KG5ld0RvbWFpbiwgc2V0dGluZ3MoKS50cmVhdElQQWRkcmVzc0FzRG9t
YWluKCkpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIkF0dGVt
cHRlZCB0byB1c2UgYSBub24tcmVnaXN0cmFibGUgZG9tYWluLiIgfTsKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJBdHRlbXB0ZWQgdG8gdXNlIGEgbm9uLXJlZ2lz
dHJhYmxlIGRvbWFpbi4iX3MgfTsKIAogICAgIHNlY3VyaXR5T3JpZ2luKCkuc2V0RG9tYWluRnJv
bURPTShuZXdEb21haW4pOwogICAgIHJldHVybiB7IH07CkBAIC01ODc3LDcgKzU4NzcsNyBAQCBz
dGF0aWMgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIGNvbW1hbmROYW1lLCBibwogRXhjZXB0aW9uT3I8Ym9vbD4gRG9jdW1lbnQ6OmV4ZWND
b21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgdXNlckludGVyZmFjZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWlzSFRNTERvY3VtZW50KCkg
JiYgIWlzWEhUTUxEb2N1bWVudCgpKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCAiZXhlY0NvbW1hbmQgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBkb2N1
bWVudHMuIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJleGVjQ29tbWFuZCBpcyBvbmx5IHN1cHBvcnRlZCBvbiBIVE1MIGRvY3VtZW50cy4iX3MgfTsK
IAogICAgIEV2ZW50UXVldWVTY29wZSBldmVudFF1ZXVlU2NvcGU7CiAgICAgcmV0dXJuIGNvbW1h
bmQodGhpcywgY29tbWFuZE5hbWUsIHVzZXJJbnRlcmZhY2UpLmV4ZWN1dGUodmFsdWUpOwpAQCAt
NTg4NiwzNSArNTg4NiwzNSBAQCBFeGNlcHRpb25Pcjxib29sPiBEb2N1bWVudDo6ZXhlY0NvbW1h
bmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgYm9vbCB1c2VySW50ZQogRXhjZXB0aW9uT3I8
Ym9vbD4gRG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZEVuYWJsZWQoY29uc3QgU3RyaW5nJiBjb21tYW5k
TmFtZSkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWlzSFRNTERvY3VtZW50KCkgJiYgIWlzWEhUTUxE
b2N1bWVudCgpKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCAicXVlcnlDb21tYW5kRW5hYmxlZCBpcyBvbmx5IHN1cHBvcnRlZCBvbiBIVE1MIGRvY3VtZW50
cy4iIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgInF1
ZXJ5Q29tbWFuZEVuYWJsZWQgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBkb2N1bWVudHMuIl9z
IH07CiAgICAgcmV0dXJuIGNvbW1hbmQodGhpcywgY29tbWFuZE5hbWUpLmlzRW5hYmxlZCgpOwog
fQogCiBFeGNlcHRpb25Pcjxib29sPiBEb2N1bWVudDo6cXVlcnlDb21tYW5kSW5kZXRlcm0oY29u
c3QgU3RyaW5nJiBjb21tYW5kTmFtZSkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWlzSFRNTERvY3Vt
ZW50KCkgJiYgIWlzWEhUTUxEb2N1bWVudCgpKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAicXVlcnlDb21tYW5kSW5kZXRlcm0gaXMgb25seSBzdXBwb3J0
ZWQgb24gSFRNTCBkb2N1bWVudHMuIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJxdWVyeUNvbW1hbmRJbmRldGVybSBpcyBvbmx5IHN1cHBvcnRlZCBv
biBIVE1MIGRvY3VtZW50cy4iX3MgfTsKICAgICByZXR1cm4gY29tbWFuZCh0aGlzLCBjb21tYW5k
TmFtZSkuc3RhdGUoKSA9PSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKIH0KIAogRXhjZXB0aW9u
T3I8Ym9vbD4gRG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZFN0YXRlKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpc0hUTUxEb2N1bWVudCgpICYmICFpc1hIVE1M
RG9jdW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgInF1ZXJ5Q29tbWFuZFN0YXRlIGlzIG9ubHkgc3VwcG9ydGVkIG9uIEhUTUwgZG9jdW1lbnRz
LiIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAicXVl
cnlDb21tYW5kU3RhdGUgaXMgb25seSBzdXBwb3J0ZWQgb24gSFRNTCBkb2N1bWVudHMuIl9zIH07
CiAgICAgcmV0dXJuIGNvbW1hbmQodGhpcywgY29tbWFuZE5hbWUpLnN0YXRlKCkgPT0gVHJpU3Rh
dGU6OlRydWU7CiB9CiAKIEV4Y2VwdGlvbk9yPGJvb2w+IERvY3VtZW50OjpxdWVyeUNvbW1hbmRT
dXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkKIHsKICAgICBpZiAoVU5MSUtFTFko
IWlzSFRNTERvY3VtZW50KCkgJiYgIWlzWEhUTUxEb2N1bWVudCgpKSkKLSAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAicXVlcnlDb21tYW5kU3VwcG9ydGVkIGlz
IG9ubHkgc3VwcG9ydGVkIG9uIEhUTUwgZG9jdW1lbnRzLiIgfTsKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAicXVlcnlDb21tYW5kU3VwcG9ydGVkIGlzIG9u
bHkgc3VwcG9ydGVkIG9uIEhUTUwgZG9jdW1lbnRzLiJfcyB9OwogICAgIHJldHVybiBjb21tYW5k
KHRoaXMsIGNvbW1hbmROYW1lKS5pc1N1cHBvcnRlZCgpOwogfQogCiBFeGNlcHRpb25PcjxTdHJp
bmc+IERvY3VtZW50OjpxdWVyeUNvbW1hbmRWYWx1ZShjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1l
KQogewogICAgIGlmIChVTkxJS0VMWSghaXNIVE1MRG9jdW1lbnQoKSAmJiAhaXNYSFRNTERvY3Vt
ZW50KCkpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJx
dWVyeUNvbW1hbmRWYWx1ZSBpcyBvbmx5IHN1cHBvcnRlZCBvbiBIVE1MIGRvY3VtZW50cy4iIH07
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgInF1ZXJ5Q29t
bWFuZFZhbHVlIGlzIG9ubHkgc3VwcG9ydGVkIG9uIEhUTUwgZG9jdW1lbnRzLiJfcyB9OwogICAg
IHJldHVybiBjb21tYW5kKHRoaXMsIGNvbW1hbmROYW1lKS52YWx1ZSgpOwogfQogCkBAIC04MjU5
LDcgKzgyNTksNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVSZXNpemVPYnNlcnZhdGlvbnMoUGFn
ZSYgcGFnZSkKICAgICAgICAgdW5zaWduZWQgbGluZSA9IDA7CiAgICAgICAgIHVuc2lnbmVkIGNv
bHVtbiA9IDA7CiAgICAgICAgIGdldFBhcnNlckxvY2F0aW9uKHVybCwgbGluZSwgY29sdW1uKTsK
LSAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCJSZXNpemVPYnNlcnZlciBsb29wIGNvbXBsZXRlZCB3
aXRoIHVuZGVsaXZlcmVkIG5vdGlmaWNhdGlvbnMuIiwgbGluZSwgY29sdW1uLCB1cmwsIG51bGxw
dHIsIG51bGxwdHIpOworICAgICAgICByZXBvcnRFeGNlcHRpb24oIlJlc2l6ZU9ic2VydmVyIGxv
b3AgY29tcGxldGVkIHdpdGggdW5kZWxpdmVyZWQgbm90aWZpY2F0aW9ucy4iX3MsIGxpbmUsIGNv
bHVtbiwgdXJsLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgLy8gU3RhcnRpbmcgYSBuZXcg
c2NoZWR1bGUgdGhlIG5leHQgcm91bmQgb2Ygbm90aWZ5LgogICAgICAgICBzY2hlZHVsZVJlbmRl
cmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemVPYnNlcnZhdGlvbnMpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBiOTk3YmZkMGZkYjlmZWVmNDQzZjhiM2NjYTRk
MjBlNjFjMGI3YzljLi40YjAyYTI2ODY2ZmNmZWM4ODRkMzAyODgzNGI0MTEwNDhiZGMyYzNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMjg1LDggKzMyODUsOCBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBFbGVtZW50OjpzZXRPdXRlckhUTUwoY29uc3QgU3RyaW5nJiBodG1sKQogICAgIFJlZlB0
ciBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7CiAgICAgaWYgKFVOTElLRUxZKCFwYXJlbnQpKSB7
CiAgICAgICAgIGlmICghcGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yLCAiQ2Fubm90IHNldCBvdXRlckhUTUwgb24g
ZWxlbWVudCBiZWNhdXNlIGl0IGRvZXNuJ3QgaGF2ZSBhIHBhcmVudCIgfTsKLSAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yLCAiQ2Fubm90IHNldCBv
dXRlckhUTUwgb24gZWxlbWVudCBiZWNhdXNlIGl0cyBwYXJlbnQgaXMgbm90IGFuIEVsZW1lbnQi
IH07CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2Vk
RXJyb3IsICJDYW5ub3Qgc2V0IG91dGVySFRNTCBvbiBlbGVtZW50IGJlY2F1c2UgaXQgZG9lc24n
dCBoYXZlIGEgcGFyZW50Il9zIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlm
aWNhdGlvbkFsbG93ZWRFcnJvciwgIkNhbm5vdCBzZXQgb3V0ZXJIVE1MIG9uIGVsZW1lbnQgYmVj
YXVzZSBpdHMgcGFyZW50IGlzIG5vdCBhbiBFbGVtZW50Il9zIH07CiAgICAgfQogCiAgICAgUmVm
UHRyPE5vZGU+IHByZXYgPSBwcmV2aW91c1NpYmxpbmcoKTsKQEAgLTQ2OTcsNyArNDY5Nyw3IEBA
IEVsZW1lbnQqIEVsZW1lbnQ6OmZpbmRBbmNob3JFbGVtZW50Rm9yTGluayhTdHJpbmcmIG91dEFu
Y2hvck5hbWUpCiAKIEV4Y2VwdGlvbk9yPFJlZjxXZWJBbmltYXRpb24+PiBFbGVtZW50Ojphbmlt
YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6U3Ryb25n
PEpTQzo6SlNPYmplY3Q+JiYga2V5ZnJhbWVzLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxk
b3VibGUsIEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucz4+JiYgb3B0aW9ucykKIHsKLSAgICBTdHJp
bmcgaWQgPSAiIjsKKyAgICBTdHJpbmcgaWQgPSBlbXB0eVN0cmluZygpOwogICAgIHN0ZDo6b3B0
aW9uYWw8UmVmUHRyPEFuaW1hdGlvblRpbWVsaW5lPj4gdGltZWxpbmU7CiAgICAgc3RkOjp2YXJp
YW50PEZyYW1lc1BlclNlY29uZCwgQW5pbWF0aW9uRnJhbWVSYXRlUHJlc2V0PiBmcmFtZVJhdGUg
PSBBbmltYXRpb25GcmFtZVJhdGVQcmVzZXQ6OkF1dG87CiAgICAgc3RkOjpvcHRpb25hbDxzdGQ6
OnZhcmlhbnQ8ZG91YmxlLCBLZXlmcmFtZUVmZmVjdE9wdGlvbnM+PiBrZXlmcmFtZUVmZmVjdE9w
dGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwCmluZGV4IDg4Yjk2ODUzY2UxNzli
OWZmZGNhNTQ2NjMyYmQzYTY2OTRiMWY1NzcuLjA1N2YyMGY4YmM1OWQzMjNhNGQyYzFmMTViNTc1
OGVkOTc2NDYzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwCkBAIC01MzEsNyAr
NTMxLDcgQEAgdm9pZCB1cGRhdGVXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KEhUTUxFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb24KIAogICAgICAgICAgICAgRmxvYXRTaXpl
IHRhcmdldFNpemUgeyBob3Jpem9udGFsRXh0ZW50IC0gaG9yaXpvbnRhbE9mZnNldCwgbGluZUJv
dW5kcy5zaXplLmhlaWdodCgpIH07CiAgICAgICAgICAgICBpZiAodGFyZ2V0U2l6ZS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgICAgICB0ZXh0Q29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtLCAic2NhbGUoMCwgMCkiKTsKKyAgICAgICAgICAgICAg
ICB0ZXh0Q29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNm
b3JtLCAic2NhbGUoMCwgMCkiX3MpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgfQogCkBAIC01NDYsNyArNTQ2LDcgQEAgdm9pZCB1cGRhdGVXaXRoVGV4dFJlY29nbml0
aW9uUmVzdWx0KEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb24KICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHNpemVCZWZvcmVUcmFuc2Zvcm0uaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICAgICAgdGV4dENvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSwgInNjYWxlKDAsIDApIik7CisgICAgICAgICAgICAg
ICAgdGV4dENvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5z
Zm9ybSwgInNjYWxlKDAsIDApIl9zKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGIxYWY0NWY3ZWMyZjEwZDJlMGQyNGNjODBj
NTcwYTYxYzNkZDkxYzYuLmQyZTI3ZDg0OTAxZDU1OTkyOTQ1OGM0NjdkOTFmN2Y2NGE3YjgwMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKQEAgLTE5MzAsNyArMTkzMCw3IEBAIHZvaWQgTm9kZTo6c2hvd1Ry
ZWVGb3JUaGlzQWNyb3NzRnJhbWUoKSBjb25zdAogICAgIE5vZGUqIHJvb3ROb2RlID0gY29uc3Rf
Y2FzdDxOb2RlKj4odGhpcyk7CiAgICAgd2hpbGUgKHBhcmVudE9yU2hhZG93SG9zdE9yRnJhbWVP
d25lcihyb290Tm9kZSkpCiAgICAgICAgIHJvb3ROb2RlID0gcGFyZW50T3JTaGFkb3dIb3N0T3JG
cmFtZU93bmVyKHJvb3ROb2RlKTsKLSAgICBzaG93U3ViVHJlZUFjcm9zc0ZyYW1lKHJvb3ROb2Rl
LCB0aGlzLCAiIik7CisgICAgc2hvd1N1YlRyZWVBY3Jvc3NGcmFtZShyb290Tm9kZSwgdGhpcywg
ZW1wdHlTdHJpbmcoKSk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IDE4ZDg3
NzJiZWVhNGIzNjhiZWY0MzljOWVmNTk4YTAxY2M2Zjk3MzcuLjAxYTYyNDBkNGMzMjk0YjEyZjgx
MGJkNmQxZDMyZTQyOWMwOTNmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0
aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBwYXJzZUF0
dHJpYnV0ZXMoZGF0YSgpKTsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGVzKQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBTdHJpbmcgdHlwZSA9IGF0dHJpYnV0ZXMtPmdldCgidHlwZSIpOwor
ICAgICAgICBTdHJpbmcgdHlwZSA9IGF0dHJpYnV0ZXMtPmdldCgidHlwZSJfcyk7CiAKICAgICAg
ICAgbV9pc0NTUyA9IHR5cGUuaXNFbXB0eSgpIHx8IHR5cGUgPT0gInRleHQvY3NzIjsKICNpZiBF
TkFCTEUoWFNMVCkKQEAgLTEwMywxMSArMTAzLDExIEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0
aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgU3RyaW5nIGhyZWYgPSBhdHRyaWJ1dGVzLT5nZXQoImhyZWYiKTsKLSAgICAgICAgU3Ry
aW5nIGFsdGVybmF0ZSA9IGF0dHJpYnV0ZXMtPmdldCgiYWx0ZXJuYXRlIik7CisgICAgICAgIFN0
cmluZyBocmVmID0gYXR0cmlidXRlcy0+Z2V0KCJocmVmIl9zKTsKKyAgICAgICAgU3RyaW5nIGFs
dGVybmF0ZSA9IGF0dHJpYnV0ZXMtPmdldCgiYWx0ZXJuYXRlIl9zKTsKICAgICAgICAgbV9hbHRl
cm5hdGUgPSBhbHRlcm5hdGUgPT0gInllcyI7Ci0gICAgICAgIG1fdGl0bGUgPSBhdHRyaWJ1dGVz
LT5nZXQoInRpdGxlIik7Ci0gICAgICAgIG1fbWVkaWEgPSBhdHRyaWJ1dGVzLT5nZXQoIm1lZGlh
Iik7CisgICAgICAgIG1fdGl0bGUgPSBhdHRyaWJ1dGVzLT5nZXQoInRpdGxlIl9zKTsKKyAgICAg
ICAgbV9tZWRpYSA9IGF0dHJpYnV0ZXMtPmdldCgibWVkaWEiX3MpOwogCiAgICAgICAgIGlmICht
X2FsdGVybmF0ZSAmJiBtX3RpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTE1Niw3ICsxNTYsNyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNo
ZWV0KCkKICAgICAgICAgICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgU3RyaW5nIGNoYXJzZXQgPSBhdHRyaWJ1dGVzLT5nZXQoImNoYXJzZXQiKTsKKyAg
ICAgICAgICAgICAgICBTdHJpbmcgY2hhcnNldCA9IGF0dHJpYnV0ZXMtPmdldCgiY2hhcnNldCJf
cyk7CiAgICAgICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoZG9jdW1l
bnQoKS5jb21wbGV0ZVVSTChocmVmKSwgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNo
ZWRSZXNvdXJjZU9wdGlvbnMoKSwgc3RkOjpudWxsb3B0LCBjaGFyc2V0LmlzRW1wdHkoKSA/IGRv
Y3VtZW50KCkuY2hhcnNldCgpIDogV1RGTW92ZShjaGFyc2V0KSk7CiAKICAgICAgICAgICAgICAg
ICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVl
c3RDU1NTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKaW5kZXggZDQ2M2RlMDNhNDJkZTE0
OGFiNmViNzc1NDA2N2VmN2VkNTY0YmE3ZC4uODM2MDZhN2FmNTA0ZmYwNjNiYzE4MmRmODRmYTY4
MjExNjJlY2M0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCkBA
IC0zOTYsMTMgKzM5NiwxMyBAQCBzdGF0aWMgVmlld3BvcnRGaXQgcGFyc2VWaWV3cG9ydEZpdFZh
bHVlKFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlLCBjb25zdAogICAgIHJldHVybiBW
aWV3cG9ydEZpdDo6QXV0bzsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIHZpZXdwb3J0RXJyb3JN
ZXNzYWdlVGVtcGxhdGUoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlKQorc3RhdGljIEFTQ0lJ
TGl0ZXJhbCB2aWV3cG9ydEVycm9yTWVzc2FnZVRlbXBsYXRlKFZpZXdwb3J0RXJyb3JDb2RlIGVy
cm9yQ29kZSkKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXJyb3JzW10gPSB7Ci0g
ICAgICAgICJWaWV3cG9ydCBhcmd1bWVudCBrZXkgXCIlcmVwbGFjZW1lbnQxXCIgbm90IHJlY29n
bml6ZWQgYW5kIGlnbm9yZWQuIiwKLSAgICAgICAgIlZpZXdwb3J0IGFyZ3VtZW50IHZhbHVlIFwi
JXJlcGxhY2VtZW50MVwiIGZvciBrZXkgXCIlcmVwbGFjZW1lbnQyXCIgaXMgaW52YWxpZCwgYW5k
IGhhcyBiZWVuIGlnbm9yZWQuIiwKLSAgICAgICAgIlZpZXdwb3J0IGFyZ3VtZW50IHZhbHVlIFwi
JXJlcGxhY2VtZW50MVwiIGZvciBrZXkgXCIlcmVwbGFjZW1lbnQyXCIgd2FzIHRydW5jYXRlZCB0
byBpdHMgbnVtZXJpYyBwcmVmaXguIiwKLSAgICAgICAgIlZpZXdwb3J0IG1heGltdW0tc2NhbGUg
Y2Fubm90IGJlIGxhcmdlciB0aGFuIDEwLjAuIFRoZSBtYXhpbXVtLXNjYWxlIHdpbGwgYmUgc2V0
IHRvIDEwLjAuIgorICAgIHN0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGVycm9yc1tdID0g
eworICAgICAgICAiVmlld3BvcnQgYXJndW1lbnQga2V5IFwiJXJlcGxhY2VtZW50MVwiIG5vdCBy
ZWNvZ25pemVkIGFuZCBpZ25vcmVkLiJfcywKKyAgICAgICAgIlZpZXdwb3J0IGFyZ3VtZW50IHZh
bHVlIFwiJXJlcGxhY2VtZW50MVwiIGZvciBrZXkgXCIlcmVwbGFjZW1lbnQyXCIgaXMgaW52YWxp
ZCwgYW5kIGhhcyBiZWVuIGlnbm9yZWQuIl9zLAorICAgICAgICAiVmlld3BvcnQgYXJndW1lbnQg
dmFsdWUgXCIlcmVwbGFjZW1lbnQxXCIgZm9yIGtleSBcIiVyZXBsYWNlbWVudDJcIiB3YXMgdHJ1
bmNhdGVkIHRvIGl0cyBudW1lcmljIHByZWZpeC4iX3MsCisgICAgICAgICJWaWV3cG9ydCBtYXhp
bXVtLXNjYWxlIGNhbm5vdCBiZSBsYXJnZXIgdGhhbiAxMC4wLiBUaGUgbWF4aW11bS1zY2FsZSB3
aWxsIGJlIHNldCB0byAxMC4wLiJfcwogICAgIH07CiAKICAgICByZXR1cm4gZXJyb3JzW2Vycm9y
Q29kZV07CkBAIC00MzMsNyArNDMzLDcgQEAgc3RhdGljIFN0cmluZyB2aWV3cG9ydEVycm9yTWVz
c2FnZShWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUsIFN0cmluZ1ZpZXcgcmVwbGEKICAgICAg
ICAgbWVzc2FnZS5yZXBsYWNlKCIlcmVwbGFjZW1lbnQyIiwgcmVwbGFjZW1lbnQyLnRvU3RyaW5n
V2l0aG91dENvcHlpbmcoKSk7CiAKICAgICBpZiAoKGVycm9yQ29kZSA9PSBVbnJlY29nbml6ZWRW
aWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvciB8fCBlcnJvckNvZGUgPT0gVHJ1bmNhdGVkVmlld3Bv
cnRBcmd1bWVudFZhbHVlRXJyb3IpICYmIHJlcGxhY2VtZW50MS5jb250YWlucygnOycpKQotICAg
ICAgICBtZXNzYWdlLmFwcGVuZCgiIE5vdGUgdGhhdCAnOycgaXMgbm90IGEgc2VwYXJhdG9yIGlu
IHZpZXdwb3J0IHZhbHVlcy4gVGhlIGxpc3Qgc2hvdWxkIGJlIGNvbW1hLXNlcGFyYXRlZC4iKTsK
KyAgICAgICAgbWVzc2FnZS5hcHBlbmQoIiBOb3RlIHRoYXQgJzsnIGlzIG5vdCBhIHNlcGFyYXRv
ciBpbiB2aWV3cG9ydCB2YWx1ZXMuIFRoZSBsaXN0IHNob3VsZCBiZSBjb21tYS1zZXBhcmF0ZWQu
Il9zKTsKIAogICAgIHJldHVybiBtZXNzYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CmluZGV4IGNjOTVkNTIxZmQ4MzAzZDk1NWNlYmFjZGE0MTE3NzA2MzNmMDExYzQuLjAxODA4NmQz
Y2NiMGIyYjBiYjMyODIzNDdjYzhiYzNhYzY3NDdmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKQEAgLTE5MDMsMTIgKzE5MDMsMTIgQEAgdm9pZCBFZGl0b3I6OmRpZFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKCkKIAogdm9pZCBFZGl0b3I6OnRvZ2dsZUJvbGQoKQogewotICAgIGNv
bW1hbmQoIlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7CisgICAgY29tbWFuZCgiVG9nZ2xlQm9sZCJf
cykuZXhlY3V0ZSgpOwogfQogCiB2b2lkIEVkaXRvcjo6dG9nZ2xlVW5kZXJsaW5lKCkKIHsKLSAg
ICBjb21tYW5kKCJUb2dnbGVVbmRlcmxpbmUiKS5leGVjdXRlKCk7CisgICAgY29tbWFuZCgiVG9n
Z2xlVW5kZXJsaW5lIl9zKS5leGVjdXRlKCk7CiB9CiAKIHZvaWQgRWRpdG9yOjpzZXRCYXNlV3Jp
dGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKQEAgLTE5MjUsNyArMTky
NSw3IEBAIHZvaWQgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0
aW9uIGRpcmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvJiBmb2N1
c2VkRm9ybUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKmZv
Y3VzZWRFbGVtZW50KTsKLSAgICAgICAgYXV0byBkaXJlY3Rpb25WYWx1ZSA9IGRpcmVjdGlvbiA9
PSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodCA/ICJsdHIiIDogInJ0bCI7CisgICAgICAg
IGF1dG8gZGlyZWN0aW9uVmFsdWUgPSBkaXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVjdGlvbjo6TGVm
dFRvUmlnaHQgPyAibHRyIl9zIDogInJ0bCJfczsKICAgICAgICAgYXV0byB3cml0aW5nRGlyZWN0
aW9uSW5wdXRUeXBlTmFtZSA9IGlucHV0VHlwZU5hbWVGb3JFZGl0aW5nQWN0aW9uKEVkaXRBY3Rp
b246OlNldEJsb2NrV3JpdGluZ0RpcmVjdGlvbik7CiAgICAgICAgIGlmICghZGlzcGF0Y2hCZWZv
cmVJbnB1dEV2ZW50KGZvY3VzZWRGb3JtRWxlbWVudCwgd3JpdGluZ0RpcmVjdGlvbklucHV0VHlw
ZU5hbWUsIGRpcmVjdGlvblZhbHVlKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5MzcsNyAr
MTkzNyw3IEBAIHZvaWQgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbikKICAgICB9CiAKICAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxl
UHJvcGVydGllczo6Y3JlYXRlKCk7Ci0gICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
RGlyZWN0aW9uLCBkaXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVjdGlvbjo6TGVmdFRvUmlnaHQgPyAi
bHRyIiA6IGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9uOjpSaWdodFRvTGVmdCA/ICJydGwi
IDogImluaGVyaXQiLCBmYWxzZSk7CisgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
RGlyZWN0aW9uLCBkaXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVjdGlvbjo6TGVmdFRvUmlnaHQgPyAi
bHRyIl9zIDogZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0ID8gInJ0
bCJfcyA6ICJpbmhlcml0Il9zLCBmYWxzZSk7CiAgICAgYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2Vs
ZWN0aW9uKHN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRCbG9ja1dyaXRpbmdEaXJlY3Rpb24p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCA2MWEx
ZWE2Yjk3NTdjN2JiNzU1Zjk0MmRlYWM4ODAxMTVlN2Q0ZGFjLi5iMDNmOTNkOTBjMzcyYTEwODY0
ZGJkNTMyZGIwOWJkMmQzZTRjZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgYm9vbCBhcHBseUNvbW1hbmRUb0Zy
YW1lKEZyYW1lJiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBYwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgaXNTdHlsZVByZXNlbnQoRWRpdG9yJiBl
ZGl0b3IsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgY2hhciogb25WYWx1ZSkKK3N0
YXRpYyBib29sIGlzU3R5bGVQcmVzZW50KEVkaXRvciYgZWRpdG9yLCBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQsIEFTQ0lJTGl0ZXJhbCBvblZhbHVlKQogewogICAgIC8vIFN0eWxlIGlzIGNvbnNp
ZGVyZWQgcHJlc2VudCB3aGVuCiAgICAgLy8gTWFjOiBwcmVzZW50IGF0IHRoZSBiZWdpbm5pbmcg
b2Ygc2VsZWN0aW9uCkBAIC0xMzYsNyArMTM2LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5
U3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGkK
ICAgICByZXR1cm4gYXBwbHlDb21tYW5kVG9GcmFtZShmcmFtZSwgc291cmNlLCBhY3Rpb24sIEVk
aXRpbmdTdHlsZTo6Y3JlYXRlKHByb3BlcnR5SUQsIHByb3BlcnR5VmFsdWUpKTsKIH0KIAotc3Rh
dGljIGJvb2wgZXhlY3V0ZVRvZ2dsZVN0eWxlKEZyYW1lJiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNv
dXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQs
IGNvbnN0IGNoYXIqIG9mZlZhbHVlLCBjb25zdCBjaGFyKiBvblZhbHVlKQorc3RhdGljIGJvb2wg
ZXhlY3V0ZVRvZ2dsZVN0eWxlKEZyYW1lJiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3Vy
Y2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEFTQ0lJTGl0
ZXJhbCBvZmZWYWx1ZSwgQVNDSUlMaXRlcmFsIG9uVmFsdWUpCiB7CiAgICAgYm9vbCBzdHlsZUlz
UHJlc2VudCA9IGlzU3R5bGVQcmVzZW50KGZyYW1lLmVkaXRvcigpLCBwcm9wZXJ0eUlELCBvblZh
bHVlKTsKICAgICByZXR1cm4gYXBwbHlDb21tYW5kVG9GcmFtZShmcmFtZSwgc291cmNlLCBhY3Rp
b24sIEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHByb3BlcnR5SUQsIHN0eWxlSXNQcmVzZW50ID8gb2Zm
VmFsdWUgOiBvblZhbHVlKSk7CkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIGJvb2wgZXhwYW5k
U2VsZWN0aW9uVG9HcmFudWxhcml0eShGcmFtZSYgZnJhbWUsIFRleHRHcmFudWxhcml0eSBncmFu
dWxhcmkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIFRyaVN0YXRlIHN0YXRlU3R5bGUo
RnJhbWUmIGZyYW1lLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqIGRlc2ly
ZWRWYWx1ZSkKK3N0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlKEZyYW1lJiBmcmFtZSwgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlELCBBU0NJSUxpdGVyYWwgZGVzaXJlZFZhbHVlKQogewogICAgIGlm
IChmcmFtZS5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFRvZ2dsZVN0eWxlQmFzZWRPblN0YXJ0
T2ZTZWxlY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLnNlbGVjdGlvblN0
YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwgZGVzaXJlZFZhbHVlKSA/IFRyaVN0YXRlOjpUcnVlIDog
VHJpU3RhdGU6OkZhbHNlOwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0
ZVNldE1hcmsoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIFRleHREZWNvcmF0aW9uQ2hhbmdl
IHRleHREZWNvcmF0aW9uQ2hhbmdlRm9yVG9nZ2xpbmcoRWRpdG9yJiBlZGl0b3IsIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwgY29uc3QgY2hhciogb25WYWx1ZSkKK3N0YXRpYyBUZXh0RGVjb3Jh
dGlvbkNoYW5nZSB0ZXh0RGVjb3JhdGlvbkNoYW5nZUZvclRvZ2dsaW5nKEVkaXRvciYgZWRpdG9y
LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEFTQ0lJTGl0ZXJhbCBvblZhbHVlKQogewogICAg
IHJldHVybiBpc1N0eWxlUHJlc2VudChlZGl0b3IsIHByb3BlcnR5SUQsIG9uVmFsdWUpID8gVGV4
dERlY29yYXRpb25DaGFuZ2U6OlJlbW92ZSA6IFRleHREZWNvcmF0aW9uQ2hhbmdlOjpBZGQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNw
cAppbmRleCA1OTY3ZDQ0Y2Y5ZjA3NGUwNTA4MGM2ZGVlZjdiMTNkNzJjNWFiYmU2Li4zZTMzNzNh
YzNmNmZkMzFhMGFjMDRkNDYxZGE4YzY3MTM5YTAwMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAg
dm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KCkKICAgICBpZiAoc2hvdWxkVXNl
QnJlYWtFbGVtZW50KHBvc2l0aW9uKSkKICAgICAgICAgbm9kZVRvSW5zZXJ0ID0gSFRNTEJSRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAgIGVsc2UKLSAgICAgICAgbm9kZVRvSW5zZXJ0
ID0gZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9kZSgiXG4iKTsKKyAgICAgICAgbm9kZVRvSW5zZXJ0
ID0gZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9kZSgiXG4iX3MpOwogICAgIAogICAgIC8vIEZJWE1F
OiBOZWVkIHRvIG1lcmdlIHRleHQgbm9kZXMgd2hlbiBpbnNlcnRpbmcganVzdCBhZnRlciBvciBi
ZWZvcmUgdGV4dC4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0VGV4dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29t
bWFuZC5jcHAKaW5kZXggNjFhNzdmNTEwZmYyMmY3ZWFjOGVjZWU4ZmIzYTQzMjM3MDkzYmU3OS4u
NzFmY2EyMzVlYWVlYjVkZTNmYzRhZGNkMzE2OTEzMTkxYjhmZWM1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKQEAgLTI0OCw3ICsyNDgsNyBAQCBQ
b3NpdGlvbiBJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0VGFiKGNvbnN0IFBvc2l0aW9uJiBwb3Mp
CiAgICAgLy8ga2VlcCB0YWJzIGNvYWxlc2NlZCBpbiB0YWIgc3BhbgogICAgIGlmIChpc1RhYlNw
YW5UZXh0Tm9kZShub2RlKSkgewogICAgICAgICBSZWY8VGV4dD4gdGV4dE5vZGUgPSBkb3duY2Fz
dDxUZXh0Pigqbm9kZSk7Ci0gICAgICAgIGluc2VydFRleHRJbnRvTm9kZSh0ZXh0Tm9kZSwgb2Zm
c2V0LCAiXHQiKTsKKyAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRleHROb2RlLCBvZmZzZXQs
ICJcdCJfcyk7CiAgICAgICAgIHJldHVybiBQb3NpdGlvbih0ZXh0Tm9kZS5wdHIoKSwgb2Zmc2V0
ICsgMSk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBmYzM2YjYzNGZjMGYyOTg3YTgyNzg3YTc2OWNi
YjM3ZjUwZDEzMDY2Li4zMGJhM2YzODJkMzgyYTczNTE2MmExNzM2NDA1NTI5YjY5OTVjOWEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcApAQCAtNzE2LDkgKzcxNiw5IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJl
bW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0CiAKICAgICAg
ICAgICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBzbyB3ZSBnZXQgdGhlIHNh
bWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCiAgICAgICAgICAgICBpZiAoaXNCbG9jayhl
bGVtZW50KSkKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0eWxlKCkuc2V0UHJvcGVy
dHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxpbmUiLCBmYWxzZSk7CisgICAgICAg
ICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJv
cGVydHlEaXNwbGF5LCAiaW5saW5lIl9zLCBmYWxzZSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVu
dC0+cmVuZGVyZXIoKSAmJiBlbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLmlzRmxvYXRpbmco
KSkKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0eWxlKCkuc2V0UHJvcGVydHlJbnRl
cm5hbChDU1NQcm9wZXJ0eUZsb2F0LCAibm9uZSIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBl
bGVtZW50LT5jc3NvbVN0eWxlKCkuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUZsb2F0
LCAibm9uZSJfcywgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTU5NCwxMSArMTU5
NCwxMSBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjphZGRTcGFjZXNGb3JTbWFydFJl
cGxhY2UoKQogICAgIGlmIChuZWVkc1RyYWlsaW5nU3BhY2UgJiYgZW5kTm9kZSkgewogICAgICAg
ICBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSA9ICFlbmROb2RlLT5yZW5kZXJlcigpIHx8IGVuZE5v
ZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCk7CiAgICAgICAgIGlm
IChpczxUZXh0PigqZW5kTm9kZSkpIHsKLSAgICAgICAgICAgIGluc2VydFRleHRJbnRvTm9kZShk
b3duY2FzdDxUZXh0PigqZW5kTm9kZSksIGVuZE9mZnNldCwgY29sbGFwc2VXaGl0ZVNwYWNlID8g
bm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIDogIiAiKTsKKyAgICAgICAgICAgIGluc2VydFRleHRJ
bnRvTm9kZShkb3duY2FzdDxUZXh0PigqZW5kTm9kZSksIGVuZE9mZnNldCwgY29sbGFwc2VXaGl0
ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIDogIiAiX3MpOwogICAgICAgICAgICAg
aWYgKG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQuY29udGFpbmVyTm9kZSgpID09IGVuZE5vZGUpCiAg
ICAgICAgICAgICAgICAgbV9lbmRPZkluc2VydGVkQ29udGVudC5tb3ZlVG9PZmZzZXQobV9lbmRP
Zkluc2VydGVkQ29udGVudC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSArIDEpOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgYXV0byBub2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5n
VGV4dE5vZGUoY29sbGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIDog
IiAiKTsKKyAgICAgICAgICAgIGF1dG8gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1Rl
eHROb2RlKGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIg
Il9zKTsKICAgICAgICAgICAgIGluc2VydE5vZGVBZnRlcihub2RlLmNvcHlSZWYoKSwgKmVuZE5v
ZGUpOwogICAgICAgICAgICAgdXBkYXRlTm9kZXNJbnNlcnRlZChub2RlLnB0cigpKTsKICAgICAg
ICAgfQpAQCAtMTYxOCwxMSArMTYxOCwxMSBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjphZGRTcGFjZXNGb3JTbWFydFJlcGxhY2UoKQogICAgIGlmIChuZWVkc0xlYWRpbmdTcGFjZSAm
JiBzdGFydE5vZGUpIHsKICAgICAgICAgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UgPSAhc3RhcnRO
b2RlLT5yZW5kZXJlcigpIHx8IHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5jb2xsYXBz
ZVdoaXRlU3BhY2UoKTsKICAgICAgICAgaWYgKGlzPFRleHQ+KCpzdGFydE5vZGUpKSB7Ci0gICAg
ICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUoZG93bmNhc3Q8VGV4dD4oKnN0YXJ0Tm9kZSksIHN0
YXJ0T2Zmc2V0LCBjb2xsYXBzZVdoaXRlU3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkg
OiAiICIpOworICAgICAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKGRvd25jYXN0PFRleHQ+KCpz
dGFydE5vZGUpLCBzdGFydE9mZnNldCwgY29sbGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdT
cGFjZVN0cmluZygpIDogIiAiX3MpOwogICAgICAgICAgICAgaWYgKG1fZW5kT2ZJbnNlcnRlZENv
bnRlbnQuY29udGFpbmVyTm9kZSgpID09IHN0YXJ0Tm9kZSAmJiBtX2VuZE9mSW5zZXJ0ZWRDb250
ZW50Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpKQogICAgICAgICAgICAgICAgIG1fZW5kT2ZJbnNl
cnRlZENvbnRlbnQubW92ZVRvT2Zmc2V0KG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQub2Zmc2V0SW5D
b250YWluZXJOb2RlKCkgKyAxKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8g
bm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKGNvbGxhcHNlV2hpdGVTcGFj
ZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIgIik7CisgICAgICAgICAgICBhdXRvIG5v
ZGUgPSBkb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3BhY2Ug
PyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICJfcyk7CiAgICAgICAgICAgICAvLyBEb24n
dCB1cGRhdGVOb2Rlc0luc2VydGVkLiBEb2luZyBzbyB3b3VsZCBzZXQgbV9lbmRPZkluc2VydGVk
Q29udGVudCB0byBiZSB0aGUgbm9kZSBjb250YWluaW5nIHRoZSBsZWFkaW5nIHNwYWNlLAogICAg
ICAgICAgICAgLy8gYnV0IG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQgaXMgc3VwcG9zZWQgdG8gbWFy
ayB0aGUgZW5kIG9mIHBhc3RlZCBjb250ZW50LgogICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9y
ZShub2RlLCAqc3RhcnROb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggYzViMmIyZDU5NWI3NzcyNDkwZmE4
ZjYwMzM0MzMxODNlMmE5OGVlMC4uMDFjNmVlYWU5MTZlYTVhYTIzNDIzZWYzMTIzYTE3YzBkZGIy
NmYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlci5jcHAKQEAgLTUwNiw3ICs1MDYsNyBAQCB2b2lkIFRleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyOjpvYnNlcnZlUGFyYWdyYXBocyhjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNv
bnN0CiAKICAgICAgICAgaWYgKGNvbnRlbnQuaXNSZXBsYWNlZENvbnRlbnQpIHsKICAgICAgICAg
ICAgIGlmICghdW5pdHNJbkN1cnJlbnRQYXJhZ3JhcGguaXNFbXB0eSgpKQotICAgICAgICAgICAg
ICAgIHVuaXRzSW5DdXJyZW50UGFyYWdyYXBoLmFwcGVuZChNYW5pcHVsYXRpb25Vbml0IHsgKmNv
bnRlbnROb2RlLCB7IE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZpZXIuZ2VuZXJh
dGUoKSwgIltdIiwgdG9rZW5JbmZvKGNvbnRlbnQubm9kZS5nZXQoKSksIHRydWUgfSB9IH0pOwor
ICAgICAgICAgICAgICAgIHVuaXRzSW5DdXJyZW50UGFyYWdyYXBoLmFwcGVuZChNYW5pcHVsYXRp
b25Vbml0IHsgKmNvbnRlbnROb2RlLCB7IE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50
aWZpZXIuZ2VuZXJhdGUoKSwgIltdIl9zLCB0b2tlbkluZm8oY29udGVudC5ub2RlLmdldCgpKSwg
dHJ1ZSB9IH0gfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCAyMjcyZWJiMzBkZTc5MjE2MzY2
ZmIxMTkzNjU4MWI5MjU4YmRjYTFlLi45ZTdjMGFjNGE0YWQ5MDU0ZGYzZTQyMTcwODBmNDI5MTVi
M2ExODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTU1
Nyw3ICs1NTcsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVCcmVha0FuZE5vdGlm
eUFjY2Vzc2liaWxpdHkoKQogewogICAgIEFjY2Vzc2liaWxpdHlSZXBsYWNlZFRleHQgcmVwbGFj
ZWRUZXh0KGRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwogICAgIGluc2VydExp
bmVCcmVhaygpOwotICAgIHJlcGxhY2VkVGV4dC5wb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0
aW9uKGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCksIEFYVGV4dEVkaXRUeXBlVHlw
aW5nLCAiXG4iLCBkb2N1bWVudCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKKyAgICByZXBs
YWNlZFRleHQucG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihkb2N1bWVudCgpLmV4aXN0
aW5nQVhPYmplY3RDYWNoZSgpLCBBWFRleHRFZGl0VHlwZVR5cGluZywgIlxuIl9zLCBkb2N1bWVu
dCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAgICBjb21wb3NpdGlvbigpLT5zZXRSYW5n
ZURlbGV0ZWRCeVVuYXBwbHkocmVwbGFjZWRUZXh0LnJlcGxhY2VkUmFuZ2UoKSk7CiB9CiAKQEAg
LTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFy
YXRvckFuZE5vdGlmeUFjY2Vzc2liaWxpdHkoKQogewogICAgIEFjY2Vzc2liaWxpdHlSZXBsYWNl
ZFRleHQgcmVwbGFjZWRUZXh0KGRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwog
ICAgIGluc2VydFBhcmFncmFwaFNlcGFyYXRvcigpOwotICAgIHJlcGxhY2VkVGV4dC5wb3N0VGV4
dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hl
KCksIEFYVGV4dEVkaXRUeXBlVHlwaW5nLCAiXG4iLCBkb2N1bWVudCgpLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpKTsKKyAgICByZXBsYWNlZFRleHQucG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNh
dGlvbihkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpLCBBWFRleHRFZGl0VHlwZVR5
cGluZywgIlxuIl9zLCBkb2N1bWVudCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAgICBj
b21wb3NpdGlvbigpLT5zZXRSYW5nZURlbGV0ZWRCeVVuYXBwbHkocmVwbGFjZWRUZXh0LnJlcGxh
Y2VkUmFuZ2UoKSk7CiB9CiAKQEAgLTYwMSw3ICs2MDEsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6
Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudEFuZE5vdGlmeUFjY2Vzc2li
aWxpdAogewogICAgIEFjY2Vzc2liaWxpdHlSZXBsYWNlZFRleHQgcmVwbGFjZWRUZXh0KGRvY3Vt
ZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwogICAgIGluc2VydFBhcmFncmFwaFNlcGFy
YXRvckluUXVvdGVkQ29udGVudCgpOwotICAgIHJlcGxhY2VkVGV4dC5wb3N0VGV4dFN0YXRlQ2hh
bmdlTm90aWZpY2F0aW9uKGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCksIEFYVGV4
dEVkaXRUeXBlVHlwaW5nLCAiXG4iLCBkb2N1bWVudCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
KTsKKyAgICByZXBsYWNlZFRleHQucG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihkb2N1
bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpLCBBWFRleHRFZGl0VHlwZVR5cGluZywgIlxu
Il9zLCBkb2N1bWVudCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAgICBjb21wb3NpdGlv
bigpLT5zZXRSYW5nZURlbGV0ZWRCeVVuYXBwbHkocmVwbGFjZWRUZXh0LnJlcGxhY2VkUmFuZ2Uo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAyMGIzZmNmOGRkZjk1NDQz
NDliMTg2NGVmOWQ5YmYwZmI0YWVlNjQ2Li4yZDhmOGIzMzU5MzBkMDdkZDMzMjZiODEwNjVmMmQ0
ZmQ4MzVhY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xOTYsMTIgKzE5Niwx
MiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250
ZW50KCkKICAgICBmcmFtZS5pbml0KCk7CiAKICAgICBGcmFtZUxvYWRlciYgbG9hZGVyID0gZnJh
bWUubG9hZGVyKCk7Ci0gICAgc3RhdGljIGNoYXIgbWFya3VwW10gPSAiPCFET0NUWVBFIGh0bWw+
PGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4iOworICAgIHN0YXRpYyBjb25zdGV4cHIgQVNDSUlM
aXRlcmFsIG1hcmt1cCA9ICI8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48L2JvZHk+PC9odG1s
PiJfczsKICAgICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOwogICAgIGF1
dG8mIHdyaXRlciA9IGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKTsKLSAg
ICB3cml0ZXIuc2V0TUlNRVR5cGUoInRleHQvaHRtbCIpOworICAgIHdyaXRlci5zZXRNSU1FVHlw
ZSgidGV4dC9odG1sIl9zKTsKICAgICB3cml0ZXIuYmVnaW4oKTsKLSAgICB3cml0ZXIuaW5zZXJ0
RGF0YVN5bmNocm9ub3VzbHkoU3RyaW5nKG1hcmt1cCkpOworICAgIHdyaXRlci5pbnNlcnREYXRh
U3luY2hyb25vdXNseShtYXJrdXApOwogICAgIHdyaXRlci5lbmQoKTsKICAgICBSRUxFQVNFX0FT
U0VSVChwYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5ib2R5KCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iVVJMLmNwcAppbmRleCAzZTFlZjNmYjM2MmJhZmM0MzA2MWUxOGNjMGMxM2VkOTVk
ZTY5ZmFkLi40NDU4OTEyYmEwOGM2NTYxNzc2ZTMyYzc3MTRjZDNlODk3NWRlYTBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgVVJMIEJsb2JVUkw6OmNy
ZWF0ZVB1YmxpY1VSTChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiAKIFVSTCBCbG9i
VVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUJsb2JVUkwoImJs
b2JpbnRlcm5hbDovLyIpOworICAgIHJldHVybiBjcmVhdGVCbG9iVVJMKCJibG9iaW50ZXJuYWw6
Ly8iX3MpOwogfQogCiBzdGF0aWMgY29uc3QgRG9jdW1lbnQqIGJsb2JPd25lcihjb25zdCBTZWN1
cml0eU9yaWdpbiYgYmxvYk9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJMb2FkZXIuY3BwCmluZGV4IDJmZTVhZjFmOThkMzZkZGM4OWYzOWNjYzE3ZDdiNzBlYzkzMzll
OGIuLmFjZjRmZjliMTg4ZmY2YmU2Mjg0MTI1ZDM4OTEwNjU4NGFjOTI0MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2
b2lkIEZpbGVSZWFkZXJMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIGNvbgogCiAgICAgLy8gQ29uc3RydWN0IGFuZCBsb2FkIHRoZSBy
ZXF1ZXN0LgogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KG1fdXJsRm9yUmVhZGluZyk7Ci0g
ICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICByZXF1ZXN0LnNldEhUVFBNZXRo
b2QoIkdFVCJfcyk7CiAKICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwogICAg
IG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxs
YmFja3M7CkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpjb252ZXJ0
VG9UZXh0KCkKICAgICAvLyBwcm92aWRlZCBlbmNvZGluZy4gICAgIAogICAgIC8vIEZJWE1FOiBj
b25zaWRlciBzdXBwb3J0aW5nIGluY3JlbWVudGFsIGRlY29kaW5nIHRvIGltcHJvdmUgdGhlIHBl
cmYuCiAgICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsIG1fZW5jb2RpbmcuaXNWYWxpZCgpID8gbV9l
bmNvZGluZyA6IFBBTDo6VVRGOEVuY29kaW5nKCkpOworICAgICAgICBtX2RlY29kZXIgPSBUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsIG1fZW5jb2RpbmcuaXNWYWxp
ZCgpID8gbV9lbmNvZGluZyA6IFBBTDo6VVRGOEVuY29kaW5nKCkpOwogICAgIGlmIChpc0NvbXBs
ZXRlZCgpKQogICAgICAgICBtX3N0cmluZ1Jlc3VsdCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSwgbV9ieXRlc0xv
YWRlZCk7CiAgICAgZWxzZQpAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRl
cjo6Y29udmVydFRvRGF0YVVSTCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3N0
cmluZ1Jlc3VsdCA9IG1ha2VTdHJpbmcoImRhdGE6IiwgbV9kYXRhVHlwZS5pc0VtcHR5KCkgPyAi
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiA6IG1fZGF0YVR5cGUsICI7YmFzZTY0LCIsIGJhc2U2
NEVuY29kZWQobV9yYXdEYXRhLT5kYXRhKCksIG1fYnl0ZXNMb2FkZWQpKTsKKyAgICBtX3N0cmlu
Z1Jlc3VsdCA9IG1ha2VTdHJpbmcoImRhdGE6IiwgbV9kYXRhVHlwZS5pc0VtcHR5KCkgPyAiYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtIl9zIDogbV9kYXRhVHlwZSwgIjtiYXNlNjQsIiwgYmFzZTY0
RW5jb2RlZChtX3Jhd0RhdGEtPmRhdGEoKSwgbV9ieXRlc0xvYWRlZCkpOwogfQogCiBib29sIEZp
bGVSZWFkZXJMb2FkZXI6OmlzQ29tcGxldGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCmluZGV4IDZkMWE5ODk1YjQ4NzVmZDAwNmZkNTI2MTQ1
YTBkZGIyOTc4Y2E3N2UuLjA5YWU3ZDk2MzJlMTMyYjhjYzQzM2VmN2RhZjIwOTExM2E4NzI3Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcApAQCAtMjg1
LDcgKzI4NSw3IEBAIEJhY2tGb3J3YXJkQ2FjaGU6OkJhY2tGb3J3YXJkQ2FjaGUoKQogewogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10gewotICAgICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBs
ZS5XZWJLaXQuc2hvd0JhY2tGb3J3YXJkQ2FjaGUiLCBbXSB7CisgICAgICAgIFBBTDo6cmVnaXN0
ZXJOb3RpZnlDYWxsYmFjaygiY29tLmFwcGxlLldlYktpdC5zaG93QmFja0ZvcndhcmRDYWNoZSJf
cywgW10gewogICAgICAgICAgICAgQmFja0ZvcndhcmRDYWNoZTo6c2luZ2xldG9uKCkuZHVtcCgp
OwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RW1haWxJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5j
cHAKaW5kZXggNzk2NjU3MDhjNTE1MjEyMDQ1NzI2NmQ4YTk1ZWQ0NzE3MDZjM2Y4Ni4uMzM1MzNm
NmQ1MzYwNDliNDUxZDYxYWU0ZWVkYThiYjQ4OWI1MjBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9F
bWFpbElucHV0VHlwZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogLy8gRnJvbSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN2YWxpZC1lLW1haWwtYWRk
cmVzcy4KLXN0YXRpYyBjb25zdCBjaGFyIGVtYWlsUGF0dGVybltdID0gIl5bYS16QS1aMC05LiEj
JCUmJyorXFwvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2Et
ekEtWjAtOV0pPyg/OlxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAt
OV0pPykqJCI7CitzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBlbWFpbFBhdHRlcm4gPSAi
XlthLXpBLVowLTkuISMkJSYnKitcXC89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1a
MC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XFwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17
MCw2MX1bYS16QS1aMC05XSk/KSokIl9zOwogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkRW1haWxBZGRy
ZXNzKGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RhdGljIGJv
b2wgaXNWYWxpZEVtYWlsQWRkcmVzcyhjb25zdCBTdHJpbmcmIGFkZHJlc3MpCiAgICAgaWYgKCFh
ZGRyZXNzTGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4gcmVnRXhwKGVtYWls
UGF0dGVybiwgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4gcmVnRXhwKFN0
cmluZ1ZpZXcgeyBlbWFpbFBhdHRlcm4gfSwgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZl
KTsKIAogICAgIGludCBtYXRjaExlbmd0aDsKICAgICBpbnQgbWF0Y2hPZmZzZXQgPSByZWdFeHAu
Z2V0KCkubWF0Y2goYWRkcmVzcywgMCwgJm1hdGNoTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRW50ZXJLZXlIaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW50
ZXJLZXlIaW50LmNwcAppbmRleCBkZGJjNDkyNjQ5NjFmMDRhOTZhMTgwNzI4N2E5OTkwOThlZjgy
NTQ2Li45NzAzODE0Yzg0ZjQ2OWNkNGZiMTM2NWUxMTNkNjczMmEwZWU2OTlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0VudGVyS2V5SGludC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9FbnRlcktleUhpbnQuY3BwCkBAIC01MywxOSArNTMsMTkgQEAgU3RyaW5nIGF0dHJp
YnV0ZVZhbHVlRm9yRW50ZXJLZXlIaW50KEVudGVyS2V5SGludCBoaW50KQogICAgIGNhc2UgRW50
ZXJLZXlIaW50OjpVbnNwZWNpZmllZDoKICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOwogICAg
IGNhc2UgRW50ZXJLZXlIaW50OjpFbnRlcjoKLSAgICAgICAgcmV0dXJuICJlbnRlciI7CisgICAg
ICAgIHJldHVybiAiZW50ZXIiX3M7CiAgICAgY2FzZSBFbnRlcktleUhpbnQ6OkRvbmU6Ci0gICAg
ICAgIHJldHVybiAiZG9uZSI7CisgICAgICAgIHJldHVybiAiZG9uZSJfczsKICAgICBjYXNlIEVu
dGVyS2V5SGludDo6R286Ci0gICAgICAgIHJldHVybiAiZ28iOworICAgICAgICByZXR1cm4gImdv
Il9zOwogICAgIGNhc2UgRW50ZXJLZXlIaW50OjpOZXh0OgotICAgICAgICByZXR1cm4gIm5leHQi
OworICAgICAgICByZXR1cm4gIm5leHQiX3M7CiAgICAgY2FzZSBFbnRlcktleUhpbnQ6OlByZXZp
b3VzOgotICAgICAgICByZXR1cm4gInByZXZpb3VzIjsKKyAgICAgICAgcmV0dXJuICJwcmV2aW91
cyJfczsKICAgICBjYXNlIEVudGVyS2V5SGludDo6U2VhcmNoOgotICAgICAgICByZXR1cm4gInNl
YXJjaCI7CisgICAgICAgIHJldHVybiAic2VhcmNoIl9zOwogICAgIGNhc2UgRW50ZXJLZXlIaW50
OjpTZW5kOgotICAgICAgICByZXR1cm4gInNlbmQiOworICAgICAgICByZXR1cm4gInNlbmQiX3M7
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxsQXRvbSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCA4
NDRjZjYwNTIxZmI2NDE1NGM1Y2Y5NWUwYzU1NDk4MzdjNGZiZTJhLi43YzIyZGQ1NzFmNmJjMzJi
MjNmYmJiNWNiMDE5ZmZiOWM3NzMxYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcApAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQgRlRQRGlyZWN0b3J5
RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUJhc2ljRG9jdW1lbnQoKQogCiAgICAgYm9keUVsZW1lbnQt
PmFwcGVuZENoaWxkKCptX3RhYmxlRWxlbWVudCk7CiAKLSAgICBkb2N1bWVudC5wcm9jZXNzVmll
d3BvcnQoIndpZHRoPWRldmljZS13aWR0aCIsIFZpZXdwb3J0QXJndW1lbnRzOjpWaWV3cG9ydE1l
dGEpOworICAgIGRvY3VtZW50LnByb2Nlc3NWaWV3cG9ydCgid2lkdGg9ZGV2aWNlLXdpZHRoIl9z
LCBWaWV3cG9ydEFyZ3VtZW50czo6Vmlld3BvcnRNZXRhKTsKIH0KIAogdm9pZCBGVFBEaXJlY3Rv
cnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmIGlucHV0U291cmNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCAyMmZjOTk1
OWE3MmYyMTEwZWZiMWE1OTk1MWMwOGFhYjY3NTE5NWJlLi5jOTllOTc2NmI0ODI5OWY5NDUxZjQz
OGI0NTMwZGZkNTU4YTg1MGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
bmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcApAQCAtNTgyLDcgKzU4Miw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRs
ZUNsaWNrKEV2ZW50JiBldmVudCkKICAgICAgICAgaWYgKGlzU2FtZU9yaWdpbikKICAgICAgICAg
ICAgIGRvd25sb2FkQXR0cmlidXRlID0gUmVzb3VyY2VSZXNwb25zZTo6c2FuaXRpemVTdWdnZXN0
ZWRGaWxlbmFtZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRvd25sb2FkQXR0cikp
OwogICAgICAgICBlbHNlIGlmIChoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRv
d25sb2FkQXR0cikpCi0gICAgICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJUaGUgZG93bmxv
YWQgYXR0cmlidXRlIG9uIGFuY2hvciB3YXMgaWdub3JlZCBiZWNhdXNlIGl0cyBocmVmIFVSTCBo
YXMgYSBkaWZmZXJlbnQgc2VjdXJpdHkgb3JpZ2luLiIpOworICAgICAgICAgICAgZG9jdW1lbnQo
KS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCAiVGhlIGRvd25sb2FkIGF0dHJpYnV0ZSBvbiBhbmNob3Igd2FzIGlnbm9yZWQg
YmVjYXVzZSBpdHMgaHJlZiBVUkwgaGFzIGEgZGlmZmVyZW50IHNlY3VyaXR5IG9yaWdpbi4iX3Mp
OwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuY3BwCmluZGV4IDdjNTc0MTU3YTE4NTVkOTk1NjYwY2JhYTRiODZkNWFjZjhhMjNiMGEu
LjM0NjI2YjAyYWM1MzQyZDhmMWNlODVmZWYwMjViN2I2ODdjYmZhNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAg
dm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbVMKICAgICAgICAgICAgIGlmICghc3JjVmFsdWUuaXNOdWxs
KCkpCiAgICAgICAgICAgICAgICAgc2V0TG9jYXRpb24oc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKHNyY1ZhbHVlKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc2V0TG9j
YXRpb24oImFib3V0OnNyY2RvYyIpOworICAgICAgICAgICAgc2V0TG9jYXRpb24oImFib3V0OnNy
Y2RvYyJfcyk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IHNyY0F0dHIgJiYgIWhhc0F0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjZG9jQXR0cikpCiAgICAgICAgIHNldExvY2F0aW9u
KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh2YWx1ZSkpOwogICAgIGVsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDU5MjdmODkwMzljNjEy
NmJlNDdmMTliZGU4ZWUyMGYwYmJhNWE0OGIuLjQwMTcyOGI5NDhmNDJmODJjMTM3OWY5ZmVhZmFk
OTQxZDA5NWI3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApA
QCAtMjE4LDcgKzIxOCw3IEBAIEltYWdlQ2FuZGlkYXRlIEhUTUxJbWFnZUVsZW1lbnQ6OmJlc3RG
aXRTb3VyY2VGcm9tUGljdHVyZUVsZW1lbnQoKQogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRy
IGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgICAg
IE1lZGlhUXVlcnlFdmFsdWF0b3IgZXZhbHVhdG9yIHsgZG9jdW1lbnQoKS5wcmludGluZygpID8g
InByaW50IiA6ICJzY3JlZW4iLCBkb2N1bWVudCgpLCBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVu
dEVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKSA6IG51bGxwdHIgfTsKKyAgICAgICAgTWVkaWFRdWVy
eUV2YWx1YXRvciBldmFsdWF0b3IgeyBkb2N1bWVudCgpLnByaW50aW5nKCkgPyAicHJpbnQiX3Mg
OiAic2NyZWVuIl9zLCBkb2N1bWVudCgpLCBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1l
bnQtPmNvbXB1dGVkU3R5bGUoKSA6IG51bGxwdHIgfTsKICAgICAgICAgYXV0byogcXVlcmllcyA9
IHNvdXJjZS5wYXJzZWRNZWRpYUF0dHJpYnV0ZShkb2N1bWVudCgpKTsKICAgICAgICAgTE9HKE1l
ZGlhUXVlcmllcywgIkhUTUxJbWFnZUVsZW1lbnQgJXAgYmVzdEZpdFNvdXJjZUZyb21QaWN0dXJl
RWxlbWVudCBldmFsdWF0aW5nIG1lZGlhIHF1ZXJpZXMiLCB0aGlzKTsKIApAQCAtMjQyLDcgKzI0
Miw3IEBAIEltYWdlQ2FuZGlkYXRlIEhUTUxJbWFnZUVsZW1lbnQ6OmJlc3RGaXRTb3VyY2VGcm9t
UGljdHVyZUVsZW1lbnQoKQogdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpldmFsdWF0ZUR5bmFtaWNN
ZWRpYVF1ZXJ5RGVwZW5kZW5jaWVzKCkKIHsKICAgICBSZWZQdHIgZG9jdW1lbnRFbGVtZW50ID0g
ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIGV2
YWx1YXRvciB7IGRvY3VtZW50KCkucHJpbnRpbmcoKSA/ICJwcmludCIgOiAic2NyZWVuIiwgZG9j
dW1lbnQoKSwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0eWxl
KCkgOiBudWxscHRyIH07CisgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBldmFsdWF0b3IgeyBkb2N1
bWVudCgpLnByaW50aW5nKCkgPyAicHJpbnQiX3MgOiAic2NyZWVuIl9zLCBkb2N1bWVudCgpLCBk
b2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKSA6IG51bGxw
dHIgfTsKIAogICAgIGlmICghZXZhbHVhdG9yLmV2YWx1YXRlRm9yQ2hhbmdlcyhtX21lZGlhUXVl
cnlEeW5hbWljUmVzdWx0cykpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGIxMGQ3YTc0NWE5Y2MyMzNkNGE4YTBlMjk3ZTBlMjg2
NjBhMWRjYjguLmExYWEzOGJhZWNmYzkyOTE5NTZmY2M5Y2IzNzBmN2EwY2NkNjNjZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTI5NCwxMiArMTI5NCwx
MiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MSW5wdXRFbGVtZW50OjpzaG93UGlja2VyKCkKICAg
ICBpZiAoIW1faW5wdXRUeXBlLT5hbGxvd3NTaG93UGlja2VyQWNyb3NzRnJhbWVzKCkpIHsKICAg
ICAgICAgRnJhbWUmIHRvcEZyYW1lID0gZnJhbWUtPnRyZWUoKS50b3AoKTsKICAgICAgICAgaWYg
KCFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5pc1NhbWVPcmlnaW5Bcyh0b3BG
cmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKLSAgICAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiSW5wdXQgc2hvd1BpY2tlcigpIGNhbGxlZCBmcm9t
IGNyb3NzLW9yaWdpbiBpZnJhbWUuIiB9OworICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFNlY3VyaXR5RXJyb3IsICJJbnB1dCBzaG93UGlja2VyKCkgY2FsbGVkIGZyb20gY3Jvc3Mtb3Jp
Z2luIGlmcmFtZS4iX3MgfTsKICAgICB9CiAKICAgICBhdXRvKiB3aW5kb3cgPSBmcmFtZS0+d2lu
ZG93KCk7CiAgICAgaWYgKCF3aW5kb3cgfHwgIXdpbmRvdy0+aGFzVHJhbnNpZW50QWN0aXZhdGlv
bigpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90QWxsb3dlZEVycm9yLCAiSW5wdXQg
c2hvd1BpY2tlcigpIHJlcXVpcmVzIGEgdXNlciBnZXN0dXJlLiIgfTsKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRFcnJvciwgIklucHV0IHNob3dQaWNrZXIoKSByZXF1aXJl
cyBhIHVzZXIgZ2VzdHVyZS4iX3MgfTsKIAogICAgIG1faW5wdXRUeXBlLT5zaG93UGlja2VyKCk7
CiAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IGQzNzMyYjgxOGNiMjYxZTI1ZGNhMzI3YzMwOTkwYjZlNDc4N2RkNTYuLjJmMmU0MDQ1
MzQ1MjE3MmExMjE2ZDAwMGMyYmI2YWNjZTNjMGY1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzY4Miw3ICszNjgyLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpwbGF5KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAKICAgICBp
ZiAobV9lcnJvciAmJiBtX2Vycm9yLT5jb2RlKCkgPT0gTWVkaWFFcnJvcjo6TUVESUFfRVJSX1NS
Q19OT1RfU1VQUE9SVEVEKSB7CiAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAicmVq
ZWN0aW5nIHByb21pc2UgYmVjYXVzZSBvZiBlcnJvciIpOwotICAgICAgICBwcm9taXNlLnJlamVj
dChOb3RTdXBwb3J0ZWRFcnJvciwgIlRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4iKTsK
KyAgICAgICAgcHJvbWlzZS5yZWplY3QoTm90U3VwcG9ydGVkRXJyb3IsICJUaGUgb3BlcmF0aW9u
IGlzIG5vdCBzdXBwb3J0ZWQuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDg5
NCw3ICs0ODk0LDcgQEAgVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGls
ZChDb250ZW50VHlwZSogY29udGVudFR5cGUsIFN0cmluZyoga2UKICAgICAgICAgICAgICAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSLCAiJ21lZGlhJyBpcyAiLCBzb3VyY2UtPmF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24obWVkaWFBdHRyKSk7CiAgICAgICAgICAgICBhdXRvKiByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICBMT0coTWVkaWFRdWVyaWVzLCAi
SFRNTE1lZGlhRWxlbWVudCAlcCBzZWxlY3ROZXh0U291cmNlQ2hpbGQgZXZhbHVhdGluZyBtZWRp
YSBxdWVyaWVzIiwgdGhpcyk7Ci0gICAgICAgICAgICBpZiAoIU1lZGlhUXVlcnlFdmFsdWF0b3Ig
eyAic2NyZWVuIiwgZG9jdW1lbnQoKSwgcmVuZGVyZXIgPyAmcmVuZGVyZXItPnN0eWxlKCkgOiBu
dWxscHRyIH0uZXZhbHVhdGUoKm1lZGlhKSkKKyAgICAgICAgICAgIGlmICghTWVkaWFRdWVyeUV2
YWx1YXRvciB7ICJzY3JlZW4iX3MsIGRvY3VtZW50KCksIHJlbmRlcmVyID8gJnJlbmRlcmVyLT5z
dHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKCptZWRpYSkpCiAgICAgICAgICAgICAgICAgZ290
byBDaGVja0FnYWluOwogICAgICAgICB9CiAKQEAgLTcxNTgsNyArNzE1OCw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dXBkYXRlU2xlZXBEaXNhYmxpbmcoKQogICAgIGVsc2UgaWYgKHNob3Vs
ZERpc2FibGVTbGVlcCAhPSBTbGVlcFR5cGU6Ok5vbmUpIHsKICAgICAgICAgYXV0byB0eXBlID0g
c2hvdWxkRGlzYWJsZVNsZWVwID09IFNsZWVwVHlwZTo6RGlzcGxheSA/IFBBTDo6U2xlZXBEaXNh
Ymxlcjo6VHlwZTo6RGlzcGxheSA6IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6U3lzdGVtOwog
ICAgICAgICBpZiAoIW1fc2xlZXBEaXNhYmxlciB8fCBtX3NsZWVwRGlzYWJsZXItPnR5cGUoKSAh
PSB0eXBlKQotICAgICAgICAgICAgbV9zbGVlcERpc2FibGVyID0gbWFrZVVuaXF1ZTxTbGVlcERp
c2FibGVyPigiY29tLmFwcGxlLldlYkNvcmU6IEhUTUxNZWRpYUVsZW1lbnQgcGxheWJhY2siLCB0
eXBlKTsKKyAgICAgICAgICAgIG1fc2xlZXBEaXNhYmxlciA9IG1ha2VVbmlxdWU8U2xlZXBEaXNh
Ymxlcj4oImNvbS5hcHBsZS5XZWJDb3JlOiBIVE1MTWVkaWFFbGVtZW50IHBsYXliYWNrIl9zLCB0
eXBlKTsKICAgICB9CiAKICAgICBpZiAobV9wbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGRjMWI4NzNlOTcyODg3MzNhOGY2NTVkN2I1YzEyZDg5
ZDY5Y2RlMjIuLjM3M2Q0MzU1YjYyNGZlNzhmYTMxNTkzOTM3MGZlOWIzZDc4OGEzMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC0xODIsNyArMTgyLDcg
QEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyYW1ldGVyc0ZvclBsdWdpbihWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgVmVjdG9yPFMKICAgICAvLyBlbHNlIG91ciBKYXZhIHBsdWdpbiB3
aWxsIG1pc2ludGVycHJldCBpdC4gWzQwMDQ1MzFdCiAgICAgU3RyaW5nIGNvZGViYXNlOwogICAg
IGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShzZXJ2aWNlVHlwZSkp
IHsKLSAgICAgICAgY29kZWJhc2UgPSAiY29kZWJhc2UiOworICAgICAgICBjb2RlYmFzZSA9ICJj
b2RlYmFzZSJfczsKICAgICAgICAgdW5pcXVlUGFyYW1OYW1lcy5hZGQoY29kZWJhc2UuaW1wbCgp
KTsgLy8gcHJldGVuZCB3ZSBmb3VuZCBpdCBpbiBhIFBBUkFNIGFscmVhZHkKICAgICB9CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCmluZGV4IDU5YmZjNmUwZjFlNTkwNDNkY2M1
YmJkYTJkMjJhYWUzNjVhNjEzMTQuLmFjY2VhYTUzYmNiY2YzODM3YmQ0Yjk5MmQ2ZTJhYTU0Nzk0
MjkwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCkBAIC0xMjIsNyArMTIyLDcg
QEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIC8vIDEuIElmIGVpdGhlciB0aGUgc3cgb3Ig
c2ggYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQgYnV0IHplcm8sIHJldHVybiBhIHByb21pc2UKICAg
ICAvLyAgICByZWplY3RlZCB3aXRoIGFuICJSYW5nZUVycm9yIiBET01FeGNlcHRpb24gYW5kIGFi
b3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmICghc3cgfHwgIXNoKSB7Ci0gICAgICAgIHByb21pc2Uu
cmVqZWN0KFJhbmdlRXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIHdpdGggYSB3aWR0
aCBvciBoZWlnaHQgb2YgMCIpOworICAgICAgICBwcm9taXNlLnJlamVjdChSYW5nZUVycm9yLCAi
Q2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCB3aXRoIGEgd2lkdGggb3IgaGVpZ2h0IG9mIDAiX3Mp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xODAsNyArMTgwLDcgQEAgc3RhdGljIEV4
Y2VwdGlvbk9yPEludFJlY3Q+IGNyb3BwZWRTb3VyY2VSZWN0YW5nbGVXaXRoRm9ybWF0dGluZyhJ
bnRTaXplIGlucHV0U2kKICAgICAvLyAgICB0aGFuIG9yIGVxdWFsIHRvIDAsIHRoZW4gcmV0dXJu
IGEgcHJvbWlzZSByZWplY3RlZCB3aXRoICJJbnZhbGlkU3RhdGVFcnJvciIKICAgICAvLyAgICBE
T01FeGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmICgob3B0aW9ucy5yZXNp
emVXaWR0aCAmJiBvcHRpb25zLnJlc2l6ZVdpZHRoLnZhbHVlKCkgPD0gMCkgfHwgKG9wdGlvbnMu
cmVzaXplSGVpZ2h0ICYmIG9wdGlvbnMucmVzaXplSGVpZ2h0LnZhbHVlKCkgPD0gMCkpCi0gICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkludmFsaWQgcmVzaXpl
IGRpbWVuc2lvbnMiIH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciwgIkludmFsaWQgcmVzaXplIGRpbWVuc2lvbnMiX3MgfTsKIAogICAgIC8vIDMuIElmIHN4
LCBzeSwgc3cgYW5kIHNoIGFyZSBzcGVjaWZpZWQsIGxldCBzb3VyY2VSZWN0YW5nbGUgYmUgYSBy
ZWN0YW5nbGUgd2hvc2UKICAgICAvLyAgICBjb3JuZXJzIGFyZSB0aGUgZm91ciBwb2ludHMgKHN4
LCBzeSksIChzeCtzdywgc3kpLChzeCtzdywgc3krc2gpLCAoc3gsc3krc2gpLgpAQCAtMzE0LDcg
KzMxNCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKIAogICAgIGF1dG8qIGNhY2hlZEltYWdl
ID0gaW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwg
IWltYWdlRWxlbWVudC0+Y29tcGxldGUoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdChJbnZh
bGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgdGhhdCBpcyBub3QgY29t
cGxldGVseSBhdmFpbGFibGUiKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRl
RXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIHRoYXQgaXMgbm90IGNvbXBsZXRlbHkg
YXZhaWxhYmxlIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzI1LDcgKzMyNSw3
IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKIAogICAgIGF1dG8gaW1hZ2VTaXplID0gY2FjaGVk
SW1hZ2UtPmltYWdlU2l6ZUZvclJlbmRlcmVyKGltYWdlRWxlbWVudC0+cmVuZGVyZXIoKSwgMS4w
Zik7CiAgICAgaWYgKCghaW1hZ2VTaXplLndpZHRoKCkgfHwgIWltYWdlU2l6ZS5oZWlnaHQoKSkg
JiYgKCFvcHRpb25zLnJlc2l6ZVdpZHRoIHx8ICFvcHRpb25zLnJlc2l6ZUhlaWdodCkpIHsKLSAg
ICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIElt
YWdlQml0bWFwIGZyb20gYSBzb3VyY2Ugd2l0aCBubyBpbnRyaW5zaWMgc2l6ZSB3aXRob3V0IHBy
b3ZpZGluZyByZXNpemUgZGltZW5zaW9ucyIpOworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZh
bGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBhIHNvdXJjZSB3
aXRoIG5vIGludHJpbnNpYyBzaXplIHdpdGhvdXQgcHJvdmlkaW5nIHJlc2l6ZSBkaW1lbnNpb25z
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQg
SW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwKICAgICAvLyB3aWR0aCBhbmQgaGVpZ2h0IGZvciB0aGUgaW1hZ2Uu
CiAKICAgICBpZiAoIXJlY3QgJiYgKCFpbWFnZVNpemUud2lkdGgoKSB8fCAhaW1hZ2VTaXplLmhl
aWdodCgpKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNh
bm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBhIHNvdXJjZSB3aXRoIG5vIGludHJpbnNpYyBz
aXplIHdpdGhvdXQgcHJvdmlkaW5nIGRpbWVuc2lvbnMiKTsKKyAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gYSBz
b3VyY2Ugd2l0aCBubyBpbnRyaW5zaWMgc2l6ZSB3aXRob3V0IHByb3ZpZGluZyBkaW1lbnNpb25z
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQg
SW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwKIAogICAgIGF1dG8gaW1hZ2VGb3JSZW5kZXJlciA9IGNhY2hlZElt
YWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlRWxlbWVudC0+cmVuZGVyZXIoKSk7CiAgICAgaWYg
KCFpbWFnZUZvclJlbmRlcmVyKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0
ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGltYWdlIHRoYXQgY2FuJ3Qg
YmUgcmVuZGVyZWQiKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3Is
ICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gaW1hZ2UgdGhhdCBjYW4ndCBiZSByZW5k
ZXJlZCJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQyMyw3ICs0MjMsNyBAQCB2
b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgLy8gICAgRE9NRXhjZXB0aW9uIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KICAgICBhdXRvIHNpemUgPSBjYW52YXMuc2l6ZSgpOwogICAgIGlmICghc2l6
ZS53aWR0aCgpIHx8ICFzaXplLmhlaWdodCgpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KElu
dmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGEgY2FudmFz
IHRoYXQgaGFzIHplcm8gd2lkdGggb3IgaGVpZ2h0Iik7CisgICAgICAgIHByb21pc2UucmVqZWN0
KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGEgY2Fu
dmFzIHRoYXQgaGFzIHplcm8gd2lkdGggb3IgaGVpZ2h0Il9zKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21p
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKIAogICAg
IGF1dG8gaW1hZ2VGb3JSZW5kZXIgPSBjYW52YXMuY29waWVkSW1hZ2UoKTsKICAgICBpZiAoIWlt
YWdlRm9yUmVuZGVyKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9y
LCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGNhbnZhcyB0aGF0IGNhbid0IGJlIHJl
bmRlcmVkIik7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fu
bm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGNhbnZhcyB0aGF0IGNhbid0IGJlIHJlbmRlcmVk
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDgzLDE0ICs0ODMsMTQgQEAgdm9p
ZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LAogICAgIC8vICAgIG9yIHJldHVybnMgYmFkLCB0aGVuIHJldHVy
biBwIHJlamVjdGVkIHdpdGggYW4gIkludmFsaWRTdGF0ZUVycm9yIgogICAgIC8vICAgIERPTUV4
Y2VwdGlvbi4KICAgICBpZiAodmlkZW8tPnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50
OjpIQVZFX05PVEhJTkcgfHwgdmlkZW8tPnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50
OjpIQVZFX01FVEFEQVRBKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVy
cm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBiZWZvcmUgdGhlIEhUTUxWaWRlb0VsZW1l
bnQgaGFzIGRhdGEiKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3Is
ICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGJlZm9yZSB0aGUgSFRNTFZpZGVvRWxlbWVudCBo
YXMgZGF0YSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyA2LjEuIElmIGlt
YWdlJ3MgbmV0d29ya1N0YXRlIGF0dHJpYnV0ZSBpcyBORVRXT1JLX0VNUFRZLCB0aGVuIHJldHVy
biBwCiAgICAgLy8gICAgICByZWplY3RlZCB3aXRoIGFuICJJbnZhbGlkU3RhdGVFcnJvciIgRE9N
RXhjZXB0aW9uLgogICAgIGlmICh2aWRlby0+bmV0d29ya1N0YXRlKCkgPT0gSFRNTE1lZGlhRWxl
bWVudDo6TkVUV09SS19FTVBUWSkgewotICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3Rh
dGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgYmVmb3JlIHRoZSBIVE1MVmlkZW9F
bGVtZW50IGhhcyBkYXRhIik7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVy
cm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBiZWZvcmUgdGhlIEhUTUxWaWRlb0VsZW1l
bnQgaGFzIGRhdGEiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NTYsNyArNTU2
LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogI2lmIEVOQUJMRShDU1NfVFlQRURfT00pCiB2
b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBS
ZWZQdHI8Q1NTU3R5bGVJbWFnZVZhbHVlPiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBzdGQ6Om9w
dGlvbmFsPEludFJlY3Q+LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCiB7Ci0gICAg
cHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiKTsKKyAg
ICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyk7
CiB9CiAjZW5kaWYKIApAQCAtNTY1LDcgKzU2NSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwK
ICAgICAvLyAyLiBJZiBpbWFnZSdzIFtbRGV0YWNoZWRdXSBpbnRlcm5hbCBzbG90IHZhbHVlIGlz
IHRydWUsIHJldHVybiBhIHByb21pc2UKICAgICAvLyAgICByZWplY3RlZCB3aXRoIGFuICJJbnZh
bGlkU3RhdGVFcnJvciIgRE9NRXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBp
ZiAoZXhpc3RpbmdJbWFnZUJpdG1hcC0+aXNEZXRhY2hlZCgpIHx8ICFleGlzdGluZ0ltYWdlQml0
bWFwLT5idWZmZXIoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJv
ciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBhIGRldGFjaGVkIEltYWdlQml0bWFw
Iik7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNy
ZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGEgZGV0YWNoZWQgSW1hZ2VCaXRtYXAiX3MpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC03MjIsNyArNzIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
fSk7CiAKICAgICAgICAgaWYgKCFtX2FycmF5QnVmZmVyVG9Qcm9jZXNzKSB7Ci0gICAgICAgICAg
ICBtX3Byb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQW4gZXJyb3Igb2NjdXJlZCBy
ZWFkaW5nIHRoZSBCbG9iIGFyZ3VtZW50IHRvIGNyZWF0ZUltYWdlQml0bWFwIik7CisgICAgICAg
ICAgICBtX3Byb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQW4gZXJyb3Igb2NjdXJl
ZCByZWFkaW5nIHRoZSBCbG9iIGFyZ3VtZW50IHRvIGNyZWF0ZUltYWdlQml0bWFwIl9zKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC03NDEsNyArNzQxLDcgQEAgcHJpdmF0
ZToKIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmPEFycmF5QnVmZmVyPiYmIGFycmF5QnVm
ZmVyLCBTdHJpbmcgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNv
bnN0IFVSTCYgc291cmNlVVJMLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBzdGQ6Om9w
dGlvbmFsPEludFJlY3Q+IHJlY3QsIFByb21pc2UmJiBwcm9taXNlKQogewogICAgIGlmICghYXJy
YXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlk
U3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgYW4gSW1hZ2VCaXRtYXAgZnJvbSBhbiBlbXB0eSBi
dWZmZXIiKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5u
b3QgY3JlYXRlIGFuIEltYWdlQml0bWFwIGZyb20gYW4gZW1wdHkgYnVmZmVyIl9zKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzUwLDcgKzc1MCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6
OmNyZWF0ZUZyb21CdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4CiAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUob2JzZXJ2ZXIucHRy
KCkpOwogICAgIGF1dG8gcmVzdWx0ID0gaW1hZ2UtPnNldERhdGEoc2hhcmVkQnVmZmVyLmNvcHlS
ZWYoKSwgdHJ1ZSk7CiAgICAgaWYgKHJlc3VsdCAhPSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxl
dGUgfHwgaW1hZ2UtPmlzTnVsbCgpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRT
dGF0ZUVycm9yLCAiQ2Fubm90IGRlY29kZSB0aGUgZGF0YSBpbiB0aGUgYXJndW1lbnQgdG8gY3Jl
YXRlSW1hZ2VCaXRtYXAiKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJy
b3IsICJDYW5ub3QgZGVjb2RlIHRoZSBkYXRhIGluIHRoZSBhcmd1bWVudCB0byBjcmVhdGVJbWFn
ZUJpdG1hcCJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc2Myw3ICs3NjMsNyBA
QCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIGF1dG8gb3V0cHV0U2l6ZSA9IG91dHB1dFNp
emVGb3JTb3VyY2VSZWN0YW5nbGUoc291cmNlUmVjdGFuZ2xlLnJldHVyblZhbHVlKCksIG9wdGlv
bnMpOwogICAgIGF1dG8gYml0bWFwRGF0YSA9IGNyZWF0ZUltYWdlQnVmZmVyKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUsIGltYWdlLT5jb2xv
clNwYWNlKCkpOwogICAgIGlmICghYml0bWFwRGF0YSkgewotICAgICAgICBwcm9taXNlLnJlamVj
dChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGZyb20g
dGhlIGFyZ3VtZW50IHRvIGNyZWF0ZUltYWdlQml0bWFwIik7CisgICAgICAgIHByb21pc2UucmVq
ZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBhbiBpbWFnZSBidWZmZXIgZnJv
bSB0aGUgYXJndW1lbnQgdG8gY3JlYXRlSW1hZ2VCaXRtYXAiX3MpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC03OTIsNyArNzkyLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJv
bWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAg
IC8vIDYuMi4gSWYgSXNEZXRhY2hlZEJ1ZmZlcihidWZmZXIpIGlzIHRydWUsIHRoZW4gcmV0dXJu
IHAgcmVqZWN0ZWQgd2l0aCBhbgogICAgIC8vICAgICAgIkludmFsaWRTdGF0ZUVycm9yIiBET01F
eGNlcHRpb24uCiAgICAgaWYgKGltYWdlRGF0YS0+ZGF0YSgpLmlzRGV0YWNoZWQoKSkgewotICAg
ICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkltYWdlRGF0YSdzIHZpZXdl
ZCBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQiKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52
YWxpZFN0YXRlRXJyb3IsICJJbWFnZURhdGEncyB2aWV3ZWQgYnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
b2N1bWVudC5jcHAKaW5kZXggZGNhYWI0ZjIxMjIwZThmNmE5ZTIwNjAyMDdjZjU0ZTUwZjc2OTg5
My4uODA0MWVhNDJjM2JhNzk1NTc1ZjNhMDJiNWUyNjM5YjU3ZWE0NDA0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBJbWFnZURv
Y3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgYXV0byBib2R5ID0gSFRNTEJv
ZHlFbGVtZW50OjpjcmVhdGUoKnRoaXMpOwogICAgIGJvZHktPnNldEF0dHJpYnV0ZShzdHlsZUF0
dHIsICJtYXJnaW46IDBweCIpOwogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVU
eXBlKGRvY3VtZW50KCkubG9hZGVyKCktPnJlc3BvbnNlTUlNRVR5cGUoKSkpCi0gICAgICAgIGJv
ZHktPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJ3
aGl0ZSIpOworICAgICAgICBib2R5LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yLCAid2hpdGUiX3MpOwogICAgIHJvb3RFbGVtZW50LT5hcHBlbmRDaGls
ZChib2R5KTsKICAgICAKICAgICBhdXRvIGltYWdlRWxlbWVudCA9IEltYWdlRG9jdW1lbnRFbGVt
ZW50OjpjcmVhdGUoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUZyYWdtZW50VVJJUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVu
dFVSSVBhcnNlci5jcHAKaW5kZXggNjQ0ZWY3Yjc1MjY3NmI1OTNlYzk3Nzg3ODgxZWZiNGZjNzEw
MTNiOS4uMDY1YTcwZGUyZGEzN2NmNzNlNjA1M2Y5NzI1ZjM4MjhiODAyMTAyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCkBAIC0xMzQsMTEg
KzEzNCwxMSBAQCB2b2lkIE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OnBhcnNlRnJhZ21lbnRzKCkK
ICAgICAgICAgLy8gICAgIG5hbWUgb3IgdmFsdWUgYXJlIG5vdCB2YWxpZCBVVEYtOCBzdHJpbmdz
LCB0aGVuIHJlbW92ZSB0aGUgbmFtZS12YWx1ZSBwYWlyIGZyb20gdGhlIGxpc3QuCiAgICAgICAg
IGJvb2wgdmFsaWRVVEY4ID0gZmFsc2U7CiAgICAgICAgIGlmICghbmFtZS5pc0VtcHR5KCkgJiYg
IXZhbHVlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbmFtZSA9IG5hbWUudXRmOChTdHJpY3RD
b252ZXJzaW9uKS5kYXRhKCk7CisgICAgICAgICAgICBuYW1lID0gU3RyaW5nIHsgbmFtZS51dGY4
KFN0cmljdENvbnZlcnNpb24pLmRhdGEoKSB9OwogICAgICAgICAgICAgdmFsaWRVVEY4ID0gIW5h
bWUuaXNFbXB0eSgpOwogCiAgICAgICAgICAgICBpZiAodmFsaWRVVEY4KSB7Ci0gICAgICAgICAg
ICAgICAgdmFsdWUgPSB2YWx1ZS51dGY4KFN0cmljdENvbnZlcnNpb24pLmRhdGEoKTsKKyAgICAg
ICAgICAgICAgICB2YWx1ZSA9IFN0cmluZyB7IHZhbHVlLnV0ZjgoU3RyaWN0Q29udmVyc2lvbiku
ZGF0YSgpIH07CiAgICAgICAgICAgICAgICAgdmFsaWRVVEY4ID0gIXZhbHVlLmlzRW1wdHkoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9QREZEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcApp
bmRleCA1OTZhNjUxODNmMWZmNzc3NTg2YTZhNjY3YzM1NGVmNGU3YjRiOGUwLi40ZTE5NDYxNmVj
ZTI1M2M5NDEyNGNmYmU3MjQ1OGFiYmJkODUzYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1BERkRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3Vt
ZW50LmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgUERGRG9jdW1lbnQ6OnNlbmRQREZBcnJh
eUJ1ZmZlcigpCiAKICAgICBhdXRvKiBmcmFtZSA9IG1faWZyYW1lLT5jb250ZW50RnJhbWUoKTsK
ICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjY2OCAtIFVzZSBwb3N0TWVzc2FnZQotICAgIGF1dG8gb3BlbkZ1bmN0aW9uID0gZnJhbWUtPnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbigiUERGSlNDb250ZW50U2NyaXB0
Lm9wZW4iKS5nZXRPYmplY3QoKTsKKyAgICBhdXRvIG9wZW5GdW5jdGlvbiA9IGZyYW1lLT5zY3Jp
cHQoKS5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oIlBERkpTQ29udGVudFNjcmlwdC5v
cGVuIl9zKS5nZXRPYmplY3QoKTsKIAogICAgIGF1dG8gZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xv
YmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKaW5k
ZXggODc1MzdlMmJiOTNlNGI2OTk5NzcwMGFmZmMxODdmNmNmNWJiZWFiNS4uNGU2OGVkNTEzY2Ez
ODE3YTcxMDY3Nzc2MjczN2JhYjNkNjA1NzU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcApAQCAtMzgsNyArMzgsNyBAQCBB
TkdMRUluc3RhbmNlZEFycmF5czo6QU5HTEVJbnN0YW5jZWRBcnJheXMoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiAj
aWYgVVNFKEFOR0xFKQotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOworICAgIGNvbnRleHQu
Z3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfaW5z
dGFuY2VkX2FycmF5cyJfcyk7CiAjZW5kaWYKIH0KIApAQCAtNTIsNyArNTIsNyBAQCBXZWJHTEV4
dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBBTkdMRUluc3RhbmNlZEFycmF5czo6Z2V0TmFtZSgpIGNv
bnN0CiBib29sIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
R0wmIGNvbnRleHQpCiB7CiAjaWYgVVNFKEFOR0xFKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKFdQRSkKLSAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVf
aW5zdGFuY2VkX2FycmF5cyIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGNvbnRleHQpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAKaW5kZXggNDZjOTYw
ZjE5MTY0YTc1ZjY4N2NhOTI2ZDRmNWY2MTE4MzAyNWFiYi4uMzRhYjEwZjdlNGFjYjFhZTUzOGQ2
MDc3ZjI0NTlkY2UxYTkxZTk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMpOwog
RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQzo6RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKKyAgICBjb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpOwogCiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9SRURfUkdUQzFfRVhUKTsK
ICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNmQwYTg3
Mjg1YTgwNjFjNTBlNjY5MTZkNTIxNDRiZWM1ZjQ0NmViZS4uMjQyMjhkM2JlNjA3NWU3ZGY1ODEw
ODliMTJmMzEwMjlmMTEwMGM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTIzOSwxMCArMjM5LDEwIEBAIHZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygp
CiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVTaGFkZXJFeHRlbnNpb25z
KCkKIHsKICAgICAvLyBGSVhNRTogdGhlc2UgYXJlIGluIHRoZSBXZWJHTCAyLjAgY29yZSBBUEkg
YW5kIHNob3VsZCBiZSByZW1vdmVkLgotICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZCgiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIik7Ci0gICAgbV9jb250ZXh0LT5lbnN1
cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIik7Ci0gICAgbV9jb250ZXh0
LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7Ci0g
ICAgbV9jb250ZXh0LT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZnJhZ19kZXB0aCIp
OworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3N0YW5kYXJk
X2Rlcml2YXRpdmVzIl9zKTsKKyAgICBtX2NvbnRleHQtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
IkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpOworICAgIG1fY29udGV4dC0+ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7CisgICAgbV9jb250ZXh0LT5l
bnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiB9CiAKIGJvb2wg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVCdWZmZXJUYXJnZXQoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSB0YXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwCmluZGV4IGJjM2Vi
ZTJkNWU3NTNiMTg5Y2E1NzJhNTRhOTFkNjJmOTE5ZGEyYTguLjE3YTdiMjRkZmYxMDY2YzM5NjFj
OTlmODNiODQxMTI1ZWIyZGYzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwCkBAIC0zOCw3ICszOCw3IEBA
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKTsK
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNv
bnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNp
b25FbmFibGVkKCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZSIpOworICAgIGNvbnRleHQu
Z3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU1EX2NvbXBy
ZXNzZWRfQVRDX3RleHR1cmUiX3MpOwogCiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09NUFJFU1NFRF9BVENfUkdCX0FNRCk7CiAgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6Q09N
UFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQpOwpAQCAtNTQsNyArNTQsNyBAQCBX
ZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpn
ZXROYW1lKCkgY29uc3QKIAogYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIik7CisgICAgcmV0
dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0
dXJlIl9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmNwcAppbmRl
eCA5MTVkYjJhZTNlNDNmZGI3OTZmMDY1MTBkNDM3MDc5NjZiOWYzNDlhLi4xNTY1YzExMjdiNWIz
MDkyMjFiMDQ0NTdjYjBiZWRkN2Q5NzkwZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmNwcApAQCAtMzgsNyAr
MzgsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUVUQyk7CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJl
RVRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVu
c2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfY29tcHJlc3NlZF90ZXh0dXJlX2V0YyIpOworICAg
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
QU5HTEVfY29tcHJlc3NlZF90ZXh0dXJlX2V0YyJfcyk7CiAKICAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1IxMV9FQUMp
OwogICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0
R0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMpOwpAQCAtNjEsNyArNjEsNyBAQCBXZWJHTEV4
dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpnZXROYW1l
KCkgY29uc3QKIAogYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDOjpzdXBwb3J0ZWQoR3Jh
cGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNF
eHRlbnNpb24oIkdMX0FOR0xFX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiKTsKKyAgICByZXR1cm4g
Y29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfY29tcHJlc3NlZF90ZXh0dXJlX2V0
YyJfcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmNwcAppbmRl
eCBhZDFiZjJmYzk4MjQ4YmYxNzcwYTNiNjE5MGIxNzA5MmY2MDgwOWI3Li44ZTFmNWViZDY3ZDlh
ODFjNjhhZTRkZmU5NzM1ZTlmMjY4M2UwOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwCkBAIC0zOCw3
ICszOCw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDMSk7CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6V2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQzEoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdM
RXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5l
bnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVy
ZSIpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZCgiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiX3MpOwogCiAgICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHRHTDo6RVRDMV9S
R0I4X09FUyk7CiB9CkBAIC01Miw3ICs1Miw3IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25O
YW1lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxOjpnZXROYW1lKCkgY29uc3QKIAogYm9vbCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBj
b250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNf
Y29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSJfcyk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCmluZGV4IDVhODQ5
OWU5ZTRjZmNiOTE4OWFjZjRmOGJmNzcwYzhlOTU0YjQ0ZTcuLjQ3YTRiNGVlZGM3N2EyMmJlYjdm
Mjk3NzE3OGI1NjQyMGViZGYwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcApAQCAtMzksNyArMzks
NyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBW
UlRDKTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4
dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+ZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsK
KyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQo
IkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIl9zKTsKIAogICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdC
X1BWUlRDXzRCUFBWMV9JTUcpOwogICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3Jt
YXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcpOwpA
QCAtNTYsNyArNTYsNyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUFZSVEM6OmdldE5hbWUoKSBjb25zdAogCiBib29sIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewot
ICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdfdGV4dHVyZV9jb21w
cmVzc2lvbl9wdnJ0YyIpOworICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyJfcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcAppbmRleCBmYTcwODExZTc1MzcwZTcyOGRlNDdjZGIx
MGE5MTg2YTNhNTAyMDljLi4yZjk4YmIyMWYyNTQ0YjM3ZWMxOTk0OGM1ZGUzYTZmNGIyOTc4ZjQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMuY3BwCkBAIC00MCw5ICs0MCw5IEBAIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogICAgIGF1dG8qIGdjZ2wg
PSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7Ci0gICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpOwotICAgIGdjZ2wtPmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIp
OwotICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29t
cHJlc3Npb25fZHh0NSIpOworICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiX3MpOworICAgIGdjZ2wtPmVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyJfcyk7CisgICAgZ2Nn
bC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQ1Il9zKTsKIAogICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQpOwogICAgIGNvbnRleHQu
YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhUKTsKQEAgLTYwLDEyICs2MCwxMiBAQCBXZWJHTEV4dGVuc2lvbjo6
RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Z2V0TmFtZSgpIGNvbnN0
CiBib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250
ZXh0R0wmIGNvbnRleHQpCiB7CiAjaWYgVVNFKEFOR0xFKQotICAgIHJldHVybiBjb250ZXh0LnN1
cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikKLSAgICAg
ICAgJiYgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVz
c2lvbl9keHQzIikKLSAgICAgICAgJiYgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5H
TEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9y
dHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiX3MpCisgICAgICAg
ICYmIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0MyJfcykKKyAgICAgICAgJiYgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5H
TEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Il9zKTsKICNlbHNlCi0gICAgcmV0dXJuIGNvbnRl
eHQuc3VwcG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKQot
ICAgICAgICB8fCBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21w
cmVzc2lvbl9keHQxIik7CisgICAgcmV0dXJuIGNvbnRleHQuc3VwcG9ydHNFeHRlbnNpb24oIkdM
X0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiX3MpCisgICAgICAgIHx8IGNvbnRleHQuc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiX3MpOwogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ3NSR0IuY3BwCmluZGV4IGY2NWY0MmFlMjJhYzczMTJl
MTI4NGRmMWNjMjFmNGU2NjAxZjY2MzkuLjQ1NmMyMDRhYmVjMjRmNDc3YTAwYTRiZTNjNTRhZjg2
NDY4NGI0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDc1JHQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmNwcApAQCAtMzgsNyArMzgsNyBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdC
KTsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjo6V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVENzUkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJH
TEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19z
cmdiIik7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25F
bmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IiX3MpOwogICAgIGNv
bnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBS
RVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUKTsKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19E
WFQxX0VYVCk7CiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHcmFwaGlj
c0NvbnRleHRHTDo6Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQpOwpAQCAtNTQs
NyArNTQsNyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQ3NSR0I6OmdldE5hbWUoKSBjb25zdAogCiBib29sIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDc1JHQjo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewot
ICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21w
cmVzc2lvbl9zM3RjX3NyZ2IiKTsKKyAgICByZXR1cm4gY29udGV4dC5zdXBwb3J0c0V4dGVuc2lv
bigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiIl9zKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEZWJ1Z1NoYWRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZWJ1Z1NoYWRlcnMuY3BwCmluZGV4IGE2OWRhMjkwMzg0MTYxNjA4NzlkNzhiOGJmY2FlMDdkMGQ0
NTc1YTkuLjNjOTRlMjk1N2NjNTlkYzMwMWM3NzIzOTlhYzkyYjAwMWY3MGI5N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMRGVidWdTaGFkZXJz
KTsKIFdlYkdMRGVidWdTaGFkZXJzOjpXZWJHTERlYnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAg
ICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdM
X0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpOworICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlIl9zKTsKIH0KIAogV2ViR0xEZWJ1Z1NoYWRlcnM6On5XZWJHTERlYnVnU2hh
ZGVycygpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVwdGhUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RGVwdGhUZXh0dXJlLmNwcAppbmRleCA5MTU2M2JjYWUyZjExODkxMjRjZjVjOGYzNmZmMzJhOTNm
NTU4MGEwLi5lOGEyODQ5OWYyOWRiMjczNzQ4NGI4MGZlZjZiYzdjODdkYzZlOTQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCkBAIC0z
OSw4ICszOSw4IEBAIFdlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZShXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKICAgICBhdXRvKiBnY2dsID0gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpOwotICAg
IGdjZ2wtPmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19kZXB0aF90ZXh0dXJlIik7Ci0g
ICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsK
KyAgICBnY2dsLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSJf
cyk7CisgICAgZ2NnbC0+ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQVJCX2RlcHRoX3RleHR1
cmUiX3MpOwogfQogCiBXZWJHTERlcHRoVGV4dHVyZTo6fldlYkdMRGVwdGhUZXh0dXJlKCkgPSBk
ZWZhdWx0OwpAQCAtNTIsOCArNTIsOCBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBX
ZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJvb2wgV2ViR0xEZXB0aFRleHR1
cmU6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4g
Y29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2RlcHRoX3RleHR1cmUiKQotICAgICAg
ICB8fCBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOwor
ICAgIHJldHVybiBjb250ZXh0LnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfZGVwdGhfdGV4dHVy
ZSJfcykKKyAgICAgICAgfHwgY29udGV4dC5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX2RlcHRo
X3RleHR1cmUiX3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCmluZGV4IDA2NzBhNDc2NDJi
ZmJmZWNiZGVmNTYzNzhhMmJlYjViMThjOTVjYmMuLjliMTRkOGYyOGNiNWQ3NTRlMjEyNjc3ODY2
ZTZjNjg4ZDkxOTVhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRHJhd0J1ZmZlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RHJhd0J1ZmZlcnMuY3BwCkBAIC0zNyw3ICszNyw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChXZWJHTERyYXdCdWZmZXJzKTsKIFdlYkdMRHJhd0J1ZmZlcnM6OldlYkdMRHJhd0J1ZmZl
cnMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5z
aW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5lbnN1cmVF
eHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIik7CisgICAgY29udGV4dC5ncmFw
aGljc0NvbnRleHRHTCgpLT5lbnN1cmVFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19idWZm
ZXJzIl9zKTsKIH0KIAogV2ViR0xEcmF3QnVmZmVyczo6fldlYkdMRHJhd0J1ZmZlcnMoKSA9IGRl
ZmF1bHQ7CkBAIC01MCw5ICs1MCw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdl
YkdMRHJhd0J1ZmZlcnM6OmdldE5hbWUoKSBjb25zdAogYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpz
dXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKIHsKICNpZiBVU0Uo
QU5HTEUpCi0gICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+c3VwcG9ydHNF
eHRlbnNpb24oIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICByZXR1cm4gY29udGV4dC5ncmFw
aGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2RyYXdfYnVmZmVycyJf
cyk7CiAjZWxzZQotICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPnN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9FWFRfZHJhd19idWZmZXJzIikKKyAgICByZXR1cm4gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX2RyYXdfYnVmZmVy
cyJfcykKICAgICAgICAgJiYgc2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoY29udGV4dCk7CiAj
ZW5kaWYKIH0KQEAgLTEwNiwxMCArMTA2LDEwIEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0
aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgd2ViCiAg
ICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZF
UiwgZmJvKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnVmZmVyWzRdID0geyAwLCAwLCAw
LCAwIH07IC8vIHRleHR1cmVzIGFyZSByZXF1aXJlZCB0byBiZSBpbml0aWFsaXplZCBmb3Igb3Ro
ZXIgcG9ydHMuCi0gICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+c3VwcG9ydHNFeHRl
bnNpb24oIkdMX09FU19kZXB0aF90ZXh0dXJlIikKLSAgICAgICAgfHwgY29udGV4dC0+c3VwcG9y
dHNFeHRlbnNpb24oIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7Ci0gICAgYm9vbCBzdXBwb3J0c0Rl
cHRoU3RlbmNpbCA9IChjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfRVhUX3BhY2tlZF9k
ZXB0aF9zdGVuY2lsIikKLSAgICAgICAgfHwgY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdM
X09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKTsKKyAgICBib29sIHN1cHBvcnRzRGVwdGggPSBj
b250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX2RlcHRoX3RleHR1cmUiX3MpCisgICAg
ICAgIHx8IGNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSJf
cyk7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoU3RlbmNpbCA9IChjb250ZXh0LT5zdXBwb3J0c0V4
dGVuc2lvbigiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKQorICAgICAgICB8fCBjb250
ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKSk7
CiAgICAgUGxhdGZvcm1HTE9iamVjdCBkZXB0aFN0ZW5jaWwgPSAwOwogICAgIGlmIChzdXBwb3J0
c0RlcHRoU3RlbmNpbCkgewogICAgICAgICBkZXB0aFN0ZW5jaWwgPSBjb250ZXh0LT5jcmVhdGVU
ZXh0dXJlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGU2OWY5NjFjN2NiMmExYmZjMjNkY2NiOTg0
YzMzM2RlYjRhMTRjNDMuLjhhY2ZjMDczY2ZmNTQ2OTliMjc1OGNjNTdjYzg1NDFiNTZiNmExMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC04NTUsNyArODU1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0
ZShDYW4KICAgICAgICAgLy8gcGFydGljdWxhciwgaWYgV2ViR0wgY29udGV4dHMgd2VyZSBsb3N0
IG9uZSBvciBtb3JlIHRpbWVzIHZpYSB0aGUgR0xfQVJCX3JvYnVzdG5lc3MgZXh0ZW5zaW9uLgog
ICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hbGxvd1dlYkdMKGZyYW1lLT5z
ZXR0aW5ncygpLndlYkdMRW5hYmxlZCgpKSkgewogICAgICAgICAgICAgY2FudmFzRWxlbWVudC0+
ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJn
bGNvbnRleHRjcmVhdGlvbmVycm9yRXZlbnQsCi0gICAgICAgICAgICAgICAgRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgIldlYiBwYWdlIHdhcyBub3QgYWxs
b3dlZCB0byBjcmVhdGUgYSBXZWJHTCBjb250ZXh0LiIpKTsKKyAgICAgICAgICAgICAgICBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCAiV2ViIHBhZ2Ugd2Fz
IG5vdCBhbGxvd2VkIHRvIGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIl9zKSk7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCkBAIC05MjQsNyArOTI0LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmNyZWF0ZShDYW4KICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgaWYgKGNhbnZh
c0VsZW1lbnQpIHsKICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQtPmRpc3BhdGNoRXZlbnQoV2Vi
R0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250ZXh0Y3JlYXRpb25l
cnJvckV2ZW50LAotICAgICAgICAgICAgICAgIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpZZXMsICJDb3VsZCBub3QgY3JlYXRlIGEgV2ViR0wgY29udGV4dC4iKSk7
CisgICAgICAgICAgICAgICAgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6OlllcywgIkNvdWxkIG5vdCBjcmVhdGUgYSBXZWJHTCBjb250ZXh0LiJfcykpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTExNDMsMTcgKzExNDMsMTcg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKCkKICAgICAvLyB0
dXJuaW5nIGl0IG9mZiBjYXVzZXMgcHJvYmxlbXMuCiAgICAgbV9pc0dMRVMyQ29tcGxpYW50ID0g
bV9jb250ZXh0LT5pc0dMRVMyQ29tcGxpYW50KCk7CiAgICAgaWYgKG1faXNHTEVTMkNvbXBsaWFu
dCkgewotICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+aXNFeHRlbnNp
b25FbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7Ci0gICAgICAgIG1faXNEZXB0aFN0ZW5j
aWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3BhY2tl
ZF9kZXB0aF9zdGVuY2lsIikgfHwgbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0FO
R0xFX2RlcHRoX3RleHR1cmUiKTsKKyAgICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2Nv
bnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfbnBvdCJfcyk7CisgICAg
ICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5h
YmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKSB8fCBtX2NvbnRleHQtPmlzRXh0
ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSJfcyk7CiAgICAgfSBlbHNlIHsK
ICNpZiBVU0UoQU5HTEUpCiAgICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSB0cnVlOwogI2Vs
c2UKLSAgICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2NvbnRleHQtPmlzRXh0ZW5zaW9u
RW5hYmxlZCgiR0xfQVJCX3RleHR1cmVfbm9uX3Bvd2VyX29mX3R3byIpOworICAgICAgICBtX2lz
R0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9BUkJf
dGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdvIl9zKTsKICNlbmRpZgotICAgICAgICBtX2lzRGVwdGhT
dGVuY2lsU3VwcG9ydGVkID0gbV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpIHx8IG1fY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJH
TF9BTkdMRV9kZXB0aF90ZXh0dXJlIik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0
ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIl9zKSB8fCBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZGVw
dGhfdGV4dHVyZSJfcyk7CiAgICAgfQotICAgIG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkID0g
bV9jb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIik7CisgICAg
bV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfRVhUX3JvYnVzdG5lc3MiX3MpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdDR0xlbnVtIGZvcm1hdCkKQEAgLTMw
NjcsNyArMzA2Nyw3IEBAIFJlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtCiAgICAgLy8gRklYTUU6IERv
IHdlIHN0aWxsIG5lZWQgdGhpcyBmb3IgdGhlIEFOR0xFIGJhY2tlbmQ/CiAgICAgaWYgKCFpc0dM
RVMyQ29tcGxpYW50KCkpCiAgICAgICAgIGlmIChpbmZvLnNpemUgPiAxICYmICFpbmZvLm5hbWUu
ZW5kc1dpdGgoIlswXSIpKQotICAgICAgICAgICAgaW5mby5uYW1lLmFwcGVuZCgiWzBdIik7Cisg
ICAgICAgICAgICBpbmZvLm5hbWUuYXBwZW5kKCJbMF0iX3MpOwogCiAgICAgTE9HKFdlYkdMLCAi
UmV0dXJuaW5nIGFjdGl2ZSB1bmlmb3JtICVkOiAlcyIsIGluZGV4LCBpbmZvLm5hbWUudXRmOCgp
LmRhdGEoKSk7CiAKQEAgLTU2MTcsMTcgKzU2MTcsMTcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmEKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphZGRFeHRlbnNpb25TdXBwb3J0
ZWRGb3JtYXRzQW5kVHlwZXMoKQogewotICAgIGlmICghbV9hcmVPRVNUZXh0dXJlRmxvYXRGb3Jt
YXRzQW5kVHlwZXNBZGRlZCAmJiBleHRlbnNpb25Jc0VuYWJsZWQoIk9FU190ZXh0dXJlX2Zsb2F0
IikpIHsKKyAgICBpZiAoIW1fYXJlT0VTVGV4dHVyZUZsb2F0Rm9ybWF0c0FuZFR5cGVzQWRkZWQg
JiYgZXh0ZW5zaW9uSXNFbmFibGVkKCJPRVNfdGV4dHVyZV9mbG9hdCJfcykpIHsKICAgICAgICAg
QUREX1ZBTFVFU19UT19TRVQobV9zdXBwb3J0ZWRUZXhJbWFnZVNvdXJjZVR5cGVzLCBTdXBwb3J0
ZWRUeXBlc09FU1RleHR1cmVGbG9hdCk7CiAgICAgICAgIG1fYXJlT0VTVGV4dHVyZUZsb2F0Rm9y
bWF0c0FuZFR5cGVzQWRkZWQgPSB0cnVlOwogICAgIH0KIAotICAgIGlmICghbV9hcmVPRVNUZXh0
dXJlSGFsZkZsb2F0Rm9ybWF0c0FuZFR5cGVzQWRkZWQgJiYgZXh0ZW5zaW9uSXNFbmFibGVkKCJP
RVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikpIHsKKyAgICBpZiAoIW1fYXJlT0VTVGV4dHVyZUhhbGZG
bG9hdEZvcm1hdHNBbmRUeXBlc0FkZGVkICYmIGV4dGVuc2lvbklzRW5hYmxlZCgiT0VTX3RleHR1
cmVfaGFsZl9mbG9hdCJfcykpIHsKICAgICAgICAgQUREX1ZBTFVFU19UT19TRVQobV9zdXBwb3J0
ZWRUZXhJbWFnZVNvdXJjZVR5cGVzLCBTdXBwb3J0ZWRUeXBlc09FU1RleHR1cmVIYWxmRmxvYXQp
OwogICAgICAgICBtX2FyZU9FU1RleHR1cmVIYWxmRmxvYXRGb3JtYXRzQW5kVHlwZXNBZGRlZCA9
IHRydWU7CiAgICAgfQogCi0gICAgaWYgKCFtX2FyZUVYVHNSR0JGb3JtYXRzQW5kVHlwZXNBZGRl
ZCAmJiBleHRlbnNpb25Jc0VuYWJsZWQoIkVYVF9zUkdCIikpIHsKKyAgICBpZiAoIW1fYXJlRVhU
c1JHQkZvcm1hdHNBbmRUeXBlc0FkZGVkICYmIGV4dGVuc2lvbklzRW5hYmxlZCgiRVhUX3NSR0Ii
X3MpKSB7CiAgICAgICAgIEFERF9WQUxVRVNfVE9fU0VUKG1fc3VwcG9ydGVkVGV4SW1hZ2VTb3Vy
Y2VJbnRlcm5hbEZvcm1hdHMsIFN1cHBvcnRlZEludGVybmFsRm9ybWF0c0VYVHNSR0IpOwogICAg
ICAgICBBRERfVkFMVUVTX1RPX1NFVChtX3N1cHBvcnRlZFRleEltYWdlU291cmNlRm9ybWF0cywg
U3VwcG9ydGVkRm9ybWF0c0VYVHNSR0IpOwogICAgICAgICBtX2FyZUVYVHNSR0JGb3JtYXRzQW5k
VHlwZXNBZGRlZCA9IHRydWU7CkBAIC02NDUyLDcgKzY0NTIsNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6Omxvc2VDb250ZXh0SW1wbChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpMb3N0QwogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAobW9kZSA9PSBSZWFsTG9zdENvbnRleHQpCi0gICAgICAgIHByaW50VG9Db25zb2xlKE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsICJXZWJHTDogY29udGV4dCBsb3N0LiIpOworICAgICAgICBwcmludFRv
Q29uc29sZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6IGNvbnRleHQgbG9zdC4iX3MpOwog
CiAgICAgbV9jb250ZXh0TG9zdFN0YXRlID0gQ29udGV4dExvc3RTdGF0ZSB7IG1vZGUgfTsKICAg
ICBtX2NvbnRleHRMb3N0U3RhdGUtPmVycm9ycy5hZGQoR3JhcGhpY3NDb250ZXh0R0w6OkNPTlRF
WFRfTE9TVF9XRUJHTCk7CkBAIC03MzI4LDcgKzczMjgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3Ry
aW5nJgogCiAgICAgLS1tX251bUdMRXJyb3JzVG9Db25zb2xlQWxsb3dlZDsKICAgICBpZiAoIW1f
bnVtR0xFcnJvcnNUb0NvbnNvbGVBbGxvd2VkKQotICAgICAgICBwcmludFRvQ29uc29sZShNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsICJXZWJHTDogdG9vIG1hbnkgZXJyb3JzLCBubyBtb3JlIGVycm9y
cyB3aWxsIGJlIHJlcG9ydGVkIHRvIHRoZSBjb25zb2xlIGZvciB0aGlzIGNvbnRleHQuIik7Cisg
ICAgICAgIHByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIldlYkdMOiB0b28g
bWFueSBlcnJvcnMsIG5vIG1vcmUgZXJyb3JzIHdpbGwgYmUgcmVwb3J0ZWQgdG8gdGhlIGNvbnNv
bGUgZm9yIHRoaXMgY29udGV4dC4iX3MpOwogfQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZhbGlkYXRlRnJhbWVidWZmZXJUYXJnZXQoR0NHTGVudW0gdGFyZ2V0KQpAQCAtNzc3
OCw3ICs3Nzc4LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3Rv
cmVDb250ZXh0KCkKICAgICAgICAgaWYgKG1fY29udGV4dExvc3RTdGF0ZS0+bW9kZSA9PSBSZWFs
TG9zdENvbnRleHQpCiAgICAgICAgICAgICBtX3Jlc3RvcmVUaW1lci5zdGFydE9uZVNob3Qoc2Vj
b25kc0JldHdlZW5SZXN0b3JlQXR0ZW1wdHMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBw
cmludFRvQ29uc29sZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6IGVycm9yIHJlc3Rvcmlu
ZyBsb3N0IGNvbnRleHQuIik7CisgICAgICAgICAgICBwcmludFRvQ29uc29sZShNZXNzYWdlTGV2
ZWw6OkVycm9yLCAiV2ViR0w6IGVycm9yIHJlc3RvcmluZyBsb3N0IGNvbnRleHQuIl9zKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODE0Myw3ICs4MTQzLDcgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpmb3JjZUNvbnRleHRMb3N0KCkKIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpyZWN5Y2xlQ29udGV4dCgpCiB7Ci0gICAgcHJpbnRUb0NvbnNvbGUo
TWVzc2FnZUxldmVsOjpFcnJvciwgIlRoZXJlIGFyZSB0b28gbWFueSBhY3RpdmUgV2ViR0wgY29u
dGV4dHMgb24gdGhpcyBwYWdlLCB0aGUgb2xkZXN0IGNvbnRleHQgd2lsbCBiZSBsb3N0LiIpOwor
ICAgIHByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJUaGVyZSBhcmUgdG9vIG1h
bnkgYWN0aXZlIFdlYkdMIGNvbnRleHRzIG9uIHRoaXMgcGFnZSwgdGhlIG9sZGVzdCBjb250ZXh0
IHdpbGwgYmUgbG9zdC4iX3MpOwogICAgIC8vIFVzaW5nIFN5bnRoZXRpY0xvc3RDb250ZXh0IG1l
YW5zIHRoZSBkZXZlbG9wZXIgd29uJ3QgYmUgYWJsZSB0byBmb3JjZSB0aGUgcmVzdG9yYXRpb24K
ICAgICAvLyBvZiB0aGUgY29udGV4dCBieSBjYWxsaW5nIHByZXZlbnREZWZhdWx0KCkgaW4gYSAi
d2ViZ2xjb250ZXh0bG9zdCIgZXZlbnQgaGFuZGxlci4KICAgICBmb3JjZUxvc3RDb250ZXh0KFN5
bnRoZXRpY0xvc3RDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NT
U1ByZWxvYWRTY2FubmVyLmNwcAppbmRleCBmOWVlZmM1MzJhNTQ4ZmU1M2IzNjczYWZjMjBmMjY5
MTY1MDJlNWYzLi5hODU0ODUyMDkxMThkZDMzMTk2YjMzYWQ0MDJhYjc3NjZlY2Q0NzAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCkBA
IC0yMjksNyArMjI5LDcgQEAgdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6ZW1pdFJ1bGUoKQogICAg
ICAgICBpZiAoIXVybC5pc0VtcHR5KCkgJiYgaGFzVmFsaWRJbXBvcnRDb25kaXRpb25zKGNvbmRp
dGlvbnMpKSB7CiAgICAgICAgICAgICBVUkwgYmFzZUVsZW1lbnRVUkw7IC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBiZSBwYXNzZWQgaW4gZnJvbSB0aGUgSFRNTFByZWxvYWRTY2FubmVyIHZpYSBzY2Fu
KCk6IHdpdGhvdXQgaXQgd2Ugd2lsbCBnZXQgcmVsYXRpdmUgVVJMcyB3cm9uZy4KICAgICAgICAg
ICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSBpbmNsdWRpbmcgdGhlIGNoYXJzZXQgaW4gdGhl
IHByZWxvYWQgcmVxdWVzdD8KLSAgICAgICAgICAgIG1fcmVxdWVzdHMtPmFwcGVuZChtYWtlVW5p
cXVlPFByZWxvYWRSZXF1ZXN0PigiY3NzIiwgdXJsLCBiYXNlRWxlbWVudFVSTCwgQ2FjaGVkUmVz
b3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQsIFN0cmluZygpLCBQcmVsb2FkUmVxdWVzdDo6TW9k
dWxlU2NyaXB0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKSk7CisgICAgICAgICAg
ICBtX3JlcXVlc3RzLT5hcHBlbmQobWFrZVVuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oImNzcyJfcywg
dXJsLCBiYXNlRWxlbWVudFVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQs
IFN0cmluZygpLCBQcmVsb2FkUmVxdWVzdDo6TW9kdWxlU2NyaXB0OjpObywgUmVmZXJyZXJQb2xp
Y3k6OkVtcHR5U3RyaW5nKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9zdGF0ZSA9IEluaXRpYWw7
CiAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShydWxlLCAiY2hh
cnNldCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
cklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcAppbmRleCA5ZDZhNmNjYWRlMGI0ZDVlYTQwMDJiNTIyY2ZmYmQ0MTNmMDU2ZTFlLi42MWM2
YTdiMzRhOTU0NGM4M2Q5ZDdlZjUwMTBjNDdmYjY5MjdkYWIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtODAsNyArODAsNyBAQCBT
dHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShjb25zdCBEZWNpbWFsJiBudW1iZXIpCiB7CiAg
ICAgaWYgKG51bWJlci5pc1plcm8oKSkgewogICAgICAgICAvLyBEZWNpbWFsOjp0b1N0cmluZyBh
cHBlbmRzIGV4cG9uZW50LCBlLmcuICIwZS0xOCIKLSAgICAgICAgcmV0dXJuIG51bWJlci5pc05l
Z2F0aXZlKCkgPyAiLTAiIDogIjAiOworICAgICAgICByZXR1cm4gbnVtYmVyLmlzTmVnYXRpdmUo
KSA/ICItMCJfcyA6ICIwIl9zOwogICAgIH0KICAgICByZXR1cm4gbnVtYmVyLnRvU3RyaW5nKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNj
YW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVy
LmNwcAppbmRleCAyODk2MjhhZWE4OTViYjI4Y2QwNjMyNjViNWU0NWI2NTNhNTA1OGY1Li4wYTI3
MWVmZWRiYzZlZDQyZmIzNDVmYWZlYmJkZWNiN2I2MWNhNzk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTc3LDcgKzc3LDcg
QEAgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6VGFnSWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6dGFnSWRG
b3IoY29uc3QgSFRNTFRva2VuOjpEYXRhVmUKICAgICByZXR1cm4gVGFnSWQ6OlVua25vd247CiB9
CiAKLVN0cmluZyBUb2tlblByZWxvYWRTY2FubmVyOjppbml0aWF0b3JGb3IoVGFnSWQgdGFnSWQp
CitBU0NJSUxpdGVyYWwgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6aW5pdGlhdG9yRm9yKFRhZ0lkIHRh
Z0lkKQogewogICAgIHN3aXRjaCAodGFnSWQpIHsKICAgICBjYXNlIFRhZ0lkOjpTb3VyY2U6CkBA
IC0yMzgsNyArMjM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBhdXRvIG1lZGlhU2V0
ID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKGF0dHJpYnV0ZVZhbHVlLCBNZWRpYVF1ZXJ5UGFyc2Vy
Q29udGV4dChtX2RvY3VtZW50KSk7CiAgICAgICAgICAgICAgICAgUmVmUHRyIGRvY3VtZW50RWxl
bWVudCA9IG1fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgICAgICAgICAgICAgTE9H
KE1lZGlhUXVlcmllcywgIkhUTUxQcmVsb2FkU2Nhbm5lciAlcCBwcm9jZXNzQXR0cmlidXRlIGV2
YWx1YXRpbmcgbWVkaWEgcXVlcmllcyIsIHRoaXMpOwotICAgICAgICAgICAgICAgIG1fbWVkaWFN
YXRjaGVkID0gTWVkaWFRdWVyeUV2YWx1YXRvciB7IG1fZG9jdW1lbnQucHJpbnRpbmcoKSA/ICJw
cmludCIgOiAic2NyZWVuIiwgbV9kb2N1bWVudCwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRF
bGVtZW50LT5jb21wdXRlZFN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFTZXQuZ2V0
KCkpOworICAgICAgICAgICAgICAgIG1fbWVkaWFNYXRjaGVkID0gTWVkaWFRdWVyeUV2YWx1YXRv
ciB7IG1fZG9jdW1lbnQucHJpbnRpbmcoKSA/ICJwcmludCJfcyA6ICJzY3JlZW4iX3MsIG1fZG9j
dW1lbnQsIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgp
IDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhU2V0LmdldCgpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCB0eXBlQXR0cikgJiYgbV90eXBlQXR0
cmlidXRlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gd2hlbiBtdWx0aXBsZSB0eXBl
IGF0dHJpYnV0ZXMgcHJlc2VudDogZmlyc3QgdmFsdWUgd2lucywgaWdub3JlIHN1YnNlcXVlbnQg
KHRvIG1hdGNoIEltYWdlRWxlbWVudCBwYXJzZXIgYW5kIEJsaW5rIGJlaGF2aW91cnMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oCmluZGV4IDM5
YzcwNDhjYjE4ZTI0ZTRmZWMzYWZlNjJiNGQ5ZjU3NWNjMGYzNDguLjU3NjExYmQ2ZmNhMTkyNGI0
NGY1YjhjMTJlODRiZWEzMjIwMTFiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAKICAg
ICBzdGF0aWMgVGFnSWQgdGFnSWRGb3IoY29uc3QgSFRNTFRva2VuOjpEYXRhVmVjdG9yJik7CiAK
LSAgICBzdGF0aWMgU3RyaW5nIGluaXRpYXRvckZvcihUYWdJZCk7CisgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCBpbml0aWF0b3JGb3IoVGFnSWQpOwogCiAgICAgdm9pZCB1cGRhdGVQcmVkaWN0ZWRC
YXNlVVJMKGNvbnN0IEhUTUxUb2tlbiYsIGJvb2wgc2hvdWxkUmVzdHJpY3RCYXNlVVJMU2NoZW1l
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJj
ZVByZWxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJl
bG9hZGVyLmgKaW5kZXggOWM0NDYxODkxMzZiMWM1MThkOGVkOWMxN2Q5NzU2OGRiZmUzMWU3My4u
OGRhZjkzNDNhYzBiODVhZTZlMWY2MWZkMzQyZTQyOTViZGNiZGJmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmgKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgICAgICBZZXMsCiAgICAgICAgIE5vLAogICAgIH07Ci0gICAg
UHJlbG9hZFJlcXVlc3QoY29uc3QgU3RyaW5nJiBpbml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VVUkwsIGNvbnN0IFVSTCYgYmFzZVVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgcmVzb3Vy
Y2VUeXBlLCBjb25zdCBTdHJpbmcmIG1lZGlhQXR0cmlidXRlLCBNb2R1bGVTY3JpcHQgbW9kdWxl
U2NyaXB0LCBjb25zdCBSZWZlcnJlclBvbGljeSYgcmVmZXJyZXJQb2xpY3kpCisgICAgUHJlbG9h
ZFJlcXVlc3QoQVNDSUlMaXRlcmFsIGluaXRpYXRvciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVS
TCwgY29uc3QgVVJMJiBiYXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUs
IGNvbnN0IFN0cmluZyYgbWVkaWFBdHRyaWJ1dGUsIE1vZHVsZVNjcmlwdCBtb2R1bGVTY3JpcHQs
IGNvbnN0IFJlZmVycmVyUG9saWN5JiByZWZlcnJlclBvbGljeSkKICAgICAgICAgOiBtX2luaXRp
YXRvcihpbml0aWF0b3IpCiAgICAgICAgICwgbV9yZXNvdXJjZVVSTChyZXNvdXJjZVVSTCkKICAg
ICAgICAgLCBtX2Jhc2VVUkwoYmFzZVVSTC5pc29sYXRlZENvcHkoKSkKQEAgLTYxLDcgKzYxLDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBVUkwgY29tcGxldGVVUkwoRG9jdW1lbnQmKTsKIAot
ICAgIFN0cmluZyBtX2luaXRpYXRvcjsKKyAgICBBU0NJSUxpdGVyYWwgbV9pbml0aWF0b3I7CiAg
ICAgU3RyaW5nIG1fcmVzb3VyY2VVUkw7CiAgICAgVVJMIG1fYmFzZVVSTDsKICAgICBTdHJpbmcg
bV9jaGFyc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmlu
ZGV4IDE5ZmM4NWNkODk3YTdjZWFkYjQxZDUwMjVhNzlhYjkyODc3ZGYxNmEuLmJjZjhlMTcyYTY3
MzIwZjY2ODgxMjA3NDc5ZGY3YTgwYWJhYzE3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgdm9pZCByZW1v
dmVQc2V1ZG9BdHRyaWJ1dGVzKE5vZGUmIG5vZGUpCiBFeGNlcHRpb25PcjxSZWY8VGV4dFRyYWNr
Q3VlPj4gVGV4dFRyYWNrQ3VlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBkb3VibGUgc3Rh
cnQsIGRvdWJsZSBlbmQsIERvY3VtZW50RnJhZ21lbnQmIGN1ZUZyYWdtZW50KQogewogICAgIGlm
ICghY3VlRnJhZ21lbnQuZmlyc3RDaGlsZCgpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZE5vZGVUeXBlRXJyb3IsICJFbXB0eSBjdWUgZnJhZ21lbnQiIH07CisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkTm9kZVR5cGVFcnJvciwgIkVtcHR5IGN1ZSBmcmFnbWVu
dCJfcyB9OwogCiAgICAgZm9yIChOb2RlKiBub2RlID0gY3VlRnJhZ21lbnQuZmlyc3RDaGlsZCgp
OyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBhdXRvIHJlc3Vs
dCA9IGNoZWNrRm9ySW52YWxpZE5vZGVUeXBlcygqbm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcAppbmRleCA1ZTU4Yzc5NzRjMzkx
YjhmZDVhYWUzMDVmNTRkOTFhZTljZDA2YzE2Li40ZWQwZmNhNDU5ZmNmMjAzNjY1MjM1M2VlYWU1
MjQ3NTIyNjA3ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZUdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlR2VuZXJpYy5jcHAKQEAgLTEyMiwxMCArMTIyLDEwIEBAIHZvaWQgVGV4dFRyYWNrQ3Vl
R2VuZXJpY0JveEVsZW1lbnQ6OmFwcGx5Q1NTUHJvcGVydGllcyhjb25zdCBJbnRTaXplJiB2aWRl
b1NpemUpCiAgICAgICAgIG1heFNpemUgPSAxMDAuMCAtIHRleHRQb3NpdGlvbjsKIAogICAgIGlm
IChjdWUtPmdldFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBWVFRDdWU6Okhvcml6b250YWwpIHsKLSAg
ICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1pbldpZHRoLCAibWluLWNv
bnRlbnQiKTsKKyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1pbldp
ZHRoLCAibWluLWNvbnRlbnQiX3MpOwogICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5TWF4V2lkdGgsIG1heFNpemUsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eU1pbkhlaWdodCwgIm1pbi1jb250ZW50Iik7CisgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlNaW5IZWlnaHQsICJtaW4tY29udGVudCJfcyk7CiAgICAgICAgIHNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhIZWlnaHQsIG1heFNpemUsIENTU1VuaXRU
eXBlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1
ZS5jcHAKaW5kZXggYjliZGM5M2UyN2UxMjg5ZDU4MzA0NDFjYmNjMjNhZWI3MDljM2NlMC4uZTcz
ZGNjYTIzOGRhOGNhYWFjZTdmNTkwMTNjZjZjYTczMDM2OWVkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVlRUQ3VlLmNwcApAQCAtMjE4LDE0ICsyMTgsMTQgQEAgdm9pZCBWVFRDdWVCb3g6OmFw
cGx5Q1NTUHJvcGVydGllcyhjb25zdCBJbnRTaXplJiB2aWRlb1NpemUpCiAgICAgaWYgKGN1ZS0+
dmVydGljYWwoKSA9PSBob3Jpem9udGFsS2V5d29yZCgpKSB7CiAgICAgICAgIHNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgbmV3Q3VlU2l6ZSwgQ1NTVW5pdFR5cGU6OkNT
U19QRVJDRU5UQUdFKTsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUhlaWdodCwgQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eU1pbldpZHRoLCAibWluLWNvbnRlbnQiKTsKKyAgICAgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1pbldpZHRoLCAibWluLWNvbnRlbnQiX3MpOwogICAgICAg
ICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWF4V2lkdGgsIG1heFNpemUsIENT
U1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIGlmICgoYWxpZ25tZW50ID09IENT
U1ZhbHVlTWlkZGxlIHx8IGFsaWdubWVudCA9PSBDU1NWYWx1ZUNlbnRlcikgJiYgbXVsdGlwbGll
ciAhPSAxLjAgJiYgcG9zaXRpb24uZmlyc3QpCiAgICAgICAgICAgICBzZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgc3RhdGljX2Nhc3Q8ZG91YmxlPigqcG9zaXRpb24uZmly
c3QgLSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NTU2l6ZSgpKSAvIDIpLCBDU1NVbml0VHlwZTo6
Q1NTX1BFUkNFTlRBR0UpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgQ1NTVmFsdWVBdXRvKTsKICAgICAgICAgc2V0SW5saW5l
U3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgbmV3Q3VlU2l6ZSwgQ1NTVW5pdFR5cGU6
OkNTU19QRVJDRU5UQUdFKTsKLSAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eU1pbkhlaWdodCwgIm1pbi1jb250ZW50Iik7CisgICAgICAgIHNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlNaW5IZWlnaHQsICJtaW4tY29udGVudCJfcyk7CiAgICAgICAgIHNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhIZWlnaHQsIG1heFNpemUsIENTU1Vu
aXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIGlmICgoYWxpZ25tZW50ID09IENTU1Zh
bHVlTWlkZGxlIHx8IGFsaWdubWVudCA9PSBDU1NWYWx1ZUNlbnRlcikgJiYgbXVsdGlwbGllciAh
PSAxLjAgJiYgcG9zaXRpb24uc2Vjb25kKQogICAgICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVRvcCwgc3RhdGljX2Nhc3Q8ZG91YmxlPigqcG9zaXRpb24uc2Vjb25k
IC0gKG5ld0N1ZVNpemUgLSBjdWUtPmdldENTU1NpemUoKSkgLyAyKSwgQ1NTVW5pdFR5cGU6OkNT
U19QRVJDRU5UQUdFKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNw
cAppbmRleCAwNjkxMjczYTRhMDgzMGFkN2ZlMzE0Yzg1NjdiZDRmZmJhZWZhMmIwLi45ZjVkYTUx
YmU3OGZkYWE2MWI3ZTUwOTU4MzQ1ZGY0M2I1ZjBiZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgV2ViVlRUUGFy
c2VyOjpwYXJzZUZsb2F0UGVyY2VudGFnZVZhbHVlUGFpcihWVFRTY2FubmVyJiB2YWx1ZVNjYW5u
ZXIsIGNoYXIKIAogV2ViVlRUUGFyc2VyOjpXZWJWVFRQYXJzZXIoV2ViVlRUUGFyc2VyQ2xpZW50
JiBjbGllbnQsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQp
Ci0gICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWlu
IiwgUEFMOjpVVEY4RW5jb2RpbmcoKSkpCisgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCBQQUw6OlVURjhFbmNvZGluZygpKSkKICAgICAs
IG1fY2xpZW50KGNsaWVudCkKIHsKIH0KQEAgLTcwOCw3ICs3MDgsNyBAQCB2b2lkIFdlYlZUVFRy
ZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50JiBkb2N1bWVudCkKICAg
ICAgICAgU3RyaW5nIGNoYXJhY3RlcnNTdHJpbmcgPSBtX3Rva2VuLmNoYXJhY3RlcnMoKTsKICAg
ICAgICAgTWVkaWFUaW1lIHBhcnNlZFRpbWVTdGFtcDsKICAgICAgICAgaWYgKFdlYlZUVFBhcnNl
cjo6Y29sbGVjdFRpbWVTdGFtcChjaGFyYWN0ZXJzU3RyaW5nLCBwYXJzZWRUaW1lU3RhbXApKQot
ICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQoUHJvY2Vzc2luZ0lu
c3RydWN0aW9uOjpjcmVhdGUoZG9jdW1lbnQsICJ0aW1lc3RhbXAiLCBjaGFyYWN0ZXJzU3RyaW5n
KSk7CisgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZChQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb246OmNyZWF0ZShkb2N1bWVudCwgInRpbWVzdGFtcCJfcywgY2hhcmFjdGVy
c1N0cmluZykpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMzA5M2Y5YzkyMDMxMjQ5ZGE5Y2M5NGMzMmRlODkxNWMy
Y2I3OTU5MC4uNmFhNjEyNmRkN2NhYzY4MDExN2IyNzdiNDRhNmMxODZlYzM3MDUzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTE5OSw5ICsxOTksOSBAQCBFeGNlcHRpb25Pcjxz
dGQ6Om9wdGlvbmFsPEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Q29tcHV0ZWRQ
cm9wZXJ0aWVzPgogICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudEF0dHJWYWx1ZSA9IGF4
T2JqZWN0LT5saXZlUmVnaW9uUmVsZXZhbnQoKTsKICAgICAgICAgICAgIGlmICghYXJpYVJlbGV2
YW50QXR0clZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGxpdmVSZWdpb25SZWxldmFudDsKLSAgICAgICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2YW50
QWRkaXRpb25zID0gImFkZGl0aW9ucyI7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxl
dmFudFJlbW92YWxzID0gInJlbW92YWxzIjsKLSAgICAgICAgICAgICAgICBTdHJpbmcgYXJpYVJl
bGV2YW50VGV4dCA9ICJ0ZXh0IjsKKyAgICAgICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2YW50
QWRkaXRpb25zID0gImFkZGl0aW9ucyJfczsKKyAgICAgICAgICAgICAgICBTdHJpbmcgYXJpYVJl
bGV2YW50UmVtb3ZhbHMgPSAicmVtb3ZhbHMiX3M7CisgICAgICAgICAgICAgICAgU3RyaW5nIGFy
aWFSZWxldmFudFRleHQgPSAidGV4dCJfczsKIAogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8m
IHZhbHVlcyA9IFNwYWNlU3BsaXRTdHJpbmcoYXJpYVJlbGV2YW50QXR0clZhbHVlLCB0cnVlKTsK
ICAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmNvbnRhaW5zKCJhbGwiKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAppbmRleCBiYmNjNzlhYmMzODY5
NWVjMDlhNDBiODI1MTZlYzlhOTY0ZWM2NmJkLi40ZGZkZTY2M2U4YmI4MzMyOWY1NjIwNTEzMzQ5
NWE3YWJiMzJiY2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzLmNwcApAQCAtMTEwMCw3ICsxMTAwLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhG
b3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAgICAgICAgICAgICAgICAgaWYgKGlt
YWdlICYmIGltYWdlICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVm
ZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9w
bmciKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFV
UkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBA
IC0xMTE1LDcgKzExMTUsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVw
bGljYXRlRGF0YVZhcmlhbnQgZGF0YSkKICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7
CiAgICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dChpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlk
ZW9IZWlnaHQpKTsKLSAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0
YVVSTCgiaW1hZ2UvcG5nIik7CisgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVy
LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwpAQCAtMTEzNCw3ICsxMTM0LDcgQEAgaW50
IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEp
CiAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPENhbnZhc1BhdHRlcm4+JiBjYW52YXNQYXR0ZXJu
KSB7IGl0ZW0gPSBidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybigqY2FudmFzUGF0dGVybik7IH0s
CiAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEltYWdlRGF0YT4mIGltYWdlRGF0YSkgeyBpdGVt
ID0gYnVpbGRBcnJheUZvckltYWdlRGF0YSgqaW1hZ2VEYXRhKTsgfSwKICAgICAgICAgWyZdIChS
ZWZQdHI8SW1hZ2VCaXRtYXA+JiBpbWFnZUJpdG1hcCkgewotICAgICAgICAgICAgaW5kZXggPSBp
bmRleEZvckRhdGEoaW1hZ2VCaXRtYXAtPmJ1ZmZlcigpLT50b0RhdGFVUkwoImltYWdlL3BuZyIp
KTsKKyAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGltYWdlQml0bWFwLT5idWZmZXIo
KS0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MpKTsKICAgICAgICAgfSwKICAgICAgICAgWyZdIChj
b25zdCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYgc2NyaXB0Q2FsbFN0YWNrKSB7CiAgICAgICAg
ICAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxkb3VibGU+OjpjcmVhdGUoKTsKQEAgLTEx
NTEsNyArMTE1MSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBsaWNh
dGVEYXRhVmFyaWFudCBkYXRhKQogICAgICAgICAgICAgICAgIGlmIChpbWFnZSAmJiBpbWFnZSAh
PSAmSW1hZ2U6Om51bGxJbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgp
LmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwotICAgICAgICAgICAgICAgICAg
ICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAgICAg
ICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmci
X3MpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtMTM5MCw3ICsxMzkw
LDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1
aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKGNvbnMKICAgICAgICAgcmVwZWF0ID0gIm5vLXJlcGVh
dCJfczsKIAogICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3Jl
YXRlKCk7Ci0gICAgYXJyYXktPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKGltYWdlQnVmZmVyLT50b0Rh
dGFVUkwoImltYWdlL3BuZyIpKSk7CisgICAgYXJyYXktPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKGlt
YWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcykpKTsKICAgICBhcnJheS0+YWRkSXRl
bShpbmRleEZvckRhdGEocmVwZWF0KSk7CiAgICAgcmV0dXJuIGFycmF5OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuY3BwCmluZGV4IGI1OGU3M2U3MDRmNDM0MWM1Mzc1OTYyMjkxNmRjN2MxZDllYmU0MjQuLjkw
Y2U1ZTdjYjk2ZGY2MjViMDdiNDIzYmY5NWRkOGI3Zjc2ZmMzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAKQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCi1zdGF0aWMgY29uc3QgY2hhciogaW5zcGVjdG9yQXR0YWNoZWRIZWln
aHRTZXR0aW5nID0gImluc3BlY3RvckF0dGFjaGVkSGVpZ2h0IjsKK3N0YXRpYyBjb25zdGV4cHIg
QVNDSUlMaXRlcmFsIGluc3BlY3RvckF0dGFjaGVkSGVpZ2h0U2V0dGluZyA9ICJpbnNwZWN0b3JB
dHRhY2hlZEhlaWdodCJfczsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0QXR0YWNoZWRI
ZWlnaHQgPSAzMDA7CiBzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bUF0dGFjaGVkSGVpZ2h0ID0g
MjUwLjBmOwogc3RhdGljIGNvbnN0IGZsb2F0IG1heGltdW1BdHRhY2hlZEhlaWdodFJhdGlvID0g
MC43NWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwCmluZGV4IGE4MDk5YzgxY2NlNjIyYzYxMzQzZmViZjI5MjA2ZDY0YmExMmU2N2Qu
LmU5MjBhZDE2OWM3NDFkYTNmM2NjMjVlYTMxMjhhNDM0YmQxOGZlZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0xMTEs
NyArMTExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdl
c3R1cmVJbmRpY2F0b3IoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBkeW5hbWljRG93bmNhc3Q8RG9j
dW1lbnQ+KGV4ZWN1dGlvbkNvbnRleHQobV9mcm9udGVuZEFwaU9iamVjdC5nbG9iYWxPYmplY3Qo
KSkpKTsKICAgICAgICAgICAgIGludCBpdGVtTnVtYmVyID0gYWN0aW9uIC0gQ29udGV4dE1lbnVJ
dGVtQmFzZUN1c3RvbVRhZzsKIAotICAgICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRlbmRBcGlPYmplY3QsICJjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZCIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKKyAgICAg
ICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2Zyb250ZW5k
QXBpT2JqZWN0LCAiY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQiX3MsIFdlYkNvcmU6OmZ1bmN0aW9u
Q2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KGl0ZW1OdW1iZXIpOwogICAgICAgICAgICAgZnVuY3Rpb24uY2FsbCgpOwogICAgICAg
ICB9CkBAIC0xMjAsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnRleHRNZW51Q2xl
YXJlZCgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9mcm9udGVuZEhvc3QpIHsKLSAg
ICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2Zyb250
ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVDbGVhcmVkIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxs
SGFuZGxlckZyb21BbnlUaHJlYWQpOworICAgICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRlbmRBcGlPYmplY3QsICJjb250ZXh0TWVudUNsZWFy
ZWQiX3MsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICAg
ICAgICAgIGZ1bmN0aW9uLmNhbGwoKTsKIAogICAgICAgICAgICAgbV9mcm9udGVuZEhvc3QtPm1f
bWVudVByb3ZpZGVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JPdmVybGF5LmNwcAppbmRleCA0ZjYzYWRjZTkzOTE2ZGIyMzIwZTk2NzhhYWJmZTBmM2Nk
OTk3NjJiLi43NzEwYTFiNWQ4MmI0ZWNiYzZiOGZlNjI4NGNkNzZlNDQ5ODczZmM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC02MTMsNyAr
NjEzLDcgQEAgRXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JPdmVybGF5OjpzZXRHcmlkT3Zl
cmxheUZvck5vZGUoTm9kZSYgbm9kZSwgY29uc3QgSW4KIHsKICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gbm9kZS5yZW5kZXJlcigpOwogICAgIGlmICghaXM8UmVuZGVyR3JpZD4ocmVuZGVy
ZXIpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vZGUgZG9lcyBub3QgaW5pdGlh
dGUgYSBncmlkIGNvbnRleHQiKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb2Rl
IGRvZXMgbm90IGluaXRpYXRlIGEgZ3JpZCBjb250ZXh0Il9zKTsKIAogICAgIHJlbW92ZUdyaWRP
dmVybGF5Rm9yTm9kZShub2RlKTsKIApAQCAtNjI3LDcgKzYyNyw3IEBAIEVycm9yU3RyaW5nT3I8
dm9pZD4gSW5zcGVjdG9yT3ZlcmxheTo6c2V0R3JpZE92ZXJsYXlGb3JOb2RlKE5vZGUmIG5vZGUs
IGNvbnN0IEluCiBFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck92ZXJsYXk6OmNsZWFyR3Jp
ZE92ZXJsYXlGb3JOb2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKCFyZW1vdmVHcmlkT3Zlcmxh
eUZvck5vZGUobm9kZSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm8gZ3JpZCBv
dmVybGF5IGV4aXN0cyBmb3IgdGhlIG5vZGUsIHNvIGNhbm5vdCBjbGVhci4iKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJObyBncmlkIG92ZXJsYXkgZXhpc3RzIGZvciB0aGUgbm9k
ZSwgc28gY2Fubm90IGNsZWFyLiJfcyk7CiAKICAgICB1cGRhdGUoKTsKIApAQCAtNjUyLDcgKzY1
Miw3IEBAIGJvb2wgSW5zcGVjdG9yT3ZlcmxheTo6cmVtb3ZlRmxleE92ZXJsYXlGb3JOb2RlKE5v
ZGUmIG5vZGUpCiBFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck92ZXJsYXk6OnNldEZsZXhP
dmVybGF5Rm9yTm9kZShOb2RlJiBub2RlLCBjb25zdCBJbnNwZWN0b3JPdmVybGF5OjpGbGV4OjpD
b25maWcmIGZsZXhPdmVybGF5Q29uZmlnKQogewogICAgIGlmICghaXM8UmVuZGVyRmxleGlibGVC
b3g+KG5vZGUucmVuZGVyZXIoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm9k
ZSBkb2VzIG5vdCBpbml0aWF0ZSBhIGZsZXggY29udGV4dCIpOworICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIk5vZGUgZG9lcyBub3QgaW5pdGlhdGUgYSBmbGV4IGNvbnRleHQiX3MpOwog
CiAgICAgcmVtb3ZlRmxleE92ZXJsYXlGb3JOb2RlKG5vZGUpOwogCkBAIC02NjYsNyArNjY2LDcg
QEAgRXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JPdmVybGF5OjpzZXRGbGV4T3ZlcmxheUZv
ck5vZGUoTm9kZSYgbm9kZSwgY29uc3QgSW4KIEVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9y
T3ZlcmxheTo6Y2xlYXJGbGV4T3ZlcmxheUZvck5vZGUoTm9kZSYgbm9kZSkKIHsKICAgICBpZiAo
IXJlbW92ZUZsZXhPdmVybGF5Rm9yTm9kZShub2RlKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKCJObyBmbGV4IG92ZXJsYXkgZXhpc3RzIGZvciB0aGUgbm9kZSwgc28gY2Fubm90IGNs
ZWFyLiIpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vIGZsZXggb3ZlcmxheSBl
eGlzdHMgZm9yIHRoZSBub2RlLCBzbyBjYW5ub3QgY2xlYXIuIl9zKTsKIAogICAgIHVwZGF0ZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKaW5kZXggMGEwZGMxNGI5MTI1MDIyYjNiNGJhNjA1ZDY3ODBlNTYwMDQ3MGU1Yi4uODYzNjVi
NDdmZDlmZjU5MjExYmQ2NjllMDBhNzJkOTE0OTUyN2I3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNTU0LDggKzU1NCw4IEBA
IFJlZjxQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0
Rm9yU3R5bGUoKSBjb25zdAogICAgIGlmIChhdXRvIHN0eWxlSWQgPSBtX3N0eWxlSWQuYXNQcm90
b2NvbFZhbHVlPFByb3RvY29sOjpDU1M6OkNTU1N0eWxlSWQ+KCkpCiAgICAgICAgIHJlc3VsdC0+
c2V0U3R5bGVJZChzdHlsZUlkLnJlbGVhc2VOb25OdWxsKCkpOwogCi0gICAgcmVzdWx0LT5zZXRX
aWR0aChtX3N0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKCJ3aWR0aCIpKTsKLSAgICByZXN1bHQtPnNl
dEhlaWdodChtX3N0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKCJoZWlnaHQiKSk7CisgICAgcmVzdWx0
LT5zZXRXaWR0aChtX3N0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKCJ3aWR0aCJfcykpOworICAgIHJl
c3VsdC0+c2V0SGVpZ2h0KG1fc3R5bGUtPmdldFByb3BlcnR5VmFsdWUoImhlaWdodCJfcykpOwog
CiAgICAgaWYgKGF1dG8gc291cmNlRGF0YSA9IGV4dHJhY3RTb3VyY2VEYXRhKCkpIHsKICAgICAg
ICAgaWYgKGF1dG8gcmFuZ2UgPSBidWlsZFNvdXJjZVJhbmdlT2JqZWN0KHNvdXJjZURhdGEtPnJ1
bGVCb2R5UmFuZ2UsIG1fcGFyZW50U3R5bGVTaGVldC0+bGluZUVuZGluZ3MoKSkpCkBAIC02ODYs
NyArNjg2LDcgQEAgUmVmPFByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6
c3R5bGVXaXRoUHJvcGVydGllcygpIGNvbnN0CiAKICAgICAgICAgLy8gRGVmYXVsdCAicHJpb3Jp
dHkiID09ICIiLgogICAgICAgICBpZiAocHJvcGVydHlFbnRyeS5pbXBvcnRhbnQpCi0gICAgICAg
ICAgICBwcm9wZXJ0eS0+c2V0UHJpb3JpdHkoImltcG9ydGFudCIpOworICAgICAgICAgICAgcHJv
cGVydHktPnNldFByaW9yaXR5KCJpbXBvcnRhbnQiX3MpOwogCiAgICAgICAgIGlmIChpdC0+aGFz
U291cmNlKSB7CiAgICAgICAgICAgICAvLyBUaGUgcHJvcGVydHkgcmFuZ2UgaXMgcmVsYXRpdmUg
dG8gdGhlIHN0eWxlIGJvZHkgc3RhcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCmluZGV4IDBiYmNj
NTFhOTM3NDg5ODg1NWVhOTJmOGIzY2E3YjA1MTE1OTQ3YzYuLmEyYzFiOTI0MDk2MWZlYWUzMjEz
OTY1OWI5M2U2YWJjZGIxY2Y5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCkBAIC0zMzMsNyAr
MzMzLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+PiBJbnNwZWN0b3JBbmltYXRpb24KIAogICAgIGF1dG8gb2JqZWN0ID0gaW5q
ZWN0ZWRTY3JpcHQud3JhcE9iamVjdCh2YWx1ZSwgb2JqZWN0R3JvdXApOwogICAgIGlmICghb2Jq
ZWN0KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludGVybmFsIGVycm9yOiB1bmFi
bGUgdG8gY2FzdCBBbmltYXRpb24iKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJ
bnRlcm5hbCBlcnJvcjogdW5hYmxlIHRvIGNhc3QgQW5pbWF0aW9uIl9zKTsKIAogICAgIHJldHVy
biBvYmplY3QucmVsZWFzZU5vbk51bGwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMTU5MTIwMjZkMmMx
NTFmNDE5NDk0NGE5ZjBmYWRhMTg5ODA0ZmZlMy4uMmViOWI3M2NiZWU3YmQ3ZjA0NjBmNDM0ZmY2
YWZiZTUwYTgxZTI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCBQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OkNTUzo6Rm9udD4+IEluc3BlY3RvckNTU0FnZW50
OjpnZXRGb250RGF0YQogICAgIAogICAgIGF1dG8qIGNvbXB1dGVkU3R5bGUgPSBub2RlLT5jb21w
dXRlZFN0eWxlKCk7CiAgICAgaWYgKCFjb21wdXRlZFN0eWxlKQotICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIk5vIGNvbXB1dGVkIHN0eWxlIGZvciBub2RlLiIpOworICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIk5vIGNvbXB1dGVkIHN0eWxlIGZvciBub2RlLiJfcyk7CiAgICAg
CiAgICAgcmV0dXJuIGJ1aWxkT2JqZWN0Rm9yRm9udChjb21wdXRlZFN0eWxlLT5mb250Q2FzY2Fk
ZSgpLnByaW1hcnlGb250KCkpOwogfQpAQCAtNjY1LDcgKzY2NSw3IEBAIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPFJlZjxQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4+IEluc3BlY3Rv
ckNTU0FnZW50CiAKICAgICBhdXRvIHN0eWxlU2hlZXQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5i
dWlsZE9iamVjdEZvclN0eWxlU2hlZXQoKTsKICAgICBpZiAoIXN0eWxlU2hlZXQpCi0gICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IG1pc3Npbmcgc3R5bGUgc2hl
ZXQiKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRlcm5hbCBlcnJvcjogbWlz
c2luZyBzdHlsZSBzaGVldCJfcyk7CiAKICAgICByZXR1cm4gc3R5bGVTaGVldC5yZWxlYXNlTm9u
TnVsbCgpOwogfQpAQCAtNzQ3LDcgKzc0Nyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJl
ZjxQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTCiAK
ICAgICBhdXRvIHJ1bGUgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUo
aW5zcGVjdG9yU3R5bGVTaGVldC0+cnVsZUZvcklkKGNvbXBvdW5kSWQpKTsKICAgICBpZiAoIXJ1
bGUpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IG1pc3Np
bmcgc3R5bGUgc2hlZXQiKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRlcm5h
bCBlcnJvcjogbWlzc2luZyBzdHlsZSBzaGVldCJfcyk7CiAKICAgICByZXR1cm4gcnVsZS5yZWxl
YXNlTm9uTnVsbCgpOwogfQpAQCAtODM2LDcgKzgzNiw3IEBAIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPFJlZjxQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1
bGUoCiAKICAgICBhdXRvIHJ1bGUgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZv
clJ1bGUoaW5zcGVjdG9yU3R5bGVTaGVldC0+cnVsZUZvcklkKHJhd0FjdGlvbi5uZXdSdWxlSWQo
KSkpOwogICAgIGlmICghcnVsZSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnRl
cm5hbCBlcnJvcjogbWlzc2luZyBzdHlsZSBzaGVldCIpOworICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIkludGVybmFsIGVycm9yOiBtaXNzaW5nIHN0eWxlIHNoZWV0Il9zKTsKIAogICAg
IHJldHVybiBydWxlLnJlbGVhc2VOb25OdWxsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDFj
MTY2OGQ5OWM3YWRhY2IwZTBmMGI1MDhjMjFlY2ZlNjExOTcwNGIuLmY1ZDAwMjlkMWQwZTlmMjk2
MDkzYzM5MDdmNjY1NzI2MTJkNjcxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBAIC0yNDIsNyArMjQy
LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+PiBJbnNwZWN0b3JDYW52YXNBZ2UKIAogICAgIGF1dG8gcmVzdWx0ID0gaW5qZWN0
ZWRTY3JpcHQud3JhcE9iamVjdCh2YWx1ZSwgb2JqZWN0R3JvdXApOwogICAgIGlmICghcmVzdWx0
KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludGVybmFsIGVycm9yOiB1bmFibGUg
dG8gY2FzdCBDb250ZXh0Iik7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJu
YWwgZXJyb3I6IHVuYWJsZSB0byBjYXN0IENvbnRleHQiX3MpOwogCiAgICAgcmV0dXJuIHJlc3Vs
dC5yZWxlYXNlTm9uTnVsbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA2MDhmMmViNjVmNDBlNmMxOWNh
YzNmMWRmMGUzNWM2ODlhYjFmMTAyLi5mMDQ2Njg4MGU4OGJiMDEzZTQxODE3NWEwN2EwNTgyMWZm
ZGJlZjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcApAQCAtOTU0LDcgKzk1NCw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPFN0cmluZz4+PiBJbnNwZWN0b3JET01BZ2VudDo6Z2V0
U3VwcG9yCiB7CiAgICAgYXV0byBldmVudE5hbWVzID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+Ojpj
cmVhdGUoKTsKIAotI2RlZmluZSBET01fRVZFTlRfTkFNRVNfQUREKG5hbWUpIGV2ZW50TmFtZXMt
PmFkZEl0ZW0oI25hbWUpOworI2RlZmluZSBET01fRVZFTlRfTkFNRVNfQUREKG5hbWUpIGV2ZW50
TmFtZXMtPmFkZEl0ZW0oI25hbWUiIl9zKTsKICAgICBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0go
RE9NX0VWRU5UX05BTUVTX0FERCkKICN1bmRlZiBET01fRVZFTlRfTkFNRVNfQURECiAKQEAgLTE1
MjksNyArMTUyOSw3IEBAIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
SW5zcGVjdG9yRE9NQWdlbnQ6OnNob3dHcmlkT3ZlcmxheShJbnNwCiAKICAgICBhdXRvIHBhcnNl
ZENvbG9yID0gcGFyc2VDb2xvcihXVEZNb3ZlKGdyaWRDb2xvcikpOwogICAgIGlmICghcGFyc2Vk
Q29sb3IpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW52YWxpZCBjb2xvciBjb3Vs
ZCBub3QgYmUgcGFyc2VkLiIpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludmFs
aWQgY29sb3IgY291bGQgbm90IGJlIHBhcnNlZC4iX3MpOwogCiAgICAgSW5zcGVjdG9yT3Zlcmxh
eTo6R3JpZDo6Q29uZmlnIGNvbmZpZzsKICAgICBjb25maWcuZ3JpZENvbG9yID0gKnBhcnNlZENv
bG9yOwpAQCAtMTU2OSw3ICsxNTY5LDcgQEAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6c2hvd0ZsZXhPdmVybGF5KEluc3AKIAogICAg
IGF1dG8gcGFyc2VkQ29sb3IgPSBwYXJzZUNvbG9yKFdURk1vdmUoZmxleENvbG9yKSk7CiAgICAg
aWYgKCFwYXJzZWRDb2xvcikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnZhbGlk
IGNvbG9yIGNvdWxkIG5vdCBiZSBwYXJzZWQuIik7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZCgiSW52YWxpZCBjb2xvciBjb3VsZCBub3QgYmUgcGFyc2VkLiJfcyk7CiAKICAgICBJbnNw
ZWN0b3JPdmVybGF5OjpGbGV4OjpDb25maWcgY29uZmlnOwogICAgIGNvbmZpZy5mbGV4Q29sb3Ig
PSAqcGFyc2VkQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCA4MDI2ZTJjZWQw
YjJkMjFiMjEzZTRkYjQ5ZTg1MTNkZDQzMzE0OTM1Li41YTAyMDc1ZTFmYTAzN2VkYTgxYzI3YTMy
ZjA5YjA1ZGRkNzIxNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTE3Miw3ICsx
NzIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50OjpzZXRFdmVudEJyZWFrcG9pbnQoUHJvdAogICAgIH0KIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCIpOwor
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRlZCJfcyk7CiB9CiAKIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92
ZUV2ZW50QnJlYWtwb2ludChQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5
cGUgYnJlYWtwb2ludFR5cGUsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQpAQCAtMjE1LDcgKzIx
NSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OnJlbW92ZUV2ZW50QnJlYWtwb2ludChQCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb3Qgc3VwcG9ydGVkIik7Cisg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb3Qgc3VwcG9ydGVkIl9zKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpCkBAIC00MTAsOCAr
NDEwLDggQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpicmVha09uVVJMSWZOZWVk
ZWQoY29uc3QgU3RyaW5nJiB1cmwsIFVSTEJyZWFrcG8KICAgICB9CiAKICAgICBSZWY8SlNPTjo6
T2JqZWN0PiBldmVudERhdGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGV2ZW50RGF0
YS0+c2V0U3RyaW5nKCJicmVha3BvaW50VVJMIiwgYnJlYWtwb2ludFVSTCk7Ci0gICAgZXZlbnRE
YXRhLT5zZXRTdHJpbmcoInVybCIsIHVybCk7CisgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJy
ZWFrcG9pbnRVUkwiX3MsIGJyZWFrcG9pbnRVUkwpOworICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5n
KCJ1cmwiX3MsIHVybCk7CiAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oYnJlYWtS
ZWFzb24sIFdURk1vdmUoZXZlbnREYXRhKSwgV1RGTW92ZShicmVha3BvaW50KSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCAxM2ZjMGI4MWVmODc2YjU5ZTkxOGYxOWRkOTg2OTlj
NDVmZjYzMDIwLi5jNDZmOWFiYTYyMjhmNmM3MDY4YmE1MGM3M2MzMjM2OGU2YzE5YzE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xOTcsMTMgKzE5NywxMyBAQCBSZWZQdHI8U3RvcmFn
ZUFyZWE+IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKFByb3RvY29s
OjpFcnJvclN0cgogewogICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBzdG9yYWdlSWQtPmdldFN0
cmluZyhQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjpzZWN1cml0eU9yaWdpbktleSk7
CiAgICAgaWYgKCFzZWN1cml0eU9yaWdpbikgewotICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNz
aW5nIHNlY3VyaXR5T3JpZ2luIGluIGdpdmVuIHN0b3JhZ2VJZCI7CisgICAgICAgIGVycm9yU3Ry
aW5nID0gIk1pc3Npbmcgc2VjdXJpdHlPcmlnaW4gaW4gZ2l2ZW4gc3RvcmFnZUlkIl9zOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBhdXRvIGlzTG9jYWxTdG9yYWdlID0g
c3RvcmFnZUlkLT5nZXRCb29sZWFuKFByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ6Omlz
TG9jYWxTdG9yYWdlS2V5KTsKICAgICBpZiAoIWlzTG9jYWxTdG9yYWdlKSB7Ci0gICAgICAgIGVy
cm9yU3RyaW5nID0gIk1pc3NpbmcgaXNMb2NhbFN0b3JhZ2UgaW4gZ2l2ZW4gc3RvcmFnZUlkIjsK
KyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBpc0xvY2FsU3RvcmFnZSBpbiBnaXZlbiBz
dG9yYWdlSWQiX3M7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5jcHAKaW5kZXggZjBmM2M3NmQ4NGYyNTU3ODhhMmViNTlmMDU0MjBiOWQ5YTI3MjE2MS4u
YWNhZjE2Y2Q5NDVmMjhhZGU0MzU3ZGNkZjBjZjMyZGUwZjg2MzQ3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuY3BwCkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojpl
eGVjdXRlU1FMKGNvbnN0IFByb3RvY29sOjpEYXRhYmFzZTo6RGF0YWJhc2VJZCYgZGEKIAogICAg
IGF1dG8qIGRhdGFiYXNlID0gZGF0YWJhc2VGb3JJZChkYXRhYmFzZUlkKTsKICAgICBpZiAoIWRh
dGFiYXNlKSB7Ci0gICAgICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIk1pc3Npbmcg
ZGF0YWJhc2UgZm9yIGdpdmVuIGRhdGFiYXNlSWQiKTsKKyAgICAgICAgcmVxdWVzdENhbGxiYWNr
LT5zZW5kRmFpbHVyZSgiTWlzc2luZyBkYXRhYmFzZSBmb3IgZ2l2ZW4gZGF0YWJhc2VJZCJfcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggNWQ1
MTJlNzhlMjAwMzI4OGQwMTUzMTM2ODdlNjgzODk5MDhiNzNlNy4uODc2OTkyMDQyNzkwOGY0YzM0
YTYwY2RhZjE1OThjY2MyZWI4MzMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTEwMyw3
ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgRXZlbnQmIGV2ZW50KSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnR5
cGUoKSAhPSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50KSB7Ci0gICAgICAgICAgICBtX2V4ZWN1
dGFibGVXaXRoRGF0YWJhc2UtPnJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJVbmV4cGVj
dGVkIGV2ZW50IHR5cGUuIik7CisgICAgICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2Ut
PnJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVkIGV2ZW50IHR5cGUuIl9z
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMTEsMTMgKzExMSwxMyBA
QCBwdWJsaWM6CiAKICAgICAgICAgYXV0byByZXN1bHQgPSByZXF1ZXN0LnJlc3VsdCgpOwogICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICBtX2V4ZWN1dGFi
bGVXaXRoRGF0YWJhc2UtPnJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qg
Z2V0IHJlc3VsdCBpbiBjYWxsYmFjay4iKTsKKyAgICAgICAgICAgIG1fZXhlY3V0YWJsZVdpdGhE
YXRhYmFzZS0+cmVxdWVzdENhbGxiYWNrKCkuc2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgcmVz
dWx0IGluIGNhbGxiYWNrLiJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICBhdXRvIHJlc3VsdFZhbHVlID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwog
ICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPElEQkRhdGFiYXNlPj4o
cmVzdWx0VmFsdWUpKSB7Ci0gICAgICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2UtPnJl
cXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVkIHJlc3VsdCB0eXBlLiIpOwor
ICAgICAgICAgICAgbV9leGVjdXRhYmxlV2l0aERhdGFiYXNlLT5yZXF1ZXN0Q2FsbGJhY2soKS5z
ZW5kRmFpbHVyZSgiVW5leHBlY3RlZCByZXN1bHQgdHlwZS4iX3MpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTEzNiwxMyArMTM2LDEzIEBAIHByaXZhdGU6CiB2b2lkIEV4
ZWN1dGFibGVXaXRoRGF0YWJhc2U6OnN0YXJ0KElEQkZhY3RvcnkqIGlkYkZhY3RvcnksIFNlY3Vy
aXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAgICAgaWYgKCFjb250
ZXh0KCkpIHsKLSAgICAgICAgcmVxdWVzdENhbGxiYWNrKCkuc2VuZEZhaWx1cmUoIkNvdWxkIG5v
dCBvcGVuIGRhdGFiYXNlLiIpOworICAgICAgICByZXF1ZXN0Q2FsbGJhY2soKS5zZW5kRmFpbHVy
ZSgiQ291bGQgbm90IG9wZW4gZGF0YWJhc2UuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGF1dG8gcmVzdWx0ID0gaWRiRmFjdG9yeS0+b3BlbigqY29udGV4dCgpLCBkYXRhYmFz
ZU5hbWUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewot
ICAgICAgICByZXF1ZXN0Q2FsbGJhY2soKS5zZW5kRmFpbHVyZSgiQ291bGQgbm90IG9wZW4gZGF0
YWJhc2UuIik7CisgICAgICAgIHJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJDb3VsZCBu
b3Qgb3BlbiBkYXRhYmFzZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNDks
NyArMzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgRXZlbnQmIGV2ZW50KSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
aWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50KSB7Ci0gICAgICAg
ICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIlVuZXhwZWN0ZWQgZXZlbnQgdHlw
ZS4iKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiVW5leHBl
Y3RlZCBldmVudCB0eXBlLiJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtMzU3LDcgKzM1Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IHJlcXVl
c3QucmVzdWx0KCk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAg
ICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCByZXN1
bHQgaW4gY2FsbGJhY2suIik7CisgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZh
aWx1cmUoIkNvdWxkIG5vdCBnZXQgcmVzdWx0IGluIGNhbGxiYWNrLiJfcyk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zNzEsNyArMzcxLDcgQEAgcHVibGlj
OgogCiAgICAgICAgIGlmIChtX3NraXBDb3VudCkgewogICAgICAgICAgICAgaWYgKGN1cnNvci0+
YWR2YW5jZShtX3NraXBDb3VudCkuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgbV9y
ZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgYWR2YW5jZSBjdXJzb3IuIik7
CisgICAgICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBu
b3QgYWR2YW5jZSBjdXJzb3IuIl9zKTsKICAgICAgICAgICAgIG1fc2tpcENvdW50ID0gMDsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzgzLDcgKzM4Myw3IEBAIHB1YmxpYzoK
IAogICAgICAgICAvLyBDb250aW51ZSBjdXJzb3IgYmVmb3JlIG1ha2luZyBpbmplY3RlZCBzY3Jp
cHQgY2FsbHMsIG90aGVyd2lzZSB0cmFuc2FjdGlvbiBtaWdodCBiZSBmaW5pc2hlZC4KICAgICAg
ICAgaWYgKGN1cnNvci0+Y29udGludWVGdW5jdGlvbihudWxscHRyKS5oYXNFeGNlcHRpb24oKSkg
ewotICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qg
Y29udGludWUgY3Vyc29yLiIpOworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRG
YWlsdXJlKCJDb3VsZCBub3QgY29udGludWUgY3Vyc29yLiJfcyk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtNDQ5LDEzICs0NDksMTMgQEAgcHVibGljOgogCiAgICAgICAg
IGF1dG8gaWRiVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbkZvckRhdGFiYXNlKCZkYXRhYmFzZSwg
bV9vYmplY3RTdG9yZU5hbWUpOwogICAgICAgICBpZiAoIWlkYlRyYW5zYWN0aW9uKSB7Ci0gICAg
ICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgdHJh
bnNhY3Rpb24iKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgi
Q291bGQgbm90IGdldCB0cmFuc2FjdGlvbiJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBhdXRvIGlkYk9iamVjdFN0b3JlID0gb2JqZWN0U3RvcmVGb3JUcmFu
c2FjdGlvbihpZGJUcmFuc2FjdGlvbi5nZXQoKSwgbV9vYmplY3RTdG9yZU5hbWUpOwogICAgICAg
ICBpZiAoIWlkYk9iamVjdFN0b3JlKSB7Ci0gICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+
c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgb2JqZWN0IHN0b3JlIik7CisgICAgICAgICAgICBt
X3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgb2JqZWN0IHN0b3Jl
Il9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC00NjQsNyArNDY0LDcg
QEAgcHVibGljOgogICAgICAgICBpZiAoIW1faW5kZXhOYW1lLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgYXV0byBpZGJJbmRleCA9IGluZGV4Rm9yT2JqZWN0U3RvcmUoaWRiT2JqZWN0U3RvcmUu
Z2V0KCksIG1faW5kZXhOYW1lKTsKICAgICAgICAgICAgIGlmICghaWRiSW5kZXgpIHsKLSAgICAg
ICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQg
aW5kZXgiKTsKKyAgICAgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUo
IkNvdWxkIG5vdCBnZXQgaW5kZXgiX3MpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KIApAQCAtNDc4LDcgKzQ3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAg
ICAgIGlmICghaWRiUmVxdWVzdCkgewotICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNl
bmRGYWlsdXJlKCJDb3VsZCBub3Qgb3BlbiBjdXJzb3IgdG8gcG9wdWxhdGUgZGF0YWJhc2UgZGF0
YSIpOworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBu
b3Qgb3BlbiBjdXJzb3IgdG8gcG9wdWxhdGUgZGF0YWJhc2UgZGF0YSJfcyk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNjUzLDcgKzY1Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkuY29tcGxldGVFdmVu
dCkgewotICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJVbmV4cGVj
dGVkIGV2ZW50IHR5cGUuIik7CisgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZh
aWx1cmUoIlVuZXhwZWN0ZWQgZXZlbnQgdHlwZS4iX3MpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTY5MCwxMyArNjkwLDEzIEBAIHB1YmxpYzoKIAogICAgICAgICBhdXRv
IGlkYlRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25Gb3JEYXRhYmFzZSgmZGF0YWJhc2UsIG1fb2Jq
ZWN0U3RvcmVOYW1lLCBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWR3cml0ZSk7CiAgICAgICAgIGlm
ICghaWRiVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5k
RmFpbHVyZSgiQ291bGQgbm90IGdldCB0cmFuc2FjdGlvbiIpOworICAgICAgICAgICAgbV9yZXF1
ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0IHRyYW5zYWN0aW9uIl9zKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gaWRiT2JqZWN0
U3RvcmUgPSBvYmplY3RTdG9yZUZvclRyYW5zYWN0aW9uKGlkYlRyYW5zYWN0aW9uLmdldCgpLCBt
X29iamVjdFN0b3JlTmFtZSk7CiAgICAgICAgIGlmICghaWRiT2JqZWN0U3RvcmUpIHsKLSAgICAg
ICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCBvYmpl
Y3Qgc3RvcmUiKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgi
Q291bGQgbm90IGdldCBvYmplY3Qgc3RvcmUiX3MpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggNGE2ZjYzMmI2Zjk3MTE0MmM0MDBj
NGRiODA1M2I0ZDBmMTk0Njg1OS4uMzQ0ZjZmZTUwMGVkNWVjY2I4NWQ2YjdkNDY1NTcxNjAyMzhj
MzVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAgLTE5Miw5ICsxOTIsOSBAQCBSZWY8UHJv
dG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9i
amVjdEZvckxheWVyKFJlbgogICAgICAgICBsYXllck9iamVjdC0+c2V0SXNHZW5lcmF0ZWRDb250
ZW50KHRydWUpOwogICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRvRWxlbWVudElkKGJpbmRQ
c2V1ZG9FbGVtZW50KGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KHJlbmRlcmVyLT5ub2RlKCkpKSk7
CiAgICAgICAgIGlmIChyZW5kZXJlci0+aXNCZWZvcmVDb250ZW50KCkpCi0gICAgICAgICAgICBs
YXllck9iamVjdC0+c2V0UHNldWRvRWxlbWVudCgiYmVmb3JlIik7CisgICAgICAgICAgICBsYXll
ck9iamVjdC0+c2V0UHNldWRvRWxlbWVudCgiYmVmb3JlIl9zKTsKICAgICAgICAgZWxzZSBpZiAo
cmVuZGVyZXItPmlzQWZ0ZXJDb250ZW50KCkpCi0gICAgICAgICAgICBsYXllck9iamVjdC0+c2V0
UHNldWRvRWxlbWVudCgiYWZ0ZXIiKTsKKyAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1
ZG9FbGVtZW50KCJhZnRlciJfcyk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFJlbmRlclZpZXcg
aXMgbm93IHJlYWxseSBhbm9ueW1vdXMgYnV0IGRvbid0IHRlbGwgYWJvdXQgaXQgdG8gdGhlIGZy
b250ZW5kIGJlZm9yZSBtYWtpbmcgc3VyZSBpdCBjYW4gaGFuZGxlIGl0LgpAQCAtMjAyLDkgKzIw
Miw5IEBAIFJlZjxQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIoUmVuCiAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRJ
c0Fub255bW91cyh0cnVlKTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVu
ZGVyZXItPnN0eWxlKCk7CiAgICAgICAgIGlmIChzdHlsZS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9J
ZDo6Rmlyc3RMZXR0ZXIpCi0gICAgICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRvRWxlbWVu
dCgiZmlyc3QtbGV0dGVyIik7CisgICAgICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRvRWxl
bWVudCgiZmlyc3QtbGV0dGVyIl9zKTsKICAgICAgICAgZWxzZSBpZiAoc3R5bGUuc3R5bGVUeXBl
KCkgPT0gUHNldWRvSWQ6OkZpcnN0TGluZSkKLSAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQ
c2V1ZG9FbGVtZW50KCJmaXJzdC1saW5lIik7CisgICAgICAgICAgICBsYXllck9iamVjdC0+c2V0
UHNldWRvRWxlbWVudCgiZmlyc3QtbGluZSJfcyk7CiAgICAgfQogCiAgICAgcmV0dXJuIGxheWVy
T2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDZlNWE1ZmM4OWNjZWYwNWI3M2NlZGEyNTdk
NmM1OWNiMGU4Mjg2MWMuLmQ4MTI5NGM0NWFjZGIwODFkMWQxZmEyNGRjZWQyODlmOWVjNzY2ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEwMzIsNyArMTAzMiw3IEBAIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4gSW5zcGVjdG9y
TmV0d29ya0FnCiAKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2ODQ3NT4g
V2ViIEluc3BlY3RvcjogQ29ycmVjdGx5IGRpc3BsYXkgaWZyYW1lJ3MgYW5kIHdvcmtlcidzIFdl
YlNvY2tldHMKICAgICBpZiAoIWlzPERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTm90IHN1cHBvcnRl
ZCIpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQiX3MpOwog
CiAgICAgYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4od2ViU29ja2V0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1l
KCk7CkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+IEluc3BlY3Rvck5ldHdvcmtBZwogCiAgICAg
YXV0byBvYmplY3QgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KHdlYlNvY2tldEFzU2NyaXB0
VmFsdWUoZ2xvYmFsT2JqZWN0LCB3ZWJTb2NrZXQpLCBvYmplY3RHcm91cCk7CiAgICAgaWYgKCFv
YmplY3QpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IHVu
YWJsZSB0byBjYXN0IFdlYlNvY2tldCIpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
IkludGVybmFsIGVycm9yOiB1bmFibGUgdG8gY2FzdCBXZWJTb2NrZXQiX3MpOwogCiAgICAgcmV0
dXJuIG9iamVjdC5yZWxlYXNlTm9uTnVsbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGQxYjI2OWY4
ZmE3ZDY1YWE0ODQyMDVmZDUwMjhkODk0NTdlM2FmMTcuLmFmMzVlMGE5NWVhODE0OWFhNTQ5MzJi
MDlmYWRkYmVhYjUyMDA0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTU3MCwzMSArNTcwLDMxIEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVPYmplY3QoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluCiAKICAgICBjb29raWUubmFtZSA9IGNvb2tpZU9iamVjdC0+
Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6Om5hbWVLZXkpOwogICAgIGlmICghY29v
a2llLm5hbWUpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5
IG5hbWUgaW4gZ2l2ZW4gY29va2llIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2
YWx1ZSBmb3Iga2V5IG5hbWUgaW4gZ2l2ZW4gY29va2llIl9zOwogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIGNvb2tpZS52YWx1ZSA9IGNvb2tpZU9iamVjdC0+Z2V0
U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnZhbHVlS2V5KTsKICAgICBpZiAoIWNvb2tp
ZS52YWx1ZSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkg
dmFsdWUgaW4gZ2l2ZW4gY29va2llIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2
YWx1ZSBmb3Iga2V5IHZhbHVlIGluIGdpdmVuIGNvb2tpZSJfczsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBjb29raWUuZG9tYWluID0gY29va2llT2JqZWN0LT5n
ZXRTdHJpbmcoUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6ZG9tYWluS2V5KTsKICAgICBpZiAoIWNv
b2tpZS5kb21haW4pIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Ig
a2V5IGRvbWFpbiBpbiBnaXZlbiBjb29raWUiOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZh
bGlkIHZhbHVlIGZvciBrZXkgZG9tYWluIGluIGdpdmVuIGNvb2tpZSJfczsKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBjb29raWUucGF0aCA9IGNvb2tpZU9iamVj
dC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnBhdGhLZXkpOwogICAgIGlmICgh
Y29va2llLnBhdGgpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Ig
a2V5IHBhdGggaW4gZ2l2ZW4gY29va2llIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxp
ZCB2YWx1ZSBmb3Iga2V5IHBhdGggaW4gZ2l2ZW4gY29va2llIl9zOwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gaHR0cE9ubHkgPSBjb29raWVPYmplY3Qt
PmdldEJvb2xlYW4oUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6aHR0cE9ubHlLZXkpOwogICAgIGlm
ICghaHR0cE9ubHkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Ig
a2V5IGh0dHBPbmx5IGluIGdpdmVuIGNvb2tpZSI7CisgICAgICAgIGVycm9yU3RyaW5nID0gIklu
dmFsaWQgdmFsdWUgZm9yIGtleSBodHRwT25seSBpbiBnaXZlbiBjb29raWUiX3M7CiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCkBAIC02MDIsNyArNjAyLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW4KIAogICAgIGF1dG8gc2VjdXJlID0gY29va2llT2JqZWN0LT5nZXRC
b29sZWFuKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlY3VyZUtleSk7CiAgICAgaWYgKCFzZWN1
cmUpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNlY3Vy
ZSBpbiBnaXZlbiBjb29raWUiOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVl
IGZvciBrZXkgc2VjdXJlIGluIGdpdmVuIGNvb2tpZSJfczsKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKQEAgLTYxMSw3ICs2MTEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxDb29raWU+IHBhcnNlQ29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JT
dHJpbgogICAgIGF1dG8gc2Vzc2lvbiA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihQcm90b2Nv
bDo6UGFnZTo6Q29va2llOjpzZXNzaW9uS2V5KTsKICAgICBjb29raWUuZXhwaXJlcyA9IGNvb2tp
ZU9iamVjdC0+Z2V0RG91YmxlKFByb3RvY29sOjpQYWdlOjpDb29raWU6OmV4cGlyZXNLZXkpOwog
ICAgIGlmICghc2Vzc2lvbiAmJiAhY29va2llLmV4cGlyZXMpIHsKLSAgICAgICAgZXJyb3JTdHJp
bmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IGV4cGlyZXMgaW4gZ2l2ZW4gY29va2llIjsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IGV4cGlyZXMgaW4gZ2l2
ZW4gY29va2llIl9zOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIApAQCAt
NjE5LDEzICs2MTksMTMgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tp
ZU9iamVjdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KIAogICAgIGF1dG8gc2Ft
ZVNpdGVTdHJpbmcgPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29v
a2llOjpzYW1lU2l0ZUtleSk7CiAgICAgaWYgKCFzYW1lU2l0ZVN0cmluZykgewotICAgICAgICBl
cnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgc2FtZVNpdGUgaW4gZ2l2ZW4gY29v
a2llIjsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNhbWVT
aXRlIGluIGdpdmVuIGNvb2tpZSJfczsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICBhdXRvIHNhbWVTaXRlID0gUHJvdG9jb2w6OkhlbHBlcnM6OnBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzxQcm90b2NvbDo6UGFnZTo6Q29va2llU2FtZVNpdGVQb2xpY3k+KHNhbWVT
aXRlU3RyaW5nKTsKICAgICBpZiAoIXNhbWVTaXRlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0g
IkludmFsaWQgdmFsdWUgZm9yIGtleSBzYW1lU2l0ZSBpbiBnaXZlbiBjb29raWUiOworICAgICAg
ICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgc2FtZVNpdGUgaW4gZ2l2ZW4g
Y29va2llIl9zOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9N
RGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZGFkNTA0MTg4NjRlOTVlYzIxMzMwMjAzZTZkMzlmYWNm
YWIwNWUxYy4uNjI2MGVhNzg2YzE4ODU1YTg4NDk2YmEyODlhNmNlZDdjMDlhMmMzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dl
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZURPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8dm9pZD4gUGFnZURPTURlYnVnZ2VyQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQoUHJv
dG9jb2w6OkQKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQiKTsKKyAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoIk5vdCBzdXBwb3J0ZWQiX3MpOwogfQogCiBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBQYWdlRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludChQcm90b2NvbDo6RE9N
OjpOb2RlSWQgbm9kZUlkLCBQcm90b2NvbDo6RE9NRGVidWdnZXI6OkRPTUJyZWFrcG9pbnRUeXBl
IHR5cGUpCkBAIC0xMzUsNyArMTM1LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
UGFnZURPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQoUHJvdG9jb2wKICAgICB9
CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
Ik5vdCBzdXBwb3J0ZWQiKTsKKyAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0
ZWQiX3MpOwogfQogCiB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjptYWluRnJhbWVOYXZpZ2F0
ZWQoKQpAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxJ
bnNlcnRET01Ob2RlKE5vZGUmIHBhcmVudCkKICAgICBBU1NFUlQoY2xvc2VzdEJyZWFrcG9pbnRP
d25lcik7CiAKICAgICBhdXRvIHBhdXNlRGF0YSA9IGJ1aWxkUGF1c2VEYXRhRm9yRE9NQnJlYWtw
b2ludChQcm90b2NvbDo6RE9NRGVidWdnZXI6OkRPTUJyZWFrcG9pbnRUeXBlOjpTdWJ0cmVlTW9k
aWZpZWQsICpjbG9zZXN0QnJlYWtwb2ludE93bmVyKTsKLSAgICBwYXVzZURhdGEtPnNldEJvb2xl
YW4oImluc2VydGlvbiIsIHRydWUpOworICAgIHBhdXNlRGF0YS0+c2V0Qm9vbGVhbigiaW5zZXJ0
aW9uIl9zLCB0cnVlKTsKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMzQ5
OT4gV2ViIEluc3BlY3RvcjogYWxsb3cgRE9NIG5vZGVzIHRvIGJlIGluc3RydW1lbnRlZCBhdCBh
bnkgcG9pbnQsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgbWFpbiBkb2N1bWVudCBoYXMgYWxz
byBiZWVuIGluc3RydW1lbnRlZAogICAgIC8vIEluY2x1ZGUgdGhlIG5ldyBjaGlsZCBub2RlIElE
IHNvIHRoZSBmcm9udGVuZCBjYW4gc2hvdyB0aGUgbm9kZSB0aGF0J3MgYWJvdXQgdG8gYmUgaW5z
ZXJ0ZWQuCiAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1
Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURk1vdmUocGF1c2VEYXRhKSwg
V1RGTW92ZShjbG9zZXN0QnJlYWtwb2ludCkpOwpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgUGFn
ZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAgaWYg
KGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2Vu
dCgpKSB7CiAgICAgICAgIGlmICgmbm9kZSAhPSBjbG9zZXN0QnJlYWtwb2ludE93bmVyKSB7CiAg
ICAgICAgICAgICBpZiAoYXV0byB0YXJnZXROb2RlSWQgPSBkb21BZ2VudC0+cHVzaE5vZGVUb0Zy
b250ZW5kKCZub2RlKSkKLSAgICAgICAgICAgICAgICBwYXVzZURhdGEtPnNldEludGVnZXIoInRh
cmdldE5vZGVJZCIsIHRhcmdldE5vZGVJZCk7CisgICAgICAgICAgICAgICAgcGF1c2VEYXRhLT5z
ZXRJbnRlZ2VyKCJ0YXJnZXROb2RlSWQiX3MsIHRhcmdldE5vZGVJZCk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dl
ckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURk1vdmUocGF1c2VEYXRhKSwgV1RG
TW92ZShjbG9zZXN0QnJlYWtwb2ludCkpOwpAQCAtMzUwLDEwICszNTAsMTAgQEAgUmVmPEpTT046
Ok9iamVjdD4gUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmJ1aWxkUGF1c2VEYXRhRm9yRE9NQnJlYWtw
b2ludChQcm90b2NvbDoKICAgICBBU1NFUlQobV9kb21TdWJ0cmVlTW9kaWZpZWRCcmVha3BvaW50
cy5jb250YWlucygmYnJlYWtwb2ludE93bmVyKSB8fCBtX2RvbUF0dHJpYnV0ZU1vZGlmaWVkQnJl
YWtwb2ludHMuY29udGFpbnMoJmJyZWFrcG9pbnRPd25lcikgfHwgbV9kb21Ob2RlUmVtb3ZlZEJy
ZWFrcG9pbnRzLmNvbnRhaW5zKCZicmVha3BvaW50T3duZXIpKTsKIAogICAgIGF1dG8gcGF1c2VE
YXRhID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBwYXVzZURhdGEtPnNldFN0cmluZygi
dHlwZSIsIFByb3RvY29sOjpIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShicmVha3BvaW50
VHlwZSkpOworICAgIHBhdXNlRGF0YS0+c2V0U3RyaW5nKCJ0eXBlIl9zLCBQcm90b2NvbDo6SGVs
cGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoYnJlYWtwb2ludFR5cGUpKTsKICAgICBpZiAoYXV0
byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkp
IHsKICAgICAgICAgaWYgKGF1dG8gYnJlYWtwb2ludE93bmVyTm9kZUlkID0gZG9tQWdlbnQtPnB1
c2hOb2RlVG9Gcm9udGVuZCgmYnJlYWtwb2ludE93bmVyKSkKLSAgICAgICAgICAgIHBhdXNlRGF0
YS0+c2V0SW50ZWdlcigibm9kZUlkIiwgYnJlYWtwb2ludE93bmVyTm9kZUlkKTsKKyAgICAgICAg
ICAgIHBhdXNlRGF0YS0+c2V0SW50ZWdlcigibm9kZUlkIl9zLCBicmVha3BvaW50T3duZXJOb2Rl
SWQpOwogICAgIH0KICAgICByZXR1cm4gcGF1c2VEYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
VmVyaWZpY2F0aW9uLmNwcAppbmRleCA1MzFkMjRjNDNlZmIxNGEyNzg2NGZmNWY5NjBlMjEwOTkw
YzVkYzJlLi5lNjlkZDEyMDUwNjQyNjExZDliNTJiZjk2MDllN2E4ZDgxMTY5Y2ExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcApAQCAtMTY3LDE0ICsxNjcsMTQgQEAgc3Rh
dGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUluZm9ybWF0aW9uSWZOZWVkZWQo
VGV4dFN0cmVhbSYgc3RyZWFtLAogc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0Jv
eEluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IEJveCYgbGF5
b3V0Qm94KQogewogICAgIGJvb2wgZmlyc3RNaXNtYXRjaGluZ1JlY3QgPSB0cnVlOwotICAgIGF1
dG8gb3V0cHV0UmVjdCA9IFsmXSAoY29uc3QgU3RyaW5nJiBwcmVmaXgsIGNvbnN0IExheW91dFJl
Y3QmIHJlbmRlcmVyUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5b3V0UmVjdCkgeworICAgIGF1
dG8gb3V0cHV0UmVjdCA9IFsmXSAoQVNDSUlMaXRlcmFsIHByZWZpeCwgY29uc3QgTGF5b3V0UmVj
dCYgcmVuZGVyZXJSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXlvdXRSZWN0KSB7CiAgICAgICAg
IGlmIChmaXJzdE1pc21hdGNoaW5nUmVjdCkgewotICAgICAgICAgICAgc3RyZWFtIDw8IChyZW5k
ZXJlci5lbGVtZW50KCkgPyByZW5kZXJlci5lbGVtZW50KCktPm5vZGVOYW1lKCkudXRmOCgpLmRh
dGEoKSA6ICIiKSA8PCAiICIgPDwgcmVuZGVyZXIucmVuZGVyTmFtZSgpIDw8ICIoIiA8PCAmcmVu
ZGVyZXIgPDwgIikgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSI7CisgICAgICAgICAg
ICBzdHJlYW0gPDwgKHJlbmRlcmVyLmVsZW1lbnQoKSA/IHJlbmRlcmVyLmVsZW1lbnQoKS0+bm9k
ZU5hbWUoKS51dGY4KCkuZGF0YSgpIDogIiIpIDw8ICIgIiA8PCByZW5kZXJlci5yZW5kZXJOYW1l
KCkuY2hhcmFjdGVycygpIDw8ICIoIiA8PCAmcmVuZGVyZXIgPDwgIikgbGF5b3V0Qm94KCIgPDwg
JmxheW91dEJveCA8PCAiKSI7CiAgICAgICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsKICAgICAg
ICAgICAgIGZpcnN0TWlzbWF0Y2hpbmdSZWN0ID0gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAg
ICBzdHJlYW0gIDw8IHByZWZpeC51dGY4KCkuZGF0YSgpIDw8ICJcdHJlbmRlcmVyLT4oIiA8PCBy
ZW5kZXJlclJlY3QueCgpIDw8ICIsIiA8PCByZW5kZXJlclJlY3QueSgpIDw8ICIpICgiIDw8IHJl
bmRlcmVyUmVjdC53aWR0aCgpIDw8ICJ4IiA8PCByZW5kZXJlclJlY3QuaGVpZ2h0KCkgPDwgIiki
CisgICAgICAgIHN0cmVhbSAgPDwgcHJlZml4LmNoYXJhY3RlcnMoKSA8PCAiXHRyZW5kZXJlci0+
KCIgPDwgcmVuZGVyZXJSZWN0LngoKSA8PCAiLCIgPDwgcmVuZGVyZXJSZWN0LnkoKSA8PCAiKSAo
IiA8PCByZW5kZXJlclJlY3Qud2lkdGgoKSA8PCAieCIgPDwgcmVuZGVyZXJSZWN0LmhlaWdodCgp
IDw8ICIpIgogICAgICAgICAgICAgPDwgIlx0bGF5b3V0LT4oIiA8PCBsYXlvdXRSZWN0LngoKSA8
PCAiLCIgPDwgbGF5b3V0UmVjdC55KCkgPDwgIikgKCIgPDwgbGF5b3V0UmVjdC53aWR0aCgpIDw8
ICJ4IiA8PCBsYXlvdXRSZWN0LmhlaWdodCgpIDw8ICIpIjsgCiAgICAgICAgIHN0cmVhbS5uZXh0
TGluZSgpOwogICAgIH07CkBAIC0yMzcsMTkgKzIzNywxOSBAQCBzdGF0aWMgYm9vbCBvdXRwdXRN
aXNtYXRjaGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0s
IGNvbgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoIWFyZUVzc2Vu
dGlhbGx5RXF1YWwoZnJhbWVSZWN0LCBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChib3hHZW9t
ZXRyeSkpKSB7Ci0gICAgICAgIG91dHB1dFJlY3QoImZyYW1lQm94IiwgcmVuZGVyZXIuZnJhbWVS
ZWN0KCksIEJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGJveEdlb21ldHJ5KSk7CisgICAgICAg
IG91dHB1dFJlY3QoImZyYW1lQm94Il9zLCByZW5kZXJlci5mcmFtZVJlY3QoKSwgQm94R2VvbWV0
cnk6OmJvcmRlckJveFJlY3QoYm94R2VvbWV0cnkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgaWYgKCFhcmVFc3NlbnRpYWxseUVxdWFsKHJlbmRlcmVyLmJvcmRlckJveFJl
Y3QoKSwgYm94R2VvbWV0cnkuYm9yZGVyQm94KCkpKSB7Ci0gICAgICAgIG91dHB1dFJlY3QoImJv
cmRlckJveCIsIHJlbmRlcmVyLmJvcmRlckJveFJlY3QoKSwgYm94R2VvbWV0cnkuYm9yZGVyQm94
KCkpOworICAgICAgICBvdXRwdXRSZWN0KCJib3JkZXJCb3giX3MsIHJlbmRlcmVyLmJvcmRlckJv
eFJlY3QoKSwgYm94R2VvbWV0cnkuYm9yZGVyQm94KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKICAgICAvLyBXaGVuIHRoZSB0YWJsZSByb3cgYm9yZGVyIG92ZXJmbG93cyB0aGUg
cm93LCBwYWRkaW5nIGJveCBiZWNvbWVzIG5lZ2F0aXZlIGFuZCBjb250ZW50IGJveCBpcyBpbmNv
cnJlY3QuCiAgICAgYXV0byBzaG91bGRDaGVja1BhZGRpbmdBbmRDb250ZW50Qm94ID0gIWlzPFJl
bmRlclRhYmxlUm93PihyZW5kZXJlcikgfHwgcmVuZGVyZXIucGFkZGluZ0JveFJlY3QoKS53aWR0
aCgpID49IDA7CiAgICAgaWYgKHNob3VsZENoZWNrUGFkZGluZ0FuZENvbnRlbnRCb3ggJiYgIWFy
ZUVzc2VudGlhbGx5RXF1YWwocmVuZGVyZXIucGFkZGluZ0JveFJlY3QoKSwgYm94R2VvbWV0cnku
cGFkZGluZ0JveCgpKSkgewotICAgICAgICBvdXRwdXRSZWN0KCJwYWRkaW5nQm94IiwgcmVuZGVy
ZXIucGFkZGluZ0JveFJlY3QoKSwgYm94R2VvbWV0cnkucGFkZGluZ0JveCgpKTsKKyAgICAgICAg
b3V0cHV0UmVjdCgicGFkZGluZ0JveCJfcywgcmVuZGVyZXIucGFkZGluZ0JveFJlY3QoKSwgYm94
R2VvbWV0cnkucGFkZGluZ0JveCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBA
IC0yNjMsNyArMjYzLDcgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveElu
Zm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb24KICAgICAgICAgcmV0dXJu
ICFpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIpIHx8ICFkb3duY2FzdDxSZW5kZXJUYWJsZT4ocmVu
ZGVyZXIpLmNvbGxhcHNlQm9yZGVycygpOwogICAgIH0oKTsKICAgICBpZiAoc2hvdWxkQ2hlY2tD
b250ZW50Qm94ICYmICFhcmVFc3NlbnRpYWxseUVxdWFsKHJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0
KCksIGJveEdlb21ldHJ5LmNvbnRlbnRCb3goKSkpIHsKLSAgICAgICAgb3V0cHV0UmVjdCgiY29u
dGVudEJveCIsIHJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCksIGJveEdlb21ldHJ5LmNvbnRlbnRC
b3goKSk7CisgICAgICAgIG91dHB1dFJlY3QoImNvbnRlbnRCb3giX3MsIHJlbmRlcmVyLmNvbnRl
bnRCb3hSZWN0KCksIGJveEdlb21ldHJ5LmNvbnRlbnRCb3goKSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21h
dGNoaW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29u
CiAgICAgICAgICAgICAmJiBib3hHZW9tZXRyeS5tYXJnaW5FbmQoKSA9PSByZW5kZXJlci5tYXJn
aW5FbmQoKTsKIAogICAgICAgICBpZiAoIW1hcmdpbnNNYXRjaCkgewotICAgICAgICAgICAgb3V0
cHV0UmVjdCgibWFyZ2luQm94IiwgcmVuZGVyZXIubWFyZ2luQm94UmVjdCgpLCByZW5kZXJCb3hM
aWtlTWFyZ2luQm94KGJveEdlb21ldHJ5KSk7CisgICAgICAgICAgICBvdXRwdXRSZWN0KCJtYXJn
aW5Cb3giX3MsIHJlbmRlcmVyLm1hcmdpbkJveFJlY3QoKSwgcmVuZGVyQm94TGlrZU1hcmdpbkJv
eChib3hHZW9tZXRyeSkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKaW5kZXggNzYyYzlkZTliMDQ3MjAzNGU2
NjU3MmZmMjBmN2E4ZDgzMzczN2U1Yy4uMjMxZDM2YmMwYTM3MWQ0OTY1NTdjYmI1MmQwZTczMTgx
MDhjNjBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcApAQCAtNTUzLDggKzU1Myw4
IEBAIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZvckxpbmVMYXlvdXRXaXRoUmVh
c29uKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYKICNpZm5kZWYgTkRFQlVHCiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7
Ci0gICAgICAgIFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjaygiY29tLmFwcGxlLldlYktpdC5z
aG93TW9kZXJuTGluZUxheW91dENvdmVyYWdlIiwgRnVuY3Rpb248dm9pZCgpPiB7IHByaW50TW9k
ZXJuTGluZUxheW91dENvdmVyYWdlIH0pOwotICAgICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2Fs
bGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd01vZGVybkxpbmVMYXlvdXRSZWFzb25zIiwgRnVu
Y3Rpb248dm9pZCgpPiB7IHByaW50TW9kZXJuTGluZUxheW91dEJsb2NrTGlzdCB9KTsKKyAgICAg
ICAgUEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dNb2Rl
cm5MaW5lTGF5b3V0Q292ZXJhZ2UiX3MsIEZ1bmN0aW9uPHZvaWQoKT4geyBwcmludE1vZGVybkxp
bmVMYXlvdXRDb3ZlcmFnZSB9KTsKKyAgICAgICAgUEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNr
KCJjb20uYXBwbGUuV2ViS2l0LnNob3dNb2Rlcm5MaW5lTGF5b3V0UmVhc29ucyJfcywgRnVuY3Rp
b248dm9pZCgpPiB7IHByaW50TW9kZXJuTGluZUxheW91dEJsb2NrTGlzdCB9KTsKICAgICB9KTsK
ICNlbmRpZgogICAgIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IHJlYXNvbnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAppbmRleCAxMTg0YjdjMzk2MWY2NDhkZGViZDZkNGRi
ZGRhNDZhM2YxZTQ2MjU0Li4xN2M0NDNmNzc5OGQwNDEzMzgyYjFmNmQyYjI5Y2VmOWQ5ZTE0MjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVu
dEZpbHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB+Q29udGVudEZpbHRlcigpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHVybFNjaGVtZSgp
IHsgcmV0dXJuICJ4LWFwcGxlLWNvbnRlbnQtZmlsdGVyIjsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgQVNDSUlMaXRlcmFsIHVybFNjaGVtZSgpIHsgcmV0dXJuICJ4LWFwcGxlLWNvbnRlbnQtZmls
dGVyIl9zOyB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVzb3Vy
Y2UoY29uc3QgVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2wuY3BwCmluZGV4IGQ5Y2E2ZmNkOTQ1Njk5OGY1OGM2MjQ1N2QyMTY2MjI1
MjY1MmE3M2IuLjkyMjNlMDQ0MGZhM2ExYzA4ZjJmZTZlZDY0Njc3ODMzZjcyMWUyNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3Bw
CkBAIC04Nyw3ICs4Nyw3IEBAIFJlc291cmNlUmVxdWVzdCBjcmVhdGVBY2Nlc3NDb250cm9sUHJl
ZmxpZ2h0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgc3RhdGljIGNv
bnN0IGRvdWJsZSBwbGF0Zm9ybURlZmF1bHRUaW1lb3V0ID0gMDsKICAgICBwcmVmbGlnaHRSZXF1
ZXN0LnNldFRpbWVvdXRJbnRlcnZhbChwbGF0Zm9ybURlZmF1bHRUaW1lb3V0KTsKICAgICB1cGRh
dGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChwcmVmbGlnaHRSZXF1ZXN0LCBzZWN1cml0eU9yaWdp
biwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlKTsKLSAgICBwcmVmbGlnaHRSZXF1
ZXN0LnNldEhUVFBNZXRob2QoIk9QVElPTlMiKTsKKyAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhU
VFBNZXRob2QoIk9QVElPTlMiX3MpOwogICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SFRUUEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sUmVxdWVzdE1ldGhvZCwgcmVxdWVz
dC5odHRwTWV0aG9kKCkpOwogICAgIHByZWZsaWdodFJlcXVlc3Quc2V0UHJpb3JpdHkocmVxdWVz
dC5wcmlvcml0eSgpKTsKICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29r
aWVzKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKaW5k
ZXggYzRmOGNhYjZlZTNhMWZkYjkyNmJjZWM5OGEzMTMyYmU1M2Y3ZjM1My4uZWY0ZDU4Y2E3MzA1
ZGE2Nzg1NTYxNTdhNDY5NGFhMGY5NDQxZjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcApAQCAtODUs
MTIgKzg1LDEyIEBAIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBDcm9zc09yaWdpblByZWZsaWdodFJl
c3VsdENhY2hlSXRlbTo6dmFsaWRhdGVNZXRob2RBbmRIZWFkCiAKIGJvb2wgQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OmFsbG93c0Nyb3NzT3JpZ2luTWV0aG9kKGNvbnN0IFN0
cmluZyYgbWV0aG9kLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tZXRob2RzLmNvbnRhaW5zKG1ldGhvZCkgfHwg
KG1fbWV0aG9kcy5jb250YWlucygiKiIpICYmIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ICE9IFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpIHx8IGlzT25BY2Nlc3NDb250cm9sU2ltcGxlUmVx
dWVzdE1ldGhvZEFsbG93bGlzdChtZXRob2QpOworICAgIHJldHVybiBtX21ldGhvZHMuY29udGFp
bnMobWV0aG9kKSB8fCAobV9tZXRob2RzLmNvbnRhaW5zKCIqIl9zKSAmJiBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSAhPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKSB8fCBpc09uQWNjZXNz
Q29udHJvbFNpbXBsZVJlcXVlc3RNZXRob2RBbGxvd2xpc3QobWV0aG9kKTsKIH0KIAogc3RkOjpv
cHRpb25hbDxTdHJpbmc+IENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjp2YWxp
ZGF0ZUNyb3NzT3JpZ2luSGVhZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVy
cywgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIGNvbnN0
CiB7Ci0gICAgYm9vbCB2YWxpZFdpbGRjYXJkID0gbV9oZWFkZXJzLmNvbnRhaW5zKCIqIikgJiYg
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgIT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsK
KyAgICBib29sIHZhbGlkV2lsZGNhcmQgPSBtX2hlYWRlcnMuY29udGFpbnMoIioiX3MpICYmIHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5ICE9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CiAg
ICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiByZXF1ZXN0SGVhZGVycykgewogICAgICAgICBp
ZiAoaGVhZGVyLmtleUFzSFRUUEhlYWRlck5hbWUgJiYgaXNDcm9zc09yaWdpblNhZmVSZXF1ZXN0
SGVhZGVyKGhlYWRlci5rZXlBc0hUVFBIZWFkZXJOYW1lLnZhbHVlKCksIGhlYWRlci52YWx1ZSkp
CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCmluZGV4IDI4ZGU3MzM3NDM0YmVjODk4ZTE2NTFkYWM0MmQ5NzczNzQ5MDg0ZWUuLjg3
ODZjNTI1OWI4OTgwMTI4MzU3NDQ1MjBmZWY1OWJhYzA2NGY5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjAwNCw3ICsyMDA0LDcgQEAgYm9vbCBEb2N1
bWVudExvYWRlcjo6bWF5YmVMb2FkRW1wdHkoKQogICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+
Y2xpZW50KCkuZGlzcGF0Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCgpOwogICAgIH0KIAotICAg
IFN0cmluZyBtaW1lVHlwZSA9IHNob3VsZExvYWRFbXB0eSA/ICJ0ZXh0L2h0bWwiIDogZnJhbWVM
b2FkZXIoKS0+Y2xpZW50KCkuZ2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUobV9yZXF1ZXN0
LnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKKyAgICBTdHJpbmcg
bWltZVR5cGUgPSBzaG91bGRMb2FkRW1wdHkgPyAidGV4dC9odG1sIl9zIDogZnJhbWVMb2FkZXIo
KS0+Y2xpZW50KCkuZ2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUobV9yZXF1ZXN0LnVybCgp
LnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKICAgICBtX3Jlc3BvbnNlID0g
UmVzb3VyY2VSZXNwb25zZShtX3JlcXVlc3QudXJsKCksIG1pbWVUeXBlLCAwLCAiVVRGLTgiX3Mp
OwogCiAgICAgaWYgKCFmcmFtZUxvYWRlcigpLT5zdGF0ZU1hY2hpbmUoKS5pc0Rpc3BsYXlpbmdJ
bml0aWFsRW1wdHlEb2N1bWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDdiYzJiNzc3MTBlYzgwMTVmOTYwNDUx
ZGRlYzUwN2Y0ZTBiYTBlNDcuLjEzNDQ2Mjg5YjVmZmZiZjA0MjEwYzFmMjMwMWU5YzI2N2RiZWU0
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpE
b2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmwKIAog
ICAgIGlmIChkb2N1bWVudC5zZXR0aW5ncygpLmRpc2FsbG93U3luY1hIUkR1cmluZ1BhZ2VEaXNt
aXNzYWxFbmFibGVkKCkgJiYgIW1fYXN5bmMgJiYgKCFkb2N1bWVudC5wYWdlKCkgfHwgIWRvY3Vt
ZW50LnBhZ2UoKS0+YXJlU3luY2hyb25vdXNMb2Fkc0FsbG93ZWQoKSkpIHsKICAgICAgICAgZG9j
dW1lbnQuZGlkUmVqZWN0U3luY1hIUkR1cmluZ1BhZ2VEaXNtaXNzYWwoKTsKLSAgICAgICAgbG9n
RXJyb3JBbmRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwg
cmVxdWVzdC51cmwoKSwgIlN5bmNocm9ub3VzIGxvYWRzIGFyZSBub3QgYWxsb3dlZCBhdCB0aGlz
IHRpbWUiKSk7CisgICAgICAgIGxvZ0Vycm9yQW5kRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9t
YWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QudXJsKCksICJTeW5jaHJvbm91cyBsb2FkcyBh
cmUgbm90IGFsbG93ZWQgYXQgdGhpcyB0aW1lIl9zKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTE3OSw3ICsxNzksNyBAQCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIFRocmVhZGFibAogICAgIH0KIAog
ICAgIGlmIChtX29wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW4p
IHsKLSAgICAgICAgbG9nRXJyb3JBbmRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJL
aXRJbnRlcm5hbCwgMCwgcmVxdWVzdC51cmwoKSwgIkNyb3NzIG9yaWdpbiByZXF1ZXN0cyBhcmUg
bm90IGFsbG93ZWQgd2hlbiB1c2luZyBzYW1lLW9yaWdpbiBmZXRjaCBtb2RlLiIpKTsKKyAgICAg
ICAgbG9nRXJyb3JBbmRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5h
bCwgMCwgcmVxdWVzdC51cmwoKSwgIkNyb3NzIG9yaWdpbiByZXF1ZXN0cyBhcmUgbm90IGFsbG93
ZWQgd2hlbiB1c2luZyBzYW1lLW9yaWdpbiBmZXRjaCBtb2RlLiJfcykpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xOTAsNyArMTkwLDcgQEAgYm9vbCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmNoZWNrVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBVUkwmIHVybCkKIHsKICAg
ICAvLyBDcm9zcy1vcmlnaW4gcmVxdWVzdHMgYXJlIG9ubHkgYWxsb3dlZCBmb3IgSFRUUCBhbmQg
cmVnaXN0ZXJlZCBzY2hlbWVzLiBXZSB3b3VsZCBjYXRjaCB0aGlzIHdoZW4gY2hlY2tpbmcgcmVz
cG9uc2UgaGVhZGVycyBsYXRlciwgYnV0IHRoZXJlIGlzIG5vIHJlYXNvbiB0byBzZW5kIGEgcmVx
dWVzdCB0aGF0J3MgZ3VhcmFudGVlZCB0byBiZSBkZW5pZWQuCiAgICAgaWYgKCFMZWdhY3lTY2hl
bWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybC5wcm90b2Nv
bCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpIHsKLSAgICAgICAgbG9nRXJyb3JBbmRGYWls
KFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCAiQ3Jvc3Mg
b3JpZ2luIHJlcXVlc3RzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgSFRUUC4iLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sKSk7CisgICAgICAgIGxvZ0Vycm9yQW5kRmFpbChSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIkNyb3NzIG9yaWdp
biByZXF1ZXN0cyBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIEhUVFAuIl9zLCBSZXNvdXJjZUVycm9y
OjpUeXBlOjpBY2Nlc3NDb250cm9sKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgcmV0dXJuIHRydWU7CkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmNhbmNlbCgpCiAgICAgLy8gQ2FuY2VsIGNhbiByZS1lbnRlciBhbmQgbV9yZXNv
dXJjZSBtaWdodCBiZSBudWxsIGhlcmUgYXMgYSByZXN1bHQuCiAgICAgaWYgKG1fY2xpZW50ICYm
IG1fcmVzb3VyY2UpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgZXJyb3IgaXMgc2VudCB0byB0
aGUgY2xpZW50IGluIGRpZEZhaWwoKSwgc28gaXQgc2hvdWxkIG5vdCBiZSBhbiBpbnRlcm5hbCBv
bmUuIFVzZSBGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVkRXJyb3IoKSBpbnN0ZWFkLgotICAg
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1f
cmVzb3VyY2UtPnVybCgpLCAiTG9hZCBjYW5jZWxsZWQiLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpD
YW5jZWxsYXRpb24pOworICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwsIDAsIG1fcmVzb3VyY2UtPnVybCgpLCAiTG9hZCBjYW5jZWxsZWQiX3MsIFJl
c291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CiAgICAgICAgIG1fY2xpZW50LT5kaWRG
YWlsKGVycm9yKTsKICAgICB9CiAgICAgY2xlYXJSZXNvdXJjZSgpOwpAQCAtNjMxLDcgKzYzMSw3
IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgfQogCiAgICAgaWYgKHJlc3BvbnNlLmNv
bnRhaW5zSW52YWxpZEhUVFBIZWFkZXJzKCkpIHsKLSAgICAgICAgZGlkRmFpbChpZGVudGlmaWVy
LCBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QudXJs
KCksICJSZXNwb25zZSBjb250YWluZWQgaW52YWxpZCBIVFRQIGhlYWRlcnMiLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpHZW5lcmFsKSk7CisgICAgICAgIGRpZEZhaWwoaWRlbnRpZmllciwgUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLCAiUmVz
cG9uc2UgY29udGFpbmVkIGludmFsaWQgSFRUUCBoZWFkZXJzIl9zLCBSZXNvdXJjZUVycm9yOjpU
eXBlOjpHZW5lcmFsKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IGNlZTgyYTNmMDcxM2FjNDAyZTUyZWZhZDhi
NWEwZjg1YTM0OGU4NDEuLmU2NGQ5YmJhOGYxNDEyMzg0ZTAwNjkwMTBhMjljY2NmMTk5OTFhMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMjAzLDcgKzIw
Myw3IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1MRm9y
bUVsZW1lbnQmIGZvcm0sIEhUTUxGb3JtQ29udHJvCiAgICAgaWYgKGNvcGllZEF0dHJpYnV0ZXMu
bWV0aG9kKCkgPT0gTWV0aG9kOjpQb3N0KSB7CiAgICAgICAgIGlzTXVsdGlQYXJ0Rm9ybSA9IGNv
cGllZEF0dHJpYnV0ZXMuaXNNdWx0aVBhcnRGb3JtKCk7CiAgICAgICAgIGlmIChpc011bHRpUGFy
dEZvcm0gJiYgaXNNYWlsdG9Gb3JtKSB7Ci0gICAgICAgICAgICBlbmNvZGluZ1R5cGUgPSAiYXBw
bGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIjsKKyAgICAgICAgICAgIGVuY29kaW5nVHlw
ZSA9ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiX3M7CiAgICAgICAgICAgICBp
c011bHRpUGFydEZvcm0gPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTIyMSw3ICsyMjEs
NyBAQCBSZWY8Rm9ybVN1Ym1pc3Npb24+IEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUoSFRNTEZvcm1F
bGVtZW50JiBmb3JtLCBIVE1MRm9ybUNvbnRybwogCiAgICAgaWYgKGlzTXVsdGlQYXJ0Rm9ybSkg
ewogICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoZG9tRm9ybURh
dGEpOwotICAgICAgICBib3VuZGFyeSA9IGZvcm1EYXRhLT5ib3VuZGFyeSgpLmRhdGEoKTsKKyAg
ICAgICAgYm91bmRhcnkgPSBTdHJpbmcgeyBmb3JtRGF0YS0+Ym91bmRhcnkoKS5kYXRhKCkgfTsK
ICAgICB9IGVsc2UgewogICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoZG9tRm9y
bURhdGEsIGF0dHJpYnV0ZXMubWV0aG9kKCkgPT0gTWV0aG9kOjpHZXQgPyBGb3JtRGF0YTo6Rm9y
bVVSTEVuY29kZWQgOiBGb3JtRGF0YTo6cGFyc2VFbmNvZGluZ1R5cGUoZW5jb2RpbmdUeXBlKSk7
CiAgICAgICAgIGlmIChjb3BpZWRBdHRyaWJ1dGVzLm1ldGhvZCgpID09IE1ldGhvZDo6UG9zdCAm
JiBpc01haWx0b0Zvcm0pIHsKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIEZvcm1TdWJtaXNzaW9u
Ojpwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVSZXF1ZXN0
KQogICAgICAgICBmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVy
KG1fcmVmZXJyZXIpOwogCiAgICAgaWYgKG1fbWV0aG9kID09IE1ldGhvZDo6UG9zdCkgewotICAg
ICAgICBmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUE1ldGhvZCgiUE9TVCIp
OworICAgICAgICBmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUE1ldGhvZCgi
UE9TVCJfcyk7CiAgICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQ
Qm9keShtX2Zvcm1EYXRhLmNvcHlSZWYoKSk7CiAKICAgICAgICAgLy8gY29uc3RydWN0IHNvbWUg
dXNlciBoZWFkZXJzIGlmIG5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKaW5kZXggOTZlNjJiYTU5NWQzYzEzMjA2M2I1YTRhOWJlMTY2YTA0M2QxYzExOS4uOWVkODA2
YjRjM2NiMTgyNmE3NDMyYTZkNjhmYjYzZmYwNzUyOWM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCkBAIC0yOTcxLDcgKzI5NzEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1
cGRhdGVSZXF1ZXN0QW5kQWRkRXh0cmFGaWVsZHMoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBJ
c01haQogICAgIC8vIE9ubHkgc2V0IGZhbGxiYWNrIGFycmF5IGlmIGl0J3Mgc3RpbGwgZW1wdHkg
KGxhdGVyIGF0dGVtcHRzIG1heSBiZSBpbmNvcnJlY3QsIHNlZSBidWcgMTE3ODE4KS4KICAgICBp
ZiAocmVxdWVzdC5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eSgpLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBBbHdheXMgdHJ5IFVURi04LiBJZiB0aGF0IGZh
aWxzLCB0cnkgZnJhbWUgZW5jb2RpbmcgKGlmIGFueSkgYW5kIHRoZW4gdGhlIGRlZmF1bHQuCi0g
ICAgICAgIHJlcXVlc3Quc2V0UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXkoIlVURi04IiwgbV9mcmFtZS5kb2N1bWVudCgpLT5lbmNvZGluZygpLCBtX2ZyYW1l
LnNldHRpbmdzKCkuZGVmYXVsdFRleHRFbmNvZGluZ05hbWUoKSk7CisgICAgICAgIHJlcXVlc3Qu
c2V0UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoIlVURi04
Il9zLCBtX2ZyYW1lLmRvY3VtZW50KCktPmVuY29kaW5nKCksIG1fZnJhbWUuc2V0dGluZ3MoKS5k
ZWZhdWx0VGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICB9CiAKICAgICBpZiAoc2hvdWxkVXBkYXRl
ID09IFNob3VsZFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlOjpZZXMgJiYgbV9mcmFtZS5tYWluRnJh
bWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQpAQCAtMzA2MSw3ICszMDYxLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkKICAgICAg
ICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAg
IHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE9yaWdpbihvcmlnaW4pOwotICAgIHdvcmtp
bmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOworICAgIHdvcmtpbmdSZXNv
dXJjZVJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCJfcyk7CiAgICAgd29ya2luZ1Jlc291cmNl
UmVxdWVzdC5zZXRIVFRQQm9keShpblJlcXVlc3QuaHR0cEJvZHkoKSk7CiAgICAgd29ya2luZ1Jl
c291cmNlUmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoY29udGVudFR5cGUpOwogICAgIHVwZGF0
ZVJlcXVlc3RBbmRBZGRFeHRyYUZpZWxkcyh3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBJc01haW5S
ZXNvdXJjZTo6WWVzLCBsb2FkVHlwZSwgU2hvdWxkVXBkYXRlQXBwSW5pdGlhdGVkVmFsdWU6Olll
cywgRnJhbWVMb2FkZXI6OklzU2VydmljZVdvcmtlck5hdmlnYXRpb25Mb2FkOjpObywgJnJlcXVl
c3QucmVxdWVzdGVyKCkpOwpAQCAtMzgxOCw3ICszODE4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
bG9hZERpZmZlcmVudERvY3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0ZW0q
IGZyb20KICAgICAvLyBJZiB0aGlzIHdhcyBhIHJlcG9zdCB0aGF0IGZhaWxlZCB0aGUgcGFnZSBj
YWNoZSwgd2UgbWlnaHQgdHJ5IHRvIHJlcG9zdCB0aGUgZm9ybS4KICAgICBOYXZpZ2F0aW9uQWN0
aW9uIGFjdGlvbjsKICAgICBpZiAoZm9ybURhdGEpIHsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
TWV0aG9kKCJQT1NUIik7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCJfcyk7
CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAg
ICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlwZShpdGVtLmZvcm1Db250ZW50VHlwZSgpKTsKICAg
ICAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3Ry
aW5nKGl0ZW0ucmVmZXJyZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApp
bmRleCBjM2NiNmQ0ODI5MGIyMWFiYTE4NjVlZGNhZDQ1M2VkZDZhNzczMzQ1Li5jYjMzNmY4Y2Iw
MWNhYmQ1M2FhMjc5OGNlNjgwODk4N2NmNjYwOTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFn
ZUxvYWRlci5jcHAKQEAgLTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVzb2x2
ZVByb21pc2VzKFZlY3RvcjxSZWZQdHI8RGVmZXJyZWRQcm9taXNlPj4mIHByb21pc2VzKQogICAg
ICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCByZWplY3RQ
cm9taXNlcyhWZWN0b3I8UmVmUHRyPERlZmVycmVkUHJvbWlzZT4+JiBwcm9taXNlcywgY29uc3Qg
Y2hhciogbWVzc2FnZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCByZWplY3RQcm9taXNlcyhWZWN0b3I8
UmVmUHRyPERlZmVycmVkUHJvbWlzZT4+JiBwcm9taXNlcywgQVNDSUlMaXRlcmFsIG1lc3NhZ2Up
CiB7CiAgICAgQVNTRVJUKCFwcm9taXNlcy5pc0VtcHR5KCkpOwogICAgIGF1dG8gcHJvbWlzZXNU
b0JlUmVqZWN0ZWQgPSBzdGQ6OmV4Y2hhbmdlKHByb21pc2VzLCB7IH0pOwpAQCAtMzQxLDcgKzM0
MSw3IEBAIGlubGluZSB2b2lkIEltYWdlTG9hZGVyOjpyZXNvbHZlRGVjb2RlUHJvbWlzZXMoKQog
ICAgIHJlc29sdmVQcm9taXNlcyhtX2RlY29kaW5nUHJvbWlzZXMpOwogfQogCi1pbmxpbmUgdm9p
ZCBJbWFnZUxvYWRlcjo6cmVqZWN0RGVjb2RlUHJvbWlzZXMoY29uc3QgY2hhciogbWVzc2FnZSkK
K2lubGluZSB2b2lkIEltYWdlTG9hZGVyOjpyZWplY3REZWNvZGVQcm9taXNlcyhBU0NJSUxpdGVy
YWwgbWVzc2FnZSkKIHsKICAgICByZWplY3RQcm9taXNlcyhtX2RlY29kaW5nUHJvbWlzZXMsIG1l
c3NhZ2UpOwogfQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyCiAg
ICAgICAgIGVsZW1lbnQoKS5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKIAogICAgICAgICBp
ZiAoaGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkpCi0gICAgICAgICAgICByZWplY3REZWNvZGVQ
cm9taXNlcygiQWNjZXNzIGNvbnRyb2wgZXJyb3IuIik7CisgICAgICAgICAgICByZWplY3REZWNv
ZGVQcm9taXNlcygiQWNjZXNzIGNvbnRyb2wgZXJyb3IuIl9zKTsKICAgICAgICAgCiAgICAgICAg
IEFTU0VSVCghbV9oYXNQZW5kaW5nTG9hZEV2ZW50KTsKIApAQCAtMzg3LDcgKzM4Nyw3IEBAIHZv
aWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyCiAKICAgICBpZiAobV9pbWFnZS0+d2FzQ2FuY2VsZWQoKSkg
ewogICAgICAgICBpZiAoaGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkpCi0gICAgICAgICAgICBy
ZWplY3REZWNvZGVQcm9taXNlcygiTG9hZGluZyB3YXMgY2FuY2VsZWQuIik7CisgICAgICAgICAg
ICByZWplY3REZWNvZGVQcm9taXNlcygiTG9hZGluZyB3YXMgY2FuY2VsZWQuIl9zKTsKICAgICAg
ICAgbV9oYXNQZW5kaW5nTG9hZEV2ZW50ID0gZmFsc2U7CiAgICAgICAgIC8vIE9ubHkgY29uc2lk
ZXIgdXBkYXRpbmcgdGhlIHByb3RlY3Rpb24gcmVmLWNvdW50IG9mIHRoZSBFbGVtZW50IGltbWVk
aWF0ZWx5IGJlZm9yZSByZXR1cm5pbmcKICAgICAgICAgLy8gZnJvbSB0aGlzIGZ1bmN0aW9uIGFz
IGRvaW5nIHNvIG1pZ2h0IHJlc3VsdCBpbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhpcyBJbWFnZUxv
YWRlci4KQEAgLTQ2NCwxMyArNDY0LDEzIEBAIHZvaWQgSW1hZ2VMb2FkZXI6OmRlY29kZShSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgbV9kZWNvZGluZ1Byb21pc2VzLmFwcGVu
ZChXVEZNb3ZlKHByb21pc2UpKTsKIAogICAgIGlmICghZWxlbWVudCgpLmRvY3VtZW50KCkuZG9t
V2luZG93KCkpIHsKLSAgICAgICAgcmVqZWN0RGVjb2RlUHJvbWlzZXMoIkluYWN0aXZlIGRvY3Vt
ZW50LiIpOworICAgICAgICByZWplY3REZWNvZGVQcm9taXNlcygiSW5hY3RpdmUgZG9jdW1lbnQu
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEF0b21TdHJpbmcgYXR0ciA9IGVs
ZW1lbnQoKS5pbWFnZVNvdXJjZVVSTCgpOwogICAgIGlmIChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMoYXR0cikuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlamVjdERlY29kZVByb21p
c2VzKCJNaXNzaW5nIHNvdXJjZSBVUkwuIik7CisgICAgICAgIHJlamVjdERlY29kZVByb21pc2Vz
KCJNaXNzaW5nIHNvdXJjZSBVUkwuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
NDgzLDEyICs0ODMsMTIgQEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGVjb2RlKCkKICAgICBBU1NFUlQo
aGFzUGVuZGluZ0RlY29kZVByb21pc2VzKCkpOwogICAgIAogICAgIGlmICghZWxlbWVudCgpLmRv
Y3VtZW50KCkuZG9tV2luZG93KCkpIHsKLSAgICAgICAgcmVqZWN0RGVjb2RlUHJvbWlzZXMoIklu
YWN0aXZlIGRvY3VtZW50LiIpOworICAgICAgICByZWplY3REZWNvZGVQcm9taXNlcygiSW5hY3Rp
dmUgZG9jdW1lbnQuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghbV9p
bWFnZSB8fCAhbV9pbWFnZS0+aW1hZ2UoKSB8fCBtX2ltYWdlLT5lcnJvck9jY3VycmVkKCkpIHsK
LSAgICAgICAgcmVqZWN0RGVjb2RlUHJvbWlzZXMoIkxvYWRpbmcgZXJyb3IuIik7CisgICAgICAg
IHJlamVjdERlY29kZVByb21pc2VzKCJMb2FkaW5nIGVycm9yLiJfcyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggYWFhMTQxNDk4
OGVkYzg2ODM1NjJjZTdjNjAwMjE0ZmVlOTNmNTE2Ny4uMTU4N2RhZmFkMTlkNmUzNDdhNDMwNjEy
ZTk1MDYxODdlZTdjM2M3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKQEAgLTEx
Myw3ICsxMTMsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBoYXNQZW5kaW5nRGVjb2RlUHJvbWlz
ZXMoKSBjb25zdCB7IHJldHVybiAhbV9kZWNvZGluZ1Byb21pc2VzLmlzRW1wdHkoKTsgfQogICAg
IHZvaWQgcmVzb2x2ZURlY29kZVByb21pc2VzKCk7Ci0gICAgdm9pZCByZWplY3REZWNvZGVQcm9t
aXNlcyhjb25zdCBjaGFyKiBtZXNzYWdlKTsKKyAgICB2b2lkIHJlamVjdERlY29kZVByb21pc2Vz
KEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKTsKICAgICB2b2lkIGRlY29kZSgpOwogICAgIAogICAgIHZv
aWQgdGltZXJGaXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVk
Q29udGVudENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENo
ZWNrZXIuY3BwCmluZGV4IDIxOTBkOTdiOGQ4YTFkZGUyMWIzN2FiMjg0MjExYWJiNTE1Yzk0ZjAu
LmY0YzVhMjVmYTJhY2I4MTU4ZmViMmJlOGI4ODM2NWMxYzU1ZDM3Y2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKQEAgLTUyLDEwICs1MiwxMCBA
QCBib29sIE1peGVkQ29udGVudENoZWNrZXI6OmlzTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2lu
JiBzZWN1cml0eU9yaWdpbiwgY29uc3QgVQogICAgIHJldHVybiAhU2VjdXJpdHlPcmlnaW46Omlz
U2VjdXJlKHVybCk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ1dhcm5pbmcoY29uc3QgRnJhbWUmIGZy
YW1lLCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBVUkwmIHRhcmdl
dCkKK3N0YXRpYyB2b2lkIGxvZ1dhcm5pbmcoY29uc3QgRnJhbWUmIGZyYW1lLCBib29sIGFsbG93
ZWQsIEFTQ0lJTGl0ZXJhbCBhY3Rpb24sIGNvbnN0IFVSTCYgdGFyZ2V0KQogewogICAgIGNvbnN0
IGNoYXIqIGVycm9yU3RyaW5nID0gYWxsb3dlZCA/ICIgd2FzIGFsbG93ZWQgdG8gIiA6ICIgd2Fz
IG5vdCBhbGxvd2VkIHRvICI7Ci0gICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygoYWxsb3dl
ZCA/IFN0cmluZygpIDogIltibG9ja2VkXSAiKSwgIlRoZSBwYWdlIGF0ICIsIGZyYW1lLmRvY3Vt
ZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCBlcnJvclN0cmlu
ZywgYWN0aW9uLCAiIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiLCB0YXJnZXQuc3RyaW5nQ2VudGVy
RWxsaXBzaXplZFRvTGVuZ3RoKCksICIuXG4iKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3Ry
aW5nKChhbGxvd2VkID8gIiIgOiAiW2Jsb2NrZWRdICIpLCAiVGhlIHBhZ2UgYXQgIiwgZnJhbWUu
ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksIGVycm9y
U3RyaW5nLCBhY3Rpb24sICIgaW5zZWN1cmUgY29udGVudCBmcm9tICIsIHRhcmdldC5zdHJpbmdD
ZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIi5cbiIpOwogICAgIGZyYW1lLmRvY3VtZW50KCkt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsIG1lc3NhZ2UpOwogfQogCkBAIC03Miw3ICs3Miw3IEBAIGJvb2wgTWl4ZWRDb250
ZW50Q2hlY2tlcjo6Y2FuRGlzcGxheUluc2VjdXJlQ29udGVudChGcmFtZSYgZnJhbWUsIFNlY3Vy
aXR5T3JpZ2luCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYm9vbCBhbGxvd2VkID0gIWlz
U3RyaWN0TW9kZSAmJiAoZnJhbWUuc2V0dGluZ3MoKS5hbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29u
dGVudCgpIHx8IHR5cGUgPT0gQ29udGVudFR5cGU6OkFjdGl2ZUNhbldhcm4pICYmICFmcmFtZS5k
b2N1bWVudCgpLT5nZW9sb2NhdGlvbkFjY2Vzc2VkKCk7Ci0gICAgbG9nV2FybmluZyhmcmFtZSwg
YWxsb3dlZCwgImRpc3BsYXkiLCB1cmwpOworICAgIGxvZ1dhcm5pbmcoZnJhbWUsIGFsbG93ZWQs
ICJkaXNwbGF5Il9zLCB1cmwpOwogCiAgICAgaWYgKGFsbG93ZWQpIHsKICAgICAgICAgZnJhbWUu
ZG9jdW1lbnQoKS0+c2V0Rm91bmRNaXhlZENvbnRlbnQoU2VjdXJpdHlDb250ZXh0OjpNaXhlZENv
bnRlbnRUeXBlOjpJbmFjdGl2ZSk7CkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgTWl4ZWRDb250ZW50
Q2hlY2tlcjo6Y2FuUnVuSW5zZWN1cmVDb250ZW50KEZyYW1lJiBmcmFtZSwgU2VjdXJpdHlPcmln
aW4mIHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgYWxsb3dlZCA9ICFmcmFt
ZS5kb2N1bWVudCgpLT5pc1N0cmljdE1peGVkQ29udGVudE1vZGUoKSAmJiBmcmFtZS5zZXR0aW5n
cygpLmFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KCkgJiYgIWZyYW1lLmRvY3VtZW50KCkt
Pmdlb2xvY2F0aW9uQWNjZXNzZWQoKSAmJiAhZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJlQ29va2ll
c0FjY2Vzc2VkKCk7Ci0gICAgbG9nV2FybmluZyhmcmFtZSwgYWxsb3dlZCwgInJ1biIsIHVybCk7
CisgICAgbG9nV2FybmluZyhmcmFtZSwgYWxsb3dlZCwgInJ1biJfcywgdXJsKTsKIAogICAgIGlm
IChhbGxvd2VkKSB7CiAgICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnNldEZvdW5kTWl4ZWRDb250
ZW50KFNlY3VyaXR5Q29udGV4dDo6TWl4ZWRDb250ZW50VHlwZTo6QWN0aXZlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9QaW5nTG9hZGVyLmNwcAppbmRleCA2NmU3YTM5M2YzNGNlMzcyZWMzMGZmY2I1NDY4
MDc3ZTEyMzgxOGNmLi4wZTJhM2QzZDJjMGE0ZjQ1ZWE3YTkzODkwZmQyYTg3ODgyOWUwMTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCkBAIC0xMzQsOCArMTM0LDggQEAgdm9p
ZCBQaW5nTG9hZGVyOjpzZW5kUGluZyhGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgcGluZ1VSTCwg
Y29uc3QgVVJMJiBkZXN0aW5hdGkKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVu
dCgpOwogICAgIGRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT51cGdyYWRlSW5zZWN1
cmVSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNlY3Vy
ZVJlcXVlc3RUeXBlOjpMb2FkKTsKIAotICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIp
OwotICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKCJ0ZXh0L3BpbmciKTsKKyAgICByZXF1
ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiX3MpOworICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRU
eXBlKCJ0ZXh0L3BpbmciX3MpOwogICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoRm9ybURhdGE6OmNy
ZWF0ZSgiUElORyIpKTsKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6Q2FjaGVDb250cm9sLCBIVFRQSGVhZGVyVmFsdWVzOjptYXhBZ2UwKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKaW5kZXgg
ZTU1NWIyNzk3ZDhjNWNmNzI5OGU3NzA5OTVkNmJmZDAwZGFiMzc5My4uNDZiNWM5ZTIzZDUyNWJl
ZDFjZjcyNjgwOTM5NTZlNDU3YWEwMDY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcApAQCAtNzIsMTUgKzcyLDE1IEBAIHN0YXRpYyB2
b2lkIGVuY29kZUhhc2hTZXQoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIGxh
YmVsLCAgY29uc3QgU3RyCiAKIHN0YXRpYyB2b2lkIGVuY29kZUZvbnRIYXNoU2V0KEtleWVkRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBoYXNoU2V0KQogewotICAgIGVuY29kZUhhc2hTZXQoZW5jb2RlciwgbGFiZWwsICJmb250Iiwg
aGFzaFNldCk7CisgICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCBsYWJlbCwgImZvbnQiX3MsIGhh
c2hTZXQpOwogfQogICAgIAogc3RhdGljIHZvaWQgZW5jb2RlQ2FudmFzQWN0aXZpdHlSZWNvcmQo
S2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBDYW52YXNB
Y3Rpdml0eVJlY29yZCYgY2FudmFzQWN0aXZpdHlSZWNvcmQpCiB7CiAgICAgZW5jb2Rlci5lbmNv
ZGVPYmplY3QobGFiZWwsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLCBbXSAoS2V5ZWRFbmNvZGVyJiBl
bmNvZGVySW5uZXIsIGNvbnN0IENhbnZhc0FjdGl2aXR5UmVjb3JkJiBjYW52YXNBY3Rpdml0eVJl
Y29yZCkgewotICAgICAgICBlbmNvZGVySW5uZXIuZW5jb2RlQm9vbCgid2FzRGF0YVJlYWQiLCBj
YW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCk7Ci0gICAgICAgIGVuY29kZXJJbm5lci5l
bmNvZGVPYmplY3RzKCJ0ZXh0V3JpdHRlbiIsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0
dGVuLmJlZ2luKCksIGNhbnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVuLmVuZCgpLCBbXSAo
S2V5ZWRFbmNvZGVyJiBlbmNvZGVySW5uZXIyLCBjb25zdCBTdHJpbmcmIHRleHQpIHsKLSAgICAg
ICAgICAgIGVuY29kZXJJbm5lcjIuZW5jb2RlU3RyaW5nKCJ0ZXh0IiwgdGV4dCk7CisgICAgICAg
IGVuY29kZXJJbm5lci5lbmNvZGVCb29sKCJ3YXNEYXRhUmVhZCJfcywgY2FudmFzQWN0aXZpdHlS
ZWNvcmQud2FzRGF0YVJlYWQpOworICAgICAgICBlbmNvZGVySW5uZXIuZW5jb2RlT2JqZWN0cygi
dGV4dFdyaXR0ZW4iX3MsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVuLmJlZ2luKCks
IGNhbnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVuLmVuZCgpLCBbXSAoS2V5ZWRFbmNvZGVy
JiBlbmNvZGVySW5uZXIyLCBjb25zdCBTdHJpbmcmIHRleHQpIHsKKyAgICAgICAgICAgIGVuY29k
ZXJJbm5lcjIuZW5jb2RlU3RyaW5nKCJ0ZXh0Il9zLCB0ZXh0KTsKICAgICAgICAgfSk7CiAgICAg
fSk7CiB9CkBAIC0xMDMsOSArMTAzLDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpl
bmNvZGUoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIC8vIFRvcCBmcmFtZSBzdGF0
cwogICAgIGVuY29kZUhhc2hTZXQoZW5jb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8i
X3MsICJkb21haW4iX3MsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pOwogICAgIGVuY29kZUhh
c2hTZXQoZW5jb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgImRvbWFpbiJf
cywgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKTsKLSAgICBlbmNvZGVIYXNoU2V0KGVuY29k
ZXIsICJ0b3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iX3MsICJkb21haW4iLCB0b3BGcmFtZUxp
bmtEZWNvcmF0aW9uc0Zyb20pOworICAgIGVuY29kZUhhc2hTZXQoZW5jb2RlciwgInRvcEZyYW1l
TGlua0RlY29yYXRpb25zRnJvbSJfcywgImRvbWFpbiJfcywgdG9wRnJhbWVMaW5rRGVjb3JhdGlv
bnNGcm9tKTsKICAgICBlbmNvZGVyLmVuY29kZUJvb2woImdvdExpbmtEZWNvcmF0aW9uRnJvbVBy
ZXZhbGVudFJlc291cmNlIl9zLCBnb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJj
ZSk7Ci0gICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCAidG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5
U2NyaXB0cyJfcywgImRvbWFpbiIsIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMpOwor
ICAgIGVuY29kZUhhc2hTZXQoZW5jb2RlciwgInRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlw
dHMiX3MsICJkb21haW4iX3MsIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMpOwogCiAg
ICAgLy8gU3ViZnJhbWUgc3RhdHMKICAgICBlbmNvZGVIYXNoU2V0KGVuY29kZXIsICJzdWJmcmFt
ZVVuZGVyVG9wRnJhbWVEb21haW5zIl9zLCAiZG9tYWluIl9zLCBzdWJmcmFtZVVuZGVyVG9wRnJh
bWVEb21haW5zKTsKQEAgLTEyNCwxMiArMTI0LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6ZW5jb2RlKEtleWVkRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVu
Y29kZVVJbnQzMigidGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQ
SSJfcywgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSk7CiAK
ICNpZiBFTkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQotICAgIGVuY29kZUZvbnRIYXNoU2V0KGVu
Y29kZXIsICJmb250c0ZhaWxlZFRvTG9hZCIsIGZvbnRzRmFpbGVkVG9Mb2FkKTsKLSAgICBlbmNv
ZGVGb250SGFzaFNldChlbmNvZGVyLCAiZm9udHNTdWNjZXNzZnVsbHlMb2FkZWQiLCBmb250c1N1
Y2Nlc3NmdWxseUxvYWRlZCk7Ci0gICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCAidG9wRnJhbWVS
ZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyIsICJkb21haW4iLCB0b3BGcmFt
ZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzKTsKLSAgICBlbmNvZGVDYW52
YXNBY3Rpdml0eVJlY29yZChlbmNvZGVyLCAiY2FudmFzQWN0aXZpdHlSZWNvcmQiLCBjYW52YXNB
Y3Rpdml0eVJlY29yZCk7Ci0gICAgZW5jb2RlT3B0aW9uU2V0KGVuY29kZXIsICJuYXZpZ2F0b3JG
dW5jdGlvbnNBY2Nlc3NlZEJpdE1hc2siLCBuYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZCk7Ci0g
ICAgZW5jb2RlT3B0aW9uU2V0KGVuY29kZXIsICJzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZEJpdE1h
c2siLCBzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZCk7CisgICAgZW5jb2RlRm9udEhhc2hTZXQoZW5j
b2RlciwgImZvbnRzRmFpbGVkVG9Mb2FkIl9zLCBmb250c0ZhaWxlZFRvTG9hZCk7CisgICAgZW5j
b2RlRm9udEhhc2hTZXQoZW5jb2RlciwgImZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkIl9zLCBmb250
c1N1Y2Nlc3NmdWxseUxvYWRlZCk7CisgICAgZW5jb2RlSGFzaFNldChlbmNvZGVyLCAidG9wRnJh
bWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyJfcywgImRvbWFpbiJfcywg
dG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyk7CisgICAgZW5j
b2RlQ2FudmFzQWN0aXZpdHlSZWNvcmQoZW5jb2RlciwgImNhbnZhc0FjdGl2aXR5UmVjb3JkIl9z
LCBjYW52YXNBY3Rpdml0eVJlY29yZCk7CisgICAgZW5jb2RlT3B0aW9uU2V0KGVuY29kZXIsICJu
YXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZEJpdE1hc2siX3MsIG5hdmlnYXRvckZ1bmN0aW9uc0Fj
Y2Vzc2VkKTsKKyAgICBlbmNvZGVPcHRpb25TZXQoZW5jb2RlciwgInNjcmVlbkZ1bmN0aW9uc0Fj
Y2Vzc2VkQml0TWFzayJfcywgc2NyZWVuRnVuY3Rpb25zQWNjZXNzZWQpOwogI2VuZGlmCiB9CiAK
QEAgLTEzOCwxMSArMTM4LDExIEBAIHN0YXRpYyB2b2lkIGRlY29kZUhhc2hDb3VudGVkU2V0KEtl
eWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgSGFzCiAgICAgVmVjdG9y
PFN0cmluZz4gaWdub3JlZDsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW51c2VkLXJlc3VsdCIp
CiAgICAgZGVjb2Rlci5kZWNvZGVPYmplY3RzKGxhYmVsLCBpZ25vcmVkLCBbJmhhc2hDb3VudGVk
U2V0XShLZXllZERlY29kZXImIGRlY29kZXJJbm5lciwgU3RyaW5nJiBkb21haW4pIHsKLSAgICAg
ICAgaWYgKCFkZWNvZGVySW5uZXIuZGVjb2RlU3RyaW5nKCJvcmlnaW4iLCBkb21haW4pKQorICAg
ICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVTdHJpbmcoIm9yaWdpbiJfcywgZG9tYWluKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIGNv
dW50OwotICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVVSW50MzIoImNvdW50IiwgY291
bnQpKQorICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVVSW50MzIoImNvdW50Il9zLCBj
b3VudCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaGFzaENvdW50ZWRT
ZXQuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVE
b21haW5TdHJpbmcoZG9tYWluKSwgY291bnQpOwpAQCAtMTkwLDE4ICsxOTAsMTggQEAgSUdOT1JF
X1dBUk5JTkdTX0VORAogCiBzdGF0aWMgdm9pZCBkZWNvZGVGb250SGFzaFNldChLZXllZERlY29k
ZXImIGRlY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEhhc2hTZXQ8U3RyaW5nPiYgaGFzaFNl
dCkKIHsKLSAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsIGxhYmVsLCAiZm9udCIsIGhhc2hTZXQp
OworICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgbGFiZWwsICJmb250Il9zLCBoYXNoU2V0KTsK
IH0KICAgICAKIHN0YXRpYyB2b2lkIGRlY29kZUNhbnZhc0FjdGl2aXR5UmVjb3JkKEtleWVkRGVj
b2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ2FudmFzQWN0aXZpdHlSZWNvcmQm
IGNhbnZhc0FjdGl2aXR5UmVjb3JkKQogewogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnVzZWQt
cmVzdWx0IikKICAgICBkZWNvZGVyLmRlY29kZU9iamVjdChsYWJlbCwgY2FudmFzQWN0aXZpdHlS
ZWNvcmQsIFtdIChLZXllZERlY29kZXImIGRlY29kZXJJbm5lciwgQ2FudmFzQWN0aXZpdHlSZWNv
cmQmIGNhbnZhc0FjdGl2aXR5UmVjb3JkKSB7Ci0gICAgICAgIGlmICghZGVjb2RlcklubmVyLmRl
Y29kZUJvb2woIndhc0RhdGFSZWFkIiwgY2FudmFzQWN0aXZpdHlSZWNvcmQud2FzRGF0YVJlYWQp
KQorICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVCb29sKCJ3YXNEYXRhUmVhZCJfcywg
Y2FudmFzQWN0aXZpdHlSZWNvcmQud2FzRGF0YVJlYWQpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBpZ25vcmU7Ci0gICAgICAgIGRlY29kZXJJbm5l
ci5kZWNvZGVPYmplY3RzKCJ0ZXh0V3JpdHRlbiIsIGlnbm9yZSwgWyZjYW52YXNBY3Rpdml0eVJl
Y29yZF0gKEtleWVkRGVjb2RlciYgZGVjb2RlcklubmVyMiwgU3RyaW5nJiB0ZXh0KSB7Ci0gICAg
ICAgICAgICBpZiAoIWRlY29kZXJJbm5lcjIuZGVjb2RlU3RyaW5nKCJ0ZXh0IiwgdGV4dCkpCisg
ICAgICAgIGRlY29kZXJJbm5lci5kZWNvZGVPYmplY3RzKCJ0ZXh0V3JpdHRlbiJfcywgaWdub3Jl
LCBbJmNhbnZhc0FjdGl2aXR5UmVjb3JkXSAoS2V5ZWREZWNvZGVyJiBkZWNvZGVySW5uZXIyLCBT
dHJpbmcmIHRleHQpIHsKKyAgICAgICAgICAgIGlmICghZGVjb2RlcklubmVyMi5kZWNvZGVTdHJp
bmcoInRleHQiX3MsIHRleHQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIGNhbnZhc0FjdGl2aXR5UmVjb3JkLnRleHRXcml0dGVuLmFkZCh0ZXh0KTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjE2LDgxICsyMTYsODEgQEAgYm9vbCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCB1bnNpZ25lZCBtb2Rl
bFZlcnNpb24KIHsKICAgICBTdHJpbmcgcmVnaXN0cmFibGVEb21haW5Bc1N0cmluZzsKICAgICBp
ZiAobW9kZWxWZXJzaW9uID49IDE1KSB7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJp
bmcoIlByZXZhbGVudFJlc291cmNlRG9tYWluIiwgcmVnaXN0cmFibGVEb21haW5Bc1N0cmluZykp
CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlRG9t
YWluIl9zLCByZWdpc3RyYWJsZURvbWFpbkFzU3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKCJQ
cmV2YWxlbnRSZXNvdXJjZU9yaWdpbiIsIHJlZ2lzdHJhYmxlRG9tYWluQXNTdHJpbmcpKQorICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKCJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbiJf
cywgcmVnaXN0cmFibGVEb21haW5Bc1N0cmluZykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIHJlZ2lzdHJhYmxlRG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhyZWdpc3RyYWJsZURvbWFpbkFz
U3RyaW5nKTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlQm9vbCgiaGFkVXNlckludGVyYWN0aW9uIiwgaGFkVXNlckludGVyYWN0aW9uKSkKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlQm9vbCgiaGFkVXNlckludGVyYWN0aW9uIl9zLCBoYWRVc2VySW50
ZXJhY3Rpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBTdG9yYWdlIGFjY2Vz
cwogICAgIGlmIChtb2RlbFZlcnNpb24gPj0gMTUpCi0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVj
b2RlciwgInN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyIsICJkb21haW4iLCBzdG9y
YWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOworICAgICAgICBkZWNvZGVIYXNoU2V0KGRl
Y29kZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsICJkb21haW4iX3Ms
IHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyk7CiAgICAgZWxzZQotICAgICAgICBk
ZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMi
LCAib3JpZ2luIiwgc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zKTsKKyAgICAgICAg
ZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5z
Il9zLCAib3JpZ2luIl9zLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogCiAg
ICAgLy8gVG9wIGZyYW1lIHN0YXRzCiAgICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAxNSkgewotICAg
ICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwg
ImRvbWFpbiIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pOwotICAgICAgICBkZWNvZGVIYXNo
U2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCAiZG9tYWluIiwgdG9w
RnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKTsKKyAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVy
LCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcywgImRvbWFpbiJfcywgdG9wRnJhbWVVbmlx
dWVSZWRpcmVjdHNUbyk7CisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgImRvbWFpbiJfcywgdG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNGcm9tKTsKICAgICB9IGVsc2UgaWYgKG1vZGVsVmVyc2lvbiA+PSAxMSkgewogICAgICAgICBI
YXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNU
b0NvdW50ZWQ7Ci0gICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJ0b3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c1RvIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQpOwor
ICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNUbyJfcywgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQpOwogICAgICAgICBm
b3IgKGF1dG8mIGRvbWFpbiA6IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudGVkLnZhbHVl
cygpKQogICAgICAgICAgICAgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUby5hZGQoZG9tYWluKTsK
ICAgICAgICAgCiAgICAgICAgIEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiB0b3BG
cmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21Db3VudGVkOwotICAgICAgICBkZWNvZGVIYXNoQ291bnRl
ZFNldChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIiwgdG9wRnJhbWVVbmlx
dWVSZWRpcmVjdHNGcm9tQ291bnRlZCk7CisgICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRl
Y29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iX3MsIHRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzRnJvbUNvdW50ZWQpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzRnJvbUNvdW50ZWQudmFsdWVzKCkpCiAgICAgICAgICAgICB0b3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c0Zyb20uYWRkKGRvbWFpbik7CiAgICAgfQogCiAgICAgaWYgKG1vZGVs
VmVyc2lvbiA+PSAxNikgewotICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFt
ZUxpbmtEZWNvcmF0aW9uc0Zyb20iLCAiZG9tYWluIiwgdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNG
cm9tKTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woImdvdExpbmtEZWNvcmF0aW9u
RnJvbVByZXZhbGVudFJlc291cmNlIiwgZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVz
b3VyY2UpKQorICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZUxpbmtEZWNv
cmF0aW9uc0Zyb20iX3MsICJkb21haW4iX3MsIHRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSk7
CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVCb29sKCJnb3RMaW5rRGVjb3JhdGlvbkZyb21Q
cmV2YWxlbnRSZXNvdXJjZSJfcywgZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3Vy
Y2UpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChtb2RlbFZl
cnNpb24gPj0gMTcpIHsKICAgICAgICAgSGFzaENvdW50ZWRTZXQ8UmVnaXN0cmFibGVEb21haW4+
IHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNDb3VudGVkOwotICAgICAgICBkZWNvZGVI
YXNoQ291bnRlZFNldChkZWNvZGVyLCAidG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIs
IHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNDb3VudGVkKTsKKyAgICAgICAgZGVjb2Rl
SGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMi
X3MsIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNDb3VudGVkKTsKICAgICAgICAgZm9y
IChhdXRvJiBkb21haW4gOiB0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzQ291bnRlZC52
YWx1ZXMoKSkKICAgICAgICAgICAgIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMuYWRk
KGRvbWFpbik7CiAgICAgfQogCiAgICAgLy8gU3ViZnJhbWUgc3RhdHMKICAgICBpZiAobW9kZWxW
ZXJzaW9uID49IDE1KQotICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdWJmcmFtZVVu
ZGVyVG9wRnJhbWVEb21haW5zIiwgImRvbWFpbiIsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFp
bnMpOworICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdWJmcmFtZVVuZGVyVG9wRnJh
bWVEb21haW5zIl9zLCAiZG9tYWluIl9zLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zKTsK
ICAgICBlbHNlIGlmIChtb2RlbFZlcnNpb24gPj0gMTQpIHsKICAgICAgICAgSGFzaENvdW50ZWRT
ZXQ8UmVnaXN0cmFibGVEb21haW4+IHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVk
OwotICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2lucyIsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkKTsKKyAg
ICAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFt
ZU9yaWdpbnMiX3MsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkKTsKICAgICAg
ICAgZm9yIChhdXRvJiBkb21haW4gOiBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRl
ZC52YWx1ZXMoKSkKICAgICAgICAgICAgIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMuYWRk
KGRvbWFpbik7CiAgICAgfQogCiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKICAgICBpZiAobW9k
ZWxWZXJzaW9uID49IDE1KSB7Ci0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMiLCAiZG9tYWluIiwgc3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lRG9tYWlucyk7Ci0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCAiZG9tYWluIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNUbyk7Ci0gICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzRnJvbSIsICJkb21haW4iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20p
OworICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJh
bWVEb21haW5zIl9zLCAiZG9tYWluIl9zLCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5z
KTsKKyAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNUbyJfcywgImRvbWFpbiJfcywgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7Cisg
ICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
RnJvbSJfcywgImRvbWFpbiJfcywgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gc3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQ7Ci0gICAgICAgIGRlY29kZUhhc2hD
b3VudGVkU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQpOworICAgICAgICBkZWNvZGVIYXNo
Q291bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyJfcywg
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQpOwogICAgICAgICBmb3IgKGF1
dG8mIGRvbWFpbiA6IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkLnZhbHVl
cygpKQogICAgICAgICAgICAgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQoZG9t
YWluKTsKIAogICAgICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQ7Ci0gICAgICAgIGRlY29kZUhhc2hDb3VudGVk
U2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIiwgc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQpOworICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChk
ZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyJfcywgc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUb0NvdW50ZWQpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudGVkLnZhbHVlcygpKQogICAgICAgICAgICAgc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQoZG9tYWluKTsKICAgICAgICAgaWYgKG1vZGVs
VmVyc2lvbiA+PSAxMSkgewogICAgICAgICAgICAgSGFzaENvdW50ZWRTZXQ8UmVnaXN0cmFibGVE
b21haW4+IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbUNvdW50ZWQ7Ci0gICAgICAgICAg
ICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNGcm9tIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tQ291bnRlZCk7CisgICAgICAg
ICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNGcm9tIl9zLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21Db3VudGVkKTsKICAg
ICAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNG
cm9tQ291bnRlZC52YWx1ZXMoKSkKICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c0Zyb20uYWRkKGRvbWFpbik7CiAgICAgICAgIH0KQEAgLTI5OCwxMSArMjk4LDExIEBA
IGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKEtleWVkRGVjb2RlciYgZGVjb2Rl
ciwgdW5zaWduZWQgbW9kZWxWZXJzaW9uCiAKIAogICAgIC8vIFByZXZhbGVudCBSZXNvdXJjZQot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVCb29sKCJpc1ByZXZhbGVudFJlc291cmNlIiwgaXNQcmV2
YWxlbnRSZXNvdXJjZSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woImlzUHJldmFsZW50
UmVzb3VyY2UiX3MsIGlzUHJldmFsZW50UmVzb3VyY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAobW9kZWxWZXJzaW9uID49IDEyKSB7Ci0gICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGVCb29sKCJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSIsIGlzVmVyeVByZXZhbGVudFJlc291
cmNlKSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woImlzVmVyeVByZXZhbGVudFJl
c291cmNlIl9zLCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC0zMTIsMzcgKzMxMiwzNyBAQCBib29sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIsIHVuc2lnbmVkIG1vZGVsVmVy
c2lvbgogICAgICAgICBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSA9IGZhbHNlOwogICAgIH0KIAot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVVSW50MzIoImRhdGFSZWNvcmRzUmVtb3ZlZCIsIGRhdGFS
ZWNvcmRzUmVtb3ZlZCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJbnQzMigiZGF0YVJlY29y
ZHNSZW1vdmVkIl9zLCBkYXRhUmVjb3Jkc1JlbW92ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVBc0RvdWJsZTsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRG91YmxlKCJtb3N0UmVjZW50VXNlckludGVyYWN0aW9uIiwg
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVBc0RvdWJsZSkpCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZURvdWJsZSgibW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiJfcywgbW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblRpbWVBc0RvdWJsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyht
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUFzRG91YmxlKTsKIAotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVCb29sKCJncmFuZGZhdGhlcmVkIiwgZ3JhbmRmYXRoZXJlZCkpCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUJvb2woImdyYW5kZmF0aGVyZWQiX3MsIGdyYW5kZmF0aGVyZWQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBkb3VibGUgbGFzdFNlZW5UaW1lQXNEb3VibGU7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZURvdWJsZSgibGFzdFNlZW4iLCBsYXN0U2VlblRpbWVBc0Rv
dWJsZSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZURvdWJsZSgibGFzdFNlZW4iX3MsIGxhc3RT
ZWVuVGltZUFzRG91YmxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGxhc3RTZWVuID0g
V2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGxhc3RTZWVuVGltZUFzRG91YmxlKTsKIAogICAgIGlm
IChtb2RlbFZlcnNpb24gPj0gMTEpIHsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJbnQz
MigidGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uIiwgdGltZXNB
Y2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKSkKKyAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZVVJbnQzMigidGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlcklu
dGVyYWN0aW9uIl9zLCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rp
b24pKQogICAgICAgICAgICAgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVy
YWN0aW9uID0gMDsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJbnQzMigidGltZXNBY2Nl
c3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSIsIHRpbWVzQWNjZXNzZWRBc0Zp
cnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkpKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlVUludDMyKCJ0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJ
Il9zLCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJKSkKICAg
ICAgICAgICAgIHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkg
PSAwOwogICAgIH0KIAogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCiAgICAgaWYgKG1v
ZGVsVmVyc2lvbiA+PSAxMykgewotICAgICAgICBkZWNvZGVGb250SGFzaFNldChkZWNvZGVyLCAi
Zm9udHNGYWlsZWRUb0xvYWQiLCBmb250c0ZhaWxlZFRvTG9hZCk7Ci0gICAgICAgIGRlY29kZUZv
bnRIYXNoU2V0KGRlY29kZXIsICJmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCIsIGZvbnRzU3VjY2Vz
c2Z1bGx5TG9hZGVkKTsKLSAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAidG9wRnJhbWVS
ZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyIsICJkb21haW4iLCB0b3BGcmFt
ZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzKTsKLSAgICAgICAgZGVjb2Rl
Q2FudmFzQWN0aXZpdHlSZWNvcmQoZGVjb2RlciwgImNhbnZhc0FjdGl2aXR5UmVjb3JkIiwgY2Fu
dmFzQWN0aXZpdHlSZWNvcmQpOwotICAgICAgICBkZWNvZGVPcHRpb25TZXQoZGVjb2RlciwgIm5h
dmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkQml0TWFzayIsIG5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vz
c2VkKTsKLSAgICAgICAgZGVjb2RlT3B0aW9uU2V0KGRlY29kZXIsICJzY3JlZW5GdW5jdGlvbnNB
Y2Nlc3NlZEJpdE1hc2siLCBzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZCk7CisgICAgICAgIGRlY29k
ZUZvbnRIYXNoU2V0KGRlY29kZXIsICJmb250c0ZhaWxlZFRvTG9hZCJfcywgZm9udHNGYWlsZWRU
b0xvYWQpOworICAgICAgICBkZWNvZGVGb250SGFzaFNldChkZWNvZGVyLCAiZm9udHNTdWNjZXNz
ZnVsbHlMb2FkZWQiX3MsIGZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkKTsKKyAgICAgICAgZGVjb2Rl
SGFzaFNldChkZWNvZGVyLCAidG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2Vk
V2ViQVBJcyJfcywgImRvbWFpbiJfcywgdG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFj
Y2Vzc2VkV2ViQVBJcyk7CisgICAgICAgIGRlY29kZUNhbnZhc0FjdGl2aXR5UmVjb3JkKGRlY29k
ZXIsICJjYW52YXNBY3Rpdml0eVJlY29yZCJfcywgY2FudmFzQWN0aXZpdHlSZWNvcmQpOworICAg
ICAgICBkZWNvZGVPcHRpb25TZXQoZGVjb2RlciwgIm5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2Vk
Qml0TWFzayJfcywgbmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWQpOworICAgICAgICBkZWNvZGVP
cHRpb25TZXQoZGVjb2RlciwgInNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkQml0TWFzayJfcywgc2Ny
ZWVuRnVuY3Rpb25zQWNjZXNzZWQpOwogICAgIH0KICNlbmRpZgogCkBAIC00NTAsNDggKzQ1MCw0
OCBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcoKSBjb25zdAogICAg
IGJ1aWxkZXIuYXBwZW5kKCJSZWdpc3RyYWJsZSBkb21haW46ICIsIHJlZ2lzdHJhYmxlRG9tYWlu
LnN0cmluZygpLCAnXG4nKTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KLSAgICBhcHBlbmRC
b29sZWFuKGJ1aWxkZXIsICJoYWRVc2VySW50ZXJhY3Rpb24iLCBoYWRVc2VySW50ZXJhY3Rpb24p
OworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImhhZFVzZXJJbnRlcmFjdGlvbiJfcywgaGFk
VXNlckludGVyYWN0aW9uKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBidWlsZGVy
LmFwcGVuZCgiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICIsIGhhc0hhZFJlY2VudFVz
ZXJJbnRlcmFjdGlvbihtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2luY2VF
cG9jaCgpKSA/ICJ3aXRoaW4gMjQgaG91cnMiIDogIi0xIik7CisgICAgYnVpbGRlci5hcHBlbmQo
IiAgICBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uOiAiX3MsIGhhc0hhZFJlY2VudFVzZXJJbnRl
cmFjdGlvbihtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2luY2VFcG9jaCgp
KSA/ICJ3aXRoaW4gMjQgaG91cnMiIDogIi0xIik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7
Ci0gICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCIsIGdyYW5kZmF0aGVy
ZWQpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImdyYW5kZmF0aGVyZWQiX3MsIGdyYW5k
ZmF0aGVyZWQpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCiAgICAgLy8gU3RvcmFnZSBh
Y2Nlc3MKLSAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BG
cmFtZURvbWFpbnMiLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOworICAgIGFw
cGVuZEhhc2hTZXQoYnVpbGRlciwgInN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyJf
cywgc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zKTsKIAogICAgIC8vIFRvcCBmcmFt
ZSBzdGF0cwotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzVG8iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKTsKLSAgICBhcHBlbmRIYXNoU2V0KGJ1
aWxkZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCB0b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c0Zyb20pOwotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1lTGlua0RlY29y
YXRpb25zRnJvbSIsIHRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSk7Ci0gICAgYXBwZW5kQm9v
bGVhbihidWlsZGVyLCAiZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2UiLCBn
b3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSk7CisgICAgYXBwZW5kSGFzaFNl
dChidWlsZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcywgdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbyk7CisgICAgYXBwZW5kSGFzaFNldChidWlsZGVyLCAidG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNGcm9tIl9zLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOworICAgIGFwcGVu
ZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSJfcywgdG9wRnJh
bWVMaW5rRGVjb3JhdGlvbnNGcm9tKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJnb3RM
aW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSJfcywgZ290TGlua0RlY29yYXRpb25G
cm9tUHJldmFsZW50UmVzb3VyY2UpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGFw
cGVuZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiLCB0
b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzKTsKKyAgICBhcHBlbmRIYXNoU2V0KGJ1aWxk
ZXIsICJ0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIl9zLCB0b3BGcmFtZUxvYWRlZFRo
aXJkUGFydHlTY3JpcHRzKTsKIAogICAgIC8vIFN1YmZyYW1lIHN0YXRzCi0gICAgYXBwZW5kSGFz
aFNldChidWlsZGVyLCAic3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyIsIHN1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbnMpOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInN1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMpOwog
ICAgIAogICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCi0gICAgYXBwZW5kSGFzaFNldChidWlsZGVy
LCAic3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyIsIHN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbnMpOwotICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG8iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKLSAgICBhcHBl
bmRIYXNoU2V0KGJ1aWxkZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCBzdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwg
InN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIHN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbnMpOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG8iX3MsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8pOworICAgIGFw
cGVuZEhhc2hTZXQoYnVpbGRlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywg
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKTsKIAogICAgIC8vIFByZXZhbGVudCBSZXNv
dXJjZQotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFsZW50UmVzb3VyY2UiLCBp
c1ByZXZhbGVudFJlc291cmNlKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ByZXZh
bGVudFJlc291cmNlIl9zLCBpc1ByZXZhbGVudFJlc291cmNlKTsKICAgICBidWlsZGVyLmFwcGVu
ZCgnXG4nKTsKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNv
dXJjZSIsIGlzVmVyeVByZXZhbGVudFJlc291cmNlKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxk
ZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSJfcywgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2Up
OwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgZGF0
YVJlY29yZHNSZW1vdmVkOiAiLCBkYXRhUmVjb3Jkc1JlbW92ZWQpOwogICAgIGJ1aWxkZXIuYXBw
ZW5kKCdcbicpOwogCiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKLSAgICBhcHBlbmRI
YXNoU2V0KGJ1aWxkZXIsICJmb250c0ZhaWxlZFRvTG9hZCIsIGZvbnRzRmFpbGVkVG9Mb2FkKTsK
LSAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCIsIGZv
bnRzU3VjY2Vzc2Z1bGx5TG9hZGVkKTsKLSAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJ0b3BG
cmFtZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzIiwgdG9wRnJhbWVSZWdp
c3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyk7CisgICAgYXBwZW5kSGFzaFNldChi
dWlsZGVyLCAiZm9udHNGYWlsZWRUb0xvYWQiX3MsIGZvbnRzRmFpbGVkVG9Mb2FkKTsKKyAgICBh
cHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCJfcywgZm9udHNT
dWNjZXNzZnVsbHlMb2FkZWQpOworICAgIGFwcGVuZEhhc2hTZXQoYnVpbGRlciwgInRvcEZyYW1l
UmVnaXN0cmFibGVEb21haW5zV2hpY2hBY2Nlc3NlZFdlYkFQSXMiX3MsIHRvcEZyYW1lUmVnaXN0
cmFibGVEb21haW5zV2hpY2hBY2Nlc3NlZFdlYkFQSXMpOwogICAgIGFwcGVuZE5hdmlnYXRvckFQ
SU9wdGlvblNldChidWlsZGVyLCBuYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZCk7CiAgICAgYXBw
ZW5kU2NyZWVuQVBJT3B0aW9uU2V0KGJ1aWxkZXIsIHNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkKTsK
LSAgICBhcHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJjYW52YXNUZXh0V3JpdHRlbiIsIGNhbnZhc0Fj
dGl2aXR5UmVjb3JkLnRleHRXcml0dGVuKTsKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJj
YW52YXNSZWFkRGF0YSIsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLndhc0RhdGFSZWFkKTsKKyAgICBh
cHBlbmRIYXNoU2V0KGJ1aWxkZXIsICJjYW52YXNUZXh0V3JpdHRlbiJfcywgY2FudmFzQWN0aXZp
dHlSZWNvcmQudGV4dFdyaXR0ZW4pOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImNhbnZh
c1JlYWREYXRhIl9zLCBjYW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCk7CiAgICAgYnVp
bGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDYxOTA4MzU0OWY5MmQy
OTlmODUyZjA4MTZmZDk1Yjc3MWU5NDIxYmMuLjQ1ZWQyMTUyMGYwMmVhOWZmY2YyZGE0NGNhMTI1
MGIxYmNlODUyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApA
QCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGlmIChpc1BERkpTUmVzb3VyY2VMb2FkKCkpIHsKLSAgICAgICAg
QnVuZGxlUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZUZyb21CdW5kbGUoKnRoaXMsICJwZGZq
cy8iKTsKKyAgICAgICAgQnVuZGxlUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZUZyb21CdW5k
bGUoKnRoaXMsICJwZGZqcy8iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBA
IC0zMDEsNyArMzAxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoIWRlY29kZVJlc3VsdCkgewogICAgICAgICAg
ICAgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImxvYWREYXRhVVJMOiBkZWNvZGluZyBvZiBk
YXRhIGZhaWxlZCIpOwotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkRmFpbChSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIkRhdGEgVVJMIGRlY29k
aW5nIGZhaWxlZCIpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEZhaWwoUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJEYXRhIFVSTCBkZWNv
ZGluZyBmYWlsZWQiX3MpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBpZiAodGhpcy0+d2FzQ2FuY2VsbGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TZXJ2ZXJUaW1pbmdQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Nl
cnZlclRpbWluZ1BhcnNlci5jcHAKaW5kZXggMDFiZDA1NzNlM2FiNjA5MWUwYzI5MDY2OTk4NGFh
ZWMyYmQzMzc1Ni4uZmIyNDUzNjk2OWNkZGJmYjNjMGE1YTE4MWY4YzE4NWRmNGU4NDIxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZ1BhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NlcnZlclRpbWluZ1BhcnNlci5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgVmVjdG9yPFNlcnZlclRpbWluZz4gcGFyc2VTZXJ2ZXJUaW1pbmcoY29uc3QgU3Ry
aW5nJiBoZWFkZXJWYWx1ZSkKICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJOYW1lLmlzTnVsbCgp
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSAi
IjsKKyAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgICAg
ICBpZiAodG9rZW5pemVyLmNvbnN1bWUoJz0nKSkgewogICAgICAgICAgICAgICAgIHZhbHVlID0g
dG9rZW5pemVyLmNvbnN1bWVUb2tlbk9yUXVvdGVkU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAg
dG9rZW5pemVyLmNvbnN1bWVCZWZvcmVBbnlDaGFyTWF0Y2goeycsJywgJzsnfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3ZWZjZWNjNDkzZjhi
NDE0ODk3NzI2NTUxOTRkNmJhY2YzMTY0ZmMxLi42NTA4Y2NjOTUzMjg1NzNiYmY4MTJiNjFhM2M5
ZTg5Yzc3NTk3ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbQogICAgIENv
bXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1v
dmUocG9saWN5Q29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIGlmIChyZXNwb25zZS5jb250YWlu
c0ludmFsaWRIVFRQSGVhZGVycygpKSB7Ci0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihl
cnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0KCkudXJsKCksICJSZXNwb25zZSBj
b250YWluZWQgaW52YWxpZCBIVFRQIGhlYWRlcnMiLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5l
cmFsKSk7CisgICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCByZXF1ZXN0KCkudXJsKCksICJSZXNwb25zZSBjb250YWluZWQgaW52YWxpZCBI
VFRQIGhlYWRlcnMiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRS
ZXNvdXJjZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURl
Y29kZXIuY3BwCmluZGV4IDU2ZGJjNGUyOTAzZTJlYmMyMGQ2MzQzMzczMDQ0ZDA0ZjYxYjY0MjUu
LjA2MTI4YjZhM2EzYzM3MzFlMWZiNzE2OWQ0ZTlmMTUzMWVjOGQ5YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKQEAgLTMyOSw3ICszMjksNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkUHJlcGVuZEJPTShjb25zdCB1bnNpZ25lZCBjaGFy
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAvLyBodHRwczovL2VuY29kaW5nLnNwZWMud2hhdHdn
Lm9yZy8jdXRmLTgtZGVjb2RlCiBTdHJpbmcgVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21V
VEY4KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICBh
dXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCAi
VVRGLTgiKTsKKyAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUo
InRleHQvcGxhaW4iX3MsICJVVEYtOCIpOwogICAgIGlmIChzaG91bGRQcmVwZW5kQk9NKGRhdGEs
IGxlbmd0aCkpCiAgICAgICAgIGRlY29kZXItPmRlY29kZSgiXHhlZlx4YmJceGJmIiwgMyk7CiAg
ICAgcmV0dXJuIGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
CmluZGV4IDA3MzI0ZGQxZTAwY2EyM2UzZGUzMDg1YTI3MGY4ZWIzNTE3NWE1OWMuLmRmMDQ2MmNm
Mzk0NzNiMDY3ODYzNzgxYjNlMGIyZGEzYTE3MGE3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC01MTIsNyAr
NTEyLDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywgRnIKICAgICBpZiAocmVzcG9uc2VVUkwuaXNO
dWxsKCkpCiAgICAgICAgIHJlc3BvbnNlVVJMID0gVVJMKHsgfSwgZW1wdHlTdHJpbmcoKSk7CiAK
LSAgICBhdXRvIG1haW5SZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHV0ZjhCdWZm
ZXIobWFya3VwU3RyaW5nKSwgcmVzcG9uc2VVUkwsIHJlc3BvbnNlLm1pbWVUeXBlKCksICJVVEYt
OCIsIGZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCkpOworICAgIGF1dG8gbWFpblJlc291cmNlID0g
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihtYXJrdXBTdHJpbmcpLCByZXNwb25z
ZVVSTCwgcmVzcG9uc2UubWltZVR5cGUoKSwgIlVURi04Il9zLCBmcmFtZS50cmVlKCkudW5pcXVl
TmFtZSgpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKQEAgLTYwOCw3ICs2MDgsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgLy8gV3JhcCB0
aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50
bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJh
bWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBm
cmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdp
ZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+
IjsKLSAgICBhdXRvIGlmcmFtZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRm
OEJ1ZmZlcihpZnJhbWVNYXJrdXApLCBhYm91dEJsYW5rVVJMKCksICJ0ZXh0L2h0bWwiLCAiVVRG
LTgiLCBTdHJpbmcoKSk7CisgICAgYXV0byBpZnJhbWVSZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJj
ZTo6Y3JlYXRlKHV0ZjhCdWZmZXIoaWZyYW1lTWFya3VwKSwgYWJvdXRCbGFua1VSTCgpLCAidGV4
dC9odG1sIl9zLCAiVVRGLTgiX3MsIFN0cmluZygpKTsKIAogICAgIHJldHVybiBjcmVhdGUoaWZy
YW1lUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgeyB9LCB7IGFyY2hpdmUucmVsZWFzZU5vbk51
bGwoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCBlOTlmYTVmY2IyYjcyYjA0M2Y4Njg5
OTU0ODA4NmVlMGEwYmUzZDIyLi5hZDIxMDBkYmE1ZGU1ODNiYTQzNDY2M2MwNGY4MDE4MzA2NjJh
YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IENvb2tpZUphciogY29va2llSmFyKQogICAgIDogQ2FjaGVkUmVzb3VyY2Uo
V1RGTW92ZShyZXF1ZXN0KSwgVHlwZTo6QXBwbGljYXRpb25NYW5pZmVzdCwgc2Vzc2lvbklELCBj
b29raWVKYXIpCi0gICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJh
cHBsaWNhdGlvbi9tYW5pZmVzdCtqc29uIiwgUEFMOjpVVEY4RW5jb2RpbmcoKSkpCisgICAgLCBt
X2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi9tYW5pZmVz
dCtqc29uIl9zLCBQQUw6OlVURjhFbmNvZGluZygpKSkKIHsKIH0KIApAQCAtNjEsNyArNjEsNyBA
QCB2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OnNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYgY2hzKQogCiBTdHJpbmcgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZW5jb2RpbmcoKSBj
b25zdAogewotICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOworICAgIHJl
dHVybiBTdHJpbmcgeyBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpIH07CiB9CiAKIHN0ZDo6
b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6
cHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBE
b2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNzBiMzhmNjFmYzBmZjBlYjYyMzJiNDcwMWZm
YjY4OWIwZTYxODY2ZS4uNjNlYzRkNjI3OTkzNzMzYWZiMWU0MTU5MzFkMGQ1Yzk1N2U3MDdmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZENT
U1N0eWxlU2hlZXQ6OkNhY2hlZENTU1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXIqIGNvb2tp
ZUphcikKICAgICA6IENhY2hlZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFR5cGU6OkNTU1N0
eWxlU2hlZXQsIHNlc3Npb25JRCwgY29va2llSmFyKQotICAgICwgbV9kZWNvZGVyKFRleHRSZXNv
dXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9jc3MiLCByZXF1ZXN0LmNoYXJzZXQoKSkpCisgICAg
LCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2NzcyJfcywgcmVx
dWVzdC5jaGFyc2V0KCkpKQogewogfQogCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgQ2FjaGVkQ1NT
U3R5bGVTaGVldDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAg
ICAgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudChjbGllbnQpOwogCiAgICAgaWYgKCFpc0xv
YWRpbmcoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkU3R5bGVTaGVldENsaWVudCY+KGNs
aWVudCkuc2V0Q1NTU3R5bGVTaGVldChtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSwg
bV9yZXNwb25zZS51cmwoKSwgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSwgdGhpcyk7Cisg
ICAgICAgIHN0YXRpY19jYXN0PENhY2hlZFN0eWxlU2hlZXRDbGllbnQmPihjbGllbnQpLnNldENT
U1N0eWxlU2hlZXQobV9yZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCksIG1fcmVzcG9uc2Uu
dXJsKCksIFN0cmluZyB7IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkgfSwgdGhpcyk7CiB9
CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBj
aHMpCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJiBjaHMpCiAKIFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjplbmNv
ZGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7
CisgICAgcmV0dXJuIFN0cmluZyB7IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkgfTsKIH0K
IAogY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNo
ZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwgYm9vbCogaGFzVmFsaWRNSU1FVHlwZSkgY29uc3QK
QEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmNoZWNrTm90aWZ5
KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdh
bGtlcjxDYWNoZWRTdHlsZVNoZWV0Q2xpZW50PiB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENh
Y2hlZFN0eWxlU2hlZXRDbGllbnQqIGMgPSB3Lm5leHQoKSkKLSAgICAgICAgYy0+c2V0Q1NTU3R5
bGVTaGVldChtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgbV9yZXNwb25zZS51cmwo
KSwgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSwgdGhpcyk7CisgICAgICAgIGMtPnNldENT
U1N0eWxlU2hlZXQobV9yZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCksIG1fcmVzcG9uc2Uu
dXJsKCksIFN0cmluZyB7IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkgfSwgdGhpcyk7CiB9
CiAKIFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpyZXNwb25zZU1JTUVUeXBlKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4
IGJiYzFiMzA1OTUyN2Y0YjVjMGYwYzRlOTY2ZDljZDQ4ZGQyODdhZjEuLjczYmVhNmQ0Y2U3YjM4
YjcwYjUwZDIyZDAxOTljMTNkNmE0YzExYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVy
KQogICAgIH0KIAogICAgIGlmICh0eXBlKCkgPT0gVHlwZTo6TGlua1ByZWZldGNoKQotICAgICAg
ICBtX3Jlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlB1
cnBvc2UsICJwcmVmZXRjaCIpOworICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlB1cnBvc2UsICJwcmVmZXRjaCJfcyk7CiAgICAgbV9y
ZXNvdXJjZVJlcXVlc3Quc2V0UHJpb3JpdHkobG9hZFByaW9yaXR5KCkpOwogCiAgICAgLy8gTmF2
aWdhdGlvbiBhbGdvcml0aG0gaXMgc2V0dGluZyB1cCB0aGUgcmVxdWVzdCBiZWZvcmUgc2VuZGlu
ZyBpdCB0byBDYWNoZWRSZXNvdXJjZUxvYWRlcj9DYWNoZWRSZXNvdXJjZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IGRiNDMx
NjA3YWU1NjM4MzAzODAwZGQyNTljMTAzNGNkMDkwZmNmZTEuLmUzM2Y3Nzk0MGVhYjA4MmJmYjEx
YTg0MjExNjRkOWZhNDc5ZDE3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIENhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdEb2N1bWVudChDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENv
b2tpZUphciogY29va2llSmFyLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgOiBDYWNo
ZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBUeXBlOjpTVkdEb2N1bWVudFJlc291cmNlLCBz
ZXNzaW9uSUQsIGNvb2tpZUphcikKLSAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIpKQorICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIl9zKSkKICAgICAsIG1fc2V0dGluZ3Mo
c2V0dGluZ3MpCiB7CiB9CkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6
OnNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYgY2hzKQogCiBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1l
bnQ6OmVuY29kaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygp
Lm5hbWUoKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUo
KSB9OwogfQogCiB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApp
bmRleCBkMmMxZGU0N2VmYjc4MTM5OGY0NDM4YjdjYTRlYTI2MGUyMjE5NzY3Li5lMmRiYjRjNjgz
Y2IyNzQ1ZDcyYTY4OWNjZjY2YjA2ZDJmMGM5MDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgQ2FjaGVk
U1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJ
KQogICAgICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIGR1cmluZyByZW5kZXIgdHJlZSB1cGRh
dGVzIHdoZW4gZXZlbnRzIGFyZSBmb3JiaWRkZW4uCiAgICAgICAgICAgICAvLyBGcmFtZWxlc3Mg
ZG9jdW1lbnQgY2FuJ3QgcnVuIHNjcmlwdHMgb3IgY2FsbCBiYWNrIHRvIHRoZSBjbGllbnQgc28g
dGhpcyBpcyBzYWZlLgogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gU1ZHRG9j
dW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCBVUkwoKSk7Ci0gICAgICAgICAgICBh
dXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3ht
bCIpOworICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3Jl
YXRlKCJhcHBsaWNhdGlvbi94bWwiX3MpOwogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2Vk
U2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDI1ZDA1OGY3YTZl
NmQwODYyNzUzNTU5YmZhYTM4MmY0MDMzZjNiODcuLmYyNjFhZmYxYTk0ODI5M2FjMmIyZWEwOWNi
OWYzN2EzNGJmMjAxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHZvaWQgQ2FjaGVkU2NyaXB0OjpzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmIGNocykKIAogU3RyaW5nIENhY2hlZFNjcmlwdDo6ZW5jb2RpbmcoKSBj
b25zdAogewotICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOworICAgIHJl
dHVybiBTdHJpbmcgeyBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpIH07CiB9CiAKIFN0cmlu
Z1ZpZXcgQ2FjaGVkU2NyaXB0OjpzY3JpcHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IDE3ZWZkNmMzZjZlZDZhYWVj
N2ZiNGE1NWE4Nzc5MTMzOWVjNDk3MGUuLjJjMzAwOTkzZjVkZWQxZjIyNTQ4OWJhMTU2YTY4OWE2
M2FiNWU4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBDYWNoZWRYU0xTdHlsZVNoZWV0OjpDYWNoZWRYU0xTdHlsZVNoZWV0KENhY2hlZFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2ll
SmFyKiBjb29raWVKYXIpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBU
eXBlOjpYU0xTdHlsZVNoZWV0LCBzZXNzaW9uSUQsIGNvb2tpZUphcikKLSAgICAsIG1fZGVjb2Rl
cihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQveHNsIikpCisgICAgLCBtX2RlY29k
ZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3hzbCJfcykpCiB7CiB9CiAKQEAg
LTU4LDcgKzU4LDcgQEAgdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpzZXRFbmNvZGluZyhjb25z
dCBTdHJpbmcmIGNocykKIAogU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSB9OwogfQogCiB2b2lk
IENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggYjIwMmZlZjY3OTI2
ZDFhZThjZjRjYTZjMDA4NzRmZTQ1ZWI1YmZhZC4uMDM0NDRiMzk5YzM2ZTU4NjNhNTZjMWRkZWZi
YzAwNjkxZGRiMDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIE1lbW9yeUNhY2hlOjpNZW1vcnlDYWNoZSgpCiAKICAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUZsYWcsIFtdIHsKLSAgICAgICAgUEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBw
bGUuV2ViS2l0LnNob3dNZW1vcnlDYWNoZSIsIFtdIHsKKyAgICAgICAgUEFMOjpyZWdpc3Rlck5v
dGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dNZW1vcnlDYWNoZSJfcywgW10gewog
ICAgICAgICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmR1bXBTdGF0cygpOwogICAgICAg
ICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmR1bXBMUlVMaXN0cyh0cnVlKTsKICAgICAg
ICAgfSk7CkBAIC01NTgsNyArNTU4LDcgQEAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
PiBNZW1vcnlDYWNoZTo6b3JpZ2luc1dpdGhDYWNoZShQQUw6OlNlc3Npb25JRCBzZXMKICAgICAg
ICAgICAgIGF1dG8mIHJlc291cmNlID0gKmtleVZhbHVlLnZhbHVlOwogICAgICAgICAgICAgYXV0
byYgcGFydGl0aW9uTmFtZSA9IGtleVZhbHVlLmtleS5zZWNvbmQ7CiAgICAgICAgICAgICBpZiAo
IXBhcnRpdGlvbk5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoImh0dHAiLCBwYXJ0aXRpb25OYW1lLCAwKSk7CisgICAgICAg
ICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0cCJfcywgcGFy
dGl0aW9uTmFtZSwgMCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG9yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzb3VyY2UudXJsKCkpKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCmluZGV4IDUyMzBhNjhkYjYx
NGU2N2U2NWQxMWE4ZmUxNDRlZjk2NmZjZWVjNmMuLjY3YzA3OGRjZTQyYzM0YjQxZTQ3OGUyNmY4
MzkyNzBhMjJjZmEwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAK
QEAgLTExNywxMSArMTE3LDExIEBAIGJvb2wgTWF0aE1MRWxlbWVudDo6aGFzUHJlc2VudGF0aW9u
YWxIaW50c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lCiBzdGF0aWMgU3Ry
aW5nIGNvbnZlcnRNYXRoU2l6ZUlmTmVlZGVkKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewog
ICAgIGlmICh2YWx1ZSA9PSAic21hbGwiKQotICAgICAgICByZXR1cm4gIjAuNzVlbSI7CisgICAg
ICAgIHJldHVybiAiMC43NWVtIl9zOwogICAgIGlmICh2YWx1ZSA9PSAibm9ybWFsIikKLSAgICAg
ICAgcmV0dXJuICIxZW0iOworICAgICAgICByZXR1cm4gIjFlbSJfczsKICAgICBpZiAodmFsdWUg
PT0gImJpZyIpCi0gICAgICAgIHJldHVybiAiMS41ZW0iOworICAgICAgICByZXR1cm4gIjEuNWVt
Il9zOwogCiAgICAgLy8gRklYTUU6IG1hdGhzaXplIGFjY2VwdHMgYW55IE1hdGhNTCBsZW5ndGgs
IGluY2x1ZGluZyBuYW1lZCBzcGFjZXMgKHNlZSBwYXJzZU1hdGhNTExlbmd0aCkuCiAgICAgLy8g
RklYTUU6IE1pZ2h0IGJlIGJldHRlciB0byB1c2UgZG91YmxlIHRoYW4gZmxvYXQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3Bw
CmluZGV4IDBlZmZhNjNmM2NmNGNlZjc3Y2ExMDM3ZTkyOWM2ZDUzNjM1MTNjMDcuLmE3NWY3MGNl
NWIyOTdmOGFlNmE4YzE1NDU1MzNiN2I3MTI5ODFmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCkBAIC00NzcsNyAr
NDc3LDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1Rl
eHRFZGdlQ1NTKCkgY29uc3QKICAgICAgICAgYXBwZW5kQ1NTKGJ1aWxkZXIsIENTU1Byb3BlcnR5
VGV4dFNoYWRvdywgbWFrZVN0cmluZyhlZGdlU3R5bGVEcm9wU2hhZG93LmdldCgpLCAiIGJsYWNr
IiksIGltcG9ydGFudCk7CiAKICAgICBpZiAodGV4dEVkZ2VTdHlsZSA9PSBrTUFDYXB0aW9uQXBw
ZWFyYW5jZVRleHRFZGdlU3R5bGVEcm9wU2hhZG93IHx8IHRleHRFZGdlU3R5bGUgPT0ga01BQ2Fw
dGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlVW5pZm9ybSkgewotICAgICAgICBhcHBlbmRDU1Mo
YnVpbGRlciwgQ1NTUHJvcGVydHlTdHJva2VDb2xvciwgImJsYWNrIiwgaW1wb3J0YW50KTsKKyAg
ICAgICAgYXBwZW5kQ1NTKGJ1aWxkZXIsIENTU1Byb3BlcnR5U3Ryb2tlQ29sb3IsICJibGFjayJf
cywgaW1wb3J0YW50KTsKICAgICAgICAgYXBwZW5kQ1NTKGJ1aWxkZXIsIENTU1Byb3BlcnR5UGFp
bnRPcmRlciwgZ2V0VmFsdWVOYW1lKENTU1ZhbHVlU3Ryb2tlKSwgaW1wb3J0YW50KTsKICAgICAg
ICAgYXBwZW5kQ1NTKGJ1aWxkZXIsIENTU1Byb3BlcnR5U3Ryb2tlTGluZWpvaW4sIGdldFZhbHVl
TmFtZShDU1NWYWx1ZVJvdW5kKSwgaW1wb3J0YW50KTsKICAgICAgICAgYXBwZW5kQ1NTKGJ1aWxk
ZXIsIENTU1Byb3BlcnR5U3Ryb2tlTGluZWNhcCwgZ2V0VmFsdWVOYW1lKENTU1ZhbHVlUm91bmQp
LCBpbXBvcnRhbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IGRhNzVjZTAxOTc1NGY2Yjc4
NDM4OGVmYTQxNTZiODZiZmJmODU3MTUuLjdiNWFlYmI5YmNmMzg5NDdiYjYyZWQ5ZmRjYzUwMjli
MDU2Yjk4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTQwOCw3ICs0MDgsNyBAQCBib29s
IENocm9tZTo6cHJpbnQoRnJhbWUmIGZyYW1lKQogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBo
YXZlIFBhZ2VHcm91cExvYWREZWZlcnJlciwgbGlrZSBydW5Nb2RhbCgpIG9yIHJ1bkphdmFTY3Jp
cHRBbGVydCgpLCBiZWNhdXNlIGl0J3Mgbm8gZGlmZmVyZW50IGZyb20gdGhvc2UuCiAKICAgICBp
ZiAoZnJhbWUuZG9jdW1lbnQoKS0+aXNTYW5kYm94ZWQoU2FuZGJveE1vZGFscykpIHsKLSAgICAg
ICAgZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnByaW50RXJyb3JNZXNzYWdlKCJVc2Ug
b2Ygd2luZG93LnByaW50IGlzIG5vdCBhbGxvd2VkIGluIGEgc2FuZGJveGVkIGZyYW1lIHdoZW4g
dGhlIGFsbG93LW1vZGFscyBmbGFnIGlzIG5vdCBzZXQuIik7CisgICAgICAgIGZyYW1lLmRvY3Vt
ZW50KCktPmRvbVdpbmRvdygpLT5wcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5wcmlu
dCBpcyBub3QgYWxsb3dlZCBpbiBhIHNhbmRib3hlZCBmcmFtZSB3aGVuIHRoZSBhbGxvdy1tb2Rh
bHMgZmxhZyBpcyBub3Qgc2V0LiJfcyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCAx
NGIxZTM3YmRjNjUxZmUzN2U2M2RkOGFiODgxNjRkOGIyMmJjNzVkLi5lOTI4Y2U5YTE0ZmFiZmVl
ZWZkNDkwOWVkZDFjMGRiOWE0Y2ZmMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMTUsMTAgKzMxNSwxMCBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rpb24g
YWN0aW9uLCBjbwogICAgICAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2FkKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ3V0OgotICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
Y29tbWFuZCgiQ3V0Il9zKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQ
YXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlBhc3Rl
Il9zKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBj
YXNlIENvbnRleHRNZW51SXRlbVRhZ1Bhc3RlQXNQbGFpblRleHQ6CkBAIC00MTIsMTAgKzQxMiwx
MCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQo
Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjbwogICAgICAgICAgICAgb3Blbk5ld1dpbmRvdyht
X2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCAqZnJhbWUsIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdCb2xkOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
Y29tbWFuZCgiVG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigp
LmNvbW1hbmQoIlRvZ2dsZUJvbGQiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJUb2dnbGVJdGFsaWMiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS5jb21tYW5kKCJUb2dnbGVJdGFsaWMiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6CiAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS50b2dnbGVVbmRlcmxpbmUoKTsKQEAgLTQ0NCwxMyArNDQ0LDEzIEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlv
biBhY3Rpb24sIGNvCiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVj
dGlvbihXcml0aW5nRGlyZWN0aW9uOjpSaWdodFRvTGVmdCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQ6Ci0gICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIiku
ZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0
aW5nRGlyZWN0aW9uTmF0dXJhbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDoKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbkxlZnRUb1Jp
Z2h0IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ6
Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25SaWdodFRvTGVmdCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0Il9zKS5leGVjdXRlKCk7CiAg
ICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnU2VhcmNoSW5TcG90bGlnaHQ6CkBAIC0xMjQ4LDI1ICsxMjQ4LDI1IEBAIHZvaWQgQ29u
dGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVt
JiBpdGVtKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnTGVmdFRvUmlnaHQ6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUmln
aHRUb0xlZnQ6IHsKLSAgICAgICAgICAgIFN0cmluZyBkaXJlY3Rpb24gPSBpdGVtLmFjdGlvbigp
ID09IENvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIjsKKyAgICAg
ICAgICAgIFN0cmluZyBkaXJlY3Rpb24gPSBpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRl
bVRhZ0xlZnRUb1JpZ2h0ID8gImx0ciJfcyA6ICJydGwiX3M7CiAgICAgICAgICAgICBzaG91bGRD
aGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURpcmVj
dGlvbiwgZGlyZWN0aW9uKSAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAgICAgICBzaG91bGRF
bmFibGUgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdDogewotICAgICAgICAgICAg
RWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCIpOworICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5k
IGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0
aW9uTmF0dXJhbCJfcyk7CiAgICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUo
KSA9PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGNvbW1hbmQu
aXNFbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDogewotICAgICAgICAg
ICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFr
ZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQiKTsKKyAgICAgICAgICAgIEVkaXRvcjo6
Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGlu
Z0RpcmVjdGlvbkxlZnRUb1JpZ2h0Il9zKTsKICAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29t
bWFuZC5zdGF0ZSgpID09IFRyaVN0YXRlOjpUcnVlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxl
ID0gY29tbWFuZC5pc0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0OiB7
Ci0gICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpOworICAgICAgICAg
ICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFr
ZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQiX3MpOwogICAgICAgICAgICAgc2hvdWxk
Q2hlY2sgPSBjb21tYW5kLnN0YXRlKCkgPT0gVHJpU3RhdGU6OlRydWU7CiAgICAgICAgICAgICBz
aG91bGRFbmFibGUgPSBjb21tYW5kLmlzRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMzExLDcgKzEzMTEsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVu
YWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QKICAgICAgICAgICAgIGJy
ZWFrOwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lOiB7
Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNT
dHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5l
IikgIT0gVHJpU3RhdGU6OkZhbHNlOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+
ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCwgInVuZGVybGluZSJfcykgIT0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAg
ICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMzI0LDEyICsxMzI0LDEyIEBAIHZvaWQgQ29u
dGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVt
JiBpdGVtKSBjb25zdAogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gdHJ1ZTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0l0YWxpYzogewotICAg
ICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlGb250U3R5bGUsICJpdGFsaWMiKSAhPSBUcmlTdGF0ZTo6RmFsc2U7CisgICAg
ICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShD
U1NQcm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyJfcykgIT0gVHJpU3RhdGU6OkZhbHNlOwogICAg
ICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQm9sZDogewotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCku
c2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpICE9IFRyaVN0
YXRlOjpGYWxzZTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNl
bGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiX3MpICE9IFRyaVN0
YXRlOjpGYWxzZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5j
YW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01TZWxlY3Rpb24uY3BwCmluZGV4IDZiMDZhYWEyMzUyNzg0Yjg1ZWNkYmM2NzFiMGEw
ZDQzYTI4MWYzNGYuLjZlYTBjMzQ5NWFiNmNjNTQzZjliZmU2NTdjZjExMmZiOGQwMTQ5ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKQEAgLTM0MCw3ICszNDAsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBET01TZWxlY3Rpb246OmV4dGVuZChOb2RlJiBub2RlLCB1bnNpZ25lZCBv
ZmZzZXQpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgCiAgICAgaWYgKHJhbmdlQ291bnQoKSA8
IDEpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgImV4dGVu
ZCgpIHJlcXVpcmVzIGEgUmFuZ2UgdG8gYmUgYWRkZWQgdG8gdGhlIFNlbGVjdGlvbiIgfTsKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiZXh0ZW5kKCkgcmVx
dWlyZXMgYSBSYW5nZSB0byBiZSBhZGRlZCB0byB0aGUgU2VsZWN0aW9uIl9zIH07CiAKICAgICBp
ZiAoZnJhbWUtPnNldHRpbmdzKCkubGl2ZVJhbmdlU2VsZWN0aW9uRW5hYmxlZCgpKSB7CiAgICAg
ICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCktPmNvbnRhaW5zKG5vZGUpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCmluZGV4IDU0NmI0YTRkZGVlYmRiYzNkNTgyM2IwYjI3OTcyZDY2N2JjNzIx
MGYuLmRkM2NjZGJiZDEzNDVmYWI5MjJmOWZmMzYwZTJhOGVhYjk2ZmJmYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKQEAgLTEwOTQsNyArMTA5NCw3IEBAIHZvaWQgRE9NV2luZG93Ojpw
cmludCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghcGFnZS0+YXJlUHJvbXB0c0FsbG93
ZWQoKSkgewotICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5wcmludCBp
cyBub3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRpbmcgYSBwYWdlLiIpOworICAgICAgICBwcmludEVy
cm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5wcmludCBpcyBub3QgYWxsb3dlZCB3aGlsZSB1bmxv
YWRpbmcgYSBwYWdlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMjgsNyAr
MTEyOCw3IEBAIHZvaWQgRE9NV2luZG93OjphbGVydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAK
ICAgICBSZWZQdHIgZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgIGlmIChkb2N1bWVu
dC0+aXNTYW5kYm94ZWQoU2FuZGJveE1vZGFscykpIHsKLSAgICAgICAgcHJpbnRFcnJvck1lc3Nh
Z2UoIlVzZSBvZiB3aW5kb3cuYWxlcnQgaXMgbm90IGFsbG93ZWQgaW4gYSBzYW5kYm94ZWQgZnJh
bWUgd2hlbiB0aGUgYWxsb3ctbW9kYWxzIGZsYWcgaXMgbm90IHNldC4iKTsKKyAgICAgICAgcHJp
bnRFcnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cuYWxlcnQgaXMgbm90IGFsbG93ZWQgaW4gYSBz
YW5kYm94ZWQgZnJhbWUgd2hlbiB0aGUgYWxsb3ctbW9kYWxzIGZsYWcgaXMgbm90IHNldC4iX3Mp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTM3LDcgKzExMzcsNyBAQCB2b2lkIERP
TVdpbmRvdzo6YWxlcnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoIXBhZ2UtPmFyZVByb21wdHNBbGxvd2VkKCkpIHsKLSAgICAgICAgcHJpbnRFcnJv
ck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cuYWxlcnQgaXMgbm90IGFsbG93ZWQgd2hpbGUgdW5sb2Fk
aW5nIGEgcGFnZS4iKTsKKyAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cu
YWxlcnQgaXMgbm90IGFsbG93ZWQgd2hpbGUgdW5sb2FkaW5nIGEgcGFnZS4iX3MpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xMTU3LDcgKzExNTcsNyBAQCBib29sIERPTVdpbmRvdzo6
Y29uZmlybUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogICAgIFJlZlB0ciBk
b2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgaWYgKGRvY3VtZW50LT5pc1NhbmRib3hl
ZChTYW5kYm94TW9kYWxzKSkgewotICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdp
bmRvdy5jb25maXJtIGlzIG5vdCBhbGxvd2VkIGluIGEgc2FuZGJveGVkIGZyYW1lIHdoZW4gdGhl
IGFsbG93LW1vZGFscyBmbGFnIGlzIG5vdCBzZXQuIik7CisgICAgICAgIHByaW50RXJyb3JNZXNz
YWdlKCJVc2Ugb2Ygd2luZG93LmNvbmZpcm0gaXMgbm90IGFsbG93ZWQgaW4gYSBzYW5kYm94ZWQg
ZnJhbWUgd2hlbiB0aGUgYWxsb3ctbW9kYWxzIGZsYWcgaXMgbm90IHNldC4iX3MpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTY2LDcgKzExNjYsNyBAQCBib29sIERPTVdp
bmRvdzo6Y29uZmlybUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFwYWdlLT5hcmVQcm9tcHRzQWxsb3dlZCgpKSB7Ci0g
ICAgICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LmNvbmZpcm0gaXMgbm90IGFs
bG93ZWQgd2hpbGUgdW5sb2FkaW5nIGEgcGFnZS4iKTsKKyAgICAgICAgcHJpbnRFcnJvck1lc3Nh
Z2UoIlVzZSBvZiB3aW5kb3cuY29uZmlybSBpcyBub3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRpbmcg
YSBwYWdlLiJfcyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTExODYsNyAr
MTE4Niw3IEBAIFN0cmluZyBET01XaW5kb3c6OnByb21wdChjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlKQogCiAgICAgUmVmUHRyIGRvY3VtZW50ID0gdGhp
cy0+ZG9jdW1lbnQoKTsKICAgICBpZiAoZG9jdW1lbnQtPmlzU2FuZGJveGVkKFNhbmRib3hNb2Rh
bHMpKSB7Ci0gICAgICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LnByb21wdCBp
cyBub3QgYWxsb3dlZCBpbiBhIHNhbmRib3hlZCBmcmFtZSB3aGVuIHRoZSBhbGxvdy1tb2RhbHMg
ZmxhZyBpcyBub3Qgc2V0LiIpOworICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdp
bmRvdy5wcm9tcHQgaXMgbm90IGFsbG93ZWQgaW4gYSBzYW5kYm94ZWQgZnJhbWUgd2hlbiB0aGUg
YWxsb3ctbW9kYWxzIGZsYWcgaXMgbm90IHNldC4iX3MpOwogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAgICAgfQogCkBAIC0xMTk1LDcgKzExOTUsNyBAQCBTdHJpbmcgRE9NV2luZG93Ojpwcm9t
cHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKCFwYWdlLT5hcmVQcm9tcHRzQWxsb3dl
ZCgpKSB7Ci0gICAgICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LnByb21wdCBp
cyBub3QgYWxsb3dlZCB3aGlsZSB1bmxvYWRpbmcgYSBwYWdlLiIpOworICAgICAgICBwcmludEVy
cm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5wcm9tcHQgaXMgbm90IGFsbG93ZWQgd2hpbGUgdW5s
b2FkaW5nIGEgcGFnZS4iX3MpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCkBA
IC0yNjkwLDcgKzI2OTAsNyBAQCB2b2lkIERPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoIXBhZ2UtPmFyZVByb21wdHNBbGxvd2VkKCkpIHsKLSAgICAgICAgcHJp
bnRFcnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGlzIG5vdCBhbGxv
d2VkIHdoaWxlIHVubG9hZGluZyBhIHBhZ2UuIik7CisgICAgICAgIHByaW50RXJyb3JNZXNzYWdl
KCJVc2Ugb2Ygd2luZG93LnNob3dNb2RhbERpYWxvZyBpcyBub3QgYWxsb3dlZCB3aGlsZSB1bmxv
YWRpbmcgYSBwYWdlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA5OTZlMTgxODIxNjBhZDBmMWY3ZDQ5MDM3MjM3NWYz
ZWZmMWZhYzdlLi5kNmJhMmIzMzA3NmFiZjY4ZmRkODlmMzkyZTRlOWI4YTFmZmJmYzFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zNzkyLDExICszNzkyLDExIEBAIHN0
YXRpYyB2b2lkIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnQoRnJhbWUmIGZyYW1lLCBL
ZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBGcmFtZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0g
ZnJhbWUuc2VsZWN0aW9uKCk7CiAKLSAgICBib29sIGlzQ29tbWFuZGVkID0gZXZlbnQuZ2V0TW9k
aWZpZXJTdGF0ZSgiTWV0YSIpOwotICAgIGJvb2wgaXNPcHRpb25lZCA9IGV2ZW50LmdldE1vZGlm
aWVyU3RhdGUoIkFsdCIpOworICAgIGJvb2wgaXNDb21tYW5kZWQgPSBldmVudC5nZXRNb2RpZmll
clN0YXRlKCJNZXRhIl9zKTsKKyAgICBib29sIGlzT3B0aW9uZWQgPSBldmVudC5nZXRNb2RpZmll
clN0YXRlKCJBbHQiX3MpOwogICAgIGJvb2wgaXNTZWxlY3Rpb24gPSAhc2VsZWN0aW9uLmlzTm9u
ZSgpOwogCi0gICAgRnJhbWVTZWxlY3Rpb246OkVBbHRlcmF0aW9uIGFsdGVybmF0aW9uID0gZXZl
bnQuZ2V0TW9kaWZpZXJTdGF0ZSgiU2hpZnQiKSA/IEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
RXh0ZW5kIDogRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlOworICAgIEZyYW1lU2VsZWN0
aW9uOjpFQWx0ZXJhdGlvbiBhbHRlcm5hdGlvbiA9IGV2ZW50LmdldE1vZGlmaWVyU3RhdGUoIlNo
aWZ0Il9zKSA/IEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kIDogRnJhbWVTZWxlY3Rp
b246OkFsdGVyYXRpb25Nb3ZlOwogICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ7CiAgICAgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcAppbmRleCAxMGNkYWNkMGU2YzkwN2RmNDNjYzhjZTUyMGRhZDE3
ZWVhOWE4MDg3Li44ZDdkOWU2NmQ3YmMxZDQyOWFhNWQ3ZmY0NjY4NTA0MDA4YWFjZDRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtOTUsOSArOTUsOSBAQCB2b2lkIEV2ZW50
U291cmNlOjpjb25uZWN0KCkKICAgICBBU1NFUlQoIW1fcmVxdWVzdEluRmxpZ2h0KTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0IHsgbV91cmwgfTsKLSAgICByZXF1ZXN0LnNldEhUVFBN
ZXRob2QoIkdFVCIpOwotICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJO
YW1lOjpBY2NlcHQsICJ0ZXh0L2V2ZW50LXN0cmVhbSIpOwotICAgIHJlcXVlc3Quc2V0SFRUUEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wsICJuby1jYWNoZSIpOworICAg
IHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXB0LCAidGV4dC9ldmVudC1zdHJlYW0iX3MpOwor
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRy
b2wsICJuby1jYWNoZSJfcyk7CiAgICAgaWYgKCFtX2xhc3RFdmVudElkLmlzRW1wdHkoKSkKICAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6Okxhc3RFdmVu
dElELCBtX2xhc3RFdmVudElkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGM5
ZjVkNDhkY2I0NmM4MjRjODFlMjg2NjYzYWZiNzFhNGE1NTJkYjQuLjIzYjM4NjViZDc3YjhjNDY5
MDg5YmU0ZjFjN2Y0MzYxNTMyNWE1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTE0MDYsNyArMTQwNiw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RNZWRpYVR5cGVGb3JQcmlu
dGluZyhib29sIHByaW50aW5nKQogICAgIGlmIChwcmludGluZykgewogICAgICAgICBpZiAobV9t
ZWRpYVR5cGVXaGVuTm90UHJpbnRpbmcuaXNOdWxsKCkpCiAgICAgICAgICAgICBtX21lZGlhVHlw
ZVdoZW5Ob3RQcmludGluZyA9IG1lZGlhVHlwZSgpOwotICAgICAgICBzZXRNZWRpYVR5cGUoInBy
aW50Iik7CisgICAgICAgIHNldE1lZGlhVHlwZSgicHJpbnQiX3MpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIGlmICghbV9tZWRpYVR5cGVXaGVuTm90UHJpbnRpbmcuaXNOdWxsKCkpCiAgICAgICAg
ICAgICBzZXRNZWRpYVR5cGUobV9tZWRpYVR5cGVXaGVuTm90UHJpbnRpbmcpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAppbmRleCA1MTBiOWU0MTdjNjcx
NjIwNTZhYzVlMTY5NmJhZGVjN2NjMjY4ZTI1Li5kMmFjYWIyOTQ1YjY1NTM3NzI3NTVhN2NhZTE5
YTFlYmNiNmFlOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlv
bk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2Vy
dmVyLmNwcApAQCAtNDgsMTYgKzQ4LDE2IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxMZW5ndGhCb3g+
IHBhcnNlUm9vdE1hcmdpbihTdHJpbmcmIHJvb3RNYXJnaW4pCiAgICAgVmVjdG9yPExlbmd0aCwg
ND4gbWFyZ2luczsKICAgICB3aGlsZSAoIXRva2VuUmFuZ2UuYXRFbmQoKSkgewogICAgICAgICBp
ZiAobWFyZ2lucy5zaXplKCkgPT0gNCkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
eW50YXhFcnJvciwgIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2VjdGlvbk9ic2VydmVyJzog
RXh0cmEgdGV4dCBmb3VuZCBhdCB0aGUgZW5kIG9mIHJvb3RNYXJnaW4uIiB9OworICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCAn
SW50ZXJzZWN0aW9uT2JzZXJ2ZXInOiBFeHRyYSB0ZXh0IGZvdW5kIGF0IHRoZSBlbmQgb2Ygcm9v
dE1hcmdpbi4iX3MgfTsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRW
YWx1ZSA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUxlbmd0aE9yUGVyY2VudCh0
b2tlblJhbmdlLCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOwogICAgICAgICBp
ZiAoIXBhcnNlZFZhbHVlIHx8IHBhcnNlZFZhbHVlLT5pc0NhbGN1bGF0ZWQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgIkZhaWxlZCB0byBjb25zdHJ1Y3Qg
J0ludGVyc2VjdGlvbk9ic2VydmVyJzogcm9vdE1hcmdpbiBtdXN0IGJlIHNwZWNpZmllZCBpbiBw
aXhlbHMgb3IgcGVyY2VudC4iIH07CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3lu
dGF4RXJyb3IsICJGYWlsZWQgdG8gY29uc3RydWN0ICdJbnRlcnNlY3Rpb25PYnNlcnZlcic6IHJv
b3RNYXJnaW4gbXVzdCBiZSBzcGVjaWZpZWQgaW4gcGl4ZWxzIG9yIHBlcmNlbnQuIl9zIH07CiAg
ICAgICAgIGlmIChwYXJzZWRWYWx1ZS0+aXNQZXJjZW50YWdlKCkpCiAgICAgICAgICAgICBtYXJn
aW5zLmFwcGVuZChMZW5ndGgocGFyc2VkVmFsdWUtPmRvdWJsZVZhbHVlKCksIExlbmd0aFR5cGU6
OlBlcmNlbnQpKTsKICAgICAgICAgZWxzZSBpZiAocGFyc2VkVmFsdWUtPmlzUHgoKSkKICAgICAg
ICAgICAgIG1hcmdpbnMuYXBwZW5kKExlbmd0aChwYXJzZWRWYWx1ZS0+aW50VmFsdWUoKSwgTGVu
Z3RoVHlwZTo6Rml4ZWQpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFN5bnRheEVycm9yLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCAnSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXInOiByb290TWFyZ2luIG11c3QgYmUgc3BlY2lmaWVkIGluIHBpeGVscyBvciBwZXJjZW50
LiIgfTsKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgIkZhaWxl
ZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2VjdGlvbk9ic2VydmVyJzogcm9vdE1hcmdpbiBtdXN0IGJl
IHNwZWNpZmllZCBpbiBwaXhlbHMgb3IgcGVyY2VudC4iX3MgfTsKICAgICB9CiAgICAgc3dpdGNo
IChtYXJnaW5zLnNpemUoKSkgewogICAgIGNhc2UgMDoKQEAgLTEwOCw3ICsxMDgsNyBAQCBFeGNl
cHRpb25PcjxSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXI+PiBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6
Y3JlYXRlKERvY3VtZW50JiBkbwogCiAgICAgZm9yIChhdXRvIHRocmVzaG9sZCA6IHRocmVzaG9s
ZHMpIHsKICAgICAgICAgaWYgKCEodGhyZXNob2xkID49IDAgJiYgdGhyZXNob2xkIDw9IDEpKQot
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJGYWlsZWQgdG8gY29u
c3RydWN0ICdJbnRlcnNlY3Rpb25PYnNlcnZlcic6IGFsbCB0aHJlc2hvbGRzIG11c3QgbGllIGlu
IHRoZSByYW5nZSBbMC4wLCAxLjBdLiIgfTsKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBSYW5nZUVycm9yLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXIn
OiBhbGwgdGhyZXNob2xkcyBtdXN0IGxpZSBpbiB0aGUgcmFuZ2UgWzAuMCwgMS4wXS4iX3MgfTsK
ICAgICB9CiAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihk
b2N1bWVudCwgV1RGTW92ZShjYWxsYmFjayksIHJvb3QuZ2V0KCksIHJvb3RNYXJnaW5PckV4Y2Vw
dGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgV1RGTW92ZSh0aHJlc2hvbGRzKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2dnZWRJblN0YXR1cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0xvZ2dlZEluU3RhdHVzLmNwcAppbmRleCA0NjczOGJkMzQzMjJjZGMxYzI4YWQ2
ZjZmYzNjYmE4M2Q5MWY5MjM4Li42NTc1Mjc3YTFhZDI4Y2FkZWM5ZjAzMWRjZWE4OTNjMGUxNzEx
NzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvZ2dlZEluU3RhdHVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvZ2dlZEluU3RhdHVzLmNwcApAQCAtNDQsMTAgKzQ0
LDEwIEBAIEV4Y2VwdGlvbk9yPFVuaXF1ZVJlZjxMb2dnZWRJblN0YXR1cz4+IExvZ2dlZEluU3Rh
dHVzOjpjcmVhdGUoY29uc3QgUmVnaXN0cmFibGVECiBFeGNlcHRpb25PcjxVbmlxdWVSZWY8TG9n
Z2VkSW5TdGF0dXM+PiBMb2dnZWRJblN0YXR1czo6Y3JlYXRlKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUsIENyZWRlbnRpYWxUb2tlblR5cGUg
dG9rZW5UeXBlLCBBdXRoZW50aWNhdGlvblR5cGUgYXV0aFR5cGUsIFNlY29uZHMgdGltZVRvTGl2
ZSkKIHsKICAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNlY3VyaXR5RXJyb3IsICJJc0xvZ2dlZEluIHN0YXR1cyBjYW4gb25seSBiZSBzZXQgZm9y
IG9yaWdpbnMgd2l0aCBhIHJlZ2lzdHJhYmxlIGRvbWFpbi4iIH07CisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiSXNMb2dnZWRJbiBzdGF0dXMgY2FuIG9ubHkgYmUg
c2V0IGZvciBvcmlnaW5zIHdpdGggYSByZWdpc3RyYWJsZSBkb21haW4uIl9zIH07CiAKICAgICBp
ZiAodXNlcm5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4
RXJyb3IsICJJc0xvZ2dlZEluIHJlcXVpcmVzIGEgbm9uLWVtcHR5IHVzZXJuYW1lLiIgfTsKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiSXNMb2dnZWRJbiByZXF1aXJl
cyBhIG5vbi1lbXB0eSB1c2VybmFtZS4iX3MgfTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHVz
ZXJuYW1lLmxlbmd0aCgpOwogICAgIGlmIChsZW5ndGggPiBVc2VybmFtZU1heExlbmd0aCkKQEAg
LTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9uT3I8VW5pcXVlUmVmPExvZ2dlZEluU3RhdHVzPj4gTG9n
Z2VkSW5TdGF0dXM6OmNyZWF0ZShjb25zdCBSZWdpc3RyYWJsZUQKICAgICAgICAgcmV0dXJuIGlz
U3BhY2VPck5ld2xpbmUoY2gpOwogICAgIH0pOwogICAgIGlmIChzcGFjZU9yTmV3bGluZSAhPSBu
b3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRDaGFyYWN0ZXJFcnJv
ciwgIklzTG9nZ2VkSW4gdXNlcm5hbWVzIGNhbm5vdCBjb250YWluIHdoaXRlc3BhY2Ugb3IgbmV3
bGluZXMuIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZENoYXJhY3RlckVy
cm9yLCAiSXNMb2dnZWRJbiB1c2VybmFtZXMgY2Fubm90IGNvbnRhaW4gd2hpdGVzcGFjZSBvciBu
ZXdsaW5lcy4iX3MgfTsKIAogICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPExvZ2dlZEluU3RhdHVz
PigqbmV3IExvZ2dlZEluU3RhdHVzKGRvbWFpbiwgdXNlcm5hbWUsIHRva2VuVHlwZSwgYXV0aFR5
cGUsIHRpbWVUb0xpdmUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCmlu
ZGV4IDdiMTBjNjM1NjA4MTkzODhkNzg4NWJlMDM3NGQ4ZjBmMTk0NzNiMDkuLmMwN2NjZTQ4NmM3
YzZjNWFlYzFiMzc2Nzk3MTU4MGE5MTVkZDY0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0
b3JCYXNlLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXImIE5h
dmlnYXRvckJhc2U6OnNlcnZpY2VXb3JrZXIoKQogRXhjZXB0aW9uT3I8U2VydmljZVdvcmtlckNv
bnRhaW5lciY+IE5hdmlnYXRvckJhc2U6OnNlcnZpY2VXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpICYmIGRvd25j
YXN0PERvY3VtZW50Pihjb250ZXh0KS5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkKLSAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJTZXJ2aWNlIFdvcmtlciBpcyBk
aXNhYmxlZCBiZWNhdXNlIHRoZSBjb250ZXh0IGlzIHNhbmRib3hlZCBhbmQgbGFja3MgdGhlICdh
bGxvdy1zYW1lLW9yaWdpbicgZmxhZyIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNl
Y3VyaXR5RXJyb3IsICJTZXJ2aWNlIFdvcmtlciBpcyBkaXNhYmxlZCBiZWNhdXNlIHRoZSBjb250
ZXh0IGlzIHNhbmRib3hlZCBhbmQgbGFja3MgdGhlICdhbGxvdy1zYW1lLW9yaWdpbicgZmxhZyJf
cyB9OwogICAgIHJldHVybiBzZXJ2aWNlV29ya2VyKCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCmluZGV4IDY2M2Y5ODRiNTdkNGQwZWQzNDM5ZjA5MTNjMTRiMWNiMWUxOGZjMTcuLmQ5NGQz
Y2QxN2FlNWZmMDU2YmY2YTNmMGIyOTdiZDBiNmE1MWU3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApA
QCAtMjA0Miw3ICsyMDQyLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgp
IGNvbnN0CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsK
IAotICAgIG1fdXNlclN0eWxlU2hlZXQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRl
eHQvY3NzIiktPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICBtX3VzZXJTdHlsZVNoZWV0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2Nz
cyJfcyktPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAg
IHJldHVybiBtX3VzZXJTdHlsZVNoZWV0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9RdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCmluZGV4IDFl
MGU2MzNlY2M0ZjRjM2Q2NTc1M2MyMzA1ZmRhNmMzNmVkZGYyNWEuLmRkYmE4MzVlZjg5MjAzYWFl
YWRhMWQzMDNiMjM2OTQ1OGQ0NzI4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKQEAgLTExODMs
NyArMTE4Myw3IEBAIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWdnZXJP
cHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50JiBlCiAgICAgCiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gbG9naW5Qb3B1cFdpbmRvd0ZlYXR1cmVTdHJpbmcgPSAidG9v
bGJhcj1ubyxsb2NhdGlvbj15ZXMsZGlyZWN0b3JpZXM9bm8sc3RhdHVzPW5vLG1lbnViYXI9bm8s
c2Nyb2xsYmFycz15ZXMscmVzaXphYmxlPXllcyxjb3B5aGlzdG9yeT1ubyx3aWR0aD01OTksaGVp
Z2h0PTYwMCx0b3A9NDIwLGxlZnQ9OTgwLjUiX3M7CiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8VXNlclNjcmlwdD4ga2luamFMb2dpblVzZXJTY3JpcHQgeyAiZnVuY3Rpb24gdHJpZ2dlckxv
Z2luRm9ybSgpIHsgbGV0IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgnanNfaGVhZGVyLXVzZXJidXR0b24nKTsgaWYgKGVsZW1lbnRzICYmIGVsZW1lbnRzWzBdKSB7
IGVsZW1lbnRzWzBdLmNsaWNrKCk7IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOyB9IH0gbGV0IGlu
dGVydmFsID0gc2V0SW50ZXJ2YWwodHJpZ2dlckxvZ2luRm9ybSwgMjAwKTsiLCBVUkwoYWJvdXRC
bGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgVXNlclNjcmlw
dEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJ
bmplY3RJblRvcEZyYW1lT25seSwgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6
WWVzIH07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVzZXJTY3JpcHQ+IGtpbmphTG9naW5V
c2VyU2NyaXB0IHsgImZ1bmN0aW9uIHRyaWdnZXJMb2dpbkZvcm0oKSB7IGxldCBlbGVtZW50cyA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2pzX2hlYWRlci11c2VyYnV0dG9uJyk7
IGlmIChlbGVtZW50cyAmJiBlbGVtZW50c1swXSkgeyBlbGVtZW50c1swXS5jbGljaygpOyBjbGVh
ckludGVydmFsKGludGVydmFsKTsgfSB9IGxldCBpbnRlcnZhbCA9IHNldEludGVydmFsKHRyaWdn
ZXJMb2dpbkZvcm0sIDIwMCk7Il9zLCBVUkwoYWJvdXRCbGFua1VSTCgpKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50
RW5kLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwgV2Fp
dEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6WWVzIH07CiAKICAgICBpZiAoZXZlbnRU
eXBlID09ICJjbGljayIpIHsKICAgICAgICAgaWYgKCFtX2RvY3VtZW50KQpAQCAtMTIyMCw3ICsx
MjIwLDcgQEAgUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlv
bmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVsZW1lbnQmIGUKICAgICAgICAgICAgIGF1dG8qIGFic3Ry
YWN0RnJhbWUgPSBwcm94eS0+ZnJhbWUoKTsKICAgICAgICAgICAgIGlmIChhYnN0cmFjdEZyYW1l
ICYmIGlzPEZyYW1lPigqYWJzdHJhY3RGcmFtZSkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBm
cmFtZSA9IGRvd25jYXN0PEZyYW1lPigqYWJzdHJhY3RGcmFtZSk7Ci0gICAgICAgICAgICAgICAg
YXV0byB3b3JsZCA9IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKCJraW5qYUNvbVF1aXJr
V29ybGQiLCBTY3JpcHRDb250cm9sbGVyOjpXb3JsZFR5cGU6OlVzZXIpOworICAgICAgICAgICAg
ICAgIGF1dG8gd29ybGQgPSBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVXb3JsZCgia2luamFDb21R
dWlya1dvcmxkIl9zLCBTY3JpcHRDb250cm9sbGVyOjpXb3JsZFR5cGU6OlVzZXIpOwogICAgICAg
ICAgICAgICAgIGZyYW1lLmFkZFVzZXJTY3JpcHRBd2FpdGluZ05vdGlmaWNhdGlvbih3b3JsZC5n
ZXQoKSwga2luamFMb2dpblVzZXJTY3JpcHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBRdWly
a3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50OwogICAgICAgICAgICAg
fQpAQCAtMTIzOSw3ICsxMjM5LDcgQEAgUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJr
czo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVsZW1lbnQmIGUKICAgICAgICAg
fQogCiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IEJCQ1JhZGlvUGxheWVy
UG9wVXBXaW5kb3dGZWF0dXJlU3RyaW5nID0gImZlYXR1cmVzdHJpbmcgd2lkdGg9NDAwLGhlaWdo
dD03MzAiX3M7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVc2VyU2NyaXB0PiBCQkNV
c2VyU2NyaXB0IHsgImZ1bmN0aW9uIHRyaWdnZXJSZWRpcmVjdCgpIHsgZG9jdW1lbnQubG9jYXRp
b24uaHJlZiA9IFwiaHR0cHM6Ly93d3cuYmJjLmNvLnVrL3NvdW5kcy9wbGF5ZXIvYmJjX3dvcmxk
X3NlcnZpY2VcIjsgfSB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uICgp
IHsgdHJpZ2dlclJlZGlyZWN0KCk7IH0pIiwgVVJMKGFib3V0QmxhbmtVUkwoKSksIFZlY3RvcjxT
dHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1
bWVudEVuZCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHks
IFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6OlllcyB9OworICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlclNjcmlwdD4gQkJDVXNlclNjcmlwdCB7ICJmdW5jdGlvbiB0
cmlnZ2VyUmVkaXJlY3QoKSB7IGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBcImh0dHBzOi8vd3d3
LmJiYy5jby51ay9zb3VuZHMvcGxheWVyL2JiY193b3JsZF9zZXJ2aWNlXCI7IH0gd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7IHRyaWdnZXJSZWRpcmVjdCgpOyB9
KSJfcywgVVJMKGFib3V0QmxhbmtVUkwoKSksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJp
bmc+KCksIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCwgVXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHksIFdhaXRGb3JOb3RpZmljYXRpb25C
ZWZvcmVJbmplY3Rpbmc6OlllcyB9OwogCiAgICAgICAgIC8vIEJCQyBSYWRpb1BsYXllciBjYXNl
LgogICAgICAgICBpZiAoaXNCQkNEb21haW4oZG9tYWluKSAmJiBpc0JCQ1BvcFVwUGxheWVyRWxl
bWVudChlbGVtZW50KSkgewpAQCAtMTI1Niw3ICsxMjU2LDcgQEAgUXVpcmtzOjpTdG9yYWdlQWNj
ZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVsZW1l
bnQmIGUKICAgICAgICAgICAgICAgICAgICAgYXV0byogYWJzdHJhY3RGcmFtZSA9IHByb3h5LT5m
cmFtZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoaXM8RnJhbWU+KGFic3RyYWN0RnJhbWUp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiBmcmFtZSA9IGRvd25jYXN0PEZyYW1l
PihhYnN0cmFjdEZyYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gd29ybGQgPSBT
Y3JpcHRDb250cm9sbGVyOjpjcmVhdGVXb3JsZCgiYmJjUmFkaW9QbGF5ZXJXb3JsZCIsIFNjcmlw
dENvbnRyb2xsZXI6OldvcmxkVHlwZTo6VXNlcik7CisgICAgICAgICAgICAgICAgICAgICAgICBh
dXRvIHdvcmxkID0gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV29ybGQoImJiY1JhZGlvUGxheWVy
V29ybGQiX3MsIFNjcmlwdENvbnRyb2xsZXI6OldvcmxkVHlwZTo6VXNlcik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBmcmFtZS0+YWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKHdv
cmxkLmdldCgpLCBCQkNVc2VyU2NyaXB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9XaW5kb3dGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVz
LmNwcAppbmRleCBjODMyY2Y1NmE5NThhMmU3YTllZjkxYjI3MmMyZjBjMTQ1YzZmY2MzLi4yMDgz
NDA5N2JiMTg5MTJiMTk3NjIyMzBmNDA2YWJlNWIwOGM0YmY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1dpbmRvd0ZlYXR1cmVzLmNwcApAQCAtMzgsOCArMzgsOCBAQCB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gRGlhbG9nRmVhdHVyZXNNYXA7
CiBzdGF0aWMgdm9pZCBzZXRXaW5kb3dGZWF0dXJlKFdpbmRvd0ZlYXR1cmVzJiwgU3RyaW5nVmll
dyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUpOwogCiBzdGF0aWMgRGlhbG9nRmVhdHVyZXNNYXAgcGFy
c2VEaWFsb2dGZWF0dXJlc01hcChTdHJpbmdWaWV3KTsKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiwgY29uc3QgY2hhcioga2V5
KTsKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBmbG9hdEZlYXR1cmUoY29uc3QgRGlhbG9n
RmVhdHVyZXNNYXAmLCBjb25zdCBjaGFyKiBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4KTsKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVz
TWFwJiwgQVNDSUlMaXRlcmFsIGtleSk7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxmbG9hdD4gZmxv
YXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiwgQVNDSUlMaXRlcmFsIGtleSwgZmxv
YXQgbWluLCBmbG9hdCBtYXgpOwogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNm
ZWF0dXJlLXNlcGFyYXRvcgogc3RhdGljIGJvb2wgaXNTZXBhcmF0b3IoVUNoYXIgY2hhcmFjdGVy
LCBGZWF0dXJlTW9kZSBtb2RlKQpAQCAtMTg1LDMwICsxODUsMzAgQEAgV2luZG93RmVhdHVyZXMg
cGFyc2VEaWFsb2dGZWF0dXJlcyhTdHJpbmdWaWV3IGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBjb25z
dCBGbG9hdFIKICAgICBmZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUgPSBmYWxzZTsKICAgICBm
ZWF0dXJlcy5kaWFsb2cgPSB0cnVlOwogCi0gICAgZmxvYXQgd2lkdGggPSBmbG9hdEZlYXR1cmUo
ZmVhdHVyZXNNYXAsICJkaWFsb2d3aWR0aCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0
aCgpKS52YWx1ZV9vcig2MjApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUg
b2YgZGlhbG9nIGluIE1hY0lFCi0gICAgZmxvYXQgaGVpZ2h0ID0gZmxvYXRGZWF0dXJlKGZlYXR1
cmVzTWFwLCAiZGlhbG9naGVpZ2h0IiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgp
KS52YWx1ZV9vcig0NTApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2Yg
ZGlhbG9nIGluIE1hY0lFCisgICAgZmxvYXQgd2lkdGggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNN
YXAsICJkaWFsb2d3aWR0aCJfcywgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkpLnZh
bHVlX29yKDYyMCk7IC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFs
b2cgaW4gTWFjSUUKKyAgICBmbG9hdCBoZWlnaHQgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAs
ICJkaWFsb2doZWlnaHQiX3MsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkudmFs
dWVfb3IoNDUwKTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxv
ZyBpbiBNYWNJRQogCiAgICAgZmVhdHVyZXMud2lkdGggPSB3aWR0aDsKICAgICBmZWF0dXJlcy5o
ZWlnaHQgPSBoZWlnaHQ7CiAKLSAgICBmZWF0dXJlcy54ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVz
TWFwLCAiZGlhbG9nbGVmdCIsIHNjcmVlbkF2YWlsYWJsZVJlY3QueCgpLCBzY3JlZW5BdmFpbGFi
bGVSZWN0Lm1heFgoKSAtIHdpZHRoKTsKLSAgICBmZWF0dXJlcy55ID0gZmxvYXRGZWF0dXJlKGZl
YXR1cmVzTWFwLCAiZGlhbG9ndG9wIiwgc2NyZWVuQXZhaWxhYmxlUmVjdC55KCksIHNjcmVlbkF2
YWlsYWJsZVJlY3QubWF4WSgpIC0gaGVpZ2h0KTsKKyAgICBmZWF0dXJlcy54ID0gZmxvYXRGZWF0
dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nbGVmdCJfcywgc2NyZWVuQXZhaWxhYmxlUmVjdC54KCks
IHNjcmVlbkF2YWlsYWJsZVJlY3QubWF4WCgpIC0gd2lkdGgpOworICAgIGZlYXR1cmVzLnkgPSBm
bG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d0b3AiX3MsIHNjcmVlbkF2YWlsYWJsZVJl
Y3QueSgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1heFkoKSAtIGhlaWdodCk7CiAKLSAgICBpZiAo
Ym9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJjZW50ZXIiKS52YWx1ZV9vcih0cnVlKSkgeworICAg
IGlmIChib29sRmVhdHVyZShmZWF0dXJlc01hcCwgImNlbnRlciJfcykudmFsdWVfb3IodHJ1ZSkp
IHsKICAgICAgICAgaWYgKCFmZWF0dXJlcy54KQogICAgICAgICAgICAgZmVhdHVyZXMueCA9IHNj
cmVlbkF2YWlsYWJsZVJlY3QueCgpICsgKHNjcmVlbkF2YWlsYWJsZVJlY3Qud2lkdGgoKSAtIHdp
ZHRoKSAvIDI7CiAgICAgICAgIGlmICghZmVhdHVyZXMueSkKICAgICAgICAgICAgIGZlYXR1cmVz
LnkgPSBzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIChzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdo
dCgpIC0gaGVpZ2h0KSAvIDI7CiAgICAgfQogCi0gICAgZmVhdHVyZXMucmVzaXphYmxlID0gYm9v
bEZlYXR1cmUoZmVhdHVyZXNNYXAsICJyZXNpemFibGUiKS52YWx1ZV9vcihmYWxzZSk7Ci0gICAg
ZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInNj
cm9sbCIpLnZhbHVlX29yKHRydWUpOwotICAgIGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUgPSBi
b29sRmVhdHVyZShmZWF0dXJlc01hcCwgInN0YXR1cyIpLnZhbHVlX29yKGZhbHNlKTsKKyAgICBm
ZWF0dXJlcy5yZXNpemFibGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInJlc2l6YWJsZSJf
cykudmFsdWVfb3IoZmFsc2UpOworICAgIGZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlID0gYm9v
bEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzY3JvbGwiX3MpLnZhbHVlX29yKHRydWUpOworICAgIGZl
YXR1cmVzLnN0YXR1c0JhclZpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInN0YXR1
cyJfcykudmFsdWVfb3IoZmFsc2UpOwogCiAgICAgcmV0dXJuIGZlYXR1cmVzOwogfQogCi1zdGF0
aWMgc3RkOjpvcHRpb25hbDxib29sPiBib29sRmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01h
cCYgZmVhdHVyZXMsIGNvbnN0IGNoYXIqIGtleSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgQVNDSUlMaXRl
cmFsIGtleSkKIHsKICAgICBhdXRvIGl0ID0gZmVhdHVyZXMuZmluZChrZXkpOwogICAgIGlmIChp
dCA9PSBmZWF0dXJlcy5lbmQoKSkKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxib29sPiBib29sRmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMs
IGNvbnN0CiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAi
b24iKTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGZsb2F0RmVhdHVyZShjb25z
dCBEaWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIGNvbnN0IGNoYXIqIGtleSwgZmxvYXQgbWlu
LCBmbG9hdCBtYXgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxmbG9hdD4gZmxvYXRGZWF0dXJlKGNv
bnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgQVNDSUlMaXRlcmFsIGtleSwgZmxvYXQg
bWluLCBmbG9hdCBtYXgpCiB7CiAgICAgYXV0byBpdCA9IGZlYXR1cmVzLmZpbmQoa2V5KTsKICAg
ICBpZiAoaXQgPT0gZmVhdHVyZXMuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCAxNjI3NGU5NGFmMTBjOGQzODU0MGU5
YzgzNTE5MjFjNzBiOGY4ZDdmLi5jZjY2OWEwNTU2YmQ3NjQ0NDcwYWRkOWFiNjA5ODg2ZDQ5NWRj
YjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAKQEAgLTcwLDkgKzcwLDkgQEAgc3RhdGljIFN0cmluZyBjb25zb2xlTWVzc2FnZUZv
clZpb2xhdGlvbihjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHYKIHsKICAg
ICBib29sIGlzRGVmYXVsdFNyYyA9IHZpb2xhdGVkRGlyZWN0aXZlLmlzRGVmYXVsdFNyYygpOwog
ICAgIFN0cmluZyBuYW1lID0gdmlvbGF0ZWREaXJlY3RpdmUubmFtZUZvclJlcG9ydGluZygpOwot
ICAgIGlmICh2aW9sYXRlZERpcmVjdGl2ZS5uYW1lRm9yUmVwb3J0aW5nKCkuc3RhcnRzV2l0aChD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjKSkKKyAgICBpZiAo
dmlvbGF0ZWREaXJlY3RpdmUubmFtZUZvclJlcG9ydGluZygpLnN0YXJ0c1dpdGgoU3RyaW5nVmll
dyB7IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMgfSkpCiAg
ICAgICAgIG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0
U3JjOwotICAgIGVsc2UgaWYgKHZpb2xhdGVkRGlyZWN0aXZlLm5hbWVGb3JSZXBvcnRpbmcoKS5z
dGFydHNXaXRoKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzdHlsZVNyYykp
CisgICAgZWxzZSBpZiAodmlvbGF0ZWREaXJlY3RpdmUubmFtZUZvclJlcG9ydGluZygpLnN0YXJ0
c1dpdGgoU3RyaW5nVmlldyB7IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpz
dHlsZVNyYyB9KSkKICAgICAgICAgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzOjpzdHlsZVNyYzsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKHZpb2xhdGVkRGlyZWN0
aXZlLmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKSA/ICJbUmVwb3J0IE9ubHldICIgOiAi
IiwKQEAgLTQ5Myw3ICs0OTMsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dF
dmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBMb2dUb0NvbnNvbGUgcwogICAgIGJvb2wg
ZGlkTm90aWZ5SW5zcGVjdG9yID0gZmFsc2U7CiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERpcmVj
dGl2ZSA9IFsmXSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRl
ZERpcmVjdGl2ZSkgewogICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBzaG91bGRMb2dU
b0NvbnNvbGUgPT0gTG9nVG9Db25zb2xlOjpZZXMgPyBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlv
bih2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksICJSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBzY3JpcHQi
LCAiJ3Vuc2FmZS1ldmFsJyIpIDogU3RyaW5nKCk7Ci0gICAgICAgIHJlcG9ydFZpb2xhdGlvbih2
aW9sYXRlZERpcmVjdGl2ZSwgImV2YWwiLCBjb25zb2xlTWVzc2FnZSwgc3RhdGUsIGNvZGVDb250
ZW50KTsKKyAgICAgICAgcmVwb3J0VmlvbGF0aW9uKHZpb2xhdGVkRGlyZWN0aXZlLCAiZXZhbCJf
cywgY29uc29sZU1lc3NhZ2UsIHN0YXRlLCBjb2RlQ29udGVudCk7CiAgICAgICAgIGlmICghZGlk
Tm90aWZ5SW5zcGVjdG9yICYmICF2aW9sYXRlZERpcmVjdGl2ZS5kaXJlY3RpdmVMaXN0KCkuaXNS
ZXBvcnRPbmx5KCkpIHsKICAgICAgICAgICAgIHJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25U
b0luc3BlY3Rvcih2aW9sYXRlZERpcmVjdGl2ZS50ZXh0KCkpOwogICAgICAgICAgICAgZGlkTm90
aWZ5SW5zcGVjdG9yID0gdHJ1ZTsKQEAgLTkwMCw3ICs5MDAsNyBAQCB2b2lkIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6cmVwb3J0SW52YWxpZFBsdWdpblR5cGVzKGNvbnN0IFN0cmluZyYgcGx1Z2lu
VHlwZSkgYwogewogICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGlmIChwbHVnaW5UeXBlLmlzTnVs
bCgpKQotICAgICAgICBtZXNzYWdlID0gIidwbHVnaW4tdHlwZXMnIENvbnRlbnQgU2VjdXJpdHkg
UG9saWN5IGRpcmVjdGl2ZSBpcyBlbXB0eTsgYWxsIHBsdWdpbnMgd2lsbCBiZSBibG9ja2VkLlxu
IjsKKyAgICAgICAgbWVzc2FnZSA9ICIncGx1Z2luLXR5cGVzJyBDb250ZW50IFNlY3VyaXR5IFBv
bGljeSBkaXJlY3RpdmUgaXMgZW1wdHk7IGFsbCBwbHVnaW5zIHdpbGwgYmUgYmxvY2tlZC5cbiJf
czsKICAgICBlbHNlCiAgICAgICAgIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJJbnZhbGlkIHBsdWdp
biB0eXBlIGluICdwbHVnaW4tdHlwZXMnIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2
ZTogJyIsIHBsdWdpblR5cGUsICInLlxuIik7CiAgICAgbG9nVG9Db25zb2xlKG1lc3NhZ2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAppbmRleCAwZmQ2NjhiMDI4MzJkZDQyZjRmZGVjMWUx
MDIwNTJiNGE3MDUxYmUxLi5hMDUxZjZlYmEwNjZiNGZlN2U0Mjk0Zjk3YTBlZjUzOGI1YzQ5MGFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtNjcxLDkgKzY3MSw5IEBAIGJvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6c3RyaWN0RHluYW1pY0luY2x1ZGVk
KCkKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6c2hvdWxkUmVwb3J0
U2FtcGxlKGNvbnN0IFN0cmluZyYgdmlvbGF0ZWREaXJlY3RpdmUpIGNvbnN0CiB7CiAgICAgQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0aXZlID0gbnVsbHB0
cjsKLSAgICBpZiAodmlvbGF0ZWREaXJlY3RpdmUuc3RhcnRzV2l0aChDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmMpKQorICAgIGlmICh2aW9sYXRlZERpcmVjdGl2
ZS5zdGFydHNXaXRoKFN0cmluZ1ZpZXcgeyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVO
YW1lczo6c3R5bGVTcmMgfSkpCiAgICAgICAgIGRpcmVjdGl2ZSA9IG1fc3R5bGVTcmMuZ2V0KCk7
Ci0gICAgZWxzZSBpZiAodmlvbGF0ZWREaXJlY3RpdmUuc3RhcnRzV2l0aChDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjKSkKKyAgICBlbHNlIGlmICh2aW9sYXRl
ZERpcmVjdGl2ZS5zdGFydHNXaXRoKFN0cmluZ1ZpZXcgeyBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjIH0pKQogICAgICAgICBkaXJlY3RpdmUgPSBtX3Njcmlw
dFNyYy5nZXQoKTsKIAogICAgIHJldHVybiBkaXJlY3RpdmUgJiYgZGlyZWN0aXZlLT5zaG91bGRS
ZXBvcnRTYW1wbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcAppbmRleCAxYTBiYzM2
NDIyYjM3NDRhOTA3YjI3ODk2ZTMwYTQyZGRjMTkwZTAzLi40NGU5NGU1NmUxZjA1ZjY3MDQwODA4
YjAxZTAyOTY3YWVkY2NkY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwCkBAIC0z
MCwzMiArMzAsMzIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMgewogCi1jb25zdCBjaGFyKiBjb25zdCBiYXNlVVJJ
ID0gImJhc2UtdXJpIjsKLWNvbnN0IGNoYXIqIGNvbnN0IGNoaWxkU3JjID0gImNoaWxkLXNyYyI7
Ci1jb25zdCBjaGFyKiBjb25zdCBjb25uZWN0U3JjID0gImNvbm5lY3Qtc3JjIjsKLWNvbnN0IGNo
YXIqIGNvbnN0IGRlZmF1bHRTcmMgPSAiZGVmYXVsdC1zcmMiOwotY29uc3QgY2hhciogY29uc3Qg
Zm9udFNyYyA9ICJmb250LXNyYyI7Ci1jb25zdCBjaGFyKiBjb25zdCBmb3JtQWN0aW9uID0gImZv
cm0tYWN0aW9uIjsKLWNvbnN0IGNoYXIqIGNvbnN0IGZyYW1lQW5jZXN0b3JzID0gImZyYW1lLWFu
Y2VzdG9ycyI7Ci1jb25zdCBjaGFyKiBjb25zdCBmcmFtZVNyYyA9ICJmcmFtZS1zcmMiOworQVND
SUlMaXRlcmFsIGJhc2VVUkkgPSAiYmFzZS11cmkiX3M7CitBU0NJSUxpdGVyYWwgY2hpbGRTcmMg
PSAiY2hpbGQtc3JjIl9zOworQVNDSUlMaXRlcmFsIGNvbm5lY3RTcmMgPSAiY29ubmVjdC1zcmMi
X3M7CitBU0NJSUxpdGVyYWwgZGVmYXVsdFNyYyA9ICJkZWZhdWx0LXNyYyJfczsKK0FTQ0lJTGl0
ZXJhbCBmb250U3JjID0gImZvbnQtc3JjIl9zOworQVNDSUlMaXRlcmFsIGZvcm1BY3Rpb24gPSAi
Zm9ybS1hY3Rpb24iX3M7CitBU0NJSUxpdGVyYWwgZnJhbWVBbmNlc3RvcnMgPSAiZnJhbWUtYW5j
ZXN0b3JzIl9zOworQVNDSUlMaXRlcmFsIGZyYW1lU3JjID0gImZyYW1lLXNyYyJfczsKICNpZiBF
TkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi1jb25zdCBjaGFyKiBjb25zdCBtYW5pZmVzdFNy
YyA9ICJtYW5pZmVzdC1zcmMiOworQVNDSUlMaXRlcmFsIG1hbmlmZXN0U3JjID0gIm1hbmlmZXN0
LXNyYyJfczsKICNlbmRpZgotY29uc3QgY2hhciogY29uc3QgaW1nU3JjID0gImltZy1zcmMiOwot
Y29uc3QgY2hhciogY29uc3QgbWVkaWFTcmMgPSAibWVkaWEtc3JjIjsKLWNvbnN0IGNoYXIqIGNv
bnN0IG9iamVjdFNyYyA9ICJvYmplY3Qtc3JjIjsKLWNvbnN0IGNoYXIqIGNvbnN0IHBsdWdpblR5
cGVzID0gInBsdWdpbi10eXBlcyI7Ci1jb25zdCBjaGFyKiBjb25zdCByZXBvcnRVUkkgPSAicmVw
b3J0LXVyaSI7Ci1jb25zdCBjaGFyKiBjb25zdCBzYW5kYm94ID0gInNhbmRib3giOwotY29uc3Qg
Y2hhciogY29uc3Qgc2NyaXB0U3JjID0gInNjcmlwdC1zcmMiOwotY29uc3QgY2hhciogY29uc3Qg
c2NyaXB0U3JjQXR0ciA9ICJzY3JpcHQtc3JjLWF0dHIiOwotY29uc3QgY2hhciogY29uc3Qgc2Ny
aXB0U3JjRWxlbSA9ICJzY3JpcHQtc3JjLWVsZW0iOwotY29uc3QgY2hhciogY29uc3Qgc3R5bGVT
cmMgPSAic3R5bGUtc3JjIjsKLWNvbnN0IGNoYXIqIGNvbnN0IHN0eWxlU3JjQXR0ciA9ICJzdHls
ZS1zcmMtYXR0ciI7Ci1jb25zdCBjaGFyKiBjb25zdCBzdHlsZVNyY0VsZW0gPSAic3R5bGUtc3Jj
LWVsZW0iOwotY29uc3QgY2hhciogY29uc3QgdXBncmFkZUluc2VjdXJlUmVxdWVzdHMgPSAidXBn
cmFkZS1pbnNlY3VyZS1yZXF1ZXN0cyI7Ci1jb25zdCBjaGFyKiBjb25zdCBibG9ja0FsbE1peGVk
Q29udGVudCA9ICJibG9jay1hbGwtbWl4ZWQtY29udGVudCI7Ci1jb25zdCBjaGFyKiBjb25zdCB3
b3JrZXJTcmMgPSAid29ya2VyLXNyYyI7CitBU0NJSUxpdGVyYWwgaW1nU3JjID0gImltZy1zcmMi
X3M7CitBU0NJSUxpdGVyYWwgbWVkaWFTcmMgPSAibWVkaWEtc3JjIl9zOworQVNDSUlMaXRlcmFs
IG9iamVjdFNyYyA9ICJvYmplY3Qtc3JjIl9zOworQVNDSUlMaXRlcmFsIHBsdWdpblR5cGVzID0g
InBsdWdpbi10eXBlcyJfczsKK0FTQ0lJTGl0ZXJhbCByZXBvcnRVUkkgPSAicmVwb3J0LXVyaSJf
czsKK0FTQ0lJTGl0ZXJhbCBzYW5kYm94ID0gInNhbmRib3giX3M7CitBU0NJSUxpdGVyYWwgc2Ny
aXB0U3JjID0gInNjcmlwdC1zcmMiX3M7CitBU0NJSUxpdGVyYWwgc2NyaXB0U3JjQXR0ciA9ICJz
Y3JpcHQtc3JjLWF0dHIiX3M7CitBU0NJSUxpdGVyYWwgc2NyaXB0U3JjRWxlbSA9ICJzY3JpcHQt
c3JjLWVsZW0iX3M7CitBU0NJSUxpdGVyYWwgc3R5bGVTcmMgPSAic3R5bGUtc3JjIl9zOworQVND
SUlMaXRlcmFsIHN0eWxlU3JjQXR0ciA9ICJzdHlsZS1zcmMtYXR0ciJfczsKK0FTQ0lJTGl0ZXJh
bCBzdHlsZVNyY0VsZW0gPSAic3R5bGUtc3JjLWVsZW0iX3M7CitBU0NJSUxpdGVyYWwgdXBncmFk
ZUluc2VjdXJlUmVxdWVzdHMgPSAidXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cyJfczsKK0FTQ0lJ
TGl0ZXJhbCBibG9ja0FsbE1peGVkQ29udGVudCA9ICJibG9jay1hbGwtbWl4ZWQtY29udGVudCJf
czsKK0FTQ0lJTGl0ZXJhbCB3b3JrZXJTcmMgPSAid29ya2VyLXNyYyJfczsKIAogfSAvLyBuYW1l
c3BhY2UgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmgKaW5kZXggMGQwYzFjZTZlODQxZTI0NDcxOWRmZDMwYWExYTUwY2YyOGM3NDU2
ZC4uMDliNGRmOGM1NzBjNmEyNWRmOTk5NDFmNDMzODAyZGNmMGY4ODAwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lcy5oCkBAIC0yNSwzNiArMjUsMzggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFj
ZSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcyB7CiAKLWV4dGVybiBjb25zdCBj
aGFyKiBjb25zdCBiYXNlVVJJOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGNoaWxkU3JjOwot
ZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGNvbm5lY3RTcmM7Ci1leHRlcm4gY29uc3QgY2hhciog
Y29uc3QgZGVmYXVsdFNyYzsKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBmb250U3JjOwotZXh0
ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGZvcm1BY3Rpb247Ci1leHRlcm4gY29uc3QgY2hhciogY29u
c3QgZnJhbWVBbmNlc3RvcnM7Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3QgZnJhbWVTcmM7Ci1l
eHRlcm4gY29uc3QgY2hhciogY29uc3QgaW1nU3JjOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBiYXNl
VVJJOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBjaGlsZFNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwg
Y29ubmVjdFNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgZGVmYXVsdFNyYzsKK2V4dGVybiBBU0NJ
SUxpdGVyYWwgZm9udFNyYzsKK2V4dGVybiBBU0NJSUxpdGVyYWwgZm9ybUFjdGlvbjsKK2V4dGVy
biBBU0NJSUxpdGVyYWwgZnJhbWVBbmNlc3RvcnM7CitleHRlcm4gQVNDSUlMaXRlcmFsIGZyYW1l
U3JjOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBpbWdTcmM7CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IG1hbmlmZXN0U3JjOworZXh0ZXJu
IEFTQ0lJTGl0ZXJhbCBtYW5pZmVzdFNyYzsKICNlbmRpZgotZXh0ZXJuIGNvbnN0IGNoYXIqIGNv
bnN0IG1lZGlhU3JjOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IG9iamVjdFNyYzsKLWV4dGVy
biBjb25zdCBjaGFyKiBjb25zdCBwbHVnaW5UeXBlczsKLWV4dGVybiBjb25zdCBjaGFyKiBjb25z
dCByZXBvcnRVUkk7Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3Qgc2FuZGJveDsKLWV4dGVybiBj
b25zdCBjaGFyKiBjb25zdCBzY3JpcHRTcmM7Ci1leHRlcm4gY29uc3QgY2hhciogY29uc3Qgc2Ny
aXB0U3JjRWxlbTsKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzY3JpcHRTcmNBdHRyOwotZXh0
ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHN0eWxlU3JjOwotZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0
IHN0eWxlU3JjQXR0cjsKLWV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzdHlsZVNyY0VsZW07Ci1l
eHRlcm4gY29uc3QgY2hhciogY29uc3QgdXBncmFkZUluc2VjdXJlUmVxdWVzdHM7Ci1leHRlcm4g
Y29uc3QgY2hhciogY29uc3QgYmxvY2tBbGxNaXhlZENvbnRlbnQ7Ci1leHRlcm4gY29uc3QgY2hh
ciogY29uc3Qgd29ya2VyU3JjOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBtZWRpYVNyYzsKK2V4dGVy
biBBU0NJSUxpdGVyYWwgb2JqZWN0U3JjOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBwbHVnaW5UeXBl
czsKK2V4dGVybiBBU0NJSUxpdGVyYWwgcmVwb3J0VVJJOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBz
YW5kYm94OworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBzY3JpcHRTcmM7CitleHRlcm4gQVNDSUlMaXRl
cmFsIHNjcmlwdFNyY0VsZW07CitleHRlcm4gQVNDSUlMaXRlcmFsIHNjcmlwdFNyY0F0dHI7Citl
eHRlcm4gQVNDSUlMaXRlcmFsIHN0eWxlU3JjOworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCBzdHlsZVNy
Y0F0dHI7CitleHRlcm4gQVNDSUlMaXRlcmFsIHN0eWxlU3JjRWxlbTsKK2V4dGVybiBBU0NJSUxp
dGVyYWwgdXBncmFkZUluc2VjdXJlUmVxdWVzdHM7CitleHRlcm4gQVNDSUlMaXRlcmFsIGJsb2Nr
QWxsTWl4ZWRDb250ZW50OworZXh0ZXJuIEFTQ0lJTGl0ZXJhbCB3b3JrZXJTcmM7CiAKIH0gLy8g
bmFtZXNwYWNlIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAppbmRleCA1YTM0
Y2VhMDU0YWM2NTRhZDMyNDJmOTIwYTQyODE3MDFmZWI2NmI0Li40MTk2NTc5YTNjNzQ2MTlmZTM3
ZGRmMDk1MzIzNjhjOGIxY2Q2NzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCkBAIC03OSwxMCArNzksMTAgQEAgc3RhdGljIGNvbnN0
IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVzKCkKICAgICAgICAgfTsKIAogICAgICAg
ICAvLyBPdGhlciBtaXNjIHNjaGVtZXMgdGhhdCB0aGUgTGVnYWN5U2NoZW1lUmVnaXN0cnkgZG9l
c24ndCBrbm93IGFib3V0LgotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgb3RoZXJT
Y2hlbWVzW10gPSB7Ci0gICAgICAgICAgICAid2Via2l0LWZha2UtdXJsIiwKKyAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgb3RoZXJTY2hlbWVzW10gPSB7CisgICAgICAgICAg
ICAid2Via2l0LWZha2UtdXJsIl9zLAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgICAgICJz
YWZhcmktZXh0ZW5zaW9uIiwKKyAgICAgICAgICAgICJzYWZhcmktZXh0ZW5zaW9uIl9zLAogI2Vu
ZGlmCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgICAgICAgICBRTFByZXZpZXdQcm90b2NvbCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKaW5kZXggOGE3
ZThlZjZiY2UyM2MxZjg0YWQ0MDMwNmNkNmY1ZjVjOTBlNThkYS4uMjlmZmM1NDkzYWNmMDg4MDky
MGY2ZWU1MWNjYzYwZDI5MzllZjA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5jcHAKQEAgLTc0NSwxOSArNzQ1LDE5IEBAIFN0cmluZyBBWExpbmtBY3Rp
b25WZXJiKCkKIFN0cmluZyBBWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJiKCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAic2VsZWN0IjsKKyAgICByZXR1cm4gInNlbGVjdCJf
czsKIH0KIAogU3RyaW5nIEFYTWVudUxpc3RBY3Rpb25WZXJiKCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAic2VsZWN0IjsKKyAgICByZXR1cm4gInNlbGVjdCJfczsKIH0K
IAogU3RyaW5nIEFYTGlzdEl0ZW1BY3Rpb25WZXJiKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiAic2VsZWN0IjsKKyAgICByZXR1cm4gInNlbGVjdCJfczsKIH0KIAogI2lm
IEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
bGVlcERpc2FibGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NsZWVwRGlzYWJsZXIu
Y3BwCmluZGV4IDI5ZGZjYjQzZTNhZGIxMzAyNTViZWM2NmFiMjBmOTA3NTdiNDdjY2YuLjFlODJh
OTk0Nzc3MTQ0MmFlNjM3YjhmNzU0NDBkMWIxNWU1N2U0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NsZWVwRGlzYWJsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NsZWVwRGlzYWJsZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU2xlZXBEaXNhYmxlcjo6U2xlZXBEaXNhYmxlcihjb25zdCBjaGFyKiByZWFz
b24sIFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZSB0eXBlKQorU2xlZXBEaXNhYmxlcjo6U2xlZXBE
aXNhYmxlcihjb25zdCBTdHJpbmcmIHJlYXNvbiwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlIHR5
cGUpCiAgICAgOiBtX3R5cGUodHlwZSkKIHsKICAgICBpZiAoc2xlZXBEaXNhYmxlckNsaWVudCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmgKaW5kZXggZjZlMTFjNjQ4
ZjU0MjExMDI2YzFjOTIwMmNlNDZhZTVjNzIzZGY4Ni4uY2EyNzVjMzVmNzRhMTRkM2FjM2RkMWQw
MDY5OWNhYjIzZmE3YmQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2xl
ZXBEaXNhYmxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NsZWVwRGlzYWJsZXIu
aApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTbGVlcERpc2Fi
bGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBTbGVlcERpc2FibGVyKGNvbnN0IGNoYXIqLCBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5
cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFNsZWVwRGlzYWJsZXIoY29uc3QgU3RyaW5nJiwgUEFM
OjpTbGVlcERpc2FibGVyOjpUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+U2xlZXBEaXNhYmxl
cigpOwogCiAgICAgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJh
c2UuY3BwCmluZGV4IDEzY2YyNzI0MDIzMWI1NGM1YThlZmJiZDVhNjBhMDE0ZTZmMzE1NWUuLmFk
MDQzYTM4MmIxZDE4ODU2MWNkNjY3NTY3YjFiODc3Njc2NDU2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBI
UlRGRGF0YWJhc2U6OkhSVEZEYXRhYmFzZShmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIHVuc2ln
bmVkIGVsZXZhdGlvbkluZGV4ID0gMDsKICAgICBmb3IgKGludCBlbGV2YXRpb24gPSBNaW5FbGV2
YXRpb247IGVsZXZhdGlvbiA8PSBNYXhFbGV2YXRpb247IGVsZXZhdGlvbiArPSBSYXdFbGV2YXRp
b25BbmdsZVNwYWNpbmcpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+
IGhydGZFbGV2YXRpb24gPSBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KCJDb21wb3Np
dGUiLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SFJU
RkVsZXZhdGlvbj4gaHJ0ZkVsZXZhdGlvbiA9IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1Ympl
Y3QoIkNvbXBvc2l0ZSJfcywgZWxldmF0aW9uLCBzYW1wbGVSYXRlKTsKICAgICAgICAgQVNTRVJU
KGhydGZFbGV2YXRpb24uZ2V0KCkpOwogICAgICAgICBpZiAoIWhydGZFbGV2YXRpb24uZ2V0KCkp
CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCmluZGV4IGQ4M2IyZjBlYzkzZTQyYTJkYTBj
ZGUyNTA4OWVhMGU2NDlkN2M2MzEuLjE1YjFlMDBmNGFiMmQwMmE2M2I1YTQ3YzY1ZTJlNTUyYTJm
OTQyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGUuY3BwCkBAIC0zOTksNyArMzk5LDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0
b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0
aWVzRm8KICAgICAgICAgLy8gMy44LiBJZiB0aGUgdXNlciBhZ2VudCBkb2VzIG5vdCByZWNvZ25p
emUgb25lIG9yIG1vcmUgcGFyYW1ldGVycywgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9u
LgogICAgICAgICAvLyAzLjkuIExldCBtZWRpYSB0eXBlcyBiZSB0aGUgc2V0IG9mIGNvZGVjcyBh
bmQgY29kZWMgY29uc3RyYWludHMgc3BlY2lmaWVkIGJ5IHBhcmFtZXRlcnMuIFRoZSBjYXNlLXNl
bnNpdGl2aXR5CiAgICAgICAgIC8vICAgICAgb2Ygc3RyaW5nIGNvbXBhcmlzb25zIGlzIGRldGVy
bWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQyBvciBvdGhlciBzcGVjaWZpY2F0aW9uLgotICAg
ICAgICBTdHJpbmcgY29kZWNzID0gY29udGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgi
Y29kZWNzIik7CisgICAgICAgIFN0cmluZyBjb2RlY3MgPSBjb250ZW50VHlwZS0+cGFyYW1ldGVy
VmFsdWVGb3JOYW1lKCJjb2RlY3MiX3MpOwogICAgICAgICBpZiAoY29udGVudFR5cGUtPnBhcmFt
ZXRlckNvdW50KCkgPiAoY29kZWNzLmlzRW1wdHkoKSA/IDAgOiAxKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggMThkNzhmNzFiNWRi
YzE1MjM5MjcyYTgyZWVlMjg2Nzk5Mjg0YTkwYi4uZmE5YjgyNTNmYTBkMjQ4YjZhNmM4NGQwODY5
ODI3OTU2NzJkMTQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtNTEsNyAr
NTEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPEtleUhhbmRsZT4+PiBw
YXJzZUxpY2Vuc2VGb3JtYXQoY29uc3QgSlNPTjo6TwogewogICAgIC8vIElmIHRoZSAna2V5cycg
a2V5IGlzIHByZXNlbnQgaW4gdGhlIHJvb3Qgb2JqZWN0LCBwYXJzZSB0aGUgSlNPTiBmdXJ0aGVy
CiAgICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgJ2xpY2Vuc2UnIGZvcm1hdC4KLSAg
ICBhdXRvIGl0ID0gcm9vdC5maW5kKCJrZXlzIik7CisgICAgYXV0byBpdCA9IHJvb3QuZmluZCgi
a2V5cyJfcyk7CiAgICAgaWYgKGl0ID09IHJvb3QuZW5kKCkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKQEAgLTY3LDE1ICs2NywxNSBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmUHRyPEtleUhhbmRsZT4+PiBwYXJzZUxpY2Vuc2VGb3JtYXQoY29uc3QgSlNPTjo6Twog
ICAgICAgICAgICAgaWYgKCFrZXlPYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgICAgICBhdXRvIGtleVR5cGUgPSBrZXlPYmplY3QtPmdldFN0cmluZygia3R5
Iik7CisgICAgICAgICAgICBhdXRvIGtleVR5cGUgPSBrZXlPYmplY3QtPmdldFN0cmluZygia3R5
Il9zKTsKICAgICAgICAgICAgIGlmICgha2V5VHlwZSB8fCAhZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2Uoa2V5VHlwZSwgIm9jdCIpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICAgICAgYXV0byBrZXlJRCA9IGtleU9iamVjdC0+Z2V0U3RyaW5nKCJraWQiKTsK
KyAgICAgICAgICAgIGF1dG8ga2V5SUQgPSBrZXlPYmplY3QtPmdldFN0cmluZygia2lkIl9zKTsK
ICAgICAgICAgICAgIGlmICgha2V5SUQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgICAgICBhdXRvIGtleVZhbHVlID0ga2V5T2JqZWN0LT5nZXRTdHJpbmcoImsiKTsK
KyAgICAgICAgICAgIGF1dG8ga2V5VmFsdWUgPSBrZXlPYmplY3QtPmdldFN0cmluZygiayJfcyk7
CiAgICAgICAgICAgICBpZiAoIWtleVZhbHVlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxpY2Vuc2VSZWxlYXNlQWNr
bm93bGVkZ2VtZW50Rm9ybWF0KGNvbnN0IEpTT046Ok9iamVjdCYgcm9vdCkKIHsKICAgICAvLyBJ
ZiB0aGUgJ2tpZHMnIGtleSBpcyBwcmVzZW50IGluIHRoZSByb290IG9iamVjdCwgcGFyc2UgdGhl
IEpTT04gZnVydGhlcgogICAgIC8vIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkICdsaWNlbnNl
IHJlbGVhc2UgYWNrbm93bGVkZ2VtZW50JyBmb3JtYXQuCi0gICAgYXV0byBpdCA9IHJvb3QuZmlu
ZCgia2lkcyIpOworICAgIGF1dG8gaXQgPSByb290LmZpbmQoImtpZHMiX3MpOwogICAgIGlmIChp
dCA9PSByb290LmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTIyNCw3ICsyMjQs
NyBAQCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZQogICAgICAgICBpbmRleCArPSBDbGVhcktleTo6
S2V5SURTaXplSW5CeXRlczsKICAgICB9CiAKLSAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwg
V1RGTW92ZShrZXlJZHNBcnJheSkpOworICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiX3MsIFdU
Rk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pT
T05TdHJpbmcoKS51dGY4KCk7CiAgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpz
b25EYXRhLmxlbmd0aCgpKTsKICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKQEAgLTI0OSw3ICsy
NDksNyBAQCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZy
b21XZWJNSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZAogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJ
RHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBv
ZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgogICAgIGtl
eUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CiAKLSAgICBvYmplY3Qt
PnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOworICAgIG9iamVjdC0+c2V0
QXJyYXkoImtpZHMiX3MsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25E
YXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CiAgICAga2V5SWRzLmFwcGVuZChq
c29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKICAgICByZXR1cm4ga2V5SWRzLnRh
a2UoKTsKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5
OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgICAg
ICAgICAgICAgIEFTU0VSVChrZXktPmlkKCkuc2l6ZSgpIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSk7CiAgICAgICAgICAgICAgICAgYXJyYXktPnB1c2hTdHJpbmcoYmFz
ZTY0VVJMRW5jb2RlVG9TdHJpbmcoa2V5LT5pZCgpLmRhdGEoKSwga2V5LT5pZCgpLnNpemUoKSkp
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcm9vdE9iamVjdC0+c2V0QXJyYXkoImtpZHMi
LCBXVEZNb3ZlKGFycmF5KSk7CisgICAgICAgICAgICByb290T2JqZWN0LT5zZXRBcnJheSgia2lk
cyJfcywgV1RGTW92ZShhcnJheSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQ29weSB0aGUg
SlNPTiBkYXRhIGludG8gYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9iamVjdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggM2U3N2FiNzk0Y2Q1MWFmNjJl
MjcwZTM1YWNhYmNiYTlmOGY1MTBhOC4uY2Y1ZjAzNTFiZDU3YmQ1MDgyMDhhZDE2OWNlMDM0NjFl
ODliZWJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAg
LTUyMyw3ICs1MjMsNyBAQCBib29sIEZvbnQ6OmlzUHJvYmFibHlPbmx5VXNlZFRvUmVuZGVySWNv
bnMoKSBjb25zdAogU3RyaW5nIEZvbnQ6OmRlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBpZiAo
b3JpZ2luKCkgPT0gT3JpZ2luOjpSZW1vdGUpCi0gICAgICAgIHJldHVybiAiW2N1c3RvbSBmb250
XSI7CisgICAgICAgIHJldHVybiAiW2N1c3RvbSBmb250XSJfczsKIAogICAgIHJldHVybiBwbGF0
Zm9ybURhdGEoKS5kZXNjcmlwdGlvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAppbmRleCAyODhiOGE1ZjAwMDA2ZWM3YjNl
MWMyY2E1YWM2NmRhYWFjMWUyNTYzLi4xNTdkODMwOWFlM2I2NTYwMTNkZDdkYWFlYzIxZjkyOGY5
N2MxMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmNwcApAQCAtMzUsNDIgKzM1LDQyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGNvbXBvc2l0ZU9wZXJhdG9yTmFtZXNbXSA9IHsK
LSAgICAiY2xlYXIiLAotICAgICJjb3B5IiwKLSAgICAic291cmNlLW92ZXIiLAotICAgICJzb3Vy
Y2UtaW4iLAotICAgICJzb3VyY2Utb3V0IiwKLSAgICAic291cmNlLWF0b3AiLAotICAgICJkZXN0
aW5hdGlvbi1vdmVyIiwKLSAgICAiZGVzdGluYXRpb24taW4iLAotICAgICJkZXN0aW5hdGlvbi1v
dXQiLAotICAgICJkZXN0aW5hdGlvbi1hdG9wIiwKLSAgICAieG9yIiwKLSAgICAiZGFya2VyIiwK
LSAgICAibGlnaHRlciIsCi0gICAgImRpZmZlcmVuY2UiCitzdGF0aWMgY29uc3RleHByIEFTQ0lJ
TGl0ZXJhbCBjb21wb3NpdGVPcGVyYXRvck5hbWVzW10gPSB7CisgICAgImNsZWFyIl9zLAorICAg
ICJjb3B5Il9zLAorICAgICJzb3VyY2Utb3ZlciJfcywKKyAgICAic291cmNlLWluIl9zLAorICAg
ICJzb3VyY2Utb3V0Il9zLAorICAgICJzb3VyY2UtYXRvcCJfcywKKyAgICAiZGVzdGluYXRpb24t
b3ZlciJfcywKKyAgICAiZGVzdGluYXRpb24taW4iX3MsCisgICAgImRlc3RpbmF0aW9uLW91dCJf
cywKKyAgICAiZGVzdGluYXRpb24tYXRvcCJfcywKKyAgICAieG9yIl9zLAorICAgICJkYXJrZXIi
X3MsCisgICAgImxpZ2h0ZXIiX3MsCisgICAgImRpZmZlcmVuY2UiX3MKIH07CiAKLXN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBibGVuZE9wZXJhdG9yTmFtZXNbXSA9IHsKLSAgICAibm9ybWFsIiwK
LSAgICAibXVsdGlwbHkiLAotICAgICJzY3JlZW4iLAotICAgICJkYXJrZW4iLAotICAgICJsaWdo
dGVuIiwKLSAgICAib3ZlcmxheSIsCi0gICAgImNvbG9yLWRvZGdlIiwKLSAgICAiY29sb3ItYnVy
biIsCi0gICAgImhhcmQtbGlnaHQiLAotICAgICJzb2Z0LWxpZ2h0IiwKLSAgICAiZGlmZmVyZW5j
ZSIsCi0gICAgImV4Y2x1c2lvbiIsCi0gICAgImh1ZSIsCi0gICAgInNhdHVyYXRpb24iLAotICAg
ICJjb2xvciIsCi0gICAgImx1bWlub3NpdHkiLAotICAgICJwbHVzLWRhcmtlciIsCi0gICAgInBs
dXMtbGlnaHRlciIKK3N0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGJsZW5kT3BlcmF0b3JO
YW1lc1tdID0geworICAgICJub3JtYWwiX3MsCisgICAgIm11bHRpcGx5Il9zLAorICAgICJzY3Jl
ZW4iX3MsCisgICAgImRhcmtlbiJfcywKKyAgICAibGlnaHRlbiJfcywKKyAgICAib3ZlcmxheSJf
cywKKyAgICAiY29sb3ItZG9kZ2UiX3MsCisgICAgImNvbG9yLWJ1cm4iX3MsCisgICAgImhhcmQt
bGlnaHQiX3MsCisgICAgInNvZnQtbGlnaHQiX3MsCisgICAgImRpZmZlcmVuY2UiX3MsCisgICAg
ImV4Y2x1c2lvbiJfcywKKyAgICAiaHVlIl9zLAorICAgICJzYXR1cmF0aW9uIl9zLAorICAgICJj
b2xvciJfcywKKyAgICAibHVtaW5vc2l0eSJfcywKKyAgICAicGx1cy1kYXJrZXIiX3MsCisgICAg
InBsdXMtbGlnaHRlciJfcwogfTsKIGNvbnN0IHVpbnQ4X3QgbnVtQ29tcG9zaXRlT3BlcmF0b3JO
YW1lcyA9IFdURl9BUlJBWV9MRU5HVEgoY29tcG9zaXRlT3BlcmF0b3JOYW1lcyk7CiBjb25zdCB1
aW50OF90IG51bUJsZW5kT3BlcmF0b3JOYW1lcyA9IFdURl9BUlJBWV9MRU5HVEgoYmxlbmRPcGVy
YXRvck5hbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0luYmFuZEdlbmVyaWNDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW5iYW5kR2VuZXJpY0N1ZS5jcHAKaW5kZXggM2VjODAwNWYzOGI2ZGU2YTE1NWMzMDVmNzU4YzVi
MDk4OWQ5ZTdkMS4uOGU3MzhmN2YwNGI3MDUxOWExNjdlYzJhOTk2YjQ3Zjg4NzVmZWZlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJp
Y0N1ZS5jcHAKQEAgLTUwLDIyICs1MCwyMiBAQCBTdHJpbmcgSW5iYW5kR2VuZXJpY0N1ZTo6dG9K
U09OU3RyaW5nKCkgY29uc3QKICAgICBvYmplY3QtPnNldERvdWJsZSgic3RhcnQiX3MsIG1fY3Vl
RGF0YS5tX3N0YXJ0VGltZS50b0RvdWJsZSgpKTsKICAgICBvYmplY3QtPnNldERvdWJsZSgiZW5k
Il9zLCBtX2N1ZURhdGEubV9lbmRUaW1lLnRvRG91YmxlKCkpOwogCi0gICAgY29uc3QgY2hhciog
c3RhdHVzID0gIiI7CisgICAgQVNDSUlMaXRlcmFsIHN0YXR1cyA9ICIiX3M7CiAgICAgc3dpdGNo
IChtX2N1ZURhdGEubV9zdGF0dXMpIHsKICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGF0dXM6
OlVuaW5pdGlhbGl6ZWQ6Ci0gICAgICAgIHN0YXR1cyA9ICJVbmluaXRpYWxpemVkIjsKKyAgICAg
ICAgc3RhdHVzID0gIlVuaW5pdGlhbGl6ZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
R2VuZXJpY0N1ZURhdGE6OlN0YXR1czo6UGFydGlhbDoKLSAgICAgICAgc3RhdHVzID0gIlBhcnRp
YWwiOworICAgICAgICBzdGF0dXMgPSAiUGFydGlhbCJfczsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBHZW5lcmljQ3VlRGF0YTo6U3RhdHVzOjpDb21wbGV0ZToKLSAgICAgICAgc3RhdHVzID0g
IkNvbXBsZXRlIjsKKyAgICAgICAgc3RhdHVzID0gIkNvbXBsZXRlIl9zOwogICAgICAgICBicmVh
azsKICAgICB9Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoInN0YXR1cyIsIHN0YXR1cyk7CisgICAg
b2JqZWN0LT5zZXRTdHJpbmcoInN0YXR1cyJfcywgc3RhdHVzKTsKIAogICAgIGlmICghbV9jdWVE
YXRhLm1faWQuaXNFbXB0eSgpKQotICAgICAgICBvYmplY3QtPnNldFN0cmluZygiaWQiLCBtX2N1
ZURhdGEubV9pZCk7CisgICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJpZCJfcywgbV9jdWVEYXRh
Lm1faWQpOwogCiAgICAgaWYgKG1fY3VlRGF0YS5tX2xpbmUgPiAwKQogICAgICAgICBvYmplY3Qt
PnNldERvdWJsZSgibGluZSJfcywgbV9jdWVEYXRhLm1fbGluZSk7CkBAIC03NywxOSArNzcsMTkg
QEAgU3RyaW5nIEluYmFuZEdlbmVyaWNDdWU6OnRvSlNPTlN0cmluZygpIGNvbnN0CiAgICAgICAg
IG9iamVjdC0+c2V0RG91YmxlKCJwb3NpdGlvbiJfcywgbV9jdWVEYXRhLm1fcG9zaXRpb24pOwog
CiAgICAgaWYgKG1fY3VlRGF0YS5tX2FsaWduICE9IEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6
Ok5vbmUpIHsKLSAgICAgICAgY29uc3QgY2hhciogYWxpZ24gPSAiIjsKKyAgICAgICAgQVNDSUlM
aXRlcmFsIGFsaWduID0gIiJfczsKICAgICAgICAgc3dpdGNoIChtX2N1ZURhdGEubV9hbGlnbikg
ewogICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6OlN0YXJ0OgotICAgICAg
ICAgICAgYWxpZ24gPSAiU3RhcnQiOworICAgICAgICAgICAgYWxpZ24gPSAiU3RhcnQiX3M7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6QWxpZ25tZW50
OjpNaWRkbGU6Ci0gICAgICAgICAgICBhbGlnbiA9ICJNaWRkbGUiOworICAgICAgICAgICAgYWxp
Z24gPSAiTWlkZGxlIl9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2VuZXJp
Y0N1ZURhdGE6OkFsaWdubWVudDo6RW5kOgotICAgICAgICAgICAgYWxpZ24gPSAiRW5kIjsKKyAg
ICAgICAgICAgIGFsaWduID0gIkVuZCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEdlbmVyaWNDdWVEYXRhOjpBbGlnbm1lbnQ6Ok5vbmU6Ci0gICAgICAgICAgICBhbGlnbiA9
ICJOb25lIjsKKyAgICAgICAgICAgIGFsaWduID0gIk5vbmUiX3M7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBvYmplY3QtPnNldFN0cmluZygiYWxpZ24iX3MsIGFsaWdu
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAppbmRleCA2ZjQ5YWYwNDZkMTI0NjNhNGRlZmE5ZjE0ODlhNzE1MzJhOGRhZjhhLi5lZGQ5MzEw
YjU2YjBhYzg4OWEyYzkzMjExY2FiMDhhMzRhY2Q3NDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcGxheSgpIGZpbmFsIHsgfQogICAgIHZvaWQgcGF1c2UoKSBmaW5h
bCB7IH0KIAotICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJOdWxsTWVkaWFQbGF5ZXIiOyB9CisgICAgU3RyaW5nIGVuZ2luZURlc2NyaXB0aW9uKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gIk51bGxNZWRpYVBsYXllciJfczsgfQogCiAgICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAK
aW5kZXggNjJkNDkxZDI4Nzk0NjE3NTA3ODAxNGEwOTQ1YjI2MjI2ZTJkZWJmMC4uMDNiZWZmOTkz
N2FmNjQxYzg3OWM5YTZkOGMzMTRjMWYwMTU3N2Y3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCkBAIC0xMDIsMTQgKzEwMiwxNCBAQCBT
dHJpbmcgY29kZWNGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBm
b3JtYXREZXNjcmlwdGlvbikKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRl
bnNpb25zRGljdCA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oUEFMOjpDTUZvcm1hdERl
c2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGZvcm1hdERlc2NyaXB0aW9uLCBQQUw6OmdldF9Db3JlTWVk
aWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fU2FtcGxlRGVzY3JpcHRpb25FeHRlbnNp
b25BdG9tcygpKSk7CiAgICAgICAgICAgICBpZiAoIXNhbXBsZUV4dGVuc2lvbnNEaWN0KQotICAg
ICAgICAgICAgICAgIHJldHVybiAiYXZjMSI7CisgICAgICAgICAgICAgICAgcmV0dXJuICJhdmMx
Il9zOwogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8Q0ZE
YXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGljdCwgQ0ZTVFIo
ImF2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQotICAgICAgICAg
ICAgICAgIHJldHVybiAiYXZjMSI7CisgICAgICAgICAgICAgICAgcmV0dXJuICJhdmMxIl9zOwog
ICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMg
PSBwYXJzZUFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbmZpZ3VyYXRpb25SZWNvcmRC
dWZmZXIpOwogICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJl
dHVybiAiYXZjMSI7CisgICAgICAgICAgICAgICAgcmV0dXJuICJhdmMxIl9zOwogICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZygqcGFyYW1ldGVycyk7CiAg
ICAgICAgIH0KICAgICBjYXNlIGtDTVZpZGVvQ29kZWNUeXBlX0hFVkM6CkBAIC0xMTgsMTQgKzEx
OCwxNCBAQCBTdHJpbmcgY29kZWNGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlw
dGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBz
YW1wbGVFeHRlbnNpb25zRGljdCA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oUEFMOjpD
TUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGZvcm1hdERlc2NyaXB0aW9uLCBQQUw6Omdl
dF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fU2FtcGxlRGVzY3JpcHRp
b25FeHRlbnNpb25BdG9tcygpKSk7CiAgICAgICAgICAgICBpZiAoIXNhbXBsZUV4dGVuc2lvbnNE
aWN0KQotICAgICAgICAgICAgICAgIHJldHVybiAiaHZjMSI7CisgICAgICAgICAgICAgICAgcmV0
dXJuICJodmMxIl9zOwogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGlj
X2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGlj
dCwgQ0ZTVFIoImh2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQot
ICAgICAgICAgICAgICAgIHJldHVybiAiaHZjMSI7CisgICAgICAgICAgICAgICAgcmV0dXJuICJo
dmMxIl9zOwogICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBh
cmFtZXRlcnMgPSBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChrQ01WaWRlb0Nv
ZGVjVHlwZV9IRVZDLCBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAgICAgIGlm
ICghcGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICByZXR1cm4gImh2YzEiOworICAgICAgICAg
ICAgICAgIHJldHVybiAiaHZjMSJfczsKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVIRVZDQ29k
ZWNQYXJhbWV0ZXJzU3RyaW5nKCpwYXJhbWV0ZXJzKTsKICAgICAgICAgfQogICAgIGNhc2Uga0NN
VmlkZW9Db2RlY1R5cGVfRG9sYnlWaXNpb25IRVZDOgpAQCAtMTMzLDQzICsxMzMsNDMgQEAgU3Ry
aW5nIGNvZGVjRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9y
bWF0RGVzY3JpcHRpb24pCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5z
aW9uc0RpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KFBBTDo6Q01Gb3JtYXREZXNj
cmlwdGlvbkdldEV4dGVuc2lvbihmb3JtYXREZXNjcmlwdGlvbiwgUEFMOjpnZXRfQ29yZU1lZGlh
X2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9u
QXRvbXMoKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zRGljdCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gImR2aDEiOworICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSJf
czsKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0
YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJk
dmNDIikpKTsKICAgICAgICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gImR2aDEiOworICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSJfczsKICAg
ICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNhbXBsZUV4dGVuc2lvbnMpOwogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0g
cGFyc2VEb1ZpRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uZmlndXJhdGlvblJlY29yZEJ1
ZmZlcik7CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCi0gICAgICAgICAgICAgICAgcmV0
dXJuICJkdmgxIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gImR2aDEiX3M7CiAgICAgICAgICAg
ICByZXR1cm4gY3JlYXRlRG9WaUNvZGVjUGFyYW1ldGVyc1N0cmluZygqcGFyYW1ldGVycyk7CiAg
ICAgICAgIH0KICAgICBjYXNlIGtDTVZpZGVvQ29kZWNUeXBlX01QRUc0VmlkZW86Ci0gICAgICAg
IHJldHVybiAibXA0diI7CisgICAgICAgIHJldHVybiAibXA0diJfczsKICAgICBjYXNlIGtDTVZp
ZGVvQ29kZWNUeXBlX1ZQOToKLSAgICAgICAgcmV0dXJuICJ2cDA5IjsKKyAgICAgICAgcmV0dXJu
ICJ2cDA5Il9zOwogICAgIGNhc2Uga0F1ZGlvRm9ybWF0QUMzOgotICAgICAgICByZXR1cm4gImFj
LTMiOworICAgICAgICByZXR1cm4gImFjLTMiX3M7CiAgICAgY2FzZSBrQXVkaW9Gb3JtYXRNUEVH
NEFBQzoKLSAgICAgICAgcmV0dXJuICJtcDRhLjQwLjIiOworICAgICAgICByZXR1cm4gIm1wNGEu
NDAuMiJfczsKICAgICBjYXNlIGtBdWRpb0Zvcm1hdE1QRUc0QUFDX0hFOgotICAgICAgICByZXR1
cm4gIm1wNGEuNDAuNSI7CisgICAgICAgIHJldHVybiAibXA0YS40MC41Il9zOwogICAgIGNhc2Ug
a0F1ZGlvRm9ybWF0TVBFRzRBQUNfSEVfVjI6Ci0gICAgICAgIHJldHVybiAibXA0YS40MC4yOSI7
CisgICAgICAgIHJldHVybiAibXA0YS40MC4yOSJfczsKICAgICBjYXNlIGtBdWRpb0Zvcm1hdE1Q
RUc0QUFDX0xEOgotICAgICAgICByZXR1cm4gIm1wNGEuNDAuMjMiOworICAgICAgICByZXR1cm4g
Im1wNGEuNDAuMjMiX3M7CiAgICAgY2FzZSBrQXVkaW9Gb3JtYXRNUEVHNEFBQ19FTEQ6Ci0gICAg
ICAgIHJldHVybiAibXA0YS40MC4zOSI7CisgICAgICAgIHJldHVybiAibXA0YS40MC4zOSJfczsK
ICAgICBjYXNlIGtBdWRpb0Zvcm1hdEZMQUM6Ci0gICAgICAgIHJldHVybiAiZmxhYyI7CisgICAg
ICAgIHJldHVybiAiZmxhYyJfczsKICAgICBjYXNlIGtBdWRpb0Zvcm1hdE9wdXM6Ci0gICAgICAg
IHJldHVybiAib3B1cyI7CisgICAgICAgIHJldHVybiAib3B1cyJfczsKICAgICBjYXNlIGtBdWRp
b0Zvcm1hdEVuaGFuY2VkQUMzOgogICAgIGNhc2UgJ2VjKzMnOgogICAgIGNhc2UgJ3FlYzMnOgog
ICAgIGNhc2UgJ2NlLTMnOgotICAgICAgICByZXR1cm4gImVjLTMiOworICAgICAgICByZXR1cm4g
ImVjLTMiX3M7CiAgICAgY2FzZSAnZHRzICc6Ci0gICAgICAgIHJldHVybiAiZHRzIjsKKyAgICAg
ICAgcmV0dXJuICJkdHMiX3M7CiAgICAgfQogCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcAppbmRleCBiODY2YzcxNzE4Y2JmYzU0NGFlNTcyNzk1ZjNhNDQzNWVkYzk4MmVj
Li5kYWVmY2I3NjczZWZkM2Y4ZjA4Y2IwODNkZjhiNzJhN2VkZDk0ZmQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAKQEAgLTMxMDIsNyArMzEwMiw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmlt
YXRpb25zKCkKICAgICBhdXRvIGN1cnJlbnRUaW1lID0gU2Vjb25kcyhDQUN1cnJlbnRNZWRpYVRp
bWUoKSk7CiAKICAgICBhdXRvIGFkZEFuaW1hdGlvbkdyb3VwID0gWyZdKEFuaW1hdGVkUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgY29uc3QgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPj4m
IGFuaW1hdGlvbnMpIHsKLSAgICAgICAgYXV0byBjYUFuaW1hdGlvbkdyb3VwID0gY3JlYXRlUGxh
dGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpHcm91cCwgIiIpOworICAgICAg
ICBhdXRvIGNhQW5pbWF0aW9uR3JvdXAgPSBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRm
b3JtQ0FBbmltYXRpb246Okdyb3VwLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgY2FBbmltYXRp
b25Hcm91cC0+c2V0RHVyYXRpb24oaW5maW5pdGVEdXJhdGlvbik7CiAgICAgICAgIGNhQW5pbWF0
aW9uR3JvdXAtPnNldEFuaW1hdGlvbnMoYW5pbWF0aW9ucyk7CiAKQEAgLTQ4MjAsMjIgKzQ4MjAs
MjIgQEAgc3RhdGljIFN0cmluZyBhbmltYXRlZFByb3BlcnR5SURBc1N0cmluZyhBbmltYXRlZFBy
b3BlcnR5SUQgcHJvcGVydHkpCiAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5U2NhbGU6CiAgICAg
Y2FzZSBBbmltYXRlZFByb3BlcnR5Um90YXRlOgogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVRy
YW5zZm9ybToKLSAgICAgICAgcmV0dXJuICJ0cmFuc2Zvcm0iOworICAgICAgICByZXR1cm4gInRy
YW5zZm9ybSJfczsKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5OgotICAgICAgICBy
ZXR1cm4gIm9wYWNpdHkiOworICAgICAgICByZXR1cm4gIm9wYWNpdHkiX3M7CiAgICAgY2FzZSBB
bmltYXRlZFByb3BlcnR5QmFja2dyb3VuZENvbG9yOgotICAgICAgICByZXR1cm4gImJhY2tncm91
bmQtY29sb3IiOworICAgICAgICByZXR1cm4gImJhY2tncm91bmQtY29sb3IiX3M7CiAgICAgY2Fz
ZSBBbmltYXRlZFByb3BlcnR5RmlsdGVyOgotICAgICAgICByZXR1cm4gImZpbHRlciI7CisgICAg
ICAgIHJldHVybiAiZmlsdGVyIl9zOwogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCiAgICAg
Y2FzZSBBbmltYXRlZFByb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXI6Ci0gICAgICAgIHJldHVy
biAiYmFja2Ryb3AtZmlsdGVyIjsKKyAgICAgICAgcmV0dXJuICJiYWNrZHJvcC1maWx0ZXIiX3M7
CiAjZW5kaWYKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlJbnZhbGlkOgotICAgICAgICByZXR1
cm4gImludmFsaWQiOworICAgICAgICByZXR1cm4gImludmFsaWQiX3M7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gIiJfczsKIH0K
IAogVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IEdyYXBoaWNzTGF5ZXJDQTo6YWNj
ZWxlcmF0ZWRBbmltYXRpb25zRm9yVGVzdGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4
IGU2Y2UyZmI5NzI0N2E2Yjg2YzA5YjFhZDM2MTcwMWMyZWMzZTg2MjUuLjQ2ODliMTA2NGU0ODNm
NmRlOWYwNjc2YWU0NjdkNzQ1NmNjNjY0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC02NCw3ICs2
NCw3IEBAIFBERkRvY3VtZW50SW1hZ2U6On5QREZEb2N1bWVudEltYWdlKCkgPSBkZWZhdWx0Owog
CiBTdHJpbmcgUERGRG9jdW1lbnRJbWFnZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogewot
ICAgIHJldHVybiAicGRmIjsKKyAgICByZXR1cm4gInBkZiJfczsKIH0KIAogRmxvYXRTaXplIFBE
RkRvY3VtZW50SW1hZ2U6OnNpemUoSW1hZ2VPcmllbnRhdGlvbikgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVz
Q29jb2EubW0KaW5kZXggODQyMjEwYjM3MTI3ZmU4ZWVlZTlhY2MyM2NjYzk2YzA0ZDhjNTdhMS4u
NDAxYTUyZTNmZGRjZjVmNGVmMWRjYjA0M2Y5YTBjNzM4MDI1M2FiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVz
Q29jb2EubW0KQEAgLTU5Nyw3ICs1OTcsNyBAQCBSZWY8VmlkZW9JbmZvPiBjcmVhdGVWaWRlb0lu
Zm9Gcm9tVlA5SGVhZGVyUGFyc2VyKGNvbnN0IHZwOV9wYXJzZXI6OlZwOUhlYWRlclBhcgogewog
ICAgIFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkIHJlY29yZDsKIAotICAgIHJlY29yZC5jb2Rl
Y05hbWUgPSAidnAwOSI7CisgICAgcmVjb3JkLmNvZGVjTmFtZSA9ICJ2cDA5Il9zOwogICAgIHJl
Y29yZC5wcm9maWxlID0gcGFyc2VyLnByb2ZpbGUoKTsKICAgICAvLyBDb3JlTWVkaWEgZG9lcyBu
YXQgY2FyZSBhYm91dCB0aGUgVlA5IGNvZGVjIGxldmVsOyBoYXJkLWNvZGUgdG8gTGV2ZWwgMS4w
IGhlcmU6CiAgICAgcmVjb3JkLmxldmVsID0gMTA7CkBAIC02OTMsNyArNjkzLDcgQEAgc3RkOjpv
cHRpb25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhGcmFtZUhlYWRlcihjb25zdCB1aW50OF90
KiBmcmFtZURhdGEsIHNpemUKIFJlZjxWaWRlb0luZm8+IGNyZWF0ZVZpZGVvSW5mb0Zyb21WUDhI
ZWFkZXIoY29uc3QgVlA4RnJhbWVIZWFkZXImIGhlYWRlciwgY29uc3Qgd2VibTo6RWxlbWVudDxD
b2xvdXI+JiBjb2xvcikKIHsKICAgICBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCByZWNvcmQ7
Ci0gICAgcmVjb3JkLmNvZGVjTmFtZSA9ICJ2cDA4IjsKKyAgICByZWNvcmQuY29kZWNOYW1lID0g
InZwMDgiX3M7CiAgICAgcmVjb3JkLnByb2ZpbGUgPSAwOwogICAgIHJlY29yZC5sZXZlbCA9IDEw
OwogICAgIHJlY29yZC5iaXREZXB0aCA9IDg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNw
cAppbmRleCA1NzdiMTEwMDBiZTEzNTdmMjM1YTkxN2FmNDc1NWFiYTdkZGFkOGIwLi4wNWQ1Yjkw
NTcwZjI4ZmFiNGIyODJiNmE3MmMzYzE1M2JmZjNmZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2
YXRlV2ViTS5jcHAKQEAgLTk3LDEwICs5NywxMCBAQCBTdHJpbmcgVmlkZW9UcmFja1ByaXZhdGVX
ZWJNOjpjb2RlYygpIGNvbnN0CiAKICAgICAvLyBUT0RPOiBTcGVjaWZpYyBjb2RlYyBwYXJhbWV0
ZXJzIGFyZSBwYXJzZWQgb3V0IG9mIHRoZSBzYW1wbGUgaGVhZGVyOyB0aGV5IGFyZW4ndCB0eXBp
Y2FsbHkgY29udGFpbmVkIGluIHRoZSBXZWJNIFRyYWNrIGVsZW1lbnQuCiAgICAgaWYgKGNvZGVj
SUQgPT0gIlZfVlA5IikKLSAgICAgICAgcmV0dXJuICJ2cDA5IjsKKyAgICAgICAgcmV0dXJuICJ2
cDA5Il9zOwogCiAgICAgaWYgKGNvZGVjSUQgPT0gIlZfVlA4IikKLSAgICAgICAgcmV0dXJuICJ2
cDA4IjsKKyAgICAgICAgcmV0dXJuICJ2cDA4Il9zOwogCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUJsZW5kLmNwcAppbmRleCA0MThlYzBkNzEzMjhiZGY5MWM0NWYyMjQ0NDA0N2YxODAwZDQw
OTkyLi45YjkwMWM0N2NhY2I4NDE5NWRjNjliY2Q3NTFiZmNhMGQ2YWZmYTUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgVGV4dFN0cmVhbSYgRkVCbGVuZDo6ZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJiB0cywgRmlsdGVyUmVwcmVzZW50YXRpb24KICAgICB0cyA8PCBpbmRl
bnQgPDwgIltmZUJsZW5kIjsKICAgICBGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRp
b24odHMsIHJlcHJlc2VudGF0aW9uKTsKIAotICAgIHRzIDw8ICIgbW9kZT1cIiIgPDwgKG1fbW9k
ZSA9PSBCbGVuZE1vZGU6Ok5vcm1hbCA/ICJub3JtYWwiIDogY29tcG9zaXRlT3BlcmF0b3JOYW1l
KENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyLCBtX21vZGUpKTsKKyAgICB0cyA8PCAiIG1v
ZGU9XCIiIDw8IChtX21vZGUgPT0gQmxlbmRNb2RlOjpOb3JtYWwgPyAibm9ybWFsIl9zIDogY29t
cG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyLCBtX21vZGUp
KTsKIAogICAgIHRzIDw8ICJcIl1cbiI7CiAgICAgcmV0dXJuIHRzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggZDkyMDNmYzgxYmNhOTM0YTE0YjM2ZWFiY2NlY2Yz
YjJjZDMxNDY1OS4uY2FhYWI2ZmM1OThiMzkwZWE1NDUzNGFhZTA5OGM0OGM5YzkyNDY5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNjYsMTEgKzM2NiwxMSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25z
dCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaQogICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhh
dHRycyk7CiAgICAgfQogICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgIW1faXNGb3JXZWJHTDIp
IHsKLSAgICAgICAgaWYgKCFzdXBwb3J0c0V4dGVuc2lvbigiR0xfQU5HTEVfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUiKSkgeworICAgICAgICBpZiAoIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJfcykpIHsKICAgICAgICAgICAgIGF0dHJzLmFudGlh
bGlhcyA9IGZhbHNlOwogICAgICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cnMpOwog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoIkdMX0FO
R0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgICAgICBlbnN1cmVFeHRlbnNp
b25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJfcyk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmgKaW5kZXggMGE2ZWZhZWYz
ZTg2MWVmNTlmZDQyODljZWY5MTFjNzc4ZGE3MGNhMS4uMjY2NmVlOGMxYTE3OGNjYTE1NjZhN2Y4
NDc5OWVhODg4MGNjNjAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1F1aWNrTG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2su
aApAQCAtNDEsNiArNDEsNiBAQCBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0
PiByZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5TVVJMCiBXRUJDT1JFX0VYUE9S
VCBib29sIGlzUXVpY2tMb29rUHJldmlld1VSTChjb25zdCBVUkwmKTsKIFdFQkNPUkVfRVhQT1JU
IE5TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlGaWxlRm9yUXVpY2tMb29rKE5TU3RyaW5nICpmaWxl
TmFtZSk7CiAKLWV4dGVybiBjb25zdCBjaGFyKiBRTFByZXZpZXdQcm90b2NvbDsKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBRTFByZXZpZXdQcm90b2NvbCA9ICJ4LWFwcGxlLXFsLWlkIl9zOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9v
ay5tbQppbmRleCBlM2MzMDdjODFlMWI5YzdmMjlmMDNlYjQzMjNhODFmM2E4OWU5MWVmLi4yZmEy
NzY5ZDkzMTMwNDgwMjJjMjI5MWRjZTNlNTc5ODc4MmI0MTcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9RdWlja0xvb2subW0KQEAgLTM4LDggKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jb25zdCBjaGFyKiBRTFByZXZpZXdQcm90b2NvbCA9ICJ4LWFwcGxlLXFsLWlk
IjsKLQogTlNTZXQgKlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpCiB7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1NldD4+IHNldCA9IFBBTDo6c29mdExp
bmtfUXVpY2tMb29rX1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlcygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCAwMDc0ZDE0NDk1ZTljZjEwY2UwNTRiOWVmMDli
NDFiNzdkNmI4NmRlLi5hYTBlODQyYzY0NTg4NjBjNGE1OGJhY2Y0ZjE3MTY5ZDA1OGYxZTI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIFN0
cmluZyBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpoYXNoU3RyaW5nV2l0aFNhbHQoY29uc3Qg
U3RyaW5nJiBpZCwgY29uc3QgU3RyCiAgICAgU0hBMTo6RGlnZXN0IGRpZ2VzdDsKICAgICBzaGEx
LmNvbXB1dGVIYXNoKGRpZ2VzdCk7CiAgICAgCi0gICAgcmV0dXJuIFNIQTE6OmhleERpZ2VzdChk
aWdlc3QpLmRhdGEoKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgU0hBMTo6aGV4RGlnZXN0KGRpZ2Vz
dCkuZGF0YSgpIH07CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6YWRkRGV2
aWNlc0NoYW5nZWRPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcAppbmRleCAyYzdjNDFiZDY5
NmZmMWY5YmFiMzgzODFhNGI1ODM4NTY4YjE4YTRlLi44M2JjOWVlMjBkOGM2YjQ0MzBlNWY2NDkz
ZjQ1YzJmMWQ1NTE0OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1JUQ05vdGlmaWVyc01vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
UlRDTm90aWZpZXJzTW9jay5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgUmVtb3RlRGF0YUNoYW5uZWxO
b3RpZmllcjo6UmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcihSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDbGkKIAogdm9pZCBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpmaXJlKCkKIHsKLSAgICBt
X2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwobWFrZVVuaXF1ZTxSVENEYXRhQ2hhbm5l
bEhhbmRsZXJNb2NrPigiUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayIsIFJUQ0RhdGFDaGFubmVs
SW5pdCgpKSk7CisgICAgbV9jbGllbnQtPmRpZEFkZFJlbW90ZURhdGFDaGFubmVsKG1ha2VVbmlx
dWU8UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jaz4oIlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2si
X3MsIFJUQ0RhdGFDaGFubmVsSW5pdCgpKSk7CiB9CiAKIERhdGFDaGFubmVsU3RhdGVOb3RpZmll
cjo6RGF0YUNoYW5uZWxTdGF0ZU5vdGlmaWVyKFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCog
Y2xpZW50LCBSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29udHJvbGxlck1vY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29udHJvbGxlck1vY2suY3BwCmluZGV4
IDU5NmJlZWI2MTMzYTA2YmIzOGU1M2NmNTc3YTM4OTljYWRjZGUzZGMuLjMwMDQ3Zjk3MWY3MTQ0
OWE3N2M5YWQzZTlhYWUzNGE2ZDMxNDBmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhcnNDb250cm9sbGVyTW9jay5jcHAKQEAgLTcwLDE5
ICs3MCwxOSBAQCB2b2lkIFNjcm9sbGJhcnNDb250cm9sbGVyTW9jazo6d2lsbFJlbW92ZUhvcml6
b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYQogCiB2b2lkIFNjcm9sbGJhcnNDb250
cm9sbGVyTW9jazo6bW91c2VFbnRlcmVkQ29udGVudEFyZWEoKQogewotICAgIG1fbG9nZ2VyKCJt
b3VzZUVudGVyZWRDb250ZW50QXJlYSIpOworICAgIG1fbG9nZ2VyKCJtb3VzZUVudGVyZWRDb250
ZW50QXJlYSJfcyk7CiAgICAgU2Nyb2xsYmFyc0NvbnRyb2xsZXI6Om1vdXNlRW50ZXJlZENvbnRl
bnRBcmVhKCk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrOjptb3VzZU1vdmVk
SW5Db250ZW50QXJlYSgpCiB7Ci0gICAgbV9sb2dnZXIoIm1vdXNlTW92ZWRJbkNvbnRlbnRBcmVh
Iik7CisgICAgbV9sb2dnZXIoIm1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhIl9zKTsKICAgICBTY3Jv
bGxiYXJzQ29udHJvbGxlcjo6bW91c2VNb3ZlZEluQ29udGVudEFyZWEoKTsKIH0KIAogdm9pZCBT
Y3JvbGxiYXJzQ29udHJvbGxlck1vY2s6Om1vdXNlRXhpdGVkQ29udGVudEFyZWEoKQogewotICAg
IG1fbG9nZ2VyKCJtb3VzZUV4aXRlZENvbnRlbnRBcmVhIik7CisgICAgbV9sb2dnZXIoIm1vdXNl
RXhpdGVkQ29udGVudEFyZWEiX3MpOwogICAgIFNjcm9sbGJhcnNDb250cm9sbGVyOjptb3VzZUV4
aXRlZENvbnRlbnRBcmVhKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRp
YVNvdXJjZS5jcHAKaW5kZXggZTk0M2Y4NmQ4YjhhNGJmMTNhNDQwOGI2YTRlNGRkMDcyMDE2ZmM2
NC4uNjA4ODBhMDE1ZWUzZDE1NTk4NGEwMGMyMjNlYWJlNTE4MTg0MDc3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTY0LDggKzY0LDggQEAgdm9p
ZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVu
Z2luZVJlZ2lzdHJhciByZWdpc3QKIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgbWltZVR5cGVDYWNoZSgpCiB7CiAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkIGNhY2hlID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4gewotICAgICAgICAidmlkZW8vbW9jayIsCi0gICAgICAgICJhdWRpby9tb2NrIiwKKyAgICAg
ICAgInZpZGVvL21vY2siX3MsCisgICAgICAgICJhdWRpby9tb2NrIl9zLAogICAgIH07CiAgICAg
cmV0dXJuIGNhY2hlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDA5OGE3NDJlNzVlNWU4ZTEwNzYxN2U3
ZDgxMTRiZGZlZmY3ZTlhMTcuLjFlNTlkNGQxYTZiZmFlYzc0ZGZlMzZkNzg0OTkwNGY5NDE0ZjVm
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291
cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTU5LDEzICs1OSwxMyBAQCBzdGF0aWMgY29uc3QgaW50IGh0
dHBQYXJ0aWFsQ29udGVudCA9IDIwNjsKIHN0YXRpYyBjb25zdCBpbnQgaHR0cE5vdEFsbG93ZWQg
PSA0MDM7CiBzdGF0aWMgY29uc3QgaW50IGh0dHBSZXF1ZXN0ZWRSYW5nZU5vdFNhdGlzZmlhYmxl
ID0gNDE2Owogc3RhdGljIGNvbnN0IGludCBodHRwSW50ZXJuYWxFcnJvciA9IDUwMDsKLXN0YXRp
YyBjb25zdCBjaGFyKiBodHRwT0tUZXh0ID0gIk9LIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRw
UGFydGlhbENvbnRlbnRUZXh0ID0gIlBhcnRpYWwgQ29udGVudCI7Ci1zdGF0aWMgY29uc3QgY2hh
ciogaHR0cE5vdEFsbG93ZWRUZXh0ID0gIk5vdCBBbGxvd2VkIjsKLXN0YXRpYyBjb25zdCBjaGFy
KiBodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZVRleHQgPSAiUmVxdWVzdGVkIFJhbmdl
IE5vdCBTYXRpc2ZpYWJsZSI7Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0cEludGVybmFsRXJyb3JU
ZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gaHR0
cE9LVGV4dCA9ICJPSyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBodHRwUGFydGlhbENvbnRl
bnRUZXh0ID0gIlBhcnRpYWwgQ29udGVudCJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBodHRw
Tm90QWxsb3dlZFRleHQgPSAiTm90IEFsbG93ZWQiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8g
aHR0cFJlcXVlc3RlZFJhbmdlTm90U2F0aXNmaWFibGVUZXh0ID0gIlJlcXVlc3RlZCBSYW5nZSBO
b3QgU2F0aXNmaWFibGUiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gaHR0cEludGVybmFsRXJy
b3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiA9ICJXZWJLaXRCbG9iUmVzb3VyY2UiOwor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiA9ICJXZWJLaXRC
bG9iUmVzb3VyY2UiX3M7CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vIEJsb2JSZXNvdXJj
ZVN5bmNocm9ub3VzTG9hZGVyCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBCbG9iUmVzb3VyY2VT
eW5jaHJvbm91c0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUq
IGhhbmQKIHsKICAgICAvLyBXZSBjYW5ub3QgaGFuZGxlIHRoZSBzaXplIHRoYXQgaXMgbW9yZSB0
aGFuIG1heGltdW0gaW50ZWdlci4KICAgICBpZiAocmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKCkgPiBJTlRfTUFYKSB7Ci0gICAgICAgIG1fZXJyb3IgPSBSZXNvdXJjZUVycm9yKHdlYktp
dEJsb2JSZXNvdXJjZURvbWFpbiwgc3RhdGljX2Nhc3Q8aW50PihCbG9iUmVzb3VyY2VIYW5kbGU6
OkVycm9yOjpOb3RSZWFkYWJsZUVycm9yKSwgcmVzcG9uc2UudXJsKCksICJGaWxlIGlzIHRvbyBs
YXJnZSIpOworICAgICAgICBtX2Vycm9yID0gUmVzb3VyY2VFcnJvcih3ZWJLaXRCbG9iUmVzb3Vy
Y2VEb21haW4sIHN0YXRpY19jYXN0PGludD4oQmxvYlJlc291cmNlSGFuZGxlOjpFcnJvcjo6Tm90
UmVhZGFibGVFcnJvciksIHJlc3BvbnNlLnVybCgpLCAiRmlsZSBpcyB0b28gbGFyZ2UiX3MpOwog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MTQ1LDcgKzE0NSw3IEBAIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IEJsb2JSZXNvdXJjZUhhbmRs
ZTo6Y3JlYXRlQXN5bmMoQmxvYkRhdGEqIGJsb2JEYXRhLCBjb25zCiB2b2lkIEJsb2JSZXNvdXJj
ZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShCbG9iRGF0YSogYmxvYkRhdGEsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7CiAgICAgaWYg
KCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1ZXN0Lmh0dHBNZXRob2QoKSwgImdl
dCIpKSB7Ci0gICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcih3ZWJLaXRCbG9iUmVzb3VyY2VE
b21haW4sIHN0YXRpY19jYXN0PGludD4oRXJyb3I6Ok1ldGhvZE5vdEFsbG93ZWQpLCByZXNwb25z
ZS51cmwoKSwgIlJlcXVlc3QgbWV0aG9kIG11c3QgYmUgR0VUIik7CisgICAgICAgIGVycm9yID0g
UmVzb3VyY2VFcnJvcih3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4sIHN0YXRpY19jYXN0PGludD4o
RXJyb3I6Ok1ldGhvZE5vdEFsbG93ZWQpLCByZXNwb25zZS51cmwoKSwgIlJlcXVlc3QgbWV0aG9k
IG11c3QgYmUgR0VUIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjAwLDcgKzYw
MCw3IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNwb25zZU9uRXJyb3IoKQog
ewogICAgIEFTU0VSVChtX2Vycm9yQ29kZSAhPSBFcnJvcjo6Tm9FcnJvcik7CiAKLSAgICBSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlKGZpcnN0UmVxdWVzdCgpLnVybCgpLCAidGV4dC9wbGFpbiIs
IDAsIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKGZpcnN0UmVxdWVz
dCgpLnVybCgpLCAidGV4dC9wbGFpbiJfcywgMCwgU3RyaW5nKCkpOwogICAgIHN3aXRjaCAobV9l
cnJvckNvZGUpIHsKICAgICBjYXNlIEVycm9yOjpSYW5nZUVycm9yOgogICAgICAgICByZXNwb25z
ZS5zZXRIVFRQU3RhdHVzQ29kZShodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
CmluZGV4IDkzMWUyY2NkYTYyY2JkMjIzZGUyNDU2ODlhNzgxOWYxZjhjMmZlNDIuLmFmNTNkNjQx
OGRjNTE2NTJmMmExMDc5ODU3ZWUzNzhmY2EzODQwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCkBAIC0xMTgsNyArMTE4LDcg
QEAgcHVibGljOgogICAgICAgICBhdXRvIG1lZGlhVHlwZSA9IChpc0Jhc2U2NCA/IGhlYWRlci5z
dWJzdHJpbmcoMCwgbWVkaWFUeXBlRW5kKSA6IGhlYWRlcikudG9TdHJpbmcoKTsKICAgICAgICAg
bWVkaWFUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKG1lZGlhVHlwZSk7
CiAgICAgICAgIGlmIChtZWRpYVR5cGUuc3RhcnRzV2l0aCgnOycpKQotICAgICAgICAgICAgbWVk
aWFUeXBlLmluc2VydCgidGV4dC9wbGFpbiIsIDApOworICAgICAgICAgICAgbWVkaWFUeXBlLmlu
c2VydCgidGV4dC9wbGFpbiJfcywgMCk7CiAKICAgICAgICAgaWYgKHNob3VsZFJlbW92ZUZyYWdt
ZW50SWRlbnRpZmllcihtZWRpYVR5cGUpKQogICAgICAgICAgICAgdXJsLnJlbW92ZUZyYWdtZW50
SWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmNwcAppbmRleCBkNDM1Y2ViZjRkMGY1NWZkMDZkZThjMDNlMWIzYTZmMTY0ZmNmMzQ5
Li44MTRlZmUwMjA3MGVhYTk2MTY4ZjMxMjQzMThjNDlmMzIwMTcxYjVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtNjIwLDcgKzYy
MCw3IEBAIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFN0cmluZ1ZpZXcsIEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+Pj4gcGFyc2VTdHJ1Y3R1cmVkRmllCiAgICAgICAgICAgICArK2luZGV4OwogICAg
ICAgICB9CiAgICAgICAgIFN0cmluZyBrZXkgPSBoZWFkZXIuc3Vic3RyaW5nKGtleVN0YXJ0LCBp
bmRleCAtIGtleVN0YXJ0KS50b1N0cmluZygpOwotICAgICAgICBTdHJpbmcgdmFsdWUgPSAidHJ1
ZSI7CisgICAgICAgIFN0cmluZyB2YWx1ZSA9ICJ0cnVlIl9zOwogICAgICAgICBpZiAoaW5kZXgg
PCBoZWFkZXIubGVuZ3RoKCkgJiYgaGVhZGVyW2luZGV4XSA9PSAnPScpIHsKICAgICAgICAgICAg
ICsraW5kZXg7IC8vIENvbnN1bWUgJz0nLgogICAgICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYSho
ZWFkZXJbaW5kZXhdKSB8fCBoZWFkZXJbaW5kZXhdID09ICcqJykgewpAQCAtNzg1LDcgKzc4NSw3
IEBAIHNpemVfdCBwYXJzZUhUVFBIZWFkZXIoY29uc3QgdWludDhfdCogc3RhcnQsIHNpemVfdCBs
ZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBpZiAoIWlzVmFsaWRIZWFkZXJOYW1lQ2hhcmFjdGVyKCpwKSkgewogICAgICAgICAgICAgICAg
IGlmIChuYW1lLnNpemUoKSA8IDEpCi0gICAgICAgICAgICAgICAgICAgIGZhaWx1cmVSZWFzb24g
PSAiVW5leHBlY3RlZCBzdGFydCBjaGFyYWN0ZXIgaW4gaGVhZGVyIG5hbWUiOworICAgICAgICAg
ICAgICAgICAgICBmYWlsdXJlUmVhc29uID0gIlVuZXhwZWN0ZWQgc3RhcnQgY2hhcmFjdGVyIGlu
IGhlYWRlciBuYW1lIl9zOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgZmFpbHVyZVJlYXNvbiA9IG1ha2VTdHJpbmcoIlVuZXhwZWN0ZWQgY2hhcmFjdGVyIGluIGhl
YWRlciBuYW1lIGF0ICIsIHRyaW1JbnB1dFNhbXBsZShuYW1lLmRhdGEoKSwgbmFtZS5zaXplKCkp
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAppbmRleCBiMjE3
NzlmNzA5NDA4ZDMyODU2ZjAxZGRkNTQ3OTg4YWE2NDFiYzNjLi45YTg1N2VhZGZjMWMxZjY5NGYx
MjgyZjM5NmM1Zjk4Yzk5M2Y4NzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBAIC0zODUsMTQgKzM4
NSwxNCBAQCBjb25zdCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPj4mIE5ldHdvcmtTdG9yYWdlU2VzcwogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
Pj4+IG1hcCA9IFtdIHsKICAgICAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgSGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4+IG1hcDsKLSAgICAgICAgbWFwLmFkZChSZWdpc3RyYWJsZURv
bWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJtaWNyb3Nv
ZnQuY29tIiksCisgICAgICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygibWljcm9zb2Z0LmNvbSJfcyksCiAgICAg
ICAgICAgICBIYXNoU2V0IHsgUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21S
ZWdpc3RyYWJsZURvbWFpblN0cmluZygibWljcm9zb2Z0b25saW5lLmNvbSJfcykgfSk7Ci0gICAg
ICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3Ry
YWJsZURvbWFpblN0cmluZygibGl2ZS5jb20iKSwKKyAgICAgICAgbWFwLmFkZChSZWdpc3RyYWJs
ZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJsaXZl
LmNvbSJfcyksCiAgICAgICAgICAgICBIYXNoU2V0IHsgUmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygic2t5cGUuY29tIl9zKSB9KTsK
LSAgICAgICAgbWFwLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJl
Z2lzdHJhYmxlRG9tYWluU3RyaW5nKCJwbGF5c3RhdGlvbi5jb20iKSwgSGFzaFNldCB7CisgICAg
ICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3Ry
YWJsZURvbWFpblN0cmluZygicGxheXN0YXRpb24uY29tIl9zKSwgSGFzaFNldCB7CiAgICAgICAg
ICAgICBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9t
YWluU3RyaW5nKCJzb255ZW50ZXJ0YWlubWVudG5ldHdvcmsuY29tIl9zKSwKICAgICAgICAgICAg
IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5T
dHJpbmcoInNvbnkuY29tIl9zKSB9KTsKLSAgICAgICAgbWFwLmFkZChSZWdpc3RyYWJsZURvbWFp
bjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJiYmMuY28udWsi
KSwgSGFzaFNldCB7CisgICAgICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tl
ZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygiYmJjLmNvLnVrIl9zKSwgSGFzaFNl
dCB7CiAgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJl
Z2lzdHJhYmxlRG9tYWluU3RyaW5nKCJyYWRpb3BsYXllci5jby51ayJfcykgfSk7CiAgICAgICAg
IHJldHVybiBtYXA7CiAgICAgfSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcAppbmRleCA5ZWYyYTE3MjBkNTcxMjZmYmU3
MTJjZDlhMmExZDIyMjFhMWM0ZTlkLi5iMmU3YmRkM2Y5ZmVkZjI4NjlhMTFiYzc2M2JlYzY3NDVi
NTM5YjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNl
ZENvbnRlbnRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Bh
cnNlZENvbnRlbnRUeXBlLmNwcApAQCAtMzQ3LDcgKzM0Nyw3IEBAIFBhcnNlZENvbnRlbnRUeXBl
OjpQYXJzZWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogCiBTdHJpbmcg
UGFyc2VkQ29udGVudFR5cGU6OmNoYXJzZXQoKSBjb25zdAogewotICAgIHJldHVybiBwYXJhbWV0
ZXJWYWx1ZUZvck5hbWUoImNoYXJzZXQiKTsKKyAgICByZXR1cm4gcGFyYW1ldGVyVmFsdWVGb3JO
YW1lKCJjaGFyc2V0Il9zKTsKIH0KIAogdm9pZCBQYXJzZWRDb250ZW50VHlwZTo6c2V0Q2hhcnNl
dChTdHJpbmcmJiBjaGFyc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRleCAzYTE1MmJiMmUxZjlkZTAy
OGQwMWIzMjA0MWIyYTM5ZTAwMzljM2Y2Li5kOTJhOTNiMTQyN2FhMjQ0MjRiY2JjZTM0MjI1MGU5
ZjlkYzk5OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIFJlc291cmNl
UmVzcG9uc2UgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmZpbHRlcihjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwKICAgICBmaWx0ZXJlZFJlc3BvbnNlLnNldFR5cGUoVHlwZTo6Q29ycyk7
CiAKICAgICBhdXRvIGFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJTZXQgPSB2YWx1ZU9yRGVmYXVs
dChwYXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3Q8QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPihy
ZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xFeHBv
c2VIZWFkZXJzKSkpOwotICAgIGlmIChwZXJmb3JtQ2hlY2sgPT0gUGVyZm9ybUV4cG9zZUFsbEhl
YWRlcnNDaGVjazo6WWVzICYmIGFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJTZXQuY29udGFpbnMo
IioiKSkKKyAgICBpZiAocGVyZm9ybUNoZWNrID09IFBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hl
Y2s6OlllcyAmJiBhY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVyU2V0LmNvbnRhaW5zKCIqIl9zKSkK
ICAgICAgICAgcmV0dXJuIGZpbHRlcmVkUmVzcG9uc2U7CiAKICAgICBmaWx0ZXJlZFJlc3BvbnNl
Lm1faHR0cEhlYWRlckZpZWxkcy51bmNvbW1vbkhlYWRlcnMoKS5yZW1vdmVBbGxNYXRjaGluZyhb
Jl0oYXV0byYgZW50cnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKaW5kZXggYjM4MmEwZDdlZGYx
NjU0M2NhM2NmNDdiM2RlMWM3NzE1ZWIxNzQ1MC4uY2E4YTVkZWVjYWM4OGY1ZTY2MTQyYmZmMTMw
MTU4NGFmMWU3MWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKQEAgLTU1LDggKzU1LDggQEAg
dm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gVVJM
KHsgfSwgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTCh7IH0sICJodHRwczovL2V4YW1wbGUuY29tLyIp
LmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwo
eyB9LCAiaHR0cDovL2V4YW1wbGUuY29tLyJfcykuY3JlYXRlQ0ZVUkwoKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBVUkwoeyB9LCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8i
X3MpLmNyZWF0ZUNGVVJMKCk7CiAKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5
QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQo
KSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRw
c1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZV
UkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bENGTmV0LmNwcAppbmRleCA3MDQwYjMyNjI1NzU3OGM3MTAzYmZlMzY0MTNmYTkzOWFiZmM1MTAw
Li4zMDNlZTc2MzNmZWJmNWFkNWZiYzBmYmI4ZTRiMWIzYmQ3ZjM1ODc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgU29ja2V0U3RyZWFt
SGFuZGxlSW1wbDo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmIHVybCwgU29ja2V0
U3RyZWFtSGFuZGwKICAgICAgICAgJiYgX0NGTmV0d29ya0lzS25vd25IU1RTSG9zdFdpdGhTZXNz
aW9uKG1faHR0cHNVUkwuZ2V0KCksIG51bGxwdHIpKSB7CiAgICAgICAgIC8vIENhbGwgdGhpcyBh
c3luY2hyb25vdXNseSBiZWNhdXNlIHRoZSBzb2NrZXQgc3RyZWFtIGlzIG5vdCBmdWxseSBjb25z
dHJ1Y3RlZCBhdCB0aGlzIHBvaW50LgogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewotICAgICAgICAgICAgbV9jbGllbnQuZGlk
RmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5n
KCksICJXZWJTb2NrZXQgY29ubmVjdGlvbiBmYWlsZWQgYmVjYXVzZSBpdCB2aW9sYXRlcyBIVFRQ
IFN0cmljdCBUcmFuc3BvcnQgU2VjdXJpdHkuIikpOworICAgICAgICAgICAgbV9jbGllbnQuZGlk
RmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5n
KCksICJXZWJTb2NrZXQgY29ubmVjdGlvbiBmYWlsZWQgYmVjYXVzZSBpdCB2aW9sYXRlcyBIVFRQ
IFN0cmljdCBUcmFuc3BvcnQgU2VjdXJpdHkuIl9zKSk7CiAgICAgICAgIH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxl
SW1wbDo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENGSFRUUE1lc3NhZ2VSZWYgcHJveHlSZXNwb25z
CiAKICAgICBpZiAoIUNGSFRUUEF1dGhlbnRpY2F0aW9uUmVxdWlyZXNVc2VyTmFtZUFuZFBhc3N3
b3JkKGF1dGhlbnRpY2F0aW9uLmdldCgpKSkgewogICAgICAgICAvLyBUaGF0J3MgYWxsIHdlIGNh
biBvZmZlci4uLgotICAgICAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBT
b2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIlByb3h5IGF1dGhlbnRpY2F0aW9u
IHNjaGVtZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBXZWJTb2NrZXRzIikpOworICAgICAgICBtX2Ns
aWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBtX3Vy
bC5zdHJpbmcoKSwgIlByb3h5IGF1dGhlbnRpY2F0aW9uIHNjaGVtZSBpcyBub3Qgc3VwcG9ydGVk
IGZvciBXZWJTb2NrZXRzIl9zKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ0NSw3
ICs0NDUsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmFkZENPTk5FQ1RDcmVkZW50
aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9ucwogCiAgICAgaWYgKCFtZXRob2RDRiB8
fCAhcmVhbG1DRikgewogICAgICAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW4sIGJ1dCBvbiBz
b21lIE9TIHZlcnNpb25zIHdlIGdldCBpbmNvbXBsZXRlIGF1dGhlbnRpY2F0aW9uIGRhdGEsIHNl
ZSA8cmRhcjovL3Byb2JsZW0vMTA0MTYzMTY+LgotICAgICAgICBtX2NsaWVudC5kaWRGYWlsU29j
a2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIldl
YlNvY2tldCBwcm94eSBhdXRoZW50aWNhdGlvbiBjb3VsZG4ndCBiZSBoYW5kbGVkIikpOworICAg
ICAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJv
cigwLCBtX3VybC5zdHJpbmcoKSwgIldlYlNvY2tldCBwcm94eSBhdXRoZW50aWNhdGlvbiBjb3Vs
ZG4ndCBiZSBoYW5kbGVkIl9zKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2NCw3
ICs0NjQsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmFkZENPTk5FQ1RDcmVkZW50
aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9ucwogCiAgICAgICAgIGlmICghcHJveHlB
dXRob3JpemF0aW9uU3RyaW5nKSB7CiAgICAgICAgICAgICAvLyBGYWlscyBlLmcuIGZvciBOVExN
IGF1dGguCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBT
b2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIlByb3h5IGF1dGhlbnRpY2F0aW9u
IHNjaGVtZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBXZWJTb2NrZXRzIikpOworICAgICAgICAgICAg
bV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwg
bV91cmwuc3RyaW5nKCksICJQcm94eSBhdXRoZW50aWNhdGlvbiBzY2hlbWUgaXMgbm90IHN1cHBv
cnRlZCBmb3IgV2ViU29ja2V0cyJfcykpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmFkZENP
Tk5FQ1RDcmVkZW50aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9ucwogCiAgICAgLy8g
RklYTUU6IE9uIHBsYXRmb3JtcyB3aGVyZSBBdXRoQnJva2VyQWdlbnQgaXMgbm90IGF2YWlsYWJs
ZSwgYXNrIHRoZSBjbGllbnQgaWYgY3JlZGVudGlhbHMgY291bGQgbm90IGJlIGZvdW5kLgogCi0g
ICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3Io
MCwgbV91cmwuc3RyaW5nKCksICJQcm94eSBjcmVkZW50aWFscyBhcmUgbm90IGF2YWlsYWJsZSIp
KTsKKyAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1F
cnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIlByb3h5IGNyZWRlbnRpYWxzIGFyZSBub3QgYXZhaWxh
YmxlIl9zKSk7CiB9CiAKIENGU3RyaW5nUmVmIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNvcHlD
RlN0cmVhbURlc2NyaXB0aW9uKHZvaWQqIGluZm8pCkBAIC01NzMsNyArNTczLDcgQEAgdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2soQ0ZTdHJlYW1FdmVudFR5
cGUgdHlwZSkKICAgICAgICAgICAgICAgICAgICAgYWRkQ09OTkVDVENyZWRlbnRpYWxzKHByb3h5
UmVzcG9uc2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tl
dFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3Ioc3RhdGljX2Nhc3Q8aW50Pihwcm94eVJl
c3BvbnNlQ29kZSksIG1fdXJsLnN0cmluZygpLCAiUHJveHkgY29ubmVjdGlvbiBjb3VsZCBub3Qg
YmUgZXN0YWJsaXNoZWQsIHVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZSIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFt
RXJyb3Ioc3RhdGljX2Nhc3Q8aW50Pihwcm94eVJlc3BvbnNlQ29kZSksIG1fdXJsLnN0cmluZygp
LCAiUHJveHkgY29ubmVjdGlvbiBjb3VsZCBub3QgYmUgZXN0YWJsaXNoZWQsIHVuZXhwZWN0ZWQg
cmVzcG9uc2UgY29kZSJfcykpOwogICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybUNsb3NlKCk7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRleCA4ZWZiMTU0
OGE1YjBkOTlkOTFjN2ZkNjdmMzg1YjQwMzk1ZGM5YzcyLi5mMmUzZWRhZDUwZWRhMmZkZTBlNWQ1
NjdhYWUzMzczZGM1NWRiMDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZS5jcHAKQEAgLTUzNyw2OSArNTM3LDcxIEBAIGludCBTUUxpdGVEYXRhYmFz
ZTo6YXV0aG9yaXplckZ1bmN0aW9uKHZvaWQqIHVzZXJEYXRhLCBpbnQgYWN0aW9uQ29kZSwgY29u
c3QgY2hhCiAgICAgRGF0YWJhc2VBdXRob3JpemVyKiBhdXRoID0gc3RhdGljX2Nhc3Q8RGF0YWJh
c2VBdXRob3JpemVyKj4odXNlckRhdGEpOwogICAgIEFTU0VSVChhdXRoKTsKIAorICAgIFN0cmlu
ZyBwYXJhbWV0ZXIxU3RyaW5nIHsgcGFyYW1ldGVyMSB9OworICAgIFN0cmluZyBwYXJhbWV0ZXIy
U3RyaW5nIHsgcGFyYW1ldGVyMiB9OwogICAgIHN3aXRjaCAoYWN0aW9uQ29kZSkgewogICAgICAg
ICBjYXNlIFNRTElURV9DUkVBVEVfSU5ERVg6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3Jl
YXRlSW5kZXgocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0
aC0+Y3JlYXRlSW5kZXgocGFyYW1ldGVyMVN0cmluZywgcGFyYW1ldGVyMlN0cmluZyk7CiAgICAg
ICAgIGNhc2UgU1FMSVRFX0NSRUFURV9UQUJMRToKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5j
cmVhdGVUYWJsZShwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVhdGVU
YWJsZShwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfQ1JFQVRFX1RFTVBf
SU5ERVg6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVGVtcEluZGV4KHBhcmFtZXRl
cjEsIHBhcmFtZXRlcjIpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmNyZWF0ZVRlbXBJbmRl
eChwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0ZXIyU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJ
VEVfQ1JFQVRFX1RFTVBfVEFCTEU6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVGVt
cFRhYmxlKHBhcmFtZXRlcjEpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmNyZWF0ZVRlbXBU
YWJsZShwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfQ1JFQVRFX1RFTVBf
VFJJR0dFUjoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVhdGVUZW1wVHJpZ2dlcihwYXJh
bWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVhdGVUZW1w
VHJpZ2dlcihwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0ZXIyU3RyaW5nKTsKICAgICAgICAgY2Fz
ZSBTUUxJVEVfQ1JFQVRFX1RFTVBfVklFVzoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVh
dGVUZW1wVmlldyhwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVhdGVU
ZW1wVmlldyhwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfQ1JFQVRFX1RS
SUdHRVI6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVHJpZ2dlcihwYXJhbWV0ZXIx
LCBwYXJhbWV0ZXIyKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVhdGVUcmlnZ2VyKHBh
cmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9D
UkVBVEVfVklFVzoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVhdGVWaWV3KHBhcmFtZXRl
cjEpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmNyZWF0ZVZpZXcocGFyYW1ldGVyMVN0cmlu
Zyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0RFTEVURToKLSAgICAgICAgICAgIHJldHVybiBhdXRo
LT5hbGxvd0RlbGV0ZShwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxv
d0RlbGV0ZShwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfRFJPUF9JTkRF
WDoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wSW5kZXgocGFyYW1ldGVyMSwgcGFyYW1l
dGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+ZHJvcEluZGV4KHBhcmFtZXRlcjFTdHJp
bmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9EUk9QX1RBQkxFOgot
ICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmRyb3BUYWJsZShwYXJhbWV0ZXIxKTsKKyAgICAgICAg
ICAgIHJldHVybiBhdXRoLT5kcm9wVGFibGUocGFyYW1ldGVyMVN0cmluZyk7CiAgICAgICAgIGNh
c2UgU1FMSVRFX0RST1BfVEVNUF9JTkRFWDoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9w
VGVtcEluZGV4KHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAgICAgICAgICAgcmV0dXJuIGF1
dGgtPmRyb3BUZW1wSW5kZXgocGFyYW1ldGVyMVN0cmluZywgcGFyYW1ldGVyMlN0cmluZyk7CiAg
ICAgICAgIGNhc2UgU1FMSVRFX0RST1BfVEVNUF9UQUJMRToKLSAgICAgICAgICAgIHJldHVybiBh
dXRoLT5kcm9wVGVtcFRhYmxlKHBhcmFtZXRlcjEpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgt
PmRyb3BUZW1wVGFibGUocGFyYW1ldGVyMVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0RS
T1BfVEVNUF9UUklHR0VSOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmRyb3BUZW1wVHJpZ2dl
cihwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9w
VGVtcFRyaWdnZXIocGFyYW1ldGVyMVN0cmluZywgcGFyYW1ldGVyMlN0cmluZyk7CiAgICAgICAg
IGNhc2UgU1FMSVRFX0RST1BfVEVNUF9WSUVXOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmRy
b3BUZW1wVmlldyhwYXJhbWV0ZXIxKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVGVt
cFZpZXcocGFyYW1ldGVyMVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0RST1BfVFJJR0dF
UjoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVHJpZ2dlcihwYXJhbWV0ZXIxLCBwYXJh
bWV0ZXIyKTsKKyAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVHJpZ2dlcihwYXJhbWV0ZXIx
U3RyaW5nLCBwYXJhbWV0ZXIyU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfRFJPUF9WSUVX
OgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmRyb3BWaWV3KHBhcmFtZXRlcjEpOworICAgICAg
ICAgICAgcmV0dXJuIGF1dGgtPmRyb3BWaWV3KHBhcmFtZXRlcjFTdHJpbmcpOwogICAgICAgICBj
YXNlIFNRTElURV9JTlNFUlQ6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dJbnNlcnQo
cGFyYW1ldGVyMSk7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dJbnNlcnQocGFyYW1l
dGVyMVN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX1BSQUdNQToKLSAgICAgICAgICAgIHJl
dHVybiBhdXRoLT5hbGxvd1ByYWdtYShwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICAgICAg
ICAgIHJldHVybiBhdXRoLT5hbGxvd1ByYWdtYShwYXJhbWV0ZXIxU3RyaW5nLCBwYXJhbWV0ZXIy
U3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfUkVBRDoKLSAgICAgICAgICAgIHJldHVybiBh
dXRoLT5hbGxvd1JlYWQocGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7CisgICAgICAgICAgICByZXR1
cm4gYXV0aC0+YWxsb3dSZWFkKHBhcmFtZXRlcjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwog
ICAgICAgICBjYXNlIFNRTElURV9TRUxFQ1Q6CiAgICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxs
b3dTZWxlY3QoKTsKICAgICAgICAgY2FzZSBTUUxJVEVfVFJBTlNBQ1RJT046CiAgICAgICAgICAg
ICByZXR1cm4gYXV0aC0+YWxsb3dUcmFuc2FjdGlvbigpOwogICAgICAgICBjYXNlIFNRTElURV9V
UERBVEU6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dVcGRhdGUocGFyYW1ldGVyMSwg
cGFyYW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dVcGRhdGUocGFyYW1l
dGVyMVN0cmluZywgcGFyYW1ldGVyMlN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0FUVEFD
SDoKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0F0dGFjaChwYXJhbWV0ZXIxKTsKKyAg
ICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0F0dGFjaChwYXJhbWV0ZXIxU3RyaW5nKTsKICAg
ICAgICAgY2FzZSBTUUxJVEVfREVUQUNIOgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93
RGV0YWNoKHBhcmFtZXRlcjEpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93RGV0YWNo
KHBhcmFtZXRlcjFTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9BTFRFUl9UQUJMRToKLSAg
ICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd0FsdGVyVGFibGUocGFyYW1ldGVyMSwgcGFyYW1l
dGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dBbHRlclRhYmxlKHBhcmFtZXRl
cjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9SRUlOREVY
OgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93UmVpbmRleChwYXJhbWV0ZXIxKTsKKyAg
ICAgICAgICAgIHJldHVybiBhdXRoLT5hbGxvd1JlaW5kZXgocGFyYW1ldGVyMVN0cmluZyk7CiAg
ICAgICAgIGNhc2UgU1FMSVRFX0FOQUxZWkU6Ci0gICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxs
b3dBbmFseXplKHBhcmFtZXRlcjEpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93QW5h
bHl6ZShwYXJhbWV0ZXIxU3RyaW5nKTsKICAgICAgICAgY2FzZSBTUUxJVEVfQ1JFQVRFX1ZUQUJM
RToKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVhdGVWVGFibGUocGFyYW1ldGVyMSwgcGFy
YW1ldGVyMik7CisgICAgICAgICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlVlRhYmxlKHBhcmFtZXRl
cjFTdHJpbmcsIHBhcmFtZXRlcjJTdHJpbmcpOwogICAgICAgICBjYXNlIFNRTElURV9EUk9QX1ZU
QUJMRToKLSAgICAgICAgICAgIHJldHVybiBhdXRoLT5kcm9wVlRhYmxlKHBhcmFtZXRlcjEsIHBh
cmFtZXRlcjIpOworICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmRyb3BWVGFibGUocGFyYW1ldGVy
MVN0cmluZywgcGFyYW1ldGVyMlN0cmluZyk7CiAgICAgICAgIGNhc2UgU1FMSVRFX0ZVTkNUSU9O
OgotICAgICAgICAgICAgcmV0dXJuIGF1dGgtPmFsbG93RnVuY3Rpb24ocGFyYW1ldGVyMik7Cisg
ICAgICAgICAgICByZXR1cm4gYXV0aC0+YWxsb3dGdW5jdGlvbihwYXJhbWV0ZXIyU3RyaW5nKTsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgcmV0dXJuIFNRTEF1dGhEZW55OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJBdHRhY2htZW50LmgKaW5kZXggNTBkZDkyNGIzZWFlNzEyZmJiMGRhM2Y3YzFjMGIzMmVh
MTY3YmI1OC4uMTEzYTg1M2U0YWQzY2I3NTY3ZWFjMGJhNWMyN2ZlYThkMzhkYWI5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7
CiAgICAgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJBdHRhY2htZW50IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckF0dGFjaG1lbnQiX3M7IH0KIAogICAgIGJvb2wgc2hv
dWxkRHJhd1NlbGVjdGlvblRpbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgb2Zm
c2V0KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4
IDI4ZWM2NjZkY2I4ZDNkNjY3NDkzYmRjMGIyOWQ3MWU4MTEyZWZiNTguLjdkYzI2YTA0ZDQyMDRl
YmQ4NWI4MjU2ZjdhMzA3MjY4NTk4M2IzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcApAQCAtMzA0NiwyOCArMzA0NiwyOCBAQCBib29sIFJlbmRlckJsb2NrOjpo
YXNNYXJnaW5BZnRlclF1aXJrKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpIGNvbnN0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1jb25zdCBjaGFyKiBSZW5kZXJCbG9jazo6cmVuZGVyTmFtZSgpIGNv
bnN0CitBU0NJSUxpdGVyYWwgUmVuZGVyQmxvY2s6OnJlbmRlck5hbWUoKSBjb25zdAogewogICAg
IGlmIChpc0JvZHkoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJCb2R5IjsgLy8gRklYTUU6IFRl
bXBvcmFyeSBoYWNrIHVudGlsIHdlIGtub3cgdGhhdCB0aGUgcmVncmVzc2lvbiB0ZXN0cyBwYXNz
LgorICAgICAgICByZXR1cm4gIlJlbmRlckJvZHkiX3M7IC8vIEZJWE1FOiBUZW1wb3JhcnkgaGFj
ayB1bnRpbCB3ZSBrbm93IHRoYXQgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgcGFzcy4KICAgICBpZiAo
aXNGaWVsZHNldCgpKQotICAgICAgICByZXR1cm4gIlJlbmRlckZpZWxkU2V0IjsgLy8gRklYTUU6
IFJlbW92ZSBldmVudHVhbGx5LCBidXQgZG9uZSB0byBrZWVwIHRlc3RzIGZyb20gYnJlYWtpbmcu
CisgICAgICAgIHJldHVybiAiUmVuZGVyRmllbGRTZXQiX3M7IC8vIEZJWE1FOiBSZW1vdmUgZXZl
bnR1YWxseSwgYnV0IGRvbmUgdG8ga2VlcCB0ZXN0cyBmcm9tIGJyZWFraW5nLgogICAgIGlmIChp
c0Zsb2F0aW5nKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSI7Cisg
ICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSJfczsKICAgICBpZiAoaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKHBvc2l0aW9u
ZWQpIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAocG9zaXRpb25lZCkiX3M7CiAgICAg
aWYgKGlzQW5vbnltb3VzQmxvY2soKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAoYW5v
bnltb3VzKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGFub255bW91cykiX3M7CiAg
ICAgLy8gRklYTUU6IFRlbXBvcmFyeSBoYWNrIHdoaWxlIHRoZSBuZXcgZ2VuZXJhdGVkIGNvbnRl
bnQgc3lzdGVtIGlzIGJlaW5nIGltcGxlbWVudGVkLgogICAgIGlmIChpc1BzZXVkb0VsZW1lbnQo
KSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAoZ2VuZXJhdGVkKSI7CisgICAgICAgIHJl
dHVybiAiUmVuZGVyQmxvY2sgKGdlbmVyYXRlZCkiX3M7CiAgICAgaWYgKGlzQW5vbnltb3VzKCkp
Ci0gICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKGdlbmVyYXRlZCkiOworICAgICAgICByZXR1
cm4gIlJlbmRlckJsb2NrIChnZW5lcmF0ZWQpIl9zOwogICAgIGlmIChpc1JlbGF0aXZlbHlQb3Np
dGlvbmVkKCkpCi0gICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKHJlbGF0aXZlIHBvc2l0aW9u
ZWQpIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJCbG9jayAocmVsYXRpdmUgcG9zaXRpb25lZCki
X3M7CiAgICAgaWYgKGlzU3RpY2tpbHlQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJldHVybiAiUmVu
ZGVyQmxvY2sgKHN0aWNreSBwb3NpdGlvbmVkKSI7Ci0gICAgcmV0dXJuICJSZW5kZXJCbG9jayI7
CisgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKHN0aWNreSBwb3NpdGlvbmVkKSJfczsKKyAg
ICByZXR1cm4gIlJlbmRlckJsb2NrIl9zOwogfQogCiBUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25z
dHJ1Y3RUZXh0UnVuKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24sIFRleHRSdW5GbGFncyBmbGFncykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggMjIwZmQ3NDEzMDc5MTE0MDM4
NWQwZDJkNTA2YTYzNDQwZWNkY2MxOC4uYWYxNWY5Y2IxMGVhZmY0YjQ2ZTExYjQwODkwZWIzMzNm
ZmQ4NGQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTQzNSw3
ICs0MzUsNyBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgYWRqdXN0TG9naWNhbFJpZ2h0T2Zm
c2V0Rm9yTGluZShMYXlvdXRVbml0IG9mZnNldEZyb21GbG9hdHMsIGJvb2wgYXBwbHlUZXh0SW5k
ZW50KSBjb25zdDsKICAgICBMYXlvdXRVbml0IGFkanVzdExvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGlu
ZShMYXlvdXRVbml0IG9mZnNldEZyb21GbG9hdHMsIGJvb2wgYXBwbHlUZXh0SW5kZW50KSBjb25z
dDsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBB
U0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1Nl
bGZDb2xsYXBzaW5nQmxvY2soKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2hp
bGRyZW5QcmV2ZW50U2VsZkNvbGxhcHNpbmcoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCdXR0b24uaAppbmRleCBhNDkzOWM0YTAwNzUwMmE1Nzg5NDlmZGM1Y2M2NTZjYzc5
NWQ1Mzg5Li45ZjI4NzQyNWZhZDg1ZjE4ODc5OTZlNWE2YzY1ODM3MmM1MGVlYWYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckJ1
dHRvbiI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJCdXR0b24iX3M7IH0KICAgICBib29sIGlzUmVuZGVyQnV0dG9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBoYXNMaW5lSWZFbXB0eSgp
IGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvbWJpbmVUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmlu
ZVRleHQuaAppbmRleCBlNWQxYWIzMWYyMmM2ZTcxYWYzZDQzYWY5NWMwMzEyNGM2Mjc1ZDViLi5j
MTFhYjQ2NGQ5ODIxMTlmZDM2YjgxZjMxMmQ4ZTA3NmI1YWY3ZDEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaApAQCAtNDUsNyArNDUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgbm9kZSgpIGNvbnN0ID0gZGVsZXRlOwogCiAgICAgYm9vbCBpc0NvbWJp
bmVUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyQ29tYmluZVRleHQi
OyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyQ29tYmluZVRleHQiX3M7IH0KICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldFJlbmRlcmVkVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IGNlY2VkMzVlNWNlODdiZmJj
MTQwMTgzNmNkMTNlYTFhZWRkN2FmYzAuLmEzZmVmYWQwNmE2YjI3MmIxYWYxYjU5MDQzNjk4MmEx
Njg1M2IxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3Vu
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAK
QEAgLTQwNiw5ICs0MDYsOSBAQCB2b2lkIFJlbmRlckNvdW50ZXI6OndpbGxCZURlc3Ryb3llZCgp
CiAgICAgUmVuZGVyVGV4dDo6d2lsbEJlRGVzdHJveWVkKCk7CiB9CiAKLWNvbnN0IGNoYXIqIFJl
bmRlckNvdW50ZXI6OnJlbmRlck5hbWUoKSBjb25zdAorQVNDSUlMaXRlcmFsIFJlbmRlckNvdW50
ZXI6OnJlbmRlck5hbWUoKSBjb25zdAogewotICAgIHJldHVybiAiUmVuZGVyQ291bnRlciI7Cisg
ICAgcmV0dXJuICJSZW5kZXJDb3VudGVyIl9zOwogfQogCiBib29sIFJlbmRlckNvdW50ZXI6Omlz
Q291bnRlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaApp
bmRleCBiNTM1NjYzYWZjODE0NDg5YTI4MTE1MjYxM2E5NjRiMTMyMzg0MTVkLi5lY2QzZjgzNDg3
YjI3MDkxODRmYzE0MGM2NzNkNDJlY2U1ZTk1OGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJDb3VudGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdp
bGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIHN0YXRpYyB2b2lkIHJlbmRlcmVyU3R5bGVD
aGFuZ2VkU2xvd0Nhc2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKTsKICAgICAKLSAgICBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzQ291bnRlcigpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIFN0cmluZyBvcmlnaW5hbFRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eC5jcHAKaW5kZXggYWVkMzJlNjlkMjhhZThlYjI3M2FiYWY4MTg0YzMyNmFhNTc5MzRhMi4uYTA2
ZTVmM2JhNzY0ODc1ZGQ2N2Y3MTA2MDc3Mjk0NjRjNzQxMjgyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAK
QEAgLTExODMsMjAgKzExODMsMjAgQEAgTGF5b3V0VW5pdCBSZW5kZXJEZXByZWNhdGVkRmxleGli
bGVCb3g6OmFsbG93ZWRDaGlsZEZsZXgoUmVuZGVyQm94KiBjaGlsZCwgYm9vbAogICAgIHJldHVy
biAwOwogfQogCi1jb25zdCBjaGFyKiBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OnJlbmRl
ck5hbWUoKSBjb25zdAorQVNDSUlMaXRlcmFsIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6
cmVuZGVyTmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRmxvYXRpbmcoKSkKLSAgICAgICAgcmV0
dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKGZsb2F0aW5nKSI7CisgICAgICAgIHJl
dHVybiAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IChmbG9hdGluZykiX3M7CiAgICAgaWYg
KGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gIlJlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveCAocG9zaXRpb25lZCkiOworICAgICAgICByZXR1cm4gIlJlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveCAocG9zaXRpb25lZCkiX3M7CiAgICAgLy8gRklYTUU6IFRlbXBvcmFy
eSBoYWNrIHdoaWxlIHRoZSBuZXcgZ2VuZXJhdGVkIGNvbnRlbnQgc3lzdGVtIGlzIGJlaW5nIGlt
cGxlbWVudGVkLgogICAgIGlmIChpc1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuICJS
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKGdlbmVyYXRlZCkiOworICAgICAgICByZXR1cm4g
IlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCAoZ2VuZXJhdGVkKSJfczsKICAgICBpZiAoaXNB
bm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gg
KGdlbmVyYXRlZCkiOworICAgICAgICByZXR1cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eCAoZ2VuZXJhdGVkKSJfczsKICAgICBpZiAoaXNSZWxhdGl2ZWx5UG9zaXRpb25lZCgpKQotICAg
ICAgICByZXR1cm4gIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCAocmVsYXRpdmUgcG9zaXRp
b25lZCkiOwotICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IjsKKyAgICAg
ICAgcmV0dXJuICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggKHJlbGF0aXZlIHBvc2l0aW9u
ZWQpIl9zOworICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Il9zOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgKaW5kZXggOTAxM2E0NmNkZDI4OTQ2
NmNlNzhiYzFjZDFkNWFmOTRjMDhmOTIwOC4uNDcwOTEzNGQwM2ZmNGRjOWMzNjA0YWFlZjI3NzZl
MGFkODhlOTcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3guaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAKICAg
ICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9k
ZUZvck5vbkFub255bW91cygpKTsgfQogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJl
bmRlclN0eWxlJiBuZXdTdHlsZSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oCmluZGV4IGFiZDg4M2Q4MDk5ZjU3Mjc4NDY2MDIy
OTYxZWRhNjQ5MWNhZjA4ZWQuLmRkODQ4MDlmMDI1ZWYxNGVhOWU1MTZmMWZkM2M3NjdhNTBiZTYx
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFy
a2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIu
aApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgT3JpZW50YXRpb24gb3JpZW50YXRpb24o
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckRldGFpbHNNYXJrZXIiOyB9CisgICAgQVNDSUlMaXRl
cmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyRGV0YWlsc01h
cmtlciJfczsgfQogICAgIGJvb2wgaXNEZXRhaWxzTWFya2VyKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVtYmVkZGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuaAppbmRleCBmMWZkOWZmMDVkZGE5NTdjNjQ2NGQxNDcwN2M5NDIxYmE4Mzg1
ZjRlLi5jMDQxYzk2OTRiNDhlMGQ4MWVhOWJjMjk2OWU3OGE4NjZhODE3ZDk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaApAQCAtNzAsNyAr
NzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF5b3V0KCkgZmluYWw7CiAgICAgdm9pZCB3aWxs
QmVEZXN0cm95ZWQoKSBmaW5hbDsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiUmVuZGVyRW1iZWRkZWRPYmplY3QiOyB9CisgICAgQVNDSUlMaXRl
cmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyRW1iZWRkZWRPYmpl
Y3QiX3M7IH0KICAgICBib29sIGlzRW1iZWRkZWRPYmplY3QoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAKICAgICBib29sIHNob3dzVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IoKSBj
b25zdCB7IHJldHVybiBpc1BsdWdpblVuYXZhaWxhYmxlKCkgJiYgbV9pc1VuYXZhaWxhYmxlUGx1
Z2luSW5kaWNhdG9yU3RhdGUgIT0gVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JTdGF0ZTo6SGlk
ZGVuOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2Fk
Q29udHJvbC5oCmluZGV4IGQzMGE5YmJmNTg4N2IxNDAxMDg0MTM1ZGQxMzAwMTRmZjg0YWMxYWMu
LjljMjM1YjEwNzI5ZjlmN2NiNDJmYWZlOWQ0NjIwMTAzYWZjNmQzYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCkBAIC00Niw3
ICs0Niw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzRmlsZVVwbG9hZENvbnRyb2woKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZpbGVVcGxvYWRDb250cm9sIjsgfQor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlckZpbGVVcGxvYWRDb250cm9sIl9zOyB9CiAKICAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcAppbmRleCA1ZDFkYTZhZjk1ZmMyMmEyNTM1YjM0OGVhZTY4YWU0MjdiNjM2Y2MxLi5m
YzQzNGYxOWE0NDg5NjQ3NmJiYzRmZGIzYTYxZDc3OWMyODlkNTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTg5LDkgKzg5LDkgQEAg
UmVuZGVyRmxleGlibGVCb3g6On5SZW5kZXJGbGV4aWJsZUJveCgpCiAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6bm9kZUxheW91dENvbnRleHRDaGFuZ2VkKG5vZGVGb3JOb25Bbm9u
eW1vdXMoKSwgbnVsbHB0cik7CiB9CiAKLWNvbnN0IGNoYXIqIFJlbmRlckZsZXhpYmxlQm94Ojpy
ZW5kZXJOYW1lKCkgY29uc3QKK0FTQ0lJTGl0ZXJhbCBSZW5kZXJGbGV4aWJsZUJveDo6cmVuZGVy
TmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICJSZW5kZXJGbGV4aWJsZUJveCI7CisgICAgcmV0
dXJuICJSZW5kZXJGbGV4aWJsZUJveCJfczsKIH0KIAogdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6
Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRo
LCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCmluZGV4IDRiNTU1MmIxODk1ZDUwZTBkY2UxOTIz
MDc5NjdhM2Q0MWQ3ZWZlY2UuLmNlZTAzMTc3NDI3NWI3MGFlMWNiMGJmYjE1ZDhmYzg5MTU3ZjEx
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGbGV4aWJsZUJveCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAgICAgYm9vbCBjYW5Ecm9wQW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhZ21lbnRDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFnbWVudENvbnRhaW5lci5oCmluZGV4IGI3MGU3MTZkMzBkMmExYmJkMWM3YTA2NjViZmY2
NGExZjFhMjhjMzUuLjFmYjAxMDBhM2I0Y2ZhOTNhMzU3M2NhMDhkZmQ1YjQ3Y2VmNmJjNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5l
ci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIGJvb2wg
aXNSZW5kZXJGcmFnbWVudENvbnRhaW5lcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
LSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlckZyYWdtZW50Q29udGFpbmVyIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZyYWdtZW50Q29udGFpbmVyIl9zOyB9CiAK
ICAgICB2b2lkIGluc2VydGVkSW50b1RyZWUoSXNJbnRlcm5hbE1vdmUpIG92ZXJyaWRlOwogICAg
IHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKElzSW50ZXJuYWxNb3ZlKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5l
clNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVy
U2V0LmgKaW5kZXggZTQ0YjJkZmQ2NmU5ZTcwNzMwNDdlOTZhOGZiMzJiN2M1NGRkMTBkYS4uMjQx
ZGE5MjdjZTQwMTAzMDVjODc3MzMwMzczMzQwMTA5NjU4MWY1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyU2V0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyU2V0LmgKQEAgLTUz
LDcgKzUzLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2b2lkIGluc3RhbGxGcmFnbWVu
dGVkRmxvdygpIGZpbmFsOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlID0gMDsKKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
ID0gMDsKICAgICAKICAgICBib29sIGlzUmVuZGVyRnJhZ21lbnRDb250YWluZXJTZXQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuaAppbmRleCA3NWZiNTAzNzAzMDY5ZDBhZDEwNDg3MjMz
MzUxZmI0MzE2ZGM1ZTdjLi4wZDM4OWFkNzUxYzZkYjQwMmY5Mzg2YTJkMjVhM2EwMTMyMGU5YjZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZs
b3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cu
aApAQCAtMTg2LDcgKzE4Niw3IEBAIHByb3RlY3RlZDoKIAogICAgIFJlbmRlckZyYWdtZW50ZWRG
bG93KiBsb2NhdGVFbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyRnJhZ21lbnRlZEZsb3cqPih0aGlzKTsgfQogCi0gICAgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlID0gMDsKKyAgICBBU0NJSUxpdGVy
YWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlID0gMDsKIAogICAgIC8vIE92ZXJyaWRkZW4g
YnkgY29sdW1ucy9wYWdlcyB0byBzZXQgdXAgYW4gaW5pdGlhbCBsb2dpY2FsIHdpZHRoIG9mIHRo
ZSBwYWdlIHdpZHRoIGV2ZW4gd2hlbgogICAgIC8vIG5vIGZyYWdtZW50cyBoYXZlIGJlZW4gZ2Vu
ZXJhdGVkIHlldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmgKaW5kZXggM2Q2
N2EwZmQ3ZjY4YTI1ZGEzMjM3MTFiNDI0NzdiZjdiYjhjNTJjMS4uZjQyMTI1ZGI2MWFmZWUwYWJh
MTgzZWJhZGJmZmViZjMxMmMzOWJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YW1lLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGZyYW1l
T3duZXJFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlckZyYW1lIjsgfQorICAgIEFTQ0lJTGl0
ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlckZyYW1lIl9zOyB9
CiAgICAgYm9vbCBpc0ZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaAppbmRleCAwZjhhMDkwOTcx
MjgyY2YxMTJhYjUwZjE4ODZkMGMxMDcxYzk1Y2MyLi5hZGE0MzRlODQ3ZWMzZTkxZmNjM2Q3ZDQw
NzFmYjhkYTQxMzljNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhbWVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVT
ZXQuaApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgICAgICBpbnQgbV9zcGxpdFJlc2l6
ZU9mZnNldDsKICAgICB9OwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJGcmFtZVNldCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJGcmFtZVNldCJfczsgfQog
ICAgIGJvb2wgaXNGcmFtZVNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAog
ICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZ1bGxTY3JlZW4uaAppbmRleCA2OTA0MzM1OTJjN2Y0ZWIyMmYyYWM0NTYxN2QxMDBjZWY1
MTk5OTA5Li4wMDBmMzFmMDRmMjVlYTA1OTE2ZjExZTQ4ZWFiM2NhMzBlZjlkYmRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgKQEAgLTM3LDcgKzM3LDcg
QEAgcHVibGljOgogICAgIFJlbmRlckZ1bGxTY3JlZW4oRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYm
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJGdWxsU2NyZWVuKCk7CiAKLSAgICBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZ1bGxTY3JlZW4iOyB9
CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyRnVsbFNjcmVlbiJfczsgfQogCiAgICAgUmVuZGVyQmxvY2sqIHBsYWNlaG9sZGVyKCkg
eyByZXR1cm4gbV9wbGFjZWhvbGRlci5nZXQoKTsgfQogICAgIHZvaWQgc2V0UGxhY2Vob2xkZXIo
UmVuZGVyQmxvY2smIHBsYWNlaG9sZGVyKSB7IG1fcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDNkZWFmZWRmMjFh
NmMwMzg5NTczZDQyMGEwNTY0ZGZhYjlhOGRiYmYuLjgzMTM3NjQxYTRiOTkxYjg2OTFlYWRjNGM0
NjQ0ZDkyMzVlOTVlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAK
QEAgLTE5ODcsMTcgKzE5ODcsMTcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwYWludENoaWxkcmVuKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmYKICAgICAgICAg
cGFpbnRDaGlsZCgqY2hpbGQsIHBhaW50SW5mbywgcGFpbnRPZmZzZXQsIGZvckNoaWxkLCB1c2VQ
cmludFJlY3QsIFBhaW50QXNJbmxpbmVCbG9jayk7CiB9CiAKLWNvbnN0IGNoYXIqIFJlbmRlckdy
aWQ6OnJlbmRlck5hbWUoKSBjb25zdAorQVNDSUlMaXRlcmFsIFJlbmRlckdyaWQ6OnJlbmRlck5h
bWUoKSBjb25zdAogewogICAgIGlmIChpc0Zsb2F0aW5nKCkpCi0gICAgICAgIHJldHVybiAiUmVu
ZGVyR3JpZCAoZmxvYXRpbmcpIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJHcmlkIChmbG9hdGlu
ZykiX3M7CiAgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4g
IlJlbmRlckdyaWQgKHBvc2l0aW9uZWQpIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJHcmlkIChw
b3NpdGlvbmVkKSJfczsKICAgICBpZiAoaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuICJS
ZW5kZXJHcmlkIChnZW5lcmF0ZWQpIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJHcmlkIChnZW5l
cmF0ZWQpIl9zOwogICAgIGlmIChpc1JlbGF0aXZlbHlQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJl
dHVybiAiUmVuZGVyR3JpZCAocmVsYXRpdmUgcG9zaXRpb25lZCkiOwotICAgIHJldHVybiAiUmVu
ZGVyR3JpZCI7CisgICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAocmVsYXRpdmUgcG9zaXRpb25l
ZCkiX3M7CisgICAgcmV0dXJuICJSZW5kZXJHcmlkIl9zOwogfQogCiBib29sIFJlbmRlckdyaWQ6
Omhhc0F1dG9TaXplSW5Db2x1bW5BeGlzKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCAxODRlNjQyYmFjMjMzNzNiMGUy
ZGUzZDM4YmNjYWJlN2ZmY2MyMmI5Li44ZTY2OWEwYjg3YjY0ZDIyZTAzNTg1OTA2MGU1ZTQ4OGRi
MjQ1MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTEyOSw3ICsx
MjksNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gY2hpbGQtPmlzUmVuZGVyUmVwbGFjZWQo
KSA/IEl0ZW1Qb3NpdGlvbjo6U3RhcnQgOiBJdGVtUG9zaXRpb246OlN0cmV0Y2g7CiAgICAgfQog
Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFTQ0lJ
TGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1JlbmRlckdy
aWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBjb21wdXRlSW50
cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVu
aXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oCmluZGV4IGZmMzU2M2M3ODM3NmUyNTBjM2Y3ZDky
MmUxY2YxMTkyZjQ0NjBjNTEuLmVhZmQwODQ4MzYwZjkyMjQ2N2E0YjVkMTJiNjhhYmNhNDMwNWRi
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaApAQCAt
NDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRl
OwogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXND
YW52YXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJIVE1MQ2FudmFzIjsg
fQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlckhUTUxDYW52YXMiX3M7IH0KICAgICB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAgICB2b2lkIGludHJpbnNpY1NpemVD
aGFuZ2VkKCkgb3ZlcnJpZGUgeyBjYW52YXNTaXplQ2hhbmdlZCgpOyB9CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oCmluZGV4IDkxY2Q4NTU2NDRhYjc4YmU5YjFjZjRl
OTNhZWIyMDcyMjUwN2IxMTYuLjU5YTc4ODVlZDc3NTAxMjI1MzNjM2Y2ZGJhMDA3N2YwYjBiNzdh
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgKQEAgLTUwLDcgKzUw
LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNSZW5kZXJJRnJhbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlcklGcmFtZSI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJJRnJhbWUiX3M7IH0KIAog
ICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IDhhYWNkNGMwNzNkYzg5Nzk2NzBkNzVkMTNlY2Qy
MTc0YmM5YzI3NjQuLjQ0MjlkMzA3ZjdiMDZiNjcyMTVkYzQ2YmM2ZjJiNDA1YjVhMzRjOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC0xMDQsNyArMTA0LDcgQEAg
cHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckltYWdlIjsgfQorICAgIEFTQ0lJTGl0
ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckltYWdlIl9z
OyB9CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDBiNDVlYWVjMTM0YzVj
N2QwMWEwMmMzM2VmODNjOTc4NGI4ZjZiZWEuLjc2MDA1MDAxZDNjMGRkZTQzNzBkYWI3ODRmZTI0
NWU3ZWQ4OGI5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
CkBAIC00MDIsMTggKzQwMiwxOCBAQCBMYXlvdXRVbml0IFJlbmRlcklubGluZTo6bWFyZ2luQWZ0
ZXIoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0CiAgICAgcmV0dXJuIGNvbXB1
dGVNYXJnaW4odGhpcywgc3R5bGUoKS5tYXJnaW5BZnRlclVzaW5nKG90aGVyU3R5bGUgPyBvdGhl
clN0eWxlIDogJnN0eWxlKCkpKTsKIH0KIAotY29uc3QgY2hhciogUmVuZGVySW5saW5lOjpyZW5k
ZXJOYW1lKCkgY29uc3QKK0FTQ0lJTGl0ZXJhbCBSZW5kZXJJbmxpbmU6OnJlbmRlck5hbWUoKSBj
b25zdAogewogICAgIGlmIChpc1JlbGF0aXZlbHlQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJldHVy
biAiUmVuZGVySW5saW5lIChyZWxhdGl2ZSBwb3NpdGlvbmVkKSI7CisgICAgICAgIHJldHVybiAi
UmVuZGVySW5saW5lIChyZWxhdGl2ZSBwb3NpdGlvbmVkKSJfczsKICAgICBpZiAoaXNTdGlja2ls
eVBvc2l0aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJJbmxpbmUgKHN0aWNreSBwb3Np
dGlvbmVkKSI7CisgICAgICAgIHJldHVybiAiUmVuZGVySW5saW5lIChzdGlja3kgcG9zaXRpb25l
ZCkiX3M7CiAgICAgLy8gRklYTUU6IFRlbXBvcmFyeSBoYWNrIHdoaWxlIHRoZSBuZXcgZ2VuZXJh
dGVkIGNvbnRlbnQgc3lzdGVtIGlzIGJlaW5nIGltcGxlbWVudGVkLgogICAgIGlmIChpc1BzZXVk
b0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJJbmxpbmUgKGdlbmVyYXRlZCkiOwor
ICAgICAgICByZXR1cm4gIlJlbmRlcklubGluZSAoZ2VuZXJhdGVkKSJfczsKICAgICBpZiAoaXNB
bm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuICJSZW5kZXJJbmxpbmUgKGdlbmVyYXRlZCkiOwot
ICAgIHJldHVybiAiUmVuZGVySW5saW5lIjsKKyAgICAgICAgcmV0dXJuICJSZW5kZXJJbmxpbmUg
KGdlbmVyYXRlZCkiX3M7CisgICAgcmV0dXJuICJSZW5kZXJJbmxpbmUiX3M7CiB9CiAKIGJvb2wg
UmVuZGVySW5saW5lOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5oCmluZGV4IDBhMTcxYWY4YmJhZGNhYjBlMGJhNDE2ZDJhMDk4Nzk4YmVkMjc0MzUuLjQzYmQw
NmJlY2E1MDUxMjE2NmVmMTI2M2UzZGFkNmYzNTgwNGRhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTkzLDcgKzkzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgdXBkYXRlRnJvbVN0eWxlKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJO
YW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAyMzQ1NTI1YjJjODBmYTIyY2ViNjIwZDVkYWY3
MDEwMDIxOTg1MmY0Li5mZjBlOTFjY2Y0YzA4N2UzZGU2YjM1MTE3NDgzZTQ0YjdhMzAxMTE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApA
QCAtNTE3LDEyICs1MTcsMTIgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0ZVByaW1h
cnlHcmFwaGljc0xheWVyKCkKICAgICBjb25zdCB1bnNpZ25lZCBtYXhMYXllck5hbWVMZW5ndGgg
PSAxMDA7CiAgICAgaWYgKGxheWVyTmFtZS5sZW5ndGgoKSA+IG1heExheWVyTmFtZUxlbmd0aCkg
ewogICAgICAgICBsYXllck5hbWUudHJ1bmNhdGUobWF4TGF5ZXJOYW1lTGVuZ3RoKTsKLSAgICAg
ICAgbGF5ZXJOYW1lLmFwcGVuZCgiLi4uIik7CisgICAgICAgIGxheWVyTmFtZS5hcHBlbmQoIi4u
LiJfcyk7CiAgICAgfQogICAgIG1fZ3JhcGhpY3NMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIo
bGF5ZXJOYW1lLCBtX2lzRnJhbWVMYXllcldpdGhUaWxlZEJhY2tpbmcgPyBHcmFwaGljc0xheWVy
OjpUeXBlOjpQYWdlVGlsZWRCYWNraW5nIDogR3JhcGhpY3NMYXllcjo6VHlwZTo6Tm9ybWFsKTsK
IAogICAgIGlmIChtX2lzRnJhbWVMYXllcldpdGhUaWxlZEJhY2tpbmcpIHsKLSAgICAgICAgbV9j
aGlsZENvbnRhaW5tZW50TGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJQYWdlIFRpbGVkQmFj
a2luZyBjb250YWlubWVudCIpOworICAgICAgICBtX2NoaWxkQ29udGFpbm1lbnRMYXllciA9IGNy
ZWF0ZUdyYXBoaWNzTGF5ZXIoIlBhZ2UgVGlsZWRCYWNraW5nIGNvbnRhaW5tZW50Il9zKTsKICAg
ICAgICAgbV9ncmFwaGljc0xheWVyLT5hZGRDaGlsZCgqbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIp
OwogICAgIH0KIApAQCAtMTkzNyw3ICsxOTM3LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OmVuc3VyZUNsaXBwaW5nU3RhY2tMYXllcnMoTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2smIGMK
IHsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2xpcHBpbmdTdGFjay5zdGFjaygpKSB7CiAgICAg
ICAgIGlmICghZW50cnkuY2xpcHBpbmdMYXllcikgewotICAgICAgICAgICAgZW50cnkuY2xpcHBp
bmdMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoZW50cnkuY2xpcERhdGEuaXNPdmVyZmxvd1Nj
cm9sbCA/ICJjbGlwIGZvciBzY3JvbGxlciIgOiAiYW5jZXN0b3IgY2xpcHBpbmciKTsKKyAgICAg
ICAgICAgIGVudHJ5LmNsaXBwaW5nTGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKGVudHJ5LmNs
aXBEYXRhLmlzT3ZlcmZsb3dTY3JvbGwgPyAiY2xpcCBmb3Igc2Nyb2xsZXIiX3MgOiAiYW5jZXN0
b3IgY2xpcHBpbmciX3MpOwogICAgICAgICAgICAgZW50cnkuY2xpcHBpbmdMYXllci0+c2V0TWFz
a3NUb0JvdW5kcyh0cnVlKTsKICAgICAgICAgICAgIGVudHJ5LmNsaXBwaW5nTGF5ZXItPnNldFBh
aW50aW5nUGhhc2UoeyB9KTsKICAgICAgICAgfQpAQCAtMjAyNiw3ICsyMDI2LDcgQEAgYm9vbCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURlc2NlbmRhbnRDbGlwcGluZ0xheWVyKGJvb2wgbmVl
ZHNEZXNjZW5kYW50Q2xpcCkKIAogICAgIGlmIChuZWVkc0Rlc2NlbmRhbnRDbGlwKSB7CiAgICAg
ICAgIGlmICghbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIgJiYgIW1faXNGcmFtZUxheWVyV2l0aFRp
bGVkQmFja2luZykgewotICAgICAgICAgICAgbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIgPSBjcmVh
dGVHcmFwaGljc0xheWVyKCJjaGlsZCBjbGlwcGluZyIpOworICAgICAgICAgICAgbV9jaGlsZENv
bnRhaW5tZW50TGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJjaGlsZCBjbGlwcGluZyJfcyk7
CiAgICAgICAgICAgICBtX2NoaWxkQ29udGFpbm1lbnRMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0
cnVlKTsKICAgICAgICAgICAgIGxheWVyc0NoYW5nZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC0y
MTE4LDcgKzIxMTgsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6cmVxdWlyZXNTY3JvbGxD
b3JuZXJMYXllcigpIGNvbnN0CiAKIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVPdmVy
Zmxvd0NvbnRyb2xzTGF5ZXJzKGJvb2wgbmVlZHNIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIsIGJv
b2wgbmVlZHNWZXJ0aWNhbFNjcm9sbGJhckxheWVyLCBib29sIG5lZWRzU2Nyb2xsQ29ybmVyTGF5
ZXIpCiB7Ci0gICAgYXV0byBjcmVhdGVPckRlc3Ryb3lMYXllciA9IFsmXShSZWZQdHI8R3JhcGhp
Y3NMYXllcj4mIGxheWVyLCBib29sIG5lZWRMYXllciwgYm9vbCBkcmF3c0NvbnRlbnQsIGNvbnN0
IGNoYXIqIGxheWVyTmFtZSkgeworICAgIGF1dG8gY3JlYXRlT3JEZXN0cm95TGF5ZXIgPSBbJl0o
UmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiBsYXllciwgYm9vbCBuZWVkTGF5ZXIsIGJvb2wgZHJhd3ND
b250ZW50LCBBU0NJSUxpdGVyYWwgbGF5ZXJOYW1lKSB7CiAgICAgICAgIGlmIChuZWVkTGF5ZXIg
PT0gISFsYXllcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjEzOCwxNSArMjEz
OCwxNSBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xh
eWVycyhib29sIG5lZWRzSG9yaXpvbnRhbFNjcm9sbAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9OwogCi0gICAgYm9vbCBsYXllcnNDaGFuZ2VkID0gY3JlYXRlT3JEZXN0cm95TGF5ZXIobV9v
dmVyZmxvd0NvbnRyb2xzQ29udGFpbmVyLCBuZWVkc0hvcml6b250YWxTY3JvbGxiYXJMYXllciB8
fCBuZWVkc1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIgfHwgbmVlZHNTY3JvbGxDb3JuZXJMYXllciwg
ZmFsc2UsICJvdmVyZmxvdyBjb250cm9scyBjb250YWluZXIiKTsKKyAgICBib29sIGxheWVyc0No
YW5nZWQgPSBjcmVhdGVPckRlc3Ryb3lMYXllcihtX292ZXJmbG93Q29udHJvbHNDb250YWluZXIs
IG5lZWRzSG9yaXpvbnRhbFNjcm9sbGJhckxheWVyIHx8IG5lZWRzVmVydGljYWxTY3JvbGxiYXJM
YXllciB8fCBuZWVkc1Njcm9sbENvcm5lckxheWVyLCBmYWxzZSwgIm92ZXJmbG93IGNvbnRyb2xz
IGNvbnRhaW5lciJfcyk7CiAKLSAgICBib29sIGhvcml6b250YWxTY3JvbGxiYXJMYXllckNoYW5n
ZWQgPSBjcmVhdGVPckRlc3Ryb3lMYXllcihtX2xheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhciwg
bmVlZHNIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIsIHRydWUsICJob3Jpem9udGFsIHNjcm9sbGJh
ciIpOworICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbGJhckxheWVyQ2hhbmdlZCA9IGNyZWF0ZU9y
RGVzdHJveUxheWVyKG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyLCBuZWVkc0hvcml6b250
YWxTY3JvbGxiYXJMYXllciwgdHJ1ZSwgImhvcml6b250YWwgc2Nyb2xsYmFyIl9zKTsKICAgICBs
YXllcnNDaGFuZ2VkIHw9IGhvcml6b250YWxTY3JvbGxiYXJMYXllckNoYW5nZWQ7CiAKLSAgICBi
b29sIHZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkID0gY3JlYXRlT3JEZXN0cm95TGF5ZXIo
bV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyLCBuZWVkc1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIs
IHRydWUsICJ2ZXJ0aWNhbCBzY3JvbGxiYXIiKTsKKyAgICBib29sIHZlcnRpY2FsU2Nyb2xsYmFy
TGF5ZXJDaGFuZ2VkID0gY3JlYXRlT3JEZXN0cm95TGF5ZXIobV9sYXllckZvclZlcnRpY2FsU2Ny
b2xsYmFyLCBuZWVkc1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIsIHRydWUsICJ2ZXJ0aWNhbCBzY3Jv
bGxiYXIiX3MpOwogICAgIGxheWVyc0NoYW5nZWQgfD0gdmVydGljYWxTY3JvbGxiYXJMYXllckNo
YW5nZWQ7CiAKLSAgICBsYXllcnNDaGFuZ2VkIHw9IGNyZWF0ZU9yRGVzdHJveUxheWVyKG1fbGF5
ZXJGb3JTY3JvbGxDb3JuZXIsIG5lZWRzU2Nyb2xsQ29ybmVyTGF5ZXIsIHRydWUsICJzY3JvbGwg
Y29ybmVyIik7CisgICAgbGF5ZXJzQ2hhbmdlZCB8PSBjcmVhdGVPckRlc3Ryb3lMYXllcihtX2xh
eWVyRm9yU2Nyb2xsQ29ybmVyLCBuZWVkc1Njcm9sbENvcm5lckxheWVyLCB0cnVlLCAic2Nyb2xs
IGNvcm5lciJfcyk7CiAKICAgICBpZiAoYXV0byogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX293
bmluZ0xheWVyLnBhZ2UoKS5zY3JvbGxpbmdDb29yZGluYXRvcigpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBzY3JvbGxhYmxlQXJlYSA9IG1fb3duaW5nTGF5ZXIuc2Nyb2xsYWJsZUFyZWEoKSkgewpA
QCAtMjI4Miw3ICsyMjgyLDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZU1hc2tp
bmdMYXllcihib29sIGhhc01hc2ssIGJvb2wgaGFzQ2xpcFBhdGgpCiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIW1fbWFza0xheWVyKSB7Ci0gICAgICAgICAgICBtX21hc2tMYXllciA9IGNyZWF0
ZUdyYXBoaWNzTGF5ZXIoIm1hc2siLCByZXF1aXJlZExheWVyVHlwZSk7CisgICAgICAgICAgICBt
X21hc2tMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoIm1hc2siX3MsIHJlcXVpcmVkTGF5ZXJU
eXBlKTsKICAgICAgICAgICAgIGxheWVyQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICBtX2dy
YXBoaWNzTGF5ZXItPnNldE1hc2tMYXllcihtX21hc2tMYXllci5jb3B5UmVmKCkpOwogICAgICAg
ICAgICAgLy8gV2UgbmVlZCBhIGdlb21ldHJ5IHVwZGF0ZSB0byBzaXplIHRoZSBuZXcgbWFzayBs
YXllci4KQEAgLTIzMDgsNyArMjMwOCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVDaGlsZENsaXBwaW5nU3RyYXRlZ3koYm9vbCBuZWVkc0Rlc2NlbmRhbnRzQ2xpcHBpCiAKICAg
ICBhdXRvKiBjbGlwcGluZ0xheWVyID0gdGhpcy0+Y2xpcHBpbmdMYXllcigpOwogICAgIGlmIChu
ZWVkc0NsaXBNYXNrTGF5ZXIoKSkgewotICAgICAgICBtX2NoaWxkQ2xpcHBpbmdNYXNrTGF5ZXIg
PSBjcmVhdGVHcmFwaGljc0xheWVyKCJjaGlsZCBjbGlwcGluZyBtYXNrIik7CisgICAgICAgIG1f
Y2hpbGRDbGlwcGluZ01hc2tMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoImNoaWxkIGNsaXBw
aW5nIG1hc2siX3MpOwogICAgICAgICBtX2NoaWxkQ2xpcHBpbmdNYXNrTGF5ZXItPnNldERyYXdz
Q29udGVudCh0cnVlKTsKICAgICAgICAgbV9jaGlsZENsaXBwaW5nTWFza0xheWVyLT5zZXRQYWlu
dGluZ1BoYXNlKHsgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2U6OkNoaWxkQ2xpcHBpbmdNYXNr
IH0pOwogICAgICAgICBpZiAoY2xpcHBpbmdMYXllcikKQEAgLTIzMjcsMTMgKzIzMjcsMTMgQEAg
Ym9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVNjcm9sbGluZ0xheWVycyhib29sIG5lZWRz
U2Nyb2xsaW5nTGF5ZXJzKQogCiAgICAgaWYgKCFtX3Njcm9sbENvbnRhaW5lckxheWVyKSB7CiAg
ICAgICAgIC8vIE91dGVyIGxheWVyIHdoaWNoIGNvcnJlc3BvbmRzIHdpdGggdGhlIHNjcm9sbCB2
aWV3LiBUaGlzIG5ldmVyIHBhaW50cyBjb250ZW50LgotICAgICAgICBtX3Njcm9sbENvbnRhaW5l
ckxheWVyID0gY3JlYXRlR3JhcGhpY3NMYXllcigic2Nyb2xsIGNvbnRhaW5lciIsIEdyYXBoaWNz
TGF5ZXI6OlR5cGU6OlNjcm9sbENvbnRhaW5lcik7CisgICAgICAgIG1fc2Nyb2xsQ29udGFpbmVy
TGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJzY3JvbGwgY29udGFpbmVyIl9zLCBHcmFwaGlj
c0xheWVyOjpUeXBlOjpTY3JvbGxDb250YWluZXIpOwogICAgICAgICBtX3Njcm9sbENvbnRhaW5l
ckxheWVyLT5zZXRQYWludGluZ1BoYXNlKHsgfSk7CiAgICAgICAgIG1fc2Nyb2xsQ29udGFpbmVy
TGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7CiAgICAgICAgIG1fc2Nyb2xsQ29udGFpbmVy
TGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAKICAgICAgICAgLy8gSW5uZXIgbGF5ZXIg
d2hpY2ggcmVuZGVycyB0aGUgY29udGVudCB0aGF0IHNjcm9sbHMuCi0gICAgICAgIG1fc2Nyb2xs
ZWRDb250ZW50c0xheWVyID0gY3JlYXRlR3JhcGhpY3NMYXllcigic2Nyb2xsZWQgY29udGVudHMi
LCBHcmFwaGljc0xheWVyOjpUeXBlOjpTY3JvbGxlZENvbnRlbnRzKTsKKyAgICAgICAgbV9zY3Jv
bGxlZENvbnRlbnRzTGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJzY3JvbGxlZCBjb250ZW50
cyJfcywgR3JhcGhpY3NMYXllcjo6VHlwZTo6U2Nyb2xsZWRDb250ZW50cyk7CiAgICAgICAgIG1f
c2Nyb2xsZWRDb250ZW50c0xheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAgICAgICAgIG1f
c2Nyb2xsZWRDb250ZW50c0xheWVyLT5zZXRBbmNob3JQb2ludCh7IH0pOwogICAgICAgICBtX3Nj
cm9sbENvbnRhaW5lckxheWVyLT5hZGRDaGlsZCgqbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCmluZGV4IDg0MzI2NjNj
MTc3ZmNjNGIxMjU1YzM1Y2QxM2YzZDQwZTMxNzI1YmYuLjllOWUxZTM5OTRiMWM5ZWQ5Mzg0YzU4
YjFmYzcxZGFjYjllYTMyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaW5lQnJlYWsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlckxp
bmVCcmVhaygpOwogCiAgICAgLy8gRklYTUU6IFRoZSBsaWVzIGhlcmUga2VlcCByZW5kZXIgdHJl
ZSBkdW1wIGJhc2VkIHRlc3QgcmVzdWx0cyB1bmNoYW5nZWQuCi0gICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNXQlIgPyAiUmVuZGVyV29yZEJyZWFr
IiA6ICJSZW5kZXJCUiI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1faXNXQlIgPyAiUmVuZGVyV29yZEJyZWFrIl9zIDogIlJlbmRlckJSIl9z
OyB9CiAKICAgICBib29sIGlzV0JSKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1dCUjsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAppbmRleCBkNzQ4ZDBmODQ5
MDQ0OWJjOGM2ZmIxNGE5NmNhZmY4ZTgyZTZjMDg2Li44NTdkODQ4Mzc1YTQ2Mjg0NDhmYWY1ZmFk
M2JkYzk1YzM2MjU5MmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0
ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJMaXN0Qm94IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckxpc3RCb3giX3M7IH0KIAogICAgIGJv
b2wgaXNMaXN0Qm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCmluZGV4IDg1MGRkZWNhOGU5NDU2MDM4
MGFkOTViNjUxMTFiYzdkOThhNWY5YjYuLjZhYTUxOTJjMmIzYTNiZmE5NDE4YjcwZTdkNTIzOTFj
MTk4ZTI3NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCkBA
IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5SZXZlcnNlZE9yZGVyZWRMaXN0
KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJMaXN0SXRlbSI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVu
ZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJMaXN0SXRlbSJfczsgfQogCiAg
ICAgYm9vbCBpc0xpc3RJdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKaW5kZXggY2NmOGFi
ZmQ5ZTE0OGIwNzEzNzMyZWM3NjY3ZmM3N2VjMTBjMTA0ZS4uM2VkYmZlMTRjZmQ1ZDk5NjAwYzQx
YmM2YjJjZTVkODk3NDE1YjcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RNYXJrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdE1hcmtlci5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2
b2lkIHdpbGxCZURlc3Ryb3llZCgpIGZpbmFsOwotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTGlzdE1hcmtlciI7IH0KKyAgICBBU0NJSUxp
dGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJMaXN0TWFya2Vy
Il9zOyB9CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIGZpbmFsOwog
ICAgIGJvb2wgaXNMaXN0TWFya2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKaW5kZXggMTAxZGQwNDcwMjdlMjc3MTk5
ZTVjMzI2ZjRjNzIwZDc4N2I2ZjA1MC4uZGNhOGM3NDQ1MzFmZTc0YzhiOGQ2ZmU0ZWUyMzdiNTA4
MDU2YjVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKQEAgLTUxLDcg
KzUxLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNZWRpYSI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNZWRpYSJfczsgfQogICAg
IGJvb2wgaXNNZWRpYSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlz
SW1hZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgcGFpbnRSZXBs
YWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAppbmRleCAzYzAyYzkwMmFmNmIzNTIzZWY4
Zjc5ZjM3OTUzMjFlZjIyMzUxYWI5Li42OGE5MTg4ZGJmYjkyNDA1ZmI4YmVmOTFiZTU5NTRiZjkw
NGM0M2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApAQCAt
ODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzQ29udHJvbENsaXAoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBjYW5IYXZlR2VuZXJhdGVkQ2hpbGRy
ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNZW51TGlzdCI7IH0K
KyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJNZW51TGlzdCJfczsgfQogCiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdp
ZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxX
aWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1ldGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaAppbmRl
eCAxYzM3MDYzMTRjOWRmNWQyODljZmNkYWZmMzVhN2EwMDIwYmJmZGFmLi5jYTE3NDMxYzlmZDI0
MGIwYjc1ODE3NjE4ODU2Y2FiNGU4MjlhNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWV0ZXIuaApAQCAtMzksNyArMzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlTG9n
aWNhbFdpZHRoKCkgb3ZlcnJpZGU7CiAgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNv
bXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBs
b2dpY2FsVG9wKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWV0ZXIiOyB9CisgICAgQVNDSUlMaXRl
cmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWV0ZXIiX3M7
IH0KICAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTW9kZWwuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNb2RlbC5oCmluZGV4IDk0MTk3MTljMDI3
MGJmNDczYWY1YWQzNmMzZjIxZDE1MTUzYTlhNDcuLjM3YTQ5MjJhZmU0MWZkYzI1MGIwOTU4NDhi
NGRkOGU1N2MwYjhkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNb2RlbC5oCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBj
b25zdCA9IGRlbGV0ZTsKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIlJlbmRlck1vZGVsIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1vZGVsIl9zOyB9CiAgICAgYm9vbCBpc1JlbmRl
ck1vZGVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCByZXF1aXJl
c0xheWVyKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCmluZGV4IDBhNjAzM2E3YmI1YzdiMTViYzJhZGU1ZGVm
NmZhNDEzZDNlZWMwMjkuLjgzZmUyZDk1MWQ2NzExYjk3MmQ2YWU5MDhmNDFkNTk5MmY4MzViNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZs
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZs
b3cuY3BwCkBAIC00OSw5ICs0OSw5IEBAIFJlbmRlck11bHRpQ29sdW1uRmxvdzo6UmVuZGVyTXVs
dGlDb2x1bW5GbG93KERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzCiAKIFJlbmRl
ck11bHRpQ29sdW1uRmxvdzo6flJlbmRlck11bHRpQ29sdW1uRmxvdygpID0gZGVmYXVsdDsKIAot
Y29uc3QgY2hhciogUmVuZGVyTXVsdGlDb2x1bW5GbG93OjpyZW5kZXJOYW1lKCkgY29uc3QKK0FT
Q0lJTGl0ZXJhbCBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OnJlbmRlck5hbWUoKSBjb25zdAogeyAg
ICAKLSAgICByZXR1cm4gIlJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCI7CisgICAgcmV0dXJu
ICJSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQiX3M7CiB9CiAKIFJlbmRlck11bHRpQ29sdW1u
U2V0KiBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OmZpcnN0TXVsdGlDb2x1bW5TZXQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxv
dy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5oCmlu
ZGV4IDA1ZDllNzZhYTA2ZDZiMWYyYzk0MzgzZTQ4ZDU1MjJiMmIxYjMwNDguLmFiNjVjOWJjOGEy
MDcyYTUzMTUwMDhmNjI2YmEyMGY3NTRiYzVmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uRmxvdygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2b2lkIGFkZEZyYWdtZW50VG9UaHJlYWQoUmVuZGVyRnJhZ21lbnRDb250YWlu
ZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxCZVJlbW92ZWRGcm9tVHJlZShJc0ludGVybmFs
TW92ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFnbWVudGVkRmxvd0Rlc2NlbmRhbnRCb3hMYWlk
T3V0KFJlbmRlckJveCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXggZTM5NmZhMTIyODI5OGQ1MGQ2MGQ2YWZm
NzZjZDQyY2VlMGUyYmJhNC4uMGRlNzMzZDI0ZTE0NmQ1MDhhMGNhYjlkNDkzZGVkNjFlODM2NWVm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5T
ZXQuY3BwCkBAIC0xMDQ2LDkgKzEwNDYsOSBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0Ojp1
cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5bwogICAg
IH0KIH0KIAotY29uc3QgY2hhciogUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnJlbmRlck5hbWUoKSBj
b25zdAorQVNDSUlMaXRlcmFsIFJlbmRlck11bHRpQ29sdW1uU2V0OjpyZW5kZXJOYW1lKCkgY29u
c3QKIHsgICAgCi0gICAgcmV0dXJuICJSZW5kZXJNdWx0aUNvbHVtblNldCI7CisgICAgcmV0dXJu
ICJSZW5kZXJNdWx0aUNvbHVtblNldCJfczsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAppbmRleCA0ODgyNjAzYTQyNDA0YWI2Yzdm
ZjA0MzljNTY2MGRlYjY2N2Q2ZDQ0Li44MDRlODhjYTkyNDIyNWRiYTk0ZmFhZjY3NWNkNjFmMGMw
NjhhMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlD
b2x1bW5TZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TZXQuaApAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAKICAgICBWaXNpYmxlUG9zaXRp
b24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlckZyYWdt
ZW50Q29udGFpbmVyKikgb3ZlcnJpZGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIExheW91dFVuaXQgY2FsY3VsYXRlTWF4Q29sdW1uSGVpZ2h0KCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVt
blNwYW5uZXJQbGFjZWhvbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwCmluZGV4IDZlZmM1MTViMmU0ODljMGMz
NjExMjRhNzcyZDU2N2E0MmM4MDJhZWYuLmRlYzQyNzUyZGVkN2NmYTMwOGI3ZTQzOGRjMGY3MjZm
YmUwMTRmYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcApAQCAtNTMsOSArNTMs
OSBAQCBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcjo6UmVuZGVyTXVsdGlDb2x1
bW5TcGFubmVyUGxhY2Vob2xkZXIoUmVuZGVyTQogewogfQogCi1jb25zdCBjaGFyKiBSZW5kZXJN
dWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcjo6cmVuZGVyTmFtZSgpIGNvbnN0CitBU0NJSUxp
dGVyYWwgUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXI6OnJlbmRlck5hbWUoKSBj
b25zdAogewotICAgIHJldHVybiAiUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIi
OworICAgIHJldHVybiAiUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIiX3M7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgKaW5k
ZXggNjUwZDQ5MTRjZDIyMjY5MTY0NmQ5MWZjZTdjYjM3ZjQzYWU3ZjJmYS4uZDA3ZWFkNGQxNjlk
Y2U4ZDI3N2IyMjg0ZGZmZjk2ZDcxOTE4YTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVy
LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVu
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHBhaW50KFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgeyB9Ci0gICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBXZWFrUHRyPFJlbmRlckJveD4gbV9zcGFubmVyOwog
ICAgIFdlYWtQdHI8UmVuZGVyTXVsdGlDb2x1bW5GbG93PiBtX2ZyYWdtZW50ZWRGbG93OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAxNWFjMTdiMzgzNTg2
OWI0ZTI5OWZlYTRjM2ExNjVkNTYyYjFiODcwLi4yZGE5M2RmOTE1NjFjZTc3NWM4ZWJiM2QxMzZk
ZmIyY2Y2ZWM2MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cApAQCAtMTIyNiwxMyArMTIyNiwxNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6b3V0cHV0UmVuZGVy
T2JqZWN0KFRleHRTdHJlYW0mIHN0cmVhbSwgYm9vbCBtYXJrLCBpbnQgZGVwdGgpCiAgICAgaWYg
KG5vZGUoKSkKICAgICAgICAgc3RyZWFtIDw8IG5vZGUoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0
YSgpIDw8ICIgIjsKIAotICAgIFN0cmluZyBuYW1lID0gcmVuZGVyTmFtZSgpOworICAgIEFTQ0lJ
TGl0ZXJhbCBuYW1lID0gcmVuZGVyTmFtZSgpOworICAgIFN0cmluZ1ZpZXcgbmFtZVZpZXcgeyBu
YW1lIH07CiAgICAgLy8gRklYTUU6IFJlbmRlcmVyJ3MgbmFtZSBzaG91bGQgbm90IGluY2x1ZGUg
cHJvcGVydHkgdmFsdWUgbGlzdGluZy4KLSAgICBpbnQgcG9zID0gbmFtZS5maW5kKCcoJyk7Cisg
ICAgaW50IHBvcyA9IG5hbWVWaWV3LmZpbmQoJygnKTsKICAgICBpZiAocG9zID4gMCkKLSAgICAg
ICAgc3RyZWFtIDw8IG5hbWUubGVmdChwb3MgLSAxKS51dGY4KCkuZGF0YSgpOworICAgICAgICBz
dHJlYW0gPDwgbmFtZVZpZXcubGVmdChwb3MgLSAxKS5jaGFyYWN0ZXJzOCgpOwogICAgIGVsc2UK
LSAgICAgICAgc3RyZWFtIDw8IG5hbWUudXRmOCgpLmRhdGEoKTsKKyAgICAgICAgc3RyZWFtIDw8
IG5hbWVWaWV3OwogCiAgICAgaWYgKGlzPFJlbmRlckJveD4oKnRoaXMpKSB7CiAgICAgICAgIGF1
dG8mIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDljZmVlOGI4YjU4ZjJhODBiN2RjMGU0MmQy
OTgyN2IzMjI0Y2Y1MDYuLmZjYWNmMzg1NGM4ZWE0ZTA4MjdhN2JlMjIwZDQ5MmYyNTU3ZTZhOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTExMCw3ICsxMTAs
NyBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJUaGVtZSYgdGhlbWUoKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFT
Q0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgPSAwOwogCiAgICAgUmVuZGVyRWxlbWVudCog
cGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAgICBib29sIGlzRGVzY2VuZGFu
dE9mKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUHJvZ3Jlc3MuaAppbmRleCAzZTEyYWM3MDQwN2YyZjMxNmEzZjE5YzBhZDk4YmUxOTc4
NzNiZGE5Li43ZTdmMjk2OTVjOGYxNDFkNzhmNTM3YTEwZWE3NDg0ZDkxM2FkZTNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuaApAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAgICAgSFRNTFByb2dyZXNzRWxlbWVudCogcHJvZ3Jlc3NFbGVtZW50KCkgY29uc3Q7
CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJQcm9ncmVzcyI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJQcm9ncmVzcyJfczsgfQogICAgIGJv
b2wgaXNQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBMb2dp
Y2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBs
b2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNvbnN0IG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5oCmluZGV4IGEyZjI2YzY3YzQ4MDZmNjlj
ZjU4NjVjOTkzNWQzZDBhYjM1OWNkYWUuLmFhNGY2YTc3MWU3Nzg2NmQwMTRhZjdkZmNiMDg4MTc0
YTY0YTM5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5oCkBAIC0zNSw3
ICszNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVJlbmRlcmVyKFJlbmRlclRyZWVCdWls
ZGVyJiwgUmVuZGVyUXVvdGUqIHByZXZpb3VzUXVvdGUpOwogCiBwcml2YXRlOgotICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUXVvdGUi
OyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyUXVvdGUiX3M7IH0KICAgICBib29sIGlzUXVvdGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc09wZW4oKSBjb25zdDsKICAgICB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKaW5kZXggYmNjYTYzNGM2
MzU5MjM0NTE3MWUxZmQzOWRjMTQzOWEwNDBlNWQwOS4uNDQzYTEyY2ZjMDQ1NGRlNDA2ZWVjOGNm
YTQ5NzhkNjk3OTYwOTQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IGNvbXB1dGVD
b25zdHJhaW5lZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgUmVuZGVyQm94KiBlbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdCB7IHJldHVy
biAwOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJSZW5kZXJSZXBsYWNlZCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSZXBsYWNlZCJfczsgfQogCiAgICAgYm9vbCBj
YW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaAppbmRleCAyY2U3ODYxMDFiNDdlMzJj
M2RiOGI4N2ViNjVhMDE2NDIzMWFiMzdjLi4zMjhkYThmZGExMzgyMmIzZmE0ODBlMzMwZWJiZTZh
ZGU0YmFjM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGljYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmgKQEAg
LTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIFJlbmRlclJlcGxpY2EoRG9jdW1lbnQmLCBSZW5k
ZXJTdHlsZSYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSZXBsaWNhKCk7CiAKLSAgICBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJlcGxpY2Ei
OyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyUmVwbGljYSJfczsgfQogCiAgICAgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUnVieS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnkuaAppbmRleCBhM2ExYzAyNDQ2ODNhODdhM2RlZGI1OWE0NDYxZGFmZWE4MGQzOWFhLi5mNWJl
N2I3YjRhODFlMDUxODBkMzVhMzAzMGYxMWEyMjMxZTllZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSdWJ5LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNSdWJ5SW5saW5lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyUnVieSAoaW5saW5lKSI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVy
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5IChpbmxpbmUpIl9zOyB9
CiAgICAgYm9vbCBjcmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIH07CiAKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNSdWJ5QmxvY2soKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJSdWJ5IChibG9jaykiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUnVieSAoYmxvY2spIl9zOyB9CiAg
ICAgYm9vbCBjcmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSdWJ5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgK
aW5kZXggMTIyMTY3ZmFjOTk1MTkzMWNiMTg5OTMyMzIzODU2MTQwZWRkYjI3MS4uNGRlNDg4OWQ4
MWE3YjU0MDViYmUwNTgzYzQ4OGY5N2QxYTI3MzRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJ1YnlCYXNlLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIFJlbmRl
clJ1YnlCYXNlKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVy
UnVieUJhc2UoKTsKICAgICAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1YnlCYXNlIChhbm9ueW1vdXMpIjsgfQorICAgIEFTQ0lJ
TGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1YnlC
YXNlIChhbm9ueW1vdXMpIl9zOyB9CiAgICAgCiAgICAgUmVuZGVyUnVieVJ1biogcnVieVJ1bigp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaAppbmRleCAz
NTg1MTk3OGMyNjhiYWIwOGY3MmMyNDRmOGZkYTUzZjRkMDM0ZWMzLi4zY2UxNjYwNmZjOWJiN2Vk
NTMyOGRkOWU4MTBlOGZhZjE0ZjM1YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUnVieVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSdWJ5UnVuLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJv
b2wgaXNSdWJ5UnVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUnVieVJ1
biAoYW5vbnltb3VzKSI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5UnVuIChhbm9ueW1vdXMpIl9zOyB9CiAgICAgYm9v
bCBjcmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICAgICBib29sIGNhbkRyb3BBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnlUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRl
eHQuaAppbmRleCA2MmM1ZWU2ZWJiNDZmNTEwZWExYjI3ODNiMGI4YTFjOGE1MTc3M2QwLi4wODY4
YjgwMjFiMzE4NGU1YWU1ZDI5ZGJkMTVlMzA1ZDg0ZGRmYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBjYW5CcmVha0JlZm9yZShjb25zdCBMYXp5TGluZUJyZWFrSXRlcmF0b3ImKSBjb25zdDsK
ICAgIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclJ1YnlUZXh0IjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJO
YW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1YnlUZXh0Il9zOyB9CiAgICAg
Ym9vbCBpc1J1YnlUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
Ym9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCmluZGV4IDdkZmM0YjNhNWMyNjZmMmEzY2E2
NGQ1YzQ3N2FhYWMwMjdlMmJjYmYuLmEzZjhlN2U5NmM2MmI5MTBjNWYxZmE5NTU5MDZjNTc1MmJh
NDhiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJQYXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBh
cnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB+UmVuZGVy
U2Nyb2xsYmFyUGFydCgpOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTY3JvbGxiYXJQYXJ0IjsgfQorICAgIEFTQ0lJTGl0ZXJh
bCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNjcm9sbGJhclBh
cnQiX3M7IH0KICAgICAKICAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2xpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmgK
aW5kZXggM2JhMDUxMDU3ODhmMWZjNzkwYjZjNDEzZTUyNzM0OTM3ZDMyYTY3NS4uN2JmYmEwZmI2
Zjc4OGY4MDdkODVkMmZjZmY3MjY1YjkzZmQ3ZWZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbGlkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIHZh
bHVlUmF0aW8oKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNsaWRlciI7IH0KKyAgICBBU0NJSUxp
dGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTbGlkZXIi
X3M7IH0KICAgICBib29sIGlzU2xpZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25P
bkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmgKaW5kZXggYzVlMmI1OTNmMjc2ZDhjMDBlNmU4NzMwNzBmMTIxMDdlYjkwZjY1
NC4uYzFiMWRjOWFmN2NjZDZmOGY5MDA5ZGNhNTNkN2QyYjJkMGM0ZWZhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKQEAgLTI4MCw3ICsyODAsNyBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyVGFibGU+IGNyZWF0ZVRhYmxl
V2l0aFN0eWxlKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKIAotICAgIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyVGFibGUiOyB9
CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyVGFibGUiX3M7IH0KIAogICAgIGJvb2wgaXNUYWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5o
CmluZGV4IDM4NGJmODhlYWViMWFkYTk0YTIwODYxZGUxZWQ3ODYxNWZmZGNhNDIuLjFmOGQ5OWEy
ZDc5Njc3YzljYTJjNDYwMmVhMWE4ZDA1MTAxZDAzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTE0Miw3ICsxNDIsNyBAQCBwcml2YXRlOgogCiAg
ICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJUYWJsZUNlbGw+IGNyZWF0ZVRhYmxlQ2VsbFdpdGhT
dHlsZShEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJik7CiAKLSAgICBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKGlzQW5vbnltb3VzKCkgfHwgaXNQ
c2V1ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlQ2VsbCAoYW5vbnltb3VzKSIgOiAiUmVuZGVy
VGFibGVDZWxsIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gKGlzQW5vbnltb3VzKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJlbmRl
clRhYmxlQ2VsbCAoYW5vbnltb3VzKSJfcyA6ICJSZW5kZXJUYWJsZUNlbGwiX3M7IH0KIAogICAg
IGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKaW5kZXggYTlkMWNhODY1MWRi
ODVjNzBlOTQyNWMzMjhhOWIwNDdlYTk5NmE1MC4uOGU3YzFmYjljYTJkMjYxZDBlNjRiYmU3NDUz
NmRmOGEyZTc0MTAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ29sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29s
LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQo
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclRhYmxlQ29sIjsgfQorICAgIEFTQ0lJTGl0ZXJh
bCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclRhYmxlQ29sIl9z
OyB9CiAgICAgYm9vbCBpc1JlbmRlclRhYmxlQ29sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlk
ZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlUm93LmgKaW5kZXggYmE3ZWMwOWU3MWZiODk2ZTIwYmIxMWZhM2YyM2VhZWMwNzg0
NjU3NS4uOTQyN2Y2YWNmNzE5NWE5ZWIyNmNhNGYwMDQwMjM4MGY4YzQ0Yjc3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlclRhYmxlUm93PiBjcmVh
dGVUYWJsZVJvd1dpdGhTdHlsZShEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJik7CiAKLSAg
ICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKGlzQW5v
bnltb3VzKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlUm93IChhbm9ueW1v
dXMpIiA6ICJSZW5kZXJUYWJsZVJvdyI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIChpc0Fub255bW91cygpIHx8IGlzUHNldWRvRWxlbWVu
dCgpKSA/ICJSZW5kZXJUYWJsZVJvdyAoYW5vbnltb3VzKSJfcyA6ICJSZW5kZXJUYWJsZVJvdyJf
czsgfQogCiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdm9pZCB3aWxsQmVSZW1vdmVkRnJvbVRyZWUoSXNJbnRlcm5hbE1vdmUp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5oCmluZGV4IDg1Y2IxMmRiOTNiYjE5MmFmYjY1NmIxNjE0ZDI5ZjJkZDYzZWUxNGEuLjU0MzM0
NzQ1YjRlOGE2OWMyODcyMDBjZjMwY2QyODczMjg0ZGE4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2
YXRlOgogICAgICAgICBEb05vdEluY2x1ZGVBbGxJbnRlcnNlY3RpbmdDZWxscwogICAgIH07CiAK
LSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKGlz
QW5vbnltb3VzKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlU2VjdGlvbiAo
YW5vbnltb3VzKSIgOiAiUmVuZGVyVGFibGVTZWN0aW9uIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKGlzQW5vbnltb3VzKCkgfHwgaXNQ
c2V1ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlU2VjdGlvbiAoYW5vbnltb3VzKSJfcyA6ICJS
ZW5kZXJUYWJsZVNlY3Rpb24iX3M7IH0KIAogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKaW5kZXggNjNjMGQ5NjM1NWIxYjVkNjhjNzc1Yjg0ZmQ1MjhjYjllMzE5ZTNk
OS4uZmJmZmQ5MmMyM2U2YTNjNmE0ZjBlY2QwZWI5MDZhNWE2YmNjZWJlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMjIxLDkgKzIyMSw5IEBAIFJlbmRlclRl
eHQ6On5SZW5kZXJUZXh0KCkKICAgICBBU1NFUlQoIW9yaWdpbmFsVGV4dE1hcCgpLmNvbnRhaW5z
KHRoaXMpKTsKIH0KIAotY29uc3QgY2hhciogUmVuZGVyVGV4dDo6cmVuZGVyTmFtZSgpIGNvbnN0
CitBU0NJSUxpdGVyYWwgUmVuZGVyVGV4dDo6cmVuZGVyTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuICJSZW5kZXJUZXh0IjsKKyAgICByZXR1cm4gIlJlbmRlclRleHQiX3M7CiB9CiAKIFRleHQq
IFJlbmRlclRleHQ6OnRleHROb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5oCmluZGV4IDkyNDQ2NzIxNjAyZmUyOWQ3ZWU5N2FhNzNmOTBjYTM4YzU5MmM4ODYuLjE2
MmQxNTkyZjRhNzhiYTNmMzQ5NzNjY2U4MzVhNWY4ZTkyODgxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuaApAQCAtMTk2LDcgKzE5Niw3IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgUmVuZGVyVGV4dChOb2RlJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVNDSUlMaXRlcmFsIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2wuaAppbmRleCAyZTkwNTM0ZmZkOGRhODNiN2RjNTRkNDZmYTdkZWYx
NjMxOWJiYjQzLi5mYWM5NDAyODIwNzAyOTg5YmY3MmVkMjQyNTY3OGJmYjgyYmQ2NTIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaApAQCAtNzAsNyAr
NzAsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0g
ZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJUZXh0Q29udHJvbCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJUZXh0Q29udHJvbCJfczsgfQogICAg
IGJvb2wgaXNUZXh0Q29udHJvbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2
b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxX
aWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggMjZjZDMyYTU0ZDY3
MmVkNjAzMDU4MWI5MjZjZDRlNmY0MGNmMzE2NC4uNjc0NDBiODgxZDVlM2JiOTc3NDFkNGJhMTZk
NjE0YmRhODhiNjk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVl
QXNUZXh0LmNwcApAQCAtMTMwLDkgKzEzMCw5IEBAIHN0YXRpYyB2b2lkIHByaW50Qm9yZGVyU3R5
bGUoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEJvcmRlclN0eWxlIGJvcmRlclN0eWxlKQogc3RhdGlj
IFN0cmluZyBnZXRUYWdOYW1lKE5vZGUqIG4pCiB7CiAgICAgaWYgKG4tPmlzRG9jdW1lbnROb2Rl
KCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuICIiX3M7CiAgICAgaWYgKG4t
Pm5vZGVUeXBlKCkgPT0gTm9kZTo6Q09NTUVOVF9OT0RFKQotICAgICAgICByZXR1cm4gIkNPTU1F
TlQiOworICAgICAgICByZXR1cm4gIkNPTU1FTlQiX3M7CiAgICAgcmV0dXJuIG4tPm5vZGVOYW1l
KCk7CiB9CiAKQEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzTm9uRW1w
dHlTaWJsaW5nKGNvbnN0IFJlbmRlcklubGluZSYgaW5saW5lUmVuZGVyZXIpCiAKIHZvaWQgUmVu
ZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJl
bmRlck9iamVjdCYgbywgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+IGJlaGF2aW9yKQogewot
ICAgIHRzIDw8IG8ucmVuZGVyTmFtZSgpOworICAgIHRzIDw8IG8ucmVuZGVyTmFtZSgpLmNoYXJh
Y3RlcnMoKTsKIAogICAgIGlmIChiZWhhdmlvci5jb250YWlucyhSZW5kZXJBc1RleHRGbGFnOjpT
aG93QWRkcmVzc2VzKSkKICAgICAgICAgdHMgPDwgIiAiIDw8ICZvOwpAQCAtNDUxLDEzICs0NTEs
MTMgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdChUZXh0U3RyZWFt
JiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgc3dpdGNoICh0ZXh0WzBdKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgYnVs
bGV0OgotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9ICJidWxsZXQiOworICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dCA9ICJidWxsZXQiX3M7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBibGFja1NxdWFyZToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRleHQgPSAiYmxhY2sgc3F1YXJlIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRleHQgPSAiYmxhY2sgc3F1YXJlIl9zOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ugd2hpdGVCdWxsZXQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB0ZXh0ID0gIndoaXRlIGJ1bGxldCI7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXh0ID0gIndoaXRlIGJ1bGxldCJfczsKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAg
ICAgdGV4dCA9IHF1b3RlQW5kRXNjYXBlTm9uUHJpbnRhYmxlcyh0ZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKaW5kZXggYjRiYTFlNTlkYzEzYzc3NzExZGY3Zjg0MWU2
ZGUyOTQ3MGZlODJiMC4uZDRjNjQ0NDk3OWEzZGIwZmJmOGY2MTcyMGVhZWVmZGNjYzJhYjRkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3Qg
SW50UmVjdCopIGZpbmFsOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJSZW5kZXJWaWRlbyI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJWaWRlbyJfczsgfQogCiAgICAgYm9vbCBy
ZXF1aXJlc0xheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNW
aWRlbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5oCmluZGV4IDE3MTY3MzM4ZjZjMmQwYmM0ZjhkNGUyZTY5NTc5NGI1NjBjMTgw
M2YuLmExYjRlNWM3NDcyNTFmZTk5YTI5ZjE3OTZlMGQ1NGQ0YTk2ZTQyZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAg
UmVuZGVyVmlldyhEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRl
clZpZXcoKTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyVmlldyI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJWaWV3Il9zOyB9CiAKICAgICBib29sIHJlcXVp
cmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAppbmRleCAy
ZmM4YTE2YjEzYjAwNGU5YTFkZTVjZTRkOTc3ZjQyMjZjZGExM2FhLi42YTkzYzBmNWU0MjVhMzcy
ZjBhMDk3YzM3YzQ2MjRmZmNmMTU3ODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCkBAIC05MCw3ICs5MCw3IEBAIHByb3Rl
Y3RlZDoKIAogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MQmxvY2soKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxCbG9jayI7IH0KKyAgICBBU0NJSUxpdGVy
YWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxCbG9j
ayJfczsgfQogICAgIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIGJvb2wgY2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgbGF5b3V0SXRlbXMoYm9vbCByZWxheW91dENoaWxk
cmVuKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBp
c1JlbmRlck1hdGhNTFRhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1M
VGFibGUiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiUmVuZGVyTWF0aE1MVGFibGUiX3M7IH0KICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAKICAgICBSZWY8TWF0aE1MU3R5
bGU+IG1fbWF0aE1MU3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaAppbmRleCBiOWRjMWNkNzI2MjRkMzA4N2JmMWM3YWE0
ZTQ4ODJlZDJhOTNlOWUwLi5hYjdmNzM0ZjAzODg3ZmEzNGFkYTFiYTc5MmI3Zjc5ZWI2Nzk3NDY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZlbmNlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MRmVuY2VkLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJv
b2wgaXNSZW5kZXJNYXRoTUxGZW5jZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJN
YXRoTUxGZW5jZWQiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiUmVuZGVyTWF0aE1MRmVuY2VkIl9zOyB9CiAKICAgICBTdHJpbmcgbV9vcGVu
OwogICAgIFN0cmluZyBtX2Nsb3NlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCmluZGV4IGY4NzU2MjdmNDhhMjU1ZGQx
NzFjZTkxMzg2ODNhYTYxNzlkMTkyNzAuLjEwNGIyN2E3M2U5MWIyMTJjZTQwNGVkMWQxZTA3MTE2
MWRjMWQxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRnJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxGcmFjdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gIlJlbmRlck1hdGhNTEZyYWN0aW9uIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTEZyYWN0aW9uIl9zOyB9CiAK
ICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9p
ZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2lj
YWxIZWlnaHQgPSAwX2x1KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgKaW5kZXggZmJkNzlmZDRlM2RmMDM3MTRmMDFkZTBj
YmU2YTE2ZWFmMjAwMzUwMS4uM2U4YTU3MzFjM2E4ZjEwODE1YTZkZTdmMGEwYzkxZTAzYzRkMzNj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxNYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxNYXRoLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wg
aXNSZW5kZXJNYXRoTUxNYXRoKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1M
TWF0aCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJSZW5kZXJNYXRoTUxNYXRoIl9zOyB9CiAKICAgICB2b2lkIGNlbnRlckNoaWxkcmVuKExh
eW91dFVuaXQgY29udGVudFdpZHRoKTsKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlv
dXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBfbHUpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxN
ZW5jbG9zZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxN
ZW5jbG9zZS5oCmluZGV4IGQxZGU3NTRkZTI1ZGY1MDUwOTUwN2M5MzFiMWEwNjk5NWM4YjJlNTku
LmJhZGQzNTg5MTc3NmRlYTVkMGM5ZWQ2MTcwNTZiNTI0OGE2Zjg3NmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmgK
QEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIFJlbmRlck1hdGhNTE1lbmNsb3NlKE1hdGhN
TE1lbmNsb3NlRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCiBwcml2YXRlOgotICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MTWVu
Y2xvc2UiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiUmVuZGVyTWF0aE1MTWVuY2xvc2UiX3M7IH0KICAgICB2b2lkIGNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwX2x1KSBmaW5hbDsK
ICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9w
ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9w
ZXJhdG9yLmgKaW5kZXggNTIxODFiNDZkMGNkYmU3YjQ1Y2ZkN2Y5ZjMxZmJhYTI3MTJlOWQyNS4u
NjlmMDUwOTc4MzkwMTM1NmQ1ZGJjMDk1NTA4ODVmZWZiNmI4OWU3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaApA
QCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxh
eW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgZmluYWw7
CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwog
Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGlzQW5v
bnltb3VzKCkgPyAiUmVuZGVyTWF0aE1MT3BlcmF0b3IgKGFub255bW91cykiIDogIlJlbmRlck1h
dGhNTE9wZXJhdG9yIjsgfQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJNYXRoTUxPcGVyYXRvciAoYW5vbnlt
b3VzKSJfcyA6ICJSZW5kZXJNYXRoTUxPcGVyYXRvciJfczsgfQogICAgIHZvaWQgcGFpbnRDaGls
ZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0IExheW91dFBvaW50JiwgUGFpbnRJbmZvJiBm
b3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpIGZpbmFsOwogICAgIGJvb2wgaXNSZW5kZXJNYXRo
TUxPcGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzSW52
aXNpYmxlT3BlcmF0b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oCmluZGV4IDc0ODg1ZjM0YTNhNmEwNWZhOTdj
OTkzOWQzZWE1Yzg0YzZhMWE3NzMuLjUxNmI2MDMxMDU5NzUwNGY3ZjExNGYzMjg5YjQ2ZmIzMjBj
OTA1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MUGFkZGVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxQYWRkZWQuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTWF0
aE1MUGFkZGVkKE1hdGhNTFBhZGRlZEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAogcHJpdmF0
ZToKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJl
bmRlck1hdGhNTFBhZGRlZCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxQYWRkZWQiX3M7IH0KICAgICBib29sIGlzUmVu
ZGVyTWF0aE1MUGFkZGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9p
ZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAppbmRleCA5MGNhZTBh
MjVlNDI4NTU0MGU4NWJkNzQ0MjU3ZDJmYjMwOTdlNjRkLi5hMjNjZmIwNmZkNGQ2NmY3YTgwZjkx
YjE2YzJmYTlhMjRkODk2YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaApAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogICAg
IFJlbmRlckJveCYgZ2V0QmFzZSgpIGNvbnN0OwogICAgIFJlbmRlckJveCYgZ2V0SW5kZXgoKSBj
b25zdDsKICAgICBib29sIGlzUmVuZGVyTWF0aE1MUm9vdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gIlJlbmRlck1hdGhNTFJvb3QiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MUm9vdCJfczsgfQogICAgIE1hdGhNTFJv
b3RFbGVtZW50JiBlbGVtZW50KCkgY29uc3Q7CiAgICAgUm9vdFR5cGUgcm9vdFR5cGUoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
Um93LmgKaW5kZXggMzdiYjYwYWE3Njc1MmRlMTI2NDA2MTk5ODE0OTc2ODMwMWU4OTUyNi4uODIy
NWQ3NTcxNjYwMWNjZmVhMTc4OTQ1MTA5YmNkOGQzNzRkMjdiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCkBAIC01MSw3ICs1MSw3
IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MUm93KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MUm93IjsgfQorICAgIEFTQ0lJ
TGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhN
TFJvdyJfczsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAppbmRleCBh
ZGI5MmZlNDg0YmYyMGIwZWRjZmE4YmRiZDE1YzBhMDk5ODQ1MzIzLi5jZDM5NDMxOWU5YTQ0ODgz
Mzc5ZmE0YjVmOTZlYzdjZmY1ZmMxNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaApAQCAtNDMsNyArNDMsNyBAQCBw
dWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBib29sIGlzUmVuZGVyTWF0aE1MU2NyaXB0cygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTFNjcmlwdHMiOyB9CisgICAg
QVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
TWF0aE1MU2NyaXB0cyJfczsgfQogICAgIE1hdGhNTFNjcmlwdHNFbGVtZW50OjpTY3JpcHRUeXBl
IHNjcmlwdFR5cGUoKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRy
ZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwX2x1KSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaApp
bmRleCAxOTU5Mjg2NDlhNTE5YTA5ZjEyZmNiZDZlODVjNTRjYWM1MTY1NTlmLi4xMTM1M2EzMjMz
ODJlNzU3OGJiOGY4ZDEzMDRiMmM2YzUwNTgxNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCkBAIC0zOSw3ICszOSw3IEBA
IHB1YmxpYzoKICAgICBNYXRoTUxTcGFjZUVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxNYXRoTUxTcGFjZUVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkp
OyB9CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJSZW5kZXJNYXRoTUxTcGFjZSI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVy
TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxTcGFjZSJfczsgfQogICAg
IGJvb2wgaXNSZW5kZXJNYXRoTUxTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
ICAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRl
clN0eWxlJikgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGNvbXB1dGVQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKaW5kZXggZjgzOWVlYzAzNTEyOTVk
ODZjMTQyNjI0MzIwNDI4MDcyODZiNzlhMi4uM2VmNzc1NjUyN2Y2N2Q5ZWMyOWIyMjAwY2Q4ZThi
NDc1YmRhOGIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MVG9rZW4uaApAQCAtNTUsNyArNTUsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZh
dGU6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFRva2VuKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyTWF0aE1MVG9rZW4iOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MVG9rZW4iX3M7IH0KICAgICBi
b29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxl
JikgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfTsKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsK
ICAgICB2b2lkIHVwZGF0ZU1hdGhWYXJpYW50R2x5cGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCmluZGV4IDNj
YWU2YzJjZjdiY2EwYjNmYjVkMDc4YzA2ODllZjE1ODE1YTg3MWYuLmFiNDJiYzZjNTAzYjVkYzM0
MzM3NjBiZThlMDUzY2Q3NThjN2Q0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaApAQCAtNDIsNyArNDIsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxTY3JpcHRzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzUmVuZGVyTWF0aE1MVW5kZXJP
dmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MVW5kZXJPdmVyIjsgfQor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRl
ck1hdGhNTFVuZGVyT3ZlciJfczsgfQogICAgIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQmIGVsZW1l
bnQoKSBjb25zdDsKIAogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVP
dXRzaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0
c2lkZUluZm8uY3BwCmluZGV4IGMxYjhjNGEzMzJiOTJlZjY4OTBjZmZlNmQyNjc2NmZiOWFmMmQ4
NmUuLjlmNmFjMDNjNzM5OGQxNDYzNmZiNzU1NDdhMjRkYzUyYzEwYjAxMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcApA
QCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja1NoYXBlSW1hZ2VPcmln
aW4oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHlsZUltYWdlJiBzCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgY29uc3QgVVJMJiB1cmwgPSBjYWNoZWRJbWFnZS51cmwoKTsKLSAgICBT
dHJpbmcgdXJsU3RyaW5nID0gdXJsLmlzTnVsbCgpID8gIicnIiA6IHVybC5zdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgoKTsKKyAgICBTdHJpbmcgdXJsU3RyaW5nID0gdXJsLmlzTnVsbCgp
ID8gIicnIl9zIDogdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpOwogICAgIGRv
Y3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCAiVW5zYWZlIGF0dGVtcHQgdG8gbG9hZCBVUkwgIiArIHVybFN0cmluZyAr
ICIuIik7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCmluZGV4IDNkYmNjODIz
NDUxYmUzZDg1Mjc3MDZhZWNkZWVlZjk5OWNjNTRhMWEuLmVhM2VlOTA2YmY0Y2M0OWFmNTZmN2Fh
NzdkNjI0OGFkNDkxYTlhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCkBAIC0zODksMTAgKzM4OSwxMCBA
QCBzdGF0aWMgdm9pZCBhZGp1c3RHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlckJv
eCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpegogCiAgICAgICAgIGlmIChpbml0aWFsUG9zaXRpb24u
aXNBdXRvKCkpIHsKICAgICAgICAgICAgIC8vIFNldCBpbml0aWFsIHBvc2l0aW9uIHRvIHNwYW4g
PGxpbmUgbmFtZXMgLSAxPgotICAgICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNldFNwYW5Qb3Np
dGlvbihzdGQ6Om1heCgxLCBsaW5lQ291bnQgLSAxKSwgIiIpOworICAgICAgICAgICAgaW5pdGlh
bFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlvbihzdGQ6Om1heCgxLCBsaW5lQ291bnQgLSAxKSwgZW1w
dHlTdHJpbmcoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBTZXQgZmluYWwg
cG9zaXRpb24gdG8gc3BhbiA8bGluZSBuYW1lcyAtIDE+Ci0gICAgICAgICAgICBmaW5hbFBvc2l0
aW9uLnNldFNwYW5Qb3NpdGlvbihzdGQ6Om1heCgxLCBsaW5lQ291bnQgLSAxKSwgIiIpOworICAg
ICAgICAgICAgZmluYWxQb3NpdGlvbi5zZXRTcGFuUG9zaXRpb24oc3RkOjptYXgoMSwgbGluZUNv
dW50IC0gMSksIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdDb250YWluZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVy
LmgKaW5kZXggYTdhZTg1OWViZjdmY2UwNzhmNTFkNWEzZWVlNjY2N2FkM2MxMGUyZi4uYzYzNzBm
MmUwYWZiZDczODUzMzQwNjg2NjQwZjE5YjY1Njc4M2QzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdDb250YWluZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR0NvbnRhaW5lci5oCkBAIC00
Miw3ICs0Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBMZWdhY3lSZW5kZXJTVkdDb250
YWluZXIoU1ZHRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCi0gICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdDb250YWluZXIiOyB9
CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyU1ZHQ29udGFpbmVyIl9zOyB9CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1JlY3QuaAppbmRleCA4OTdjOTA2ZGFiZjlmZjlkNDY1
NDFhN2IxNjhjMmRkYzFhZTM2NjYzLi44NjdiNmMxNDNkMTViNTA4ODRmMzdmNzhlOWI5MDc1ZWEz
YTNmMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJl
bmRlclNWR1JlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJl
bmRlclNWR1JlY3QuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZv
aWQgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1JlY3QiOyB9Cisg
ICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyU1ZHUmVjdCJfczsgfQogCiAgICAgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV91c2VQ
YXRoRmFsbGJhY2sgPyBMZWdhY3lSZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgpIDogbV9maWxsQm91
bmRpbmdCb3guaXNFbXB0eSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oCmluZGV4IGE2NGI3YmE0Y2JmMGVhNzM1OTg3MTk3NzNk
ZTRiNGQzZDNiYjliZTYuLjg2NGE5MGQ2ZmY0ZTk2MGY3ZjlkY2NlYjY3NDgzMTY4YTZkMzcwZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZH
Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZH
Um9vdC5oCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0xlZ2FjeVNWR1Jv
b3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICAvLyBJbnRlbnRpYWxs
eSBsZWZ0ICdSZW5kZXJTVkdSb290JyBpbnN0ZWFkIG9mICdMZWdhY3lSZW5kZXJTVkdSb290Jywg
dG8gYXZvaWQgYnJlYWtpbmcgbGF5b3V0IHRlc3RzLgotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUm9vdCI7IH0KKyAgICBBU0NJ
SUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdS
b290Il9zOyB9CiAKICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChT
aG91bGRDb21wdXRlUHJlZmVycmVkICA9IENvbXB1dGVBY3R1YWwpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodChzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0aCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Qgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJl
bmRlclNWR1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRl
clNWR1NoYXBlLmgKaW5kZXggNWQwY2ExNGE4ZWNhOGUzZGRjM2ZmMmNkNjZmZTk0ZjFiZTZjY2Zi
OC4uZDg4YWZlNzA1MDVhNTY1ZDQyNWUxYWIzZGY5YzMxN2NlNDRkOTg3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdTaGFwZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHU2hhcGUuaApAQCAt
MTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzTGVnYWN5U1ZHU2hhcGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHU2hhcGUiOyB9CisgICAgQVNDSUlM
aXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHU2hh
cGUiX3M7IH0KIAogICAgIHZvaWQgbGF5b3V0KCkgZmluYWw7CiAgICAgdm9pZCBwYWludChQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKaW5kZXggOTc1YThmNjJjZDAzYzMy
MTNhYmI4NTRjZjc0ZDE2NjVkOWM5NDQ1Yy4uMGFkMGI4MzQ2NWY5OWMzMWU5NWFhM2M3OTc1OWFl
Mzc3OGZiMzAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0NvbnRhaW5lci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogCi0gICAg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJT
VkdDb250YWluZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHQ29udGFpbmVyIl9zOyB9CiAgICAgYm9vbCBjYW5IYXZl
Q2hpbGRyZW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHRWxsaXBzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxp
cHNlLmgKaW5kZXggODg1MzBkYzFlN2FkNGJkNDUwM2E1YzVjNjYxNjg4ZTI0MmUyZmM0My4uOTdl
YTYyN2MyYWM4NzUwN2I0YmFmYzFiOWNkN2U5NzE4MDJiNGQ1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmgKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlclNWR0VsbGlwc2UoKTsKIAogcHJpdmF0ZToKLSAg
ICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRl
clNWR0VsbGlwc2UiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHRWxsaXBzZSJfczsgfQogCiAgICAgdm9pZCB1cGRhdGVT
aGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBMZWdhY3lSZW5kZXJTVkdTaGFwZTo6
aXNFbXB0eSgpIDogbV9maWxsQm91bmRpbmdCb3guaXNFbXB0eSgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCmluZGV4
IDg0YjE1ZDQ2NzJhYTA5NTQyM2M3NmVlMTIyZTUyYzlmNWNhNWIwYTUuLmVkYjFmOTcwZGIxYmM4
OWMzZDZmM2Q4MmYxOGQzNWYyMzkzNDFjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCkBAIC01Myw3ICs1Myw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1NWR0ZvcmVpZ25PYmplY3QoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBncmFwaGljc0VsZW1lbnQoKSBjb25z
dCA9IGRlbGV0ZTsKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlclNWR0ZvcmVpZ25PYmplY3QiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dCJfczsgfQogCiAgICAgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgoKSBvdmVycmlkZTsKICAgICBM
b2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5p
dCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVu
dFN0b3AuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRT
dG9wLmgKaW5kZXggMjQ2OGRjNzBhNDZjOTM3NjIxNzU2MWE5MDM1NWQ5YTE5ODhmZGVhZS4uOTgy
ZWVlM2MzMjk4MWFlNWM3NGVlZDhjNDY4ZThmYzFiMDdjOTA1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCkBAIC01Miw3
ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBIaXRUZXN0QWN0
aW9uKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCBpc1NWR0dyYWRpZW50
U3RvcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0dyYWRpZW50U3Rv
cCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJSZW5kZXJTVkdHcmFkaWVudFN0b3AiX3M7IH0KIAogICAgIGJvb2wgY2FuSGF2ZUNoaWxk
cmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaApp
bmRleCA2N2I5YTQwNDEyNDBhMDBmNTdkOGVlMTgxMmQyYjYzNWRkMWRkMDg0Li4wZDgxYmYzNzk2
N2VlZGY4YzJjNjUxOGJkYzgyNDc0NDZlNjUxNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKQEAgLTM3LDcg
KzM3LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNTVkdIaWRkZW5Db250
YWluZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdIaWRkZW5Db250YWlu
ZXIiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIl9zOyB9CiAKICAgICB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAppbmRleCA3ZDEwYTIyMTEwYmUxODVmMWE5
MWQyM2U4ZWQwNmJlZWRjYWJjMDdiLi4xMTBkYzU0YTk4ZjY3NDg2YjQ0ODgyZmFmMzg0OWZiOWQz
YTcyZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFn
ZS5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGVsZW1lbnQoKSBjb25z
dCA9IGRlbGV0ZTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHSW1hZ2UiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHSW1hZ2UiX3M7IH0KICAgICBi
b29sIGlzU1ZHSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9v
bCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAppbmRleCA1
YzVmNjdkNmZmYWZlYTExYTQ0NGQzMDVlYmVmNThkMDJjMDUwMGIyLi4yMDAwMTQ3NzVjZWU4MjVk
MWRhZmJhNGQ5NDBlMmI4ZDAyMzI3NTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHSW5saW5lIjsg
fQorICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlclNWR0lubGluZSJfczsgfQogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1NWR0lubGluZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuaAppbmRleCBlMDNiNzQ3YjA3OWQ5YzNjOTgzYjg1MzliZWVl
MTUyMTY1NTdkNmMyLi40NTllMzQ4Y2ExZTczYzFkMjdkZjAzZDIxZTM4NGM0Mjg0MTA2NDMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRl
eHQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgU1ZHSW5saW5lVGV4dEJveCogZmly
c3RUZXh0Qm94KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdJbmxpbmVUZXh0IjsgfQorICAg
IEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRl
clNWR0lubGluZVRleHQiX3M7IH0KIAogICAgIFN0cmluZyBvcmlnaW5hbFRleHQoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2b2lkIHNldFJlbmRlcmVkVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0
aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgKaW5kZXgg
NmFjMmFkOWI5ZTlkZDI5NTlhZWZjNGY3OWFjOThlMTYzODEwYTBlOC4uOGUwMzVjZmQxNGNhZDZm
Zjg0M2Q3Mjk0ZjdkN2JlYWJiODk1ZjdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdQYXRoLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIGJvb2wgaXNTVkdQYXRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyU1ZHUGF0aCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJSZW5kZXJTVkdQYXRoIl9zOyB9CiAKICAgICB2b2lkIHVwZGF0ZVNoYXBl
RnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVXBkYXRlZFN0
cm9rZUJvdW5kaW5nQm94KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVjdC5oCmluZGV4IGRhZTU4NGJjOWIyOTM4OWM4ZjUwYjVlMTA3ZTZiY2Q0NjFi
OWFjZjUuLjc1ZDdkZWVhYjE1ZmFkYmNmMzZkNzQyODhkMzhjYWIzMDVhYmEzZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oCkBAIC00Niw3ICs0Niw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBncmFwaGljc0VsZW1lbnQoKSBjb25zdCA9
IGRlbGV0ZTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyU1ZHUmVjdCI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZWN0Il9zOyB9CiAKICAgICB2b2lk
IHVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3VzZVBhdGhGYWxsYmFjayA/IFJlbmRlclNWR1NoYXBl
Ojppc0VtcHR5KCkgOiBtX2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5o
CmluZGV4IDhmY2Q5YjRlYzVmYmUxZGIxNmRkZjRiY2U0Nzg0ZjY2MmFmM2QyYmQuLmIwOTAzMWU1
NjBiMzY1MTdiYjRiZGVkMTY4Zjk3YTYxZDBlOTJlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaApAQCAtODIs
NyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7
CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciI7IH0KKyAgICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIiX3M7
IH0KICAgICBib29sIGlzU1ZHUmVzb3VyY2VDbGlwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBwYXRoT25seUNsaXBwaW5nKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGVmZmVjdGl2
ZVpvb20pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IGNmM2Y2YmE0OTA3ZmFiMmVmMjkwYzQxY2I0NTY3NTdk
MDI5MzNiMWQuLjhhMDcyODg2ZmE5NmUyZDg3ZTI4Y2NmOGIzNDY5NTk4NDY4YjViMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVs
ZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIiOyB9CisgICAg
QVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIiX3M7IH0KICAgICBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBIYXNoTWFwPFJlbmRlck9iamVj
dCosIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJEYXRhPj4gbV9yZW5kZXJlckZpbHRlckRhdGFNYXA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKaW5kZXggMTYyNDgzNzcxOTRlYzI0MjgwNWU1
ZDQzY2Y5YTNhYTIyMjAwZjQwYi4uN2MxMmFiNWEyZTU5NTNmYTJiODFiZGUxZWQyMjlhYzM0Mjc1
Y2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaApAQCAtNDEsNyArNDEsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUi
OyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUiX3M7IH0KIAogICAgIGlubGluZSB2
b2lkIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgKaW5kZXggZWM0YWM2YjlkMjE4
OTg1YmY5ZjQ3MzY0ZWVkNzg2MzBjNjFiN2Q2ZS4uOTdkMWM1MjY5NDE2MzI4ZjQ0YjE1NjYwZGUz
OTJkNWM3YWE1OTc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZ3JhZGllbnRFbGVtZW50KCkgY29uc3QgPSBkZWxl
dGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IlJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJl
bmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJH
cmFkaWVudCJfczsgfQogCiAgICAgTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzIG1fYXR0cmlidXRl
czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFya2VyLmgKaW5kZXggZWZlODBlOTVjOTFjODFkOThjNmE0MjViOTdiMTJjMDQ4
MWVlZWRiMS4uZTRmNmJmMjAyOWIwN2Q1NzkxNTQ0MzAyZmM1ZDg0ODQ5MTM3ZmEyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VN
YXJrZXIuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgZWxl
bWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciI7IH0KKyAgICBB
U0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJT
VkdSZXNvdXJjZU1hcmtlciJfczsgfQogCiAgICAgLy8gR2VuZXJhdGVzIGEgdHJhbnNmb3JtYXRp
b24gbWF0cml4IHVzYWJsZSB0byByZW5kZXIgbWFya2VyIGNvbnRlbnQuIEhhbmRsZXMgc2NhbGlu
ZyB0aGUgbWFya2VyIGNvbnRlbnQKICAgICAvLyBhY29yZGluZyB0byBTVkdzIG1hcmtlclVuaXRz
PSJzdHJva2VXaWR0aCIgY29uY2VwdCwgd2hlbiBhIHN0cm9rZVdpZHRoIHZhbHVlICE9IC0xIGlz
IHBhc3NlZCBpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRleCBmMTMzZjc1MTE5NjhhYTE0MWI0YjVlZTE2NzA1
MWFjOTA4ODUxMGM0Li42ZWIxZDU0OTcyM2RlZTliNGU2Njc3NzY4OGQ4OGYyM2Y2ZGE4ZTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9p
ZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlTWFza2VyIjsgfQor
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR1Jlc291cmNlTWFza2VyIl9zOyB9CiAKICAgICBib29sIGRyYXdDb250ZW50SW50b01h
c2tJbWFnZShNYXNrZXJEYXRhKiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVy
T2JqZWN0Kik7CiAgICAgdm9pZCBjYWxjdWxhdGVNYXNrQ29udGVudFJlcGFpbnRSZWN0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
UGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm4uaAppbmRleCBmNmNmMjI2MGZjM2YyNjY1NWUwZDFmZjI0ZmFjMzhhYTg3ZWI2NThk
Li41NzVjZTY3NWU4NGJhZmIwMDRjODEwN2NmNTZiZGY2NTNhNzVkYmI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVu
dCgpIGNvbnN0ID0gZGVsZXRlOwotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuIjsgfQorICAgIEFTQ0lJ
TGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jl
c291cmNlUGF0dGVybiJfczsgfQogCiAgICAgYm9vbCBidWlsZFRpbGVJbWFnZVRyYW5zZm9ybShS
ZW5kZXJFbGVtZW50JiwgY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmLCBjb25zdCBTVkdQYXR0ZXJu
RWxlbWVudCYsIEZsb2F0UmVjdCYgcGF0dGVybkJvdW5kYXJpZXMsIEFmZmluZVRyYW5zZm9ybSYg
dGlsZUltYWdlVHJhbnNmb3JtKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaApp
bmRleCBhNjY5MTI0MjdkZjMzZmIyOTJlZDU1ZjZmMTI0YmRmMzczZWE3NmI5Li4zYWI0YjJiNWFl
OTQ4N2IzOWU3NGY3NWExNDBiZjM1NGJmYzc3YmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGll
bnQuaApAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBncmFkaWVudEVsZW1l
bnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudCI7IH0KKyAg
ICBBU0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJT
VkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50Il9zOyB9CiAgICAgYm9vbCBjb2xsZWN0R3JhZGllbnRB
dHRyaWJ1dGVzKCkgZmluYWw7CiAKICAgICBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMgbV9hdHRy
aWJ1dGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApp
bmRleCA0M2MxMmVhODI2ZTE5YzcyNmQ5ZGI5NDExNjI0MTAxNjc4ZTY1MDVlLi4yNGMzMGJjYTdi
NjViZTUwNGRhOWVkOGQ2ZWJmNzU5ZGYxYWM1N2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCiAgICAgYm9vbCBpc1NWR1Jvb3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSb290IjsgfQorICAgIEFTQ0lJ
TGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jv
b3QiX3M7IH0KICAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKICAgICAvLyBUbyBwcmV2ZW50IGNlcnRhaW4gbGVnYWN5IGNvZGUgcGF0aHMg
dG8gaGl0IGFzc2VydGlvbnMgaW4gZGVidWcgYnVpbGRzLCB3aGVuIHN3aXRjaGluZyBvZmYgTEJT
RSAoZHVyaW5nIHRoZSB0ZWFyZG93biBvZiB0aGUgTEJTRSB0cmVlKS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAppbmRleCBhMjNkOWFkMjk4ZTAyOTEx
Mzk4NmM1OTAxYjQzNTE1ZTFkOWU0MmIwLi5kMmEzMzZjZmE4YWZiNTBiYzEwODUxMGUxNGViMzdi
YzAxYmVlNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdT
aGFwZS5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNTVkdTaGFw
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGNhbkhhdmVDaGlsZHJl
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdTaGFwZSI7IH0KKyAgICBB
U0NJSUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJT
VkdTaGFwZSJfczsgfQogCiAgICAgdm9pZCBsYXlvdXQoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKaW5kZXggMWJiYWViMzcyYmM2N2E1NDc0
OTIyNTM0ZWQyN2I5MWM1YmQ3YjdhZi4uZWI5MTRkYmM4NjAyOGIzNGY5OTU1ZDQ5ODIxMTMzODA2
OWQxZGM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUU3Bhbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNw
YW4uaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBncmFw
aGljc0VsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKLSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1RTcGFuIjsgfQorICAgIEFTQ0lJ
TGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1RT
cGFuIl9zOyB9CiAgICAgYm9vbCBpc1NWR1RTcGFuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Rl
eHQuaAppbmRleCAzMmM2ZTEyNDgzNjdjNTU1MzcxNzI0ZDRlNzNjNmFiYjMwOGMzZDExLi40NDEy
Njk4ODU3OTEzMDI0MjgyZmZmMGE4ZTY2NTFiNmI3ZjFjZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIHZvaWQgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAK
LSAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR1RleHQiOyB9CisgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHVGV4dCJfczsgfQogICAgIGJvb2wgaXNTVkdUZXh0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBwYWludChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCmluZGV4IGQ2NjMwYzI1ZTRmYzI4MzBk
MWNiYjFjMzUyODk4NDYwOGZhZTQ2ZGIuLjE5NmEyNDcyZWFiYTlhYzFkZTBkYjY5NWZiOTliMmQw
YmQ4YjcyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dFBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHRQYXRoLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdyYXBoaWNz
RWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCiAgICAgYm9vbCBpc1NWR1RleHRQYXRoKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHVGV4dFBhdGgiOyB9CisgICAgQVND
SUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZH
VGV4dFBhdGgiX3M7IH0KIAogICAgIFBhdGggbV9sYXlvdXRQYXRoOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWlu
ZXIuaAppbmRleCAzZWUzYmMxNDY5ZDRmNDJlYmE4OGY0NzU5NDVlNzg0ZWNmZTNhYWRjLi5iODQx
NjFkZjBjYWQ1NmIxMzVmMDViZDY3YWUzY2Q0OGQ1NzFmZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5o
CkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBk
ZWxldGU7CiAKICAgICBib29sIGlzU1ZHVmlld3BvcnRDb250YWluZXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciI7IH0KKyAgICBBU0NJ
SUxpdGVyYWwgcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdW
aWV3cG9ydENvbnRhaW5lciJfczsgfQogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdwb3J0VHJh
bnNmb3JtKCkgY29uc3Q7CiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50
VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2NhbFRvUGFyZW50VHJhbnNm
b3JtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0NvbnRh
aW5lckxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0NvbnRhaW5l
ckxheW91dC5jcHAKaW5kZXggOTEwNTBmOTQxYTlhYWU5NGY5OTQ0MmQ5M2I2YzMyYTJiZjg4M2Ix
Ny4uODEzYzNlY2VmOTM4YmRhNDg2NDQ0ZDRhZjcwOGQ5N2NiNzNjZWFlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdDb250YWluZXJMYXlvdXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHQ29udGFpbmVyTGF5b3V0LmNwcApAQCAt
MjA2LDEwICsyMDYsMTAgQEAgdm9pZCBTVkdDb250YWluZXJMYXlvdXQ6OnZlcmlmeUxheW91dExv
Y2F0aW9uQ29uc2lzdGVuY3koY29uc3QgUmVuZGVyRWxlbWVudCYgcmUKIAogICAgICAgICBhdXRv
IGluaXRpYWxMYXlvdXRMb2NhdGlvbiA9IGZsb29yZWRMYXlvdXRQb2ludChyZW5kZXJlci5vYmpl
Y3RCb3VuZGluZ0JveCgpLm1pblhNaW5ZQ29ybmVyKCkpOwogICAgICAgICBpZiAoZXhwZWN0ZWRM
YXlvdXRMb2NhdGlvbiA9PSBpbml0aWFsTGF5b3V0TG9jYXRpb24pIHsKLSAgICAgICAgICAgIExP
R19XSVRIX1NUUkVBTShTVkcsIHN0cmVhbSA8PCAiLS0+IFNWR0NvbnRhaW5lckxheW91dCByZW5k
ZXJlciAiIDw8ICZyZW5kZXJlciA8PCAiICgiIDw8IHJlbmRlcmVyLnJlbmRlck5hbWUoKSA8PCAi
KSIKKyAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShTVkcsIHN0cmVhbSA8PCAiLS0+IFNWR0Nv
bnRhaW5lckxheW91dCByZW5kZXJlciAiIDw8ICZyZW5kZXJlciA8PCAiICgiIDw8IHJlbmRlcmVy
LnJlbmRlck5hbWUoKS5jaGFyYWN0ZXJzKCkgPDwgIikiCiAgICAgICAgICAgICAgICAgPDwgIiAt
IHZlcmlmeUxheW91dExvY2F0aW9uQ29uc2lzdGVuY3koKSBvYmplY3RCb3VuZGluZ0JveCAvIGxh
eW91dExvY2F0aW9uIGFyZSBpbiBzeW5jLiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgTE9HX1dJVEhfU1RSRUFNKFNWRywgc3RyZWFtIDw8ICItLT4gU1ZHQ29udGFpbmVyTGF5b3V0
IHJlbmRlcmVyICIgPDwgJnJlbmRlcmVyIDw8ICIgKCIgPDwgcmVuZGVyZXIucmVuZGVyTmFtZSgp
IDw8ICIpIgorICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNWRywgc3RyZWFtIDw8ICItLT4g
U1ZHQ29udGFpbmVyTGF5b3V0IHJlbmRlcmVyICIgPDwgJnJlbmRlcmVyIDw8ICIgKCIgPDwgcmVu
ZGVyZXIucmVuZGVyTmFtZSgpLmNoYXJhY3RlcnMoKSA8PCAiKSIKICAgICAgICAgICAgICAgICA8
PCAiIC0gdmVyaWZ5TGF5b3V0TG9jYXRpb25Db25zaXN0ZW5jeSgpIG9iamVjdEJvdW5kaW5nQm94
IC8gbGF5b3V0TG9jYXRpb24gaW52YXJpYW50IHZpb2xhdGVkIC0tIG91dCBvZiBzeW5jIGR1ZSB0
byBwYXJ0aWFsIGxheW91dD8iCiAgICAgICAgICAgICAgICAgPDwgIiBjdXJyZW50TGF5b3V0TG9j
YXRpb249IiA8PCBjdXJyZW50TGF5b3V0TG9jYXRpb24KICAgICAgICAgICAgICAgICA8PCAiICAo
ZXhwZWN0ZWRMYXlvdXRMb2NhdGlvbj0iIDw8IGV4cGVjdGVkTGF5b3V0TG9jYXRpb24KQEAgLTIz
MSw3ICsyMzEsNyBAQCB2b2lkIFNWR0NvbnRhaW5lckxheW91dDo6dmVyaWZ5TGF5b3V0TG9jYXRp
b25Db25zaXN0ZW5jeShjb25zdCBSZW5kZXJFbGVtZW50JiByZQogCiAjaWYgIWRlZmluZWQoTkRF
QlVHKQogICAgIGlmIChyZW5kZXJlci5pc1NWR1Jvb3QoKSkgewotICAgICAgICBMT0dfV0lUSF9T
VFJFQU0oU1ZHLCBzdHJlYW0gPDwgIi0tPiBTVkdDb250YWluZXJMYXlvdXQgcmVuZGVyZXIgIiA8
PCAmcmVuZGVyZXIgPDwgIiAoIiA8PCByZW5kZXJlci5yZW5kZXJOYW1lKCkgPDwgIikiCisgICAg
ICAgIExPR19XSVRIX1NUUkVBTShTVkcsIHN0cmVhbSA8PCAiLS0+IFNWR0NvbnRhaW5lckxheW91
dCByZW5kZXJlciAiIDw8ICZyZW5kZXJlciA8PCAiICgiIDw8IHJlbmRlcmVyLnJlbmRlck5hbWUo
KS5jaGFyYWN0ZXJzKCkgPDwgIikiCiAgICAgICAgICAgICA8PCAiIC0gdmVyaWZ5TGF5b3V0TG9j
YXRpb25Db25zaXN0ZW5jeSgpIGVuZCIpOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggODcz
MzAxNDdmMTQxYzE2YzA4Y2UwMTVlNzgxMTkwYjhiNjRmYmI4OC4uZjE1ZTYzNzE2MDRiOGE5NWY3
YWJlYTcyNmY0MDdjOWZmOTRmZjlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAqLwogY2xhc3MgVGV4dFN0cmVhbVNlcGFyYXRvciB7CiBwdWJsaWM6
Ci0gICAgVGV4dFN0cmVhbVNlcGFyYXRvcihjb25zdCBTdHJpbmcmIHMpCisgICAgVGV4dFN0cmVh
bVNlcGFyYXRvcihVQ2hhciBzKQogICAgICAgICA6IG1fc2VwYXJhdG9yKHMpCiAgICAgICAgICwg
bV9uZWVkVG9TZXBhcmF0ZShmYWxzZSkKICAgICB7CkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgZnJpZW5kIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IFRleHRTdHJlYW1TZXBhcmF0b3ImKTsKIAotICAgIFN0cmluZyBtX3NlcGFyYXRvcjsKKyAgICBV
Q2hhciBtX3NlcGFyYXRvcjsKICAgICBib29sIG1fbmVlZFRvU2VwYXJhdGU7CiB9OwogCkBAIC0x
NzUsNyArMTc1LDcgQEAgc3RhdGljIHZvaWQgd3JpdGVTVkdQYWludGluZ1Jlc291cmNlKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdSZXNvdXJjZSYgcmUKIAogc3RhdGljIHZvaWQgd3Jp
dGVTVkdGaWxsUGFpbnRpbmdSZXNvdXJjZShUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclNWR1Jlc291cmNlJiBmaWxsUGFpbnRpbmdSZXNv
dXJjZSkKIHsKLSAgICBUZXh0U3RyZWFtU2VwYXJhdG9yIHMoIiAiKTsKKyAgICBUZXh0U3RyZWFt
U2VwYXJhdG9yIHMoJyAnKTsKICAgICB0cyA8PCAiIFtmaWxsPXsiIDw8IHM7CiAgICAgd3JpdGVT
VkdQYWludGluZ1Jlc291cmNlKHRzLCBmaWxsUGFpbnRpbmdSZXNvdXJjZSk7CiAKQEAgLTE4Nyw3
ICsxODcsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZVNWR0ZpbGxQYWludGluZ1Jlc291cmNlKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBSZW5kZXJFbGVtZW50JiByZQogCiBzdGF0aWMgdm9pZCB3cml0ZVNW
R1N0cm9rZVBhaW50aW5nUmVzb3VyY2UoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTVkdSZXNvdXJjZSYgc3Ryb2tlUGFpbnRpbmdSZXNv
dXJjZSwgY29uc3QgU1ZHR3JhcGhpY3NFbGVtZW50JiBzaGFwZSkKIHsKLSAgICBUZXh0U3RyZWFt
U2VwYXJhdG9yIHMoIiAiKTsKKyAgICBUZXh0U3RyZWFtU2VwYXJhdG9yIHMoJyAnKTsKICAgICB0
cyA8PCAiIFtzdHJva2U9eyIgPDwgczsKICAgICB3cml0ZVNWR1BhaW50aW5nUmVzb3VyY2UodHMs
IHN0cm9rZVBhaW50aW5nUmVzb3VyY2UpOwogCkBAIC00MjIsNyArNDIyLDcgQEAgc3RhdGljIHZv
aWQgd3JpdGVTdGFuZGFyZFByZWZpeChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0
JiBvYmplY3QsIE9wdGkKICAgICBpZiAod3JpdGVJbmRlbnQgPT0gV3JpdGVJbmRlbnRPck5vdDo6
WWVzKQogICAgICAgICB0cyA8PCBpbmRlbnQ7CiAKLSAgICB0cyA8PCBvYmplY3QucmVuZGVyTmFt
ZSgpOworICAgIHRzIDw8IG9iamVjdC5yZW5kZXJOYW1lKCkuY2hhcmFjdGVycygpOwogCiAgICAg
aWYgKGJlaGF2aW9yLmNvbnRhaW5zKFJlbmRlckFzVGV4dEZsYWc6OlNob3dBZGRyZXNzZXMpKQog
ICAgICAgICB0cyA8PCAiICIgPDwgJm9iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9MaW5l
YXJHcmFkaWVudEF0dHJpYnV0ZXMuaAppbmRleCA2ZmQ5NWJkNmVlZTMwMmNlNGU1ZWY1MTljNWUy
MWExNjU3MzU3M2M3Li5mZmY3MTdhMjdjNmQ2MWQzMWMyZGRmNWM5MjNjMjUzZjAzNmM4ZjY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL0xpbmVhckdyYWRpZW50QXR0cmlidXRlcy5oCkBAIC0y
Niw3ICsyNiw3IEBAIHN0cnVjdCBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMgOiBHcmFkaWVudEF0
dHJpYnV0ZXMgewogICAgIExpbmVhckdyYWRpZW50QXR0cmlidXRlcygpCiAgICAgICAgIDogbV94
MSgpCiAgICAgICAgICwgbV95MSgpCi0gICAgICAgICwgbV94MihTVkdMZW5ndGhNb2RlOjpXaWR0
aCwgIjEwMCUiKQorICAgICAgICAsIG1feDIoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIxMDAlIl9z
KQogICAgICAgICAsIG1feTIoKQogICAgICAgICAsIG1feDFTZXQoZmFsc2UpCiAgICAgICAgICwg
bV95MVNldChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9SYWRpYWxHcmFk
aWVudEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9SYWRpYWxHcmFkaWVudEF0dHJp
YnV0ZXMuaAppbmRleCA2MTIzZGJlOTBmMzc0NzZiMWI0ZThjY2ViZWI3MzYwOWRkZDA3MDU5Li42
Y2ZjMWRmNzU2ZGEwNGI3NTIwZmIxN2M5YWM4YTdlN2ViNzlhMDJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCkBAIC0yNSw5ICsyNSw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcyA6IEdy
YWRpZW50QXR0cmlidXRlcyB7CiAgICAgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzKCkKLSAgICAg
ICAgOiBtX2N4KFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiNTAlIikKLSAgICAgICAgLCBtX2N5KFNW
R0xlbmd0aE1vZGU6OldpZHRoLCAiNTAlIikKLSAgICAgICAgLCBtX3IoU1ZHTGVuZ3RoTW9kZTo6
V2lkdGgsICI1MCUiKQorICAgICAgICA6IG1fY3goU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUi
X3MpCisgICAgICAgICwgbV9jeShTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjUwJSJfcykKKyAgICAg
ICAgLCBtX3IoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiX3MpCiAgICAgICAgICwgbV9jeFNl
dChmYWxzZSkKICAgICAgICAgLCBtX2N5U2V0KGZhbHNlKQogICAgICAgICAsIG1fclNldChmYWxz
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKaW5kZXggZTBhMDMxMmMzNzRm
YTcwYmI0NDA0OTYxMzNkM2Q3YTIwYjQ5ZmRhOS4uODBlOTNmYzg5MzYxOGEzMDI3M2Y1MmE4MmI2
ODBiZDQ5ODE1MmY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmll
d0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKQEAg
LTEyMywxMyArMTIzLDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6
b3B0aW9uYWw8RmxvYXRSZWN0PiBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlCiAKICAgICAgICAgLy8g
Q2hlY2sgdGhhdCB3aWR0aCBpcyBwb3NpdGl2ZS4KICAgICAgICAgaWYgKCp3aWR0aCA8IDAuMCkg
ewotICAgICAgICAgICAgZG9jdW1lbnQuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydEVycm9y
KCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBWaWV3Qm94IHdpZHRoIGlzIG5vdCBhbGxvd2VkIik7Cisg
ICAgICAgICAgICBkb2N1bWVudC5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVwb3J0RXJyb3IoIkEg
bmVnYXRpdmUgdmFsdWUgZm9yIFZpZXdCb3ggd2lkdGggaXMgbm90IGFsbG93ZWQiX3MpOwogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIC8vIENo
ZWNrIHRoYXQgaGVpZ2h0IGlzIHBvc2l0aXZlLgogICAgICAgICBpZiAoKmhlaWdodCA8IDAuMCkg
ewotICAgICAgICAgICAgZG9jdW1lbnQuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydEVycm9y
KCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBWaWV3Qm94IGhlaWdodCBpcyBub3QgYWxsb3dlZCIpOwor
ICAgICAgICAgICAgZG9jdW1lbnQuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydEVycm9yKCJB
IG5lZ2F0aXZlIHZhbHVlIGZvciBWaWV3Qm94IGhlaWdodCBpcyBub3QgYWxsb3dlZCJfcyk7CiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKaW5kZXggYzBiZjIxZTQ0MjRhMzYzODhjN2Yy
MTY3MjcxNTUzMGMxZjJkMTgzYi4uMjhlYzQ3N2I4NGJhMWJhYmUwOTliOWQ2MzlmOTIwMDc5ZDU2
MmZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKQEAgLTEz
OCw3ICsxMzgsNyBAQCB2b2lkIFNWR0dlb21ldHJ5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cgogICAgIGlmIChuYW1lID09IFNW
R05hbWVzOjpwYXRoTGVuZ3RoQXR0cikgewogICAgICAgICBtX3BhdGhMZW5ndGgtPnNldEJhc2VW
YWxJbnRlcm5hbCh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICBpZiAobV9wYXRoTGVuZ3RoLT5i
YXNlVmFsKCkgPCAwKQotICAgICAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25z
KCkucmVwb3J0RXJyb3IoIkEgbmVnYXRpdmUgdmFsdWUgZm9yIHBhdGggYXR0cmlidXRlIDxwYXRo
TGVuZ3RoPiBpcyBub3QgYWxsb3dlZCIpOworICAgICAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NT
VkdFeHRlbnNpb25zKCkucmVwb3J0RXJyb3IoIkEgbmVnYXRpdmUgdmFsdWUgZm9yIHBhdGggYXR0
cmlidXRlIDxwYXRoTGVuZ3RoPiBpcyBub3QgYWxsb3dlZCJfcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDRk
ZDdmODBlMzc3Nzk4N2RjYjcwYzFhM2M4YTg3Y2Q4YTRmZDZmYjkuLjEzMTg1ZjIxMTg5Njk2YTRm
ZjI2YzA3MjZhZmJhMWQ2ZjE4NTgxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIEVuY29kZWREYXRhU3RhdHVzIFNWR0ltYWdl
OjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgZnJhbWUudmlldygp
LT5zZXRUcmFuc3BhcmVudCh0cnVlKTsgLy8gU1ZHIEltYWdlcyBhcmUgdHJhbnNwYXJlbnQuCiAK
ICAgICAgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpKTsgLy8gRG9jdW1l
bnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGZyYW1lLT5pbml0KCkuCi0gICAg
ICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5zZXRNSU1FVHlwZSgi
aW1hZ2Uvc3ZnK3htbCIpOworICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+
d3JpdGVyKCkuc2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiX3MpOwogICAgICAgICBsb2FkZXIu
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYmVnaW4oVVJMKCkpOyAvLyBjcmVhdGUg
dGhlIGVtcHR5IGRvY3VtZW50CiAgICAgICAgIGRhdGEoKS0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJl
ZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgewogICAgICAgICAgICAgbG9hZGVyLmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCAyMDY3YTFkMDA4OGIzNjM2OTY0OWRhMmFkZmQyNDJhYWQ1
MmNlMDBiLi40ZjBiZjk5ZWFmN2U2NzMzY2Y0MjIyOGRiYjRjMDBjMjJhNDU0ZjI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC03NjUsMTYgKzc2NSwxNiBAQCBzdGF0aWMg
U3RyaW5nIHN0eWxlVmFsaWRpdHlUb1RvU3RyaW5nKFN0eWxlOjpWYWxpZGl0eSB2YWxpZGl0eSkK
IHsKICAgICBzd2l0Y2ggKHZhbGlkaXR5KSB7CiAgICAgY2FzZSBTdHlsZTo6VmFsaWRpdHk6OlZh
bGlkOgotICAgICAgICByZXR1cm4gIk5vU3R5bGVDaGFuZ2UiOworICAgICAgICByZXR1cm4gIk5v
U3R5bGVDaGFuZ2UiX3M7CiAgICAgY2FzZSBTdHlsZTo6VmFsaWRpdHk6OkVsZW1lbnRJbnZhbGlk
OgotICAgICAgICByZXR1cm4gIklubGluZVN0eWxlQ2hhbmdlIjsKKyAgICAgICAgcmV0dXJuICJJ
bmxpbmVTdHlsZUNoYW5nZSJfczsKICAgICBjYXNlIFN0eWxlOjpWYWxpZGl0eTo6U3VidHJlZUlu
dmFsaWQ6Ci0gICAgICAgIHJldHVybiAiRnVsbFN0eWxlQ2hhbmdlIjsKKyAgICAgICAgcmV0dXJu
ICJGdWxsU3R5bGVDaGFuZ2UiX3M7CiAgICAgY2FzZSBTdHlsZTo6VmFsaWRpdHk6OlN1YnRyZWVB
bmRSZW5kZXJlcnNJbnZhbGlkOgotICAgICAgICByZXR1cm4gIlJlY29uc3RydWN0UmVuZGVyVHJl
ZSI7CisgICAgICAgIHJldHVybiAiUmVjb25zdHJ1Y3RSZW5kZXJUcmVlIl9zOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBJbnRlcm5hbHM6OnN0eWxlQ2hhbmdlVHlwZShOb2RlJiBu
b2RlKQpAQCAtODE1LDMxICs4MTUsMzEgQEAgYm9vbCBJbnRlcm5hbHM6OmlzTG9hZGluZ0Zyb21N
ZW1vcnlDYWNoZShjb25zdCBTdHJpbmcmIHVybCkKIHN0YXRpYyBTdHJpbmcgcmVzcG9uc2VTb3Vy
Y2VUb1N0cmluZyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAo
cmVzcG9uc2UuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAiTnVsbCByZXNwb25zZSI7CisgICAg
ICAgIHJldHVybiAiTnVsbCByZXNwb25zZSJfczsKICAgICBzd2l0Y2ggKHJlc3BvbnNlLnNvdXJj
ZSgpKSB7CiAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlVua25vd246Ci0gICAg
ICAgIHJldHVybiAiVW5rbm93biI7CisgICAgICAgIHJldHVybiAiVW5rbm93biJfczsKICAgICBj
YXNlIFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yazoKLSAgICAgICAgcmV0dXJuICJO
ZXR3b3JrIjsKKyAgICAgICAgcmV0dXJuICJOZXR3b3JrIl9zOwogICAgIGNhc2UgUmVzb3VyY2VS
ZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyOgotICAgICAgICByZXR1cm4gIlNlcnZpY2Ug
d29ya2VyIjsKKyAgICAgICAgcmV0dXJuICJTZXJ2aWNlIHdvcmtlciJfczsKICAgICBjYXNlIFJl
c291cmNlUmVzcG9uc2U6OlNvdXJjZTo6RGlza0NhY2hlOgotICAgICAgICByZXR1cm4gIkRpc2sg
Y2FjaGUiOworICAgICAgICByZXR1cm4gIkRpc2sgY2FjaGUiX3M7CiAgICAgY2FzZSBSZXNvdXJj
ZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZUFmdGVyVmFsaWRhdGlvbjoKLSAgICAgICAgcmV0
dXJuICJEaXNrIGNhY2hlIGFmdGVyIHZhbGlkYXRpb24iOworICAgICAgICByZXR1cm4gIkRpc2sg
Y2FjaGUgYWZ0ZXIgdmFsaWRhdGlvbiJfczsKICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2U6OlNv
dXJjZTo6TWVtb3J5Q2FjaGU6Ci0gICAgICAgIHJldHVybiAiTWVtb3J5IGNhY2hlIjsKKyAgICAg
ICAgcmV0dXJuICJNZW1vcnkgY2FjaGUiX3M7CiAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpT
b3VyY2U6Ok1lbW9yeUNhY2hlQWZ0ZXJWYWxpZGF0aW9uOgotICAgICAgICByZXR1cm4gIk1lbW9y
eSBjYWNoZSBhZnRlciB2YWxpZGF0aW9uIjsKKyAgICAgICAgcmV0dXJuICJNZW1vcnkgY2FjaGUg
YWZ0ZXIgdmFsaWRhdGlvbiJfczsKICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6
QXBwbGljYXRpb25DYWNoZToKLSAgICAgICAgcmV0dXJuICJBcHBsaWNhdGlvbiBjYWNoZSI7Cisg
ICAgICAgIHJldHVybiAiQXBwbGljYXRpb24gY2FjaGUiX3M7CiAgICAgY2FzZSBSZXNvdXJjZVJl
c3BvbnNlOjpTb3VyY2U6OkRPTUNhY2hlOgotICAgICAgICByZXR1cm4gIkRPTSBjYWNoZSI7Cisg
ICAgICAgIHJldHVybiAiRE9NIGNhY2hlIl9zOwogICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZTo6
U291cmNlOjpJbnNwZWN0b3JPdmVycmlkZToKLSAgICAgICAgcmV0dXJuICJJbnNwZWN0b3Igb3Zl
cnJpZGUiOworICAgICAgICByZXR1cm4gIkluc3BlY3RvciBvdmVycmlkZSJfczsKICAgICB9CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuICJFcnJvciI7CisgICAgcmV0dXJu
ICJFcnJvciJfczsKIH0KIAogU3RyaW5nIEludGVybmFsczo6eGhyUmVzcG9uc2VTb3VyY2UoWE1M
SHR0cFJlcXVlc3QmIHJlcXVlc3QpCkBAIC0yODY2LDcgKzI4NjYsNyBAQCBSZWZQdHI8V2luZG93
UHJveHk+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiB1cmwpCiB7CiAgICAgYXV0byogaW5zcGVjdGVkUGFnZSA9IGNvbnRleHREb2N1bWVudCgpLT5m
cmFtZSgpLT5wYWdlKCk7CiAgICAgYXV0byogd2luZG93ID0gaW5zcGVjdGVkUGFnZS0+bWFpbkZy
YW1lKCkuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7Ci0gICAgYXV0byBmcm9udGVuZFdpbmRvd1By
b3h5ID0gd2luZG93LT5vcGVuKCp3aW5kb3csICp3aW5kb3csIHVybCwgIiIsICIiKS5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKKyAgICBhdXRvIGZyb250ZW5kV2luZG93UHJveHkgPSB3aW5kb3ctPm9w
ZW4oKndpbmRvdywgKndpbmRvdywgdXJsLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKS5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICBtX2luc3BlY3RvckZyb250ZW5kID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdlLCBkb3duY2FzdDxET01XaW5k
b3c+KGZyb250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7CiAgICAgcmV0dXJuIGZyb250ZW5k
V2luZG93UHJveHk7CiB9CkBAIC00MDY0LDE3ICs0MDY0LDE3IEBAIFN0cmluZyBJbnRlcm5hbHM6
OmVsZW1lbnRCdWZmZXJpbmdQb2xpY3koSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKIHsKICAg
ICBzd2l0Y2ggKGVsZW1lbnQuYnVmZmVyaW5nUG9saWN5KCkpIHsKICAgICBjYXNlIE1lZGlhUGxh
eWVyOjpCdWZmZXJpbmdQb2xpY3k6OkRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAiRGVmYXVsdCI7
CisgICAgICAgIHJldHVybiAiRGVmYXVsdCJfczsKICAgICBjYXNlIE1lZGlhUGxheWVyOjpCdWZm
ZXJpbmdQb2xpY3k6OkxpbWl0UmVhZEFoZWFkOgotICAgICAgICByZXR1cm4gIkxpbWl0UmVhZEFo
ZWFkIjsKKyAgICAgICAgcmV0dXJuICJMaW1pdFJlYWRBaGVhZCJfczsKICAgICBjYXNlIE1lZGlh
UGxheWVyOjpCdWZmZXJpbmdQb2xpY3k6Ok1ha2VSZXNvdXJjZXNQdXJnZWFibGU6Ci0gICAgICAg
IHJldHVybiAiTWFrZVJlc291cmNlc1B1cmdlYWJsZSI7CisgICAgICAgIHJldHVybiAiTWFrZVJl
c291cmNlc1B1cmdlYWJsZSJfczsKICAgICBjYXNlIE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xp
Y3k6OlB1cmdlUmVzb3VyY2VzOgotICAgICAgICByZXR1cm4gIlB1cmdlUmVzb3VyY2VzIjsKKyAg
ICAgICAgcmV0dXJuICJQdXJnZVJlc291cmNlcyJfczsKICAgICB9CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gIlVOS05PV04iOworICAgIHJldHVybiAiVU5LTk9XTiJf
czsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRPdmVycmlkZVByZWZlcnJl
ZER5bmFtaWNSYW5nZU1vZGUoSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5n
JiBtb2RlU3RyaW5nKQpAQCAtNjQ3MCw3ICs2NDcwLDcgQEAgU3RyaW5nIEludGVybmFsczo6Zm9j
dXNSaW5nQ29sb3IoKQogdW5zaWduZWQgSW50ZXJuYWxzOjpjcmVhdGVTbGVlcERpc2FibGVyKGNv
bnN0IFN0cmluZyYgcmVhc29uLCBib29sIGRpc3BsYXkpCiB7CiAgICAgc3RhdGljIHVuc2lnbmVk
IGxhc3RVc2VkSWRlbnRpZmllciA9IDA7Ci0gICAgYXV0byBzbGVlcERpc2FibGVyID0gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpTbGVlcERpc2FibGVyPihyZWFzb24udXRmOCgpLmRhdGEoKSwgZGlzcGxh
eSA/IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6RGlzcGxheSA6IFBBTDo6U2xlZXBEaXNhYmxl
cjo6VHlwZTo6U3lzdGVtKTsKKyAgICBhdXRvIHNsZWVwRGlzYWJsZXIgPSBtYWtlVW5pcXVlPFdl
YkNvcmU6OlNsZWVwRGlzYWJsZXI+KHJlYXNvbiwgZGlzcGxheSA/IFBBTDo6U2xlZXBEaXNhYmxl
cjo6VHlwZTo6RGlzcGxheSA6IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6U3lzdGVtKTsKICAg
ICBtX3NsZWVwRGlzYWJsZXJzLmFkZCgrK2xhc3RVc2VkSWRlbnRpZmllciwgV1RGTW92ZShzbGVl
cERpc2FibGVyKSk7CiAgICAgcmV0dXJuIGxhc3RVc2VkSWRlbnRpZmllcjsKIH0KQEAgLTY1Nzcs
MTEgKzY1NzcsMTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZW5kTWVkaWFTZXNz
aW9uQWN0aW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QKIHZvaWQgSW50ZXJuYWxzOjps
b2FkQXJ0d29ya0ltYWdlKFN0cmluZyYmIHVybCwgQXJ0d29ya0ltYWdlUHJvbWlzZSYmIHByb21p
c2UpCiB7CiAgICAgaWYgKCFjb250ZXh0RG9jdW1lbnQoKSkgewotICAgICAgICBwcm9taXNlLnJl
amVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIGRvY3VtZW50LiIgfSk7Cisg
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiTm8g
ZG9jdW1lbnQuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX2FydHdv
cmtJbWFnZVByb21pc2UpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJBbm90aGVyIGRvd25sb2FkIGlzIGN1cnJlbnRseSBwZW5kaW5nLiIg
fSk7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCAiQW5vdGhlciBkb3dubG9hZCBpcyBjdXJyZW50bHkgcGVuZGluZy4iX3MgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgbV9hcnR3b3JrSW1hZ2VQcm9taXNlID0gbWFrZVVuaXF1ZTxB
cnR3b3JrSW1hZ2VQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpKTsKQEAgLTY1OTMsNyArNjU5Myw3
IEBAIHZvaWQgSW50ZXJuYWxzOjpsb2FkQXJ0d29ya0ltYWdlKFN0cmluZyYmIHVybCwgQXJ0d29y
a0ltYWdlUHJvbWlzZSYmIHByb21pc2UpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgbV9hcnR3b3JrSW1hZ2VQcm9taXNlLT5yZWplY3QoaW1hZ2VEYXRhLmV4Y2VwdGlvbigpLmNv
ZGUoKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9hcnR3b3JrSW1hZ2VQcm9taXNl
LT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiTm8gaW1hZ2UgcmV0cmll
dmVkLiIgIH0pOworICAgICAgICAgICAgbV9hcnR3b3JrSW1hZ2VQcm9taXNlLT5yZWplY3QoRXhj
ZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiTm8gaW1hZ2UgcmV0cmlldmVkLiJfcyB9KTsK
ICAgICAgICAgbV9hcnR3b3JrSW1hZ2VQcm9taXNlID0gbnVsbHB0cjsKICAgICB9KTsKICAgICBt
X2FydHdvcmtMb2FkZXItPnJlcXVlc3RJbWFnZVJlc291cmNlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsc01hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHNNYXBMaWtlLmNwcAppbmRleCA5Zjc2ODBjNTQ2ZTE3OGYzZDJlMzBi
MGU3NjQ1YTU4MGZkNjk5NmRjLi45YTNkZjRkNGExODAwNDg1YzZlYmZhNjgxNmU5NTQzOWQzMTEw
NzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsc01hcExpa2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzTWFwTGlrZS5jcHAKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnRlcm5hbHNNYXBMaWtlOjpJ
bnRlcm5hbHNNYXBMaWtlKCkKIHsKLSAgICBtX3ZhbHVlcy5hZGQoImluaXQiLCAwKTsKKyAgICBt
X3ZhbHVlcy5hZGQoImluaXQiX3MsIDApOwogfQogCiB2b2lkIEludGVybmFsc01hcExpa2U6Omlu
aXRpYWxpemVNYXBMaWtlKERPTU1hcEFkYXB0ZXImIG1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAppbmRleCAwOGY0
NWU2ZTcyZmM0YmI4ZDkxZDQxYTc0NmU5NTNjODFmYWQ5YzdkLi5lMGE2MjVjZjJkMWY4ZjNjZWI4
N2I2NWRkNTFjOGMwNGY2YzJlZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCkBAIC0xMDUsMjUgKzEwNSwyNSBA
QCB2b2lkIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2V0VHJhY2soY29uc3QgU3RyaW5n
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZAogdm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3I6OnBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFQb3NpdGlv
blN0YXRlPiYpCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsK
LSAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0Lmdl
dCgpLCAicG9zaXRpb25TdGF0ZUNoYW5nZWQiKTsKKyAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXIt
PnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LmdldCgpLCAicG9zaXRpb25TdGF0ZUNoYW5nZWQi
X3MpOwogfQogCiB2b2lkIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cmVhZHlTdGF0ZUNo
YW5nZWQoTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lG
X1BPU1NJQkxFKExPR0lERU5USUZJRVIsIHN0YXRlKTsKLSAgICBtX3N0YXRlQ2hhbmdlTGlzdGVu
ZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LmdldCgpLCAicmVhZHlTdGF0ZUNoYW5nZWQi
KTsKKyAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0
LmdldCgpLCAicmVhZHlTdGF0ZUNoYW5nZWQiX3MpOwogfQogCiB2b2lkIE1vY2tNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6cGxheWJhY2tTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uUGxheWJhY2tT
dGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIs
IHN0YXRlKTsKLSAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9j
b250ZXh0LmdldCgpLCAicGxheWJhY2tTdGF0ZUNoYW5nZWQiKTsKKyAgICBtX3N0YXRlQ2hhbmdl
TGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LmdldCgpLCAicGxheWJhY2tTdGF0
ZUNoYW5nZWQiX3MpOwogfQogCiB2b2lkIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6dHJh
Y2tJZGVudGlmaWVyQ2hhbmdlZChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiB7CiAgICAgQUxX
QVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCBpZGVudGlmaWVyKTsKLSAgICBtX3N0
YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LmdldCgpLCAidHJh
Y2tJZGVudGlmaWVyQ2hhbmdlZCIpOworICAgIG1fc3RhdGVDaGFuZ2VMaXN0ZW5lci0+c2NoZWR1
bGVDYWxsYmFjayhtX2NvbnRleHQuZ2V0KCksICJ0cmFja0lkZW50aWZpZXJDaGFuZ2VkIl9zKTsK
IH0KIAogV1RGTG9nQ2hhbm5lbCYgTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpsb2dDaGFu
bmVsKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tNZWRpYVNl
c3Npb25Db29yZGluYXRvci5oCmluZGV4IDllMGZlNTM4N2NlNzg0MmE2YzFkZjFlNmZjNmFjZDEx
ODAyNmFhMTkuLjgxMjQ2MmJlZjFkMmRhMzU1NTg4YTdhOThiZmVkN2MwZGZlY2IxMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3IuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1vY2tNZWRpYVNl
c3Npb25Db29yZGluYXRvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPFN0cmluZ0Nh
bGxiYWNrPiYmKTsKIAotICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gIk1vY2sgQ29vcmRpbmF0b3IiOyB9CisgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiTW9jayBDb29yZGluYXRvciJfczsgfQogCiAgICAgdm9pZCBqb2luKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSBmaW5h
bDsKICAgICB2b2lkIGxlYXZlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAKaW5kZXggZDk3NWYzYjQyODRmM2I2NmE4ZDc3OTJm
MDhiNjNkN2QzZDE1NDNmYS4uNTJkYjQ3MGYyMmRjYWVmNzE3Y2RhOTE3ZDhmN2U1ZTdjMjczNmQ2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50
LmNwcApAQCAtNzIsOCArNzIsOCBAQCBTdHJpbmcgTW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpsYXll
clRyZWVBc1RleHQoUGFnZSYgcGFnZSwgT3B0aW9uU2V0PExheWVyVHJlZUFzVAogICAgIEdyYXBo
aWNzTGF5ZXIqIHZpZXdPdmVybGF5Um9vdCA9IHBhZ2UucGFnZU92ZXJsYXlDb250cm9sbGVyKCku
dmlld092ZXJsYXlSb290TGF5ZXIoKTsKICAgICBHcmFwaGljc0xheWVyKiBkb2N1bWVudE92ZXJs
YXlSb290ID0gcGFnZS5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5kb2N1bWVudE92ZXJsYXlSb290
TGF5ZXIoKTsKICAgICAKLSAgICByZXR1cm4gIlZpZXctcmVsYXRpdmU6XG4iICsgKHZpZXdPdmVy
bGF5Um9vdCA/IHZpZXdPdmVybGF5Um9vdC0+bGF5ZXJUcmVlQXNUZXh0KG9wdGlvbnMgfCBMYXll
clRyZWVBc1RleHRPcHRpb25zOjpJbmNsdWRlUGFnZU92ZXJsYXlMYXllcnMpIDogIihubyB2aWV3
LXJlbGF0aXZlIG92ZXJsYXkgcm9vdCkiKQotICAgICAgICArICJcblxuRG9jdW1lbnQtcmVsYXRp
dmU6XG4iICsgKGRvY3VtZW50T3ZlcmxheVJvb3QgPyBkb2N1bWVudE92ZXJsYXlSb290LT5sYXll
clRyZWVBc1RleHQob3B0aW9ucyB8IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVQYWdl
T3ZlcmxheUxheWVycykgOiAiKG5vIGRvY3VtZW50LXJlbGF0aXZlIG92ZXJsYXkgcm9vdCkiKTsK
KyAgICByZXR1cm4gIlZpZXctcmVsYXRpdmU6XG4iICsgKHZpZXdPdmVybGF5Um9vdCA/IHZpZXdP
dmVybGF5Um9vdC0+bGF5ZXJUcmVlQXNUZXh0KG9wdGlvbnMgfCBMYXllclRyZWVBc1RleHRPcHRp
b25zOjpJbmNsdWRlUGFnZU92ZXJsYXlMYXllcnMpIDogIihubyB2aWV3LXJlbGF0aXZlIG92ZXJs
YXkgcm9vdCkiX3MpCisgICAgICAgICsgIlxuXG5Eb2N1bWVudC1yZWxhdGl2ZTpcbiIgKyAoZG9j
dW1lbnRPdmVybGF5Um9vdCA/IGRvY3VtZW50T3ZlcmxheVJvb3QtPmxheWVyVHJlZUFzVGV4dChv
cHRpb25zIHwgTGF5ZXJUcmVlQXNUZXh0T3B0aW9uczo6SW5jbHVkZVBhZ2VPdmVybGF5TGF5ZXJz
KSA6ICIobm8gZG9jdW1lbnQtcmVsYXRpdmUgb3ZlcmxheSByb290KSJfcyk7CiB9CiAKIHZvaWQg
TW9ja1BhZ2VPdmVybGF5Q2xpZW50Ojp3aWxsTW92ZVRvUGFnZShQYWdlT3ZlcmxheSYsIFBhZ2Uq
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5h
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5j
cHAKaW5kZXggOGI5Mzg4ODYzYzgxYjEyNmI4Yjg0Njg3YjBiZDg2YmZhMzcwZDkzMy4uZTgzMWIx
YTA3Y2M2ZGE1MDJiMmYwZjZlOTk5OGEzMTJmNzQ2Yzk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC01NSwxNSArNTUsMTUg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTW9ja1BheW1lbnRDb29yZGluYXRvcjo6TW9ja1BheW1l
bnRDb29yZGluYXRvcihQYWdlJiBwYWdlKQogICAgIDogbV9wYWdlIHsgcGFnZSB9CiB7Ci0gICAg
bV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJhbWV4Iik7Ci0gICAgbV9hdmFpbGFibGVQ
YXltZW50TmV0d29ya3MuYWRkKCJjYXJ0ZUJhbmNhaXJlIik7Ci0gICAgbV9hdmFpbGFibGVQYXlt
ZW50TmV0d29ya3MuYWRkKCJjaGluYVVuaW9uUGF5Iik7Ci0gICAgbV9hdmFpbGFibGVQYXltZW50
TmV0d29ya3MuYWRkKCJkaXNjb3ZlciIpOwotICAgIG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtz
LmFkZCgiaW50ZXJhYyIpOwotICAgIG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmFkZCgiamNi
Iik7Ci0gICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJtYXN0ZXJDYXJkIik7Ci0g
ICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MuYWRkKCJwcml2YXRlTGFiZWwiKTsKLSAgICBt
X2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoInZpc2EiKTsKKyAgICBtX2F2YWlsYWJsZVBh
eW1lbnROZXR3b3Jrcy5hZGQoImFtZXgiX3MpOworICAgIG1fYXZhaWxhYmxlUGF5bWVudE5ldHdv
cmtzLmFkZCgiY2FydGVCYW5jYWlyZSJfcyk7CisgICAgbV9hdmFpbGFibGVQYXltZW50TmV0d29y
a3MuYWRkKCJjaGluYVVuaW9uUGF5Il9zKTsKKyAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jr
cy5hZGQoImRpc2NvdmVyIl9zKTsKKyAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQo
ImludGVyYWMiX3MpOworICAgIG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmFkZCgiamNiIl9z
KTsKKyAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoIm1hc3RlckNhcmQiX3MpOwor
ICAgIG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmFkZCgicHJpdmF0ZUxhYmVsIl9zKTsKKyAg
ICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoInZpc2EiX3MpOwogfQogCiBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gTW9ja1BheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVkUGF5bWVudE5l
dHdvcmsoY29uc3QgU3RyaW5nJiBwYXltZW50TmV0d29yaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCA3ZmFmZjBjNThhNjUwOTk2NmEwNjdk
ODQ0YjFiOWM4NWU1NDE5ZTg3Li4wYzQwMTAxOTlmNGJmMjYyNDllMmJkYzBlNzgxMGRmNTA4ZGZl
MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
CkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUVycm9y
KCkKIHsKICAgICBtX2ZhaWxlZCA9IHRydWU7CiAgICAgaWYgKG1fZXJyb3IuaXNOdWxsKCkpCi0g
ICAgICAgIG1fZXJyb3IgPSB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCgpLCAi
RmFpbGVkIHRvIGxvYWQgc2NyaXB0IiwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9Owor
ICAgICAgICBtX2Vycm9yID0geyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwoKSwg
IkZhaWxlZCB0byBsb2FkIHNjcmlwdCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9
OwogICAgIG5vdGlmeUZpbmlzaGVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCAxMGZm
N2U0MmYwYjExYTQ5YTUzZTllYmFkNGViYmNkYTFkYjZmOGE2Li40NzU0MmRkZjQxNmU4ZTM2M2Nj
NzQyNjIyMjY0MTQxNGE0ZmIxZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0xODMsNyArMTgz
LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24oY29uc3Qg
U3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28KICAgICBpZiAoIW9wdGlvbnMuc2NvcGUuaXNF
bXB0eSgpKQogICAgICAgICBqb2JEYXRhLnNjb3BlVVJMID0gY29udGV4dC0+Y29tcGxldGVVUkwo
b3B0aW9ucy5zY29wZSk7CiAgICAgZWxzZQotICAgICAgICBqb2JEYXRhLnNjb3BlVVJMID0gVVJM
KGpvYkRhdGEuc2NyaXB0VVJMLCAiLi8iKTsKKyAgICAgICAgam9iRGF0YS5zY29wZVVSTCA9IFVS
TChqb2JEYXRhLnNjcmlwdFVSTCwgIi4vIl9zKTsKIAogICAgIGlmICgham9iRGF0YS5zY29wZVVS
TC5pc051bGwoKSAmJiAham9iRGF0YS5zY29wZVVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkg
JiYgIWpvYkRhdGEuaXNGcm9tU2VydmljZVdvcmtlclBhZ2UpIHsKICAgICAgICAgQ09OVEFJTkVS
X1JFTEVBU0VfTE9HX0VSUk9SKCJhZGRSZWdpc3RyYXRpb246IHNjb3BlVVJMIHNjaGVtZSBpcyBu
b3QgSFRUUCBvciBIVFRQUyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCBkZmRl
YjBiMmViYzBlNTNjMzA2OWU4MDhmYTkyYTQzZTVjZTVmZTA3Li45NzZkODBiODUwODViNDZmZTdl
YWUwN2Q5MDBkMTYyN2NkMjkzMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAt
MjkzLDcgKzI5Myw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZW5zdXJlVmFsaWRS
ZWNvcmRzVGFibGUoKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNxbGl0ZVJlc3VsdCAhPSBT
UUxJVEVfUk9XKQotICAgICAgICAgICAgcmV0dXJuICJFcnJvciBleGVjdXRpbmcgc3RhdGVtZW50
IHRvIGZldGNoIHNjaGVtYSBmb3IgdGhlIFJlY29yZHMgdGFibGUuIjsKKyAgICAgICAgICAgIHJl
dHVybiAiRXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBmZXRjaCBzY2hlbWEgZm9yIHRoZSBS
ZWNvcmRzIHRhYmxlLiJfczsKIAogICAgICAgICBjdXJyZW50U2NoZW1hID0gc3RhdGVtZW50LT5j
b2x1bW5UZXh0KDEpOwogICAgIH0KQEAgLTMwNiwxNSArMzA2LDE1IEBAIFN0cmluZyBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6ZW5zdXJlVmFsaWRSZWNvcmRzVGFibGUoKQogICAgIHJldHVybiBtYWtl
U3RyaW5nKCJVbmV4cGVjdGVkIHNjaGVtYTogIiwgY3VycmVudFNjaGVtYSk7CiB9CiAKLXN0YXRp
YyBTdHJpbmcgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2Fj
aGUgdXBkYXRlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCB1cGRhdGVWaWFDYWNoZVRvU3RyaW5nKFNl
cnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSB1cGRhdGUpCiB7CiAgICAgc3dpdGNoICh1cGRhdGUp
IHsKICAgICBjYXNlIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTo6SW1wb3J0czoKLSAgICAg
ICAgcmV0dXJuICJJbXBvcnRzIjsKKyAgICAgICAgcmV0dXJuICJJbXBvcnRzIl9zOwogICAgIGNh
c2UgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpBbGw6Ci0gICAgICAgIHJldHVybiAiQWxs
IjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBTZXJ2aWNlV29ya2VyVXBkYXRl
VmlhQ2FjaGU6Ok5vbmU6Ci0gICAgICAgIHJldHVybiAiTm9uZSI7CisgICAgICAgIHJldHVybiAi
Tm9uZSJfczsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MzMyLDEzICszMzIsMTMgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclVwZGF0
ZVZpYUNhY2hlPiBzdHJpbmdUb1VwZGF0ZVZpYUNhY2hlKGNvbnN0IFMKICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCi1zdGF0aWMgU3RyaW5nIHdvcmtlclR5cGVUb1N0cmluZyhXb3JrZXJU
eXBlIHdvcmtlclR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIHdvcmtlclR5cGVUb1N0cmluZyhX
b3JrZXJUeXBlIHdvcmtlclR5cGUpCiB7CiAgICAgc3dpdGNoICh3b3JrZXJUeXBlKSB7CiAgICAg
Y2FzZSBXb3JrZXJUeXBlOjpDbGFzc2ljOgotICAgICAgICByZXR1cm4gIkNsYXNzaWMiOworICAg
ICAgICByZXR1cm4gIkNsYXNzaWMiX3M7CiAgICAgY2FzZSBXb3JrZXJUeXBlOjpNb2R1bGU6Ci0g
ICAgICAgIHJldHVybiAiTW9kdWxlIjsKKyAgICAgICAgcmV0dXJuICJNb2R1bGUiX3M7CiAgICAg
fQogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ2Miw5ICs0NjIsOSBA
QCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3RvcjxT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50
LT5iaW5kVGV4dCgzLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTC5wYXRoKCkudG9TdHJpbmco
KSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRUZXh0
KDQsIGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5kYXRhYmFzZUlkZW50aWZpZXIo
KSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmREb3Vi
bGUoNSwgZGF0YS5yZWdpc3RyYXRpb24ubGFzdFVwZGF0ZVRpbWUuc2Vjb25kc1NpbmNlRXBvY2go
KS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+
YmluZFRleHQoNiwgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhkYXRhLnJlZ2lzdHJhdGlvbi51cGRh
dGVWaWFDYWNoZSkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50
LT5iaW5kVGV4dCg2LCBTdHJpbmdWaWV3IHsgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhkYXRhLnJl
Z2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSkgfSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8
fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRUZXh0KDcsIGRhdGEuc2NyaXB0VVJMLnN0cmluZygpKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZFRleHQoOCwg
d29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkpICE9IFNRTElURV9PSworICAgICAg
ICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kVGV4dCg4LCBTdHJpbmdWaWV3IHsgd29ya2Vy
VHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkgfSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAg
ICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRCbG9iKDksIFNwYW4geyBjc3BFbmNvZGVyLmJ1ZmZl
cigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSB9KSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAg
IHx8IGluc2VydFN0YXRlbWVudC0+YmluZEJsb2IoMTAsIFNwYW4geyBjb2VwRW5jb2Rlci5idWZm
ZXIoKSwgY29lcEVuY29kZXIuYnVmZmVyU2l6ZSgpIH0pICE9IFNRTElURV9PSwogICAgICAgICAg
ICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kVGV4dCgxMSwgZGF0YS5yZWZlcnJlclBvbGljeSkg
IT0gU1FMSVRFX09LCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGIzZWUwYmVlMWNmOTBmZjFjM2IyYjdhNjhiYjk3YTUzNjYz
MTEyNGMuLmY2MTEwNjExNmE0YmY2NzUyNjQ0YTI0ZWFlMTlmNTViNGFhOWZhMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBA
IC00MTUsNyArNDE1LDcgQEAgdm9pZCBTV1NlcnZlcjo6c2NoZWR1bGVKb2IoU2VydmljZVdvcmtl
ckpvYkRhdGEmJiBqb2JEYXRhKQogICAgICAgICAgICAgaWYgKGpvYlF1ZXVlLnNpemUoKSA9PSAx
KQogICAgICAgICAgICAgICAgIGpvYlF1ZXVlLnJ1bk5leHRKb2IoKTsKICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICByZWplY3RKb2Ioam9iRGF0YSwgeyBUeXBlRXJyb3IsICJKb2IgcmVqZWN0
ZWQgZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIiB9KTsKKyAgICAgICAgICAgIHJlamVjdEpvYihq
b2JEYXRhLCB7IFR5cGVFcnJvciwgIkpvYiByZWplY3RlZCBmb3Igbm9uIGFwcC1ib3VuZCBkb21h
aW4iX3MgfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJl
ZC9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IGFlODNmMzJkNWI2ZDg4ZTRjMTRkNmQyOTliZWRjMDA5
NTYxMzFlNWIuLmNiYWNiNGEyMDA1ZGIyNWUxNWFmMDFkM2ZlNDgxOTE1ZGU1ZTFlYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1NoYXJlZFdvcmtlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyLmNwcApAQCAtNjgs
NyArNjgsNyBAQCBzdGF0aWMgaW5saW5lIFNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24qIG1h
aW5UaHJlYWRDb25uZWN0aW9uKCkKIEV4Y2VwdGlvbk9yPFJlZjxTaGFyZWRXb3JrZXI+PiBTaGFy
ZWRXb3JrZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHNjcmlwdFVSTFN0
cmluZywgc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBXb3JrZXJPcHRpb25zPj4m
JiBtYXliZU9wdGlvbnMpCiB7CiAgICAgaWYgKCFtYWluVGhyZWFkQ29ubmVjdGlvbigpKQotICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJTaGFyZWQgd29ya2Vy
cyBhcmUgbm90IHN1cHBvcnRlZCIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1
cHBvcnRlZEVycm9yLCAiU2hhcmVkIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiX3MgfTsKIAog
ICAgIGF1dG8gdXJsID0gZG9jdW1lbnQuY29tcGxldGVVUkwoc2NyaXB0VVJMU3RyaW5nKTsKICAg
ICBpZiAoIXVybC5pc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Q
YWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggN2M5YTE4YWQ2YTgwOTVmMTE4OTE2ZDYz
MGI5MWNiYmQ0N2NkNjVjZi4uYjhkODUwMjY1MGMyNWQ5NTA2NmZiYTI0MzgyZTczMzExZjVlMTgy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmNwcApAQCAtNzksMTYgKzc5LDE2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsCiAK
ICAgICAvLyBWYWxpZGF0ZSB0aGF0IHBhaW50Q29uc3RydWN0b3IgaXMgYSBWb2lkRnVuY3Rpb24K
ICAgICBpZiAoIXBhaW50Q29uc3RydWN0b3ItPmlzQ2FsbGFibGUodm0pKQotICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAicGFpbnRDb25zdHJ1Y3RvciBtdXN0IGJlIGNhbGxh
YmxlIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAicGFpbnRDb25z
dHJ1Y3RvciBtdXN0IGJlIGNhbGxhYmxlIl9zIH07CiAKICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgZmlyc3QgYXJndW1l
bnQgbXVzdCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciwgIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IG5vdCBiZSB0aGUgZW1w
dHkgc3RyaW5nIl9zIH07CiAKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBwYWludERl
ZmluaXRpb25Mb2NrKCkgfTsKIAogICAgICAgICBpZiAocGFpbnREZWZpbml0aW9uTWFwKCkuY29u
dGFpbnMobmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE1vZGlm
aWNhdGlvbkVycm9yLCAiVGhpcyBuYW1lIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCIgfTsK
KyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJUaGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIl9zIH07CiAKICAgICAgICAg
VmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOwogCkBAIC0xMTksMTkgKzExOSwxOSBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChK
U0M6OkpTR2xvYmFsT2JqZWN0JiBnbAogICAgICAgICAvLyBGSVhNRTogQ29udmVydCB0byBQYWlu
dFJlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzIGhlcmUgKHN0ZXAgMTQpLgogCiAgICAgICAgIGlm
ICghcGFpbnRDb25zdHJ1Y3Rvci0+aXNDb25zdHJ1Y3Rvcih2bSkpCi0gICAgICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEg
Y29uc3RydWN0b3IiIH07CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9y
LCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgY29uc3RydWN0b3IiX3MgfTsKIAogICAg
ICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gcGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZnbG9i
YWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7
CiAKICAgICAgICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBo
YXZlIGEgcHJvdG90eXBlIHRoYXQgaXMgYW4gb2JqZWN0IiB9OworICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBoYXZlIGEg
cHJvdG90eXBlIHRoYXQgaXMgYW4gb2JqZWN0Il9zIH07CiAKICAgICAgICAgSlNWYWx1ZSBwYWlu
dFZhbHVlID0gcHJvdG90eXBlVmFsdWUuZ2V0KCZnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJwYWludCIpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAogICAgICAgICBpZiAo
cGFpbnRWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciwgIlRoZSBjbGFzcyBtdXN0IGhhdmUgYSBwYWludCBtZXRob2QiIH07CisgICAg
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIGNsYXNzIG11c3QgaGF2
ZSBhIHBhaW50IG1ldGhvZCJfcyB9OwogCiAgICAgICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJh
Y2s+IHBhaW50ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFj
az4+KGdsb2JhbE9iamVjdCwgcGFpbnRWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAxMzZjMDUz
ZTU0YzEwODYzOTJmNGQwNGNlNzJlNDQyN2FmMWE2MDU3Li43NGRmMjc1MTc4Y2E4ODBmODlmOTI5
OTY1ODg3Mjk2ZDBkZjM1YTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFdvcmtsZXRHbG9iYWxT
Y29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9uKCkKIFN0cmluZyBXb3JrbGV0R2xvYmFsU2NvcGU6
OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQp
Ci0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAg
cmV0dXJuIG1fZG9jdW1lbnQtPnVzZXJBZ2VudCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJv
cnMuY3BwCmluZGV4IGQ2YWNlYWYxNGMxNjlmOWZmOGUwNTgwMTAwMzZhMjU3ODdhNjJlMGQuLjZk
ZjNmMGM5M2VmNDU2MGIyOTc2M2Q4YjE0ZmQyODU3MjhkYmM3NjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxF
cnJvcnMuY3BwCkBAIC02MywxMSArNjMsMTEgQEAgdm9pZCBYTUxFcnJvcnM6OmhhbmRsZUVycm9y
KEVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBUZXh0UG9zaXRpb24gcG8KICAg
ICBpZiAodHlwZSA9PSBmYXRhbCB8fCAobV9lcnJvckNvdW50IDwgbWF4RXJyb3JzICYmICghbV9s
YXN0RXJyb3JQb3NpdGlvbiB8fCAobV9sYXN0RXJyb3JQb3NpdGlvbi0+bV9saW5lICE9IHBvc2l0
aW9uLm1fbGluZSAmJiBtX2xhc3RFcnJvclBvc2l0aW9uLT5tX2NvbHVtbiAhPSBwb3NpdGlvbi5t
X2NvbHVtbikpKSkgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSB3YXJu
aW5nOgotICAgICAgICAgICAgYXBwZW5kRXJyb3JNZXNzYWdlKCJ3YXJuaW5nIiwgcG9zaXRpb24s
IG1lc3NhZ2UpOworICAgICAgICAgICAgYXBwZW5kRXJyb3JNZXNzYWdlKCJ3YXJuaW5nIl9zLCBw
b3NpdGlvbiwgbWVzc2FnZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBmYXRh
bDoKICAgICAgICAgY2FzZSBub25GYXRhbDoKLSAgICAgICAgICAgIGFwcGVuZEVycm9yTWVzc2Fn
ZSgiZXJyb3IiLCBwb3NpdGlvbiwgbWVzc2FnZSk7CisgICAgICAgICAgICBhcHBlbmRFcnJvck1l
c3NhZ2UoImVycm9yIl9zLCBwb3NpdGlvbiwgbWVzc2FnZSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBtX2xhc3RFcnJvclBvc2l0aW9uID0gcG9zaXRpb247CkBAIC03NSw3ICs3NSw3IEBAIHZvaWQg
WE1MRXJyb3JzOjpoYW5kbGVFcnJvcihFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2Fn
ZSwgVGV4dFBvc2l0aW9uIHBvCiAgICAgfQogfQogCi12b2lkIFhNTEVycm9yczo6YXBwZW5kRXJy
b3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgVGV4dFBvc2l0aW9uIHBvc2l0aW9u
LCBjb25zdCBjaGFyKiBtZXNzYWdlKQordm9pZCBYTUxFcnJvcnM6OmFwcGVuZEVycm9yTWVzc2Fn
ZShBU0NJSUxpdGVyYWwgdHlwZVN0cmluZywgVGV4dFBvc2l0aW9uIHBvc2l0aW9uLCBjb25zdCBj
aGFyKiBtZXNzYWdlKQogewogICAgIC8vIDx0eXBlU3RyaW5nPiBvbiBsaW5lIDxsaW5lTnVtYmVy
PiBhdCBjb2x1bW4gPGNvbHVtbk51bWJlcj46IDxtZXNzYWdlPgogICAgIG1fZXJyb3JNZXNzYWdl
cy5hcHBlbmQodHlwZVN0cmluZywgIiBvbiBsaW5lICIsIHBvc2l0aW9uLm1fbGluZS5vbmVCYXNl
ZEludCgpLCAiIGF0IGNvbHVtbiAiLCBwb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpLCAi
OiAiLCBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMu
aCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaAppbmRleCBhZmM5MDAxYTc2MTYzYjY1
YzhkM2JjYTczZTE3ZDg5OTZjMzM2ZjQ0Li5kODVhNDRhMzIzZTUyMGUyNjQ2ZjVlYjMzNTg2ZmUz
OWNlNWI1MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCkBAIC00OCw3ICs0OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGluc2VydEVycm9yTWVzc2FnZUJsb2NrKCk7CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCBhcHBlbmRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBUZXh0UG9z
aXRpb24sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOworICAgIHZvaWQgYXBwZW5kRXJyb3JNZXNzYWdl
KEFTQ0lJTGl0ZXJhbCB0eXBlU3RyaW5nLCBUZXh0UG9zaXRpb24sIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpOwogCiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAgICAgaW50IG1fZXJyb3JDb3VudCB7
IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDg5NWRjOWQwODU1
MGFkNjA4ZTU5NzljNzA4ZDVhOWFhMGE1NDRiNzAuLmU1YmVmMTRiNGQ0MmMyNzhkZjVlNGM0ZGY5
NDE4MTk5NjRkMTQyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAt
ODQsNyArODQsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlQ2hhcnNldEluTWVkaWFUeXBlSWZOZWVk
ZWQoU3RyaW5nJiBtZWRpYVR5cGUpCiAgICAgaWYgKCFwYXJzZWRDb250ZW50VHlwZSB8fCBwYXJz
ZWRDb250ZW50VHlwZS0+Y2hhcnNldCgpLmlzRW1wdHkoKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCksICJVVEYtOCIpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBwYXJzZWRDb250ZW50VHlwZS0+c2V0Q2hhcnNldCgiVVRGLTgiKTsKKyAgICBw
YXJzZWRDb250ZW50VHlwZS0+c2V0Q2hhcnNldCgiVVRGLTgiX3MpOwogICAgIG1lZGlhVHlwZSA9
IHBhcnNlZENvbnRlbnRUeXBlLT5zZXJpYWxpemUoKTsKIH0KIApAQCAtMjIzLDcgKzIyMyw3IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlC
dWZmZXIoKQogRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNldFRpbWVvdXQodW5z
aWduZWQgdGltZW91dCkKIHsKICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0Rv
Y3VtZW50KCkgJiYgIW1fYXN5bmMpIHsKLSAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgIlhNTEh0dHBSZXF1ZXN0LnRpbWVvdXQgY2Fubm90IGJlIHNldCBm
b3Igc3luY2hyb25vdXMgSFRUUChTKSByZXF1ZXN0cyBtYWRlIGZyb20gdGhlIHdpbmRvdyBjb250
ZXh0LiIpOworICAgICAgICBsb2dDb25zb2xlRXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCAiWE1MSHR0cFJlcXVlc3QudGltZW91dCBjYW5ub3QgYmUgc2V0IGZvciBzeW5jaHJvbm91cyBI
VFRQKFMpIHJlcXVlc3RzIG1hZGUgZnJvbSB0aGUgd2luZG93IGNvbnRleHQuIl9zKTsKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwogICAgIH0KICAgICBt
X3RpbWVvdXRNaWxsaXNlY29uZHMgPSB0aW1lb3V0OwpAQCAtMjQ5LDcgKzI0OSw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXNwb25zZVR5cGUoUmVzcG9uc2VUeXBl
IHR5cGUpCiAgICAgLy8gV2UnbGwgb25seSBkaXNhYmxlIHRoaXMgZnVuY3Rpb25hbGl0eSBmb3Ig
SFRUUChTKSByZXF1ZXN0cyBzaW5jZSBzeW5jIHJlcXVlc3RzIGZvciBsb2NhbCBwcm90b2NvbHMK
ICAgICAvLyBzdWNoIGFzIGZpbGU6IGFuZCBkYXRhOiBzdGlsbCBtYWtlIHNlbnNlIHRvIGFsbG93
LgogICAgIGlmICghbV9hc3luYyAmJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1l
bnQoKSAmJiBtX3VybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKLSAgICAgICAgbG9nQ29u
c29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIlhNTEh0dHBSZXF1ZXN0LnJlc3Bv
bnNlVHlwZSBjYW5ub3QgYmUgY2hhbmdlZCBmb3Igc3luY2hyb25vdXMgSFRUUChTKSByZXF1ZXN0
cyBtYWRlIGZyb20gdGhlIHdpbmRvdyBjb250ZXh0LiIpOworICAgICAgICBsb2dDb25zb2xlRXJy
b3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAiWE1MSHR0cFJlcXVlc3QucmVzcG9uc2VUeXBl
IGNhbm5vdCBiZSBjaGFuZ2VkIGZvciBzeW5jaHJvbm91cyBIVFRQKFMpIHJlcXVlc3RzIG1hZGUg
ZnJvbSB0aGUgd2luZG93IGNvbnRleHQuIl9zKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRBY2Nlc3NFcnJvciB9OwogICAgIH0KIApAQCAtMzU0LDEzICszNTQsMTMgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2Qs
IGNvbnN0IFVSTCYgdXJsLCBib28KICAgICAgICAgLy8gV2UnbGwgb25seSBkaXNhYmxlIHRoaXMg
ZnVuY3Rpb25hbGl0eSBmb3IgSFRUUChTKSByZXF1ZXN0cyBzaW5jZSBzeW5jIHJlcXVlc3RzIGZv
ciBsb2NhbCBwcm90b2NvbHMKICAgICAgICAgLy8gc3VjaCBhcyBmaWxlOiBhbmQgZGF0YTogc3Rp
bGwgbWFrZSBzZW5zZSB0byBhbGxvdy4KICAgICAgICAgaWYgKHVybC5wcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCkgJiYgcmVzcG9uc2VUeXBlKCkgIT0gUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykg
ewotICAgICAgICAgICAgbG9nQ29uc29sZUVycm9yKGNvbnRleHQsICJTeW5jaHJvbm91cyBIVFRQ
KFMpIHJlcXVlc3RzIG1hZGUgZnJvbSB0aGUgd2luZG93IGNvbnRleHQgY2Fubm90IGhhdmUgWE1M
SHR0cFJlcXVlc3QucmVzcG9uc2VUeXBlIHNldC4iKTsKKyAgICAgICAgICAgIGxvZ0NvbnNvbGVF
cnJvcihjb250ZXh0LCAiU3luY2hyb25vdXMgSFRUUChTKSByZXF1ZXN0cyBtYWRlIGZyb20gdGhl
IHdpbmRvdyBjb250ZXh0IGNhbm5vdCBoYXZlIFhNTEh0dHBSZXF1ZXN0LnJlc3BvbnNlVHlwZSBz
ZXQuIl9zKTsKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJy
b3IgfTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNpbWlsYXJseSwgdGltZW91dHMgYXJlIGRp
c2FibGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cyBhcyB3ZWxsLgogICAgICAgICBpZiAobV90
aW1lb3V0TWlsbGlzZWNvbmRzID4gMCkgewotICAgICAgICAgICAgbG9nQ29uc29sZUVycm9yKGNv
bnRleHQsICJTeW5jaHJvbm91cyBYTUxIdHRwUmVxdWVzdHMgbXVzdCBub3QgaGF2ZSBhIHRpbWVv
dXQgdmFsdWUgc2V0LiIpOworICAgICAgICAgICAgbG9nQ29uc29sZUVycm9yKGNvbnRleHQsICJT
eW5jaHJvbm91cyBYTUxIdHRwUmVxdWVzdHMgbXVzdCBub3QgaGF2ZSBhIHRpbWVvdXQgdmFsdWUg
c2V0LiJfcyk7CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vy
cm9yIH07CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDA0LDEyICsxMDA0LDEyIEBAIFJlZjxUZXh0
UmVzb3VyY2VEZWNvZGVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlRGVjb2RlcigpIGNvbnN0CiB7
CiAgICAgUEFMOjpUZXh0RW5jb2RpbmcgZmluYWxSZXNwb25zZUNoYXJzZXQgPSB0aGlzLT5maW5h
bFJlc3BvbnNlQ2hhcnNldCgpOwogICAgIGlmIChmaW5hbFJlc3BvbnNlQ2hhcnNldC5pc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxh
aW4iLCBmaW5hbFJlc3BvbnNlQ2hhcnNldCk7CisgICAgICAgIHJldHVybiBUZXh0UmVzb3VyY2VE
ZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsIGZpbmFsUmVzcG9uc2VDaGFyc2V0KTsKIAog
ICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKCkpIHsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RW1w
dHlTdHJpbmc6CiAgICAgICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKHJl
c3BvbnNlTUlNRVR5cGUoKSkpIHsKLSAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IFRleHRSZXNv
dXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7CisgICAgICAgICAgICBhdXRv
IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCJf
cyk7CiAgICAgICAgICAgICAvLyBEb24ndCBzdG9wIG9uIGVuY29kaW5nIGVycm9ycywgdW5saWtl
IGl0IGlzIGRvbmUgZm9yIG90aGVyIGtpbmRzIG9mIFhNTCByZXNvdXJjZXMuIFRoaXMgbWF0Y2hl
cyB0aGUgYmVoYXZpb3Igb2YgcHJldmlvdXMgV2ViS2l0IHZlcnNpb25zLCBGaXJlZm94IGFuZCBP
cGVyYS4KICAgICAgICAgICAgIGRlY29kZXItPnVzZUxlbmllbnRYTUxEZWNvZGluZygpOwogICAg
ICAgICAgICAgcmV0dXJuIGRlY29kZXI7CkBAIC0xMDE3LDExICsxMDE3LDExIEBAIFJlZjxUZXh0
UmVzb3VyY2VEZWNvZGVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlRGVjb2RlcigpIGNvbnN0CiAg
ICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpUZXh0OgogICAgIGNh
c2UgUmVzcG9uc2VUeXBlOjpKc29uOgotICAgICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7CisgICAgICAgIHJldHVybiBUZXh0UmVz
b3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsICJVVEYtOCIpOwogICAgIGNhc2Ug
UmVzcG9uc2VUeXBlOjpEb2N1bWVudDogewogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UocmVzcG9uc2VNSU1FVHlwZSgpLCAidGV4dC9odG1sIikpCi0gICAgICAgICAg
ICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2h0bWwiLCAiVVRGLTgi
KTsKLSAgICAgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJh
cHBsaWNhdGlvbi94bWwiKTsKKyAgICAgICAgICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjcmVhdGUoInRleHQvaHRtbCJfcywgIlVURi04Iik7CisgICAgICAgIGF1dG8gZGVjb2RlciA9
IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIl9zKTsKICAgICAg
ICAgLy8gRG9uJ3Qgc3RvcCBvbiBlbmNvZGluZyBlcnJvcnMsIHVubGlrZSBpdCBpcyBkb25lIGZv
ciBvdGhlciBraW5kcyBvZiBYTUwgcmVzb3VyY2VzLiBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9y
IG9mIHByZXZpb3VzIFdlYktpdCB2ZXJzaW9ucywgRmlyZWZveCBhbmQgT3BlcmEuCiAgICAgICAg
IGRlY29kZXItPnVzZUxlbmllbnRYTUxEZWNvZGluZygpOwogICAgICAgICByZXR1cm4gZGVjb2Rl
cjsKQEAgLTEwMzEsNyArMTAzMSw3IEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlRGVjb2RlcigpIGNvbnN0CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJVVEYtOCIpOworICAgIHJldHVybiBUZXh0UmVzb3Vy
Y2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iX3MsICJVVEYtOCIpOwogfQogCiB2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCmluZGV4IGUzMTU2NWViZTc4ZDliZmRhY2MwZjZh
MWVhMGE1NzJlODU2MmI4OWQuLjlhMGFiYWZkOTVhMTg5ZWIzNDhkOTQ4MjkzMjFhN2Q4MjYzYmJh
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcApAQCAtMzA4LDcgKzMwOCw3IEBAIGlu
bGluZSBQYXJzZXI6OlRva2VuIFBhcnNlcjo6bmV4dFRva2VuSW50ZXJuYWwoKQogICAgICAgICBp
ZiAoaXNCaW5hcnlPcGVyYXRvckNvbnRleHQoKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVG9r
ZW5BbmRBZHZhbmNlKE1VTE9QLCBOdW1lcmljT3A6Ok9QX011bCk7CiAgICAgICAgICsrbV9uZXh0
UG9zOwotICAgICAgICByZXR1cm4gVG9rZW4oTkFNRVRFU1QsICIqIik7CisgICAgICAgIHJldHVy
biBUb2tlbihOQU1FVEVTVCwgIioiX3MpOwogICAgIGNhc2UgJyQnOiB7IC8vICQgUU5hbWUKICAg
ICAgICAgbV9uZXh0UG9zKys7CiAgICAgICAgIFN0cmluZyBuYW1lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hT
TFRQcm9jZXNzb3IuY3BwCmluZGV4IDNkMWNkNGNkMmNiZThlMDZkYzA3NTFlMzUzZGUxODA5OTg0
NTYyYjEuLmJlNThkNmY3NDQxY2QwODNiMjMyYTRjZDQ1ZDQwZTE0ZjQ4YTViYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gWFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9GcmFnbWVudChOb2RlJiBz
b3VyY2VOb2RlLCBEbwogCiAgICAgLy8gSWYgdGhlIG91dHB1dCBkb2N1bWVudCBpcyBIVE1MLCBk
ZWZhdWx0IHRvIEhUTUwgbWV0aG9kLgogICAgIGlmIChvdXRwdXREb2N1bWVudC5pc0hUTUxEb2N1
bWVudCgpKQotICAgICAgICByZXN1bHRNSU1FVHlwZSA9ICJ0ZXh0L2h0bWwiOworICAgICAgICBy
ZXN1bHRNSU1FVHlwZSA9ICJ0ZXh0L2h0bWwiX3M7CiAKICAgICBpZiAoIXRyYW5zZm9ybVRvU3Ry
aW5nKHNvdXJjZU5vZGUsIHJlc3VsdE1JTUVUeXBlLCByZXN1bHRTdHJpbmcsIHJlc3VsdEVuY29k
aW5nKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1
OWYzMzEwMzY0Li41YjJiMDg3Zjg5MDJjNjIwNTk4NmViYTdlYmVjMDk5ODY5MGMyZmM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTgzLDcgKzgz
LDcgQEAgdm9pZCBYU0xUUHJvY2Vzc29yOjpwYXJzZUVycm9yRnVuYyh2b2lkKiB1c2VyRGF0YSwg
eG1sRXJyb3IqIGVycm9yKQogICAgIH0KIAogICAgIC8vIHhtbEVycm9yLT5pbnQyIGlzIHRoZSBj
b2x1bW4gbnVtYmVyIG9mIHRoZSBlcnJvciBvciAwIGlmIE4vQS4KLSAgICBjb25zb2xlLT5hZGRN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlhNTCwgbGV2ZWwsIGVycm9yLT5tZXNzYWdlLCBlcnJvci0+
ZmlsZSwgZXJyb3ItPmxpbmUsIGVycm9yLT5pbnQyKTsKKyAgICBjb25zb2xlLT5hZGRNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OlhNTCwgbGV2ZWwsIFN0cmluZyB7IGVycm9yLT5tZXNzYWdlIH0sIFN0
cmluZyB7IGVycm9yLT5maWxlIH0sIGVycm9yLT5saW5lLCBlcnJvci0+aW50Mik7CiB9CiAKIC8v
IEZJWE1FOiBUaGVyZSBzZWVtcyB0byBiZSBubyB3YXkgdG8gY29udHJvbCB0aGUgY3R4dCBwb2lu
dGVyIGZvciBsb2FkaW5nIGhlcmUsIHRodXMgd2UgaGF2ZSBnbG9iYWxzLgpAQCAtMTAyLDcgKzEw
Miw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmks
CiAgICAgY2FzZSBYU0xUX0xPQURfRE9DVU1FTlQ6IHsKICAgICAgICAgeHNsdFRyYW5zZm9ybUNv
bnRleHRQdHIgY29udGV4dCA9ICh4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciljdHh0OwogICAgICAg
ICB4bWxDaGFyKiBiYXNlID0geG1sTm9kZUdldEJhc2UoY29udGV4dC0+ZG9jdW1lbnQtPmRvYywg
Y29udGV4dC0+bm9kZSk7Ci0gICAgICAgIFVSTCB1cmwoVVJMKHsgfSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oYmFzZSkpLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih1cmkp
KTsKKyAgICAgICAgVVJMIHVybChVUkwoeyB9LCBTdHJpbmcgeyByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihiYXNlKSB9KSwgU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4odXJpKSB9KTsKICAgICAgICAgeG1sRnJlZShiYXNlKTsKICAgICAgICAgUmVzb3VyY2VFcnJv
ciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKQEAgLTMwMCwxMSAr
MzAwLDExIEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHJlc3VsdE1JTUVUeXBlKHhtbERvY1B0ciBy
ZXN1bHREb2MsIHhzbHRTdHlsZXNoZWV0UHRyIHNoZWV0CiAgICAgICAgIHJlc3VsdFR5cGUgPSAo
Y29uc3QgeG1sQ2hhciopImh0bWwiOwogCiAgICAgaWYgKHhtbFN0ckVxdWFsKHJlc3VsdFR5cGUs
IChjb25zdCB4bWxDaGFyKikiaHRtbCIpKQotICAgICAgICByZXR1cm4gInRleHQvaHRtbCI7Cisg
ICAgICAgIHJldHVybiAidGV4dC9odG1sIl9zOwogICAgIGlmICh4bWxTdHJFcXVhbChyZXN1bHRU
eXBlLCAoY29uc3QgeG1sQ2hhciopInRleHQiKSkKLSAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWlu
IjsKKyAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9zOwogCi0gICAgcmV0dXJuICJhcHBsaWNh
dGlvbi94bWwiOworICAgIHJldHVybiAiYXBwbGljYXRpb24veG1sIl9zOwogfQogCiBib29sIFhT
TFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvU3RyaW5nKE5vZGUmIHNvdXJjZU5vZGUsIFN0cmluZyYg
bWltZVR5cGUsIFN0cmluZyYgcmVzdWx0U3RyaW5nLCBTdHJpbmcmIHJlc3VsdEVuY29kaW5nKQpA
QCAtMzc0LDcgKzM3NCw3IEBAIGJvb2wgWFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9TdHJpbmco
Tm9kZSYgc291cmNlTm9kZSwgU3RyaW5nJiBtaW1lVHlwZSwgU3RyaW5nCiAKICAgICAgICAgaWYg
KChzdWNjZXNzID0gc2F2ZVJlc3VsdFRvU3RyaW5nKHJlc3VsdERvYywgc2hlZXQsIHJlc3VsdFN0
cmluZykpKSB7CiAgICAgICAgICAgICBtaW1lVHlwZSA9IHJlc3VsdE1JTUVUeXBlKHJlc3VsdERv
Yywgc2hlZXQpOwotICAgICAgICAgICAgcmVzdWx0RW5jb2RpbmcgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihyZXN1bHREb2MtPmVuY29kaW5nKTsKKyAgICAgICAgICAgIHJlc3VsdEVu
Y29kaW5nID0gU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocmVzdWx0RG9j
LT5lbmNvZGluZykgfTsKICAgICAgICAgfQogICAgICAgICB4bWxGcmVlRG9jKHJlc3VsdERvYyk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
LmNwcAppbmRleCA3ZTZiZjRhYTAzNjUxYWQ2MTc5YTJiYjQ5N2YwYWIzMDhmY2VhNTY2Li4xYWI4
YTM1MjRhNmNkMGY5M2ZjNjVmMWJmODFiNWQ3MzIwZWMxNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBA
IHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUxlYWZUZXh0Tm9kZSgpCiAKICAgICBBU1NF
UlQobV9idWZmZXJlZFRleHQuc2l6ZSgpID09IDApOwogICAgIEFTU0VSVCghbV9sZWFmVGV4dE5v
ZGUpOwotICAgIG1fbGVhZlRleHROb2RlID0gVGV4dDo6Y3JlYXRlKG1fY3VycmVudE5vZGUtPmRv
Y3VtZW50KCksICIiKTsKKyAgICBtX2xlYWZUZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZShtX2N1cnJl
bnROb2RlLT5kb2N1bWVudCgpLCBlbXB0eVN0cmluZygpKTsKICAgICBtX2N1cnJlbnROb2RlLT5w
YXJzZXJBcHBlbmRDaGlsZCgqbV9sZWFmVGV4dE5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXgg
YThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5Mi4uYmRmN2JmYzY3ZGFlMWQ0
MzNhNmJjZDE4YWY2NmJiNDhhNTUzZTM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDU4LDcgKzQ1OCw3
IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIuZG9jdW1lbnQoKTsKICAgICAvLyBTYW1l
IGxvZ2ljIGFzIEhUTUxCYXNlRWxlbWVudDo6aHJlZigpLiBLZWVwIHRoZW0gaW4gc3luYy4KICAg
ICBhdXRvKiBlbmNvZGluZyA9IChkb2N1bWVudCAmJiBkb2N1bWVudC0+ZGVjb2RlcigpKSA/IGRv
Y3VtZW50LT5kZWNvZGVyKCktPmVuY29kaW5nRm9yVVJMUGFyc2luZygpIDogbnVsbHB0cjsKLSAg
ICBVUkwgdXJsKGRvY3VtZW50ID8gZG9jdW1lbnQtPmZhbGxiYWNrQmFzZVVSTCgpIDogVVJMKCks
IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmkpLCBlbmNvZGluZyk7CisgICAg
VVJMIHVybChkb2N1bWVudCA/IGRvY3VtZW50LT5mYWxsYmFja0Jhc2VVUkwoKSA6IFVSTCgpLCBz
dHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoU3RyaW5nIHsgdXJpIH0pLCBlbmNvZGlu
Zyk7CiAKICAgICBpZiAoIXNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKHVybCkpCiAgICAgICAgIHJl
dHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IGE4ZTc0OTk3ZDZjNDA1MGZiMjBl
ODBiZDRhZGJiNzJkODE4NDZmNmMuLjZkYmI1MmRhMjU3ZTc0MDM3MmM2MmRiZDNjMDQ3NzZjNjI3
Yjk1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmNwcApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogaHR0
cE5vdEFsbG93ZWRUZXh0ID0gIk5vdCBBbGxvd2VkIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBodHRw
UmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZVRleHQgPSAiUmVxdWVzdGVkIFJhbmdlIE5vdCBT
YXRpc2ZpYWJsZSI7CiBzdGF0aWMgY29uc3QgY2hhciogaHR0cEludGVybmFsRXJyb3JUZXh0ID0g
IkludGVybmFsIFNlcnZlciBFcnJvciI7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB3ZWJL
aXRCbG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291cmNlIjsKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byB3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291cmNl
Il9zOwogCiBOZXR3b3JrRGF0YVRhc2tCbG9iOjpOZXR3b3JrRGF0YVRhc2tCbG9iKE5ldHdvcmtT
ZXNzaW9uJiBzZXNzaW9uLCBCbG9iUmVnaXN0cnlJbXBsJiBibG9iUmVnaXN0cnksIE5ldHdvcmtE
YXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENv
bnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mIGZpbGVSZWZlcmVuY2VzKQogICAg
IDogTmV0d29ya0RhdGFUYXNrKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OkRvTm90VXNlLCBmYWxzZSwgZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzZTdmOWRkZDkxZGE4NjFmNmIxZmExNTAw
YWJhMDUzMGVhMmU4ODI2Li5mZDU0MDlkNzVmYjI5Y2Q4YWZiNGEzODIwNDdlMTFiMzdiYjViNmIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTIw
NzksNyArMjA3OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVSZW1vdGVXb3JrZXJz
KFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihTbGVlcERpc2FibGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgYm9vbCBkaXNwbGF5KQogewogICAgIE1FU1NB
R0VfQ0hFQ0soIXJlYXNvbi5pc051bGwoKSk7Ci0gICAgYXV0byBzbGVlcERpc2FibGVyID0gbWFr
ZVVuaXF1ZTxXZWJDb3JlOjpTbGVlcERpc2FibGVyPihyZWFzb24udXRmOCgpLmRhdGEoKSwgZGlz
cGxheSA/IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6RGlzcGxheSA6IFBBTDo6U2xlZXBEaXNh
Ymxlcjo6VHlwZTo6U3lzdGVtKTsKKyAgICBhdXRvIHNsZWVwRGlzYWJsZXIgPSBtYWtlVW5pcXVl
PFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI+KHJlYXNvbiwgZGlzcGxheSA/IFBBTDo6U2xlZXBEaXNh
Ymxlcjo6VHlwZTo6RGlzcGxheSA6IFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6U3lzdGVtKTsK
ICAgICBtX3NsZWVwRGlzYWJsZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKHNsZWVwRGlzYWJs
ZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDkw
ZmJiNmRkODMzZWFhYTE5NTIyYThkY2IwNjI4MTE5OTAwZTUyNWMuLmNmNTc5YTQzMzcwMmI1YjAw
YzM2ZTBlZjUyZjhlNTk5NGRlYzA1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVX
ZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAg
ICAgICB9KTsKICAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLmluc3RhbGwoKTsKIAotICAg
ICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQubG9nTWVt
U3RhdHMiLCBbXSB7CisgICAgICAgIFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjaygiY29tLmFw
cGxlLldlYktpdC5sb2dNZW1TdGF0cyJfcywgW10gewogICAgICAgICAgICAgV2ViQ29yZTo6bG9n
TWVtb3J5U3RhdGlzdGljcyhMb2dNZW1vcnlTdGF0aXN0aWNzUmVhc29uOjpEZWJ1Z05vdGlmaWNh
dGlvbik7CiAgICAgICAgIH0pOwogICAgIH0K
</data>
<flag name="commit-queue"
          id="484154"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>