<?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>206862</bug_id>
          
          <creation_ts>2020-01-27 21:24:42 -0800</creation_ts>
          <short_desc>Replace RGBA32 typedef with a class to improve type safety</short_desc>
          <delta_ts>2020-07-03 11:26:04 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>annulen</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1611801</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-27 21:24:42 -0800</bug_when>
    <thetext>Replace RGBA32 typedef with a class to improve type safety</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611806</commentid>
    <comment_count>1</comment_count>
      <attachid>388967</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-27 21:48:15 -0800</bug_when>
    <thetext>Created attachment 388967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611813</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-27 21:51:52 -0800</bug_when>
    <thetext>First of multiple steps to improve Color and ExtendedColor. Next step will be putting SimpleColor in its own source file. Then use Optional&lt;SimpleColor&gt; for cases where we don’t always have a color, but don&apos;t need to specify a color space, support extended color, or support the notion of a semantic color. Then change Color operations so they all do something sensible when called on an ExtendedColor. Then change the Color constructor to make a SimpleColor, not an ExtendedColor, when that can be done losslessly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611816</commentid>
    <comment_count>3</comment_count>
      <attachid>388970</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-27 22:03:52 -0800</bug_when>
    <thetext>Created attachment 388970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611961</commentid>
    <comment_count>4</comment_count>
      <attachid>389011</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-28 08:57:43 -0800</bug_when>
    <thetext>Created attachment 389011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612311</commentid>
    <comment_count>5</comment_count>
      <attachid>389101</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-28 20:28:06 -0800</bug_when>
    <thetext>Created attachment 389101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612944</commentid>
    <comment_count>6</comment_count>
      <attachid>389246</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-30 07:24:16 -0800</bug_when>
    <thetext>Created attachment 389246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613735</commentid>
    <comment_count>7</comment_count>
      <attachid>389460</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-01 08:54:01 -0800</bug_when>
    <thetext>Created attachment 389460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613754</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-01 15:35:36 -0800</bug_when>
    <thetext>I don’t understand the api-ios failure. Is it real? If it is real, can I get a backtrace from the segfault that happens in the test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613926</commentid>
    <comment_count>9</comment_count>
      <attachid>389460</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-02-03 07:11:43 -0800</bug_when>
    <thetext>Comment on attachment 389460
Patch

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

&gt; Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm:131
&gt; +    HistoricMemoryCategoryInfo(unsigned category, unsigned rgba, String name, bool subcategory = false)

I think uint32_t would be slightly better here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614912</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-04 19:47:21 -0800</bug_when>
    <thetext>Committed r255785: &lt;https://trac.webkit.org/changeset/255785&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614913</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-04 19:48:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/59176489&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615129</commentid>
    <comment_count>12</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-02-05 10:50:38 -0800</bug_when>
    <thetext>Follow up build fix for internal bots https://trac.webkit.org/changeset/255817/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668553</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-03 06:58:59 -0700</bug_when>
    <thetext>I suspect this patch triggered these warnings (in GTK at least):

In file included from DerivedSources/WebCore/unified-sources/UnifiedSource-3c72abbe-17.cpp:3:
../../Source/WebCore/platform/graphics/BitmapImage.cpp:240:84: warning: implicit conversion from &apos;double&apos; to &apos;uint8_t&apos; (aka &apos;unsigned char&apos;) changes value from 0.5 to 0 [-Wliteral-conversion]
                fillWithSolidColor(context, destRect, Color::yellow.colorWithAlpha(0.5), options.compositeOperator());
                                                                    ~~~~~~~~~~~~~~ ^~~
../../Source/WebCore/platform/graphics/BitmapImage.cpp:251:80: warning: implicit conversion from &apos;double&apos; to &apos;uint8_t&apos; (aka &apos;unsigned char&apos;) changes value from 0.5 to 0 [-Wliteral-conversion]
            fillWithSolidColor(context, destRect, Color::yellow.colorWithAlpha(0.5), options.compositeOperator());
                                                                ~~~~~~~~~~~~~~ ^~~
../../Source/WebCore/platform/graphics/BitmapImage.cpp:269:84: warning: implicit conversion from &apos;double&apos; to &apos;uint8_t&apos; (aka &apos;unsigned char&apos;) changes value from 0.5 to 0 [-Wliteral-conversion]
                fillWithSolidColor(context, destRect, Color::yellow.colorWithAlpha(0.5), options.compositeOperator());
                                                                    ~~~~~~~~~~~~~~ ^~~
3 warnings generated.


Because SimpleColor doesn&apos;t have a colorWithAlpha(Optional&lt;float&gt;) method. Should it be added?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668599</commentid>
    <comment_count>14</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-03 10:50:31 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #13)
&gt; I suspect this patch triggered these warnings (in GTK at least):
&gt; 
&gt; In file included from
&gt; DerivedSources/WebCore/unified-sources/UnifiedSource-3c72abbe-17.cpp:3:
&gt; ../../Source/WebCore/platform/graphics/BitmapImage.cpp:240:84: warning:
&gt; implicit conversion from &apos;double&apos; to &apos;uint8_t&apos; (aka &apos;unsigned char&apos;) changes
&gt; value from 0.5 to 0 [-Wliteral-conversion]
&gt;                 fillWithSolidColor(context, destRect,
&gt; Color::yellow.colorWithAlpha(0.5), options.compositeOperator());
&gt;                                                                    
&gt; ~~~~~~~~~~~~~~ ^~~
&gt; ../../Source/WebCore/platform/graphics/BitmapImage.cpp:251:80: warning:
&gt; implicit conversion from &apos;double&apos; to &apos;uint8_t&apos; (aka &apos;unsigned char&apos;) changes
&gt; value from 0.5 to 0 [-Wliteral-conversion]
&gt;             fillWithSolidColor(context, destRect,
&gt; Color::yellow.colorWithAlpha(0.5), options.compositeOperator());
&gt;                                                                
&gt; ~~~~~~~~~~~~~~ ^~~
&gt; ../../Source/WebCore/platform/graphics/BitmapImage.cpp:269:84: warning:
&gt; implicit conversion from &apos;double&apos; to &apos;uint8_t&apos; (aka &apos;unsigned char&apos;) changes
&gt; value from 0.5 to 0 [-Wliteral-conversion]
&gt;                 fillWithSolidColor(context, destRect,
&gt; Color::yellow.colorWithAlpha(0.5), options.compositeOperator());
&gt;                                                                    
&gt; ~~~~~~~~~~~~~~ ^~~
&gt; 3 warnings generated.
&gt; 
&gt; 
&gt; Because SimpleColor doesn&apos;t have a colorWithAlpha(Optional&lt;float&gt;) method.
&gt; Should it be added?

Oh, yeah. I will fix this right away. Wonder why we don&apos;t have that warning on for other platforms. Will look into that too. Thanks for bringing it to my attention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668606</commentid>
    <comment_count>15</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-03 11:26:04 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #14)
&gt; (In reply to Philippe Normand from comment #13)
&gt; &gt; I suspect this patch triggered these warnings (in GTK at least):
&gt; &gt; 
&gt; &gt; In file included from
&gt; &gt; DerivedSources/WebCore/unified-sources/UnifiedSource-3c72abbe-17.cpp:3:
&gt; &gt; ../../Source/WebCore/platform/graphics/BitmapImage.cpp:240:84: warning:
&gt; &gt; implicit conversion from &apos;double&apos; to &apos;uint8_t&apos; (aka &apos;unsigned char&apos;) changes
&gt; &gt; value from 0.5 to 0 [-Wliteral-conversion]
&gt; &gt;                 fillWithSolidColor(context, destRect,
&gt; &gt; Color::yellow.colorWithAlpha(0.5), options.compositeOperator());
&gt; &gt;                                                                    
&gt; &gt; ~~~~~~~~~~~~~~ ^~~
&gt; &gt; ../../Source/WebCore/platform/graphics/BitmapImage.cpp:251:80: warning:
&gt; &gt; implicit conversion from &apos;double&apos; to &apos;uint8_t&apos; (aka &apos;unsigned char&apos;) changes
&gt; &gt; value from 0.5 to 0 [-Wliteral-conversion]
&gt; &gt;             fillWithSolidColor(context, destRect,
&gt; &gt; Color::yellow.colorWithAlpha(0.5), options.compositeOperator());
&gt; &gt;                                                                
&gt; &gt; ~~~~~~~~~~~~~~ ^~~
&gt; &gt; ../../Source/WebCore/platform/graphics/BitmapImage.cpp:269:84: warning:
&gt; &gt; implicit conversion from &apos;double&apos; to &apos;uint8_t&apos; (aka &apos;unsigned char&apos;) changes
&gt; &gt; value from 0.5 to 0 [-Wliteral-conversion]
&gt; &gt;                 fillWithSolidColor(context, destRect,
&gt; &gt; Color::yellow.colorWithAlpha(0.5), options.compositeOperator());
&gt; &gt;                                                                    
&gt; &gt; ~~~~~~~~~~~~~~ ^~~
&gt; &gt; 3 warnings generated.
&gt; &gt; 
&gt; &gt; 
&gt; &gt; Because SimpleColor doesn&apos;t have a colorWithAlpha(Optional&lt;float&gt;) method.
&gt; &gt; Should it be added?
&gt; 
&gt; Oh, yeah. I will fix this right away. Wonder why we don&apos;t have that warning
&gt; on for other platforms. Will look into that too. Thanks for bringing it to
&gt; my attention.

Filed https://bugs.webkit.org/show_bug.cgi?id=213931 to fix this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388967</attachid>
            <date>2020-01-27 21:48:15 -0800</date>
            <delta_ts>2020-01-27 22:03:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206862-20200127214809.patch</filename>
            <type>text/plain</type>
            <size>71307</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI2OWY4NzgzN2EwOWVj
Yzg3N2VhMDRjMGQ5YjZhMzI0MzFlMjA1Yi4uZmQ2YTBjOTA4MzY1NDMzMTk2YmFjNjk2YTI4ZjI2
OTA2Mjc1MTZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAyMC0wMS0yNyAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBSR0JBMzIgdHlw
ZWRlZiB3aXRoIGEgY2xhc3MgdG8gaW1wcm92ZSB0eXBlIHNhZmV0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOiBSZW1vdmUg
UkdCQ29sb3IuaC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogUmVtb3ZlIFJCR0NvbG9yLmNwcC4K
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZSBSR0JD
b2xvci5oIGFuZCBSR0JDb2xvci5jcHAuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgUkdCQ29sb3IuaC4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmdldFJlY3RWYWx1ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JW
YWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGNzcy9EZXByZWNhdGVkQ1NTT01Q
cmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01Qcmlt
aXRpdmVWYWx1ZTo6Z2V0Q291bnRlclZhbHVlIGNvbnN0KTogVXNlCisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlOjpjb3VudGVyVmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NT
T01QcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVlIGNvbnN0KTogVXNlCisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlOjpyZWN0VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NT
T01QcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JWYWx1ZSBjb25zdCk6IFVTZQorICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZTo6aXNSR0JDb2xvciBhbmQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbG9y
LgorCisgICAgICAgICogY3NzL0RlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yLmg6IFN0b3JlIGEgQ29s
b3IgaW5zdGVhZCBvZiBhbiBSR0JBMzIuCisgICAgICAgIFRha2UgYSBDb2xvciBhcmd1bWVudCBp
bnN0ZWFkIG9mIGEgUkdCQ29sb3IgYXJndW1lbnQuIFJlZmFjdG9yZWQgdG8KKyAgICAgICAgdXNl
IGEgY3JlYXRlV3JhcHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBtZW1iZXIgdG8gdGlnaHRlbiB0aGUg
Y29kZS4KKworICAgICAgICAqIGNzcy9SR0JDb2xvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
Y3NzL1JHQkNvbG9yLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBjc3MvU3R5bGVDb2xvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKTogRXhwbGlj
aXRseSBjb252ZXJ0IHRvIFNpbXBsZUNvbG9yCisgICAgICAgIHJhdGhlciB0aGFuIHJlbHlpbmcg
b24gaW5pdGlhbGl6aW5nIGEgQ29sb3IgZnJvbSBhbiBpbnRlZ2VyIEFSR0IgdmFsdWUuCisKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06IFJlbW92ZWQgaW5jbHVkZSBv
ZiBSR0JDb2xvci5oLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKTogVXNlIHRoZSBD
b2xvciBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mCisgICAgICAgIENvbG9yOjpjcmVhdGVVbmNoZWNr
ZWQuCisKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbzo6SGlzdG9yaWNN
ZW1vcnlDYXRlZ29yeUluZm8pOiBVc2UKKyAgICAgICAgZXhwbGljaXQgU2ltcGxlQ29sb3IgcmF0
aGVyIHRoYW4gcmVseWluZyBvbiBpbml0aWFsaXppbmcgYSBDb2xvciBmcm9tIGFuCisgICAgICAg
IGludGVnZXIgQVJHQiB2YWx1ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmNwcDogVXNlIGNvbnN0ZXhwciBmb3IgY29uc3RhbnQgY29sb3JzLgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVJHQik6IEltcGxlbWVudCBieSBjYWxsaW5nIG1ha2VSR0JBLgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZVJHQkEpOiBVc2UgYW4gZXhwbGljaXQgYXJndW1lbnQgbGlzdCB0byBjYWxsIHRo
ZQorICAgICAgICBTaW1wbGVDb2xvciBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Om1h
a2VSR0JBMzJGcm9tRmxvYXRzKTogSW1wbGVtZW50IGJ5IGNhbGxpbmcgbWFrZVJHQkEuCisgICAg
ICAgIChXZWJDb3JlOjpjb2xvcldpdGhPdmVycmlkZUFscGhhKTogVXNlIGFuIGV4cGxpY2l0IGFy
Z3VtZW50IGxpc3QgdG8gY2FsbAorICAgICAgICB0aGUgU2ltcGxlQ29sb3IgY29uc3RydWN0b3Iu
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhleENvbG9ySW50ZXJuYWwpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9yOjpDb2xvcik6IFJlbW92ZWQgdW5uZWVkZWQgY29kZSB0byBzZXQg
dGhlIGNvbG9yCisgICAgICAgIHRvIGludmFsaWQsIHNpbmNlIHRoYXQncyBhbHJlYWR5IHRoZSBk
ZWZhdWx0IGZvciBhIG5ldyBDb2xvciBvYmplY3QuCisgICAgICAgIEFsc28gdHdlYWsgdGhlIGxv
Z2ljIGEgYml0IGFuZCBhZGQgZXhwbGljaXQgYXJndW1lbnQgbGlzdCBmb3IgdGhlCisgICAgICAg
IFNpbXBsZUNvbG9yIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6
OnNlcmlhbGl6YXRpb25Gb3JIVE1MIGNvbnN0KTogQWRkZWQuIEZhY3RvcmVkIG91dCBvZgorICAg
ICAgICB0aGUgQ29sb3I6OnNlcmlhbGl6ZWQgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpD
b2xvcjo6c2VyaWFsaXplZCBjb25zdCk6IENoYW5nZWQgdG8gY2FsbCBzZXJpYWxpemF0aW9uRm9y
SFRNTC4KKyAgICAgICAgKFdlYkNvcmU6OmZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhh
VmFsdWUpOiBSZW5hbWVkIHNsaWdodGx5IHNob3J0ZXIuCisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVDb2xvcjo6c2VyaWFsaXphdGlvbkZvckNTUyBjb25zdCk6IEFkZGVkLiBGYWN0b3JlZCBvdXQg
b2YKKyAgICAgICAgdGhlIENvbG9yOjpjc3NUZXh0IGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3I6OmNzc1RleHQgY29uc3QpOiBDaGFuZ2VkIHRvIGNhbGwgc2VyaWFsaXphdGlvbkZv
ckNTUy4KKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMjo6c2VyaWFsaXphdGlvbkZvclJlbmRlclRy
ZWVBc1RleHQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgRmFjdG9yZWQgb3V0IG9mIG5hbWVGb3JS
ZW5kZXJUcmVlQXNUZXh0LgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6Om5hbWVGb3JSZW5kZXJU
cmVlQXNUZXh0IGNvbnN0KTogQ2hhbmdlZCB0byBjYWxsCisgICAgICAgIHNlcmlhbGl6YXRpb25G
b3JSZW5kZXJUcmVlQXNUZXh0LgorICAgICAgICAoV2ViQ29yZTo6Y29sb3JGcm9tUHJlbXVsdGlw
bGllZEFSR0IpOiBVcGRhdGVkIHRvIHVzZSB0aGUgU2ltcGxlQ29sb3IKKyAgICAgICAgbWVtYmVy
IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIHRoZSByZWQvZ3JlZW4vYmx1ZS9hbHBoYUNoYW5uZWwgZnVu
Y3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6YmxlbmQpOiBVc2UgQ29sb3I6OnRyYW5zcGFyZW50
IGZvciBibGVuZGluZyB3aGVyZSB0aGUgb2xkCisgICAgICAgIGNvZGUgdXNlZCAwIGFuZCByZWxp
ZWQgb24gaG93IHRoYXQgaXMgY29udmVydGVkIHRvIGEgQ29sb3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOiBSZXBsYWNlZCB0aGUgUkdCQTMyIHR5cGVkZWYgYW5kIHRo
ZQorICAgICAgICBSR0JBIGNsYXNzIHdpdGggYSBuZXcgY2xhc3MgbmFtZWQgU2ltcGxlQ29sb3Iu
IERlbGV0ZWQgdGhlIGZvdXIKKyAgICAgICAgcmVkL2dyZWVuL2JsdWUvYWxwaGFDaGFubmVsIGZ1
bmN0aW9ucywgdGhlIENvbG9yIGNvbnN0cnVjdG9yIHRoYXQKKyAgICAgICAgdGFrZXMgYW5kIFJH
QkEsIGFuZCB0aGUgQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCBmdW5jdGlvbi4gQ2hhbmdlZAorICAg
ICAgICB0aGUgY29sb3IgY29uc3RhbnRzIHRvIGFsbCBiZSBjb25zdGV4cHIuIE1vdmVkIHRoZSBp
bmxpbmUgZnVuY3Rpb24KKyAgICAgICAgZGVmaW5pdGlvbnMgdW50aWwgYWZ0ZXIgZXZlcnl0aGlu
ZyBpcyBkZWxjYXJlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6YmxlbmRQaXhl
bCk6IFVzZSB0aGUgaXNWaXNpYmxlIGFuZAorICAgICAgICByZWQvZ3JlZW4vYmx1ZS9hbHBoYUNv
bXBvbmVudCBtZW1iZXIgZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5n
U3RvcmU6OnBpeGVsVmFsdWUgY29uc3QpOiBVc2UgQ29sb3I6OnRyYW5zcGFyZW50CisgICAgICAg
IGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgMCBhbmQgcmVseWluZyBvbiBob3cgdGhhdCBpcyBjb252
ZXJ0ZWQgdG8gYSBDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJh
bWUuaDogUmVtb3ZlZCBpbmNsdWRlIG9mIEltYWdlQmFja2luZ1N0b3JlLmguCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNh
Y2hlZENHQ29sb3IpOiBVc2UgY29uc3RleHByIFNpbXBsZUNvbG9yOjp2YWx1ZSBmdW5jdGlvbiB0
bworICAgICAgICBzd2l0Y2ggb24gYSBTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9sZEFxdWFGb2N1
c1JpbmdDb2xvcik6IFVzZSBhbiBleHBsaWNpdCBTaW1wbGVDb2xvciB0byB0dXJuIGEKKyAgICAg
ICAgaGV4IGludGVnZXIgaW50byBhIENvbG9yIHdpdGhvdXQgcmVseWluZyBvbiBpbXBsaWNpdCBj
b252ZXJzaW9uLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdERldmljZXMpOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3Qm94ZXMpOiBEaXR0
by4gQWxzbyB1c2UgYSBtb2Rlcm4KKyAgICAgICAgZm9yIGxvb3AgaW5zdGVhZCBvZiBpbmRleGlu
Zy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKTog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNhbGN1bGF0ZUJvcmRlclN0eWxlQ29sb3IpOiBEaXR0by4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yIGNvbnN0KTogRGl0dG8uIEFsc28gdXNlZCBuYW1lZCBj
b2xvcnMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnN5c3RlbUNvbG9yIGNvbnN0KTogRGl0dG8uCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdCk6IEFkZGVkIGNoZWNrcyBhZ2Fp
bnN0CisgICAgICAgIENvbG9yOjp0cmFuc3BhcmVudCBpbnN0ZWFkIG9mIGNvbnZlcnRpbmcgdG8g
YW4gaW50ZWdlciBhbmQgY2hlY2tpbmcKKyAgICAgICAgYWdhaW5zdCAwLiBSZW1vdmVkIHVubmVl
ZGVkIGlzVmFsaWQgY2hlY2tzLCBzaW5jZSBpbnZhbGlkIGNvbG9yJ3MgQVJHQgorICAgICAgICB2
YWx1ZSBpcyBDb2xvcjo6dHJhbnNwYXJlbnQuCisKIDIwMjAtMDEtMjcgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIE5lZWQgYSB3YXkgdG8gbWFyayBhIERPTSBhdHRy
aWJ1dGUgYXMgcnVudGltZSBjb25kaXRpb25hbGx5IHJlYWQtd3JpdGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmFi
NjU0MjgxM2JjMmI3OWNmMDJkYWZlNmU5ZDAxMTBjMDBkZGU4Ni4uY2VhYTI2ZjY4NDJiZmU3OTAx
NjE4ODQ0Yzk1ZmE3MzBmZTlhMjZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0w
MS0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBS
R0JBMzIgdHlwZWRlZiB3aXRoIGEgY2xhc3MgdG8gaW1wcm92ZSB0eXBlIHNhZmV0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDb2xvcj46
OmVuY29kZSk6IFVzZSB1aW50MzJfdCBleHBsaWNpdGx5IHRvIGNvbnZlcnQKKyAgICAgICAgdGhl
IGNvbG9yIHZhbHVlIGludG8gYSBTaW1wbGVDb2xvci4KKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxDb2xvcj46OmRlY29kZSk6IFNhbWUgdGhpbmcsIG9ubHkgdGhlIG90aGVyIGRpcmVjdGlv
bi4KKwogMjAyMC0wMS0yNyAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNv
bT4KIAogICAgICAgICBbV2luQ2Fpcm9dW2N1cmxdIEFTU0VSVElPTiBGQUlMRUQ6IHNlc3Npb25J
RCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpIGluIFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6OmRlc3Ryb3lFbmdpbmUgc2luY2UgcjI1NTEzNwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggNTRkYjcxNmFjODdjYWM0ZDAxMzBkZDhhNzk1NTRkMGQ2NzU2OWU2OS4uZDZmZDRj
NWU5OWFhMGNkNjFlYjhkZTJkNGVlZDQxN2VkM2NiZGUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0zMzYsNyArMzM2LDYgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKICAgICBjc3MvTWVkaWFRdWVyeUV4cHJlc3Np
b24uaAogICAgIGNzcy9NZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5oCi0gICAgY3NzL1JHQkNvbG9y
LmgKICAgICBjc3MvUmVjdC5oCiAgICAgY3NzL1N0eWxlQ29sb3IuaAogICAgIGNzcy9TdHlsZVBy
b3BlcnRpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA4ZTA1NThhZjY2NTBjYTQxMzk0ZjUwMTZhMjRj
NDEyMDAyMDdkYzUxLi5hZmQzOTcxMjYxMDM4ZmNmYTJhMTAyZjA4NzdlODlmNTg0MWM4Mjc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtNzc0LDcgKzc3NCw2IEBAIGNzcy9NZWRpYVF1ZXJ5TGlzdC5jcHAK
IGNzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKIGNzcy9NZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5j
cHAKIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCi1jc3MvUkdCQ29sb3Iu
Y3BwCiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAogY3NzL1NlbGVjdG9y
Q2hlY2tlci5jcHAKIGNzcy9TZWxlY3RvckZpbHRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MGQ1MWJlZDA3ODlmODQ1
N2I5ZmM1MDU1NGZkMzJiNzQzMDQwMDkyLi5mYzdhMzg1YjY4MzVhY2JhMWFjYTVjYjYyMGU2NGM3
YTlkYjkzN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zODMxLDcgKzM4MzEsNiBAQAogCQlCQzY5MzI3NDBEN0UyOTM5MDBB
RTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzY5MzI3MjBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dC
YXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QkM2RDQ0RUQwQzA3RjJFRDAwNzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2RDQ0RUIwQzA3RjJFRDAw
NzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudC5oICovOyB9OwogCQlCQzZENkUyNjA5QUY5NDM1
MDBGNTk3NTkgLyogU2Nyb2xsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM2RDZFMjUwOUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzc0REEz
NzEwMTNGM0Y3MDA3OTg3QUQgLyogUkdCQ29sb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzREQTM1MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJD
NzcyQjNDMEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NIZWxwZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzcyQjM2MEM0RUE5MUUwMDgzMjg1RiAvKiBD
U1NIZWxwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlCQzc3MkM0NzBDNEVCMkM2MDA4MzI4NUYgLyogWE1MSHR0cFJlcXVlc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzcyQzQ1MEM0RUIyQzYw
MDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5oICovOyB9OwogCQlCQzc3MkM0RjBDNEVCMzA0MDA4
MzI4NUYgLyogTUlNRVR5cGVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM3NzJDNEQwQzRFQjMwNDAwODMyODVGIC8qIE1JTUVUeXBlUmVn
aXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTMyNDUsOCArMTMyNDQsNiBAQAogCQlCQzZENDRFQTBDMDdGMkVEMDA3MkQyQzkgLyogSlNI
VE1MRW1iZWRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0hUTUxFbWJlZEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzZENDRFQjBDMDdGMkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxFbWJlZEVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2RDZFMjUwOUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZp
ZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbFZpZXcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM3NERBMzUxMDEzRjNGNzAwNzk4N0FEIC8qIFJH
QkNvbG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJHQkNvbG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDNzREQTM2MTAxM0YzRjcwMDc5ODdBRCAvKiBS
R0JDb2xvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSR0JDb2xv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNzcyQjM2MEM0RUE5MUUwMDgz
Mjg1RiAvKiBDU1NIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENT
U0hlbHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzc3MkM0NDBDNEVCMkM2
MDA4MzI4NUYgLyogWE1MSHR0cFJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkM3NzJDNDUwQzRFQjJDNjAwODMyODVGIC8qIFhNTEh0dHBSZXF1ZXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjc3MTEsOCArMjc3MDgsNiBAQAogCQkJCUU0QkJFRDBEMTRG
NDAyNUQwMDNGMEI5OCAvKiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCAqLywKIAkJ
CQk5M0NBNEM5RjA5REY5M0ZBMDBERjg2NzcgLyogcXVpcmtzLmNzcyAqLywKIAkJCQlCQzQzNjhF
NzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICovLAotCQkJCUJDNzREQTM2MTAxM0YzRjcwMDc5
ODdBRCAvKiBSR0JDb2xvci5jcHAgKi8sCi0JCQkJQkM3NERBMzUxMDEzRjNGNzAwNzk4N0FEIC8q
IFJHQkNvbG9yLmggKi8sCiAJCQkJRTQ0QjRCQjExNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9y
Q2hlY2tlci5jcHAgKi8sCiAJCQkJRTQ0QjRCQjIxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9y
Q2hlY2tlci5oICovLAogCQkJCTQzMkQzRkU3MThBODY1ODQwMEQ3REMwMyAvKiBTZWxlY3RvckNo
ZWNrZXJUZXN0RnVuY3Rpb25zLmggKi8sCkBAIC0zMjIzOSw3ICszMjIzNCw2IEBACiAJCQkJRkQz
MTYwQTkxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwQUIxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBRDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiSW5w
dXRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDNzREQTM3MTAxM0YzRjcwMDc5ODdBRCAv
KiBSR0JDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkY1RTEwQTE1NUEwNTAwMEE0MjM0
IC8qIFJvb3RJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUM5MEVGODZENDcw
MDlEMENBRiAvKiBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3M0Y5NUZGMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVjdC5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCAwMzgxZmI0Y2Fj
NzU3MDk2NTYwZTgyNTg5MTg1Y2Q5MmYzZWFjZWIwLi5lNWZjZjY0YWQ4ZmUzZTk4MTA0MmFiOTFk
YmY3MGQyYjhmNWFmNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUg
Ik5vZGUuaCIKICNpbmNsdWRlICJQYWlyLmgiCi0jaW5jbHVkZSAiUkdCQ29sb3IuaCIKICNpbmNs
dWRlICJSZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KQEAgLTg3OCwyOSArODc3LDYgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZh
bHVlOjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiAgICAgfQogfQogCi1FeGNlcHRpb25PcjxDb3VudGVy
Jj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldENvdW50ZXJWYWx1ZSgpIGNvbnN0Ci17Ci0gICAgaWYg
KHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSKQotICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07Ci0gICAgcmV0dXJuICpt
X3ZhbHVlLmNvdW50ZXI7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlY3QmPiBDU1NQcmltaXRpdmVWYWx1
ZTo6Z2V0UmVjdFZhbHVlKCkgY29uc3QKLXsKLSAgICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSAh
PSBDU1NVbml0VHlwZTo6Q1NTX1JFQ1QpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkQWNjZXNzRXJyb3IgfTsKLSAgICByZXR1cm4gKm1fdmFsdWUucmVjdDsKLX0KLQotRXhjZXB0
aW9uT3I8UmVmPFJHQkNvbG9yPj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFJHQkNvbG9yVmFsdWUo
KSBjb25zdAotewotICAgIGlmIChwcmltaXRpdmVVbml0VHlwZSgpICE9IENTU1VuaXRUeXBlOjpD
U1NfUkdCQ09MT1IpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJy
b3IgfTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgcmV0dXJuIGEgbmV3IG9iamVj
dCBmb3IgZWFjaCBpbnZvY2F0aW9uLgotICAgIHJldHVybiBSR0JDb2xvcjo6Y3JlYXRlKG1fdmFs
dWUuY29sb3ItPnJnYigpKTsKLX0KLQogTkVWRVJfSU5MSU5FIFN0cmluZyBDU1NQcmltaXRpdmVW
YWx1ZTo6Zm9ybWF0TnVtYmVyVmFsdWUoU3RyaW5nVmlldyBzdWZmaXgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1ha2VTdHJpbmcobV92YWx1ZS5udW0sIHN1ZmZpeCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4IDc2M2Q0MjBhNzFmYzhhMjM0NWNhMDkxOTk3ZmZiZjk0
NjY3YzhkOGYuLjQ3NDZhYzhkMDdmY2QzZTQ2YjY2Yzg4MGU5OWFmMWYyMmUwNTU0YzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCkBAIC0xNDIsOSArMTQyLDYgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPGZsb2F0PiBnZXRGbG9hdFZhbHVl
KENTU1VuaXRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRTdHJpbmdWYWx1ZShDU1NVbml0VHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgRXhjZXB0aW9uT3I8U3RyaW5nPiBnZXRTdHJpbmdWYWx1ZSgpIGNvbnN0OwotICAg
IFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPENvdW50ZXImPiBnZXRDb3VudGVyVmFsdWUoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWN0Jj4gZ2V0UmVjdFZhbHVl
KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPFJHQkNvbG9yPj4g
Z2V0UkdCQ29sb3JWYWx1ZSgpIGNvbnN0OwogCiAgICAgZG91YmxlIGNvbXB1dGVEZWdyZWVzKCkg
Y29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZENT
U09NUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRDU1NP
TVByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCAwNGJmOTcwNGVmNGMzMDNkN2Y0YzExZDlkYTMzYWNk
MDg4NGE2ZGU5Li5jYzc0ZWZjNzZmZjRjM2MyMGYxMzJiOTZmZTM3ZjEwZTdhYzA1NjUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBzdWNoIGFzIFN0eWxl
Q291bnRlclZhbHVlLCBTdHlsZVJlY3RWYWx1ZSwgYW5kIFN0eWxlQ29sb3JWYWx1ZSwgdGhlc2Ug
bWV0aG9kcyB3aWxsIGdldAogLy8gbW9yZSBjb21wbGljYXRlZC4KIAotCiB1bnNpZ25lZCBzaG9y
dCBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6cHJpbWl0aXZlVHlwZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PihtX3ZhbHVlLT5wcmltaXRp
dmVUeXBlKCkpOwpAQCAtNjQsMjYgKzYzLDI1IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gRGVwcmVj
YXRlZENTU09NUHJpbWl0aXZlVmFsdWU6OmdldFN0cmluZ1ZhbHVlKCkgY29uc3QKIAogRXhjZXB0
aW9uT3I8UmVmPERlcHJlY2F0ZWRDU1NPTUNvdW50ZXI+PiBEZXByZWNhdGVkQ1NTT01QcmltaXRp
dmVWYWx1ZTo6Z2V0Q291bnRlclZhbHVlKCkgY29uc3QKIHsKLSAgICBFeGNlcHRpb25PcjxDb3Vu
dGVyJj4gY291bnRlciA9IG1fdmFsdWUtPmdldENvdW50ZXJWYWx1ZSgpOwotICAgIGlmIChjb3Vu
dGVyLmhhc0V4Y2VwdGlvbigpKQorICAgIGF1dG8qIHZhbHVlID0gbV92YWx1ZS0+Y291bnRlclZh
bHVlKCk7CisgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRBY2Nlc3NFcnJvciB9OwotICAgIHJldHVybiBEZXByZWNhdGVkQ1NTT01Db3VudGVyOjpjcmVh
dGUoY291bnRlci5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgbV9vd25lci5nZXQoKSk7CisgICAgcmV0
dXJuIERlcHJlY2F0ZWRDU1NPTUNvdW50ZXI6OmNyZWF0ZSgqdmFsdWUsIG1fb3duZXIpOwogfQog
ICAgIAogRXhjZXB0aW9uT3I8UmVmPERlcHJlY2F0ZWRDU1NPTVJlY3Q+PiBEZXByZWNhdGVkQ1NT
T01QcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVlKCkgY29uc3QKIHsKLSAgICBFeGNlcHRpb25P
cjxSZWN0Jj4gcmVjdCA9IG1fdmFsdWUtPmdldFJlY3RWYWx1ZSgpOwotICAgIGlmIChyZWN0Lmhh
c0V4Y2VwdGlvbigpKQorICAgIGF1dG8qIHZhbHVlID0gbV92YWx1ZS0+cmVjdFZhbHVlKCk7Cisg
ICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NF
cnJvciB9OwotICAgIHJldHVybiBEZXByZWNhdGVkQ1NTT01SZWN0OjpjcmVhdGUocmVjdC5yZWxl
YXNlUmV0dXJuVmFsdWUoKSwgbV9vd25lci5nZXQoKSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWRD
U1NPTVJlY3Q6OmNyZWF0ZSgqdmFsdWUsIG1fb3duZXIpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8
RGVwcmVjYXRlZENTU09NUkdCQ29sb3I+PiBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6
Z2V0UkdCQ29sb3JWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPFJHQkNvbG9y
Pj4gY29sb3IgPSBtX3ZhbHVlLT5nZXRSR0JDb2xvclZhbHVlKCk7Ci0gICAgaWYgKGNvbG9yLmhh
c0V4Y2VwdGlvbigpKQorICAgIGlmICghbV92YWx1ZS0+aXNSR0JDb2xvcigpKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07Ci0gICAgcmV0dXJuIERlcHJl
Y2F0ZWRDU1NPTVJHQkNvbG9yOjpjcmVhdGUoY29sb3IucmVsZWFzZVJldHVyblZhbHVlKCksIG1f
b3duZXIuZ2V0KCkpOworICAgIHJldHVybiBEZXByZWNhdGVkQ1NTT01SR0JDb2xvcjo6Y3JlYXRl
KG1fb3duZXIsIG1fdmFsdWUtPmNvbG9yKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUkdCQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9EZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oCmluZGV4IDQ2NTUwODU2ZTQxNmIwYjQ4MmE2Mjli
ZmFlZjkwMTA5ODdjZTNmZDkuLjRhM2VkYzc2ODU1NTNiYTFmOGIzZDhkZTc5NGFhNTU0MTU5YjM3
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01SR0JDb2xv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OS0yMDAzIExhcnMgS25vbGwg
KGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0yMSw1NSArMjEsNDQgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRGVwcmVj
YXRlZENTU09NUHJpbWl0aXZlVmFsdWUuaCIKLSNpbmNsdWRlICJSR0JDb2xvci5oIgotI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRGVwcmVjYXRlZENTU09NUkdCQ29sb3IgZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxEZXByZWNhdGVkQ1NTT01SR0JDb2xvcj4gewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8RGVwcmVjYXRlZENTU09NUkdCQ29sb3I+IGNyZWF0ZShjb25zdCBSR0JDb2xvciYgY29sb3Is
IENTU1N0eWxlRGVjbGFyYXRpb24mIG93bmVyKQorICAgIHN0YXRpYyBSZWY8RGVwcmVjYXRlZENT
U09NUkdCQ29sb3I+IGNyZWF0ZShDU1NTdHlsZURlY2xhcmF0aW9uJiBvd25lciwgY29uc3QgQ29s
b3ImIGNvbG9yKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVwcmVjYXRl
ZENTU09NUkdCQ29sb3IoY29sb3IsIG93bmVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yKG93bmVyLCBjb2xvcikpOwogICAgIH0KIAotICAg
IERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlKiByZWQoKSB7IHJldHVybiBtX3JlZC5nZXQo
KTsgfQotICAgIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlKiBncmVlbigpIHsgcmV0dXJu
IG1fZ3JlZW4uZ2V0KCk7IH0KLSAgICBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSogYmx1
ZSgpIHsgcmV0dXJuIG1fYmx1ZS5nZXQoKTsgfQotICAgIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2
ZVZhbHVlKiBhbHBoYSgpIHsgcmV0dXJuIG1fYWxwaGEuZ2V0KCk7IH0KLSAgICAKLSAgICBDb2xv
ciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKG1fcmdiQ29sb3IpOyB9CisgICAgRGVwcmVj
YXRlZENTU09NUHJpbWl0aXZlVmFsdWUmIHJlZCgpIHsgcmV0dXJuIG1fcmVkOyB9CisgICAgRGVw
cmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUmIGdyZWVuKCkgeyByZXR1cm4gbV9ncmVlbjsgfQor
ICAgIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlJiBibHVlKCkgeyByZXR1cm4gbV9ibHVl
OyB9CisgICAgRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUmIGFscGhhKCkgeyByZXR1cm4g
bV9hbHBoYTsgfQorCisgICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9
CiAKIHByaXZhdGU6Ci0gICAgRGVwcmVjYXRlZENTU09NUkdCQ29sb3IoY29uc3QgUkdCQ29sb3Im
IGNvbG9yLCBDU1NTdHlsZURlY2xhcmF0aW9uJiBvd25lcikKLSAgICAgICAgOiBtX3JnYkNvbG9y
KGNvbG9yLnJnYkNvbG9yKCkpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTnVtYmVyVHlwZT4gc3Rh
dGljIFJlZjxEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZT4gY3JlYXRlV3JhcHBlcihDU1NT
dHlsZURlY2xhcmF0aW9uJiBvd25lciwgTnVtYmVyVHlwZSBudW1iZXIpCiAgICAgewotICAgICAg
ICAvLyBSZWQKLSAgICAgICAgdW5zaWduZWQgdmFsdWUgPSAobV9yZ2JDb2xvciA+PiAxNikgJiAw
eEZGOwotICAgICAgICBhdXRvIHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFs
dWUsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAgbV9yZWQgPSByZXN1bHQtPmNy
ZWF0ZURlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVdyYXBwZXIob3duZXIpOwotICAgICAgICAKLSAg
ICAgICAgLy8gR3JlZW4KLSAgICAgICAgdmFsdWUgPSAobV9yZ2JDb2xvciA+PiA4KSAmIDB4RkY7
Ci0gICAgICAgIHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1Vu
aXRUeXBlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAgbV9ncmVlbiA9IHJlc3VsdC0+Y3JlYXRlRGVw
cmVjYXRlZENTU09NUHJpbWl0aXZlV3JhcHBlcihvd25lcik7CisgICAgICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG51bWJlciwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpLT5j
cmVhdGVEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVXcmFwcGVyKG93bmVyKTsKKyAgICB9CiAKLSAg
ICAgICAgLy8gQmx1ZQotICAgICAgICB2YWx1ZSA9IG1fcmdiQ29sb3IgJiAweEZGOwotICAgICAg
ICByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBDU1NVbml0VHlwZTo6
Q1NTX05VTUJFUik7Ci0gICAgICAgIG1fYmx1ZSA9IHJlc3VsdC0+Y3JlYXRlRGVwcmVjYXRlZENT
U09NUHJpbWl0aXZlV3JhcHBlcihvd25lcik7Ci0gICAgICAgIAotICAgICAgICAvLyBBbHBoYQot
ICAgICAgICBmbG9hdCBhbHBoYVZhbHVlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KChtX3JnYkNvbG9y
ID4+IDI0KSAmIDB4RkYpIC8gMHhGRjsKLSAgICAgICAgcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZShhbHBoYVZhbHVlLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7Ci0gICAgICAg
IG1fYWxwaGEgPSByZXN1bHQtPmNyZWF0ZURlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVdyYXBwZXIo
b3duZXIpOworICAgIERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yKENTU1N0eWxlRGVjbGFyYXRpb24m
IG93bmVyLCBjb25zdCBDb2xvciYgY29sb3IpCisgICAgICAgIDogbV9jb2xvcihjb2xvcikKKyAg
ICAgICAgLCBtX3JlZChjcmVhdGVXcmFwcGVyKG93bmVyLCBjb2xvci5yZWQoKSkpCisgICAgICAg
ICwgbV9ncmVlbihjcmVhdGVXcmFwcGVyKG93bmVyLCBjb2xvci5ncmVlbigpKSkKKyAgICAgICAg
LCBtX2JsdWUoY3JlYXRlV3JhcHBlcihvd25lciwgY29sb3IuYmx1ZSgpKSkKKyAgICAgICAgLCBt
X2FscGhhKGNyZWF0ZVdyYXBwZXIob3duZXIsIGNvbG9yLmFscGhhQXNGbG9hdCgpKSkKKyAgICB7
CiAgICAgfQotICAgIAotICAgIFJHQkEzMiBtX3JnYkNvbG9yOwotICAgIFJlZlB0cjxEZXByZWNh
dGVkQ1NTT01QcmltaXRpdmVWYWx1ZT4gbV9yZWQ7Ci0gICAgUmVmUHRyPERlcHJlY2F0ZWRDU1NP
TVByaW1pdGl2ZVZhbHVlPiBtX2dyZWVuOwotICAgIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01Qcmlt
aXRpdmVWYWx1ZT4gbV9ibHVlOwotICAgIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVW
YWx1ZT4gbV9hbHBoYTsKKworICAgIENvbG9yIG1fY29sb3I7CisgICAgUmVmPERlcHJlY2F0ZWRD
U1NPTVByaW1pdGl2ZVZhbHVlPiBtX3JlZDsKKyAgICBSZWY8RGVwcmVjYXRlZENTU09NUHJpbWl0
aXZlVmFsdWU+IG1fZ3JlZW47CisgICAgUmVmPERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVl
PiBtX2JsdWU7CisgICAgUmVmPERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlPiBtX2FscGhh
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1JHQkNvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SR0JDb2xvci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExZWU0MDNmMGNhZjY3MTFiMTE2MTFhYmYxMGRl
MzI4NDk0NDRmZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSR0JDb2xvci5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxSR0JDb2xvcj4gUkdCQ29sb3I6OmNyZWF0ZSh1bnNpZ25l
ZCByZ2JDb2xvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSR0JDb2xvcihyZ2JDb2xv
cikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9SR0JDb2xvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNGM0MWUwMzVkZWM2ZWQ5YTViYTBlNDU2Njg5
MDJkN2FkYzE3YzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEdvb2ds
ZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBD
U1NQcmltaXRpdmVWYWx1ZTsKLQotY2xhc3MgUkdCQ29sb3IgZmluYWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxSR0JDb2xvcj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8UkdCQ29sb3I+IGNyZWF0
ZSh1bnNpZ25lZCByZ2JDb2xvcik7Ci0KLSAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJu
IENvbG9yKG1fcmdiQ29sb3IpOyB9Ci0KLSAgICBSR0JBMzIgcmdiQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX3JnYkNvbG9yOyB9Ci0KLXByaXZhdGU6Ci0gICAgUkdCQ29sb3IodW5zaWduZWQgcmdi
Q29sb3IpCi0gICAgICAgIDogbV9yZ2JDb2xvcihyZ2JDb2xvcikKLSAgICB7Ci0gICAgfQotCi0g
ICAgUkdCQTMyIG1fcmdiQ29sb3I7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVDb2xvci5jcHAKaW5kZXggMjliY2ExOWI5MjQ4NDA0MWNmMjU5MGZmNmVkNmE0
NGNkNDEwYjgxZC4uMWJjMjBmYjcyOTRhNmJiODAxNjY0NWZkZWY1ZTkxZGU1Y2VjNjQ5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZUNvbG9yLmNwcApAQCAtNDEsNyArNDEsNyBAQCBDb2xvciBTdHlsZUNv
bG9yOjpjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVlSUQga2V5d29yZCwgT3B0aW9uU2V0PE9wdGlv
bnM+IG9wdGlvbgogewogICAgIGlmIChjb25zdCBjaGFyKiB2YWx1ZU5hbWUgPSBnZXRWYWx1ZU5h
bWUoa2V5d29yZCkpIHsKICAgICAgICAgaWYgKGNvbnN0IE5hbWVkQ29sb3IqIG5hbWVkQ29sb3Ig
PSBmaW5kQ29sb3IodmFsdWVOYW1lLCBzdHJsZW4odmFsdWVOYW1lKSkpCi0gICAgICAgICAgICBy
ZXR1cm4gQ29sb3IobmFtZWRDb2xvci0+QVJHQlZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBT
aW1wbGVDb2xvciB7IG5hbWVkQ29sb3ItPkFSR0JWYWx1ZSB9OwogICAgIH0KIAogICAgIHJldHVy
biBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29sb3Ioa2V5d29yZCwgb3B0aW9ucyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXgg
YjMyYzEzM2Q1MWU1ZDlhMWRmNTlmMzJiOGMxYjMyMGRlZjdiMWMxYS4uYzM5NTkyNGJkODVmODRh
MGFlMmFmMzM3NDNlZDlmOWY3YzZhM2IxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNTgsNyArNTgsNiBAQAogI2ltcG9ydCAiSFRNTFRh
YmxlQ2VsbEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbXBv
cnQgIkxvYWRlck5TVVJMRXh0cmFzLmgiCi0jaW1wb3J0ICJSR0JDb2xvci5oIgogI2ltcG9ydCAi
UmVuZGVySW1hZ2UuaCIKICNpbXBvcnQgIlJlbmRlclRleHQuaCIKICNpbXBvcnQgIlN0eWxlUHJv
cGVydGllcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
Y3BwCmluZGV4IGIwNDU1MjZlNjIzMTc3YmFkZjI4ZGJkM2IyMTc4ZThhNmY1ZGE2ODAuLjIzZGIw
ZmIzZWFlYzI5OTRhN2ViMjk0MTBjZDY4OTdmMTk1NDM1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0
aWMgdm9pZCBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFF1YWQmCiAgICAgY29udGV4dC5maWxsUGF0aChxdWFkVG9QYXRoKHF1YWQs
IGJvdW5kcykpOwogCiAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRl
T3BlcmF0b3I6OkRlc3RpbmF0aW9uT3V0KTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xv
cjo6Y3JlYXRlVW5jaGVja2VkKDI1NSwgMCwgMCkpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KENvbG9yKDI1NSwgMCwgMCkpOwogICAgIGNvbnRleHQuZmlsbFBhdGgocXVhZFRvUGF0aChjbGlw
UXVhZCwgYm91bmRzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29j
b2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29j
b2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQppbmRleCA1NWI0MDQzYTYwYzA5Zjk1MzEw
YmVhYTA4NzE1ZTZjOWE3N2IxMDMyLi41ZWI2OGFmMmMxNDkyN2JiMDE1MGI1NjJhYjk3OWE2OTIx
YmIwM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNh
Z2VPdmVybGF5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJj
ZVVzYWdlT3ZlcmxheUNvY29hLm1tCkBAIC0xMjgsMTMgKzEyOCwxMyBAQCBzdGF0aWMgQ0dDb2xv
clJlZiBjcmVhdGVDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQogc3Ry
dWN0IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvIHsKICAgICBIaXN0b3JpY01lbW9yeUNhdGVn
b3J5SW5mbygpIHsgfSAvLyBOZWVkZWQgZm9yIHN0ZDo6YXJyYXkuCiAKLSAgICBIaXN0b3JpY01l
bW9yeUNhdGVnb3J5SW5mbyh1bnNpZ25lZCBjYXRlZ29yeSwgUkdCQTMyIHJnYmEsIFN0cmluZyBu
YW1lLCBib29sIHN1YmNhdGVnb3J5ID0gZmFsc2UpCisgICAgSGlzdG9yaWNNZW1vcnlDYXRlZ29y
eUluZm8odW5zaWduZWQgY2F0ZWdvcnksIHVuc2lnbmVkIHJnYmEsIFN0cmluZyBuYW1lLCBib29s
IHN1YmNhdGVnb3J5ID0gZmFsc2UpCiAgICAgICAgIDogbmFtZShXVEZNb3ZlKG5hbWUpKQogICAg
ICAgICAsIGlzU3ViY2F0ZWdvcnkoc3ViY2F0ZWdvcnkpCiAgICAgICAgICwgdHlwZShjYXRlZ29y
eSkKICAgICB7CiAgICAgICAgIGZsb2F0IHIsIGcsIGIsIGE7Ci0gICAgICAgIENvbG9yKHJnYmEp
LmdldFJHQkEociwgZywgYiwgYSk7CisgICAgICAgIENvbG9yIHsgU2ltcGxlQ29sb3IgeyByZ2Jh
IH0gfS5nZXRSR0JBKHIsIGcsIGIsIGEpOwogICAgICAgICBjb2xvciA9IGFkb3B0Q0YoY3JlYXRl
Q29sb3IociwgZywgYiwgYSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3IuY3BwCmluZGV4IDE2NjA3NjRhNDM5YjlhYTE4ZTdmNDEzZmJkNzlmMDVlODcw
YTkyZTQuLmI1YTJhMjRlZGEwYWNhYjc0NTZmMGRhMjY4NzMzZGZkZWJhN2RjZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzcsMTcgKzM3LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIUNPTVBJ
TEVSKE1TVkMpCi1jb25zdCBSR0JBMzIgQ29sb3I6OmJsYWNrOwotY29uc3QgUkdCQTMyIENvbG9y
Ojp3aGl0ZTsKLWNvbnN0IFJHQkEzMiBDb2xvcjo6ZGFya0dyYXk7Ci1jb25zdCBSR0JBMzIgQ29s
b3I6OmdyYXk7Ci1jb25zdCBSR0JBMzIgQ29sb3I6OmxpZ2h0R3JheTsKLWNvbnN0IFJHQkEzMiBD
b2xvcjo6dHJhbnNwYXJlbnQ7Ci0jZW5kaWYKLQotc3RhdGljIGNvbnN0IFJHQkEzMiBsaWdodGVu
ZWRCbGFjayA9IDB4RkY1NDU0NTQ7Ci1zdGF0aWMgY29uc3QgUkdCQTMyIGRhcmtlbmVkV2hpdGUg
PSAweEZGQUJBQkFCOworc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBsaWdodGVuZWRCbGFj
ayB7IDB4RkY1NDU0NTQgfTsKK3N0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgZGFya2VuZWRX
aGl0ZSB7IDB4RkZBQkFCQUIgfTsKIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBwcmVtdWx0aXBs
aWVkQ2hhbm5lbCh1bnNpZ25lZCBjLCB1bnNpZ25lZCBhLCBib29sIGNlaWxpbmcgPSB0cnVlKQog
ewpAQCAtNjEsMTIgKzUyLDEyIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgdW5wcmVtdWx0aXBs
aWVkQ2hhbm5lbCh1bnNpZ25lZCBjLCB1bnNpZ25lZCBhKQogCiBSR0JBMzIgbWFrZVJHQihpbnQg
ciwgaW50IGcsIGludCBiKQogewotICAgIHJldHVybiAweEZGMDAwMDAwIHwgc3RkOjptYXgoMCwg
c3RkOjptaW4ociwgMjU1KSkgPDwgMTYgfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihnLCAyNTUpKSA8
PCA4IHwgc3RkOjptYXgoMCwgc3RkOjptaW4oYiwgMjU1KSk7CisgICAgcmV0dXJuIG1ha2VSR0JB
KHIsIGcsIGIsIDB4RkYpOwogfQogCiBSR0JBMzIgbWFrZVJHQkEoaW50IHIsIGludCBnLCBpbnQg
YiwgaW50IGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGEsIDI1NSkpIDw8
IDI0IHwgc3RkOjptYXgoMCwgc3RkOjptaW4ociwgMjU1KSkgPDwgMTYgfCBzdGQ6Om1heCgwLCBz
dGQ6Om1pbihnLCAyNTUpKSA8PCA4IHwgc3RkOjptYXgoMCwgc3RkOjptaW4oYiwgMjU1KSk7Cisg
ICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGEs
IDB4RkYpKSA8PCAyNCB8IHN0ZDo6bWF4KDAsIHN0ZDo6bWluKHIsIDB4RkYpKSA8PCAxNiB8IHN0
ZDo6bWF4KDAsIHN0ZDo6bWluKGcsIDB4RkYpKSA8PCA4IHwgc3RkOjptYXgoMCwgc3RkOjptaW4o
YiwgMHhGRikpKSB9OwogfQogCiBSR0JBMzIgbWFrZVByZW11bHRpcGxpZWRSR0JBKGludCByLCBp
bnQgZywgaW50IGIsIGludCBhLCBib29sIGNlaWxpbmcpCkBAIC04NywxNCArNzgsMTIgQEAgc3Rh
dGljIGludCBjb2xvckZsb2F0VG9SR0JBQnl0ZShmbG9hdCBmKQogCiBSR0JBMzIgbWFrZVJHQkEz
MkZyb21GbG9hdHMoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsKLSAgICBy
ZXR1cm4gY29sb3JGbG9hdFRvUkdCQUJ5dGUoYSkgPDwgMjQgfCBjb2xvckZsb2F0VG9SR0JBQnl0
ZShyKSA8PCAxNiB8IGNvbG9yRmxvYXRUb1JHQkFCeXRlKGcpIDw8IDggfCBjb2xvckZsb2F0VG9S
R0JBQnl0ZShiKTsKKyAgICByZXR1cm4gbWFrZVJHQkEoY29sb3JGbG9hdFRvUkdCQUJ5dGUociks
IGNvbG9yRmxvYXRUb1JHQkFCeXRlKGcpLCBjb2xvckZsb2F0VG9SR0JBQnl0ZShiKSwgY29sb3JG
bG9hdFRvUkdCQUJ5dGUoYSkpOwogfQogCiBSR0JBMzIgY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShS
R0JBMzIgY29sb3IsIGZsb2F0IG92ZXJyaWRlQWxwaGEpCiB7Ci0gICAgUkdCQTMyIHJnYk9ubHkg
PSBjb2xvciAmIDB4MDBGRkZGRkY7Ci0gICAgUkdCQTMyIHJnYmEgPSByZ2JPbmx5IHwgY29sb3JG
bG9hdFRvUkdCQUJ5dGUob3ZlcnJpZGVBbHBoYSkgPDwgMjQ7Ci0gICAgcmV0dXJuIHJnYmE7Cisg
ICAgcmV0dXJuIHsgKGNvbG9yLnZhbHVlKCkgJiAweDAwRkZGRkZGKSB8IGNvbG9yRmxvYXRUb1JH
QkFCeXRlKG92ZXJyaWRlQWxwaGEpIDw8IDI0IH07CiB9CiAKIFJHQkEzMiBtYWtlUkdCQUZyb21I
U0xBKGZsb2F0IGh1ZSwgZmxvYXQgc2F0dXJhdGlvbiwgZmxvYXQgbGlnaHRuZXNzLCBmbG9hdCBh
bHBoYSkKQEAgLTEzMSwyOCArMTIwLDI4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUhleENv
bG9ySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogbmFtZSwgdW5zaWduZWQgbGVuCiAgICAg
ICAgIHZhbHVlIHw9IHRvQVNDSUlIZXhWYWx1ZShuYW1lW2ldKTsKICAgICB9CiAgICAgaWYgKGxl
bmd0aCA9PSA2KSB7Ci0gICAgICAgIHJnYiA9IDB4RkYwMDAwMDAgfCB2YWx1ZTsKKyAgICAgICAg
cmdiID0geyAweEZGMDAwMDAwIHwgdmFsdWUgfTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIGlmIChsZW5ndGggPT0gOCkgewogICAgICAgICAvLyBXZSBwYXJzZWQgdGhlIHZhbHVl
cyBpbnRvIFJHQkEgb3JkZXIsIGJ1dCB0aGUgUkdCQTMyIHR5cGUKICAgICAgICAgLy8gZXhwZWN0
cyB0aGVtIHRvIGJlIGluIEFSR0Igb3JkZXIsIHNvIHdlIHJpZ2h0IHJvdGF0ZSBlaWdodCBiaXRz
LgotICAgICAgICByZ2IgPSB2YWx1ZSA8PCAyNCB8IHZhbHVlID4+IDg7CisgICAgICAgIHJnYiA9
IHsgdmFsdWUgPDwgMjQgfCB2YWx1ZSA+PiA4IH07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICBpZiAobGVuZ3RoID09IDQpIHsKICAgICAgICAgLy8gI2FiY2QgY29udmVydHMgdG8g
ZGRhYWJiY2MgaW4gUkdCQTMyLgotICAgICAgICByZ2IgPSAodmFsdWUgJiAweEYpIDw8IDI4IHwg
KHZhbHVlICYgMHhGKSA8PCAyNAorICAgICAgICByZ2IgPSB7ICh2YWx1ZSAmIDB4RikgPDwgMjgg
fCAodmFsdWUgJiAweEYpIDw8IDI0CiAgICAgICAgICAgICB8ICh2YWx1ZSAmIDB4RjAwMCkgPDwg
OCB8ICh2YWx1ZSAmIDB4RjAwMCkgPDwgNAogICAgICAgICAgICAgfCAodmFsdWUgJiAweEYwMCkg
PDwgNCB8ICh2YWx1ZSAmIDB4RjAwKQotICAgICAgICAgICAgfCAodmFsdWUgJiAweEYwKSB8ICh2
YWx1ZSAmIDB4RjApID4+IDQ7CisgICAgICAgICAgICB8ICh2YWx1ZSAmIDB4RjApIHwgKHZhbHVl
ICYgMHhGMCkgPj4gNCB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgLy8gI2Fi
YyBjb252ZXJ0cyB0byAjYWFiYmNjCi0gICAgcmdiID0gMHhGRjAwMDAwMAorICAgIHJnYiA9IHsg
MHhGRjAwMDAwMAogICAgICAgICB8ICh2YWx1ZSAmIDB4RjAwKSA8PCAxMiB8ICh2YWx1ZSAmIDB4
RjAwKSA8PCA4CiAgICAgICAgIHwgKHZhbHVlICYgMHhGMCkgPDwgOCB8ICh2YWx1ZSAmIDB4RjAp
IDw8IDQKLSAgICAgICAgfCAodmFsdWUgJiAweEYpIDw8IDQgfCAodmFsdWUgJiAweEYpOworICAg
ICAgICB8ICh2YWx1ZSAmIDB4RikgPDwgNCB8ICh2YWx1ZSAmIDB4RikgfTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtMTY5LDcgKzE1OCw2IEBAIGJvb2wgQ29sb3I6OnBhcnNlSGV4Q29sb3Io
Y29uc3QgVUNoYXIqIG5hbWUsIHVuc2lnbmVkIGxlbmd0aCwgUkdCQTMyJiByZ2IpCiBib29sIENv
bG9yOjpwYXJzZUhleENvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSwgUkdCQTMyJiByZ2IpCiB7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gbmFtZS5sZW5ndGgoKTsKLSAgICAKICAgICBpZiAoIWxlbmd0
aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChuYW1lLmlzOEJpdCgpKQpAQCAtMjM2
LDI2ICsyMjQsMTggQEAgQ29sb3I6OkNvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAg
ICAgIHNldFJHQihjb2xvcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGF1dG8qIGZvdW5k
Q29sb3IgPSBmaW5kTmFtZWRDb2xvcihuYW1lKSkKLSAgICAgICAgICAgIHNldFJHQihmb3VuZENv
bG9yLT5BUkdCVmFsdWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NvbG9yRGF0YS5y
Z2JhQW5kRmxhZ3MgPSBpbnZhbGlkUkdCQUNvbG9yOworICAgICAgICAgICAgc2V0UkdCKHsgZm91
bmRDb2xvci0+QVJHQlZhbHVlIH0pOwogICAgIH0KIH0KIAogQ29sb3I6OkNvbG9yKGNvbnN0IGNo
YXIqIG5hbWUpCiB7Ci0gICAgUkdCQTMyIGNvbG9yOwotICAgIGJvb2wgdmFsaWQ7Ci0gICAgaWYg
KG5hbWVbMF0gPT0gJyMnKQotICAgICAgICB2YWxpZCA9IHBhcnNlSGV4Q29sb3IoKFN0cmluZykm
bmFtZVsxXSwgY29sb3IpOwotICAgIGVsc2UgewotICAgICAgICBjb25zdCBOYW1lZENvbG9yKiBm
b3VuZENvbG9yID0gZmluZENvbG9yKG5hbWUsIHN0cmxlbihuYW1lKSk7Ci0gICAgICAgIGNvbG9y
ID0gZm91bmRDb2xvciA/IGZvdW5kQ29sb3ItPkFSR0JWYWx1ZSA6IDA7Ci0gICAgICAgIHZhbGlk
ID0gZm91bmRDb2xvcjsKLSAgICB9Ci0KLSAgICBpZiAodmFsaWQpCi0gICAgICAgIHNldFJHQihj
b2xvcik7CisgICAgaWYgKG5hbWVbMF0gPT0gJyMnKSB7CisgICAgICAgIFNpbXBsZUNvbG9yIGNv
bG9yOworICAgICAgICBpZiAocGFyc2VIZXhDb2xvcihyZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oJm5hbWVbMV0pLCBzdGQ6OnN0cmxlbigmbmFtZVsxXSksIGNvbG9yKSkKKyAgICAgICAg
ICAgIHNldFJHQihjb2xvcik7CisgICAgfSBlbHNlIGlmIChhdXRvKiBmb3VuZENvbG9yID0gZmlu
ZENvbG9yKG5hbWUsIHN0cmxlbihuYW1lKSkpCisgICAgICAgIHNldFJHQih7IGZvdW5kQ29sb3It
PkFSR0JWYWx1ZSB9KTsKIH0KIAogQ29sb3I6OkNvbG9yKGNvbnN0IENvbG9yJiBvdGhlcikKQEAg
LTMwOSwxNSArMjg5LDE4IEBAIENvbG9yJiBDb2xvcjo6b3BlcmF0b3I9KENvbG9yJiYgb3RoZXIp
CiAgICAgcmV0dXJuICp0aGlzOwogfQogCitTdHJpbmcgU2ltcGxlQ29sb3I6OnNlcmlhbGl6YXRp
b25Gb3JIVE1MKCkgY29uc3QKK3sKKyAgICBpZiAoaXNPcGFxdWUoKSkKKyAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoJyMnLCBoZXgocmVkQ29tcG9uZW50KCksIDIsIExvd2VyY2FzZSksIGhleChn
cmVlbkNvbXBvbmVudCgpLCAyLCBMb3dlcmNhc2UpLCBoZXgoYmx1ZUNvbXBvbmVudCgpLCAyLCBM
b3dlcmNhc2UpKTsKKyAgICByZXR1cm4gc2VyaWFsaXphdGlvbkZvckNTUygpOworfQorCiBTdHJp
bmcgQ29sb3I6OnNlcmlhbGl6ZWQoKSBjb25zdAogewogICAgIGlmIChpc0V4dGVuZGVkKCkpCiAg
ICAgICAgIHJldHVybiBhc0V4dGVuZGVkKCkuY3NzVGV4dCgpOwotCi0gICAgaWYgKGlzT3BhcXVl
KCkpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCcjJywgaGV4KHJlZCgpLCAyLCBMb3dlcmNh
c2UpLCBoZXgoZ3JlZW4oKSwgMiwgTG93ZXJjYXNlKSwgaGV4KGJsdWUoKSwgMiwgTG93ZXJjYXNl
KSk7Ci0KLSAgICByZXR1cm4gY3NzVGV4dCgpOworICAgIHJldHVybiByZ2IoKS5zZXJpYWxpemF0
aW9uRm9ySFRNTCgpOwogfQogCiBzdGF0aWMgY2hhciBkZWNpbWFsRGlnaXQodW5zaWduZWQgbnVt
YmVyKQpAQCAtMzI2LDcgKzMwOSw3IEBAIHN0YXRpYyBjaGFyIGRlY2ltYWxEaWdpdCh1bnNpZ25l
ZCBudW1iZXIpCiAgICAgcmV0dXJuICcwJyArIG51bWJlcjsKIH0KIAotc3RhdGljIHN0ZDo6YXJy
YXk8Y2hhciwgND4gc2VyaWFsaXplZEZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhhVmFs
dWUodWludDhfdCBhbHBoYSkKK3N0YXRpYyBzdGQ6OmFycmF5PGNoYXIsIDQ+IGZyYWN0aW9uRGln
aXRzRm9yRnJhY3Rpb25hbEFscGhhVmFsdWUodWludDhfdCBhbHBoYSkKIHsKICAgICBBU1NFUlQo
YWxwaGEgPiAwKTsKICAgICBBU1NFUlQoYWxwaGEgPCAweEZGKTsKQEAgLTMzNywyNyArMzIwLDM2
IEBAIHN0YXRpYyBzdGQ6OmFycmF5PGNoYXIsIDQ+IHNlcmlhbGl6ZWRGcmFjdGlvbkRpZ2l0c0Zv
ckZyYWN0aW9uYWxBbHBoYVZhbHVlKHVpbnQ4CiAgICAgcmV0dXJuIHsgeyBkZWNpbWFsRGlnaXQo
KGFscGhhICogMTAgKyAweDdGKSAvIDB4RkYpLCAnXDAnLCAnXDAnLCAnXDAnIH0gfTsKIH0KIAot
U3RyaW5nIENvbG9yOjpjc3NUZXh0KCkgY29uc3QKK1N0cmluZyBTaW1wbGVDb2xvcjo6c2VyaWFs
aXphdGlvbkZvckNTUygpIGNvbnN0CiB7Ci0gICAgaWYgKGlzRXh0ZW5kZWQoKSkKLSAgICAgICAg
cmV0dXJuIGFzRXh0ZW5kZWQoKS5jc3NUZXh0KCk7Ci0gICAgdWludDhfdCBhbHBoYSA9IHRoaXMt
PmFscGhhKCk7Ci0gICAgc3dpdGNoIChhbHBoYSkgeworICAgIHN3aXRjaCAoYWxwaGFDb21wb25l
bnQoKSkgewogICAgIGNhc2UgMDoKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJnYmEoIiwg
cmVkKCksICIsICIsIGdyZWVuKCksICIsICIsIGJsdWUoKSwgIiwgMCkiKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcoInJnYmEoIiwgcmVkQ29tcG9uZW50KCksICIsICIsIGdyZWVuQ29tcG9u
ZW50KCksICIsICIsIGJsdWVDb21wb25lbnQoKSwgIiwgMCkiKTsKICAgICBjYXNlIDB4RkY6Ci0g
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJyZ2IoIiwgcmVkKCksICIsICIsIGdyZWVuKCksICIs
ICIsIGJsdWUoKSwgJyknKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJnYigiLCByZWRD
b21wb25lbnQoKSwgIiwgIiwgZ3JlZW5Db21wb25lbnQoKSwgIiwgIiwgYmx1ZUNvbXBvbmVudCgp
LCAnKScpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJyZ2JhKCIs
IHJlZCgpLCAiLCAiLCBncmVlbigpLCAiLCAiLCBibHVlKCksICIsIDAuIiwgc2VyaWFsaXplZEZy
YWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhhVmFsdWUoYWxwaGEpLmRhdGEoKSwgJyknKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJnYmEoIiwgcmVkQ29tcG9uZW50KCksICIsICIs
IGdyZWVuQ29tcG9uZW50KCksICIsICIsIGJsdWVDb21wb25lbnQoKSwgIiwgMC4iLCBmcmFjdGlv
bkRpZ2l0c0ZvckZyYWN0aW9uYWxBbHBoYVZhbHVlKGFscGhhQ29tcG9uZW50KCkpLmRhdGEoKSwg
JyknKTsKICAgICB9CiB9CiAKK1N0cmluZyBDb2xvcjo6Y3NzVGV4dCgpIGNvbnN0Cit7CisgICAg
aWYgKGlzRXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuIGFzRXh0ZW5kZWQoKS5jc3NUZXh0KCk7
CisgICAgcmV0dXJuIHJnYigpLnNlcmlhbGl6YXRpb25Gb3JDU1MoKTsKK30KKworU3RyaW5nIFJH
QkEzMjo6c2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoKSBjb25zdAoreworICAgIGlm
IChhbHBoYUNvbXBvbmVudCgpIDwgMHhGRikKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJyMn
LCBoZXgocmVkQ29tcG9uZW50KCksIDIpLCBoZXgoZ3JlZW5Db21wb25lbnQoKSwgMiksIGhleChi
bHVlQ29tcG9uZW50KCksIDIpLCBoZXgoYWxwaGFDb21wb25lbnQoKSwgMikpOworICAgIHJldHVy
biBtYWtlU3RyaW5nKCcjJywgaGV4KHJlZENvbXBvbmVudCgpLCAyKSwgaGV4KGdyZWVuQ29tcG9u
ZW50KCksIDIpLCBoZXgoYmx1ZUNvbXBvbmVudCgpLCAyKSk7Cit9CisKIFN0cmluZyBDb2xvcjo6
bmFtZUZvclJlbmRlclRyZWVBc1RleHQoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBIYW5kbGUg
RXh0ZW5kZWRDb2xvcnMuCi0gICAgaWYgKGFscGhhKCkgPCAweEZGKQotICAgICAgICByZXR1cm4g
bWFrZVN0cmluZygnIycsIGhleChyZWQoKSwgMiksIGhleChncmVlbigpLCAyKSwgaGV4KGJsdWUo
KSwgMiksIGhleChhbHBoYSgpLCAyKSk7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoJyMnLCBoZXgo
cmVkKCksIDIpLCBoZXgoZ3JlZW4oKSwgMiksIGhleChibHVlKCksIDIpKTsKKyAgICAvLyBGSVhN
RTogSGFuZGxlIGV4dGVuZGVkIGNvbG9ycy4KKyAgICByZXR1cm4gcmdiKCkuc2VyaWFsaXphdGlv
bkZvclJlbmRlclRyZWVBc1RleHQoKTsKIH0KIAogQ29sb3IgQ29sb3I6OmxpZ2h0KCkgY29uc3QK
QEAgLTU3NSwxMCArNTY3LDkgQEAgdm9pZCBDb2xvcjo6Z2V0SFNWKGRvdWJsZSYgaHVlLCBkb3Vi
bGUmIHNhdHVyYXRpb24sIGRvdWJsZSYgdmFsdWUpIGNvbnN0CiAKIENvbG9yIGNvbG9yRnJvbVBy
ZW11bHRpcGxpZWRBUkdCKFJHQkEzMiBwaXhlbENvbG9yKQogewotICAgIGludCBhbHBoYSA9IGFs
cGhhQ2hhbm5lbChwaXhlbENvbG9yKTsKLSAgICBpZiAoYWxwaGEgJiYgYWxwaGEgPCAyNTUpCi0g
ICAgICAgIHBpeGVsQ29sb3IgPSBtYWtlVW5QcmVtdWx0aXBsaWVkUkdCQShyZWRDaGFubmVsKHBp
eGVsQ29sb3IpLCBncmVlbkNoYW5uZWwocGl4ZWxDb2xvciksIGJsdWVDaGFubmVsKHBpeGVsQ29s
b3IpLCBhbHBoYSk7Ci0gICAgcmV0dXJuIENvbG9yKHBpeGVsQ29sb3IpOworICAgIGlmIChwaXhl
bENvbG9yLmlzVmlzaWJsZSgpICYmICFwaXhlbENvbG9yLmlzT3BhcXVlKCkpCisgICAgICAgIHJl
dHVybiBtYWtlVW5QcmVtdWx0aXBsaWVkUkdCQShwaXhlbENvbG9yLnJlZENvbXBvbmVudCgpLCBw
aXhlbENvbG9yLmdyZWVuQ29tcG9uZW50KCksIHBpeGVsQ29sb3IuYmx1ZUNvbXBvbmVudCgpLCBw
aXhlbENvbG9yLmFscGhhQ29tcG9uZW50KCkpOworICAgIHJldHVybiBwaXhlbENvbG9yOwogfQog
CiBSR0JBMzIgcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpA
QCAtNjAzLDEwICs1OTQsOSBAQCBDb2xvciBibGVuZChjb25zdCBDb2xvciYgZnJvbSwgY29uc3Qg
Q29sb3ImIHRvLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRQcmVtdQogICAgICAgICByZXR1
cm4gQ29sb3IoKTsKIAogICAgIGlmIChibGVuZFByZW11bHRpcGxpZWQpIHsKLSAgICAgICAgLy8g
Q29udHJhcnkgdG8gdGhlIG5hbWUsIFJHQkEzMiBhY3R1YWxseSBzdG9yZXMgQVJHQiwgc28gd2Ug
Y2FuIGluaXRpYWxpemUgQ29sb3IgZGlyZWN0bHkgZnJvbSBwcmVtdWx0aXBsaWVkQVJHQkZyb21D
b2xvcigpLgotICAgICAgICAvLyBBbHNvLCBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcigpIGJh
aWxzIG9uIHplcm8gYWxwaGEsIHNvIHNwZWNpYWwtY2FzZSB0aGF0LgotICAgICAgICBDb2xvciBw
cmVtdWx0RnJvbSA9IGZyb20uYWxwaGEoKSA/IHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKGZy
b20pIDogMDsKLSAgICAgICAgQ29sb3IgcHJlbXVsdFRvID0gdG8uYWxwaGEoKSA/IHByZW11bHRp
cGxpZWRBUkdCRnJvbUNvbG9yKHRvKSA6IDA7CisgICAgICAgIC8vIFNpbmNlIHByZW11bHRpcGxp
ZWRBUkdCRnJvbUNvbG9yKCkgYmFpbHMgb24gemVybyBhbHBoYSwgc3BlY2lhbC1jYXNlIHRoYXQu
CisgICAgICAgIENvbG9yIHByZW11bHRGcm9tID0gZnJvbS5hbHBoYSgpID8gcHJlbXVsdGlwbGll
ZEFSR0JGcm9tQ29sb3IoZnJvbSkgOiBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgICAgIENvbG9y
IHByZW11bHRUbyA9IHRvLmFscGhhKCkgPyBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcih0bykg
OiBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAKICAgICAgICAgQ29sb3IgcHJlbXVsdEJsZW5kZWQoYmxl
bmQocHJlbXVsdEZyb20ucmVkKCksIHByZW11bHRUby5yZWQoKSwgcHJvZ3Jlc3MpLAogICAgICAg
ICAgICAgYmxlbmQocHJlbXVsdEZyb20uZ3JlZW4oKSwgcHJlbXVsdFRvLmdyZWVuKCksIHByb2dy
ZXNzKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCmluZGV4IDhlMzVl
MDk5ZTRhZjMyZDY5NzdlZWJkMmM3MDVjYTc2NmE0M2VmNDQuLjAxNGQxNGVjMDc3NTNlMGQ4NDM2
OGJjMTY1ZDkyODMzZjUxZjg3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTUyLDEzICs1MiwzNyBAQCB0eXBlZGVmIEQyRF9WRUNUT1JfNEYgRDJEMV9W
RUNUT1JfNEY7CiB0eXBlZGVmIHN0cnVjdCBfR2RrUkdCQSBHZGtSR0JBOwogI2VuZGlmCiAKLW5h
bWVzcGFjZSBXVEYgewotY2xhc3MgVGV4dFN0cmVhbTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi10eXBlZGVmIHVuc2lnbmVkIFJHQkEzMjsgLy8gRGVwcmVjYXRlZDogVHlwZSBmb3IgYW4g
UkdCQSBxdWFkcnVwbGV0LiBVc2UgUkdCQSBjbGFzcyBpbnN0ZWFkLgorLy8gQ29sb3IgdmFsdWUg
d2l0aCA4LWJpdCBjb21wb25lbnRzIGZvciByZWQsIGdyZWVuLCBibHVlLCBhbmQgYWxwaGEuCisv
LyBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCBzdG9yZWQgYXMgYSAzMi1iaXQgaW50ZWdlciwgd2l0
aCBhbHBoYSBpbiB0aGUgaGlnaCBiaXRzOiBBUkdCLgorY2xhc3MgU2ltcGxlQ29sb3IgeworcHVi
bGljOgorICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvcih1aW50MzJfdCB2YWx1ZSA9IDApIDogbV92
YWx1ZSB7IHZhbHVlIH0geyB9CisKKyAgICBjb25zdGV4cHIgdWludDMyX3QgdmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICBjb25zdGV4cHIgdWludDhfdCByZWRDb21wb25l
bnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID4+IDE2OyB9CisgICAgY29uc3RleHByIHVpbnQ4
X3QgZ3JlZW5Db21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID4+IDg7IH0KKyAgICBj
b25zdGV4cHIgdWludDhfdCBibHVlQ29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsg
fQorICAgIGNvbnN0ZXhwciB1aW50OF90IGFscGhhQ29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4g
bV92YWx1ZSA+PiAyNDsgfQorCisgICAgY29uc3RleHByIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7
IHJldHVybiBhbHBoYUNvbXBvbmVudCgpID09IDB4RkY7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBp
c1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBhbHBoYUNvbXBvbmVudCgpOyB9CisKKyAgICBTdHJp
bmcgc2VyaWFsaXphdGlvbkZvckhUTUwoKSBjb25zdDsKKyAgICBTdHJpbmcgc2VyaWFsaXphdGlv
bkZvckNTUygpIGNvbnN0OworICAgIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFz
VGV4dCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIHVpbnQzMl90IG1fdmFsdWUgeyAwIH07Cit9
OworCitib29sIG9wZXJhdG9yPT0oU2ltcGxlQ29sb3IsIFNpbXBsZUNvbG9yKTsKK2Jvb2wgb3Bl
cmF0b3IhPShTaW1wbGVDb2xvciwgU2ltcGxlQ29sb3IpOworCisvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgYWZ0ZXIgbWlncmF0aW5nIHRvIHRoZSBuZXcgbmFtZS4KK3VzaW5nIFJHQkEzMiA9IFNpbXBs
ZUNvbG9yOwogCiBXRUJDT1JFX0VYUE9SVCBSR0JBMzIgbWFrZVJHQihpbnQgciwgaW50IGcsIGlu
dCBiKTsKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdCQShpbnQgciwgaW50IGcsIGludCBi
LCBpbnQgYSk7CkBAIC03MywzNiArOTcsOSBAQCBXRUJDT1JFX0VYUE9SVCBSR0JBMzIgbWFrZVJH
QkEzMkZyb21GbG9hdHMoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CiBSR0JB
MzIgbWFrZVJHQkFGcm9tSFNMQShmbG9hdCBoLCBmbG9hdCBzLCBmbG9hdCBsLCBmbG9hdCBhKTsK
IFJHQkEzMiBtYWtlUkdCQUZyb21DTVlLQShmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9h
dCBrLCBmbG9hdCBhKTsKIAotaW5saW5lIGludCByZWRDaGFubmVsKFJHQkEzMiBjb2xvcikgeyBy
ZXR1cm4gKGNvbG9yID4+IDE2KSAmIDB4RkY7IH0KLWlubGluZSBpbnQgZ3JlZW5DaGFubmVsKFJH
QkEzMiBjb2xvcikgeyByZXR1cm4gKGNvbG9yID4+IDgpICYgMHhGRjsgfQotaW5saW5lIGludCBi
bHVlQ2hhbm5lbChSR0JBMzIgY29sb3IpIHsgcmV0dXJuIGNvbG9yICYgMHhGRjsgfQotaW5saW5l
IGludCBhbHBoYUNoYW5uZWwoUkdCQTMyIGNvbG9yKSB7IHJldHVybiAoY29sb3IgPj4gMjQpICYg
MHhGRjsgfQotCiB1aW50OF90IHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoaW50KTsKIHVpbnQ4
X3Qgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChmbG9hdCk7CiAKLWNsYXNzIFJHQkEgewotcHVi
bGljOgotICAgIFJHQkEoKTsgLy8gYWxsIGNoYW5uZWxzIHplcm8sIGluY2x1ZGluZyBhbHBoYQot
ICAgIFJHQkEodWludDhfdCByZWQsIHVpbnQ4X3QgZ3JlZW4sIHVpbnQ4X3QgYmx1ZSwgdWludDhf
dCBhbHBoYSk7Ci0gICAgUkdCQSh1aW50OF90IHJlZCwgdWludDhfdCBncmVlbiwgdWludDhfdCBi
bHVlKTsgLy8gb3BhcXVlLCBhbHBoYSBvZiAxCi0KLSAgICB1aW50OF90IHJlZCgpIGNvbnN0Owot
ICAgIHVpbnQ4X3QgZ3JlZW4oKSBjb25zdDsKLSAgICB1aW50OF90IGJsdWUoKSBjb25zdDsKLSAg
ICB1aW50OF90IGFscGhhKCkgY29uc3Q7Ci0KLSAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7Ci0K
LXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIENvbG9yOwotCi0gICAgdW5zaWduZWQgbV9pbnRl
Z2VyIHsgMCB9OwotfTsKLQotYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJHQkEmLCBjb25zdCBSR0JB
Jik7Ci1ib29sIG9wZXJhdG9yIT0oY29uc3QgUkdCQSYsIGNvbnN0IFJHQkEmKTsKLQogY2xhc3Mg
Q29sb3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTE3LDcg
KzExNCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBlbnVtIFNlbWFudGljVGFnIHsgU2VtYW50
aWMgfTsKLQogICAgIENvbG9yKFJHQkEzMiBjb2xvciwgU2VtYW50aWNUYWcpCiAgICAgewogICAg
ICAgICBzZXRSR0IoY29sb3IpOwpAQCAtMTc1LDcgKzE3MSw2IEBAIHB1YmxpYzoKICAgICAvLyBj
b252ZXJ0ZWQgZXhhY3RseSB0byBpbnRlZ2Vycywgd2Ugc2hvdWxkIG1ha2UgYSBub3JtYWwgQ29s
b3IuCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwg
ZmxvYXQgYSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKTsKIAotICAgIENvbG9yKFJHQkEsIENvbG9y
U3BhY2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgQ29sb3IoQ29sb3ImJik7CiAKQEAgLTE4NSwxNyArMTgwLDYgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9jb2xvckRhdGEuZXh0ZW5kZWRDb2xvci0+ZGVyZWYoKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgQ29sb3IgY3JlYXRlVW5jaGVja2VkKGludCByLCBpbnQgZywgaW50IGIp
Ci0gICAgewotICAgICAgICBSR0JBMzIgY29sb3IgPSAweEZGMDAwMDAwIHwgciA8PCAxNiB8IGcg
PDwgOCB8IGI7Ci0gICAgICAgIHJldHVybiBDb2xvcihjb2xvcik7Ci0gICAgfQotICAgIHN0YXRp
YyBDb2xvciBjcmVhdGVVbmNoZWNrZWQoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCi0gICAg
ewotICAgICAgICBSR0JBMzIgY29sb3IgPSBhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGI7
Ci0gICAgICAgIHJldHVybiBDb2xvcihjb2xvcik7Ci0gICAgfQotCiAgICAgLy8gUmV0dXJucyB0
aGUgY29sb3Igc2VyaWFsaXplZCBhY2NvcmRpbmcgdG8gSFRNTDUKICAgICAvLyA8aHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjZmlsbC1hbmQtc3Ry
b2tlLXN0eWxlcz4gKDEwIFNlcHRlbWJlciAyMDE1KQogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBzZXJpYWxpemVkKCkgY29uc3Q7CkBAIC0yMDcsMTUgKzE5MSwxNSBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgfHwgKG1fY29sb3JE
YXRhLnJnYmFBbmRGbGFncyAmIHZhbGlkUkdCQUNvbG9yQml0KTsgfQogCi0gICAgYm9vbCBpc09w
YXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWQoKSAmJiAoaXNFeHRlbmRlZCgpID8gYXNFeHRl
bmRlZCgpLmFscGhhKCkgPT0gMS4wIDogYWxwaGEoKSA9PSAyNTUpOyB9Ci0gICAgYm9vbCBpc1Zp
c2libGUoKSBjb25zdCB7IHJldHVybiBpc1ZhbGlkKCkgJiYgKGlzRXh0ZW5kZWQoKSA/IGFzRXh0
ZW5kZWQoKS5hbHBoYSgpID4gMC4wIDogYWxwaGEoKSA+IDApOyB9CisgICAgYm9vbCBpc09wYXF1
ZSgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpID09
IDEuMCA6IHJnYigpLmlzT3BhcXVlKCk7IH0KKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsg
cmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpID4gMC4wIDogcmdiKCku
aXNWaXNpYmxlKCk7IH0KIAotICAgIGludCByZWQoKSBjb25zdCB7IHJldHVybiByZWRDaGFubmVs
KHJnYigpKTsgfQotICAgIGludCBncmVlbigpIGNvbnN0IHsgcmV0dXJuIGdyZWVuQ2hhbm5lbChy
Z2IoKSk7IH0KLSAgICBpbnQgYmx1ZSgpIGNvbnN0IHsgcmV0dXJuIGJsdWVDaGFubmVsKHJnYigp
KTsgfQotICAgIGludCBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIGFscGhhQ2hhbm5lbChyZ2IoKSk7
IH0KKyAgICBpbnQgcmVkKCkgY29uc3QgeyByZXR1cm4gcmdiKCkucmVkQ29tcG9uZW50KCk7IH0K
KyAgICBpbnQgZ3JlZW4oKSBjb25zdCB7IHJldHVybiByZ2IoKS5ncmVlbkNvbXBvbmVudCgpOyB9
CisgICAgaW50IGJsdWUoKSBjb25zdCB7IHJldHVybiByZ2IoKS5ibHVlQ29tcG9uZW50KCk7IH0K
KyAgICBpbnQgYWxwaGEoKSBjb25zdCB7IHJldHVybiByZ2IoKS5hbHBoYUNvbXBvbmVudCgpOyB9
CiAKLSAgICBmbG9hdCBhbHBoYUFzRmxvYXQoKSBjb25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkg
PyBhc0V4dGVuZGVkKCkuYWxwaGEoKSA6IHN0YXRpY19jYXN0PGZsb2F0PihhbHBoYUNoYW5uZWwo
cmdiKCkpKSAvIDI1NTsgfQorICAgIGZsb2F0IGFscGhhQXNGbG9hdCgpIGNvbnN0IHsgcmV0dXJu
IGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpIDogc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHJnYigpLmFscGhhQ29tcG9uZW50KCkpIC8gMHhGRjsgfQogCiAgICAgUkdCQTMyIHJnYigpIGNv
bnN0OwogCkBAIC0yNjksMTkgKzI1MywxOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGFy
c2VIZXhDb2xvcihjb25zdCBMQ2hhciosIHVuc2lnbmVkLCBSR0JBMzImKTsKICAgICBzdGF0aWMg
Ym9vbCBwYXJzZUhleENvbG9yKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQsIFJHQkEzMiYpOwogCi0g
ICAgc3RhdGljIGNvbnN0IFJHQkEzMiBibGFjayA9IDB4RkYwMDAwMDA7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGNvbnN0IFJHQkEzMiB3aGl0ZSA9IDB4RkZGRkZGRkY7Ci0gICAgc3RhdGlj
IGNvbnN0IFJHQkEzMiBkYXJrR3JheSA9IDB4RkY4MDgwODA7Ci0gICAgc3RhdGljIGNvbnN0IFJH
QkEzMiBncmF5ID0gMHhGRkEwQTBBMDsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGxpZ2h0R3Jh
eSA9IDB4RkZDMEMwQzA7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFJHQkEzMiB0
cmFuc3BhcmVudCA9IDB4MDAwMDAwMDA7Ci0gICAgc3RhdGljIGNvbnN0IFJHQkEzMiBjeWFuID0g
MHhGRjAwRkZGRjsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIHllbGxvdyA9IDB4RkZGRkZGMDA7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBibGFjayB7IDB4RkYwMDAwMDAgfTsK
KyAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIHdoaXRlIHsgMHhGRkZGRkZGRiB9Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgZGFya0dyYXkgeyAweEZGODA4MDgwIH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBncmF5IHsgMHhGRkEwQTBBMCB9Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgbGlnaHRHcmF5IHsgMHhGRkMwQzBDMCB9
OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgdHJhbnNwYXJlbnQgeyAweDAwMDAw
MDAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBjeWFuIHsgMHhGRjAwRkZG
RiB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgeWVsbG93IHsgMHhGRkZGRkYw
MCB9OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMy
IGNvbXBvc2l0aW9uRmlsbCA9IDB4M0NBRkMwRTM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1w
bGVDb2xvciBjb21wb3NpdGlvbkZpbGwgeyAweDNDQUZDMEUzIH07CiAjZWxzZQotICAgIHN0YXRp
YyBjb25zdCBSR0JBMzIgY29tcG9zaXRpb25GaWxsID0gMHhGRkUxREQ1NTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIFNpbXBsZUNvbG9yIGNvbXBvc2l0aW9uRmlsbCB7IDB4RkZFMURENTUgfTsKICNl
bmRpZgogCiAgICAgYm9vbCBpc0V4dGVuZGVkKCkgY29uc3QKQEAgLTM0Myw0OSArMzI3LDE3IEBA
IHVpbnQxNl90IGZhc3REaXZpZGVCeTI1NSh1aW50MTZfdCk7CiBXRUJDT1JFX0VYUE9SVCBDR0Nv
bG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImKTsKICNlbmRpZgogCi1pbmxpbmUgUkdC
QTo6UkdCQSgpCi17Ci19Ci0KLWlubGluZSBSR0JBOjpSR0JBKHVpbnQ4X3QgcmVkLCB1aW50OF90
IGdyZWVuLCB1aW50OF90IGJsdWUsIHVpbnQ4X3QgYWxwaGEpCi0gICAgOiBtX2ludGVnZXIoYWxw
aGEgPDwgMjQgfCByZWQgPDwgMTYgfCBncmVlbiA8PCA4IHwgYmx1ZSkKLXsKLX0KLQotaW5saW5l
IFJHQkE6OlJHQkEodWludDhfdCByZWQsIHVpbnQ4X3QgZ3JlZW4sIHVpbnQ4X3QgYmx1ZSkKLSAg
ICA6IG1faW50ZWdlcigweEZGMDAwMDAwIHwgcmVkIDw8IDE2IHwgZ3JlZW4gPDwgOCB8IGJsdWUp
Ci17Ci19Ci0KLWlubGluZSB1aW50OF90IFJHQkE6OnJlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1faW50ZWdlciA+PiAxNjsKLX0KLQotaW5saW5lIHVpbnQ4X3QgUkdCQTo6Z3JlZW4oKSBjb25z
dAotewotICAgIHJldHVybiBtX2ludGVnZXIgPj4gODsKLX0KLQotaW5saW5lIHVpbnQ4X3QgUkdC
QTo6Ymx1ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW50ZWdlcjsKLX0KLQotaW5saW5lIHVp
bnQ4X3QgUkdCQTo6YWxwaGEoKSBjb25zdAotewotICAgIHJldHVybiBtX2ludGVnZXIgPj4gMjQ7
Ci19CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgY29uc3QgQ29sb3ImKTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBDb2xvclNwYWNlKTsKIAotaW5saW5lIGJvb2wg
UkdCQTo6aGFzQWxwaGEoKSBjb25zdAoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShTaW1wbGVDb2xv
ciBhLCBTaW1wbGVDb2xvciBiKQogewotICAgIHJldHVybiAobV9pbnRlZ2VyICYgMHhGRjAwMDAw
MCkgIT0gMHhGRjAwMDAwMDsKKyAgICByZXR1cm4gYS52YWx1ZSgpID09IGIudmFsdWUoKTsKIH0K
IAotaW5saW5lIENvbG9yOjpDb2xvcihSR0JBIGNvbG9yLCBDb2xvclNwYWNlIHNwYWNlKQoraW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShTaW1wbGVDb2xvciBhLCBTaW1wbGVDb2xvciBiKQogewotICAg
IHNldFJHQihjb2xvci5tX2ludGVnZXIpOwotICAgIEFTU0VSVF9VTlVTRUQoc3BhY2UsIHNwYWNl
ID09IENvbG9yU3BhY2U6OlNSR0IpOworICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKIGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3ImIGEsIGNvbnN0IENvbG9yJiBiKQpAQCAtNDM3
LDEyICszODksMTIgQEAgaW5saW5lIFJHQkEzMiBDb2xvcjo6cmdiKCkgY29uc3QKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIEFTU0VSVCghaXNFeHRlbmRlZCgpKSBoZXJlLCBvciBwcm9kdWNlCiAg
ICAgLy8gYW4gUkdCQTMyIGVxdWl2YWxlbnQgZm9yIGFuIEV4dGVuZGVkQ29sb3IuIElkZWFsbHkg
dGhlIGZvcm1lciwKICAgICAvLyBzbyB3ZSBjYW4gYXVkaXQgYWxsIHRoZSByZ2IoKSBjYWxsIHNp
dGVzIHRvIGhhbmRsZSBleHRlbmRlZC4KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UkdCQTMyPiht
X2NvbG9yRGF0YS5yZ2JhQW5kRmxhZ3MgPj4gMzIpOworICAgIHJldHVybiB7IHN0YXRpY19jYXN0
PHVpbnQzMl90PihtX2NvbG9yRGF0YS5yZ2JhQW5kRmxhZ3MgPj4gMzIpIH07CiB9CiAKIGlubGlu
ZSB2b2lkIENvbG9yOjpzZXRSR0IoUkdCQTMyIHJnYikKIHsKLSAgICBtX2NvbG9yRGF0YS5yZ2Jh
QW5kRmxhZ3MgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmdiKSA8PCAzMjsKKyAgICBtX2NvbG9y
RGF0YS5yZ2JhQW5kRmxhZ3MgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmdiLnZhbHVlKCkpIDw8
IDMyOwogICAgIHRhZ0FzVmFsaWQoKTsKIH0KIApAQCAtNDUzLDcgKzQwNSw3IEBAIGlubGluZSBi
b29sIENvbG9yOjppc0JsYWNrQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgICAgICByZXR1
cm4gIWV4dGVuZGVkQ29sb3IucmVkKCkgJiYgIWV4dGVuZGVkQ29sb3IuZ3JlZW4oKSAmJiAhZXh0
ZW5kZWRDb2xvci5ibHVlKCkgJiYgZXh0ZW5kZWRDb2xvci5hbHBoYSgpID09IDE7CiAgICAgfQog
Ci0gICAgcmV0dXJuIGNvbG9yLmlzVmFsaWQoKSAmJiBjb2xvci5yZ2IoKSA9PSBDb2xvcjo6Ymxh
Y2s7CisgICAgcmV0dXJuIGNvbG9yLnJnYigpID09IENvbG9yOjpibGFjazsKIH0KIAogaW5saW5l
IGJvb2wgQ29sb3I6OmlzV2hpdGVDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCkBAIC00NjMsMTIg
KzQxNSw5IEBAIGlubGluZSBib29sIENvbG9yOjppc1doaXRlQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQogICAgICAgICByZXR1cm4gZXh0ZW5kZWRDb2xvci5yZWQoKSA9PSAxICYmIGV4dGVuZGVk
Q29sb3IuZ3JlZW4oKSA9PSAxICYmIGV4dGVuZGVkQ29sb3IuYmx1ZSgpID09IDEgJiYgZXh0ZW5k
ZWRDb2xvci5hbHBoYSgpID09IDE7CiAgICAgfQogICAgIAotICAgIHJldHVybiBjb2xvci5pc1Zh
bGlkKCkgJiYgY29sb3IucmdiKCkgPT0gQ29sb3I6OndoaXRlOworICAgIHJldHVybiBjb2xvci5y
Z2IoKSA9PSBDb2xvcjo6d2hpdGU7CiB9CiAKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBDb2xvciYpOwotV0VCQ09SRV9F
WFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9y
U3BhY2UpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3Jl
LmgKaW5kZXggYmFlYmU1MjYxMWRiZTg1NDc3OGFhZDVmMmMwZTY4YzY3ZjE1Y2QwNi4uZjUwMzFh
ZTkxZGFlMTA3ODlmNmM0OWUzODE2NTdjYjhiN2ZhOGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCkBAIC0xNTIsMjAg
KzE1MiwyMCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghYSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpZiAoYSA+PSAyNTUgfHwgIWFscGhhQ2hhbm5lbCgqZGVzdCkpIHsKKyAgICAg
ICAgaWYgKGEgPj0gMjU1IHx8ICFkZXN0LT5pc1Zpc2libGUoKSkgewogICAgICAgICAgICAgc2V0
UGl4ZWwoZGVzdCwgciwgZywgYiwgYSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoIW1fcHJlbXVsdGlwbHlBbHBoYSkKLSAgICAgICAgICAgICpkZXN0ID0g
bWFrZVByZW11bHRpcGxpZWRSR0JBKHJlZENoYW5uZWwoKmRlc3QpLCBncmVlbkNoYW5uZWwoKmRl
c3QpLCBibHVlQ2hhbm5lbCgqZGVzdCksIGFscGhhQ2hhbm5lbCgqZGVzdCksIGZhbHNlKTsKKyAg
ICAgICAgICAgICpkZXN0ID0gbWFrZVByZW11bHRpcGxpZWRSR0JBKGRlc3QtPnJlZENvbXBvbmVu
dCgpLCBkZXN0LT5ncmVlbkNvbXBvbmVudCgpLCBkZXN0LT5ibHVlQ29tcG9uZW50KCksIGRlc3Qt
PmFscGhhQ29tcG9uZW50KCksIGZhbHNlKTsKIAogICAgICAgICB1bnNpZ25lZCBkID0gMjU1IC0g
YTsKIAotICAgICAgICByID0gZmFzdERpdmlkZUJ5MjU1KHIgKiBhICsgcmVkQ2hhbm5lbCgqZGVz
dCkgKiBkKTsKLSAgICAgICAgZyA9IGZhc3REaXZpZGVCeTI1NShnICogYSArIGdyZWVuQ2hhbm5l
bCgqZGVzdCkgKiBkKTsKLSAgICAgICAgYiA9IGZhc3REaXZpZGVCeTI1NShiICogYSArIGJsdWVD
aGFubmVsKCpkZXN0KSAqIGQpOwotICAgICAgICBhICs9IGZhc3REaXZpZGVCeTI1NShkICogYWxw
aGFDaGFubmVsKCpkZXN0KSk7CisgICAgICAgIHIgPSBmYXN0RGl2aWRlQnkyNTUociAqIGEgKyBk
ZXN0LT5yZWRDb21wb25lbnQoKSAqIGQpOworICAgICAgICBnID0gZmFzdERpdmlkZUJ5MjU1KGcg
KiBhICsgZGVzdC0+Z3JlZW5Db21wb25lbnQoKSAqIGQpOworICAgICAgICBiID0gZmFzdERpdmlk
ZUJ5MjU1KGIgKiBhICsgZGVzdC0+Ymx1ZUNvbXBvbmVudCgpICogZCk7CisgICAgICAgIGEgKz0g
ZmFzdERpdmlkZUJ5MjU1KGQgKiBkZXN0LT5hbHBoYUNvbXBvbmVudCgpKTsKIAogICAgICAgICBp
ZiAobV9wcmVtdWx0aXBseUFscGhhKQogICAgICAgICAgICAgKmRlc3QgPSBtYWtlUkdCQShyLCBn
LCBiLCBhKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBwcml2YXRlOgogICAgIFJHQkEzMiBwaXhlbFZh
bHVlKHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpIGNvbnN0
CiAgICAgewogICAgICAgICBpZiAobV9wcmVtdWx0aXBseUFscGhhICYmICFhKQotICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OwogCiAg
ICAgICAgIGlmIChtX3ByZW11bHRpcGx5QWxwaGEgJiYgYSA8IDI1NSkKICAgICAgICAgICAgIHJl
dHVybiBtYWtlUHJlbXVsdGlwbGllZFJHQkEociwgZywgYiwgYSwgZmFsc2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCmluZGV4IDJjYzZiMDJhN2Qz
NTAxNTcxY2YyMDkzNjRiMzZlZDI1YzFkODM5NjkuLjg1NmZlMzRmZTZmNzE3ZjgxNmUzNGE0N2Qz
ZjY4NGJhNjAzYjk0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUZyYW1lLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5j
bHVkZSAiRGVjb2RpbmdPcHRpb25zLmgiCi0jaW5jbHVkZSAiSW1hZ2VCYWNraW5nU3RvcmUuaCIK
ICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgog
I2luY2x1ZGUgIkludFNpemUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHAKaW5kZXggY2RmZmEzZjYwZTlhZDE4ZjJhNDBhOGU4OTg1MmEzNmEz
MzdmNTEwMC4uNzgzOGYzNTMxYzJiZTUwNjU5NTJhZTFjYjM4MTg3YmM5YjcyZTk1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKQEAgLTEy
OCwyMyArMTI4LDIzIEBAIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikKIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7
CiAgICAgaWYgKCFjb2xvci5pc0V4dGVuZGVkKCkpIHsKLSAgICAgICAgc3dpdGNoIChjb2xvci5y
Z2IoKSkgewotICAgICAgICBjYXNlIENvbG9yOjp0cmFuc3BhcmVudDogeworICAgICAgICBzd2l0
Y2ggKGNvbG9yLnJnYigpLnZhbHVlKCkpIHsKKyAgICAgICAgY2FzZSBDb2xvcjo6dHJhbnNwYXJl
bnQudmFsdWUoKTogewogICAgICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgdHJhbnNwYXJlbnRD
R0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAgICAgICAgICAgcmV0dXJuIHRyYW5zcGFy
ZW50Q0dDb2xvcjsKICAgICAgICAgfQotICAgICAgICBjYXNlIENvbG9yOjpibGFjazogeworICAg
ICAgICBjYXNlIENvbG9yOjpibGFjay52YWx1ZSgpOiB7CiAgICAgICAgICAgICBzdGF0aWMgQ0dD
b2xvclJlZiBibGFja0NHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7CiAgICAgICAgICAgICBy
ZXR1cm4gYmxhY2tDR0NvbG9yOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29sb3I6OndoaXRl
OiB7CisgICAgICAgIGNhc2UgQ29sb3I6OndoaXRlLnZhbHVlKCk6IHsKICAgICAgICAgICAgIHN0
YXRpYyBDR0NvbG9yUmVmIHdoaXRlQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKICAgICAg
ICAgICAgIHJldHVybiB3aGl0ZUNHQ29sb3I7CiAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
IAotICAgIEFTU0VSVChjb2xvci5pc0V4dGVuZGVkKCkgfHwgY29sb3IucmdiKCkpOworICAgIEFT
U0VSVChjb2xvci5pc0V4dGVuZGVkKCkgfHwgY29sb3IucmdiKCkudmFsdWUoKSk7CiAKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPENvbG9yLCBSZXRhaW5QdHI8Q0dDb2xv
clJlZj4sIDMyPj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hlLmdldCgpLmdldChjb2xvcikuZ2V0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29s
b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMu
bW0KaW5kZXggMWZmNWI3MjNiZDkyMjdiNmQxMjY5Y2RmOTRlNjNkMjI1MjJiN2Y2MC4uMTg3NDk1
MmFhMmNiMjBmOTY1OGVmMGIyZDRjMzM3ZGY4MGMzNTQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQpAQCAtNDAsNyArNDAsNyBAQCBz
dGF0aWMgYm9vbCB1c2VPbGRBcXVhRm9jdXNSaW5nQ29sb3I7CiAKIENvbG9yIG9sZEFxdWFGb2N1
c1JpbmdDb2xvcigpCiB7Ci0gICAgcmV0dXJuIDB4RkY3REFERDk7CisgICAgcmV0dXJuIFNpbXBs
ZUNvbG9yIHsgMHhGRjdEQUREOSB9OwogfQogCiB2b2lkIHNldFVzZXNUZXN0TW9kZUZvY3VzUmlu
Z0NvbG9yKGJvb2wgbmV3VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IDU4
NDYyZjYyMmMyMGQzZjI4YjI1MzhiNGE0OWE4Y2RjZmRhNTY0YmEuLjE2ZDI4ZmM1NTUzYTU0NTIw
ZGQxNjQ5Y2Q3ODBiNGM4NGQyNGFmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBA
IC04Myw4ICs4Myw4IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPE1vY2tNZWRpYURldmljZT4gZGVm
YXVsdERldmljZXMoKQogICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTEiX3MsICJN
b2NrIHNjcmVlbiBkZXZpY2UgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURl
dmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBDb2xvcjo6bGlnaHRHcmF5LCB7IDM4NDAsIDIxNjAg
fSB9IH0sCiAgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJTQ1JFRU4tMiJfcywgIk1vY2sgc2Ny
ZWVuIGRldmljZSAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlOjpTY3JlZW4sIENvbG9yOjp5ZWxsb3csIHsgMTkyMCwgMTA4MCB9IH0gfSwKIAot
ICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAxIl9z
LCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3Jl
ZW4sIDB4ZmZmMWI1LCB7IDY0MCwgNDgwIH0gfSB9LAotICAgICAgICBNb2NrTWVkaWFEZXZpY2Ug
eyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMg
eyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIDB4ZmZkMGI1LCB7IDEyODAsIDYw
MCB9IH0gfSwKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9jayB3
aW5kb3cgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNl
VHlwZTo6U2NyZWVuLCBTaW1wbGVDb2xvciB7IDB4ZmZmMWI1IH0sIHsgNjQwLCA0ODAgfSB9IH0s
CisgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1vY2sgd2luZG93IDIi
X3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNj
cmVlbiwgU2ltcGxlQ29sb3IgeyAweGZmZDBiNSB9LCB7IDEyODAsIDYwMCB9IH0gfSwKICAgICB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDVhYzlkNjYwNmM0MjIxMjQ4YmM0MWRlOTM4OWNl
NWM4N2U0YTQxN2IuLjY3ZDJhMTdmY2QwNDg3ZjhkOTg0MjYzMzk2NDQ1YWY3MDlkYWE5MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwCkBAIC0yNjIsMTIgKzI2MiwxMCBAQCB2b2lkIE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpkcmF3QW5pbWF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIAogdm9p
ZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0JveGVzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkKIHsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIG1hZ2VudGEgPSAweGZmZmYwMGZmOwot
ICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgeWVsbG93ID0gMHhmZmZmZmYwMDsKLSAgICBzdGF0aWMg
Y29uc3QgUkdCQTMyIGJsdWUgPSAweGZmMDAwMGZmOwotICAgIHN0YXRpYyBjb25zdCBSR0JBMzIg
cmVkID0gMHhmZmZmMDAwMDsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGdyZWVuID0gMHhmZjAw
ODAwMDsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGN5YW4gPSAweEZGMDBGRkZGOworICAgIGNv
bnN0ZXhwciBTaW1wbGVDb2xvciBtYWdlbnRhIHsgMHhmZmZmMDBmZiB9OworICAgIGNvbnN0ZXhw
ciBTaW1wbGVDb2xvciBibHVlIHsgMHhmZjAwMDBmZiB9OworICAgIGNvbnN0ZXhwciBTaW1wbGVD
b2xvciByZWQgeyAweGZmZmYwMDAwIH07CisgICAgY29uc3RleHByIFNpbXBsZUNvbG9yIGRhcmtH
cmVlbiB7IDB4ZmYwMDgwMDAgfTsKIAogICAgIEludFNpemUgc2l6ZSA9IGNhcHR1cmVTaXplKCk7
CiAgICAgZmxvYXQgYm94U2l6ZSA9IHNpemUud2lkdGgoKSAqIC4wMzU7CkBAIC0zMTcsOSArMzE1
LDkgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0JveGVzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKIAogICAgIGJveFRvcCArPSBib3hTaXplICsgMjsKICAgICBib3hMZWZ0
ID0gYm94U2l6ZTsKLSAgICBDb2xvciBib3hDb2xvcnNbXSA9IHsgQ29sb3I6OndoaXRlLCB5ZWxs
b3csIGN5YW4sIGdyZWVuLCBtYWdlbnRhLCByZWQsIGJsdWUgfTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZW9mKGJveENvbG9ycykgLyBzaXplb2YoYm94Q29sb3JzWzBdKTsgaSsr
KSB7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KGJveExlZnQsIGJveFRvcCwg
Ym94U2l6ZSArIDEsIGJveFNpemUgKyAxKSwgYm94Q29sb3JzW2ldKTsKKyAgICBjb25zdGV4cHIg
U2ltcGxlQ29sb3IgYm94Q29sb3JzW10gPSB7IENvbG9yOjp3aGl0ZSwgQ29sb3I6OnllbGxvdywg
Q29sb3I6OmN5YW4sIGRhcmtHcmVlbiwgbWFnZW50YSwgcmVkLCBibHVlIH07CisgICAgZm9yIChh
dXRvJiBib3hDb2xvciA6IGJveENvbG9ycykgeworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEZs
b2F0UmVjdChib3hMZWZ0LCBib3hUb3AsIGJveFNpemUgKyAxLCBib3hTaXplICsgMSksIGJveENv
bG9yKTsKICAgICAgICAgYm94TGVmdCArPSBib3hTaXplICsgMTsKICAgICB9CiAgICAgY29udGV4
dC5zdHJva2VQYXRoKG1fcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKaW5kZXggZWQ4YWJiNGExNDZhYmM3MTBjNDVjNDc3
MzBkYjg1MDAzZGU2NmM0OS4uNWE2NzVhMjVlYmIyMDZjNzQ2YmQ0NGNjMjJhNDUwYzI4NzZjYTZj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVt
ZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhl
bWVNb2NrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpzY3Jv
bGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUsIFNjcgogCiB2
b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdHJhY2tS
ZWN0KQogewotICAgIGNvbnRleHQuZmlsbFJlY3QodHJhY2tSZWN0LCBzY3JvbGxiYXIuZW5hYmxl
ZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IENvbG9yKDB4RkZFMEUwRTApKTsKKyAgICBjb250ZXh0
LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdy
YXkgOiBTaW1wbGVDb2xvciB7IDB4RkZFMEUwRTAgfSk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhl
bWVNb2NrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggOThjZGQ4YmVmZGJhMWJhNzgyYzAzZTZiMjUyMWRj
YTgwNzVmY2RhYi4uM2RmNDU1YjA2MzEyZWU1Y2Q2MWY3ZWQxYmI4OGM3Yzc1NzdjYjNkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE4MzcsOSArMTgz
NywxMSBAQCBSZW5kZXJGcmFnbWVudGVkRmxvdyogUmVuZGVyT2JqZWN0Ojpsb2NhdGVFbmNsb3Np
bmdGcmFnbWVudGVkRmxvdygpIGNvbnN0CiB2b2lkIFJlbmRlck9iamVjdDo6Y2FsY3VsYXRlQm9y
ZGVyU3R5bGVDb2xvcihjb25zdCBCb3JkZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJveFNpZGUmIHNp
ZGUsIENvbG9yJiBjb2xvcikKIHsKICAgICBBU1NFUlQoc3R5bGUgPT0gQm9yZGVyU3R5bGU6Oklu
c2V0IHx8IHN0eWxlID09IEJvcmRlclN0eWxlOjpPdXRzZXQpOworCiAgICAgLy8gVGhpcyB2YWx1
ZXMgd2VyZSBkZXJpdmVkIGVtcGlyaWNhbGx5LgotICAgIGNvbnN0IFJHQkEzMiBiYXNlRGFya0Nv
bG9yID0gMHhGRjIwMjAyMDsKLSAgICBjb25zdCBSR0JBMzIgYmFzZUxpZ2h0Q29sb3IgPSAweEZG
RUJFQkVCOworICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBiYXNlRGFya0NvbG9yIHsgMHhGRjIw
MjAyMCB9OworICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBiYXNlTGlnaHRDb2xvciB7IDB4RkZF
QkVCRUIgfTsKKwogICAgIGVudW0gT3BlcmF0aW9uIHsgRGFya2VuLCBMaWdodGVuIH07CiAKICAg
ICBPcGVyYXRpb24gb3BlcmF0aW9uID0gKHNpZGUgPT0gQlNUb3AgfHwgc2lkZSA9PSBCU0xlZnQp
ID09IChzdHlsZSA9PSBCb3JkZXJTdHlsZTo6SW5zZXQpID8gRGFya2VuIDogTGlnaHRlbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDBjMzViNGYxNzYxMmQ0
N2E2NjQ1OGQzZjM3MjY1NzFlYmFiZjlhZjcuLjYwOTdiNGM2YTNlOWViZDMxOTI5MjZmZTM5Mzli
OGJiNWQ3ZmVlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApA
QCAtMTI4NSw3MyArMTI4NSw3MiBAQCBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoQ1NT
VmFsdWVJRCBjc3NWYWx1ZUlkLCBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aQogewogICAgIHN3
aXRjaCAoY3NzVmFsdWVJZCkgewogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMaW5rOgotICAgICAg
ICByZXR1cm4gb3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yOjpPcHRpb25zOjpGb3JWaXNpdGVk
TGluaykgPyAweEZGNTUxQThCIDogMHhGRjAwMDBFRTsKKyAgICAgICAgcmV0dXJuIG9wdGlvbnMu
Y29udGFpbnMoU3R5bGVDb2xvcjo6T3B0aW9uczo6Rm9yVmlzaXRlZExpbmspID8gU2ltcGxlQ29s
b3IgeyAweEZGNTUxQThCIH0gOiBTaW1wbGVDb2xvciB7IDB4RkYwMDAwRUUgfTsKICAgICBjYXNl
IENTU1ZhbHVlV2Via2l0QWN0aXZlbGluazoKLSAgICAgICAgcmV0dXJuIDB4RkZGRjAwMDA7Cisg
ICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZGRjAwMDAgfTsKICAgICBjYXNlIENTU1Zh
bHVlQWN0aXZlYm9yZGVyOgotICAgICAgICByZXR1cm4gMHhGRkZGRkZGRjsKKyAgICAgICAgcmV0
dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlQWN0aXZlYnV0dG9udGV4dDoKLSAg
ICAgICAgcmV0dXJuIDB4RkYwMDAwMDA7CisgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAg
ICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWNhcHRpb246Ci0gICAgICAgIHJldHVybiAweEZGQ0NDQ0ND
OworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGQ0NDQ0NDIH07CiAgICAgY2FzZSBD
U1NWYWx1ZUFwcHdvcmtzcGFjZToKLSAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAgICAg
IHJldHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZUJhY2tncm91bmQ6Ci0gICAg
ICAgIHJldHVybiAweEZGNjM2M0NFOworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZG
NjM2M0NFIH07CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbmZhY2U6Ci0gICAgICAgIHJldHVybiAw
eEZGQzBDMEMwOworICAgICAgICByZXR1cm4gQ29sb3I6OmxpZ2h0R3JheTsKICAgICBjYXNlIENT
U1ZhbHVlQnV0dG9uaGlnaGxpZ2h0OgotICAgICAgICByZXR1cm4gMHhGRkRERERERDsKKyAgICAg
ICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkRERERERCB9OwogICAgIGNhc2UgQ1NTVmFsdWVC
dXR0b25zaGFkb3c6Ci0gICAgICAgIHJldHVybiAweEZGODg4ODg4OworICAgICAgICByZXR1cm4g
U2ltcGxlQ29sb3IgeyAweEZGODg4ODg4IH07CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbnRleHQ6
Ci0gICAgICAgIHJldHVybiAweEZGMDAwMDAwOworICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNr
OwogICAgIGNhc2UgQ1NTVmFsdWVDYXB0aW9udGV4dDoKLSAgICAgICAgcmV0dXJuIDB4RkYwMDAw
MDA7CisgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZUdyYXl0
ZXh0OgotICAgICAgICByZXR1cm4gMHhGRjgwODA4MDsKKyAgICAgICAgcmV0dXJuIFNpbXBsZUNv
bG9yIHsgMHhGRjgwODA4MCB9OwogICAgIGNhc2UgQ1NTVmFsdWVIaWdobGlnaHQ6Ci0gICAgICAg
IHJldHVybiAweEZGQjVENUZGOworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGQjVE
NUZGIH07CiAgICAgY2FzZSBDU1NWYWx1ZUhpZ2hsaWdodHRleHQ6Ci0gICAgICAgIHJldHVybiAw
eEZGMDAwMDAwOworICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFs
dWVJbmFjdGl2ZWJvcmRlcjoKLSAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAgICAgIHJl
dHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZUluYWN0aXZlY2FwdGlvbjoKLSAg
ICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAgICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAg
ICAgY2FzZSBDU1NWYWx1ZUluYWN0aXZlY2FwdGlvbnRleHQ6Ci0gICAgICAgIHJldHVybiAweEZG
N0Y3RjdGOworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGN0Y3RjdGIH07CiAgICAg
Y2FzZSBDU1NWYWx1ZUluZm9iYWNrZ3JvdW5kOgotICAgICAgICByZXR1cm4gMHhGRkZCRkNDNTsK
KyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkZCRkNDNSB9OwogICAgIGNhc2UgQ1NT
VmFsdWVJbmZvdGV4dDoKLSAgICAgICAgcmV0dXJuIDB4RkYwMDAwMDA7CisgICAgICAgIHJldHVy
biBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZU1lbnU6Ci0gICAgICAgIHJldHVybiAw
eEZGQzBDMEMwOworICAgICAgICByZXR1cm4gQ29sb3I6OmxpZ2h0R3JheTsKICAgICBjYXNlIENT
U1ZhbHVlTWVudXRleHQ6Ci0gICAgICAgIHJldHVybiAweEZGMDAwMDAwOworICAgICAgICByZXR1
cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVTY3JvbGxiYXI6Ci0gICAgICAgIHJl
dHVybiAweEZGRkZGRkZGOworICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogICAgIGNhc2Ug
Q1NTVmFsdWVUZXh0OgotICAgICAgICByZXR1cm4gMHhGRjAwMDAwMDsKKyAgICAgICAgcmV0dXJu
IENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkZGFya3NoYWRvdzoKLSAgICAg
ICAgcmV0dXJuIDB4RkY2NjY2NjY7CisgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkY2
NjY2NjYgfTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkZmFjZToKLSAgICAgICAgcmV0dXJuIDB4
RkZDMEMwQzA7CisgICAgICAgIHJldHVybiBDb2xvcjo6bGlnaHRHcmF5OwogICAgIGNhc2UgQ1NT
VmFsdWVUaHJlZWRoaWdobGlnaHQ6Ci0gICAgICAgIHJldHVybiAweEZGREREREREOworICAgICAg
ICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGREREREREIH07CiAgICAgY2FzZSBDU1NWYWx1ZVRo
cmVlZGxpZ2h0c2hhZG93OgotICAgICAgICByZXR1cm4gMHhGRkMwQzBDMDsKKyAgICAgICAgcmV0
dXJuIENvbG9yOjpsaWdodEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZHNoYWRvdzoKLSAg
ICAgICAgcmV0dXJuIDB4RkY4ODg4ODg7CisgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4
RkY4ODg4ODggfTsKICAgICBjYXNlIENTU1ZhbHVlV2luZG93OgotICAgICAgICByZXR1cm4gMHhG
RkZGRkZGRjsKKyAgICAgICAgcmV0dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVl
V2luZG93ZnJhbWU6Ci0gICAgICAgIHJldHVybiAweEZGQ0NDQ0NDOworICAgICAgICByZXR1cm4g
U2ltcGxlQ29sb3IgeyAweEZGQ0NDQ0NDIH07CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvd3RleHQ6
Ci0gICAgICAgIHJldHVybiAweEZGMDAwMDAwOworICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNr
OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4geyB9OwogICAg
IH0KLSAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWU6OmFjdGl2ZVRl
eHRTZWFyY2hIaWdobGlnaHRDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gb3B0
aW9ucykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpp
bmRleCBjZDhhZjZlMmE3ODVmMDE2OTI0N2IwZDFmMmNhYTc3YzkzYzYxNDBmLi4yMzlmZTIwNDgy
OTg2ZTkzNzYwZjA0OTYzOGU4YmIyZmYyYTNjN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC04MTksMTEgKzgxOSwxMSBAQCBDb2xvciBSZW5kZXJU
aGVtZU1hYzo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlELCBPcHRpb25TZXQ8U3R5
bGVDb2xvcjo6TwogICAgICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkZmFjZToKICAgICAgICAgICAg
IC8vIFdlIHNlbGVjdGVkIHRoaXMgdmFsdWUgaW5zdGVhZCBvZiBbTlNDb2xvciBjb250cm9sQ29s
b3JdIHRvIGF2b2lkIHdlYnNpdGUgaW5jb21wYXRpYmlsaXRpZXMuCiAgICAgICAgICAgICAvLyBX
ZSBtYXkgd2FudCB0byBjb25zaWRlciBjaGFuZ2luZyB0byBbTlNDb2xvciBjb250cm9sQ29sb3Jd
IHNvbWUgZGF5LgotICAgICAgICAgICAgcmV0dXJuIDB4RkZDMEMwQzA7CisgICAgICAgICAgICBy
ZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGQzBDMEMwIH07CiAKICAgICAgICAgY2FzZSBDU1NWYWx1
ZUluZm9iYWNrZ3JvdW5kOgogICAgICAgICAgICAgLy8gTm8gY29ycmVzcG9uZGluZyBOU0NvbG9y
IGZvciB0aGlzIHNvIHdlIHVzZSBhIGhhcmQgY29kZWQgdmFsdWUuCi0gICAgICAgICAgICByZXR1
cm4gMHhGRkZCRkNDNTsKKyAgICAgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZGQkZD
QzUgfTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlTWVudToKICAgICAgICAgICAgIHJldHVybiBt
ZW51QmFja2dyb3VuZENvbG9yKCk7CkBAIC04MzIsMzAgKzgzMiwzMCBAQCBDb2xvciBSZW5kZXJU
aGVtZU1hYzo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlELCBPcHRpb25TZXQ8U3R5
bGVDb2xvcjo6TwogICAgICAgICBjYXNlIENTU1ZhbHVlQWN0aXZlYm9yZGVyOgogICAgICAgICAg
ICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBhcHBlYXJhbmNlIHByZWZl
cmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAgICAgICAgICBpZiAobG9j
YWxBcHBlYXJhbmNlLnVzaW5nRGFya0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gQ29sb3IoMHhGRjFBQTlGRiwgQ29sb3I6OlNlbWFudGljKTsKLSAgICAgICAgICAgIHJldHVy
biBDb2xvcigweEZGMDA2N0Y0LCBDb2xvcjo6U2VtYW50aWMpOworICAgICAgICAgICAgICAgIHJl
dHVybiB7IFNpbXBsZUNvbG9yIHsgMHhGRjFBQTlGRiB9LCBDb2xvcjo6U2VtYW50aWMgfTsKKyAg
ICAgICAgICAgIHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHhGRjAwNjdGNCB9LCBDb2xvcjo6U2Vt
YW50aWMgfTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1Db250cm9sQWNjZW50
OgogICAgICAgICAgICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBhcHBl
YXJhbmNlIHByZWZlcmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAgICAg
ICAgICAvLyBTYW1lIGNvbG9yIGluIGxpZ2h0IGFuZCBkYXJrIGFwcGVhcmFuY2VzLgotICAgICAg
ICAgICAgcmV0dXJuIENvbG9yKDB4RkYwMDdBRkYsIENvbG9yOjpTZW1hbnRpYyk7CisgICAgICAg
ICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4RkYwMDdBRkYgfSwgQ29sb3I6OlNlbWFudGlj
IH07CiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2VsZWN0ZWRDb250ZW50QmFj
a2dyb3VuZDoKICAgICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVz
ZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgog
ICAgICAgICAgICAgaWYgKGxvY2FsQXBwZWFyYW5jZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIENvbG9yKDB4RkYwMDU4RDAsIENvbG9yOjpTZW1hbnRpYyk7
Ci0gICAgICAgICAgICByZXR1cm4gQ29sb3IoMHhGRjAwNjNFMSwgQ29sb3I6OlNlbWFudGljKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4RkYwMDU4RDAgfSwgQ29s
b3I6OlNlbWFudGljIH07CisgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4RkYw
MDYzRTEgfSwgQ29sb3I6OlNlbWFudGljIH07CiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZUhpZ2hs
aWdodDoKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2VsZWN0ZWRUZXh0QmFja2dy
b3VuZDoKICAgICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIg
YXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAg
ICAgICAgICAgaWYgKGxvY2FsQXBwZWFyYW5jZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIENvbG9yKDB4Q0MzRjYzOEIsIENvbG9yOjpTZW1hbnRpYyk7Ci0g
ICAgICAgICAgICByZXR1cm4gQ29sb3IoMHg5OTgwQkNGRSwgQ29sb3I6OlNlbWFudGljKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4Q0MzRjYzOEIgfSwgQ29sb3I6
OlNlbWFudGljIH07CisgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4OTk4MEJD
RkUgfSwgQ29sb3I6OlNlbWFudGljIH07CiAKICNpZiAhSEFWRShPU19EQVJLX01PREVfU1VQUE9S
VCkKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udGFpbmVyQm9yZGVyOgotICAg
ICAgICAgICAgcmV0dXJuIDB4RkZDNUM1QzU7CisgICAgICAgICAgICByZXR1cm4gU2ltcGxlQ29s
b3IgeyAweEZGQzVDNUM1IH07CiAjZW5kaWYKIAogICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVT
eXN0ZW1FdmVuQWx0ZXJuYXRpbmdDb250ZW50QmFja2dyb3VuZDogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDU2ZDI3ZDAxYzZkMmIyMTA4
Y2NjYjczZDdiMjYwMDNlNjc1OWYxOGIuLmU1NGE4MzI0ODE1NDEyYmE4YzZmZGY0ZjgyMTkxNDQ4
NTFhZmI3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVl
QXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4
dC5jcHAKQEAgLTI0NCwxNyArMjQ0LDE3IEBAIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVS
ZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywKICAgICAg
ICAgICAgIC8vIERvIG5vdCBkdW1wIGludmFsaWQgb3IgdHJhbnNwYXJlbnQgYmFja2dyb3VuZHMs
IHNpbmNlIHRoYXQgaXMgdGhlIGRlZmF1bHQuCiAgICAgICAgICAgICBDb2xvciBiYWNrZ3JvdW5k
Q29sb3IgPSBvLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKTsKICAgICAgICAgICAgIGlmIChvLnBhcmVudCgpLT5zdHlsZSgpLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCkgIT0gYmFja2dy
b3VuZENvbG9yLnJnYigpCi0gICAgICAgICAgICAgICAgJiYgYmFja2dyb3VuZENvbG9yLmlzVmFs
aWQoKSAmJiBiYWNrZ3JvdW5kQ29sb3IucmdiKCkpCisgICAgICAgICAgICAgICAgJiYgYmFja2dy
b3VuZENvbG9yLnJnYigpICE9IENvbG9yOjp0cmFuc3BhcmVudCkKICAgICAgICAgICAgICAgICB0
cyA8PCAiIFtiZ2NvbG9yPSIgPDwgYmFja2dyb3VuZENvbG9yLm5hbWVGb3JSZW5kZXJUcmVlQXNU
ZXh0KCkgPDwgIl0iOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBDb2xvciB0ZXh0RmlsbENv
bG9yID0gby5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRGaWxsQ29sb3IpOwogICAgICAgICAgICAgaWYgKG8ucGFyZW50KCktPnN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcikucmdiKCkgIT0g
dGV4dEZpbGxDb2xvci5yZ2IoKSAgCi0gICAgICAgICAgICAgICAgJiYgdGV4dEZpbGxDb2xvci5p
c1ZhbGlkKCkgJiYgdGV4dEZpbGxDb2xvci5yZ2IoKSAhPSBjb2xvci5yZ2IoKSAmJiB0ZXh0Rmls
bENvbG9yLnJnYigpKQorICAgICAgICAgICAgICAgICYmIHRleHRGaWxsQ29sb3IucmdiKCkgIT0g
Y29sb3IucmdiKCkgJiYgdGV4dEZpbGxDb2xvci5yZ2IoKSAhPSBDb2xvcjo6dHJhbnNwYXJlbnQp
CiAgICAgICAgICAgICAgICAgdHMgPDwgIiBbdGV4dEZpbGxDb2xvcj0iIDw8IHRleHRGaWxsQ29s
b3IubmFtZUZvclJlbmRlclRyZWVBc1RleHQoKSA8PCAiXSI7CiAKICAgICAgICAgICAgIENvbG9y
IHRleHRTdHJva2VDb2xvciA9IG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IpOwogICAgICAgICAgICAgaWYgKG8ucGFyZW50KCkt
PnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9r
ZUNvbG9yKS5yZ2IoKSAhPSB0ZXh0U3Ryb2tlQ29sb3IucmdiKCkKLSAgICAgICAgICAgICAgICAm
JiB0ZXh0U3Ryb2tlQ29sb3IuaXNWYWxpZCgpICYmIHRleHRTdHJva2VDb2xvci5yZ2IoKSAhPSBj
b2xvci5yZ2IoKSAmJiB0ZXh0U3Ryb2tlQ29sb3IucmdiKCkpCisgICAgICAgICAgICAgICAgJiYg
dGV4dFN0cm9rZUNvbG9yLnJnYigpICE9IGNvbG9yLnJnYigpICYmIHRleHRTdHJva2VDb2xvci5y
Z2IoKSAhPSBDb2xvcjo6dHJhbnNwYXJlbnQpCiAgICAgICAgICAgICAgICAgdHMgPDwgIiBbdGV4
dFN0cm9rZUNvbG9yPSIgPDwgdGV4dFN0cm9rZUNvbG9yLm5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0
KCkgPDwgIl0iOwogCiAgICAgICAgICAgICBpZiAoby5wYXJlbnQoKS0+c3R5bGUoKS50ZXh0U3Ry
b2tlV2lkdGgoKSAhPSBvLnN0eWxlKCkudGV4dFN0cm9rZVdpZHRoKCkgJiYgby5zdHlsZSgpLnRl
eHRTdHJva2VXaWR0aCgpID4gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCmluZGV4IDg4MGQxOGNjMmU4MTQ0YTY1YzNiNDE1ODZjODA2MjFmZTkx
NjFmNjYuLjFjMDBiZGE1M2Y1YjZiNDM0ZWE3MTk3OWY0ZTYzMjEzODFkYTU3MmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTQ4OSw4
ICsxNDg5LDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDb2xvcj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICB1aW50MzJfdCB2YWx1ZSA9IGNvbG9yLnJnYigpLnZhbHVlKCk7CisKICAgICBlbmNvZGVyIDw8
IHRydWU7Ci0gICAgZW5jb2RlciA8PCBjb2xvci5yZ2IoKTsKKyAgICBlbmNvZGVyIDw8IHZhbHVl
OwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8Q29sb3I+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgQ29sb3ImIGNvbG9yKQpAQCAtMTUyOCwxMSArMTUzMCwxMSBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8Q29sb3I+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ29sb3ImIGNvbG9yKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBSR0JBMzIgcmdiYTsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJnYmEpKQorICAgIHVpbnQzMl90IHZhbHVlOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUodmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb2xvciA9IENvbG9y
KHJnYmEpOworICAgIGNvbG9yID0gU2ltcGxlQ29sb3IgeyB2YWx1ZSB9OwogICAgIHJldHVybiB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggYjY0NDRkMTQ4ZWRlMGQ5NGQwZmVhZjE2OTUzNjI4ZTZiY2EwMDU0My4uNWY3MTgzODIz
YzlkYWRmNGNiMWM0NTNiN2RjODg5MTg5MWU1YTViMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAxLTI3ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFJHQkEzMiB0
eXBlZGVmIHdpdGggYSBjbGFzcyB0byBpbXByb3ZlIHR5cGUgc2FmZXR5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY4NjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUERGU25hcHNob3QubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KTogVXNlIHRoZSBDb2xvciBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIENvbG9yOjpjcmVhdGVVbmNo
ZWNrZWQuCisKIDIwMjAtMDEtMjcgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtld3NdIEFkZCBtZXRob2QgdG8gZmV0Y2ggY3ErIHBhdGNoZXMgZnJvbSBC
dWd6aWxsYQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9QREZTbmFwc2hvdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UERGU25hcHNob3QubW0KaW5kZXggMTJmNWZmNTdlNDFjNTA0MzA0Y2NmNTY1M2ZkZmUwOWNhZjg4
OTIxZC4uMWJiZmRjYTllOTZjNTM1YzJhYTliYjNjZTU0NDU4MDE3ZTY0YmU4MSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZTbmFwc2hvdC5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1t
CkBAIC02MCw3ICs2MCw3IEBAIFRFU1QoUERGU25hcHNob3QsIEZ1bGxDb250ZW50KQogICAgICAg
ICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzRdLCAnbycpOwogCiAgICAgICAgIC8vIFRoZSBlbnRp
cmUgcGFnZSBzaG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNo
ZWNrLgotICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09
IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3IoMCwgMjU1LCAwKSk7CiAKICAg
ICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKICAgICB9XTsKQEAgLTkxLDcgKzkxLDcgQEAg
VEVTVChQREZTbmFwc2hvdCwgU3VicmVnaW9ucykKICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNo
YXJhY3RlckNvdW50KCksIDB1KTsKIAogICAgICAgICAvLyBUaGUgZW50aXJlIHBhZ2Ugc2hvdWxk
IGJlIGdyZWVuLiBQaWNrIGEgcG9pbnQgaW4gdGhlIG1pZGRsZSB0byBjaGVjay4KLSAgICAgICAg
RVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDIwMCwgMTUwKSA9PSBDb2xvcjo6Y3JlYXRl
VW5jaGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0
UG9pbnQoMjAwLCAxNTApID09IENvbG9yKDAsIDI1NSwgMCkpOwogCiAgICAgICAgIGRpZFRha2VT
bmFwc2hvdCA9IHRydWU7CiAgICAgfV07CkBAIC0xMTEsMTAgKzExMSwxMCBAQCBURVNUKFBERlNu
YXBzaG90LCBTdWJyZWdpb25zKQogICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVj
dChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCAxMjAwLCAxMjAwKSkpOwogCiAgICAg
ICAgIC8vIEEgcGl4ZWwgdGhhdCB3YXMgaW4gdGhlIHZpZXcgc2hvdWxkIGJlIGdyZWVuLiBQaWNr
IGEgcG9pbnQgaW4gdGhlIG1pZGRsZSB0byBjaGVjay4KLSAgICAgICAgRVhQRUNUX1RSVUUocGFn
ZS0+Y29sb3JBdFBvaW50KDIwMCwgMTUwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1
NSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoMjAwLCAxNTAp
ID09IENvbG9yKDAsIDI1NSwgMCkpOwogCiAgICAgICAgIC8vIEEgcGl4ZWwgdGhhdCB3YXMgb3V0
c2lkZSB0aGUgdmlldyBzaG91bGQgYWxzbyBiZSBncmVlbiAod2UgZXh0ZW5kIGJhY2tncm91bmQg
Y29sb3Igb3V0KS4gUGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCi0gICAgICAg
IEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg5MDAsIDcwMCkgPT0gQ29sb3I6OmNyZWF0
ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JB
dFBvaW50KDkwMCwgNzAwKSA9PSBDb2xvcigwLCAyNTUsIDApKTsKIAogICAgICAgICBkaWRUYWtl
U25hcHNob3QgPSB0cnVlOwogICAgIH1dOwpAQCAtMTQwLDIwICsxNDAsMjAgQEAgVEVTVChQREZT
bmFwc2hvdCwgT3ZlcjIwMEluY2hlcykKICAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBh
Z2UoMCk7CiAgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKICAgICAgICAgRVhQRUNU
X1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwg
ODAwLCAxNDQwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQw
MCwgMzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICBF
WFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yKDAsIDI1NSwg
MCkpOwogICAgICAgICBFWFBFQ1RfRVEocGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgNXUpOwogCiAg
ICAgICAgIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgxKTsKICAgICAgICAgRVhQRUNUX05FKHBhZ2Us
IG51bGxwdHIpOwogICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5i
b3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDE0NDAwKSkpOwotICAgICAgICBFWFBFQ1Rf
VFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNr
ZWQoMCwgMjU1LCAwKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0
MDAsIDMwMCkgPT0gQ29sb3IoMCwgMjU1LCAwKSk7CiAKICAgICAgICAgRVhQRUNUX0VRKHBhZ2Ut
PmNoYXJhY3RlckNvdW50KCksIDB1KTsKIAogICAgICAgICBwYWdlID0gZG9jdW1lbnQtPnBhZ2Uo
Mik7CiAgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKICAgICAgICAgRVhQRUNUX1RS
VUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAw
LCA2MDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMw
MCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcigwLCAyNTUsIDApKTsK
ICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDB1KTsKIAogICAgICAg
ICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOwpAQCAtMTc4LDcgKzE3OCw3IEBAIFRFU1QoUERGU25h
cHNob3QsIExpbmtzKQogICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CiAKICAgICAg
ICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1h
a2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JB
dFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDI1NSwgMjU1LCAyNTUp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBD
b2xvcigyNTUsIDI1NSwgMjU1KSk7CiAKICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3Rl
ckNvdW50KCksIDh1KTsKICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVswXSwgJ0MnKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388970</attachid>
            <date>2020-01-27 22:03:52 -0800</date>
            <delta_ts>2020-01-28 08:57:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206862-20200127220347.patch</filename>
            <type>text/plain</type>
            <size>76216</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI2OWY4NzgzN2EwOWVj
Yzg3N2VhMDRjMGQ5YjZhMzI0MzFlMjA1Yi4uYjZmMmNlNWM5MTJlMTM5ODE5OTBhODExOTgzNGY4
YmE0NGQ1MzY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0wMS0yNyAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBSR0JBMzIgdHlw
ZWRlZiB3aXRoIGEgY2xhc3MgdG8gaW1wcm92ZSB0eXBlIHNhZmV0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOiBSZW1vdmUg
UkdCQ29sb3IuaC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogUmVtb3ZlIFJCR0NvbG9yLmNwcC4K
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZSBSR0JD
b2xvci5oIGFuZCBSR0JDb2xvci5jcHAuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgUkdCQ29sb3IuaC4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmdldFJlY3RWYWx1ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JW
YWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGNzcy9EZXByZWNhdGVkQ1NTT01Q
cmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01Qcmlt
aXRpdmVWYWx1ZTo6Z2V0Q291bnRlclZhbHVlIGNvbnN0KTogVXNlCisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlOjpjb3VudGVyVmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NT
T01QcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVlIGNvbnN0KTogVXNlCisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlOjpyZWN0VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NT
T01QcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JWYWx1ZSBjb25zdCk6IFVTZQorICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZTo6aXNSR0JDb2xvciBhbmQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbG9y
LgorCisgICAgICAgICogY3NzL0RlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yLmg6IFN0b3JlIGEgQ29s
b3IgaW5zdGVhZCBvZiBhbiBSR0JBMzIuCisgICAgICAgIFRha2UgYSBDb2xvciBhcmd1bWVudCBp
bnN0ZWFkIG9mIGEgUkdCQ29sb3IgYXJndW1lbnQuIFJlZmFjdG9yZWQgdG8KKyAgICAgICAgdXNl
IGEgY3JlYXRlV3JhcHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBtZW1iZXIgdG8gdGlnaHRlbiB0aGUg
Y29kZS4KKworICAgICAgICAqIGNzcy9SR0JDb2xvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
Y3NzL1JHQkNvbG9yLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBjc3MvU3R5bGVDb2xvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKTogRXhwbGlj
aXRseSBjb252ZXJ0IHRvIFNpbXBsZUNvbG9yCisgICAgICAgIHJhdGhlciB0aGFuIHJlbHlpbmcg
b24gaW5pdGlhbGl6aW5nIGEgQ29sb3IgZnJvbSBhbiBpbnRlZ2VyIEFSR0IgdmFsdWUuCisKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06IFJlbW92ZWQgaW5jbHVkZSBv
ZiBSR0JDb2xvci5oLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKTogVXNlIHRoZSBD
b2xvciBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mCisgICAgICAgIENvbG9yOjpjcmVhdGVVbmNoZWNr
ZWQuCisKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbzo6SGlzdG9yaWNN
ZW1vcnlDYXRlZ29yeUluZm8pOiBVc2UKKyAgICAgICAgZXhwbGljaXQgU2ltcGxlQ29sb3IgcmF0
aGVyIHRoYW4gcmVseWluZyBvbiBpbml0aWFsaXppbmcgYSBDb2xvciBmcm9tIGFuCisgICAgICAg
IGludGVnZXIgQVJHQiB2YWx1ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmNwcDogVXNlIGNvbnN0ZXhwciBmb3IgY29uc3RhbnQgY29sb3JzLgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVJHQik6IEltcGxlbWVudCBieSBjYWxsaW5nIG1ha2VSR0JBLgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZVJHQkEpOiBVc2UgYW4gZXhwbGljaXQgYXJndW1lbnQgbGlzdCB0byBjYWxsIHRo
ZQorICAgICAgICBTaW1wbGVDb2xvciBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Om1h
a2VSR0JBMzJGcm9tRmxvYXRzKTogSW1wbGVtZW50IGJ5IGNhbGxpbmcgbWFrZVJHQkEuCisgICAg
ICAgIChXZWJDb3JlOjpjb2xvcldpdGhPdmVycmlkZUFscGhhKTogVXNlIGFuIGV4cGxpY2l0IGFy
Z3VtZW50IGxpc3QgdG8gY2FsbAorICAgICAgICB0aGUgU2ltcGxlQ29sb3IgY29uc3RydWN0b3Iu
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhleENvbG9ySW50ZXJuYWwpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9yOjpDb2xvcik6IFJlbW92ZWQgdW5uZWVkZWQgY29kZSB0byBzZXQg
dGhlIGNvbG9yCisgICAgICAgIHRvIGludmFsaWQsIHNpbmNlIHRoYXQncyBhbHJlYWR5IHRoZSBk
ZWZhdWx0IGZvciBhIG5ldyBDb2xvciBvYmplY3QuCisgICAgICAgIEFsc28gdHdlYWsgdGhlIGxv
Z2ljIGEgYml0IGFuZCBhZGQgZXhwbGljaXQgYXJndW1lbnQgbGlzdCBmb3IgdGhlCisgICAgICAg
IFNpbXBsZUNvbG9yIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6
OnNlcmlhbGl6YXRpb25Gb3JIVE1MIGNvbnN0KTogQWRkZWQuIEZhY3RvcmVkIG91dCBvZgorICAg
ICAgICB0aGUgQ29sb3I6OnNlcmlhbGl6ZWQgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpD
b2xvcjo6c2VyaWFsaXplZCBjb25zdCk6IENoYW5nZWQgdG8gY2FsbCBzZXJpYWxpemF0aW9uRm9y
SFRNTC4KKyAgICAgICAgKFdlYkNvcmU6OmZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhh
VmFsdWUpOiBSZW5hbWVkIHNsaWdodGx5IHNob3J0ZXIuCisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVDb2xvcjo6c2VyaWFsaXphdGlvbkZvckNTUyBjb25zdCk6IEFkZGVkLiBGYWN0b3JlZCBvdXQg
b2YKKyAgICAgICAgdGhlIENvbG9yOjpjc3NUZXh0IGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3I6OmNzc1RleHQgY29uc3QpOiBDaGFuZ2VkIHRvIGNhbGwgc2VyaWFsaXphdGlvbkZv
ckNTUy4KKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMjo6c2VyaWFsaXphdGlvbkZvclJlbmRlclRy
ZWVBc1RleHQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgRmFjdG9yZWQgb3V0IG9mIG5hbWVGb3JS
ZW5kZXJUcmVlQXNUZXh0LgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6Om5hbWVGb3JSZW5kZXJU
cmVlQXNUZXh0IGNvbnN0KTogQ2hhbmdlZCB0byBjYWxsCisgICAgICAgIHNlcmlhbGl6YXRpb25G
b3JSZW5kZXJUcmVlQXNUZXh0LgorICAgICAgICAoV2ViQ29yZTo6Y29sb3JGcm9tUHJlbXVsdGlw
bGllZEFSR0IpOiBVcGRhdGVkIHRvIHVzZSB0aGUgU2ltcGxlQ29sb3IKKyAgICAgICAgbWVtYmVy
IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIHRoZSByZWQvZ3JlZW4vYmx1ZS9hbHBoYUNoYW5uZWwgZnVu
Y3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6YmxlbmQpOiBVc2UgQ29sb3I6OnRyYW5zcGFyZW50
IGZvciBibGVuZGluZyB3aGVyZSB0aGUgb2xkCisgICAgICAgIGNvZGUgdXNlZCAwIGFuZCByZWxp
ZWQgb24gaG93IHRoYXQgaXMgY29udmVydGVkIHRvIGEgQ29sb3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOiBSZXBsYWNlZCB0aGUgUkdCQTMyIHR5cGVkZWYgYW5kIHRo
ZQorICAgICAgICBSR0JBIGNsYXNzIHdpdGggYSBuZXcgY2xhc3MgbmFtZWQgU2ltcGxlQ29sb3Iu
IERlbGV0ZWQgdGhlIGZvdXIKKyAgICAgICAgcmVkL2dyZWVuL2JsdWUvYWxwaGFDaGFubmVsIGZ1
bmN0aW9ucywgdGhlIENvbG9yIGNvbnN0cnVjdG9yIHRoYXQKKyAgICAgICAgdGFrZXMgYW5kIFJH
QkEsIGFuZCB0aGUgQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCBmdW5jdGlvbi4gQ2hhbmdlZAorICAg
ICAgICB0aGUgY29sb3IgY29uc3RhbnRzIHRvIGFsbCBiZSBjb25zdGV4cHIuIE1vdmVkIHRoZSBp
bmxpbmUgZnVuY3Rpb24KKyAgICAgICAgZGVmaW5pdGlvbnMgdW50aWwgYWZ0ZXIgZXZlcnl0aGlu
ZyBpcyBkZWxjYXJlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6
IFVzZSB1aW50MzJfdCBpbnN0ZWFkIG9mIFJHQkEzMi4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QmFja2luZ1N0b3JlOjpjbGVhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNr
aW5nU3RvcmU6OmNsZWFyUmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNr
aW5nU3RvcmU6OmZpbGxSZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tp
bmdTdG9yZTo6cmVwZWF0Rmlyc3RSb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QmFja2luZ1N0b3JlOjpwaXhlbEF0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJhY2tpbmdTdG9yZTo6c2V0UGl4ZWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQmFja2luZ1N0b3JlOjpibGVuZFBpeGVsKTogRGl0dG8uIENvbnZlcnQgdG8gYW5kIGZyb20K
KyAgICAgICAgU2ltcGxlQ29sb3Igc28gd2UgY2FuIHVzZSB2YXJpb3VzIGZ1bmN0aW9ucyB0aGF0
IG9wZXJhdGUgb24gdGhhdCB0eXBlLgorICAgICAgICBVc2UgdGhlIGlzVmlzaWJsZSBhbmQgcmVk
L2dyZWVuL2JsdWUvYWxwaGFDb21wb25lbnQgbWVtYmVyIGZ1bmN0aW9ucy4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjpJbWFnZUJhY2tpbmdTdG9yZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6OnBpeGVsVmFsdWUgY29uc3QpOiBVc2Ug
Q29sb3I6OnRyYW5zcGFyZW50CisgICAgICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgMCBhbmQg
cmVseWluZyBvbiBob3cgdGhhdCBpcyBjb252ZXJ0ZWQgdG8gYSBDb2xvci4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaDogUmVtb3ZlZCBpbmNsdWRlIG9mIEltYWdl
QmFja2luZ1N0b3JlLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOiBVc2UgY29uc3RleHByIFNp
bXBsZUNvbG9yOjp2YWx1ZSBmdW5jdGlvbiB0bworICAgICAgICBzd2l0Y2ggb24gYSBTaW1wbGVD
b2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Om9sZEFxdWFGb2N1c1JpbmdDb2xvcik6IFVzZSBhbiBleHBsaWNpdCBT
aW1wbGVDb2xvciB0byB0dXJuIGEKKyAgICAgICAgaGV4IGludGVnZXIgaW50byBhIENvbG9yIHdp
dGhvdXQgcmVseWluZyBvbiBpbXBsaWNpdCBjb252ZXJzaW9uLgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGVmYXVsdERldmljZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpkcmF3Qm94ZXMpOiBEaXR0by4gQWxzbyB1c2UgYSBtb2Rlcm4KKyAgICAgICAg
Zm9yIGxvb3AgaW5zdGVhZCBvZiBpbmRleGluZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Nj
cm9sbGJhclRoZW1lTW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1v
Y2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNhbGN1bGF0
ZUJvcmRlclN0eWxlQ29sb3IpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yIGNvbnN0
KTogRGl0dG8uIEFsc28gdXNlZCBuYW1lZCBjb2xvcnMuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnN5c3Rl
bUNvbG9yIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRl
ck9iamVjdCk6IEFkZGVkIGNoZWNrcyBhZ2FpbnN0CisgICAgICAgIENvbG9yOjp0cmFuc3BhcmVu
dCBpbnN0ZWFkIG9mIGNvbnZlcnRpbmcgdG8gYW4gaW50ZWdlciBhbmQgY2hlY2tpbmcKKyAgICAg
ICAgYWdhaW5zdCAwLiBSZW1vdmVkIHVubmVlZGVkIGlzVmFsaWQgY2hlY2tzLCBzaW5jZSBpbnZh
bGlkIGNvbG9yJ3MgQVJHQgorICAgICAgICB2YWx1ZSBpcyBDb2xvcjo6dHJhbnNwYXJlbnQuCisK
IDIwMjAtMDEtMjcgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIE5l
ZWQgYSB3YXkgdG8gbWFyayBhIERPTSBhdHRyaWJ1dGUgYXMgcnVudGltZSBjb25kaXRpb25hbGx5
IHJlYWQtd3JpdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmFiNjU0MjgxM2JjMmI3OWNmMDJkYWZlNmU5ZDAxMTBj
MDBkZGU4Ni4uY2VhYTI2ZjY4NDJiZmU3OTAxNjE4ODQ0Yzk1ZmE3MzBmZTlhMjZlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMS0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBSR0JBMzIgdHlwZWRlZiB3aXRoIGEgY2xhc3MgdG8g
aW1wcm92ZSB0eXBlIHNhZmV0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA2ODYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxDb2xvcj46OmVuY29kZSk6IFVzZSB1aW50MzJfdCBleHBsaWNp
dGx5IHRvIGNvbnZlcnQKKyAgICAgICAgdGhlIGNvbG9yIHZhbHVlIGludG8gYSBTaW1wbGVDb2xv
ci4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDb2xvcj46OmRlY29kZSk6IFNhbWUgdGhp
bmcsIG9ubHkgdGhlIG90aGVyIGRpcmVjdGlvbi4KKwogMjAyMC0wMS0yNyAgRnVqaWkgSGlyb25v
cmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dW2N1cmxd
IEFTU0VSVElPTiBGQUlMRUQ6IHNlc3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpIGluIFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlc3Ryb3lFbmdpbmUg
c2luY2UgcjI1NTEzNwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNTRkYjcxNmFjODdjYWM0ZDAxMzBk
ZDhhNzk1NTRkMGQ2NzU2OWU2OS4uZDZmZDRjNWU5OWFhMGNkNjFlYjhkZTJkNGVlZDQxN2VkM2Ni
ZGUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0zMzYsNyArMzM2LDYgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgK
ICAgICBjc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uaAogICAgIGNzcy9NZWRpYVF1ZXJ5UGFyc2Vy
Q29udGV4dC5oCi0gICAgY3NzL1JHQkNvbG9yLmgKICAgICBjc3MvUmVjdC5oCiAgICAgY3NzL1N0
eWxlQ29sb3IuaAogICAgIGNzcy9TdHlsZVByb3BlcnRpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA4
ZTA1NThhZjY2NTBjYTQxMzk0ZjUwMTZhMjRjNDEyMDAyMDdkYzUxLi5hZmQzOTcxMjYxMDM4ZmNm
YTJhMTAyZjA4NzdlODlmNTg0MWM4Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNzc0LDcgKzc3NCw2
IEBAIGNzcy9NZWRpYVF1ZXJ5TGlzdC5jcHAKIGNzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKIGNz
cy9NZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5jcHAKIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCi1jc3MvUkdCQ29sb3IuY3BwCiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcAogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKIGNzcy9TZWxlY3RvckZpbHRl
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA5MGQ1MWJlZDA3ODlmODQ1N2I5ZmM1MDU1NGZkMzJiNzQzMDQwMDkyLi5mYzdh
Mzg1YjY4MzVhY2JhMWFjYTVjYjYyMGU2NGM3YTlkYjkzN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODMxLDcgKzM4MzEs
NiBAQAogCQlCQzY5MzI3NDBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY5MzI3MjBEN0Uy
OTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM2RDQ0RUQwQzA3RjJFRDAwNzJEMkM5IC8qIEpT
SFRNTEVtYmVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM2RDQ0RUIwQzA3RjJFRDAwNzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudC5o
ICovOyB9OwogCQlCQzZENkUyNjA5QUY5NDM1MDBGNTk3NTkgLyogU2Nyb2xsVmlldy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2RDZFMjUwOUFGOTQz
NTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQlCQzc0REEzNzEwMTNGM0Y3MDA3OTg3QUQgLyogUkdCQ29sb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzREQTM1
MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNzcyQjNDMEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NI
ZWxwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
NzcyQjM2MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NIZWxwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzc3MkM0NzBDNEVCMkM2MDA4MzI4NUYg
LyogWE1MSHR0cFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNzcyQzQ1MEM0RUIyQzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5oICov
OyB9OwogCQlCQzc3MkM0RjBDNEVCMzA0MDA4MzI4NUYgLyogTUlNRVR5cGVSZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NzJDNEQwQzRF
QjMwNDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTMyNDUsOCArMTMyNDQsNiBAQAogCQlCQzZE
NDRFQTBDMDdGMkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxFbWJlZEVsZW1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzZENDRFQjBDMDdGMkVEMDA3MkQyQzkgLyogSlNI
VE1MRW1iZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hU
TUxFbWJlZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2RDZFMjUw
OUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcm9sbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM3
NERBMzUxMDEzRjNGNzAwNzk4N0FEIC8qIFJHQkNvbG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJHQkNvbG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJD
NzREQTM2MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSR0JDb2xvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDNzcyQjM2MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NIZWxwZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0hlbHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzc3MkM0NDBDNEVCMkM2MDA4MzI4NUYgLyogWE1MSHR0cFJlcXVlc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3NzJDNDUwQzRFQjJDNjAwODMyODVG
IC8qIFhNTEh0dHBSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBY
TUxIdHRwUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc3MTEsOCAr
Mjc3MDgsNiBAQAogCQkJCUU0QkJFRDBEMTRGNDAyNUQwMDNGMEI5OCAvKiBQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uaCAqLywKIAkJCQk5M0NBNEM5RjA5REY5M0ZBMDBERjg2NzcgLyog
cXVpcmtzLmNzcyAqLywKIAkJCQlCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICov
LAotCQkJCUJDNzREQTM2MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5jcHAgKi8sCi0JCQkJ
QkM3NERBMzUxMDEzRjNGNzAwNzk4N0FEIC8qIFJHQkNvbG9yLmggKi8sCiAJCQkJRTQ0QjRCQjEx
NDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5jcHAgKi8sCiAJCQkJRTQ0QjRCQjIx
NDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oICovLAogCQkJCTQzMkQzRkU3MThB
ODY1ODQwMEQ3REMwMyAvKiBTZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmggKi8sCkBAIC0z
MjIzOSw3ICszMjIzNCw2IEBACiAJCQkJRkQzMTYwQTkxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVy
YkNvbnZvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQUIxMkIwMjZGNzAwQzFBMzU5
IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBRDEy
QjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiSW5wdXRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUJDNzREQTM3MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThDRkY1RTEwQTE1NUEwNTAwMEE0MjM0IC8qIFJvb3RJbmxpbmVCb3guaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ5RTkxMUM5MEVGODZENDcwMDlEMENBRiAvKiBSb3RhdGVUcmFuc2Zvcm1PcGVy
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3M0Y5NUZGMTJDOTdCRkUwMDMxQUFGOSAvKiBS
b3VuZGVkUmVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcAppbmRleCAwMzgxZmI0Y2FjNzU3MDk2NTYwZTgyNTg5MTg1Y2Q5MmYzZWFjZWIw
Li5lNWZjZjY0YWQ4ZmUzZTk4MTA0MmFiOTFkYmY3MGQyYjhmNWFmNzZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRl
ICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWlyLmgiCi0j
aW5jbHVkZSAiUkdCQ29sb3IuaCIKICNpbmNsdWRlICJSZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
U3R5bGUuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTg3OCwyOSArODc3
LDYgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiAgICAg
fQogfQogCi1FeGNlcHRpb25PcjxDb3VudGVyJj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldENvdW50
ZXJWYWx1ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5p
dFR5cGU6OkNTU19DT1VOVEVSKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFj
Y2Vzc0Vycm9yIH07Ci0gICAgcmV0dXJuICptX3ZhbHVlLmNvdW50ZXI7Ci19Ci0KLUV4Y2VwdGlv
bk9yPFJlY3QmPiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVlKCkgY29uc3QKLXsKLSAg
ICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6Q1NTX1JFQ1QpCi0gICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKLSAgICByZXR1cm4g
Km1fdmFsdWUucmVjdDsKLX0KLQotRXhjZXB0aW9uT3I8UmVmPFJHQkNvbG9yPj4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmdldFJHQkNvbG9yVmFsdWUoKSBjb25zdAotewotICAgIGlmIChwcmltaXRpdmVV
bml0VHlwZSgpICE9IENTU1VuaXRUeXBlOjpDU1NfUkdCQ09MT1IpCi0gICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBub3QgcmV0dXJuIGEgbmV3IG9iamVjdCBmb3IgZWFjaCBpbnZvY2F0aW9uLgotICAgIHJl
dHVybiBSR0JDb2xvcjo6Y3JlYXRlKG1fdmFsdWUuY29sb3ItPnJnYigpKTsKLX0KLQogTkVWRVJf
SU5MSU5FIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVtYmVyVmFsdWUoU3RyaW5n
VmlldyBzdWZmaXgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcobV92YWx1ZS5udW0s
IHN1ZmZpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4IDc2M2Q0
MjBhNzFmYzhhMjM0NWNhMDkxOTk3ZmZiZjk0NjY3YzhkOGYuLjQ3NDZhYzhkMDdmY2QzZTQ2YjY2
Yzg4MGU5OWFmMWYyMmUwNTU0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5oCkBAIC0xNDIsOSArMTQyLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPGZsb2F0PiBnZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRTdHJpbmdWYWx1ZShDU1NVbml0VHlwZSwg
Y29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8U3RyaW5nPiBn
ZXRTdHJpbmdWYWx1ZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPENv
dW50ZXImPiBnZXRDb3VudGVyVmFsdWUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNl
cHRpb25PcjxSZWN0Jj4gZ2V0UmVjdFZhbHVlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
RXhjZXB0aW9uT3I8UmVmPFJHQkNvbG9yPj4gZ2V0UkdCQ29sb3JWYWx1ZSgpIGNvbnN0OwogCiAg
ICAgZG91YmxlIGNvbXB1dGVEZWdyZWVzKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCAwNGJm
OTcwNGVmNGMzMDNkN2Y0YzExZDlkYTMzYWNkMDg4NGE2ZGU5Li5jYzc0ZWZjNzZmZjRjM2MyMGYx
MzJiOTZmZTM3ZjEwZTdhYzA1NjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVw
cmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
ZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyBzdWNoIGFzIFN0eWxlQ291bnRlclZhbHVlLCBTdHlsZVJlY3RWYWx1ZSwg
YW5kIFN0eWxlQ29sb3JWYWx1ZSwgdGhlc2UgbWV0aG9kcyB3aWxsIGdldAogLy8gbW9yZSBjb21w
bGljYXRlZC4KIAotCiB1bnNpZ25lZCBzaG9ydCBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1
ZTo6cHJpbWl0aXZlVHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkIHNob3J0PihtX3ZhbHVlLT5wcmltaXRpdmVUeXBlKCkpOwpAQCAtNjQsMjYgKzYzLDI1IEBA
IEV4Y2VwdGlvbk9yPFN0cmluZz4gRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU6OmdldFN0
cmluZ1ZhbHVlKCkgY29uc3QKIAogRXhjZXB0aW9uT3I8UmVmPERlcHJlY2F0ZWRDU1NPTUNvdW50
ZXI+PiBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6Z2V0Q291bnRlclZhbHVlKCkgY29u
c3QKIHsKLSAgICBFeGNlcHRpb25PcjxDb3VudGVyJj4gY291bnRlciA9IG1fdmFsdWUtPmdldENv
dW50ZXJWYWx1ZSgpOwotICAgIGlmIChjb3VudGVyLmhhc0V4Y2VwdGlvbigpKQorICAgIGF1dG8q
IHZhbHVlID0gbV92YWx1ZS0+Y291bnRlclZhbHVlKCk7CisgICAgaWYgKCF2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwotICAgIHJldHVybiBE
ZXByZWNhdGVkQ1NTT01Db3VudGVyOjpjcmVhdGUoY291bnRlci5yZWxlYXNlUmV0dXJuVmFsdWUo
KSwgbV9vd25lci5nZXQoKSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWRDU1NPTUNvdW50ZXI6OmNy
ZWF0ZSgqdmFsdWUsIG1fb3duZXIpOwogfQogICAgIAogRXhjZXB0aW9uT3I8UmVmPERlcHJlY2F0
ZWRDU1NPTVJlY3Q+PiBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVl
KCkgY29uc3QKIHsKLSAgICBFeGNlcHRpb25PcjxSZWN0Jj4gcmVjdCA9IG1fdmFsdWUtPmdldFJl
Y3RWYWx1ZSgpOwotICAgIGlmIChyZWN0Lmhhc0V4Y2VwdGlvbigpKQorICAgIGF1dG8qIHZhbHVl
ID0gbV92YWx1ZS0+cmVjdFZhbHVlKCk7CisgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwotICAgIHJldHVybiBEZXByZWNhdGVk
Q1NTT01SZWN0OjpjcmVhdGUocmVjdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgbV9vd25lci5nZXQo
KSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWRDU1NPTVJlY3Q6OmNyZWF0ZSgqdmFsdWUsIG1fb3du
ZXIpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8RGVwcmVjYXRlZENTU09NUkdCQ29sb3I+PiBEZXBy
ZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JWYWx1ZSgpIGNvbnN0CiB7Ci0g
ICAgRXhjZXB0aW9uT3I8UmVmPFJHQkNvbG9yPj4gY29sb3IgPSBtX3ZhbHVlLT5nZXRSR0JDb2xv
clZhbHVlKCk7Ci0gICAgaWYgKGNvbG9yLmhhc0V4Y2VwdGlvbigpKQorICAgIGlmICghbV92YWx1
ZS0+aXNSR0JDb2xvcigpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vz
c0Vycm9yIH07Ci0gICAgcmV0dXJuIERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yOjpjcmVhdGUoY29s
b3IucmVsZWFzZVJldHVyblZhbHVlKCksIG1fb3duZXIuZ2V0KCkpOworICAgIHJldHVybiBEZXBy
ZWNhdGVkQ1NTT01SR0JDb2xvcjo6Y3JlYXRlKG1fb3duZXIsIG1fdmFsdWUtPmNvbG9yKCkpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUkdC
Q29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oCmlu
ZGV4IDQ2NTUwODU2ZTQxNmIwYjQ4MmE2MjliZmFlZjkwMTA5ODdjZTNmZDkuLjRhM2VkYzc2ODU1
NTNiYTFmOGIzZDhkZTc5NGFhNTU0MTU5YjM3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9EZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
ZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSw1NSArMjEsNDQgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuaCIKLSNp
bmNsdWRlICJSR0JDb2xvci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGVwcmVjYXRlZENTU09N
UkdCQ29sb3IgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxEZXByZWNhdGVkQ1NTT01SR0JDb2xv
cj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RGVwcmVjYXRlZENTU09NUkdCQ29sb3I+IGNy
ZWF0ZShjb25zdCBSR0JDb2xvciYgY29sb3IsIENTU1N0eWxlRGVjbGFyYXRpb24mIG93bmVyKQor
ICAgIHN0YXRpYyBSZWY8RGVwcmVjYXRlZENTU09NUkdCQ29sb3I+IGNyZWF0ZShDU1NTdHlsZURl
Y2xhcmF0aW9uJiBvd25lciwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGVwcmVjYXRlZENTU09NUkdCQ29sb3IoY29sb3IsIG93bmVyKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yKG93
bmVyLCBjb2xvcikpOwogICAgIH0KIAotICAgIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVl
KiByZWQoKSB7IHJldHVybiBtX3JlZC5nZXQoKTsgfQotICAgIERlcHJlY2F0ZWRDU1NPTVByaW1p
dGl2ZVZhbHVlKiBncmVlbigpIHsgcmV0dXJuIG1fZ3JlZW4uZ2V0KCk7IH0KLSAgICBEZXByZWNh
dGVkQ1NTT01QcmltaXRpdmVWYWx1ZSogYmx1ZSgpIHsgcmV0dXJuIG1fYmx1ZS5nZXQoKTsgfQot
ICAgIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlKiBhbHBoYSgpIHsgcmV0dXJuIG1fYWxw
aGEuZ2V0KCk7IH0KLSAgICAKLSAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9y
KG1fcmdiQ29sb3IpOyB9CisgICAgRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUmIHJlZCgp
IHsgcmV0dXJuIG1fcmVkOyB9CisgICAgRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUmIGdy
ZWVuKCkgeyByZXR1cm4gbV9ncmVlbjsgfQorICAgIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZh
bHVlJiBibHVlKCkgeyByZXR1cm4gbV9ibHVlOyB9CisgICAgRGVwcmVjYXRlZENTU09NUHJpbWl0
aXZlVmFsdWUmIGFscGhhKCkgeyByZXR1cm4gbV9hbHBoYTsgfQorCisgICAgQ29sb3IgY29sb3Io
KSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAKIHByaXZhdGU6Ci0gICAgRGVwcmVjYXRlZENT
U09NUkdCQ29sb3IoY29uc3QgUkdCQ29sb3ImIGNvbG9yLCBDU1NTdHlsZURlY2xhcmF0aW9uJiBv
d25lcikKLSAgICAgICAgOiBtX3JnYkNvbG9yKGNvbG9yLnJnYkNvbG9yKCkpCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgTnVtYmVyVHlwZT4gc3RhdGljIFJlZjxEZXByZWNhdGVkQ1NTT01QcmltaXRp
dmVWYWx1ZT4gY3JlYXRlV3JhcHBlcihDU1NTdHlsZURlY2xhcmF0aW9uJiBvd25lciwgTnVtYmVy
VHlwZSBudW1iZXIpCiAgICAgewotICAgICAgICAvLyBSZWQKLSAgICAgICAgdW5zaWduZWQgdmFs
dWUgPSAobV9yZ2JDb2xvciA+PiAxNikgJiAweEZGOwotICAgICAgICBhdXRvIHJlc3VsdCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsK
LSAgICAgICAgbV9yZWQgPSByZXN1bHQtPmNyZWF0ZURlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVdy
YXBwZXIob3duZXIpOwotICAgICAgICAKLSAgICAgICAgLy8gR3JlZW4KLSAgICAgICAgdmFsdWUg
PSAobV9yZ2JDb2xvciA+PiA4KSAmIDB4RkY7Ci0gICAgICAgIHJlc3VsdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAg
bV9ncmVlbiA9IHJlc3VsdC0+Y3JlYXRlRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlV3JhcHBlcihv
d25lcik7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG51bWJlciwg
Q1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpLT5jcmVhdGVEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVX
cmFwcGVyKG93bmVyKTsKKyAgICB9CiAKLSAgICAgICAgLy8gQmx1ZQotICAgICAgICB2YWx1ZSA9
IG1fcmdiQ29sb3IgJiAweEZGOwotICAgICAgICByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHZhbHVlLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgIG1fYmx1ZSA9
IHJlc3VsdC0+Y3JlYXRlRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlV3JhcHBlcihvd25lcik7Ci0g
ICAgICAgIAotICAgICAgICAvLyBBbHBoYQotICAgICAgICBmbG9hdCBhbHBoYVZhbHVlID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KChtX3JnYkNvbG9yID4+IDI0KSAmIDB4RkYpIC8gMHhGRjsKLSAgICAg
ICAgcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShhbHBoYVZhbHVlLCBDU1NVbml0
VHlwZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgIG1fYWxwaGEgPSByZXN1bHQtPmNyZWF0ZURlcHJl
Y2F0ZWRDU1NPTVByaW1pdGl2ZVdyYXBwZXIob3duZXIpOworICAgIERlcHJlY2F0ZWRDU1NPTVJH
QkNvbG9yKENTU1N0eWxlRGVjbGFyYXRpb24mIG93bmVyLCBjb25zdCBDb2xvciYgY29sb3IpCisg
ICAgICAgIDogbV9jb2xvcihjb2xvcikKKyAgICAgICAgLCBtX3JlZChjcmVhdGVXcmFwcGVyKG93
bmVyLCBjb2xvci5yZWQoKSkpCisgICAgICAgICwgbV9ncmVlbihjcmVhdGVXcmFwcGVyKG93bmVy
LCBjb2xvci5ncmVlbigpKSkKKyAgICAgICAgLCBtX2JsdWUoY3JlYXRlV3JhcHBlcihvd25lciwg
Y29sb3IuYmx1ZSgpKSkKKyAgICAgICAgLCBtX2FscGhhKGNyZWF0ZVdyYXBwZXIob3duZXIsIGNv
bG9yLmFscGhhQXNGbG9hdCgpKSkKKyAgICB7CiAgICAgfQotICAgIAotICAgIFJHQkEzMiBtX3Jn
YkNvbG9yOwotICAgIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZT4gbV9yZWQ7
Ci0gICAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlPiBtX2dyZWVuOwotICAg
IFJlZlB0cjxEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZT4gbV9ibHVlOwotICAgIFJlZlB0
cjxEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZT4gbV9hbHBoYTsKKworICAgIENvbG9yIG1f
Y29sb3I7CisgICAgUmVmPERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlPiBtX3JlZDsKKyAg
ICBSZWY8RGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU+IG1fZ3JlZW47CisgICAgUmVmPERl
cHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlPiBtX2JsdWU7CisgICAgUmVmPERlcHJlY2F0ZWRD
U1NPTVByaW1pdGl2ZVZhbHVlPiBtX2FscGhhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9SR0JDb2xvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEx
ZWU0MDNmMGNhZjY3MTFiMTE2MTFhYmYxMGRlMzI4NDk0NDRmZWMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9y
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJSR0JDb2xvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxSR0JDb2xv
cj4gUkdCQ29sb3I6OmNyZWF0ZSh1bnNpZ25lZCByZ2JDb2xvcikKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSR0JDb2xvcihyZ2JDb2xvcikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SR0JDb2xvci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1JHQkNvbG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAx
NGM0MWUwMzVkZWM2ZWQ5YTViYTBlNDU2Njg5MDJkN2FkYzE3YzIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9y
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5IEdvb2dsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKLQotY2xhc3MgUkdC
Q29sb3IgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxSR0JDb2xvcj4gewotcHVibGljOgotICAg
IHN0YXRpYyBSZWY8UkdCQ29sb3I+IGNyZWF0ZSh1bnNpZ25lZCByZ2JDb2xvcik7Ci0KLSAgICBD
b2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKG1fcmdiQ29sb3IpOyB9Ci0KLSAgICBS
R0JBMzIgcmdiQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JnYkNvbG9yOyB9Ci0KLXByaXZhdGU6
Ci0gICAgUkdCQ29sb3IodW5zaWduZWQgcmdiQ29sb3IpCi0gICAgICAgIDogbV9yZ2JDb2xvcihy
Z2JDb2xvcikKLSAgICB7Ci0gICAgfQotCi0gICAgUkdCQTMyIG1fcmdiQ29sb3I7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVDb2xvci5jcHAKaW5kZXggMjli
Y2ExOWI5MjQ4NDA0MWNmMjU5MGZmNmVkNmE0NGNkNDEwYjgxZC4uMWJjMjBmYjcyOTRhNmJiODAx
NjY0NWZkZWY1ZTkxZGU1Y2VjNjQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUNvbG9yLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBDb2xvciBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVl
SUQga2V5d29yZCwgT3B0aW9uU2V0PE9wdGlvbnM+IG9wdGlvbgogewogICAgIGlmIChjb25zdCBj
aGFyKiB2YWx1ZU5hbWUgPSBnZXRWYWx1ZU5hbWUoa2V5d29yZCkpIHsKICAgICAgICAgaWYgKGNv
bnN0IE5hbWVkQ29sb3IqIG5hbWVkQ29sb3IgPSBmaW5kQ29sb3IodmFsdWVOYW1lLCBzdHJsZW4o
dmFsdWVOYW1lKSkpCi0gICAgICAgICAgICByZXR1cm4gQ29sb3IobmFtZWRDb2xvci0+QVJHQlZh
bHVlKTsKKyAgICAgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IG5hbWVkQ29sb3ItPkFSR0JW
YWx1ZSB9OwogICAgIH0KIAogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lz
dGVtQ29sb3Ioa2V5d29yZCwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggYjMyYzEzM2Q1MWU1ZDlhMWRmNTlmMzJiOGMxYjMy
MGRlZjdiMWMxYS4uYzM5NTkyNGJkODVmODRhMGFlMmFmMzM3NDNlZDlmOWY3YzZhM2IxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNTgs
NyArNTgsNiBAQAogI2ltcG9ydCAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIKICNpbXBvcnQgIkhU
TUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbXBvcnQgIkxvYWRlck5TVVJMRXh0cmFzLmgiCi0jaW1w
b3J0ICJSR0JDb2xvci5oIgogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKICNpbXBvcnQgIlJlbmRl
clRleHQuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVydGllcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IGIwNDU1MjZlNjIzMTc3YmFkZjI4
ZGJkM2IyMTc4ZThhNmY1ZGE2ODAuLjIzZGIwZmIzZWFlYzI5OTRhN2ViMjk0MTBjZDY4OTdmMTk1
NDM1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgdm9pZCBkcmF3T3V0bGluZWRRdWFkV2l0aENs
aXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmCiAgICAgY29udGV4
dC5maWxsUGF0aChxdWFkVG9QYXRoKHF1YWQsIGJvdW5kcykpOwogCiAgICAgY29udGV4dC5zZXRD
b21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3I6OkRlc3RpbmF0aW9uT3V0KTsKLSAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDI1NSwgMCwgMCkp
OworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMCwgMCkpOwogICAgIGNvbnRl
eHQuZmlsbFBhdGgocXVhZFRvUGF0aChjbGlwUXVhZCwgYm91bmRzKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5t
bQppbmRleCA1NWI0MDQzYTYwYzA5Zjk1MzEwYmVhYTA4NzE1ZTZjOWE3N2IxMDMyLi41ZWI2OGFm
MmMxNDkyN2JiMDE1MGI1NjJhYjk3OWE2OTIxYmIwM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCkBAIC0xMjgs
MTMgKzEyOCwxMyBAQCBzdGF0aWMgQ0dDb2xvclJlZiBjcmVhdGVDb2xvcihmbG9hdCByLCBmbG9h
dCBnLCBmbG9hdCBiLCBmbG9hdCBhKQogc3RydWN0IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZv
IHsKICAgICBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbygpIHsgfSAvLyBOZWVkZWQgZm9yIHN0
ZDo6YXJyYXkuCiAKLSAgICBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyh1bnNpZ25lZCBjYXRl
Z29yeSwgUkdCQTMyIHJnYmEsIFN0cmluZyBuYW1lLCBib29sIHN1YmNhdGVnb3J5ID0gZmFsc2Up
CisgICAgSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8odW5zaWduZWQgY2F0ZWdvcnksIHVuc2ln
bmVkIHJnYmEsIFN0cmluZyBuYW1lLCBib29sIHN1YmNhdGVnb3J5ID0gZmFsc2UpCiAgICAgICAg
IDogbmFtZShXVEZNb3ZlKG5hbWUpKQogICAgICAgICAsIGlzU3ViY2F0ZWdvcnkoc3ViY2F0ZWdv
cnkpCiAgICAgICAgICwgdHlwZShjYXRlZ29yeSkKICAgICB7CiAgICAgICAgIGZsb2F0IHIsIGcs
IGIsIGE7Ci0gICAgICAgIENvbG9yKHJnYmEpLmdldFJHQkEociwgZywgYiwgYSk7CisgICAgICAg
IENvbG9yIHsgU2ltcGxlQ29sb3IgeyByZ2JhIH0gfS5nZXRSR0JBKHIsIGcsIGIsIGEpOwogICAg
ICAgICBjb2xvciA9IGFkb3B0Q0YoY3JlYXRlQ29sb3IociwgZywgYiwgYSkpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCmluZGV4IDE2NjA3NjRh
NDM5YjlhYTE4ZTdmNDEzZmJkNzlmMDVlODcwYTkyZTQuLmI1YTJhMjRlZGEwYWNhYjc0NTZmMGRh
MjY4NzMzZGZkZWJhN2RjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTcgKzM3LDggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0jaWYgIUNPTVBJTEVSKE1TVkMpCi1jb25zdCBSR0JBMzIgQ29sb3I6
OmJsYWNrOwotY29uc3QgUkdCQTMyIENvbG9yOjp3aGl0ZTsKLWNvbnN0IFJHQkEzMiBDb2xvcjo6
ZGFya0dyYXk7Ci1jb25zdCBSR0JBMzIgQ29sb3I6OmdyYXk7Ci1jb25zdCBSR0JBMzIgQ29sb3I6
OmxpZ2h0R3JheTsKLWNvbnN0IFJHQkEzMiBDb2xvcjo6dHJhbnNwYXJlbnQ7Ci0jZW5kaWYKLQot
c3RhdGljIGNvbnN0IFJHQkEzMiBsaWdodGVuZWRCbGFjayA9IDB4RkY1NDU0NTQ7Ci1zdGF0aWMg
Y29uc3QgUkdCQTMyIGRhcmtlbmVkV2hpdGUgPSAweEZGQUJBQkFCOworc3RhdGljIGNvbnN0ZXhw
ciBTaW1wbGVDb2xvciBsaWdodGVuZWRCbGFjayB7IDB4RkY1NDU0NTQgfTsKK3N0YXRpYyBjb25z
dGV4cHIgU2ltcGxlQ29sb3IgZGFya2VuZWRXaGl0ZSB7IDB4RkZBQkFCQUIgfTsKIAogc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBwcmVtdWx0aXBsaWVkQ2hhbm5lbCh1bnNpZ25lZCBjLCB1bnNpZ25l
ZCBhLCBib29sIGNlaWxpbmcgPSB0cnVlKQogewpAQCAtNjEsMTIgKzUyLDEyIEBAIHN0YXRpYyBp
bmxpbmUgdW5zaWduZWQgdW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCh1bnNpZ25lZCBjLCB1bnNpZ25l
ZCBhKQogCiBSR0JBMzIgbWFrZVJHQihpbnQgciwgaW50IGcsIGludCBiKQogewotICAgIHJldHVy
biAweEZGMDAwMDAwIHwgc3RkOjptYXgoMCwgc3RkOjptaW4ociwgMjU1KSkgPDwgMTYgfCBzdGQ6
Om1heCgwLCBzdGQ6Om1pbihnLCAyNTUpKSA8PCA4IHwgc3RkOjptYXgoMCwgc3RkOjptaW4oYiwg
MjU1KSk7CisgICAgcmV0dXJuIG1ha2VSR0JBKHIsIGcsIGIsIDB4RkYpOwogfQogCiBSR0JBMzIg
bWFrZVJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWF4KDAsIHN0ZDo6bWluKGEsIDI1NSkpIDw8IDI0IHwgc3RkOjptYXgoMCwgc3RkOjptaW4ociwg
MjU1KSkgPDwgMTYgfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihnLCAyNTUpKSA8PCA4IHwgc3RkOjpt
YXgoMCwgc3RkOjptaW4oYiwgMjU1KSk7CisgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGEsIDB4RkYpKSA8PCAyNCB8IHN0ZDo6bWF4KDAsIHN0
ZDo6bWluKHIsIDB4RkYpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGcsIDB4RkYpKSA8
PCA4IHwgc3RkOjptYXgoMCwgc3RkOjptaW4oYiwgMHhGRikpKSB9OwogfQogCiBSR0JBMzIgbWFr
ZVByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgZywgaW50IGIsIGludCBhLCBib29sIGNlaWxp
bmcpCkBAIC04NywxNCArNzgsMTIgQEAgc3RhdGljIGludCBjb2xvckZsb2F0VG9SR0JBQnl0ZShm
bG9hdCBmKQogCiBSR0JBMzIgbWFrZVJHQkEzMkZyb21GbG9hdHMoZmxvYXQgciwgZmxvYXQgZywg
ZmxvYXQgYiwgZmxvYXQgYSkKIHsKLSAgICByZXR1cm4gY29sb3JGbG9hdFRvUkdCQUJ5dGUoYSkg
PDwgMjQgfCBjb2xvckZsb2F0VG9SR0JBQnl0ZShyKSA8PCAxNiB8IGNvbG9yRmxvYXRUb1JHQkFC
eXRlKGcpIDw8IDggfCBjb2xvckZsb2F0VG9SR0JBQnl0ZShiKTsKKyAgICByZXR1cm4gbWFrZVJH
QkEoY29sb3JGbG9hdFRvUkdCQUJ5dGUociksIGNvbG9yRmxvYXRUb1JHQkFCeXRlKGcpLCBjb2xv
ckZsb2F0VG9SR0JBQnl0ZShiKSwgY29sb3JGbG9hdFRvUkdCQUJ5dGUoYSkpOwogfQogCiBSR0JB
MzIgY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShSR0JBMzIgY29sb3IsIGZsb2F0IG92ZXJyaWRlQWxw
aGEpCiB7Ci0gICAgUkdCQTMyIHJnYk9ubHkgPSBjb2xvciAmIDB4MDBGRkZGRkY7Ci0gICAgUkdC
QTMyIHJnYmEgPSByZ2JPbmx5IHwgY29sb3JGbG9hdFRvUkdCQUJ5dGUob3ZlcnJpZGVBbHBoYSkg
PDwgMjQ7Ci0gICAgcmV0dXJuIHJnYmE7CisgICAgcmV0dXJuIHsgKGNvbG9yLnZhbHVlKCkgJiAw
eDAwRkZGRkZGKSB8IGNvbG9yRmxvYXRUb1JHQkFCeXRlKG92ZXJyaWRlQWxwaGEpIDw8IDI0IH07
CiB9CiAKIFJHQkEzMiBtYWtlUkdCQUZyb21IU0xBKGZsb2F0IGh1ZSwgZmxvYXQgc2F0dXJhdGlv
biwgZmxvYXQgbGlnaHRuZXNzLCBmbG9hdCBhbHBoYSkKQEAgLTEzMSwyOCArMTIwLDI4IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUhleENvbG9ySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlw
ZSogbmFtZSwgdW5zaWduZWQgbGVuCiAgICAgICAgIHZhbHVlIHw9IHRvQVNDSUlIZXhWYWx1ZShu
YW1lW2ldKTsKICAgICB9CiAgICAgaWYgKGxlbmd0aCA9PSA2KSB7Ci0gICAgICAgIHJnYiA9IDB4
RkYwMDAwMDAgfCB2YWx1ZTsKKyAgICAgICAgcmdiID0geyAweEZGMDAwMDAwIHwgdmFsdWUgfTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlmIChsZW5ndGggPT0gOCkgewogICAg
ICAgICAvLyBXZSBwYXJzZWQgdGhlIHZhbHVlcyBpbnRvIFJHQkEgb3JkZXIsIGJ1dCB0aGUgUkdC
QTMyIHR5cGUKICAgICAgICAgLy8gZXhwZWN0cyB0aGVtIHRvIGJlIGluIEFSR0Igb3JkZXIsIHNv
IHdlIHJpZ2h0IHJvdGF0ZSBlaWdodCBiaXRzLgotICAgICAgICByZ2IgPSB2YWx1ZSA8PCAyNCB8
IHZhbHVlID4+IDg7CisgICAgICAgIHJnYiA9IHsgdmFsdWUgPDwgMjQgfCB2YWx1ZSA+PiA4IH07
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAobGVuZ3RoID09IDQpIHsKICAg
ICAgICAgLy8gI2FiY2QgY29udmVydHMgdG8gZGRhYWJiY2MgaW4gUkdCQTMyLgotICAgICAgICBy
Z2IgPSAodmFsdWUgJiAweEYpIDw8IDI4IHwgKHZhbHVlICYgMHhGKSA8PCAyNAorICAgICAgICBy
Z2IgPSB7ICh2YWx1ZSAmIDB4RikgPDwgMjggfCAodmFsdWUgJiAweEYpIDw8IDI0CiAgICAgICAg
ICAgICB8ICh2YWx1ZSAmIDB4RjAwMCkgPDwgOCB8ICh2YWx1ZSAmIDB4RjAwMCkgPDwgNAogICAg
ICAgICAgICAgfCAodmFsdWUgJiAweEYwMCkgPDwgNCB8ICh2YWx1ZSAmIDB4RjAwKQotICAgICAg
ICAgICAgfCAodmFsdWUgJiAweEYwKSB8ICh2YWx1ZSAmIDB4RjApID4+IDQ7CisgICAgICAgICAg
ICB8ICh2YWx1ZSAmIDB4RjApIHwgKHZhbHVlICYgMHhGMCkgPj4gNCB9OwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgLy8gI2FiYyBjb252ZXJ0cyB0byAjYWFiYmNjCi0gICAgcmdi
ID0gMHhGRjAwMDAwMAorICAgIHJnYiA9IHsgMHhGRjAwMDAwMAogICAgICAgICB8ICh2YWx1ZSAm
IDB4RjAwKSA8PCAxMiB8ICh2YWx1ZSAmIDB4RjAwKSA8PCA4CiAgICAgICAgIHwgKHZhbHVlICYg
MHhGMCkgPDwgOCB8ICh2YWx1ZSAmIDB4RjApIDw8IDQKLSAgICAgICAgfCAodmFsdWUgJiAweEYp
IDw8IDQgfCAodmFsdWUgJiAweEYpOworICAgICAgICB8ICh2YWx1ZSAmIDB4RikgPDwgNCB8ICh2
YWx1ZSAmIDB4RikgfTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTY5LDcgKzE1OCw2IEBA
IGJvb2wgQ29sb3I6OnBhcnNlSGV4Q29sb3IoY29uc3QgVUNoYXIqIG5hbWUsIHVuc2lnbmVkIGxl
bmd0aCwgUkdCQTMyJiByZ2IpCiBib29sIENvbG9yOjpwYXJzZUhleENvbG9yKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUkdCQTMyJiByZ2IpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbmFtZS5sZW5n
dGgoKTsKLSAgICAKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmIChuYW1lLmlzOEJpdCgpKQpAQCAtMjM2LDI2ICsyMjQsMTggQEAgQ29sb3I6OkNvbG9yKGNv
bnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgIHNldFJHQihjb2xvcik7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgaWYgKGF1dG8qIGZvdW5kQ29sb3IgPSBmaW5kTmFtZWRDb2xvcihuYW1lKSkK
LSAgICAgICAgICAgIHNldFJHQihmb3VuZENvbG9yLT5BUkdCVmFsdWUpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX2NvbG9yRGF0YS5yZ2JhQW5kRmxhZ3MgPSBpbnZhbGlkUkdCQUNvbG9y
OworICAgICAgICAgICAgc2V0UkdCKHsgZm91bmRDb2xvci0+QVJHQlZhbHVlIH0pOwogICAgIH0K
IH0KIAogQ29sb3I6OkNvbG9yKGNvbnN0IGNoYXIqIG5hbWUpCiB7Ci0gICAgUkdCQTMyIGNvbG9y
OwotICAgIGJvb2wgdmFsaWQ7Ci0gICAgaWYgKG5hbWVbMF0gPT0gJyMnKQotICAgICAgICB2YWxp
ZCA9IHBhcnNlSGV4Q29sb3IoKFN0cmluZykmbmFtZVsxXSwgY29sb3IpOwotICAgIGVsc2Ugewot
ICAgICAgICBjb25zdCBOYW1lZENvbG9yKiBmb3VuZENvbG9yID0gZmluZENvbG9yKG5hbWUsIHN0
cmxlbihuYW1lKSk7Ci0gICAgICAgIGNvbG9yID0gZm91bmRDb2xvciA/IGZvdW5kQ29sb3ItPkFS
R0JWYWx1ZSA6IDA7Ci0gICAgICAgIHZhbGlkID0gZm91bmRDb2xvcjsKLSAgICB9Ci0KLSAgICBp
ZiAodmFsaWQpCi0gICAgICAgIHNldFJHQihjb2xvcik7CisgICAgaWYgKG5hbWVbMF0gPT0gJyMn
KSB7CisgICAgICAgIFNpbXBsZUNvbG9yIGNvbG9yOworICAgICAgICBpZiAocGFyc2VIZXhDb2xv
cihyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oJm5hbWVbMV0pLCBzdGQ6OnN0cmxlbigm
bmFtZVsxXSksIGNvbG9yKSkKKyAgICAgICAgICAgIHNldFJHQihjb2xvcik7CisgICAgfSBlbHNl
IGlmIChhdXRvKiBmb3VuZENvbG9yID0gZmluZENvbG9yKG5hbWUsIHN0cmxlbihuYW1lKSkpCisg
ICAgICAgIHNldFJHQih7IGZvdW5kQ29sb3ItPkFSR0JWYWx1ZSB9KTsKIH0KIAogQ29sb3I6OkNv
bG9yKGNvbnN0IENvbG9yJiBvdGhlcikKQEAgLTMwOSwxNSArMjg5LDE4IEBAIENvbG9yJiBDb2xv
cjo6b3BlcmF0b3I9KENvbG9yJiYgb3RoZXIpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCitTdHJp
bmcgU2ltcGxlQ29sb3I6OnNlcmlhbGl6YXRpb25Gb3JIVE1MKCkgY29uc3QKK3sKKyAgICBpZiAo
aXNPcGFxdWUoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJyMnLCBoZXgocmVkQ29tcG9u
ZW50KCksIDIsIExvd2VyY2FzZSksIGhleChncmVlbkNvbXBvbmVudCgpLCAyLCBMb3dlcmNhc2Up
LCBoZXgoYmx1ZUNvbXBvbmVudCgpLCAyLCBMb3dlcmNhc2UpKTsKKyAgICByZXR1cm4gc2VyaWFs
aXphdGlvbkZvckNTUygpOworfQorCiBTdHJpbmcgQ29sb3I6OnNlcmlhbGl6ZWQoKSBjb25zdAog
ewogICAgIGlmIChpc0V4dGVuZGVkKCkpCiAgICAgICAgIHJldHVybiBhc0V4dGVuZGVkKCkuY3Nz
VGV4dCgpOwotCi0gICAgaWYgKGlzT3BhcXVlKCkpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KCcjJywgaGV4KHJlZCgpLCAyLCBMb3dlcmNhc2UpLCBoZXgoZ3JlZW4oKSwgMiwgTG93ZXJjYXNl
KSwgaGV4KGJsdWUoKSwgMiwgTG93ZXJjYXNlKSk7Ci0KLSAgICByZXR1cm4gY3NzVGV4dCgpOwor
ICAgIHJldHVybiByZ2IoKS5zZXJpYWxpemF0aW9uRm9ySFRNTCgpOwogfQogCiBzdGF0aWMgY2hh
ciBkZWNpbWFsRGlnaXQodW5zaWduZWQgbnVtYmVyKQpAQCAtMzI2LDcgKzMwOSw3IEBAIHN0YXRp
YyBjaGFyIGRlY2ltYWxEaWdpdCh1bnNpZ25lZCBudW1iZXIpCiAgICAgcmV0dXJuICcwJyArIG51
bWJlcjsKIH0KIAotc3RhdGljIHN0ZDo6YXJyYXk8Y2hhciwgND4gc2VyaWFsaXplZEZyYWN0aW9u
RGlnaXRzRm9yRnJhY3Rpb25hbEFscGhhVmFsdWUodWludDhfdCBhbHBoYSkKK3N0YXRpYyBzdGQ6
OmFycmF5PGNoYXIsIDQ+IGZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhhVmFsdWUodWlu
dDhfdCBhbHBoYSkKIHsKICAgICBBU1NFUlQoYWxwaGEgPiAwKTsKICAgICBBU1NFUlQoYWxwaGEg
PCAweEZGKTsKQEAgLTMzNywyNyArMzIwLDM2IEBAIHN0YXRpYyBzdGQ6OmFycmF5PGNoYXIsIDQ+
IHNlcmlhbGl6ZWRGcmFjdGlvbkRpZ2l0c0ZvckZyYWN0aW9uYWxBbHBoYVZhbHVlKHVpbnQ4CiAg
ICAgcmV0dXJuIHsgeyBkZWNpbWFsRGlnaXQoKGFscGhhICogMTAgKyAweDdGKSAvIDB4RkYpLCAn
XDAnLCAnXDAnLCAnXDAnIH0gfTsKIH0KIAotU3RyaW5nIENvbG9yOjpjc3NUZXh0KCkgY29uc3QK
K1N0cmluZyBTaW1wbGVDb2xvcjo6c2VyaWFsaXphdGlvbkZvckNTUygpIGNvbnN0CiB7Ci0gICAg
aWYgKGlzRXh0ZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuIGFzRXh0ZW5kZWQoKS5jc3NUZXh0KCk7
Ci0gICAgdWludDhfdCBhbHBoYSA9IHRoaXMtPmFscGhhKCk7Ci0gICAgc3dpdGNoIChhbHBoYSkg
eworICAgIHN3aXRjaCAoYWxwaGFDb21wb25lbnQoKSkgewogICAgIGNhc2UgMDoKLSAgICAgICAg
cmV0dXJuIG1ha2VTdHJpbmcoInJnYmEoIiwgcmVkKCksICIsICIsIGdyZWVuKCksICIsICIsIGJs
dWUoKSwgIiwgMCkiKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJnYmEoIiwgcmVkQ29t
cG9uZW50KCksICIsICIsIGdyZWVuQ29tcG9uZW50KCksICIsICIsIGJsdWVDb21wb25lbnQoKSwg
IiwgMCkiKTsKICAgICBjYXNlIDB4RkY6Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJyZ2Io
IiwgcmVkKCksICIsICIsIGdyZWVuKCksICIsICIsIGJsdWUoKSwgJyknKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcoInJnYigiLCByZWRDb21wb25lbnQoKSwgIiwgIiwgZ3JlZW5Db21wb25l
bnQoKSwgIiwgIiwgYmx1ZUNvbXBvbmVudCgpLCAnKScpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAg
IHJldHVybiBtYWtlU3RyaW5nKCJyZ2JhKCIsIHJlZCgpLCAiLCAiLCBncmVlbigpLCAiLCAiLCBi
bHVlKCksICIsIDAuIiwgc2VyaWFsaXplZEZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhh
VmFsdWUoYWxwaGEpLmRhdGEoKSwgJyknKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJn
YmEoIiwgcmVkQ29tcG9uZW50KCksICIsICIsIGdyZWVuQ29tcG9uZW50KCksICIsICIsIGJsdWVD
b21wb25lbnQoKSwgIiwgMC4iLCBmcmFjdGlvbkRpZ2l0c0ZvckZyYWN0aW9uYWxBbHBoYVZhbHVl
KGFscGhhQ29tcG9uZW50KCkpLmRhdGEoKSwgJyknKTsKICAgICB9CiB9CiAKK1N0cmluZyBDb2xv
cjo6Y3NzVGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKGlzRXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0
dXJuIGFzRXh0ZW5kZWQoKS5jc3NUZXh0KCk7CisgICAgcmV0dXJuIHJnYigpLnNlcmlhbGl6YXRp
b25Gb3JDU1MoKTsKK30KKworU3RyaW5nIFJHQkEzMjo6c2VyaWFsaXphdGlvbkZvclJlbmRlclRy
ZWVBc1RleHQoKSBjb25zdAoreworICAgIGlmIChhbHBoYUNvbXBvbmVudCgpIDwgMHhGRikKKyAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJyMnLCBoZXgocmVkQ29tcG9uZW50KCksIDIpLCBoZXgo
Z3JlZW5Db21wb25lbnQoKSwgMiksIGhleChibHVlQ29tcG9uZW50KCksIDIpLCBoZXgoYWxwaGFD
b21wb25lbnQoKSwgMikpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCcjJywgaGV4KHJlZENvbXBv
bmVudCgpLCAyKSwgaGV4KGdyZWVuQ29tcG9uZW50KCksIDIpLCBoZXgoYmx1ZUNvbXBvbmVudCgp
LCAyKSk7Cit9CisKIFN0cmluZyBDb2xvcjo6bmFtZUZvclJlbmRlclRyZWVBc1RleHQoKSBjb25z
dAogewotICAgIC8vIEZJWE1FOiBIYW5kbGUgRXh0ZW5kZWRDb2xvcnMuCi0gICAgaWYgKGFscGhh
KCkgPCAweEZGKQotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygnIycsIGhleChyZWQoKSwgMiks
IGhleChncmVlbigpLCAyKSwgaGV4KGJsdWUoKSwgMiksIGhleChhbHBoYSgpLCAyKSk7Ci0gICAg
cmV0dXJuIG1ha2VTdHJpbmcoJyMnLCBoZXgocmVkKCksIDIpLCBoZXgoZ3JlZW4oKSwgMiksIGhl
eChibHVlKCksIDIpKTsKKyAgICAvLyBGSVhNRTogSGFuZGxlIGV4dGVuZGVkIGNvbG9ycy4KKyAg
ICByZXR1cm4gcmdiKCkuc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoKTsKIH0KIAog
Q29sb3IgQ29sb3I6OmxpZ2h0KCkgY29uc3QKQEAgLTU3NSwxMCArNTY3LDkgQEAgdm9pZCBDb2xv
cjo6Z2V0SFNWKGRvdWJsZSYgaHVlLCBkb3VibGUmIHNhdHVyYXRpb24sIGRvdWJsZSYgdmFsdWUp
IGNvbnN0CiAKIENvbG9yIGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKFJHQkEzMiBwaXhlbENv
bG9yKQogewotICAgIGludCBhbHBoYSA9IGFscGhhQ2hhbm5lbChwaXhlbENvbG9yKTsKLSAgICBp
ZiAoYWxwaGEgJiYgYWxwaGEgPCAyNTUpCi0gICAgICAgIHBpeGVsQ29sb3IgPSBtYWtlVW5QcmVt
dWx0aXBsaWVkUkdCQShyZWRDaGFubmVsKHBpeGVsQ29sb3IpLCBncmVlbkNoYW5uZWwocGl4ZWxD
b2xvciksIGJsdWVDaGFubmVsKHBpeGVsQ29sb3IpLCBhbHBoYSk7Ci0gICAgcmV0dXJuIENvbG9y
KHBpeGVsQ29sb3IpOworICAgIGlmIChwaXhlbENvbG9yLmlzVmlzaWJsZSgpICYmICFwaXhlbENv
bG9yLmlzT3BhcXVlKCkpCisgICAgICAgIHJldHVybiBtYWtlVW5QcmVtdWx0aXBsaWVkUkdCQShw
aXhlbENvbG9yLnJlZENvbXBvbmVudCgpLCBwaXhlbENvbG9yLmdyZWVuQ29tcG9uZW50KCksIHBp
eGVsQ29sb3IuYmx1ZUNvbXBvbmVudCgpLCBwaXhlbENvbG9yLmFscGhhQ29tcG9uZW50KCkpOwor
ICAgIHJldHVybiBwaXhlbENvbG9yOwogfQogCiBSR0JBMzIgcHJlbXVsdGlwbGllZEFSR0JGcm9t
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNjAzLDEwICs1OTQsOSBAQCBDb2xvciBibGVu
ZChjb25zdCBDb2xvciYgZnJvbSwgY29uc3QgQ29sb3ImIHRvLCBkb3VibGUgcHJvZ3Jlc3MsIGJv
b2wgYmxlbmRQcmVtdQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAogICAgIGlmIChibGVuZFBy
ZW11bHRpcGxpZWQpIHsKLSAgICAgICAgLy8gQ29udHJhcnkgdG8gdGhlIG5hbWUsIFJHQkEzMiBh
Y3R1YWxseSBzdG9yZXMgQVJHQiwgc28gd2UgY2FuIGluaXRpYWxpemUgQ29sb3IgZGlyZWN0bHkg
ZnJvbSBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcigpLgotICAgICAgICAvLyBBbHNvLCBwcmVt
dWx0aXBsaWVkQVJHQkZyb21Db2xvcigpIGJhaWxzIG9uIHplcm8gYWxwaGEsIHNvIHNwZWNpYWwt
Y2FzZSB0aGF0LgotICAgICAgICBDb2xvciBwcmVtdWx0RnJvbSA9IGZyb20uYWxwaGEoKSA/IHBy
ZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKGZyb20pIDogMDsKLSAgICAgICAgQ29sb3IgcHJlbXVs
dFRvID0gdG8uYWxwaGEoKSA/IHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKHRvKSA6IDA7Cisg
ICAgICAgIC8vIFNpbmNlIHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKCkgYmFpbHMgb24gemVy
byBhbHBoYSwgc3BlY2lhbC1jYXNlIHRoYXQuCisgICAgICAgIENvbG9yIHByZW11bHRGcm9tID0g
ZnJvbS5hbHBoYSgpID8gcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IoZnJvbSkgOiBDb2xvcjo6
dHJhbnNwYXJlbnQ7CisgICAgICAgIENvbG9yIHByZW11bHRUbyA9IHRvLmFscGhhKCkgPyBwcmVt
dWx0aXBsaWVkQVJHQkZyb21Db2xvcih0bykgOiBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAKICAgICAg
ICAgQ29sb3IgcHJlbXVsdEJsZW5kZWQoYmxlbmQocHJlbXVsdEZyb20ucmVkKCksIHByZW11bHRU
by5yZWQoKSwgcHJvZ3Jlc3MpLAogICAgICAgICAgICAgYmxlbmQocHJlbXVsdEZyb20uZ3JlZW4o
KSwgcHJlbXVsdFRvLmdyZWVuKCksIHByb2dyZXNzKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5oCmluZGV4IDhlMzVlMDk5ZTRhZjMyZDY5NzdlZWJkMmM3MDVjYTc2NmE0
M2VmNDQuLjAxNGQxNGVjMDc3NTNlMGQ4NDM2OGJjMTY1ZDkyODMzZjUxZjg3ZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyLDEzICs1MiwzNyBAQCB0
eXBlZGVmIEQyRF9WRUNUT1JfNEYgRDJEMV9WRUNUT1JfNEY7CiB0eXBlZGVmIHN0cnVjdCBfR2Rr
UkdCQSBHZGtSR0JBOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBXVEYgewotY2xhc3MgVGV4dFN0cmVh
bTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIHVuc2lnbmVkIFJHQkEzMjsg
Ly8gRGVwcmVjYXRlZDogVHlwZSBmb3IgYW4gUkdCQSBxdWFkcnVwbGV0LiBVc2UgUkdCQSBjbGFz
cyBpbnN0ZWFkLgorLy8gQ29sb3IgdmFsdWUgd2l0aCA4LWJpdCBjb21wb25lbnRzIGZvciByZWQs
IGdyZWVuLCBibHVlLCBhbmQgYWxwaGEuCisvLyBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCBzdG9y
ZWQgYXMgYSAzMi1iaXQgaW50ZWdlciwgd2l0aCBhbHBoYSBpbiB0aGUgaGlnaCBiaXRzOiBBUkdC
LgorY2xhc3MgU2ltcGxlQ29sb3IgeworcHVibGljOgorICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xv
cih1aW50MzJfdCB2YWx1ZSA9IDApIDogbV92YWx1ZSB7IHZhbHVlIH0geyB9CisKKyAgICBjb25z
dGV4cHIgdWludDMyX3QgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICBj
b25zdGV4cHIgdWludDhfdCByZWRDb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID4+
IDE2OyB9CisgICAgY29uc3RleHByIHVpbnQ4X3QgZ3JlZW5Db21wb25lbnQoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlID4+IDg7IH0KKyAgICBjb25zdGV4cHIgdWludDhfdCBibHVlQ29tcG9uZW50
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIGNvbnN0ZXhwciB1aW50OF90IGFscGhh
Q29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA+PiAyNDsgfQorCisgICAgY29uc3Rl
eHByIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBhbHBoYUNvbXBvbmVudCgpID09IDB4
RkY7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBhbHBo
YUNvbXBvbmVudCgpOyB9CisKKyAgICBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwoKSBjb25z
dDsKKyAgICBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUygpIGNvbnN0OworICAgIFN0cmluZyBz
ZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dCgpIGNvbnN0OworCitwcml2YXRlOgorICAg
IHVpbnQzMl90IG1fdmFsdWUgeyAwIH07Cit9OworCitib29sIG9wZXJhdG9yPT0oU2ltcGxlQ29s
b3IsIFNpbXBsZUNvbG9yKTsKK2Jvb2wgb3BlcmF0b3IhPShTaW1wbGVDb2xvciwgU2ltcGxlQ29s
b3IpOworCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYWZ0ZXIgbWlncmF0aW5nIHRvIHRoZSBuZXcg
bmFtZS4KK3VzaW5nIFJHQkEzMiA9IFNpbXBsZUNvbG9yOwogCiBXRUJDT1JFX0VYUE9SVCBSR0JB
MzIgbWFrZVJHQihpbnQgciwgaW50IGcsIGludCBiKTsKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBt
YWtlUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7CkBAIC03MywzNiArOTcsOSBAQCBX
RUJDT1JFX0VYUE9SVCBSR0JBMzIgbWFrZVJHQkEzMkZyb21GbG9hdHMoZmxvYXQgciwgZmxvYXQg
ZywgZmxvYXQgYiwgZmxvYXQgYSk7CiBSR0JBMzIgbWFrZVJHQkFGcm9tSFNMQShmbG9hdCBoLCBm
bG9hdCBzLCBmbG9hdCBsLCBmbG9hdCBhKTsKIFJHQkEzMiBtYWtlUkdCQUZyb21DTVlLQShmbG9h
dCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKTsKIAotaW5saW5lIGludCBy
ZWRDaGFubmVsKFJHQkEzMiBjb2xvcikgeyByZXR1cm4gKGNvbG9yID4+IDE2KSAmIDB4RkY7IH0K
LWlubGluZSBpbnQgZ3JlZW5DaGFubmVsKFJHQkEzMiBjb2xvcikgeyByZXR1cm4gKGNvbG9yID4+
IDgpICYgMHhGRjsgfQotaW5saW5lIGludCBibHVlQ2hhbm5lbChSR0JBMzIgY29sb3IpIHsgcmV0
dXJuIGNvbG9yICYgMHhGRjsgfQotaW5saW5lIGludCBhbHBoYUNoYW5uZWwoUkdCQTMyIGNvbG9y
KSB7IHJldHVybiAoY29sb3IgPj4gMjQpICYgMHhGRjsgfQotCiB1aW50OF90IHJvdW5kQW5kQ2xh
bXBDb2xvckNoYW5uZWwoaW50KTsKIHVpbnQ4X3Qgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChm
bG9hdCk7CiAKLWNsYXNzIFJHQkEgewotcHVibGljOgotICAgIFJHQkEoKTsgLy8gYWxsIGNoYW5u
ZWxzIHplcm8sIGluY2x1ZGluZyBhbHBoYQotICAgIFJHQkEodWludDhfdCByZWQsIHVpbnQ4X3Qg
Z3JlZW4sIHVpbnQ4X3QgYmx1ZSwgdWludDhfdCBhbHBoYSk7Ci0gICAgUkdCQSh1aW50OF90IHJl
ZCwgdWludDhfdCBncmVlbiwgdWludDhfdCBibHVlKTsgLy8gb3BhcXVlLCBhbHBoYSBvZiAxCi0K
LSAgICB1aW50OF90IHJlZCgpIGNvbnN0OwotICAgIHVpbnQ4X3QgZ3JlZW4oKSBjb25zdDsKLSAg
ICB1aW50OF90IGJsdWUoKSBjb25zdDsKLSAgICB1aW50OF90IGFscGhhKCkgY29uc3Q7Ci0KLSAg
ICBib29sIGhhc0FscGhhKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIENv
bG9yOwotCi0gICAgdW5zaWduZWQgbV9pbnRlZ2VyIHsgMCB9OwotfTsKLQotYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFJHQkEmLCBjb25zdCBSR0JBJik7Ci1ib29sIG9wZXJhdG9yIT0oY29uc3QgUkdC
QSYsIGNvbnN0IFJHQkEmKTsKLQogY2xhc3MgQ29sb3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgpAQCAtMTE3LDcgKzExNCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBlbnVtIFNlbWFudGljVGFnIHsgU2VtYW50aWMgfTsKLQogICAgIENvbG9yKFJHQkEzMiBjb2xv
ciwgU2VtYW50aWNUYWcpCiAgICAgewogICAgICAgICBzZXRSR0IoY29sb3IpOwpAQCAtMTc1LDcg
KzE3MSw2IEBAIHB1YmxpYzoKICAgICAvLyBjb252ZXJ0ZWQgZXhhY3RseSB0byBpbnRlZ2Vycywg
d2Ugc2hvdWxkIG1ha2UgYSBub3JtYWwgQ29sb3IuCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3Io
ZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
KTsKIAotICAgIENvbG9yKFJHQkEsIENvbG9yU3BhY2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIENv
bG9yKGNvbnN0IENvbG9yJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IoQ29sb3ImJik7CiAK
QEAgLTE4NSwxNyArMTgwLDYgQEAgcHVibGljOgogICAgICAgICAgICAgbV9jb2xvckRhdGEuZXh0
ZW5kZWRDb2xvci0+ZGVyZWYoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgQ29sb3IgY3JlYXRlVW5j
aGVja2VkKGludCByLCBpbnQgZywgaW50IGIpCi0gICAgewotICAgICAgICBSR0JBMzIgY29sb3Ig
PSAweEZGMDAwMDAwIHwgciA8PCAxNiB8IGcgPDwgOCB8IGI7Ci0gICAgICAgIHJldHVybiBDb2xv
cihjb2xvcik7Ci0gICAgfQotICAgIHN0YXRpYyBDb2xvciBjcmVhdGVVbmNoZWNrZWQoaW50IHIs
IGludCBnLCBpbnQgYiwgaW50IGEpCi0gICAgewotICAgICAgICBSR0JBMzIgY29sb3IgPSBhIDw8
IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGI7Ci0gICAgICAgIHJldHVybiBDb2xvcihjb2xvcik7
Ci0gICAgfQotCiAgICAgLy8gUmV0dXJucyB0aGUgY29sb3Igc2VyaWFsaXplZCBhY2NvcmRpbmcg
dG8gSFRNTDUKICAgICAvLyA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
c2NyaXB0aW5nLmh0bWwjZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcz4gKDEwIFNlcHRlbWJlciAyMDE1
KQogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemVkKCkgY29uc3Q7CkBAIC0yMDcs
MTUgKzE5MSwxNSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biBpc0V4dGVuZGVkKCkgfHwgKG1fY29sb3JEYXRhLnJnYmFBbmRGbGFncyAmIHZhbGlkUkdCQUNv
bG9yQml0KTsgfQogCi0gICAgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWQo
KSAmJiAoaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgpLmFscGhhKCkgPT0gMS4wIDogYWxwaGEo
KSA9PSAyNTUpOyB9Ci0gICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBpc1ZhbGlk
KCkgJiYgKGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpID4gMC4wIDogYWxwaGEo
KSA+IDApOyB9CisgICAgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQo
KSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpID09IDEuMCA6IHJnYigpLmlzT3BhcXVlKCk7IH0KKyAg
ICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5k
ZWQoKS5hbHBoYSgpID4gMC4wIDogcmdiKCkuaXNWaXNpYmxlKCk7IH0KIAotICAgIGludCByZWQo
KSBjb25zdCB7IHJldHVybiByZWRDaGFubmVsKHJnYigpKTsgfQotICAgIGludCBncmVlbigpIGNv
bnN0IHsgcmV0dXJuIGdyZWVuQ2hhbm5lbChyZ2IoKSk7IH0KLSAgICBpbnQgYmx1ZSgpIGNvbnN0
IHsgcmV0dXJuIGJsdWVDaGFubmVsKHJnYigpKTsgfQotICAgIGludCBhbHBoYSgpIGNvbnN0IHsg
cmV0dXJuIGFscGhhQ2hhbm5lbChyZ2IoKSk7IH0KKyAgICBpbnQgcmVkKCkgY29uc3QgeyByZXR1
cm4gcmdiKCkucmVkQ29tcG9uZW50KCk7IH0KKyAgICBpbnQgZ3JlZW4oKSBjb25zdCB7IHJldHVy
biByZ2IoKS5ncmVlbkNvbXBvbmVudCgpOyB9CisgICAgaW50IGJsdWUoKSBjb25zdCB7IHJldHVy
biByZ2IoKS5ibHVlQ29tcG9uZW50KCk7IH0KKyAgICBpbnQgYWxwaGEoKSBjb25zdCB7IHJldHVy
biByZ2IoKS5hbHBoYUNvbXBvbmVudCgpOyB9CiAKLSAgICBmbG9hdCBhbHBoYUFzRmxvYXQoKSBj
b25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgPyBhc0V4dGVuZGVkKCkuYWxwaGEoKSA6IHN0YXRp
Y19jYXN0PGZsb2F0PihhbHBoYUNoYW5uZWwocmdiKCkpKSAvIDI1NTsgfQorICAgIGZsb2F0IGFs
cGhhQXNGbG9hdCgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5h
bHBoYSgpIDogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJnYigpLmFscGhhQ29tcG9uZW50KCkpIC8gMHhG
RjsgfQogCiAgICAgUkdCQTMyIHJnYigpIGNvbnN0OwogCkBAIC0yNjksMTkgKzI1MywxOSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGFyc2VIZXhDb2xvcihjb25zdCBMQ2hhciosIHVuc2ln
bmVkLCBSR0JBMzImKTsKICAgICBzdGF0aWMgYm9vbCBwYXJzZUhleENvbG9yKGNvbnN0IFVDaGFy
KiwgdW5zaWduZWQsIFJHQkEzMiYpOwogCi0gICAgc3RhdGljIGNvbnN0IFJHQkEzMiBibGFjayA9
IDB4RkYwMDAwMDA7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFJHQkEzMiB3aGl0
ZSA9IDB4RkZGRkZGRkY7Ci0gICAgc3RhdGljIGNvbnN0IFJHQkEzMiBkYXJrR3JheSA9IDB4RkY4
MDgwODA7Ci0gICAgc3RhdGljIGNvbnN0IFJHQkEzMiBncmF5ID0gMHhGRkEwQTBBMDsKLSAgICBz
dGF0aWMgY29uc3QgUkdCQTMyIGxpZ2h0R3JheSA9IDB4RkZDMEMwQzA7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGNvbnN0IFJHQkEzMiB0cmFuc3BhcmVudCA9IDB4MDAwMDAwMDA7Ci0gICAg
c3RhdGljIGNvbnN0IFJHQkEzMiBjeWFuID0gMHhGRjAwRkZGRjsKLSAgICBzdGF0aWMgY29uc3Qg
UkdCQTMyIHllbGxvdyA9IDB4RkZGRkZGMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVD
b2xvciBibGFjayB7IDB4RkYwMDAwMDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNv
bG9yIHdoaXRlIHsgMHhGRkZGRkZGRiB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29s
b3IgZGFya0dyYXkgeyAweEZGODA4MDgwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVD
b2xvciBncmF5IHsgMHhGRkEwQTBBMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29s
b3IgbGlnaHRHcmF5IHsgMHhGRkMwQzBDMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxl
Q29sb3IgdHJhbnNwYXJlbnQgeyAweDAwMDAwMDAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBT
aW1wbGVDb2xvciBjeWFuIHsgMHhGRjAwRkZGRiB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2lt
cGxlQ29sb3IgeWVsbG93IHsgMHhGRkZGRkYwMCB9OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGNvbXBvc2l0aW9uRmlsbCA9IDB4M0NBRkMwRTM7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBjb21wb3NpdGlvbkZpbGwgeyAweDND
QUZDMEUzIH07CiAjZWxzZQotICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgY29tcG9zaXRpb25GaWxs
ID0gMHhGRkUxREQ1NTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGNvbXBvc2l0
aW9uRmlsbCB7IDB4RkZFMURENTUgfTsKICNlbmRpZgogCiAgICAgYm9vbCBpc0V4dGVuZGVkKCkg
Y29uc3QKQEAgLTM0Myw0OSArMzI3LDE3IEBAIHVpbnQxNl90IGZhc3REaXZpZGVCeTI1NSh1aW50
MTZfdCk7CiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29s
b3ImKTsKICNlbmRpZgogCi1pbmxpbmUgUkdCQTo6UkdCQSgpCi17Ci19Ci0KLWlubGluZSBSR0JB
OjpSR0JBKHVpbnQ4X3QgcmVkLCB1aW50OF90IGdyZWVuLCB1aW50OF90IGJsdWUsIHVpbnQ4X3Qg
YWxwaGEpCi0gICAgOiBtX2ludGVnZXIoYWxwaGEgPDwgMjQgfCByZWQgPDwgMTYgfCBncmVlbiA8
PCA4IHwgYmx1ZSkKLXsKLX0KLQotaW5saW5lIFJHQkE6OlJHQkEodWludDhfdCByZWQsIHVpbnQ4
X3QgZ3JlZW4sIHVpbnQ4X3QgYmx1ZSkKLSAgICA6IG1faW50ZWdlcigweEZGMDAwMDAwIHwgcmVk
IDw8IDE2IHwgZ3JlZW4gPDwgOCB8IGJsdWUpCi17Ci19Ci0KLWlubGluZSB1aW50OF90IFJHQkE6
OnJlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW50ZWdlciA+PiAxNjsKLX0KLQotaW5saW5l
IHVpbnQ4X3QgUkdCQTo6Z3JlZW4oKSBjb25zdAotewotICAgIHJldHVybiBtX2ludGVnZXIgPj4g
ODsKLX0KLQotaW5saW5lIHVpbnQ4X3QgUkdCQTo6Ymx1ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1faW50ZWdlcjsKLX0KLQotaW5saW5lIHVpbnQ4X3QgUkdCQTo6YWxwaGEoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2ludGVnZXIgPj4gMjQ7Ci19CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3ImKTsKK1dFQkNP
UkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBD
b2xvclNwYWNlKTsKIAotaW5saW5lIGJvb2wgUkdCQTo6aGFzQWxwaGEoKSBjb25zdAoraW5saW5l
IGJvb2wgb3BlcmF0b3I9PShTaW1wbGVDb2xvciBhLCBTaW1wbGVDb2xvciBiKQogewotICAgIHJl
dHVybiAobV9pbnRlZ2VyICYgMHhGRjAwMDAwMCkgIT0gMHhGRjAwMDAwMDsKKyAgICByZXR1cm4g
YS52YWx1ZSgpID09IGIudmFsdWUoKTsKIH0KIAotaW5saW5lIENvbG9yOjpDb2xvcihSR0JBIGNv
bG9yLCBDb2xvclNwYWNlIHNwYWNlKQoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShTaW1wbGVDb2xv
ciBhLCBTaW1wbGVDb2xvciBiKQogewotICAgIHNldFJHQihjb2xvci5tX2ludGVnZXIpOwotICAg
IEFTU0VSVF9VTlVTRUQoc3BhY2UsIHNwYWNlID09IENvbG9yU3BhY2U6OlNSR0IpOworICAgIHJl
dHVybiAhKGEgPT0gYik7CiB9CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3Im
IGEsIGNvbnN0IENvbG9yJiBiKQpAQCAtNDM3LDEyICszODksMTIgQEAgaW5saW5lIFJHQkEzMiBD
b2xvcjo6cmdiKCkgY29uc3QKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIEFTU0VSVCghaXNFeHRl
bmRlZCgpKSBoZXJlLCBvciBwcm9kdWNlCiAgICAgLy8gYW4gUkdCQTMyIGVxdWl2YWxlbnQgZm9y
IGFuIEV4dGVuZGVkQ29sb3IuIElkZWFsbHkgdGhlIGZvcm1lciwKICAgICAvLyBzbyB3ZSBjYW4g
YXVkaXQgYWxsIHRoZSByZ2IoKSBjYWxsIHNpdGVzIHRvIGhhbmRsZSBleHRlbmRlZC4KLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UkdCQTMyPihtX2NvbG9yRGF0YS5yZ2JhQW5kRmxhZ3MgPj4gMzIp
OworICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2NvbG9yRGF0YS5yZ2JhQW5k
RmxhZ3MgPj4gMzIpIH07CiB9CiAKIGlubGluZSB2b2lkIENvbG9yOjpzZXRSR0IoUkdCQTMyIHJn
YikKIHsKLSAgICBtX2NvbG9yRGF0YS5yZ2JhQW5kRmxhZ3MgPSBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ocmdiKSA8PCAzMjsKKyAgICBtX2NvbG9yRGF0YS5yZ2JhQW5kRmxhZ3MgPSBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocmdiLnZhbHVlKCkpIDw8IDMyOwogICAgIHRhZ0FzVmFsaWQoKTsKIH0KIApA
QCAtNDUzLDcgKzQwNSw3IEBAIGlubGluZSBib29sIENvbG9yOjppc0JsYWNrQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKQogICAgICAgICByZXR1cm4gIWV4dGVuZGVkQ29sb3IucmVkKCkgJiYgIWV4
dGVuZGVkQ29sb3IuZ3JlZW4oKSAmJiAhZXh0ZW5kZWRDb2xvci5ibHVlKCkgJiYgZXh0ZW5kZWRD
b2xvci5hbHBoYSgpID09IDE7CiAgICAgfQogCi0gICAgcmV0dXJuIGNvbG9yLmlzVmFsaWQoKSAm
JiBjb2xvci5yZ2IoKSA9PSBDb2xvcjo6YmxhY2s7CisgICAgcmV0dXJuIGNvbG9yLnJnYigpID09
IENvbG9yOjpibGFjazsKIH0KIAogaW5saW5lIGJvb2wgQ29sb3I6OmlzV2hpdGVDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCkBAIC00NjMsMTIgKzQxNSw5IEBAIGlubGluZSBib29sIENvbG9yOjpp
c1doaXRlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgICAgICByZXR1cm4gZXh0ZW5kZWRD
b2xvci5yZWQoKSA9PSAxICYmIGV4dGVuZGVkQ29sb3IuZ3JlZW4oKSA9PSAxICYmIGV4dGVuZGVk
Q29sb3IuYmx1ZSgpID09IDEgJiYgZXh0ZW5kZWRDb2xvci5hbHBoYSgpID09IDE7CiAgICAgfQog
ICAgIAotICAgIHJldHVybiBjb2xvci5pc1ZhbGlkKCkgJiYgY29sb3IucmdiKCkgPT0gQ29sb3I6
OndoaXRlOworICAgIHJldHVybiBjb2xvci5yZ2IoKSA9PSBDb2xvcjo6d2hpdGU7CiB9CiAKLVdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXggYmFlYmU1MjYxMWRiZTg1NDc3OGFh
ZDVmMmMwZTY4YzY3ZjE1Y2QwNi4uYzMzODM0MDE3NDJmYWFiYjY0ZDNiZWU5ODljNjg2MmE0OGUz
NjM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJhY2tpbmdTdG9yZS5oCkBAIC02MCwxNCArNjAsMTQgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7Ci0gICAgICAgIHNp
emVfdCBidWZmZXJTaXplID0gc2l6ZS5hcmVhKCkudW5zYWZlR2V0KCkgKiBzaXplb2YoUkdCQTMy
KTsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBzaXplLmFyZWEoKS51bnNhZmVHZXQoKSAq
IHNpemVvZih1aW50MzJfdCk7CiAKICAgICAgICAgaWYgKCFidWZmZXIudHJ5UmVzZXJ2ZUNhcGFj
aXR5KGJ1ZmZlclNpemUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGJ1
ZmZlci5ncm93KGJ1ZmZlclNpemUpOwogICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBtX3BpeGVsc1B0
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8UkdCQTMyKj4oY29uc3RfY2FzdDxjaGFyKj4obV9waXhlbHMt
PmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6
ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBtX3Np
emUpOwogICAgICAgICBjbGVhcigpOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNsZWFyKCkKICAgICB7Ci0gICAgICAgIG1lbXNldChtX3BpeGVsc1B0ciwgMCwgKG1fc2l6
ZS5hcmVhKCkgKiBzaXplb2YoUkdCQTMyKSkudW5zYWZlR2V0KCkpOworICAgICAgICBtZW1zZXQo
bV9waXhlbHNQdHIsIDAsIChtX3NpemUuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KSkudW5zYWZl
R2V0KCkpOwogICAgIH0KIAogICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEludFJlY3QmIHJlY3Qp
CkBAIC05NCw4ICs5NCw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpIHx8
ICFpbkJvdW5kcyhyZWN0KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBzaXplX3Qg
cm93Qnl0ZXMgPSByZWN0LndpZHRoKCkgKiBzaXplb2YoUkdCQTMyKTsKLSAgICAgICAgUkdCQTMy
KiBzdGFydCA9IHBpeGVsQXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgc2l6ZV90IHJv
d0J5dGVzID0gcmVjdC53aWR0aCgpICogc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgdWludDMy
X3QqIHN0YXJ0ID0gcGl4ZWxBdChyZWN0LngoKSwgcmVjdC55KCkpOwogICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHJlY3QuaGVpZ2h0KCk7ICsraSkgewogICAgICAgICAgICAgbWVtc2V0KHN0
YXJ0LCAwLCByb3dCeXRlcyk7CiAgICAgICAgICAgICBzdGFydCArPSBtX3NpemUud2lkdGgoKTsK
QEAgLTEwNyw4ICsxMDcsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSB8
fCAhaW5Cb3VuZHMocmVjdCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUkdCQTMy
KiBzdGFydCA9IHBpeGVsQXQocmVjdC54KCksIHJlY3QueSgpKTsKLSAgICAgICAgUkdCQTMyIHBp
eGVsVmFsdWUgPSB0aGlzLT5waXhlbFZhbHVlKHIsIGcsIGIsIGEpOworICAgICAgICB1aW50MzJf
dCogc3RhcnQgPSBwaXhlbEF0KHJlY3QueCgpLCByZWN0LnkoKSk7CisgICAgICAgIHVpbnQzMl90
IHBpeGVsVmFsdWUgPSB0aGlzLT5waXhlbFZhbHVlKHIsIGcsIGIsIGEpOwogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHJlY3QuaGVpZ2h0KCk7ICsraSkgewogICAgICAgICAgICAgZm9yIChp
bnQgaiA9IDA7IGogPCByZWN0LndpZHRoKCk7ICsraikKICAgICAgICAgICAgICAgICBzdGFydFtq
XSA9IHBpeGVsVmFsdWU7CkBAIC0xMjEsMjIgKzEyMSwyMiBAQCBwdWJsaWM6CiAgICAgICAgIGlm
IChyZWN0LmlzRW1wdHkoKSB8fCAhaW5Cb3VuZHMocmVjdCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgc2l6ZV90IHJvd0J5dGVzID0gcmVjdC53aWR0aCgpICogc2l6ZW9mKFJHQkEz
Mik7Ci0gICAgICAgIFJHQkEzMiogc3JjID0gcGl4ZWxBdChyZWN0LngoKSwgcmVjdC55KCkpOwot
ICAgICAgICBSR0JBMzIqIGRlc3QgPSBzcmMgKyBtX3NpemUud2lkdGgoKTsKKyAgICAgICAgc2l6
ZV90IHJvd0J5dGVzID0gcmVjdC53aWR0aCgpICogc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAg
dWludDMyX3QqIHNyYyA9IHBpeGVsQXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgdWlu
dDMyX3QqIGRlc3QgPSBzcmMgKyBtX3NpemUud2lkdGgoKTsKICAgICAgICAgZm9yIChpbnQgaSA9
IDE7IGkgPCByZWN0LmhlaWdodCgpOyArK2kpIHsKICAgICAgICAgICAgIG1lbWNweShkZXN0LCBz
cmMsIHJvd0J5dGVzKTsKICAgICAgICAgICAgIGRlc3QgKz0gbV9zaXplLndpZHRoKCk7CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBSR0JBMzIqIHBpeGVsQXQoaW50IHgsIGludCB5KSBjb25zdAor
ICAgIHVpbnQzMl90KiBwaXhlbEF0KGludCB4LCBpbnQgeSkgY29uc3QKICAgICB7CiAgICAgICAg
IEFTU0VSVChpbkJvdW5kcyhJbnRQb2ludCh4LCB5KSkpOwogICAgICAgICByZXR1cm4gbV9waXhl
bHNQdHIgKyB5ICogbV9zaXplLndpZHRoKCkgKyB4OwogICAgIH0KIAotICAgIHZvaWQgc2V0UGl4
ZWwoUkdCQTMyKiBkZXN0LCB1bnNpZ25lZCByLCB1bnNpZ25lZCBnLCB1bnNpZ25lZCBiLCB1bnNp
Z25lZCBhKQorICAgIHZvaWQgc2V0UGl4ZWwodWludDMyX3QqIGRlc3QsIHVuc2lnbmVkIHIsIHVu
c2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCiAgICAgewogICAgICAgICBBU1NFUlQo
ZGVzdCk7CiAgICAgICAgICpkZXN0ID0gcGl4ZWxWYWx1ZShyLCBnLCBiLCBhKTsKQEAgLTE0Nywz
MCArMTQ3LDMyIEBAIHB1YmxpYzoKICAgICAgICAgc2V0UGl4ZWwocGl4ZWxBdCh4LCB5KSwgciwg
ZywgYiwgYSk7CiAgICAgfQogCi0gICAgdm9pZCBibGVuZFBpeGVsKFJHQkEzMiogZGVzdCwgdW5z
aWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKKyAgICB2b2lkIGJs
ZW5kUGl4ZWwodWludDMyX3QqIGRlc3QsIHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVk
IGIsIHVuc2lnbmVkIGEpCiAgICAgewogICAgICAgICBpZiAoIWEpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgaWYgKGEgPj0gMjU1IHx8ICFhbHBoYUNoYW5uZWwoKmRlc3QpKSB7Cisg
ICAgICAgIFNpbXBsZUNvbG9yIHBpeGVsIHsgKmRlc3QgfTsKKworICAgICAgICBpZiAoYSA+PSAy
NTUgfHwgIXBpeGVsLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgICAgICBzZXRQaXhlbChkZXN0LCBy
LCBnLCBiLCBhKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghbV9wcmVtdWx0aXBseUFscGhhKQotICAgICAgICAgICAgKmRlc3QgPSBtYWtlUHJlbXVsdGlw
bGllZFJHQkEocmVkQ2hhbm5lbCgqZGVzdCksIGdyZWVuQ2hhbm5lbCgqZGVzdCksIGJsdWVDaGFu
bmVsKCpkZXN0KSwgYWxwaGFDaGFubmVsKCpkZXN0KSwgZmFsc2UpOworICAgICAgICAgICAgcGl4
ZWwgPSBtYWtlUHJlbXVsdGlwbGllZFJHQkEocGl4ZWwucmVkQ29tcG9uZW50KCksIHBpeGVsLmdy
ZWVuQ29tcG9uZW50KCksIHBpeGVsLmJsdWVDb21wb25lbnQoKSwgcGl4ZWwuYWxwaGFDb21wb25l
bnQoKSwgZmFsc2UpOwogCiAgICAgICAgIHVuc2lnbmVkIGQgPSAyNTUgLSBhOwogCi0gICAgICAg
IHIgPSBmYXN0RGl2aWRlQnkyNTUociAqIGEgKyByZWRDaGFubmVsKCpkZXN0KSAqIGQpOwotICAg
ICAgICBnID0gZmFzdERpdmlkZUJ5MjU1KGcgKiBhICsgZ3JlZW5DaGFubmVsKCpkZXN0KSAqIGQp
OwotICAgICAgICBiID0gZmFzdERpdmlkZUJ5MjU1KGIgKiBhICsgYmx1ZUNoYW5uZWwoKmRlc3Qp
ICogZCk7Ci0gICAgICAgIGEgKz0gZmFzdERpdmlkZUJ5MjU1KGQgKiBhbHBoYUNoYW5uZWwoKmRl
c3QpKTsKKyAgICAgICAgciA9IGZhc3REaXZpZGVCeTI1NShyICogYSArIHBpeGVsLnJlZENvbXBv
bmVudCgpICogZCk7CisgICAgICAgIGcgPSBmYXN0RGl2aWRlQnkyNTUoZyAqIGEgKyBwaXhlbC5n
cmVlbkNvbXBvbmVudCgpICogZCk7CisgICAgICAgIGIgPSBmYXN0RGl2aWRlQnkyNTUoYiAqIGEg
KyBwaXhlbC5ibHVlQ29tcG9uZW50KCkgKiBkKTsKKyAgICAgICAgYSArPSBmYXN0RGl2aWRlQnky
NTUoZCAqIHBpeGVsLmFscGhhQ29tcG9uZW50KCkpOwogCiAgICAgICAgIGlmIChtX3ByZW11bHRp
cGx5QWxwaGEpCi0gICAgICAgICAgICAqZGVzdCA9IG1ha2VSR0JBKHIsIGcsIGIsIGEpOworICAg
ICAgICAgICAgKmRlc3QgPSBtYWtlUkdCQShyLCBnLCBiLCBhKS52YWx1ZSgpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICAqZGVzdCA9IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHIsIGcsIGIs
IGEpOworICAgICAgICAgICAgKmRlc3QgPSBtYWtlVW5QcmVtdWx0aXBsaWVkUkdCQShyLCBnLCBi
LCBhKS52YWx1ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGlzT3ZlclNpemUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKQEAgLTIwNCw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0
b3I8Y2hhcj4gYnVmZmVyOwogICAgICAgICBidWZmZXIuYXBwZW5kKG90aGVyLm1fcGl4ZWxzLT5k
YXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkpOwogICAgICAgICBtX3BpeGVscyA9IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBt
X3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8UkdCQTMyKj4oY29uc3RfY2FzdDxjaGFyKj4o
bV9waXhlbHMtPmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDMyX3QqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAg
fQogCiAgICAgYm9vbCBpbkJvdW5kcyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CkBAIC0y
MTcsMTAgKzIxOSwxMCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gSW50UmVjdChJbnRQb2lu
dCgpLCBtX3NpemUpLmNvbnRhaW5zKHJlY3QpOwogICAgIH0KIAotICAgIFJHQkEzMiBwaXhlbFZh
bHVlKHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpIGNvbnN0
CisgICAgdWludDMyX3QgcGl4ZWxWYWx1ZSh1bnNpZ25lZCByLCB1bnNpZ25lZCBnLCB1bnNpZ25l
ZCBiLCB1bnNpZ25lZCBhKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fcHJlbXVsdGlwbHlB
bHBoYSAmJiAhYSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIENv
bG9yOjp0cmFuc3BhcmVudDsKIAogICAgICAgICBpZiAobV9wcmVtdWx0aXBseUFscGhhICYmIGEg
PCAyNTUpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVByZW11bHRpcGxpZWRSR0JBKHIsIGcsIGIs
IGEsIGZhbHNlKTsKQEAgLTIyOSw3ICsyMzEsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3BpeGVsczsKLSAgICBSR0JBMzIqIG1f
cGl4ZWxzUHRyIHsgbnVsbHB0ciB9OworICAgIHVpbnQzMl90KiBtX3BpeGVsc1B0ciB7IG51bGxw
dHIgfTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBJbnRSZWN0IG1fZnJhbWVSZWN0OyAvLyBU
aGlzIHdpbGwgYWx3YXlzIGp1c3QgYmUgdGhlIGVudGlyZSBidWZmZXIgZXhjZXB0IGZvciBHSUYg
YW5kIFBORyBmcmFtZXMKICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYSB7IHRydWUgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCAyY2M2
YjAyYTdkMzUwMTU3MWNmMjA5MzY0YjM2ZWQyNWMxZDgzOTY5Li44NTZmZTM0ZmU2ZjcxN2Y4MTZl
MzRhNDdkM2Y2ODRiYTYwM2I5NGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VGcmFtZS5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpbmNsdWRlICJDb2xvci5o
IgogI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgotI2luY2x1ZGUgIkltYWdlQmFja2luZ1N0
b3JlLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlVHlw
ZXMuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IGNkZmZhM2Y2MGU5YWQxOGYyYTQwYThlODk4
NTJhMzZhMzM3ZjUxMDAuLjc4MzhmMzUzMWMyYmU1MDY1OTUyYWUxY2IzODE4N2JjOWI3MmU5NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3Bw
CkBAIC0xMjgsMjMgKzEyOCwyMyBAQCBzdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQogewogICAgIGlmICghY29sb3IuaXNFeHRlbmRlZCgpKSB7Ci0gICAgICAgIHN3aXRjaCAo
Y29sb3IucmdiKCkpIHsKLSAgICAgICAgY2FzZSBDb2xvcjo6dHJhbnNwYXJlbnQ6IHsKKyAgICAg
ICAgc3dpdGNoIChjb2xvci5yZ2IoKS52YWx1ZSgpKSB7CisgICAgICAgIGNhc2UgQ29sb3I6OnRy
YW5zcGFyZW50LnZhbHVlKCk6IHsKICAgICAgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHRyYW5z
cGFyZW50Q0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKICAgICAgICAgICAgIHJldHVybiB0
cmFuc3BhcmVudENHQ29sb3I7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDb2xvcjo6YmxhY2s6
IHsKKyAgICAgICAgY2FzZSBDb2xvcjo6YmxhY2sudmFsdWUoKTogewogICAgICAgICAgICAgc3Rh
dGljIENHQ29sb3JSZWYgYmxhY2tDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAgICAg
ICAgICAgcmV0dXJuIGJsYWNrQ0dDb2xvcjsKICAgICAgICAgfQotICAgICAgICBjYXNlIENvbG9y
Ojp3aGl0ZTogeworICAgICAgICBjYXNlIENvbG9yOjp3aGl0ZS52YWx1ZSgpOiB7CiAgICAgICAg
ICAgICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0ZUNHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7
CiAgICAgICAgICAgICByZXR1cm4gd2hpdGVDR0NvbG9yOwogICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBBU1NFUlQoY29sb3IuaXNFeHRlbmRlZCgpIHx8IGNvbG9yLnJnYigpKTsK
KyAgICBBU1NFUlQoY29sb3IuaXNFeHRlbmRlZCgpIHx8IGNvbG9yLnJnYigpLnZhbHVlKCkpOwog
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlMUlVDYWNoZTxDb2xvciwgUmV0YWluUHRy
PENHQ29sb3JSZWY+LCAzMj4+IGNhY2hlOwogICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQoY29s
b3IpLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bG9yTWFjLm1tCmluZGV4IDFmZjViNzIzYmQ5MjI3YjZkMTI2OWNkZjk0ZTYzZDIyNTIyYjdmNjAu
LjE4NzQ5NTJhYTJjYjIwZjk2NThlZjBiMmQ0YzMzN2RmODBjMzU0MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KQEAgLTQwLDcgKzQw
LDcgQEAgc3RhdGljIGJvb2wgdXNlT2xkQXF1YUZvY3VzUmluZ0NvbG9yOwogCiBDb2xvciBvbGRB
cXVhRm9jdXNSaW5nQ29sb3IoKQogewotICAgIHJldHVybiAweEZGN0RBREQ5OworICAgIHJldHVy
biBTaW1wbGVDb2xvciB7IDB4RkY3REFERDkgfTsKIH0KIAogdm9pZCBzZXRVc2VzVGVzdE1vZGVG
b2N1c1JpbmdDb2xvcihib29sIG5ld1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApp
bmRleCA1ODQ2MmY2MjJjMjBkM2YyOGIyNTM4YjRhNDlhOGNkY2ZkYTU2NGJhLi4xNmQyOGZjNTU1
M2E1NDUyMGRkMTY0OWNkNzgwYjRjODRkMjRhZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmNwcApAQCAtODMsOCArODMsOCBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxNb2NrTWVkaWFEZXZp
Y2U+IGRlZmF1bHREZXZpY2VzKCkKICAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIlNDUkVFTi0x
Il9zLCAiTW9jayBzY3JlZW4gZGV2aWNlIDEiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgQ29sb3I6OmxpZ2h0R3JheSwgeyAzODQw
LCAyMTYwIH0gfSB9LAogICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTIiX3MsICJN
b2NrIHNjcmVlbiBkZXZpY2UgMiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURl
dmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBDb2xvcjo6eWVsbG93LCB7IDE5MjAsIDEwODAgfSB9
IH0sCiAKLSAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9jayB3aW5k
b3cgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZTo6U2NyZWVuLCAweGZmZjFiNSwgeyA2NDAsIDQ4MCB9IH0gfSwKLSAgICAgICAgTW9ja01lZGlh
RGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9jayB3aW5kb3cgMiJfcywgTW9ja0Rpc3BsYXlQcm9w
ZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCAweGZmZDBiNSwgeyAx
MjgwLCA2MDAgfSB9IH0sCisgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywg
Ik1vY2sgd2luZG93IDEiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGU6OlNjcmVlbiwgU2ltcGxlQ29sb3IgeyAweGZmZjFiNSB9LCB7IDY0MCwgNDgw
IH0gfSB9LAorICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdp
bmRvdyAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpTY3JlZW4sIFNpbXBsZUNvbG9yIHsgMHhmZmQwYjUgfSwgeyAxMjgwLCA2MDAgfSB9IH0s
CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCA1YWM5ZDY2MDZjNDIyMTI0OGJjNDFk
ZTkzODljZTVjODdlNGE0MTdiLi42N2QyYTE3ZmNkMDQ4N2Y4ZDk4NDI2MzM5NjQ0NWFmNzA5ZGFh
OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAtMjYyLDEyICsyNjIsMTAgQEAgdm9pZCBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0FuaW1hdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
CiAKIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdCb3hlcyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCiB7Ci0gICAgc3RhdGljIGNvbnN0IFJHQkEzMiBtYWdlbnRhID0gMHhmZmZm
MDBmZjsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIHllbGxvdyA9IDB4ZmZmZmZmMDA7Ci0gICAg
c3RhdGljIGNvbnN0IFJHQkEzMiBibHVlID0gMHhmZjAwMDBmZjsKLSAgICBzdGF0aWMgY29uc3Qg
UkdCQTMyIHJlZCA9IDB4ZmZmZjAwMDA7Ci0gICAgc3RhdGljIGNvbnN0IFJHQkEzMiBncmVlbiA9
IDB4ZmYwMDgwMDA7Ci0gICAgc3RhdGljIGNvbnN0IFJHQkEzMiBjeWFuID0gMHhGRjAwRkZGRjsK
KyAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IgbWFnZW50YSB7IDB4ZmZmZjAwZmYgfTsKKyAgICBj
b25zdGV4cHIgU2ltcGxlQ29sb3IgYmx1ZSB7IDB4ZmYwMDAwZmYgfTsKKyAgICBjb25zdGV4cHIg
U2ltcGxlQ29sb3IgcmVkIHsgMHhmZmZmMDAwMCB9OworICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xv
ciBkYXJrR3JlZW4geyAweGZmMDA4MDAwIH07CiAKICAgICBJbnRTaXplIHNpemUgPSBjYXB0dXJl
U2l6ZSgpOwogICAgIGZsb2F0IGJveFNpemUgPSBzaXplLndpZHRoKCkgKiAuMDM1OwpAQCAtMzE3
LDkgKzMxNSw5IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdCb3hlcyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiAKICAgICBib3hUb3AgKz0gYm94U2l6ZSArIDI7CiAgICAg
Ym94TGVmdCA9IGJveFNpemU7Ci0gICAgQ29sb3IgYm94Q29sb3JzW10gPSB7IENvbG9yOjp3aGl0
ZSwgeWVsbG93LCBjeWFuLCBncmVlbiwgbWFnZW50YSwgcmVkLCBibHVlIH07Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihib3hDb2xvcnMpIC8gc2l6ZW9mKGJveENvbG9yc1sw
XSk7IGkrKykgewotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChib3hMZWZ0LCBi
b3hUb3AsIGJveFNpemUgKyAxLCBib3hTaXplICsgMSksIGJveENvbG9yc1tpXSk7CisgICAgY29u
c3RleHByIFNpbXBsZUNvbG9yIGJveENvbG9yc1tdID0geyBDb2xvcjo6d2hpdGUsIENvbG9yOjp5
ZWxsb3csIENvbG9yOjpjeWFuLCBkYXJrR3JlZW4sIG1hZ2VudGEsIHJlZCwgYmx1ZSB9OworICAg
IGZvciAoYXV0byYgYm94Q29sb3IgOiBib3hDb2xvcnMpIHsKKyAgICAgICAgY29udGV4dC5maWxs
UmVjdChGbG9hdFJlY3QoYm94TGVmdCwgYm94VG9wLCBib3hTaXplICsgMSwgYm94U2l6ZSArIDEp
LCBib3hDb2xvcik7CiAgICAgICAgIGJveExlZnQgKz0gYm94U2l6ZSArIDE7CiAgICAgfQogICAg
IGNvbnRleHQuc3Ryb2tlUGF0aChtX3BhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCmluZGV4IGVkOGFiYjRhMTQ2YWJjNzEw
YzQ1YzQ3NzMwZGI4NTAwM2RlNjZjNDkuLjVhNjc1YTI1ZWJiMjA2Yzc0NmJkNDRjYzIyYTQ1MGMy
ODc2Y2E2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xs
YmFyVGhlbWVNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9s
bGJhclRoZW1lTW9jay5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lTW9j
azo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplLCBT
Y3IKIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHRyYWNrUmVjdCkKIHsKLSAgICBjb250ZXh0LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFy
LmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkgOiBDb2xvcigweEZGRTBFMEUwKSk7CisgICAg
Y29udGV4dC5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6
bGlnaHRHcmF5IDogU2ltcGxlQ29sb3IgeyAweEZGRTBFMEUwIH0pOwogfQogCiB2b2lkIFNjcm9s
bGJhclRoZW1lTW9jazo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9s
bGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDk4Y2RkOGJlZmRiYTFiYTc4MmMwM2U2
YjI1MjFkY2E4MDc1ZmNkYWIuLjNkZjQ1NWIwNjMxMmVlNWNkNjFmN2VkMWJiODhjN2M3NTc3Y2Iz
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xODM3
LDkgKzE4MzcsMTEgQEAgUmVuZGVyRnJhZ21lbnRlZEZsb3cqIFJlbmRlck9iamVjdDo6bG9jYXRl
RW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKSBjb25zdAogdm9pZCBSZW5kZXJPYmplY3Q6OmNhbGN1
bGF0ZUJvcmRlclN0eWxlQ29sb3IoY29uc3QgQm9yZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCb3hT
aWRlJiBzaWRlLCBDb2xvciYgY29sb3IpCiB7CiAgICAgQVNTRVJUKHN0eWxlID09IEJvcmRlclN0
eWxlOjpJbnNldCB8fCBzdHlsZSA9PSBCb3JkZXJTdHlsZTo6T3V0c2V0KTsKKwogICAgIC8vIFRo
aXMgdmFsdWVzIHdlcmUgZGVyaXZlZCBlbXBpcmljYWxseS4KLSAgICBjb25zdCBSR0JBMzIgYmFz
ZURhcmtDb2xvciA9IDB4RkYyMDIwMjA7Ci0gICAgY29uc3QgUkdCQTMyIGJhc2VMaWdodENvbG9y
ID0gMHhGRkVCRUJFQjsKKyAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IgYmFzZURhcmtDb2xvciB7
IDB4RkYyMDIwMjAgfTsKKyAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IgYmFzZUxpZ2h0Q29sb3Ig
eyAweEZGRUJFQkVCIH07CisKICAgICBlbnVtIE9wZXJhdGlvbiB7IERhcmtlbiwgTGlnaHRlbiB9
OwogCiAgICAgT3BlcmF0aW9uIG9wZXJhdGlvbiA9IChzaWRlID09IEJTVG9wIHx8IHNpZGUgPT0g
QlNMZWZ0KSA9PSAoc3R5bGUgPT0gQm9yZGVyU3R5bGU6Okluc2V0KSA/IERhcmtlbiA6IExpZ2h0
ZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCAwYzM1YjRm
MTc2MTJkNDdhNjY0NThkM2YzNzI2NTcxZWJhYmY5YWY3Li42MDk3YjRjNmEzZTllYmQzMTkyOTI2
ZmUzOTM5YjhiYjVkN2ZlZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHAKQEAgLTEyODUsNzMgKzEyODUsNzIgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnN5c3RlbUNv
bG9yKENTU1ZhbHVlSUQgY3NzVmFsdWVJZCwgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGkKIHsK
ICAgICBzd2l0Y2ggKGNzc1ZhbHVlSWQpIHsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0TGluazoK
LSAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29udGFpbnMoU3R5bGVDb2xvcjo6T3B0aW9uczo6Rm9y
VmlzaXRlZExpbmspID8gMHhGRjU1MUE4QiA6IDB4RkYwMDAwRUU7CisgICAgICAgIHJldHVybiBv
cHRpb25zLmNvbnRhaW5zKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OkZvclZpc2l0ZWRMaW5rKSA/IFNp
bXBsZUNvbG9yIHsgMHhGRjU1MUE4QiB9IDogU2ltcGxlQ29sb3IgeyAweEZGMDAwMEVFIH07CiAg
ICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEFjdGl2ZWxpbms6Ci0gICAgICAgIHJldHVybiAweEZGRkYw
MDAwOworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGRkYwMDAwIH07CiAgICAgY2Fz
ZSBDU1NWYWx1ZUFjdGl2ZWJvcmRlcjoKLSAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAg
ICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJ1dHRvbnRl
eHQ6Ci0gICAgICAgIHJldHVybiAweEZGMDAwMDAwOworICAgICAgICByZXR1cm4gQ29sb3I6OmJs
YWNrOwogICAgIGNhc2UgQ1NTVmFsdWVBY3RpdmVjYXB0aW9uOgotICAgICAgICByZXR1cm4gMHhG
RkNDQ0NDQzsKKyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkNDQ0NDQyB9OwogICAg
IGNhc2UgQ1NTVmFsdWVBcHB3b3Jrc3BhY2U6Ci0gICAgICAgIHJldHVybiAweEZGRkZGRkZGOwor
ICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogICAgIGNhc2UgQ1NTVmFsdWVCYWNrZ3JvdW5k
OgotICAgICAgICByZXR1cm4gMHhGRjYzNjNDRTsKKyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9y
IHsgMHhGRjYzNjNDRSB9OwogICAgIGNhc2UgQ1NTVmFsdWVCdXR0b25mYWNlOgotICAgICAgICBy
ZXR1cm4gMHhGRkMwQzBDMDsKKyAgICAgICAgcmV0dXJuIENvbG9yOjpsaWdodEdyYXk7CiAgICAg
Y2FzZSBDU1NWYWx1ZUJ1dHRvbmhpZ2hsaWdodDoKLSAgICAgICAgcmV0dXJuIDB4RkZEREREREQ7
CisgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZEREREREQgfTsKICAgICBjYXNlIENT
U1ZhbHVlQnV0dG9uc2hhZG93OgotICAgICAgICByZXR1cm4gMHhGRjg4ODg4ODsKKyAgICAgICAg
cmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjg4ODg4OCB9OwogICAgIGNhc2UgQ1NTVmFsdWVCdXR0
b250ZXh0OgotICAgICAgICByZXR1cm4gMHhGRjAwMDAwMDsKKyAgICAgICAgcmV0dXJuIENvbG9y
OjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlQ2FwdGlvbnRleHQ6Ci0gICAgICAgIHJldHVybiAw
eEZGMDAwMDAwOworICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFs
dWVHcmF5dGV4dDoKLSAgICAgICAgcmV0dXJuIDB4RkY4MDgwODA7CisgICAgICAgIHJldHVybiBT
aW1wbGVDb2xvciB7IDB4RkY4MDgwODAgfTsKICAgICBjYXNlIENTU1ZhbHVlSGlnaGxpZ2h0Ogot
ICAgICAgICByZXR1cm4gMHhGRkI1RDVGRjsKKyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsg
MHhGRkI1RDVGRiB9OwogICAgIGNhc2UgQ1NTVmFsdWVIaWdobGlnaHR0ZXh0OgotICAgICAgICBy
ZXR1cm4gMHhGRjAwMDAwMDsKKyAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNl
IENTU1ZhbHVlSW5hY3RpdmVib3JkZXI6Ci0gICAgICAgIHJldHVybiAweEZGRkZGRkZGOworICAg
ICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogICAgIGNhc2UgQ1NTVmFsdWVJbmFjdGl2ZWNhcHRp
b246Ci0gICAgICAgIHJldHVybiAweEZGRkZGRkZGOworICAgICAgICByZXR1cm4gQ29sb3I6Ondo
aXRlOwogICAgIGNhc2UgQ1NTVmFsdWVJbmFjdGl2ZWNhcHRpb250ZXh0OgotICAgICAgICByZXR1
cm4gMHhGRjdGN0Y3RjsKKyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjdGN0Y3RiB9
OwogICAgIGNhc2UgQ1NTVmFsdWVJbmZvYmFja2dyb3VuZDoKLSAgICAgICAgcmV0dXJuIDB4RkZG
QkZDQzU7CisgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZGQkZDQzUgfTsKICAgICBj
YXNlIENTU1ZhbHVlSW5mb3RleHQ6Ci0gICAgICAgIHJldHVybiAweEZGMDAwMDAwOworICAgICAg
ICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVNZW51OgotICAgICAgICBy
ZXR1cm4gMHhGRkMwQzBDMDsKKyAgICAgICAgcmV0dXJuIENvbG9yOjpsaWdodEdyYXk7CiAgICAg
Y2FzZSBDU1NWYWx1ZU1lbnV0ZXh0OgotICAgICAgICByZXR1cm4gMHhGRjAwMDAwMDsKKyAgICAg
ICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlU2Nyb2xsYmFyOgotICAg
ICAgICByZXR1cm4gMHhGRkZGRkZGRjsKKyAgICAgICAgcmV0dXJuIENvbG9yOjp3aGl0ZTsKICAg
ICBjYXNlIENTU1ZhbHVlVGV4dDoKLSAgICAgICAgcmV0dXJuIDB4RkYwMDAwMDA7CisgICAgICAg
IHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZGRhcmtzaGFkb3c6
Ci0gICAgICAgIHJldHVybiAweEZGNjY2NjY2OworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3Ig
eyAweEZGNjY2NjY2IH07CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZGZhY2U6Ci0gICAgICAgIHJl
dHVybiAweEZGQzBDMEMwOworICAgICAgICByZXR1cm4gQ29sb3I6OmxpZ2h0R3JheTsKICAgICBj
YXNlIENTU1ZhbHVlVGhyZWVkaGlnaGxpZ2h0OgotICAgICAgICByZXR1cm4gMHhGRkRERERERDsK
KyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkRERERERCB9OwogICAgIGNhc2UgQ1NT
VmFsdWVUaHJlZWRsaWdodHNoYWRvdzoKLSAgICAgICAgcmV0dXJuIDB4RkZDMEMwQzA7CisgICAg
ICAgIHJldHVybiBDb2xvcjo6bGlnaHRHcmF5OwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRzaGFk
b3c6Ci0gICAgICAgIHJldHVybiAweEZGODg4ODg4OworICAgICAgICByZXR1cm4gU2ltcGxlQ29s
b3IgeyAweEZGODg4ODg4IH07CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvdzoKLSAgICAgICAgcmV0
dXJuIDB4RkZGRkZGRkY7CisgICAgICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBD
U1NWYWx1ZVdpbmRvd2ZyYW1lOgotICAgICAgICByZXR1cm4gMHhGRkNDQ0NDQzsKKyAgICAgICAg
cmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkNDQ0NDQyB9OwogICAgIGNhc2UgQ1NTVmFsdWVXaW5k
b3d0ZXh0OgotICAgICAgICByZXR1cm4gMHhGRjAwMDAwMDsKKyAgICAgICAgcmV0dXJuIENvbG9y
OjpibGFjazsKICAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9Ci0gICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKIENvbG9yIFJlbmRlclRoZW1lOjph
Y3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlv
bnM+IG9wdGlvbnMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0KaW5kZXggY2Q4YWY2ZTJhNzg1ZjAxNjkyNDdiMGQxZjJjYWE3N2M5M2M2MTQwZi4uMjM5
ZmUyMDQ4Mjk4NmU5Mzc2MGYwNDk2MzhlOGJiMmZmMmEzYzdlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtODE5LDExICs4MTksMTEgQEAgQ29sb3Ig
UmVuZGVyVGhlbWVNYWM6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSUQgY3NzVmFsdWVJRCwgT3B0aW9u
U2V0PFN0eWxlQ29sb3I6Ok8KICAgICAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZGZhY2U6CiAgICAg
ICAgICAgICAvLyBXZSBzZWxlY3RlZCB0aGlzIHZhbHVlIGluc3RlYWQgb2YgW05TQ29sb3IgY29u
dHJvbENvbG9yXSB0byBhdm9pZCB3ZWJzaXRlIGluY29tcGF0aWJpbGl0aWVzLgogICAgICAgICAg
ICAgLy8gV2UgbWF5IHdhbnQgdG8gY29uc2lkZXIgY2hhbmdpbmcgdG8gW05TQ29sb3IgY29udHJv
bENvbG9yXSBzb21lIGRheS4KLSAgICAgICAgICAgIHJldHVybiAweEZGQzBDMEMwOworICAgICAg
ICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkMwQzBDMCB9OwogCiAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVJbmZvYmFja2dyb3VuZDoKICAgICAgICAgICAgIC8vIE5vIGNvcnJlc3BvbmRpbmcg
TlNDb2xvciBmb3IgdGhpcyBzbyB3ZSB1c2UgYSBoYXJkIGNvZGVkIHZhbHVlLgotICAgICAgICAg
ICAgcmV0dXJuIDB4RkZGQkZDQzU7CisgICAgICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAw
eEZGRkJGQ0M1IH07CiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZU1lbnU6CiAgICAgICAgICAgICBy
ZXR1cm4gbWVudUJhY2tncm91bmRDb2xvcigpOwpAQCAtODMyLDMwICs4MzIsMzAgQEAgQ29sb3Ig
UmVuZGVyVGhlbWVNYWM6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSUQgY3NzVmFsdWVJRCwgT3B0aW9u
U2V0PFN0eWxlQ29sb3I6Ok8KICAgICAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJvcmRlcjoKICAg
ICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFyYW5j
ZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAgICAgICAgICAg
aWYgKGxvY2FsQXBwZWFyYW5jZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIENvbG9yKDB4RkYxQUE5RkYsIENvbG9yOjpTZW1hbnRpYyk7Ci0gICAgICAgICAg
ICByZXR1cm4gQ29sb3IoMHhGRjAwNjdGNCwgQ29sb3I6OlNlbWFudGljKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4RkYxQUE5RkYgfSwgQ29sb3I6OlNlbWFudGlj
IH07CisgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4RkYwMDY3RjQgfSwgQ29s
b3I6OlNlbWFudGljIH07CiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udHJv
bEFjY2VudDoKICAgICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVz
ZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgog
ICAgICAgICAgICAgLy8gU2FtZSBjb2xvciBpbiBsaWdodCBhbmQgZGFyayBhcHBlYXJhbmNlcy4K
LSAgICAgICAgICAgIHJldHVybiBDb2xvcigweEZGMDA3QUZGLCBDb2xvcjo6U2VtYW50aWMpOwor
ICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweEZGMDA3QUZGIH0sIENvbG9yOjpT
ZW1hbnRpYyB9OwogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNlbGVjdGVkQ29u
dGVudEJhY2tncm91bmQ6CiAgICAgICAgICAgICAvLyBIYXJkY29kZWQgdG8gYXZvaWQgZXhwb3Np
bmcgYSB1c2VyIGFwcGVhcmFuY2UgcHJlZmVyZW5jZSB0byB0aGUgd2ViIGZvciBmaW5nZXJwcmlu
dGluZy4KICAgICAgICAgICAgIGlmIChsb2NhbEFwcGVhcmFuY2UudXNpbmdEYXJrQXBwZWFyYW5j
ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBDb2xvcigweEZGMDA1OEQwLCBDb2xvcjo6U2Vt
YW50aWMpOwotICAgICAgICAgICAgcmV0dXJuIENvbG9yKDB4RkYwMDYzRTEsIENvbG9yOjpTZW1h
bnRpYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweEZGMDA1OEQw
IH0sIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3Ig
eyAweEZGMDA2M0UxIH0sIENvbG9yOjpTZW1hbnRpYyB9OwogCiAgICAgICAgIGNhc2UgQ1NTVmFs
dWVIaWdobGlnaHQ6CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNlbGVjdGVkVGV4
dEJhY2tncm91bmQ6CiAgICAgICAgICAgICAvLyBIYXJkY29kZWQgdG8gYXZvaWQgZXhwb3Npbmcg
YSB1c2VyIGFwcGVhcmFuY2UgcHJlZmVyZW5jZSB0byB0aGUgd2ViIGZvciBmaW5nZXJwcmludGlu
Zy4KICAgICAgICAgICAgIGlmIChsb2NhbEFwcGVhcmFuY2UudXNpbmdEYXJrQXBwZWFyYW5jZSgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBDb2xvcigweENDM0Y2MzhCLCBDb2xvcjo6U2VtYW50
aWMpOwotICAgICAgICAgICAgcmV0dXJuIENvbG9yKDB4OTk4MEJDRkUsIENvbG9yOjpTZW1hbnRp
Yyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweENDM0Y2MzhCIH0s
IENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAw
eDk5ODBCQ0ZFIH0sIENvbG9yOjpTZW1hbnRpYyB9OwogCiAjaWYgIUhBVkUoT1NfREFSS19NT0RF
X1NVUFBPUlQpCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUNvbnRhaW5lckJvcmRl
cjoKLSAgICAgICAgICAgIHJldHVybiAweEZGQzVDNUM1OworICAgICAgICAgICAgcmV0dXJuIFNp
bXBsZUNvbG9yIHsgMHhGRkM1QzVDNSB9OwogI2VuZGlmCiAKICAgICAgICAgY2FzZSBDU1NWYWx1
ZUFwcGxlU3lzdGVtRXZlbkFsdGVybmF0aW5nQ29udGVudEJhY2tncm91bmQ6IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCA1NmQyN2QwMWM2
ZDJiMjEwOGNjY2I3M2Q3YjI2MDAzZTY3NTlmMThiLi5lNTRhODMyNDgxNTQxMmJhOGM2ZmRmNGY4
MjE5MTQ0ODUxYWZiNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwCkBAIC0yNDQsMTcgKzI0NCwxNyBAQCB2b2lkIFJlbmRlclRyZWVBc1RleHQ6
OndyaXRlUmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3QmIG8s
CiAgICAgICAgICAgICAvLyBEbyBub3QgZHVtcCBpbnZhbGlkIG9yIHRyYW5zcGFyZW50IGJhY2tn
cm91bmRzLCBzaW5jZSB0aGF0IGlzIHRoZSBkZWZhdWx0LgogICAgICAgICAgICAgQ29sb3IgYmFj
a2dyb3VuZENvbG9yID0gby5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgICAgICBpZiAoby5wYXJlbnQoKS0+c3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLnJnYigpICE9
IGJhY2tncm91bmRDb2xvci5yZ2IoKQotICAgICAgICAgICAgICAgICYmIGJhY2tncm91bmRDb2xv
ci5pc1ZhbGlkKCkgJiYgYmFja2dyb3VuZENvbG9yLnJnYigpKQorICAgICAgICAgICAgICAgICYm
IGJhY2tncm91bmRDb2xvci5yZ2IoKSAhPSBDb2xvcjo6dHJhbnNwYXJlbnQpCiAgICAgICAgICAg
ICAgICAgdHMgPDwgIiBbYmdjb2xvcj0iIDw8IGJhY2tncm91bmRDb2xvci5uYW1lRm9yUmVuZGVy
VHJlZUFzVGV4dCgpIDw8ICJdIjsKICAgICAgICAgICAgIAogICAgICAgICAgICAgQ29sb3IgdGV4
dEZpbGxDb2xvciA9IG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RmlsbENvbG9yKTsKICAgICAgICAgICAgIGlmIChvLnBhcmVudCgpLT5zdHlsZSgp
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpLnJn
YigpICE9IHRleHRGaWxsQ29sb3IucmdiKCkgIAotICAgICAgICAgICAgICAgICYmIHRleHRGaWxs
Q29sb3IuaXNWYWxpZCgpICYmIHRleHRGaWxsQ29sb3IucmdiKCkgIT0gY29sb3IucmdiKCkgJiYg
dGV4dEZpbGxDb2xvci5yZ2IoKSkKKyAgICAgICAgICAgICAgICAmJiB0ZXh0RmlsbENvbG9yLnJn
YigpICE9IGNvbG9yLnJnYigpICYmIHRleHRGaWxsQ29sb3IucmdiKCkgIT0gQ29sb3I6OnRyYW5z
cGFyZW50KQogICAgICAgICAgICAgICAgIHRzIDw8ICIgW3RleHRGaWxsQ29sb3I9IiA8PCB0ZXh0
RmlsbENvbG9yLm5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0KCkgPDwgIl0iOwogCiAgICAgICAgICAg
ICBDb2xvciB0ZXh0U3Ryb2tlQ29sb3IgPSBvLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yKTsKICAgICAgICAgICAgIGlmIChvLnBh
cmVudCgpLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTdHJva2VDb2xvcikucmdiKCkgIT0gdGV4dFN0cm9rZUNvbG9yLnJnYigpCi0gICAgICAgICAg
ICAgICAgJiYgdGV4dFN0cm9rZUNvbG9yLmlzVmFsaWQoKSAmJiB0ZXh0U3Ryb2tlQ29sb3Iucmdi
KCkgIT0gY29sb3IucmdiKCkgJiYgdGV4dFN0cm9rZUNvbG9yLnJnYigpKQorICAgICAgICAgICAg
ICAgICYmIHRleHRTdHJva2VDb2xvci5yZ2IoKSAhPSBjb2xvci5yZ2IoKSAmJiB0ZXh0U3Ryb2tl
Q29sb3IucmdiKCkgIT0gQ29sb3I6OnRyYW5zcGFyZW50KQogICAgICAgICAgICAgICAgIHRzIDw8
ICIgW3RleHRTdHJva2VDb2xvcj0iIDw8IHRleHRTdHJva2VDb2xvci5uYW1lRm9yUmVuZGVyVHJl
ZUFzVGV4dCgpIDw8ICJdIjsKIAogICAgICAgICAgICAgaWYgKG8ucGFyZW50KCktPnN0eWxlKCku
dGV4dFN0cm9rZVdpZHRoKCkgIT0gby5zdHlsZSgpLnRleHRTdHJva2VXaWR0aCgpICYmIG8uc3R5
bGUoKS50ZXh0U3Ryb2tlV2lkdGgoKSA+IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA4ODBkMThjYzJlODE0NGE2NWMzYjQxNTg2Yzgw
NjIxZmU5MTYxZjY2Li4xYzAwYmRhNTNmNWI2YjQzNGVhNzE5NzlmNGU2MzIxMzgxZGE1NzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTE0ODksOCArMTQ4OSwxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q29sb3I+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCisgICAgdWludDMyX3QgdmFsdWUgPSBjb2xvci5yZ2IoKS52YWx1ZSgpOworCiAgICAgZW5j
b2RlciA8PCB0cnVlOwotICAgIGVuY29kZXIgPDwgY29sb3IucmdiKCk7CisgICAgZW5jb2RlciA8
PCB2YWx1ZTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPENvbG9yPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIENvbG9yJiBjb2xvcikKQEAgLTE1MjgsMTEgKzE1MzAsMTEgQEAgYm9vbCBBcmd1
bWVudENvZGVyPENvbG9yPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENvbG9yJiBjb2xvcikK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgUkdCQTMyIHJnYmE7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZ2JhKSkKKyAgICB1aW50MzJfdCB2YWx1ZTsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29sb3Ig
PSBDb2xvcihyZ2JhKTsKKyAgICBjb2xvciA9IFNpbXBsZUNvbG9yIHsgdmFsdWUgfTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGI2NDQ0ZDE0OGVkZTBkOTRkMGZlYWYxNjk1MzYyOGU2YmNhMDA1NDMuLjVm
NzE4MzgyM2M5ZGFkZjRjYjFjNDUzYjdkYzg4OTE4OTFlNWE1YjAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0w
MS0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBS
R0JBMzIgdHlwZWRlZiB3aXRoIGEgY2xhc3MgdG8gaW1wcm92ZSB0eXBlIHNhZmV0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6IFVzZSB0aGUgQ29sb3IgY29uc3RydWN0b3IgaW5zdGVhZCBvZiBDb2xvcjo6Y3Jl
YXRlVW5jaGVja2VkLgorCiAyMDIwLTAxLTI3ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFw
cGxlLmNvbT4KIAogICAgICAgICBbZXdzXSBBZGQgbWV0aG9kIHRvIGZldGNoIGNxKyBwYXRjaGVz
IGZyb20gQnVnemlsbGEKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUERGU25hcHNob3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1BERlNuYXBzaG90Lm1tCmluZGV4IDEyZjVmZjU3ZTQxYzUwNDMwNGNjZjU2NTNmZGZl
MDljYWY4ODkyMWQuLjFiYmZkY2E5ZTk2YzUzNWMyYWE5YmIzY2U1NDQ1ODAxN2U2NGJlODEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNo
b3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZTbmFw
c2hvdC5tbQpAQCAtNjAsNyArNjAsNyBAQCBURVNUKFBERlNuYXBzaG90LCBGdWxsQ29udGVudCkK
ICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVs0XSwgJ28nKTsKIAogICAgICAgICAvLyBU
aGUgZW50aXJlIHBhZ2Ugc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEgcG9pbnQgaW4gdGhlIG1pZGRs
ZSB0byBjaGVjay4KLSAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwg
MzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBF
Q1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yKDAsIDI1NSwgMCkp
OwogCiAgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CiAgICAgfV07CkBAIC05MSw3ICs5
MSw3IEBAIFRFU1QoUERGU25hcHNob3QsIFN1YnJlZ2lvbnMpCiAgICAgICAgIEVYUEVDVF9FUShw
YWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7CiAKICAgICAgICAgLy8gVGhlIGVudGlyZSBwYWdl
IHNob3VsZCBiZSBncmVlbi4gUGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCi0g
ICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCgyMDAsIDE1MCkgPT0gQ29sb3I6
OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+
Y29sb3JBdFBvaW50KDIwMCwgMTUwKSA9PSBDb2xvcigwLCAyNTUsIDApKTsKIAogICAgICAgICBk
aWRUYWtlU25hcHNob3QgPSB0cnVlOwogICAgIH1dOwpAQCAtMTExLDEwICsxMTEsMTAgQEAgVEVT
VChQREZTbmFwc2hvdCwgU3VicmVnaW9ucykKICAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1
YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgMTIwMCwgMTIwMCkpKTsK
IAogICAgICAgICAvLyBBIHBpeGVsIHRoYXQgd2FzIGluIHRoZSB2aWV3IHNob3VsZCBiZSBncmVl
bi4gUGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCi0gICAgICAgIEVYUEVDVF9U
UlVFKHBhZ2UtPmNvbG9yQXRQb2ludCgyMDAsIDE1MCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tl
ZCgwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDIw
MCwgMTUwKSA9PSBDb2xvcigwLCAyNTUsIDApKTsKIAogICAgICAgICAvLyBBIHBpeGVsIHRoYXQg
d2FzIG91dHNpZGUgdGhlIHZpZXcgc2hvdWxkIGFsc28gYmUgZ3JlZW4gKHdlIGV4dGVuZCBiYWNr
Z3JvdW5kIGNvbG9yIG91dCkuIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgot
ICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoOTAwLCA3MDApID09IENvbG9y
OjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2Ut
PmNvbG9yQXRQb2ludCg5MDAsIDcwMCkgPT0gQ29sb3IoMCwgMjU1LCAwKSk7CiAKICAgICAgICAg
ZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKICAgICB9XTsKQEAgLTE0MCwyMCArMTQwLDIwIEBAIFRF
U1QoUERGU25hcHNob3QsIE92ZXIyMDBJbmNoZXMpCiAgICAgICAgIGF1dG8gcGFnZSA9IGRvY3Vt
ZW50LT5wYWdlKDApOwogICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CiAgICAgICAg
IEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtl
KDAsIDAsIDgwMCwgMTQ0MDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQ
b2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcigw
LCAyNTUsIDApKTsKICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDV1
KTsKIAogICAgICAgICBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMSk7CiAgICAgICAgIEVYUEVDVF9O
RShwYWdlLCBudWxscHRyKTsKICAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3Qo
cGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKLSAgICAgICAg
RVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3JlYXRl
VW5jaGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0
UG9pbnQoNDAwLCAzMDApID09IENvbG9yKDAsIDI1NSwgMCkpOwogCiAgICAgICAgIEVYUEVDVF9F
UShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7CiAKICAgICAgICAgcGFnZSA9IGRvY3VtZW50
LT5wYWdlKDIpOwogICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CiAgICAgICAgIEVY
UEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAs
IDAsIDgwMCwgNjAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQo
NDAwLCAzMDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3IoMCwgMjU1
LCAwKSk7CiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7CiAK
ICAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKQEAgLTE3OCw3ICsxNzgsNyBAQCBURVNU
KFBERlNuYXBzaG90LCBMaW5rcykKICAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOwog
CiAgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBD
R1JlY3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2Ut
PmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgyNTUsIDI1
NSwgMjU1KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMw
MCkgPT0gQ29sb3IoMjU1LCAyNTUsIDI1NSkpOwogCiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT5j
aGFyYWN0ZXJDb3VudCgpLCA4dSk7CiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMF0s
ICdDJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389011</attachid>
            <date>2020-01-28 08:57:43 -0800</date>
            <delta_ts>2020-01-28 20:28:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206862-20200128085737.patch</filename>
            <type>text/plain</type>
            <size>76303</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI2OWY4NzgzN2EwOWVj
Yzg3N2VhMDRjMGQ5YjZhMzI0MzFlMjA1Yi4uYjZmMmNlNWM5MTJlMTM5ODE5OTBhODExOTgzNGY4
YmE0NGQ1MzY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0wMS0yNyAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBSR0JBMzIgdHlw
ZWRlZiB3aXRoIGEgY2xhc3MgdG8gaW1wcm92ZSB0eXBlIHNhZmV0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOiBSZW1vdmUg
UkdCQ29sb3IuaC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogUmVtb3ZlIFJCR0NvbG9yLmNwcC4K
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZSBSR0JD
b2xvci5oIGFuZCBSR0JDb2xvci5jcHAuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgUkdCQ29sb3IuaC4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmdldFJlY3RWYWx1ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JW
YWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGNzcy9EZXByZWNhdGVkQ1NTT01Q
cmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01Qcmlt
aXRpdmVWYWx1ZTo6Z2V0Q291bnRlclZhbHVlIGNvbnN0KTogVXNlCisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlOjpjb3VudGVyVmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NT
T01QcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVlIGNvbnN0KTogVXNlCisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlOjpyZWN0VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NT
T01QcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JWYWx1ZSBjb25zdCk6IFVTZQorICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZTo6aXNSR0JDb2xvciBhbmQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbG9y
LgorCisgICAgICAgICogY3NzL0RlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yLmg6IFN0b3JlIGEgQ29s
b3IgaW5zdGVhZCBvZiBhbiBSR0JBMzIuCisgICAgICAgIFRha2UgYSBDb2xvciBhcmd1bWVudCBp
bnN0ZWFkIG9mIGEgUkdCQ29sb3IgYXJndW1lbnQuIFJlZmFjdG9yZWQgdG8KKyAgICAgICAgdXNl
IGEgY3JlYXRlV3JhcHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBtZW1iZXIgdG8gdGlnaHRlbiB0aGUg
Y29kZS4KKworICAgICAgICAqIGNzcy9SR0JDb2xvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
Y3NzL1JHQkNvbG9yLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBjc3MvU3R5bGVDb2xvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKTogRXhwbGlj
aXRseSBjb252ZXJ0IHRvIFNpbXBsZUNvbG9yCisgICAgICAgIHJhdGhlciB0aGFuIHJlbHlpbmcg
b24gaW5pdGlhbGl6aW5nIGEgQ29sb3IgZnJvbSBhbiBpbnRlZ2VyIEFSR0IgdmFsdWUuCisKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06IFJlbW92ZWQgaW5jbHVkZSBv
ZiBSR0JDb2xvci5oLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKTogVXNlIHRoZSBD
b2xvciBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mCisgICAgICAgIENvbG9yOjpjcmVhdGVVbmNoZWNr
ZWQuCisKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbzo6SGlzdG9yaWNN
ZW1vcnlDYXRlZ29yeUluZm8pOiBVc2UKKyAgICAgICAgZXhwbGljaXQgU2ltcGxlQ29sb3IgcmF0
aGVyIHRoYW4gcmVseWluZyBvbiBpbml0aWFsaXppbmcgYSBDb2xvciBmcm9tIGFuCisgICAgICAg
IGludGVnZXIgQVJHQiB2YWx1ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmNwcDogVXNlIGNvbnN0ZXhwciBmb3IgY29uc3RhbnQgY29sb3JzLgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVJHQik6IEltcGxlbWVudCBieSBjYWxsaW5nIG1ha2VSR0JBLgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZVJHQkEpOiBVc2UgYW4gZXhwbGljaXQgYXJndW1lbnQgbGlzdCB0byBjYWxsIHRo
ZQorICAgICAgICBTaW1wbGVDb2xvciBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Om1h
a2VSR0JBMzJGcm9tRmxvYXRzKTogSW1wbGVtZW50IGJ5IGNhbGxpbmcgbWFrZVJHQkEuCisgICAg
ICAgIChXZWJDb3JlOjpjb2xvcldpdGhPdmVycmlkZUFscGhhKTogVXNlIGFuIGV4cGxpY2l0IGFy
Z3VtZW50IGxpc3QgdG8gY2FsbAorICAgICAgICB0aGUgU2ltcGxlQ29sb3IgY29uc3RydWN0b3Iu
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhleENvbG9ySW50ZXJuYWwpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9yOjpDb2xvcik6IFJlbW92ZWQgdW5uZWVkZWQgY29kZSB0byBzZXQg
dGhlIGNvbG9yCisgICAgICAgIHRvIGludmFsaWQsIHNpbmNlIHRoYXQncyBhbHJlYWR5IHRoZSBk
ZWZhdWx0IGZvciBhIG5ldyBDb2xvciBvYmplY3QuCisgICAgICAgIEFsc28gdHdlYWsgdGhlIGxv
Z2ljIGEgYml0IGFuZCBhZGQgZXhwbGljaXQgYXJndW1lbnQgbGlzdCBmb3IgdGhlCisgICAgICAg
IFNpbXBsZUNvbG9yIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6
OnNlcmlhbGl6YXRpb25Gb3JIVE1MIGNvbnN0KTogQWRkZWQuIEZhY3RvcmVkIG91dCBvZgorICAg
ICAgICB0aGUgQ29sb3I6OnNlcmlhbGl6ZWQgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpD
b2xvcjo6c2VyaWFsaXplZCBjb25zdCk6IENoYW5nZWQgdG8gY2FsbCBzZXJpYWxpemF0aW9uRm9y
SFRNTC4KKyAgICAgICAgKFdlYkNvcmU6OmZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhh
VmFsdWUpOiBSZW5hbWVkIHNsaWdodGx5IHNob3J0ZXIuCisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVDb2xvcjo6c2VyaWFsaXphdGlvbkZvckNTUyBjb25zdCk6IEFkZGVkLiBGYWN0b3JlZCBvdXQg
b2YKKyAgICAgICAgdGhlIENvbG9yOjpjc3NUZXh0IGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3I6OmNzc1RleHQgY29uc3QpOiBDaGFuZ2VkIHRvIGNhbGwgc2VyaWFsaXphdGlvbkZv
ckNTUy4KKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMjo6c2VyaWFsaXphdGlvbkZvclJlbmRlclRy
ZWVBc1RleHQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgRmFjdG9yZWQgb3V0IG9mIG5hbWVGb3JS
ZW5kZXJUcmVlQXNUZXh0LgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6Om5hbWVGb3JSZW5kZXJU
cmVlQXNUZXh0IGNvbnN0KTogQ2hhbmdlZCB0byBjYWxsCisgICAgICAgIHNlcmlhbGl6YXRpb25G
b3JSZW5kZXJUcmVlQXNUZXh0LgorICAgICAgICAoV2ViQ29yZTo6Y29sb3JGcm9tUHJlbXVsdGlw
bGllZEFSR0IpOiBVcGRhdGVkIHRvIHVzZSB0aGUgU2ltcGxlQ29sb3IKKyAgICAgICAgbWVtYmVy
IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIHRoZSByZWQvZ3JlZW4vYmx1ZS9hbHBoYUNoYW5uZWwgZnVu
Y3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6YmxlbmQpOiBVc2UgQ29sb3I6OnRyYW5zcGFyZW50
IGZvciBibGVuZGluZyB3aGVyZSB0aGUgb2xkCisgICAgICAgIGNvZGUgdXNlZCAwIGFuZCByZWxp
ZWQgb24gaG93IHRoYXQgaXMgY29udmVydGVkIHRvIGEgQ29sb3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOiBSZXBsYWNlZCB0aGUgUkdCQTMyIHR5cGVkZWYgYW5kIHRo
ZQorICAgICAgICBSR0JBIGNsYXNzIHdpdGggYSBuZXcgY2xhc3MgbmFtZWQgU2ltcGxlQ29sb3Iu
IERlbGV0ZWQgdGhlIGZvdXIKKyAgICAgICAgcmVkL2dyZWVuL2JsdWUvYWxwaGFDaGFubmVsIGZ1
bmN0aW9ucywgdGhlIENvbG9yIGNvbnN0cnVjdG9yIHRoYXQKKyAgICAgICAgdGFrZXMgYW5kIFJH
QkEsIGFuZCB0aGUgQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCBmdW5jdGlvbi4gQ2hhbmdlZAorICAg
ICAgICB0aGUgY29sb3IgY29uc3RhbnRzIHRvIGFsbCBiZSBjb25zdGV4cHIuIE1vdmVkIHRoZSBp
bmxpbmUgZnVuY3Rpb24KKyAgICAgICAgZGVmaW5pdGlvbnMgdW50aWwgYWZ0ZXIgZXZlcnl0aGlu
ZyBpcyBkZWxjYXJlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6
IFVzZSB1aW50MzJfdCBpbnN0ZWFkIG9mIFJHQkEzMi4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QmFja2luZ1N0b3JlOjpjbGVhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNr
aW5nU3RvcmU6OmNsZWFyUmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNr
aW5nU3RvcmU6OmZpbGxSZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tp
bmdTdG9yZTo6cmVwZWF0Rmlyc3RSb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QmFja2luZ1N0b3JlOjpwaXhlbEF0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJhY2tpbmdTdG9yZTo6c2V0UGl4ZWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQmFja2luZ1N0b3JlOjpibGVuZFBpeGVsKTogRGl0dG8uIENvbnZlcnQgdG8gYW5kIGZyb20K
KyAgICAgICAgU2ltcGxlQ29sb3Igc28gd2UgY2FuIHVzZSB2YXJpb3VzIGZ1bmN0aW9ucyB0aGF0
IG9wZXJhdGUgb24gdGhhdCB0eXBlLgorICAgICAgICBVc2UgdGhlIGlzVmlzaWJsZSBhbmQgcmVk
L2dyZWVuL2JsdWUvYWxwaGFDb21wb25lbnQgbWVtYmVyIGZ1bmN0aW9ucy4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjpJbWFnZUJhY2tpbmdTdG9yZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6OnBpeGVsVmFsdWUgY29uc3QpOiBVc2Ug
Q29sb3I6OnRyYW5zcGFyZW50CisgICAgICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgMCBhbmQg
cmVseWluZyBvbiBob3cgdGhhdCBpcyBjb252ZXJ0ZWQgdG8gYSBDb2xvci4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaDogUmVtb3ZlZCBpbmNsdWRlIG9mIEltYWdl
QmFja2luZ1N0b3JlLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOiBVc2UgY29uc3RleHByIFNp
bXBsZUNvbG9yOjp2YWx1ZSBmdW5jdGlvbiB0bworICAgICAgICBzd2l0Y2ggb24gYSBTaW1wbGVD
b2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Om9sZEFxdWFGb2N1c1JpbmdDb2xvcik6IFVzZSBhbiBleHBsaWNpdCBT
aW1wbGVDb2xvciB0byB0dXJuIGEKKyAgICAgICAgaGV4IGludGVnZXIgaW50byBhIENvbG9yIHdp
dGhvdXQgcmVseWluZyBvbiBpbXBsaWNpdCBjb252ZXJzaW9uLgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGVmYXVsdERldmljZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpkcmF3Qm94ZXMpOiBEaXR0by4gQWxzbyB1c2UgYSBtb2Rlcm4KKyAgICAgICAg
Zm9yIGxvb3AgaW5zdGVhZCBvZiBpbmRleGluZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Nj
cm9sbGJhclRoZW1lTW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1v
Y2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNhbGN1bGF0
ZUJvcmRlclN0eWxlQ29sb3IpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yIGNvbnN0
KTogRGl0dG8uIEFsc28gdXNlZCBuYW1lZCBjb2xvcnMuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnN5c3Rl
bUNvbG9yIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRl
ck9iamVjdCk6IEFkZGVkIGNoZWNrcyBhZ2FpbnN0CisgICAgICAgIENvbG9yOjp0cmFuc3BhcmVu
dCBpbnN0ZWFkIG9mIGNvbnZlcnRpbmcgdG8gYW4gaW50ZWdlciBhbmQgY2hlY2tpbmcKKyAgICAg
ICAgYWdhaW5zdCAwLiBSZW1vdmVkIHVubmVlZGVkIGlzVmFsaWQgY2hlY2tzLCBzaW5jZSBpbnZh
bGlkIGNvbG9yJ3MgQVJHQgorICAgICAgICB2YWx1ZSBpcyBDb2xvcjo6dHJhbnNwYXJlbnQuCisK
IDIwMjAtMDEtMjcgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIE5l
ZWQgYSB3YXkgdG8gbWFyayBhIERPTSBhdHRyaWJ1dGUgYXMgcnVudGltZSBjb25kaXRpb25hbGx5
IHJlYWQtd3JpdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmFiNjU0MjgxM2JjMmI3OWNmMDJkYWZlNmU5ZDAxMTBj
MDBkZGU4Ni4uY2VhYTI2ZjY4NDJiZmU3OTAxNjE4ODQ0Yzk1ZmE3MzBmZTlhMjZlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMS0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBSR0JBMzIgdHlwZWRlZiB3aXRoIGEgY2xhc3MgdG8g
aW1wcm92ZSB0eXBlIHNhZmV0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA2ODYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxDb2xvcj46OmVuY29kZSk6IFVzZSB1aW50MzJfdCBleHBsaWNp
dGx5IHRvIGNvbnZlcnQKKyAgICAgICAgdGhlIGNvbG9yIHZhbHVlIGludG8gYSBTaW1wbGVDb2xv
ci4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDb2xvcj46OmRlY29kZSk6IFNhbWUgdGhp
bmcsIG9ubHkgdGhlIG90aGVyIGRpcmVjdGlvbi4KKwogMjAyMC0wMS0yNyAgRnVqaWkgSGlyb25v
cmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dW2N1cmxd
IEFTU0VSVElPTiBGQUlMRUQ6IHNlc3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpIGluIFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlc3Ryb3lFbmdpbmUg
c2luY2UgcjI1NTEzNwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNTRkYjcxNmFjODdjYWM0ZDAxMzBk
ZDhhNzk1NTRkMGQ2NzU2OWU2OS4uZDZmZDRjNWU5OWFhMGNkNjFlYjhkZTJkNGVlZDQxN2VkM2Ni
ZGUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0zMzYsNyArMzM2LDYgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgK
ICAgICBjc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uaAogICAgIGNzcy9NZWRpYVF1ZXJ5UGFyc2Vy
Q29udGV4dC5oCi0gICAgY3NzL1JHQkNvbG9yLmgKICAgICBjc3MvUmVjdC5oCiAgICAgY3NzL1N0
eWxlQ29sb3IuaAogICAgIGNzcy9TdHlsZVByb3BlcnRpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA4
ZTA1NThhZjY2NTBjYTQxMzk0ZjUwMTZhMjRjNDEyMDAyMDdkYzUxLi5hZmQzOTcxMjYxMDM4ZmNm
YTJhMTAyZjA4NzdlODlmNTg0MWM4Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNzc0LDcgKzc3NCw2
IEBAIGNzcy9NZWRpYVF1ZXJ5TGlzdC5jcHAKIGNzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKIGNz
cy9NZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5jcHAKIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCi1jc3MvUkdCQ29sb3IuY3BwCiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcAogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKIGNzcy9TZWxlY3RvckZpbHRl
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA5MGQ1MWJlZDA3ODlmODQ1N2I5ZmM1MDU1NGZkMzJiNzQzMDQwMDkyLi5mYzdh
Mzg1YjY4MzVhY2JhMWFjYTVjYjYyMGU2NGM3YTlkYjkzN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODMxLDcgKzM4MzEs
NiBAQAogCQlCQzY5MzI3NDBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY5MzI3MjBEN0Uy
OTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM2RDQ0RUQwQzA3RjJFRDAwNzJEMkM5IC8qIEpT
SFRNTEVtYmVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM2RDQ0RUIwQzA3RjJFRDAwNzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudC5o
ICovOyB9OwogCQlCQzZENkUyNjA5QUY5NDM1MDBGNTk3NTkgLyogU2Nyb2xsVmlldy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2RDZFMjUwOUFGOTQz
NTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQlCQzc0REEzNzEwMTNGM0Y3MDA3OTg3QUQgLyogUkdCQ29sb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzREQTM1
MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNzcyQjNDMEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NI
ZWxwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
NzcyQjM2MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NIZWxwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzc3MkM0NzBDNEVCMkM2MDA4MzI4NUYg
LyogWE1MSHR0cFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNzcyQzQ1MEM0RUIyQzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5oICov
OyB9OwogCQlCQzc3MkM0RjBDNEVCMzA0MDA4MzI4NUYgLyogTUlNRVR5cGVSZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NzJDNEQwQzRF
QjMwNDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTMyNDUsOCArMTMyNDQsNiBAQAogCQlCQzZE
NDRFQTBDMDdGMkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxFbWJlZEVsZW1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzZENDRFQjBDMDdGMkVEMDA3MkQyQzkgLyogSlNI
VE1MRW1iZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hU
TUxFbWJlZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2RDZFMjUw
OUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcm9sbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM3
NERBMzUxMDEzRjNGNzAwNzk4N0FEIC8qIFJHQkNvbG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJHQkNvbG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJD
NzREQTM2MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSR0JDb2xvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDNzcyQjM2MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NIZWxwZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0hlbHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzc3MkM0NDBDNEVCMkM2MDA4MzI4NUYgLyogWE1MSHR0cFJlcXVlc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3NzJDNDUwQzRFQjJDNjAwODMyODVG
IC8qIFhNTEh0dHBSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBY
TUxIdHRwUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc3MTEsOCAr
Mjc3MDgsNiBAQAogCQkJCUU0QkJFRDBEMTRGNDAyNUQwMDNGMEI5OCAvKiBQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uaCAqLywKIAkJCQk5M0NBNEM5RjA5REY5M0ZBMDBERjg2NzcgLyog
cXVpcmtzLmNzcyAqLywKIAkJCQlCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICov
LAotCQkJCUJDNzREQTM2MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5jcHAgKi8sCi0JCQkJ
QkM3NERBMzUxMDEzRjNGNzAwNzk4N0FEIC8qIFJHQkNvbG9yLmggKi8sCiAJCQkJRTQ0QjRCQjEx
NDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5jcHAgKi8sCiAJCQkJRTQ0QjRCQjIx
NDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oICovLAogCQkJCTQzMkQzRkU3MThB
ODY1ODQwMEQ3REMwMyAvKiBTZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmggKi8sCkBAIC0z
MjIzOSw3ICszMjIzNCw2IEBACiAJCQkJRkQzMTYwQTkxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVy
YkNvbnZvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQUIxMkIwMjZGNzAwQzFBMzU5
IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBRDEy
QjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiSW5wdXRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUJDNzREQTM3MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThDRkY1RTEwQTE1NUEwNTAwMEE0MjM0IC8qIFJvb3RJbmxpbmVCb3guaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ5RTkxMUM5MEVGODZENDcwMDlEMENBRiAvKiBSb3RhdGVUcmFuc2Zvcm1PcGVy
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3M0Y5NUZGMTJDOTdCRkUwMDMxQUFGOSAvKiBS
b3VuZGVkUmVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcAppbmRleCAwMzgxZmI0Y2FjNzU3MDk2NTYwZTgyNTg5MTg1Y2Q5MmYzZWFjZWIw
Li5lNWZjZjY0YWQ4ZmUzZTk4MTA0MmFiOTFkYmY3MGQyYjhmNWFmNzZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRl
ICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWlyLmgiCi0j
aW5jbHVkZSAiUkdCQ29sb3IuaCIKICNpbmNsdWRlICJSZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
U3R5bGUuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTg3OCwyOSArODc3
LDYgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiAgICAg
fQogfQogCi1FeGNlcHRpb25PcjxDb3VudGVyJj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldENvdW50
ZXJWYWx1ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5p
dFR5cGU6OkNTU19DT1VOVEVSKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFj
Y2Vzc0Vycm9yIH07Ci0gICAgcmV0dXJuICptX3ZhbHVlLmNvdW50ZXI7Ci19Ci0KLUV4Y2VwdGlv
bk9yPFJlY3QmPiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVlKCkgY29uc3QKLXsKLSAg
ICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6Q1NTX1JFQ1QpCi0gICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKLSAgICByZXR1cm4g
Km1fdmFsdWUucmVjdDsKLX0KLQotRXhjZXB0aW9uT3I8UmVmPFJHQkNvbG9yPj4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmdldFJHQkNvbG9yVmFsdWUoKSBjb25zdAotewotICAgIGlmIChwcmltaXRpdmVV
bml0VHlwZSgpICE9IENTU1VuaXRUeXBlOjpDU1NfUkdCQ09MT1IpCi0gICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBub3QgcmV0dXJuIGEgbmV3IG9iamVjdCBmb3IgZWFjaCBpbnZvY2F0aW9uLgotICAgIHJl
dHVybiBSR0JDb2xvcjo6Y3JlYXRlKG1fdmFsdWUuY29sb3ItPnJnYigpKTsKLX0KLQogTkVWRVJf
SU5MSU5FIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVtYmVyVmFsdWUoU3RyaW5n
VmlldyBzdWZmaXgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcobV92YWx1ZS5udW0s
IHN1ZmZpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4IDc2M2Q0
MjBhNzFmYzhhMjM0NWNhMDkxOTk3ZmZiZjk0NjY3YzhkOGYuLjQ3NDZhYzhkMDdmY2QzZTQ2YjY2
Yzg4MGU5OWFmMWYyMmUwNTU0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5oCkBAIC0xNDIsOSArMTQyLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPGZsb2F0PiBnZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRTdHJpbmdWYWx1ZShDU1NVbml0VHlwZSwg
Y29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8U3RyaW5nPiBn
ZXRTdHJpbmdWYWx1ZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPENv
dW50ZXImPiBnZXRDb3VudGVyVmFsdWUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNl
cHRpb25PcjxSZWN0Jj4gZ2V0UmVjdFZhbHVlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
RXhjZXB0aW9uT3I8UmVmPFJHQkNvbG9yPj4gZ2V0UkdCQ29sb3JWYWx1ZSgpIGNvbnN0OwogCiAg
ICAgZG91YmxlIGNvbXB1dGVEZWdyZWVzKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCAwNGJm
OTcwNGVmNGMzMDNkN2Y0YzExZDlkYTMzYWNkMDg4NGE2ZGU5Li5jYzc0ZWZjNzZmZjRjM2MyMGYx
MzJiOTZmZTM3ZjEwZTdhYzA1NjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVw
cmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
ZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyBzdWNoIGFzIFN0eWxlQ291bnRlclZhbHVlLCBTdHlsZVJlY3RWYWx1ZSwg
YW5kIFN0eWxlQ29sb3JWYWx1ZSwgdGhlc2UgbWV0aG9kcyB3aWxsIGdldAogLy8gbW9yZSBjb21w
bGljYXRlZC4KIAotCiB1bnNpZ25lZCBzaG9ydCBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1
ZTo6cHJpbWl0aXZlVHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkIHNob3J0PihtX3ZhbHVlLT5wcmltaXRpdmVUeXBlKCkpOwpAQCAtNjQsMjYgKzYzLDI1IEBA
IEV4Y2VwdGlvbk9yPFN0cmluZz4gRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU6OmdldFN0
cmluZ1ZhbHVlKCkgY29uc3QKIAogRXhjZXB0aW9uT3I8UmVmPERlcHJlY2F0ZWRDU1NPTUNvdW50
ZXI+PiBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6Z2V0Q291bnRlclZhbHVlKCkgY29u
c3QKIHsKLSAgICBFeGNlcHRpb25PcjxDb3VudGVyJj4gY291bnRlciA9IG1fdmFsdWUtPmdldENv
dW50ZXJWYWx1ZSgpOwotICAgIGlmIChjb3VudGVyLmhhc0V4Y2VwdGlvbigpKQorICAgIGF1dG8q
IHZhbHVlID0gbV92YWx1ZS0+Y291bnRlclZhbHVlKCk7CisgICAgaWYgKCF2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwotICAgIHJldHVybiBE
ZXByZWNhdGVkQ1NTT01Db3VudGVyOjpjcmVhdGUoY291bnRlci5yZWxlYXNlUmV0dXJuVmFsdWUo
KSwgbV9vd25lci5nZXQoKSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWRDU1NPTUNvdW50ZXI6OmNy
ZWF0ZSgqdmFsdWUsIG1fb3duZXIpOwogfQogICAgIAogRXhjZXB0aW9uT3I8UmVmPERlcHJlY2F0
ZWRDU1NPTVJlY3Q+PiBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVl
KCkgY29uc3QKIHsKLSAgICBFeGNlcHRpb25PcjxSZWN0Jj4gcmVjdCA9IG1fdmFsdWUtPmdldFJl
Y3RWYWx1ZSgpOwotICAgIGlmIChyZWN0Lmhhc0V4Y2VwdGlvbigpKQorICAgIGF1dG8qIHZhbHVl
ID0gbV92YWx1ZS0+cmVjdFZhbHVlKCk7CisgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwotICAgIHJldHVybiBEZXByZWNhdGVk
Q1NTT01SZWN0OjpjcmVhdGUocmVjdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgbV9vd25lci5nZXQo
KSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWRDU1NPTVJlY3Q6OmNyZWF0ZSgqdmFsdWUsIG1fb3du
ZXIpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8RGVwcmVjYXRlZENTU09NUkdCQ29sb3I+PiBEZXBy
ZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JWYWx1ZSgpIGNvbnN0CiB7Ci0g
ICAgRXhjZXB0aW9uT3I8UmVmPFJHQkNvbG9yPj4gY29sb3IgPSBtX3ZhbHVlLT5nZXRSR0JDb2xv
clZhbHVlKCk7Ci0gICAgaWYgKGNvbG9yLmhhc0V4Y2VwdGlvbigpKQorICAgIGlmICghbV92YWx1
ZS0+aXNSR0JDb2xvcigpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vz
c0Vycm9yIH07Ci0gICAgcmV0dXJuIERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yOjpjcmVhdGUoY29s
b3IucmVsZWFzZVJldHVyblZhbHVlKCksIG1fb3duZXIuZ2V0KCkpOworICAgIHJldHVybiBEZXBy
ZWNhdGVkQ1NTT01SR0JDb2xvcjo6Y3JlYXRlKG1fb3duZXIsIG1fdmFsdWUtPmNvbG9yKCkpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUkdC
Q29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oCmlu
ZGV4IDQ2NTUwODU2ZTQxNmIwYjQ4MmE2MjliZmFlZjkwMTA5ODdjZTNmZDkuLjRhM2VkYzc2ODU1
NTNiYTFmOGIzZDhkZTc5NGFhNTU0MTU5YjM3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9EZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
ZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSw1NSArMjEsNDQgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuaCIKLSNp
bmNsdWRlICJSR0JDb2xvci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGVwcmVjYXRlZENTU09N
UkdCQ29sb3IgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxEZXByZWNhdGVkQ1NTT01SR0JDb2xv
cj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RGVwcmVjYXRlZENTU09NUkdCQ29sb3I+IGNy
ZWF0ZShjb25zdCBSR0JDb2xvciYgY29sb3IsIENTU1N0eWxlRGVjbGFyYXRpb24mIG93bmVyKQor
ICAgIHN0YXRpYyBSZWY8RGVwcmVjYXRlZENTU09NUkdCQ29sb3I+IGNyZWF0ZShDU1NTdHlsZURl
Y2xhcmF0aW9uJiBvd25lciwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGVwcmVjYXRlZENTU09NUkdCQ29sb3IoY29sb3IsIG93bmVyKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yKG93
bmVyLCBjb2xvcikpOwogICAgIH0KIAotICAgIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVl
KiByZWQoKSB7IHJldHVybiBtX3JlZC5nZXQoKTsgfQotICAgIERlcHJlY2F0ZWRDU1NPTVByaW1p
dGl2ZVZhbHVlKiBncmVlbigpIHsgcmV0dXJuIG1fZ3JlZW4uZ2V0KCk7IH0KLSAgICBEZXByZWNh
dGVkQ1NTT01QcmltaXRpdmVWYWx1ZSogYmx1ZSgpIHsgcmV0dXJuIG1fYmx1ZS5nZXQoKTsgfQot
ICAgIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlKiBhbHBoYSgpIHsgcmV0dXJuIG1fYWxw
aGEuZ2V0KCk7IH0KLSAgICAKLSAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9y
KG1fcmdiQ29sb3IpOyB9CisgICAgRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUmIHJlZCgp
IHsgcmV0dXJuIG1fcmVkOyB9CisgICAgRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUmIGdy
ZWVuKCkgeyByZXR1cm4gbV9ncmVlbjsgfQorICAgIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZh
bHVlJiBibHVlKCkgeyByZXR1cm4gbV9ibHVlOyB9CisgICAgRGVwcmVjYXRlZENTU09NUHJpbWl0
aXZlVmFsdWUmIGFscGhhKCkgeyByZXR1cm4gbV9hbHBoYTsgfQorCisgICAgQ29sb3IgY29sb3Io
KSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAKIHByaXZhdGU6Ci0gICAgRGVwcmVjYXRlZENT
U09NUkdCQ29sb3IoY29uc3QgUkdCQ29sb3ImIGNvbG9yLCBDU1NTdHlsZURlY2xhcmF0aW9uJiBv
d25lcikKLSAgICAgICAgOiBtX3JnYkNvbG9yKGNvbG9yLnJnYkNvbG9yKCkpCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgTnVtYmVyVHlwZT4gc3RhdGljIFJlZjxEZXByZWNhdGVkQ1NTT01QcmltaXRp
dmVWYWx1ZT4gY3JlYXRlV3JhcHBlcihDU1NTdHlsZURlY2xhcmF0aW9uJiBvd25lciwgTnVtYmVy
VHlwZSBudW1iZXIpCiAgICAgewotICAgICAgICAvLyBSZWQKLSAgICAgICAgdW5zaWduZWQgdmFs
dWUgPSAobV9yZ2JDb2xvciA+PiAxNikgJiAweEZGOwotICAgICAgICBhdXRvIHJlc3VsdCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsK
LSAgICAgICAgbV9yZWQgPSByZXN1bHQtPmNyZWF0ZURlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVdy
YXBwZXIob3duZXIpOwotICAgICAgICAKLSAgICAgICAgLy8gR3JlZW4KLSAgICAgICAgdmFsdWUg
PSAobV9yZ2JDb2xvciA+PiA4KSAmIDB4RkY7Ci0gICAgICAgIHJlc3VsdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAg
bV9ncmVlbiA9IHJlc3VsdC0+Y3JlYXRlRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlV3JhcHBlcihv
d25lcik7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG51bWJlciwg
Q1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpLT5jcmVhdGVEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVX
cmFwcGVyKG93bmVyKTsKKyAgICB9CiAKLSAgICAgICAgLy8gQmx1ZQotICAgICAgICB2YWx1ZSA9
IG1fcmdiQ29sb3IgJiAweEZGOwotICAgICAgICByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHZhbHVlLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgIG1fYmx1ZSA9
IHJlc3VsdC0+Y3JlYXRlRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlV3JhcHBlcihvd25lcik7Ci0g
ICAgICAgIAotICAgICAgICAvLyBBbHBoYQotICAgICAgICBmbG9hdCBhbHBoYVZhbHVlID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KChtX3JnYkNvbG9yID4+IDI0KSAmIDB4RkYpIC8gMHhGRjsKLSAgICAg
ICAgcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShhbHBoYVZhbHVlLCBDU1NVbml0
VHlwZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgIG1fYWxwaGEgPSByZXN1bHQtPmNyZWF0ZURlcHJl
Y2F0ZWRDU1NPTVByaW1pdGl2ZVdyYXBwZXIob3duZXIpOworICAgIERlcHJlY2F0ZWRDU1NPTVJH
QkNvbG9yKENTU1N0eWxlRGVjbGFyYXRpb24mIG93bmVyLCBjb25zdCBDb2xvciYgY29sb3IpCisg
ICAgICAgIDogbV9jb2xvcihjb2xvcikKKyAgICAgICAgLCBtX3JlZChjcmVhdGVXcmFwcGVyKG93
bmVyLCBjb2xvci5yZWQoKSkpCisgICAgICAgICwgbV9ncmVlbihjcmVhdGVXcmFwcGVyKG93bmVy
LCBjb2xvci5ncmVlbigpKSkKKyAgICAgICAgLCBtX2JsdWUoY3JlYXRlV3JhcHBlcihvd25lciwg
Y29sb3IuYmx1ZSgpKSkKKyAgICAgICAgLCBtX2FscGhhKGNyZWF0ZVdyYXBwZXIob3duZXIsIGNv
bG9yLmFscGhhQXNGbG9hdCgpKSkKKyAgICB7CiAgICAgfQotICAgIAotICAgIFJHQkEzMiBtX3Jn
YkNvbG9yOwotICAgIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZT4gbV9yZWQ7
Ci0gICAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlPiBtX2dyZWVuOwotICAg
IFJlZlB0cjxEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZT4gbV9ibHVlOwotICAgIFJlZlB0
cjxEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZT4gbV9hbHBoYTsKKworICAgIENvbG9yIG1f
Y29sb3I7CisgICAgUmVmPERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlPiBtX3JlZDsKKyAg
ICBSZWY8RGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU+IG1fZ3JlZW47CisgICAgUmVmPERl
cHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlPiBtX2JsdWU7CisgICAgUmVmPERlcHJlY2F0ZWRD
U1NPTVByaW1pdGl2ZVZhbHVlPiBtX2FscGhhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9SR0JDb2xvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEx
ZWU0MDNmMGNhZjY3MTFiMTE2MTFhYmYxMGRlMzI4NDk0NDRmZWMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9y
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJSR0JDb2xvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxSR0JDb2xv
cj4gUkdCQ29sb3I6OmNyZWF0ZSh1bnNpZ25lZCByZ2JDb2xvcikKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSR0JDb2xvcihyZ2JDb2xvcikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SR0JDb2xvci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1JHQkNvbG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAx
NGM0MWUwMzVkZWM2ZWQ5YTViYTBlNDU2Njg5MDJkN2FkYzE3YzIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9y
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5IEdvb2dsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKLQotY2xhc3MgUkdC
Q29sb3IgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxSR0JDb2xvcj4gewotcHVibGljOgotICAg
IHN0YXRpYyBSZWY8UkdCQ29sb3I+IGNyZWF0ZSh1bnNpZ25lZCByZ2JDb2xvcik7Ci0KLSAgICBD
b2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKG1fcmdiQ29sb3IpOyB9Ci0KLSAgICBS
R0JBMzIgcmdiQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JnYkNvbG9yOyB9Ci0KLXByaXZhdGU6
Ci0gICAgUkdCQ29sb3IodW5zaWduZWQgcmdiQ29sb3IpCi0gICAgICAgIDogbV9yZ2JDb2xvcihy
Z2JDb2xvcikKLSAgICB7Ci0gICAgfQotCi0gICAgUkdCQTMyIG1fcmdiQ29sb3I7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVDb2xvci5jcHAKaW5kZXggMjli
Y2ExOWI5MjQ4NDA0MWNmMjU5MGZmNmVkNmE0NGNkNDEwYjgxZC4uMWJjMjBmYjcyOTRhNmJiODAx
NjY0NWZkZWY1ZTkxZGU1Y2VjNjQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUNvbG9yLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBDb2xvciBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVl
SUQga2V5d29yZCwgT3B0aW9uU2V0PE9wdGlvbnM+IG9wdGlvbgogewogICAgIGlmIChjb25zdCBj
aGFyKiB2YWx1ZU5hbWUgPSBnZXRWYWx1ZU5hbWUoa2V5d29yZCkpIHsKICAgICAgICAgaWYgKGNv
bnN0IE5hbWVkQ29sb3IqIG5hbWVkQ29sb3IgPSBmaW5kQ29sb3IodmFsdWVOYW1lLCBzdHJsZW4o
dmFsdWVOYW1lKSkpCi0gICAgICAgICAgICByZXR1cm4gQ29sb3IobmFtZWRDb2xvci0+QVJHQlZh
bHVlKTsKKyAgICAgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IG5hbWVkQ29sb3ItPkFSR0JW
YWx1ZSB9OwogICAgIH0KIAogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lz
dGVtQ29sb3Ioa2V5d29yZCwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggYjMyYzEzM2Q1MWU1ZDlhMWRmNTlmMzJiOGMxYjMy
MGRlZjdiMWMxYS4uYzM5NTkyNGJkODVmODRhMGFlMmFmMzM3NDNlZDlmOWY3YzZhM2IxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNTgs
NyArNTgsNiBAQAogI2ltcG9ydCAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIKICNpbXBvcnQgIkhU
TUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbXBvcnQgIkxvYWRlck5TVVJMRXh0cmFzLmgiCi0jaW1w
b3J0ICJSR0JDb2xvci5oIgogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKICNpbXBvcnQgIlJlbmRl
clRleHQuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVydGllcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IGIwNDU1MjZlNjIzMTc3YmFkZjI4
ZGJkM2IyMTc4ZThhNmY1ZGE2ODAuLjIzZGIwZmIzZWFlYzI5OTRhN2ViMjk0MTBjZDY4OTdmMTk1
NDM1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgdm9pZCBkcmF3T3V0bGluZWRRdWFkV2l0aENs
aXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmCiAgICAgY29udGV4
dC5maWxsUGF0aChxdWFkVG9QYXRoKHF1YWQsIGJvdW5kcykpOwogCiAgICAgY29udGV4dC5zZXRD
b21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3I6OkRlc3RpbmF0aW9uT3V0KTsKLSAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDI1NSwgMCwgMCkp
OworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMCwgMCkpOwogICAgIGNvbnRl
eHQuZmlsbFBhdGgocXVhZFRvUGF0aChjbGlwUXVhZCwgYm91bmRzKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5t
bQppbmRleCA1NWI0MDQzYTYwYzA5Zjk1MzEwYmVhYTA4NzE1ZTZjOWE3N2IxMDMyLi41ZWI2OGFm
MmMxNDkyN2JiMDE1MGI1NjJhYjk3OWE2OTIxYmIwM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCkBAIC0xMjgs
MTMgKzEyOCwxMyBAQCBzdGF0aWMgQ0dDb2xvclJlZiBjcmVhdGVDb2xvcihmbG9hdCByLCBmbG9h
dCBnLCBmbG9hdCBiLCBmbG9hdCBhKQogc3RydWN0IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZv
IHsKICAgICBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbygpIHsgfSAvLyBOZWVkZWQgZm9yIHN0
ZDo6YXJyYXkuCiAKLSAgICBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyh1bnNpZ25lZCBjYXRl
Z29yeSwgUkdCQTMyIHJnYmEsIFN0cmluZyBuYW1lLCBib29sIHN1YmNhdGVnb3J5ID0gZmFsc2Up
CisgICAgSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8odW5zaWduZWQgY2F0ZWdvcnksIHVuc2ln
bmVkIHJnYmEsIFN0cmluZyBuYW1lLCBib29sIHN1YmNhdGVnb3J5ID0gZmFsc2UpCiAgICAgICAg
IDogbmFtZShXVEZNb3ZlKG5hbWUpKQogICAgICAgICAsIGlzU3ViY2F0ZWdvcnkoc3ViY2F0ZWdv
cnkpCiAgICAgICAgICwgdHlwZShjYXRlZ29yeSkKICAgICB7CiAgICAgICAgIGZsb2F0IHIsIGcs
IGIsIGE7Ci0gICAgICAgIENvbG9yKHJnYmEpLmdldFJHQkEociwgZywgYiwgYSk7CisgICAgICAg
IENvbG9yIHsgU2ltcGxlQ29sb3IgeyByZ2JhIH0gfS5nZXRSR0JBKHIsIGcsIGIsIGEpOwogICAg
ICAgICBjb2xvciA9IGFkb3B0Q0YoY3JlYXRlQ29sb3IociwgZywgYiwgYSkpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCmluZGV4IDE2NjA3NjRh
NDM5YjlhYTE4ZTdmNDEzZmJkNzlmMDVlODcwYTkyZTQuLmI1YTJhMjRlZGEwYWNhYjc0NTZmMGRh
MjY4NzMzZGZkZWJhN2RjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTcgKzM3LDggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0jaWYgIUNPTVBJTEVSKE1TVkMpCi1jb25zdCBSR0JBMzIgQ29sb3I6
OmJsYWNrOwotY29uc3QgUkdCQTMyIENvbG9yOjp3aGl0ZTsKLWNvbnN0IFJHQkEzMiBDb2xvcjo6
ZGFya0dyYXk7Ci1jb25zdCBSR0JBMzIgQ29sb3I6OmdyYXk7Ci1jb25zdCBSR0JBMzIgQ29sb3I6
OmxpZ2h0R3JheTsKLWNvbnN0IFJHQkEzMiBDb2xvcjo6dHJhbnNwYXJlbnQ7Ci0jZW5kaWYKLQot
c3RhdGljIGNvbnN0IFJHQkEzMiBsaWdodGVuZWRCbGFjayA9IDB4RkY1NDU0NTQ7Ci1zdGF0aWMg
Y29uc3QgUkdCQTMyIGRhcmtlbmVkV2hpdGUgPSAweEZGQUJBQkFCOworc3RhdGljIGNvbnN0ZXhw
ciBTaW1wbGVDb2xvciBsaWdodGVuZWRCbGFjayB7IDB4RkY1NDU0NTQgfTsKK3N0YXRpYyBjb25z
dGV4cHIgU2ltcGxlQ29sb3IgZGFya2VuZWRXaGl0ZSB7IDB4RkZBQkFCQUIgfTsKIAogc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBwcmVtdWx0aXBsaWVkQ2hhbm5lbCh1bnNpZ25lZCBjLCB1bnNpZ25l
ZCBhLCBib29sIGNlaWxpbmcgPSB0cnVlKQogewpAQCAtNjEsMTIgKzUyLDEyIEBAIHN0YXRpYyBp
bmxpbmUgdW5zaWduZWQgdW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCh1bnNpZ25lZCBjLCB1bnNpZ25l
ZCBhKQogCiBSR0JBMzIgbWFrZVJHQihpbnQgciwgaW50IGcsIGludCBiKQogewotICAgIHJldHVy
biAweEZGMDAwMDAwIHwgc3RkOjptYXgoMCwgc3RkOjptaW4ociwgMjU1KSkgPDwgMTYgfCBzdGQ6
Om1heCgwLCBzdGQ6Om1pbihnLCAyNTUpKSA8PCA4IHwgc3RkOjptYXgoMCwgc3RkOjptaW4oYiwg
MjU1KSk7CisgICAgcmV0dXJuIG1ha2VSR0JBKHIsIGcsIGIsIDB4RkYpOwogfQogCiBSR0JBMzIg
bWFrZVJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWF4KDAsIHN0ZDo6bWluKGEsIDI1NSkpIDw8IDI0IHwgc3RkOjptYXgoMCwgc3RkOjptaW4ociwg
MjU1KSkgPDwgMTYgfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihnLCAyNTUpKSA8PCA4IHwgc3RkOjpt
YXgoMCwgc3RkOjptaW4oYiwgMjU1KSk7CisgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGEsIDB4RkYpKSA8PCAyNCB8IHN0ZDo6bWF4KDAsIHN0
ZDo6bWluKHIsIDB4RkYpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGcsIDB4RkYpKSA8
PCA4IHwgc3RkOjptYXgoMCwgc3RkOjptaW4oYiwgMHhGRikpKSB9OwogfQogCiBSR0JBMzIgbWFr
ZVByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgZywgaW50IGIsIGludCBhLCBib29sIGNlaWxp
bmcpCkBAIC04NywxNCArNzgsMTIgQEAgc3RhdGljIGludCBjb2xvckZsb2F0VG9SR0JBQnl0ZShm
bG9hdCBmKQogCiBSR0JBMzIgbWFrZVJHQkEzMkZyb21GbG9hdHMoZmxvYXQgciwgZmxvYXQgZywg
ZmxvYXQgYiwgZmxvYXQgYSkKIHsKLSAgICByZXR1cm4gY29sb3JGbG9hdFRvUkdCQUJ5dGUoYSkg
PDwgMjQgfCBjb2xvckZsb2F0VG9SR0JBQnl0ZShyKSA8PCAxNiB8IGNvbG9yRmxvYXRUb1JHQkFC
eXRlKGcpIDw8IDggfCBjb2xvckZsb2F0VG9SR0JBQnl0ZShiKTsKKyAgICByZXR1cm4gbWFrZVJH
QkEoY29sb3JGbG9hdFRvUkdCQUJ5dGUociksIGNvbG9yRmxvYXRUb1JHQkFCeXRlKGcpLCBjb2xv
ckZsb2F0VG9SR0JBQnl0ZShiKSwgY29sb3JGbG9hdFRvUkdCQUJ5dGUoYSkpOwogfQogCiBSR0JB
MzIgY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShSR0JBMzIgY29sb3IsIGZsb2F0IG92ZXJyaWRlQWxw
aGEpCiB7Ci0gICAgUkdCQTMyIHJnYk9ubHkgPSBjb2xvciAmIDB4MDBGRkZGRkY7Ci0gICAgUkdC
QTMyIHJnYmEgPSByZ2JPbmx5IHwgY29sb3JGbG9hdFRvUkdCQUJ5dGUob3ZlcnJpZGVBbHBoYSkg
PDwgMjQ7Ci0gICAgcmV0dXJuIHJnYmE7CisgICAgcmV0dXJuIHsgKGNvbG9yLnZhbHVlKCkgJiAw
eDAwRkZGRkZGKSB8IGNvbG9yRmxvYXRUb1JHQkFCeXRlKG92ZXJyaWRlQWxwaGEpIDw8IDI0IH07
CiB9CiAKIFJHQkEzMiBtYWtlUkdCQUZyb21IU0xBKGZsb2F0IGh1ZSwgZmxvYXQgc2F0dXJhdGlv
biwgZmxvYXQgbGlnaHRuZXNzLCBmbG9hdCBhbHBoYSkKQEAgLTEzMSwyOCArMTIwLDI4IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUhleENvbG9ySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlw
ZSogbmFtZSwgdW5zaWduZWQgbGVuCiAgICAgICAgIHZhbHVlIHw9IHRvQVNDSUlIZXhWYWx1ZShu
YW1lW2ldKTsKICAgICB9CiAgICAgaWYgKGxlbmd0aCA9PSA2KSB7Ci0gICAgICAgIHJnYiA9IDB4
RkYwMDAwMDAgfCB2YWx1ZTsKKyAgICAgICAgcmdiID0geyAweEZGMDAwMDAwIHwgdmFsdWUgfTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlmIChsZW5ndGggPT0gOCkgewogICAg
ICAgICAvLyBXZSBwYXJzZWQgdGhlIHZhbHVlcyBpbnRvIFJHQkEgb3JkZXIsIGJ1dCB0aGUgUkdC
QTMyIHR5cGUKICAgICAgICAgLy8gZXhwZWN0cyB0aGVtIHRvIGJlIGluIEFSR0Igb3JkZXIsIHNv
IHdlIHJpZ2h0IHJvdGF0ZSBlaWdodCBiaXRzLgotICAgICAgICByZ2IgPSB2YWx1ZSA8PCAyNCB8
IHZhbHVlID4+IDg7CisgICAgICAgIHJnYiA9IHsgdmFsdWUgPDwgMjQgfCB2YWx1ZSA+PiA4IH07
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAobGVuZ3RoID09IDQpIHsKICAg
ICAgICAgLy8gI2FiY2QgY29udmVydHMgdG8gZGRhYWJiY2MgaW4gUkdCQTMyLgotICAgICAgICBy
Z2IgPSAodmFsdWUgJiAweEYpIDw8IDI4IHwgKHZhbHVlICYgMHhGKSA8PCAyNAorICAgICAgICBy
Z2IgPSB7ICh2YWx1ZSAmIDB4RikgPDwgMjggfCAodmFsdWUgJiAweEYpIDw8IDI0CiAgICAgICAg
ICAgICB8ICh2YWx1ZSAmIDB4RjAwMCkgPDwgOCB8ICh2YWx1ZSAmIDB4RjAwMCkgPDwgNAogICAg
ICAgICAgICAgfCAodmFsdWUgJiAweEYwMCkgPDwgNCB8ICh2YWx1ZSAmIDB4RjAwKQotICAgICAg
ICAgICAgfCAodmFsdWUgJiAweEYwKSB8ICh2YWx1ZSAmIDB4RjApID4+IDQ7CisgICAgICAgICAg
ICB8ICh2YWx1ZSAmIDB4RjApIHwgKHZhbHVlICYgMHhGMCkgPj4gNCB9OwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgLy8gI2FiYyBjb252ZXJ0cyB0byAjYWFiYmNjCi0gICAgcmdi
ID0gMHhGRjAwMDAwMAorICAgIHJnYiA9IHsgMHhGRjAwMDAwMAogICAgICAgICB8ICh2YWx1ZSAm
IDB4RjAwKSA8PCAxMiB8ICh2YWx1ZSAmIDB4RjAwKSA8PCA4CiAgICAgICAgIHwgKHZhbHVlICYg
MHhGMCkgPDwgOCB8ICh2YWx1ZSAmIDB4RjApIDw8IDQKLSAgICAgICAgfCAodmFsdWUgJiAweEYp
IDw8IDQgfCAodmFsdWUgJiAweEYpOworICAgICAgICB8ICh2YWx1ZSAmIDB4RikgPDwgNCB8ICh2
YWx1ZSAmIDB4RikgfTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTY5LDcgKzE1OCw2IEBA
IGJvb2wgQ29sb3I6OnBhcnNlSGV4Q29sb3IoY29uc3QgVUNoYXIqIG5hbWUsIHVuc2lnbmVkIGxl
bmd0aCwgUkdCQTMyJiByZ2IpCiBib29sIENvbG9yOjpwYXJzZUhleENvbG9yKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUkdCQTMyJiByZ2IpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbmFtZS5sZW5n
dGgoKTsKLSAgICAKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmIChuYW1lLmlzOEJpdCgpKQpAQCAtMjM2LDI2ICsyMjQsMTggQEAgQ29sb3I6OkNvbG9yKGNv
bnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgIHNldFJHQihjb2xvcik7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgaWYgKGF1dG8qIGZvdW5kQ29sb3IgPSBmaW5kTmFtZWRDb2xvcihuYW1lKSkK
LSAgICAgICAgICAgIHNldFJHQihmb3VuZENvbG9yLT5BUkdCVmFsdWUpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX2NvbG9yRGF0YS5yZ2JhQW5kRmxhZ3MgPSBpbnZhbGlkUkdCQUNvbG9y
OworICAgICAgICAgICAgc2V0UkdCKHsgZm91bmRDb2xvci0+QVJHQlZhbHVlIH0pOwogICAgIH0K
IH0KIAogQ29sb3I6OkNvbG9yKGNvbnN0IGNoYXIqIG5hbWUpCiB7Ci0gICAgUkdCQTMyIGNvbG9y
OwotICAgIGJvb2wgdmFsaWQ7Ci0gICAgaWYgKG5hbWVbMF0gPT0gJyMnKQotICAgICAgICB2YWxp
ZCA9IHBhcnNlSGV4Q29sb3IoKFN0cmluZykmbmFtZVsxXSwgY29sb3IpOwotICAgIGVsc2Ugewot
ICAgICAgICBjb25zdCBOYW1lZENvbG9yKiBmb3VuZENvbG9yID0gZmluZENvbG9yKG5hbWUsIHN0
cmxlbihuYW1lKSk7Ci0gICAgICAgIGNvbG9yID0gZm91bmRDb2xvciA/IGZvdW5kQ29sb3ItPkFS
R0JWYWx1ZSA6IDA7Ci0gICAgICAgIHZhbGlkID0gZm91bmRDb2xvcjsKLSAgICB9Ci0KLSAgICBp
ZiAodmFsaWQpCi0gICAgICAgIHNldFJHQihjb2xvcik7CisgICAgaWYgKG5hbWVbMF0gPT0gJyMn
KSB7CisgICAgICAgIFNpbXBsZUNvbG9yIGNvbG9yOworICAgICAgICBpZiAocGFyc2VIZXhDb2xv
cihyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oJm5hbWVbMV0pLCBzdGQ6OnN0cmxlbigm
bmFtZVsxXSksIGNvbG9yKSkKKyAgICAgICAgICAgIHNldFJHQihjb2xvcik7CisgICAgfSBlbHNl
IGlmIChhdXRvKiBmb3VuZENvbG9yID0gZmluZENvbG9yKG5hbWUsIHN0cmxlbihuYW1lKSkpCisg
ICAgICAgIHNldFJHQih7IGZvdW5kQ29sb3ItPkFSR0JWYWx1ZSB9KTsKIH0KIAogQ29sb3I6OkNv
bG9yKGNvbnN0IENvbG9yJiBvdGhlcikKQEAgLTMwOSwxNSArMjg5LDE4IEBAIENvbG9yJiBDb2xv
cjo6b3BlcmF0b3I9KENvbG9yJiYgb3RoZXIpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCitTdHJp
bmcgU2ltcGxlQ29sb3I6OnNlcmlhbGl6YXRpb25Gb3JIVE1MKCkgY29uc3QKK3sKKyAgICBpZiAo
aXNPcGFxdWUoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJyMnLCBoZXgocmVkQ29tcG9u
ZW50KCksIDIsIExvd2VyY2FzZSksIGhleChncmVlbkNvbXBvbmVudCgpLCAyLCBMb3dlcmNhc2Up
LCBoZXgoYmx1ZUNvbXBvbmVudCgpLCAyLCBMb3dlcmNhc2UpKTsKKyAgICByZXR1cm4gc2VyaWFs
aXphdGlvbkZvckNTUygpOworfQorCiBTdHJpbmcgQ29sb3I6OnNlcmlhbGl6ZWQoKSBjb25zdAog
ewogICAgIGlmIChpc0V4dGVuZGVkKCkpCiAgICAgICAgIHJldHVybiBhc0V4dGVuZGVkKCkuY3Nz
VGV4dCgpOwotCi0gICAgaWYgKGlzT3BhcXVlKCkpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KCcjJywgaGV4KHJlZCgpLCAyLCBMb3dlcmNhc2UpLCBoZXgoZ3JlZW4oKSwgMiwgTG93ZXJjYXNl
KSwgaGV4KGJsdWUoKSwgMiwgTG93ZXJjYXNlKSk7Ci0KLSAgICByZXR1cm4gY3NzVGV4dCgpOwor
ICAgIHJldHVybiByZ2IoKS5zZXJpYWxpemF0aW9uRm9ySFRNTCgpOwogfQogCiBzdGF0aWMgY2hh
ciBkZWNpbWFsRGlnaXQodW5zaWduZWQgbnVtYmVyKQpAQCAtMzI2LDcgKzMwOSw3IEBAIHN0YXRp
YyBjaGFyIGRlY2ltYWxEaWdpdCh1bnNpZ25lZCBudW1iZXIpCiAgICAgcmV0dXJuICcwJyArIG51
bWJlcjsKIH0KIAotc3RhdGljIHN0ZDo6YXJyYXk8Y2hhciwgND4gc2VyaWFsaXplZEZyYWN0aW9u
RGlnaXRzRm9yRnJhY3Rpb25hbEFscGhhVmFsdWUodWludDhfdCBhbHBoYSkKK3N0YXRpYyBzdGQ6
OmFycmF5PGNoYXIsIDQ+IGZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhhVmFsdWUodWlu
dDhfdCBhbHBoYSkKIHsKICAgICBBU1NFUlQoYWxwaGEgPiAwKTsKICAgICBBU1NFUlQoYWxwaGEg
PCAweEZGKTsKQEAgLTMzNywyNyArMzIwLDM2IEBAIHN0YXRpYyBzdGQ6OmFycmF5PGNoYXIsIDQ+
IHNlcmlhbGl6ZWRGcmFjdGlvbkRpZ2l0c0ZvckZyYWN0aW9uYWxBbHBoYVZhbHVlKHVpbnQ4CiAg
ICAgcmV0dXJuIHsgeyBkZWNpbWFsRGlnaXQoKGFscGhhICogMTAgKyAweDdGKSAvIDB4RkYpLCAn
XDAnLCAnXDAnLCAnXDAnIH0gfTsKIH0KIAotU3RyaW5nIENvbG9yOjpjc3NUZXh0KCkgY29uc3QK
K1N0cmluZyBTaW1wbGVDb2xvcjo6c2VyaWFsaXphdGlvbkZvckNTUygpIGNvbnN0CiB7Ci0gICAg
aWYgKGlzRXh0ZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuIGFzRXh0ZW5kZWQoKS5jc3NUZXh0KCk7
Ci0gICAgdWludDhfdCBhbHBoYSA9IHRoaXMtPmFscGhhKCk7Ci0gICAgc3dpdGNoIChhbHBoYSkg
eworICAgIHN3aXRjaCAoYWxwaGFDb21wb25lbnQoKSkgewogICAgIGNhc2UgMDoKLSAgICAgICAg
cmV0dXJuIG1ha2VTdHJpbmcoInJnYmEoIiwgcmVkKCksICIsICIsIGdyZWVuKCksICIsICIsIGJs
dWUoKSwgIiwgMCkiKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJnYmEoIiwgcmVkQ29t
cG9uZW50KCksICIsICIsIGdyZWVuQ29tcG9uZW50KCksICIsICIsIGJsdWVDb21wb25lbnQoKSwg
IiwgMCkiKTsKICAgICBjYXNlIDB4RkY6Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJyZ2Io
IiwgcmVkKCksICIsICIsIGdyZWVuKCksICIsICIsIGJsdWUoKSwgJyknKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcoInJnYigiLCByZWRDb21wb25lbnQoKSwgIiwgIiwgZ3JlZW5Db21wb25l
bnQoKSwgIiwgIiwgYmx1ZUNvbXBvbmVudCgpLCAnKScpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAg
IHJldHVybiBtYWtlU3RyaW5nKCJyZ2JhKCIsIHJlZCgpLCAiLCAiLCBncmVlbigpLCAiLCAiLCBi
bHVlKCksICIsIDAuIiwgc2VyaWFsaXplZEZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhh
VmFsdWUoYWxwaGEpLmRhdGEoKSwgJyknKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJn
YmEoIiwgcmVkQ29tcG9uZW50KCksICIsICIsIGdyZWVuQ29tcG9uZW50KCksICIsICIsIGJsdWVD
b21wb25lbnQoKSwgIiwgMC4iLCBmcmFjdGlvbkRpZ2l0c0ZvckZyYWN0aW9uYWxBbHBoYVZhbHVl
KGFscGhhQ29tcG9uZW50KCkpLmRhdGEoKSwgJyknKTsKICAgICB9CiB9CiAKK1N0cmluZyBDb2xv
cjo6Y3NzVGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKGlzRXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0
dXJuIGFzRXh0ZW5kZWQoKS5jc3NUZXh0KCk7CisgICAgcmV0dXJuIHJnYigpLnNlcmlhbGl6YXRp
b25Gb3JDU1MoKTsKK30KKworU3RyaW5nIFJHQkEzMjo6c2VyaWFsaXphdGlvbkZvclJlbmRlclRy
ZWVBc1RleHQoKSBjb25zdAoreworICAgIGlmIChhbHBoYUNvbXBvbmVudCgpIDwgMHhGRikKKyAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJyMnLCBoZXgocmVkQ29tcG9uZW50KCksIDIpLCBoZXgo
Z3JlZW5Db21wb25lbnQoKSwgMiksIGhleChibHVlQ29tcG9uZW50KCksIDIpLCBoZXgoYWxwaGFD
b21wb25lbnQoKSwgMikpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCcjJywgaGV4KHJlZENvbXBv
bmVudCgpLCAyKSwgaGV4KGdyZWVuQ29tcG9uZW50KCksIDIpLCBoZXgoYmx1ZUNvbXBvbmVudCgp
LCAyKSk7Cit9CisKIFN0cmluZyBDb2xvcjo6bmFtZUZvclJlbmRlclRyZWVBc1RleHQoKSBjb25z
dAogewotICAgIC8vIEZJWE1FOiBIYW5kbGUgRXh0ZW5kZWRDb2xvcnMuCi0gICAgaWYgKGFscGhh
KCkgPCAweEZGKQotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygnIycsIGhleChyZWQoKSwgMiks
IGhleChncmVlbigpLCAyKSwgaGV4KGJsdWUoKSwgMiksIGhleChhbHBoYSgpLCAyKSk7Ci0gICAg
cmV0dXJuIG1ha2VTdHJpbmcoJyMnLCBoZXgocmVkKCksIDIpLCBoZXgoZ3JlZW4oKSwgMiksIGhl
eChibHVlKCksIDIpKTsKKyAgICAvLyBGSVhNRTogSGFuZGxlIGV4dGVuZGVkIGNvbG9ycy4KKyAg
ICByZXR1cm4gcmdiKCkuc2VyaWFsaXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoKTsKIH0KIAog
Q29sb3IgQ29sb3I6OmxpZ2h0KCkgY29uc3QKQEAgLTU3NSwxMCArNTY3LDkgQEAgdm9pZCBDb2xv
cjo6Z2V0SFNWKGRvdWJsZSYgaHVlLCBkb3VibGUmIHNhdHVyYXRpb24sIGRvdWJsZSYgdmFsdWUp
IGNvbnN0CiAKIENvbG9yIGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKFJHQkEzMiBwaXhlbENv
bG9yKQogewotICAgIGludCBhbHBoYSA9IGFscGhhQ2hhbm5lbChwaXhlbENvbG9yKTsKLSAgICBp
ZiAoYWxwaGEgJiYgYWxwaGEgPCAyNTUpCi0gICAgICAgIHBpeGVsQ29sb3IgPSBtYWtlVW5QcmVt
dWx0aXBsaWVkUkdCQShyZWRDaGFubmVsKHBpeGVsQ29sb3IpLCBncmVlbkNoYW5uZWwocGl4ZWxD
b2xvciksIGJsdWVDaGFubmVsKHBpeGVsQ29sb3IpLCBhbHBoYSk7Ci0gICAgcmV0dXJuIENvbG9y
KHBpeGVsQ29sb3IpOworICAgIGlmIChwaXhlbENvbG9yLmlzVmlzaWJsZSgpICYmICFwaXhlbENv
bG9yLmlzT3BhcXVlKCkpCisgICAgICAgIHJldHVybiBtYWtlVW5QcmVtdWx0aXBsaWVkUkdCQShw
aXhlbENvbG9yLnJlZENvbXBvbmVudCgpLCBwaXhlbENvbG9yLmdyZWVuQ29tcG9uZW50KCksIHBp
eGVsQ29sb3IuYmx1ZUNvbXBvbmVudCgpLCBwaXhlbENvbG9yLmFscGhhQ29tcG9uZW50KCkpOwor
ICAgIHJldHVybiBwaXhlbENvbG9yOwogfQogCiBSR0JBMzIgcHJlbXVsdGlwbGllZEFSR0JGcm9t
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNjAzLDEwICs1OTQsOSBAQCBDb2xvciBibGVu
ZChjb25zdCBDb2xvciYgZnJvbSwgY29uc3QgQ29sb3ImIHRvLCBkb3VibGUgcHJvZ3Jlc3MsIGJv
b2wgYmxlbmRQcmVtdQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAogICAgIGlmIChibGVuZFBy
ZW11bHRpcGxpZWQpIHsKLSAgICAgICAgLy8gQ29udHJhcnkgdG8gdGhlIG5hbWUsIFJHQkEzMiBh
Y3R1YWxseSBzdG9yZXMgQVJHQiwgc28gd2UgY2FuIGluaXRpYWxpemUgQ29sb3IgZGlyZWN0bHkg
ZnJvbSBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcigpLgotICAgICAgICAvLyBBbHNvLCBwcmVt
dWx0aXBsaWVkQVJHQkZyb21Db2xvcigpIGJhaWxzIG9uIHplcm8gYWxwaGEsIHNvIHNwZWNpYWwt
Y2FzZSB0aGF0LgotICAgICAgICBDb2xvciBwcmVtdWx0RnJvbSA9IGZyb20uYWxwaGEoKSA/IHBy
ZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKGZyb20pIDogMDsKLSAgICAgICAgQ29sb3IgcHJlbXVs
dFRvID0gdG8uYWxwaGEoKSA/IHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKHRvKSA6IDA7Cisg
ICAgICAgIC8vIFNpbmNlIHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKCkgYmFpbHMgb24gemVy
byBhbHBoYSwgc3BlY2lhbC1jYXNlIHRoYXQuCisgICAgICAgIENvbG9yIHByZW11bHRGcm9tID0g
ZnJvbS5hbHBoYSgpID8gcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IoZnJvbSkgOiBDb2xvcjo6
dHJhbnNwYXJlbnQ7CisgICAgICAgIENvbG9yIHByZW11bHRUbyA9IHRvLmFscGhhKCkgPyBwcmVt
dWx0aXBsaWVkQVJHQkZyb21Db2xvcih0bykgOiBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAKICAgICAg
ICAgQ29sb3IgcHJlbXVsdEJsZW5kZWQoYmxlbmQocHJlbXVsdEZyb20ucmVkKCksIHByZW11bHRU
by5yZWQoKSwgcHJvZ3Jlc3MpLAogICAgICAgICAgICAgYmxlbmQocHJlbXVsdEZyb20uZ3JlZW4o
KSwgcHJlbXVsdFRvLmdyZWVuKCksIHByb2dyZXNzKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5oCmluZGV4IDhlMzVlMDk5ZTRhZjMyZDY5NzdlZWJkMmM3MDVjYTc2NmE0
M2VmNDQuLjAxNGQxNGVjMDc3NTNlMGQ4NDM2OGJjMTY1ZDkyODMzZjUxZjg3ZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyLDEzICs1MiwzNyBAQCB0
eXBlZGVmIEQyRF9WRUNUT1JfNEYgRDJEMV9WRUNUT1JfNEY7CiB0eXBlZGVmIHN0cnVjdCBfR2Rr
UkdCQSBHZGtSR0JBOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBXVEYgewotY2xhc3MgVGV4dFN0cmVh
bTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIHVuc2lnbmVkIFJHQkEzMjsg
Ly8gRGVwcmVjYXRlZDogVHlwZSBmb3IgYW4gUkdCQSBxdWFkcnVwbGV0LiBVc2UgUkdCQSBjbGFz
cyBpbnN0ZWFkLgorLy8gQ29sb3IgdmFsdWUgd2l0aCA4LWJpdCBjb21wb25lbnRzIGZvciByZWQs
IGdyZWVuLCBibHVlLCBhbmQgYWxwaGEuCisvLyBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCBzdG9y
ZWQgYXMgYSAzMi1iaXQgaW50ZWdlciwgd2l0aCBhbHBoYSBpbiB0aGUgaGlnaCBiaXRzOiBBUkdC
LgorY2xhc3MgU2ltcGxlQ29sb3IgeworcHVibGljOgorICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xv
cih1aW50MzJfdCB2YWx1ZSA9IDApIDogbV92YWx1ZSB7IHZhbHVlIH0geyB9CisKKyAgICBjb25z
dGV4cHIgdWludDMyX3QgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICBj
b25zdGV4cHIgdWludDhfdCByZWRDb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID4+
IDE2OyB9CisgICAgY29uc3RleHByIHVpbnQ4X3QgZ3JlZW5Db21wb25lbnQoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlID4+IDg7IH0KKyAgICBjb25zdGV4cHIgdWludDhfdCBibHVlQ29tcG9uZW50
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIGNvbnN0ZXhwciB1aW50OF90IGFscGhh
Q29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA+PiAyNDsgfQorCisgICAgY29uc3Rl
eHByIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBhbHBoYUNvbXBvbmVudCgpID09IDB4
RkY7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBhbHBo
YUNvbXBvbmVudCgpOyB9CisKKyAgICBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckhUTUwoKSBjb25z
dDsKKyAgICBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUygpIGNvbnN0OworICAgIFN0cmluZyBz
ZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dCgpIGNvbnN0OworCitwcml2YXRlOgorICAg
IHVpbnQzMl90IG1fdmFsdWUgeyAwIH07Cit9OworCitib29sIG9wZXJhdG9yPT0oU2ltcGxlQ29s
b3IsIFNpbXBsZUNvbG9yKTsKK2Jvb2wgb3BlcmF0b3IhPShTaW1wbGVDb2xvciwgU2ltcGxlQ29s
b3IpOworCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYWZ0ZXIgbWlncmF0aW5nIHRvIHRoZSBuZXcg
bmFtZS4KK3VzaW5nIFJHQkEzMiA9IFNpbXBsZUNvbG9yOwogCiBXRUJDT1JFX0VYUE9SVCBSR0JB
MzIgbWFrZVJHQihpbnQgciwgaW50IGcsIGludCBiKTsKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBt
YWtlUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7CkBAIC03MywzNiArOTcsOSBAQCBX
RUJDT1JFX0VYUE9SVCBSR0JBMzIgbWFrZVJHQkEzMkZyb21GbG9hdHMoZmxvYXQgciwgZmxvYXQg
ZywgZmxvYXQgYiwgZmxvYXQgYSk7CiBSR0JBMzIgbWFrZVJHQkFGcm9tSFNMQShmbG9hdCBoLCBm
bG9hdCBzLCBmbG9hdCBsLCBmbG9hdCBhKTsKIFJHQkEzMiBtYWtlUkdCQUZyb21DTVlLQShmbG9h
dCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKTsKIAotaW5saW5lIGludCBy
ZWRDaGFubmVsKFJHQkEzMiBjb2xvcikgeyByZXR1cm4gKGNvbG9yID4+IDE2KSAmIDB4RkY7IH0K
LWlubGluZSBpbnQgZ3JlZW5DaGFubmVsKFJHQkEzMiBjb2xvcikgeyByZXR1cm4gKGNvbG9yID4+
IDgpICYgMHhGRjsgfQotaW5saW5lIGludCBibHVlQ2hhbm5lbChSR0JBMzIgY29sb3IpIHsgcmV0
dXJuIGNvbG9yICYgMHhGRjsgfQotaW5saW5lIGludCBhbHBoYUNoYW5uZWwoUkdCQTMyIGNvbG9y
KSB7IHJldHVybiAoY29sb3IgPj4gMjQpICYgMHhGRjsgfQotCiB1aW50OF90IHJvdW5kQW5kQ2xh
bXBDb2xvckNoYW5uZWwoaW50KTsKIHVpbnQ4X3Qgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChm
bG9hdCk7CiAKLWNsYXNzIFJHQkEgewotcHVibGljOgotICAgIFJHQkEoKTsgLy8gYWxsIGNoYW5u
ZWxzIHplcm8sIGluY2x1ZGluZyBhbHBoYQotICAgIFJHQkEodWludDhfdCByZWQsIHVpbnQ4X3Qg
Z3JlZW4sIHVpbnQ4X3QgYmx1ZSwgdWludDhfdCBhbHBoYSk7Ci0gICAgUkdCQSh1aW50OF90IHJl
ZCwgdWludDhfdCBncmVlbiwgdWludDhfdCBibHVlKTsgLy8gb3BhcXVlLCBhbHBoYSBvZiAxCi0K
LSAgICB1aW50OF90IHJlZCgpIGNvbnN0OwotICAgIHVpbnQ4X3QgZ3JlZW4oKSBjb25zdDsKLSAg
ICB1aW50OF90IGJsdWUoKSBjb25zdDsKLSAgICB1aW50OF90IGFscGhhKCkgY29uc3Q7Ci0KLSAg
ICBib29sIGhhc0FscGhhKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIENv
bG9yOwotCi0gICAgdW5zaWduZWQgbV9pbnRlZ2VyIHsgMCB9OwotfTsKLQotYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFJHQkEmLCBjb25zdCBSR0JBJik7Ci1ib29sIG9wZXJhdG9yIT0oY29uc3QgUkdC
QSYsIGNvbnN0IFJHQkEmKTsKLQogY2xhc3MgQ29sb3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgpAQCAtMTE3LDcgKzExNCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBlbnVtIFNlbWFudGljVGFnIHsgU2VtYW50aWMgfTsKLQogICAgIENvbG9yKFJHQkEzMiBjb2xv
ciwgU2VtYW50aWNUYWcpCiAgICAgewogICAgICAgICBzZXRSR0IoY29sb3IpOwpAQCAtMTc1LDcg
KzE3MSw2IEBAIHB1YmxpYzoKICAgICAvLyBjb252ZXJ0ZWQgZXhhY3RseSB0byBpbnRlZ2Vycywg
d2Ugc2hvdWxkIG1ha2UgYSBub3JtYWwgQ29sb3IuCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3Io
ZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
KTsKIAotICAgIENvbG9yKFJHQkEsIENvbG9yU3BhY2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIENv
bG9yKGNvbnN0IENvbG9yJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IoQ29sb3ImJik7CiAK
QEAgLTE4NSwxNyArMTgwLDYgQEAgcHVibGljOgogICAgICAgICAgICAgbV9jb2xvckRhdGEuZXh0
ZW5kZWRDb2xvci0+ZGVyZWYoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgQ29sb3IgY3JlYXRlVW5j
aGVja2VkKGludCByLCBpbnQgZywgaW50IGIpCi0gICAgewotICAgICAgICBSR0JBMzIgY29sb3Ig
PSAweEZGMDAwMDAwIHwgciA8PCAxNiB8IGcgPDwgOCB8IGI7Ci0gICAgICAgIHJldHVybiBDb2xv
cihjb2xvcik7Ci0gICAgfQotICAgIHN0YXRpYyBDb2xvciBjcmVhdGVVbmNoZWNrZWQoaW50IHIs
IGludCBnLCBpbnQgYiwgaW50IGEpCi0gICAgewotICAgICAgICBSR0JBMzIgY29sb3IgPSBhIDw8
IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGI7Ci0gICAgICAgIHJldHVybiBDb2xvcihjb2xvcik7
Ci0gICAgfQotCiAgICAgLy8gUmV0dXJucyB0aGUgY29sb3Igc2VyaWFsaXplZCBhY2NvcmRpbmcg
dG8gSFRNTDUKICAgICAvLyA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
c2NyaXB0aW5nLmh0bWwjZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcz4gKDEwIFNlcHRlbWJlciAyMDE1
KQogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemVkKCkgY29uc3Q7CkBAIC0yMDcs
MTUgKzE5MSwxNSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biBpc0V4dGVuZGVkKCkgfHwgKG1fY29sb3JEYXRhLnJnYmFBbmRGbGFncyAmIHZhbGlkUkdCQUNv
bG9yQml0KTsgfQogCi0gICAgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWQo
KSAmJiAoaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgpLmFscGhhKCkgPT0gMS4wIDogYWxwaGEo
KSA9PSAyNTUpOyB9Ci0gICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBpc1ZhbGlk
KCkgJiYgKGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpID4gMC4wIDogYWxwaGEo
KSA+IDApOyB9CisgICAgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQo
KSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpID09IDEuMCA6IHJnYigpLmlzT3BhcXVlKCk7IH0KKyAg
ICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5k
ZWQoKS5hbHBoYSgpID4gMC4wIDogcmdiKCkuaXNWaXNpYmxlKCk7IH0KIAotICAgIGludCByZWQo
KSBjb25zdCB7IHJldHVybiByZWRDaGFubmVsKHJnYigpKTsgfQotICAgIGludCBncmVlbigpIGNv
bnN0IHsgcmV0dXJuIGdyZWVuQ2hhbm5lbChyZ2IoKSk7IH0KLSAgICBpbnQgYmx1ZSgpIGNvbnN0
IHsgcmV0dXJuIGJsdWVDaGFubmVsKHJnYigpKTsgfQotICAgIGludCBhbHBoYSgpIGNvbnN0IHsg
cmV0dXJuIGFscGhhQ2hhbm5lbChyZ2IoKSk7IH0KKyAgICBpbnQgcmVkKCkgY29uc3QgeyByZXR1
cm4gcmdiKCkucmVkQ29tcG9uZW50KCk7IH0KKyAgICBpbnQgZ3JlZW4oKSBjb25zdCB7IHJldHVy
biByZ2IoKS5ncmVlbkNvbXBvbmVudCgpOyB9CisgICAgaW50IGJsdWUoKSBjb25zdCB7IHJldHVy
biByZ2IoKS5ibHVlQ29tcG9uZW50KCk7IH0KKyAgICBpbnQgYWxwaGEoKSBjb25zdCB7IHJldHVy
biByZ2IoKS5hbHBoYUNvbXBvbmVudCgpOyB9CiAKLSAgICBmbG9hdCBhbHBoYUFzRmxvYXQoKSBj
b25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgPyBhc0V4dGVuZGVkKCkuYWxwaGEoKSA6IHN0YXRp
Y19jYXN0PGZsb2F0PihhbHBoYUNoYW5uZWwocmdiKCkpKSAvIDI1NTsgfQorICAgIGZsb2F0IGFs
cGhhQXNGbG9hdCgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5h
bHBoYSgpIDogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJnYigpLmFscGhhQ29tcG9uZW50KCkpIC8gMHhG
RjsgfQogCiAgICAgUkdCQTMyIHJnYigpIGNvbnN0OwogCkBAIC0yNjksMTkgKzI1MywxOSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGFyc2VIZXhDb2xvcihjb25zdCBMQ2hhciosIHVuc2ln
bmVkLCBSR0JBMzImKTsKICAgICBzdGF0aWMgYm9vbCBwYXJzZUhleENvbG9yKGNvbnN0IFVDaGFy
KiwgdW5zaWduZWQsIFJHQkEzMiYpOwogCi0gICAgc3RhdGljIGNvbnN0IFJHQkEzMiBibGFjayA9
IDB4RkYwMDAwMDA7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFJHQkEzMiB3aGl0
ZSA9IDB4RkZGRkZGRkY7Ci0gICAgc3RhdGljIGNvbnN0IFJHQkEzMiBkYXJrR3JheSA9IDB4RkY4
MDgwODA7Ci0gICAgc3RhdGljIGNvbnN0IFJHQkEzMiBncmF5ID0gMHhGRkEwQTBBMDsKLSAgICBz
dGF0aWMgY29uc3QgUkdCQTMyIGxpZ2h0R3JheSA9IDB4RkZDMEMwQzA7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGNvbnN0IFJHQkEzMiB0cmFuc3BhcmVudCA9IDB4MDAwMDAwMDA7Ci0gICAg
c3RhdGljIGNvbnN0IFJHQkEzMiBjeWFuID0gMHhGRjAwRkZGRjsKLSAgICBzdGF0aWMgY29uc3Qg
UkdCQTMyIHllbGxvdyA9IDB4RkZGRkZGMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVD
b2xvciBibGFjayB7IDB4RkYwMDAwMDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNv
bG9yIHdoaXRlIHsgMHhGRkZGRkZGRiB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29s
b3IgZGFya0dyYXkgeyAweEZGODA4MDgwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVD
b2xvciBncmF5IHsgMHhGRkEwQTBBMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29s
b3IgbGlnaHRHcmF5IHsgMHhGRkMwQzBDMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxl
Q29sb3IgdHJhbnNwYXJlbnQgeyAweDAwMDAwMDAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBT
aW1wbGVDb2xvciBjeWFuIHsgMHhGRjAwRkZGRiB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2lt
cGxlQ29sb3IgeWVsbG93IHsgMHhGRkZGRkYwMCB9OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGNvbXBvc2l0aW9uRmlsbCA9IDB4M0NBRkMwRTM7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBjb21wb3NpdGlvbkZpbGwgeyAweDND
QUZDMEUzIH07CiAjZWxzZQotICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgY29tcG9zaXRpb25GaWxs
ID0gMHhGRkUxREQ1NTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGNvbXBvc2l0
aW9uRmlsbCB7IDB4RkZFMURENTUgfTsKICNlbmRpZgogCiAgICAgYm9vbCBpc0V4dGVuZGVkKCkg
Y29uc3QKQEAgLTM0Myw0OSArMzI3LDE3IEBAIHVpbnQxNl90IGZhc3REaXZpZGVCeTI1NSh1aW50
MTZfdCk7CiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29s
b3ImKTsKICNlbmRpZgogCi1pbmxpbmUgUkdCQTo6UkdCQSgpCi17Ci19Ci0KLWlubGluZSBSR0JB
OjpSR0JBKHVpbnQ4X3QgcmVkLCB1aW50OF90IGdyZWVuLCB1aW50OF90IGJsdWUsIHVpbnQ4X3Qg
YWxwaGEpCi0gICAgOiBtX2ludGVnZXIoYWxwaGEgPDwgMjQgfCByZWQgPDwgMTYgfCBncmVlbiA8
PCA4IHwgYmx1ZSkKLXsKLX0KLQotaW5saW5lIFJHQkE6OlJHQkEodWludDhfdCByZWQsIHVpbnQ4
X3QgZ3JlZW4sIHVpbnQ4X3QgYmx1ZSkKLSAgICA6IG1faW50ZWdlcigweEZGMDAwMDAwIHwgcmVk
IDw8IDE2IHwgZ3JlZW4gPDwgOCB8IGJsdWUpCi17Ci19Ci0KLWlubGluZSB1aW50OF90IFJHQkE6
OnJlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW50ZWdlciA+PiAxNjsKLX0KLQotaW5saW5l
IHVpbnQ4X3QgUkdCQTo6Z3JlZW4oKSBjb25zdAotewotICAgIHJldHVybiBtX2ludGVnZXIgPj4g
ODsKLX0KLQotaW5saW5lIHVpbnQ4X3QgUkdCQTo6Ymx1ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1faW50ZWdlcjsKLX0KLQotaW5saW5lIHVpbnQ4X3QgUkdCQTo6YWxwaGEoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2ludGVnZXIgPj4gMjQ7Ci19CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3ImKTsKK1dFQkNP
UkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBD
b2xvclNwYWNlKTsKIAotaW5saW5lIGJvb2wgUkdCQTo6aGFzQWxwaGEoKSBjb25zdAoraW5saW5l
IGJvb2wgb3BlcmF0b3I9PShTaW1wbGVDb2xvciBhLCBTaW1wbGVDb2xvciBiKQogewotICAgIHJl
dHVybiAobV9pbnRlZ2VyICYgMHhGRjAwMDAwMCkgIT0gMHhGRjAwMDAwMDsKKyAgICByZXR1cm4g
YS52YWx1ZSgpID09IGIudmFsdWUoKTsKIH0KIAotaW5saW5lIENvbG9yOjpDb2xvcihSR0JBIGNv
bG9yLCBDb2xvclNwYWNlIHNwYWNlKQoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShTaW1wbGVDb2xv
ciBhLCBTaW1wbGVDb2xvciBiKQogewotICAgIHNldFJHQihjb2xvci5tX2ludGVnZXIpOwotICAg
IEFTU0VSVF9VTlVTRUQoc3BhY2UsIHNwYWNlID09IENvbG9yU3BhY2U6OlNSR0IpOworICAgIHJl
dHVybiAhKGEgPT0gYik7CiB9CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3Im
IGEsIGNvbnN0IENvbG9yJiBiKQpAQCAtNDM3LDEyICszODksMTIgQEAgaW5saW5lIFJHQkEzMiBD
b2xvcjo6cmdiKCkgY29uc3QKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIEFTU0VSVCghaXNFeHRl
bmRlZCgpKSBoZXJlLCBvciBwcm9kdWNlCiAgICAgLy8gYW4gUkdCQTMyIGVxdWl2YWxlbnQgZm9y
IGFuIEV4dGVuZGVkQ29sb3IuIElkZWFsbHkgdGhlIGZvcm1lciwKICAgICAvLyBzbyB3ZSBjYW4g
YXVkaXQgYWxsIHRoZSByZ2IoKSBjYWxsIHNpdGVzIHRvIGhhbmRsZSBleHRlbmRlZC4KLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UkdCQTMyPihtX2NvbG9yRGF0YS5yZ2JhQW5kRmxhZ3MgPj4gMzIp
OworICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2NvbG9yRGF0YS5yZ2JhQW5k
RmxhZ3MgPj4gMzIpIH07CiB9CiAKIGlubGluZSB2b2lkIENvbG9yOjpzZXRSR0IoUkdCQTMyIHJn
YikKIHsKLSAgICBtX2NvbG9yRGF0YS5yZ2JhQW5kRmxhZ3MgPSBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ocmdiKSA8PCAzMjsKKyAgICBtX2NvbG9yRGF0YS5yZ2JhQW5kRmxhZ3MgPSBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocmdiLnZhbHVlKCkpIDw8IDMyOwogICAgIHRhZ0FzVmFsaWQoKTsKIH0KIApA
QCAtNDUzLDcgKzQwNSw3IEBAIGlubGluZSBib29sIENvbG9yOjppc0JsYWNrQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKQogICAgICAgICByZXR1cm4gIWV4dGVuZGVkQ29sb3IucmVkKCkgJiYgIWV4
dGVuZGVkQ29sb3IuZ3JlZW4oKSAmJiAhZXh0ZW5kZWRDb2xvci5ibHVlKCkgJiYgZXh0ZW5kZWRD
b2xvci5hbHBoYSgpID09IDE7CiAgICAgfQogCi0gICAgcmV0dXJuIGNvbG9yLmlzVmFsaWQoKSAm
JiBjb2xvci5yZ2IoKSA9PSBDb2xvcjo6YmxhY2s7CisgICAgcmV0dXJuIGNvbG9yLnJnYigpID09
IENvbG9yOjpibGFjazsKIH0KIAogaW5saW5lIGJvb2wgQ29sb3I6OmlzV2hpdGVDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCkBAIC00NjMsMTIgKzQxNSw5IEBAIGlubGluZSBib29sIENvbG9yOjpp
c1doaXRlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgICAgICByZXR1cm4gZXh0ZW5kZWRD
b2xvci5yZWQoKSA9PSAxICYmIGV4dGVuZGVkQ29sb3IuZ3JlZW4oKSA9PSAxICYmIGV4dGVuZGVk
Q29sb3IuYmx1ZSgpID09IDEgJiYgZXh0ZW5kZWRDb2xvci5hbHBoYSgpID09IDE7CiAgICAgfQog
ICAgIAotICAgIHJldHVybiBjb2xvci5pc1ZhbGlkKCkgJiYgY29sb3IucmdiKCkgPT0gQ29sb3I6
OndoaXRlOworICAgIHJldHVybiBjb2xvci5yZ2IoKSA9PSBDb2xvcjo6d2hpdGU7CiB9CiAKLVdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXggYmFlYmU1MjYxMWRiZTg1NDc3OGFh
ZDVmMmMwZTY4YzY3ZjE1Y2QwNi4uZjdjY2U0MTUxNTVlZDQzZWRmZGY1MDc2NjdjNGFhOTJkYzcx
MjhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJhY2tpbmdTdG9yZS5oCkBAIC02MCwxNCArNjAsMTQgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7Ci0gICAgICAgIHNp
emVfdCBidWZmZXJTaXplID0gc2l6ZS5hcmVhKCkudW5zYWZlR2V0KCkgKiBzaXplb2YoUkdCQTMy
KTsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBzaXplLmFyZWEoKS51bnNhZmVHZXQoKSAq
IHNpemVvZih1aW50MzJfdCk7CiAKICAgICAgICAgaWYgKCFidWZmZXIudHJ5UmVzZXJ2ZUNhcGFj
aXR5KGJ1ZmZlclNpemUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGJ1
ZmZlci5ncm93KGJ1ZmZlclNpemUpOwogICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBtX3BpeGVsc1B0
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8UkdCQTMyKj4oY29uc3RfY2FzdDxjaGFyKj4obV9waXhlbHMt
PmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6
ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBtX3Np
emUpOwogICAgICAgICBjbGVhcigpOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNsZWFyKCkKICAgICB7Ci0gICAgICAgIG1lbXNldChtX3BpeGVsc1B0ciwgMCwgKG1fc2l6
ZS5hcmVhKCkgKiBzaXplb2YoUkdCQTMyKSkudW5zYWZlR2V0KCkpOworICAgICAgICBtZW1zZXQo
bV9waXhlbHNQdHIsIDAsIChtX3NpemUuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KSkudW5zYWZl
R2V0KCkpOwogICAgIH0KIAogICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEludFJlY3QmIHJlY3Qp
CkBAIC05NCw4ICs5NCw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpIHx8
ICFpbkJvdW5kcyhyZWN0KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBzaXplX3Qg
cm93Qnl0ZXMgPSByZWN0LndpZHRoKCkgKiBzaXplb2YoUkdCQTMyKTsKLSAgICAgICAgUkdCQTMy
KiBzdGFydCA9IHBpeGVsQXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgc2l6ZV90IHJv
d0J5dGVzID0gcmVjdC53aWR0aCgpICogc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgdWludDMy
X3QqIHN0YXJ0ID0gcGl4ZWxBdChyZWN0LngoKSwgcmVjdC55KCkpOwogICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHJlY3QuaGVpZ2h0KCk7ICsraSkgewogICAgICAgICAgICAgbWVtc2V0KHN0
YXJ0LCAwLCByb3dCeXRlcyk7CiAgICAgICAgICAgICBzdGFydCArPSBtX3NpemUud2lkdGgoKTsK
QEAgLTEwNyw4ICsxMDcsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSB8
fCAhaW5Cb3VuZHMocmVjdCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUkdCQTMy
KiBzdGFydCA9IHBpeGVsQXQocmVjdC54KCksIHJlY3QueSgpKTsKLSAgICAgICAgUkdCQTMyIHBp
eGVsVmFsdWUgPSB0aGlzLT5waXhlbFZhbHVlKHIsIGcsIGIsIGEpOworICAgICAgICB1aW50MzJf
dCogc3RhcnQgPSBwaXhlbEF0KHJlY3QueCgpLCByZWN0LnkoKSk7CisgICAgICAgIHVpbnQzMl90
IHBpeGVsVmFsdWUgPSB0aGlzLT5waXhlbFZhbHVlKHIsIGcsIGIsIGEpOwogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHJlY3QuaGVpZ2h0KCk7ICsraSkgewogICAgICAgICAgICAgZm9yIChp
bnQgaiA9IDA7IGogPCByZWN0LndpZHRoKCk7ICsraikKICAgICAgICAgICAgICAgICBzdGFydFtq
XSA9IHBpeGVsVmFsdWU7CkBAIC0xMjEsMjIgKzEyMSwyMiBAQCBwdWJsaWM6CiAgICAgICAgIGlm
IChyZWN0LmlzRW1wdHkoKSB8fCAhaW5Cb3VuZHMocmVjdCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgc2l6ZV90IHJvd0J5dGVzID0gcmVjdC53aWR0aCgpICogc2l6ZW9mKFJHQkEz
Mik7Ci0gICAgICAgIFJHQkEzMiogc3JjID0gcGl4ZWxBdChyZWN0LngoKSwgcmVjdC55KCkpOwot
ICAgICAgICBSR0JBMzIqIGRlc3QgPSBzcmMgKyBtX3NpemUud2lkdGgoKTsKKyAgICAgICAgc2l6
ZV90IHJvd0J5dGVzID0gcmVjdC53aWR0aCgpICogc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAg
dWludDMyX3QqIHNyYyA9IHBpeGVsQXQocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgdWlu
dDMyX3QqIGRlc3QgPSBzcmMgKyBtX3NpemUud2lkdGgoKTsKICAgICAgICAgZm9yIChpbnQgaSA9
IDE7IGkgPCByZWN0LmhlaWdodCgpOyArK2kpIHsKICAgICAgICAgICAgIG1lbWNweShkZXN0LCBz
cmMsIHJvd0J5dGVzKTsKICAgICAgICAgICAgIGRlc3QgKz0gbV9zaXplLndpZHRoKCk7CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBSR0JBMzIqIHBpeGVsQXQoaW50IHgsIGludCB5KSBjb25zdAor
ICAgIHVpbnQzMl90KiBwaXhlbEF0KGludCB4LCBpbnQgeSkgY29uc3QKICAgICB7CiAgICAgICAg
IEFTU0VSVChpbkJvdW5kcyhJbnRQb2ludCh4LCB5KSkpOwogICAgICAgICByZXR1cm4gbV9waXhl
bHNQdHIgKyB5ICogbV9zaXplLndpZHRoKCkgKyB4OwogICAgIH0KIAotICAgIHZvaWQgc2V0UGl4
ZWwoUkdCQTMyKiBkZXN0LCB1bnNpZ25lZCByLCB1bnNpZ25lZCBnLCB1bnNpZ25lZCBiLCB1bnNp
Z25lZCBhKQorICAgIHZvaWQgc2V0UGl4ZWwodWludDMyX3QqIGRlc3QsIHVuc2lnbmVkIHIsIHVu
c2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCiAgICAgewogICAgICAgICBBU1NFUlQo
ZGVzdCk7CiAgICAgICAgICpkZXN0ID0gcGl4ZWxWYWx1ZShyLCBnLCBiLCBhKTsKQEAgLTE0Nywz
MCArMTQ3LDMyIEBAIHB1YmxpYzoKICAgICAgICAgc2V0UGl4ZWwocGl4ZWxBdCh4LCB5KSwgciwg
ZywgYiwgYSk7CiAgICAgfQogCi0gICAgdm9pZCBibGVuZFBpeGVsKFJHQkEzMiogZGVzdCwgdW5z
aWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKKyAgICB2b2lkIGJs
ZW5kUGl4ZWwodWludDMyX3QqIGRlc3QsIHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVk
IGIsIHVuc2lnbmVkIGEpCiAgICAgewogICAgICAgICBpZiAoIWEpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgaWYgKGEgPj0gMjU1IHx8ICFhbHBoYUNoYW5uZWwoKmRlc3QpKSB7Cisg
ICAgICAgIFNpbXBsZUNvbG9yIHBpeGVsIHsgKmRlc3QgfTsKKworICAgICAgICBpZiAoYSA+PSAy
NTUgfHwgIXBpeGVsLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgICAgICBzZXRQaXhlbChkZXN0LCBy
LCBnLCBiLCBhKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghbV9wcmVtdWx0aXBseUFscGhhKQotICAgICAgICAgICAgKmRlc3QgPSBtYWtlUHJlbXVsdGlw
bGllZFJHQkEocmVkQ2hhbm5lbCgqZGVzdCksIGdyZWVuQ2hhbm5lbCgqZGVzdCksIGJsdWVDaGFu
bmVsKCpkZXN0KSwgYWxwaGFDaGFubmVsKCpkZXN0KSwgZmFsc2UpOworICAgICAgICAgICAgcGl4
ZWwgPSBtYWtlUHJlbXVsdGlwbGllZFJHQkEocGl4ZWwucmVkQ29tcG9uZW50KCksIHBpeGVsLmdy
ZWVuQ29tcG9uZW50KCksIHBpeGVsLmJsdWVDb21wb25lbnQoKSwgcGl4ZWwuYWxwaGFDb21wb25l
bnQoKSwgZmFsc2UpOwogCiAgICAgICAgIHVuc2lnbmVkIGQgPSAyNTUgLSBhOwogCi0gICAgICAg
IHIgPSBmYXN0RGl2aWRlQnkyNTUociAqIGEgKyByZWRDaGFubmVsKCpkZXN0KSAqIGQpOwotICAg
ICAgICBnID0gZmFzdERpdmlkZUJ5MjU1KGcgKiBhICsgZ3JlZW5DaGFubmVsKCpkZXN0KSAqIGQp
OwotICAgICAgICBiID0gZmFzdERpdmlkZUJ5MjU1KGIgKiBhICsgYmx1ZUNoYW5uZWwoKmRlc3Qp
ICogZCk7Ci0gICAgICAgIGEgKz0gZmFzdERpdmlkZUJ5MjU1KGQgKiBhbHBoYUNoYW5uZWwoKmRl
c3QpKTsKKyAgICAgICAgciA9IGZhc3REaXZpZGVCeTI1NShyICogYSArIHBpeGVsLnJlZENvbXBv
bmVudCgpICogZCk7CisgICAgICAgIGcgPSBmYXN0RGl2aWRlQnkyNTUoZyAqIGEgKyBwaXhlbC5n
cmVlbkNvbXBvbmVudCgpICogZCk7CisgICAgICAgIGIgPSBmYXN0RGl2aWRlQnkyNTUoYiAqIGEg
KyBwaXhlbC5ibHVlQ29tcG9uZW50KCkgKiBkKTsKKyAgICAgICAgYSArPSBmYXN0RGl2aWRlQnky
NTUoZCAqIHBpeGVsLmFscGhhQ29tcG9uZW50KCkpOwogCiAgICAgICAgIGlmIChtX3ByZW11bHRp
cGx5QWxwaGEpCi0gICAgICAgICAgICAqZGVzdCA9IG1ha2VSR0JBKHIsIGcsIGIsIGEpOworICAg
ICAgICAgICAgKmRlc3QgPSBtYWtlUkdCQShyLCBnLCBiLCBhKS52YWx1ZSgpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICAqZGVzdCA9IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHIsIGcsIGIs
IGEpOworICAgICAgICAgICAgKmRlc3QgPSBtYWtlVW5QcmVtdWx0aXBsaWVkUkdCQShyLCBnLCBi
LCBhKS52YWx1ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGlzT3ZlclNpemUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKQEAgLTIwNCw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0
b3I8Y2hhcj4gYnVmZmVyOwogICAgICAgICBidWZmZXIuYXBwZW5kKG90aGVyLm1fcGl4ZWxzLT5k
YXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkpOwogICAgICAgICBtX3BpeGVscyA9IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBt
X3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8UkdCQTMyKj4oY29uc3RfY2FzdDxjaGFyKj4o
bV9waXhlbHMtPmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDMyX3QqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAg
fQogCiAgICAgYm9vbCBpbkJvdW5kcyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CkBAIC0y
MTcsMTkgKzIxOSwxOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gSW50UmVjdChJbnRQb2lu
dCgpLCBtX3NpemUpLmNvbnRhaW5zKHJlY3QpOwogICAgIH0KIAotICAgIFJHQkEzMiBwaXhlbFZh
bHVlKHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpIGNvbnN0
CisgICAgdWludDMyX3QgcGl4ZWxWYWx1ZSh1bnNpZ25lZCByLCB1bnNpZ25lZCBnLCB1bnNpZ25l
ZCBiLCB1bnNpZ25lZCBhKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fcHJlbXVsdGlwbHlB
bHBoYSAmJiAhYSkKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGlmIChtX3ByZW11
bHRpcGx5QWxwaGEgJiYgYSA8IDI1NSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlUHJlbXVsdGlw
bGllZFJHQkEociwgZywgYiwgYSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VQcmVt
dWx0aXBsaWVkUkdCQShyLCBnLCBiLCBhLCBmYWxzZSkudmFsdWUoKTsKIAotICAgICAgICByZXR1
cm4gbWFrZVJHQkEociwgZywgYiwgYSk7CisgICAgICAgIHJldHVybiBtYWtlUkdCQShyLCBnLCBi
LCBhKS52YWx1ZSgpOwogICAgIH0KIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50PiBtX3BpeGVsczsKLSAgICBSR0JBMzIqIG1fcGl4ZWxzUHRyIHsgbnVsbHB0ciB9OworICAg
IHVpbnQzMl90KiBtX3BpeGVsc1B0ciB7IG51bGxwdHIgfTsKICAgICBJbnRTaXplIG1fc2l6ZTsK
ICAgICBJbnRSZWN0IG1fZnJhbWVSZWN0OyAvLyBUaGlzIHdpbGwgYWx3YXlzIGp1c3QgYmUgdGhl
IGVudGlyZSBidWZmZXIgZXhjZXB0IGZvciBHSUYgYW5kIFBORyBmcmFtZXMKICAgICBib29sIG1f
cHJlbXVsdGlwbHlBbHBoYSB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCAyY2M2YjAyYTdkMzUwMTU3MWNmMjA5MzY0YjM2ZWQy
NWMxZDgzOTY5Li44NTZmZTM0ZmU2ZjcxN2Y4MTZlMzRhNDdkM2Y2ODRiYTYwM2I5NGQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBAIC0yNyw3
ICsyNyw2IEBACiAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9u
cy5oIgotI2luY2x1ZGUgIkltYWdlQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmll
bnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKICNpbmNsdWRlICJJbnRTaXplLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmlu
ZGV4IGNkZmZhM2Y2MGU5YWQxOGYyYTQwYThlODk4NTJhMzZhMzM3ZjUxMDAuLjc4MzhmMzUzMWMy
YmU1MDY1OTUyYWUxY2IzODE4N2JjOWI3MmU5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCkBAIC0xMjgsMjMgKzEyOCwyMyBAQCBzdGF0
aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiBDR0NvbG9yUmVm
IGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmICghY29sb3IuaXNF
eHRlbmRlZCgpKSB7Ci0gICAgICAgIHN3aXRjaCAoY29sb3IucmdiKCkpIHsKLSAgICAgICAgY2Fz
ZSBDb2xvcjo6dHJhbnNwYXJlbnQ6IHsKKyAgICAgICAgc3dpdGNoIChjb2xvci5yZ2IoKS52YWx1
ZSgpKSB7CisgICAgICAgIGNhc2UgQ29sb3I6OnRyYW5zcGFyZW50LnZhbHVlKCk6IHsKICAgICAg
ICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHRyYW5zcGFyZW50Q0dDb2xvciA9IGxlYWtDR0NvbG9y
KGNvbG9yKTsKICAgICAgICAgICAgIHJldHVybiB0cmFuc3BhcmVudENHQ29sb3I7CiAgICAgICAg
IH0KLSAgICAgICAgY2FzZSBDb2xvcjo6YmxhY2s6IHsKKyAgICAgICAgY2FzZSBDb2xvcjo6Ymxh
Y2sudmFsdWUoKTogewogICAgICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgYmxhY2tDR0NvbG9y
ID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAgICAgICAgICAgcmV0dXJuIGJsYWNrQ0dDb2xvcjsK
ICAgICAgICAgfQotICAgICAgICBjYXNlIENvbG9yOjp3aGl0ZTogeworICAgICAgICBjYXNlIENv
bG9yOjp3aGl0ZS52YWx1ZSgpOiB7CiAgICAgICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB3aGl0
ZUNHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7CiAgICAgICAgICAgICByZXR1cm4gd2hpdGVD
R0NvbG9yOwogICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBBU1NFUlQoY29sb3Iu
aXNFeHRlbmRlZCgpIHx8IGNvbG9yLnJnYigpKTsKKyAgICBBU1NFUlQoY29sb3IuaXNFeHRlbmRl
ZCgpIHx8IGNvbG9yLnJnYigpLnZhbHVlKCkpOwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFRpbnlMUlVDYWNoZTxDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+LCAzMj4+IGNhY2hlOwog
ICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQoY29sb3IpLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCmluZGV4IDFmZjViNzIzYmQ5
MjI3YjZkMTI2OWNkZjk0ZTYzZDIyNTIyYjdmNjAuLjE4NzQ5NTJhYTJjYjIwZjk2NThlZjBiMmQ0
YzMzN2RmODBjMzU0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Db2xvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29sb3JNYWMubW0KQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGJvb2wgdXNlT2xkQXF1
YUZvY3VzUmluZ0NvbG9yOwogCiBDb2xvciBvbGRBcXVhRm9jdXNSaW5nQ29sb3IoKQogewotICAg
IHJldHVybiAweEZGN0RBREQ5OworICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkY3REFERDkg
fTsKIH0KIAogdm9pZCBzZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcihib29sIG5ld1ZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA1ODQ2MmY2MjJjMjBkM2YyOGIyNTM4
YjRhNDlhOGNkY2ZkYTU2NGJhLi4xNmQyOGZjNTU1M2E1NDUyMGRkMTY0OWNkNzgwYjRjODRkMjRh
ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtODMsOCArODMsOCBAQCBzdGF0
aWMgaW5saW5lIFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+IGRlZmF1bHREZXZpY2VzKCkKICAgICAg
ICAgTW9ja01lZGlhRGV2aWNlIHsgIlNDUkVFTi0xIl9zLCAiTW9jayBzY3JlZW4gZGV2aWNlIDEi
X3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNj
cmVlbiwgQ29sb3I6OmxpZ2h0R3JheSwgeyAzODQwLCAyMTYwIH0gfSB9LAogICAgICAgICBNb2Nr
TWVkaWFEZXZpY2UgeyAiU0NSRUVOLTIiX3MsICJNb2NrIHNjcmVlbiBkZXZpY2UgMiJfcywgTW9j
a0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBD
b2xvcjo6eWVsbG93LCB7IDE5MjAsIDEwODAgfSB9IH0sCiAKLSAgICAgICAgTW9ja01lZGlhRGV2
aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9jayB3aW5kb3cgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0
aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCAweGZmZjFiNSwgeyA2NDAs
IDQ4MCB9IH0gfSwKLSAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9j
ayB3aW5kb3cgMiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6U2NyZWVuLCAweGZmZDBiNSwgeyAxMjgwLCA2MDAgfSB9IH0sCisgICAgICAgIE1v
Y2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1vY2sgd2luZG93IDEiX3MsIE1vY2tEaXNw
bGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgU2ltcGxl
Q29sb3IgeyAweGZmZjFiNSB9LCB7IDY0MCwgNDgwIH0gfSB9LAorICAgICAgICBNb2NrTWVkaWFE
ZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAyIl9zLCBNb2NrRGlzcGxheVByb3Bl
cnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIFNpbXBsZUNvbG9yIHsg
MHhmZmQwYjUgfSwgeyAxMjgwLCA2MDAgfSB9IH0sCiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cAppbmRleCA1YWM5ZDY2MDZjNDIyMTI0OGJjNDFkZTkzODljZTVjODdlNGE0MTdiLi42N2QyYTE3
ZmNkMDQ4N2Y4ZDk4NDI2MzM5NjQ0NWFmNzA5ZGFhOTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAt
MjYyLDEyICsyNjIsMTAgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0FuaW1h
dGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAKIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6OmRyYXdCb3hlcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgc3RhdGlj
IGNvbnN0IFJHQkEzMiBtYWdlbnRhID0gMHhmZmZmMDBmZjsKLSAgICBzdGF0aWMgY29uc3QgUkdC
QTMyIHllbGxvdyA9IDB4ZmZmZmZmMDA7Ci0gICAgc3RhdGljIGNvbnN0IFJHQkEzMiBibHVlID0g
MHhmZjAwMDBmZjsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIHJlZCA9IDB4ZmZmZjAwMDA7Ci0g
ICAgc3RhdGljIGNvbnN0IFJHQkEzMiBncmVlbiA9IDB4ZmYwMDgwMDA7Ci0gICAgc3RhdGljIGNv
bnN0IFJHQkEzMiBjeWFuID0gMHhGRjAwRkZGRjsKKyAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3Ig
bWFnZW50YSB7IDB4ZmZmZjAwZmYgfTsKKyAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IgYmx1ZSB7
IDB4ZmYwMDAwZmYgfTsKKyAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IgcmVkIHsgMHhmZmZmMDAw
MCB9OworICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBkYXJrR3JlZW4geyAweGZmMDA4MDAwIH07
CiAKICAgICBJbnRTaXplIHNpemUgPSBjYXB0dXJlU2l6ZSgpOwogICAgIGZsb2F0IGJveFNpemUg
PSBzaXplLndpZHRoKCkgKiAuMDM1OwpAQCAtMzE3LDkgKzMxNSw5IEBAIHZvaWQgTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmRyYXdCb3hlcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAKICAg
ICBib3hUb3AgKz0gYm94U2l6ZSArIDI7CiAgICAgYm94TGVmdCA9IGJveFNpemU7Ci0gICAgQ29s
b3IgYm94Q29sb3JzW10gPSB7IENvbG9yOjp3aGl0ZSwgeWVsbG93LCBjeWFuLCBncmVlbiwgbWFn
ZW50YSwgcmVkLCBibHVlIH07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihi
b3hDb2xvcnMpIC8gc2l6ZW9mKGJveENvbG9yc1swXSk7IGkrKykgewotICAgICAgICBjb250ZXh0
LmZpbGxSZWN0KEZsb2F0UmVjdChib3hMZWZ0LCBib3hUb3AsIGJveFNpemUgKyAxLCBib3hTaXpl
ICsgMSksIGJveENvbG9yc1tpXSk7CisgICAgY29uc3RleHByIFNpbXBsZUNvbG9yIGJveENvbG9y
c1tdID0geyBDb2xvcjo6d2hpdGUsIENvbG9yOjp5ZWxsb3csIENvbG9yOjpjeWFuLCBkYXJrR3Jl
ZW4sIG1hZ2VudGEsIHJlZCwgYmx1ZSB9OworICAgIGZvciAoYXV0byYgYm94Q29sb3IgOiBib3hD
b2xvcnMpIHsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoYm94TGVmdCwgYm94
VG9wLCBib3hTaXplICsgMSwgYm94U2l6ZSArIDEpLCBib3hDb2xvcik7CiAgICAgICAgIGJveExl
ZnQgKz0gYm94U2l6ZSArIDE7CiAgICAgfQogICAgIGNvbnRleHQuc3Ryb2tlUGF0aChtX3BhdGgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVt
ZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1v
Y2suY3BwCmluZGV4IGVkOGFiYjRhMTQ2YWJjNzEwYzQ1YzQ3NzMwZGI4NTAwM2RlNjZjNDkuLjVh
Njc1YTI1ZWJiMjA2Yzc0NmJkNDRjYzIyYTQ1MGMyODc2Y2E2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lTW9jazo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9s
bGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplLCBTY3IKIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1v
Y2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xs
YmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRyYWNrUmVjdCkKIHsKLSAgICBjb250ZXh0
LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdy
YXkgOiBDb2xvcigweEZGRTBFMEUwKSk7CisgICAgY29udGV4dC5maWxsUmVjdCh0cmFja1JlY3Qs
IHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5IDogU2ltcGxlQ29sb3IgeyAw
eEZGRTBFMEUwIH0pOwogfQogCiB2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUaHVtYihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiB0aHVtYlJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CmluZGV4IDk4Y2RkOGJlZmRiYTFiYTc4MmMwM2U2YjI1MjFkY2E4MDc1ZmNkYWIuLjNkZjQ1NWIw
NjMxMmVlNWNkNjFmN2VkMWJiODhjN2M3NTc3Y2IzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xODM3LDkgKzE4MzcsMTEgQEAgUmVuZGVyRnJhZ21l
bnRlZEZsb3cqIFJlbmRlck9iamVjdDo6bG9jYXRlRW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKSBj
b25zdAogdm9pZCBSZW5kZXJPYmplY3Q6OmNhbGN1bGF0ZUJvcmRlclN0eWxlQ29sb3IoY29uc3Qg
Qm9yZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCb3hTaWRlJiBzaWRlLCBDb2xvciYgY29sb3IpCiB7
CiAgICAgQVNTRVJUKHN0eWxlID09IEJvcmRlclN0eWxlOjpJbnNldCB8fCBzdHlsZSA9PSBCb3Jk
ZXJTdHlsZTo6T3V0c2V0KTsKKwogICAgIC8vIFRoaXMgdmFsdWVzIHdlcmUgZGVyaXZlZCBlbXBp
cmljYWxseS4KLSAgICBjb25zdCBSR0JBMzIgYmFzZURhcmtDb2xvciA9IDB4RkYyMDIwMjA7Ci0g
ICAgY29uc3QgUkdCQTMyIGJhc2VMaWdodENvbG9yID0gMHhGRkVCRUJFQjsKKyAgICBjb25zdGV4
cHIgU2ltcGxlQ29sb3IgYmFzZURhcmtDb2xvciB7IDB4RkYyMDIwMjAgfTsKKyAgICBjb25zdGV4
cHIgU2ltcGxlQ29sb3IgYmFzZUxpZ2h0Q29sb3IgeyAweEZGRUJFQkVCIH07CisKICAgICBlbnVt
IE9wZXJhdGlvbiB7IERhcmtlbiwgTGlnaHRlbiB9OwogCiAgICAgT3BlcmF0aW9uIG9wZXJhdGlv
biA9IChzaWRlID09IEJTVG9wIHx8IHNpZGUgPT0gQlNMZWZ0KSA9PSAoc3R5bGUgPT0gQm9yZGVy
U3R5bGU6Okluc2V0KSA/IERhcmtlbiA6IExpZ2h0ZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmNwcAppbmRleCAwYzM1YjRmMTc2MTJkNDdhNjY0NThkM2YzNzI2NTcxZWJh
YmY5YWY3Li42MDk3YjRjNmEzZTllYmQzMTkyOTI2ZmUzOTM5YjhiYjVkN2ZlZWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTEyODUsNzMgKzEyODUsNzIg
QEAgQ29sb3IgUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSUQgY3NzVmFsdWVJZCwg
T3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGkKIHsKICAgICBzd2l0Y2ggKGNzc1ZhbHVlSWQpIHsK
ICAgICBjYXNlIENTU1ZhbHVlV2Via2l0TGluazoKLSAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29u
dGFpbnMoU3R5bGVDb2xvcjo6T3B0aW9uczo6Rm9yVmlzaXRlZExpbmspID8gMHhGRjU1MUE4QiA6
IDB4RkYwMDAwRUU7CisgICAgICAgIHJldHVybiBvcHRpb25zLmNvbnRhaW5zKFN0eWxlQ29sb3I6
Ok9wdGlvbnM6OkZvclZpc2l0ZWRMaW5rKSA/IFNpbXBsZUNvbG9yIHsgMHhGRjU1MUE4QiB9IDog
U2ltcGxlQ29sb3IgeyAweEZGMDAwMEVFIH07CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEFjdGl2
ZWxpbms6Ci0gICAgICAgIHJldHVybiAweEZGRkYwMDAwOworICAgICAgICByZXR1cm4gU2ltcGxl
Q29sb3IgeyAweEZGRkYwMDAwIH07CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJvcmRlcjoKLSAg
ICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAgICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAg
ICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJ1dHRvbnRleHQ6Ci0gICAgICAgIHJldHVybiAweEZGMDAw
MDAwOworICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVBY3Rp
dmVjYXB0aW9uOgotICAgICAgICByZXR1cm4gMHhGRkNDQ0NDQzsKKyAgICAgICAgcmV0dXJuIFNp
bXBsZUNvbG9yIHsgMHhGRkNDQ0NDQyB9OwogICAgIGNhc2UgQ1NTVmFsdWVBcHB3b3Jrc3BhY2U6
Ci0gICAgICAgIHJldHVybiAweEZGRkZGRkZGOworICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRl
OwogICAgIGNhc2UgQ1NTVmFsdWVCYWNrZ3JvdW5kOgotICAgICAgICByZXR1cm4gMHhGRjYzNjND
RTsKKyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjYzNjNDRSB9OwogICAgIGNhc2Ug
Q1NTVmFsdWVCdXR0b25mYWNlOgotICAgICAgICByZXR1cm4gMHhGRkMwQzBDMDsKKyAgICAgICAg
cmV0dXJuIENvbG9yOjpsaWdodEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbmhpZ2hsaWdo
dDoKLSAgICAgICAgcmV0dXJuIDB4RkZEREREREQ7CisgICAgICAgIHJldHVybiBTaW1wbGVDb2xv
ciB7IDB4RkZEREREREQgfTsKICAgICBjYXNlIENTU1ZhbHVlQnV0dG9uc2hhZG93OgotICAgICAg
ICByZXR1cm4gMHhGRjg4ODg4ODsKKyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjg4
ODg4OCB9OwogICAgIGNhc2UgQ1NTVmFsdWVCdXR0b250ZXh0OgotICAgICAgICByZXR1cm4gMHhG
RjAwMDAwMDsKKyAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVl
Q2FwdGlvbnRleHQ6Ci0gICAgICAgIHJldHVybiAweEZGMDAwMDAwOworICAgICAgICByZXR1cm4g
Q29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVHcmF5dGV4dDoKLSAgICAgICAgcmV0dXJu
IDB4RkY4MDgwODA7CisgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkY4MDgwODAgfTsK
ICAgICBjYXNlIENTU1ZhbHVlSGlnaGxpZ2h0OgotICAgICAgICByZXR1cm4gMHhGRkI1RDVGRjsK
KyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkI1RDVGRiB9OwogICAgIGNhc2UgQ1NT
VmFsdWVIaWdobGlnaHR0ZXh0OgotICAgICAgICByZXR1cm4gMHhGRjAwMDAwMDsKKyAgICAgICAg
cmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlSW5hY3RpdmVib3JkZXI6Ci0g
ICAgICAgIHJldHVybiAweEZGRkZGRkZGOworICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwog
ICAgIGNhc2UgQ1NTVmFsdWVJbmFjdGl2ZWNhcHRpb246Ci0gICAgICAgIHJldHVybiAweEZGRkZG
RkZGOworICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogICAgIGNhc2UgQ1NTVmFsdWVJbmFj
dGl2ZWNhcHRpb250ZXh0OgotICAgICAgICByZXR1cm4gMHhGRjdGN0Y3RjsKKyAgICAgICAgcmV0
dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjdGN0Y3RiB9OwogICAgIGNhc2UgQ1NTVmFsdWVJbmZvYmFj
a2dyb3VuZDoKLSAgICAgICAgcmV0dXJuIDB4RkZGQkZDQzU7CisgICAgICAgIHJldHVybiBTaW1w
bGVDb2xvciB7IDB4RkZGQkZDQzUgfTsKICAgICBjYXNlIENTU1ZhbHVlSW5mb3RleHQ6Ci0gICAg
ICAgIHJldHVybiAweEZGMDAwMDAwOworICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAg
IGNhc2UgQ1NTVmFsdWVNZW51OgotICAgICAgICByZXR1cm4gMHhGRkMwQzBDMDsKKyAgICAgICAg
cmV0dXJuIENvbG9yOjpsaWdodEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZU1lbnV0ZXh0OgotICAg
ICAgICByZXR1cm4gMHhGRjAwMDAwMDsKKyAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAg
ICBjYXNlIENTU1ZhbHVlU2Nyb2xsYmFyOgotICAgICAgICByZXR1cm4gMHhGRkZGRkZGRjsKKyAg
ICAgICAgcmV0dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlVGV4dDoKLSAgICAg
ICAgcmV0dXJuIDB4RkYwMDAwMDA7CisgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAg
Y2FzZSBDU1NWYWx1ZVRocmVlZGRhcmtzaGFkb3c6Ci0gICAgICAgIHJldHVybiAweEZGNjY2NjY2
OworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGNjY2NjY2IH07CiAgICAgY2FzZSBD
U1NWYWx1ZVRocmVlZGZhY2U6Ci0gICAgICAgIHJldHVybiAweEZGQzBDMEMwOworICAgICAgICBy
ZXR1cm4gQ29sb3I6OmxpZ2h0R3JheTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkaGlnaGxpZ2h0
OgotICAgICAgICByZXR1cm4gMHhGRkRERERERDsKKyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9y
IHsgMHhGRkRERERERCB9OwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRsaWdodHNoYWRvdzoKLSAg
ICAgICAgcmV0dXJuIDB4RkZDMEMwQzA7CisgICAgICAgIHJldHVybiBDb2xvcjo6bGlnaHRHcmF5
OwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRzaGFkb3c6Ci0gICAgICAgIHJldHVybiAweEZGODg4
ODg4OworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGODg4ODg4IH07CiAgICAgY2Fz
ZSBDU1NWYWx1ZVdpbmRvdzoKLSAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAgICAgIHJl
dHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvd2ZyYW1lOgotICAgICAg
ICByZXR1cm4gMHhGRkNDQ0NDQzsKKyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkND
Q0NDQyB9OwogICAgIGNhc2UgQ1NTVmFsdWVXaW5kb3d0ZXh0OgotICAgICAgICByZXR1cm4gMHhG
RjAwMDAwMDsKKyAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBkZWZhdWx0OgotICAg
ICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9Ci0gICAgcmV0dXJuIENvbG9y
KCk7CiB9CiAKIENvbG9yIFJlbmRlclRoZW1lOjphY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29s
b3IoT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IG9wdGlvbnMpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggY2Q4YWY2ZTJhNzg1ZjAx
NjkyNDdiMGQxZjJjYWE3N2M5M2M2MTQwZi4uMjM5ZmUyMDQ4Mjk4NmU5Mzc2MGYwNDk2MzhlOGJi
MmZmMmEzYzdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQpAQCAtODE5LDExICs4MTksMTEgQEAgQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnN5c3RlbUNvbG9y
KENTU1ZhbHVlSUQgY3NzVmFsdWVJRCwgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok8KICAgICAgICAg
Y2FzZSBDU1NWYWx1ZVRocmVlZGZhY2U6CiAgICAgICAgICAgICAvLyBXZSBzZWxlY3RlZCB0aGlz
IHZhbHVlIGluc3RlYWQgb2YgW05TQ29sb3IgY29udHJvbENvbG9yXSB0byBhdm9pZCB3ZWJzaXRl
IGluY29tcGF0aWJpbGl0aWVzLgogICAgICAgICAgICAgLy8gV2UgbWF5IHdhbnQgdG8gY29uc2lk
ZXIgY2hhbmdpbmcgdG8gW05TQ29sb3IgY29udHJvbENvbG9yXSBzb21lIGRheS4KLSAgICAgICAg
ICAgIHJldHVybiAweEZGQzBDMEMwOworICAgICAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsg
MHhGRkMwQzBDMCB9OwogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVJbmZvYmFja2dyb3VuZDoKICAg
ICAgICAgICAgIC8vIE5vIGNvcnJlc3BvbmRpbmcgTlNDb2xvciBmb3IgdGhpcyBzbyB3ZSB1c2Ug
YSBoYXJkIGNvZGVkIHZhbHVlLgotICAgICAgICAgICAgcmV0dXJuIDB4RkZGQkZDQzU7CisgICAg
ICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGRkJGQ0M1IH07CiAKICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZU1lbnU6CiAgICAgICAgICAgICByZXR1cm4gbWVudUJhY2tncm91bmRDb2xvcigp
OwpAQCAtODMyLDMwICs4MzIsMzAgQEAgQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnN5c3RlbUNvbG9y
KENTU1ZhbHVlSUQgY3NzVmFsdWVJRCwgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok8KICAgICAgICAg
Y2FzZSBDU1NWYWx1ZUFjdGl2ZWJvcmRlcjoKICAgICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBh
dm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9y
IGZpbmdlcnByaW50aW5nLgogICAgICAgICAgICAgaWYgKGxvY2FsQXBwZWFyYW5jZS51c2luZ0Rh
cmtBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbG9yKDB4RkYxQUE5RkYs
IENvbG9yOjpTZW1hbnRpYyk7Ci0gICAgICAgICAgICByZXR1cm4gQ29sb3IoMHhGRjAwNjdGNCwg
Q29sb3I6OlNlbWFudGljKTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7
IDB4RkYxQUE5RkYgfSwgQ29sb3I6OlNlbWFudGljIH07CisgICAgICAgICAgICByZXR1cm4geyBT
aW1wbGVDb2xvciB7IDB4RkYwMDY3RjQgfSwgQ29sb3I6OlNlbWFudGljIH07CiAKICAgICAgICAg
Y2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udHJvbEFjY2VudDoKICAgICAgICAgICAgIC8vIEhh
cmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRv
IHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAgICAgICAgICAgLy8gU2FtZSBjb2xvciBp
biBsaWdodCBhbmQgZGFyayBhcHBlYXJhbmNlcy4KLSAgICAgICAgICAgIHJldHVybiBDb2xvcigw
eEZGMDA3QUZGLCBDb2xvcjo6U2VtYW50aWMpOworICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxl
Q29sb3IgeyAweEZGMDA3QUZGIH0sIENvbG9yOjpTZW1hbnRpYyB9OwogCiAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVBcHBsZVN5c3RlbVNlbGVjdGVkQ29udGVudEJhY2tncm91bmQ6CiAgICAgICAgICAg
ICAvLyBIYXJkY29kZWQgdG8gYXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFuY2UgcHJlZmVy
ZW5jZSB0byB0aGUgd2ViIGZvciBmaW5nZXJwcmludGluZy4KICAgICAgICAgICAgIGlmIChsb2Nh
bEFwcGVhcmFuY2UudXNpbmdEYXJrQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJldHVy
biBDb2xvcigweEZGMDA1OEQwLCBDb2xvcjo6U2VtYW50aWMpOwotICAgICAgICAgICAgcmV0dXJu
IENvbG9yKDB4RkYwMDYzRTEsIENvbG9yOjpTZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHsgU2ltcGxlQ29sb3IgeyAweEZGMDA1OEQwIH0sIENvbG9yOjpTZW1hbnRpYyB9OworICAg
ICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweEZGMDA2M0UxIH0sIENvbG9yOjpTZW1h
bnRpYyB9OwogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVIaWdobGlnaHQ6CiAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVBcHBsZVN5c3RlbVNlbGVjdGVkVGV4dEJhY2tncm91bmQ6CiAgICAgICAgICAgICAv
LyBIYXJkY29kZWQgdG8gYXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFuY2UgcHJlZmVyZW5j
ZSB0byB0aGUgd2ViIGZvciBmaW5nZXJwcmludGluZy4KICAgICAgICAgICAgIGlmIChsb2NhbEFw
cGVhcmFuY2UudXNpbmdEYXJrQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBD
b2xvcigweENDM0Y2MzhCLCBDb2xvcjo6U2VtYW50aWMpOwotICAgICAgICAgICAgcmV0dXJuIENv
bG9yKDB4OTk4MEJDRkUsIENvbG9yOjpTZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHsgU2ltcGxlQ29sb3IgeyAweENDM0Y2MzhCIH0sIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAg
ICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweDk5ODBCQ0ZFIH0sIENvbG9yOjpTZW1hbnRp
YyB9OwogCiAjaWYgIUhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCiAgICAgICAgIGNhc2UgQ1NT
VmFsdWVBcHBsZVN5c3RlbUNvbnRhaW5lckJvcmRlcjoKLSAgICAgICAgICAgIHJldHVybiAweEZG
QzVDNUM1OworICAgICAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkM1QzVDNSB9Owog
I2VuZGlmCiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtRXZlbkFsdGVybmF0aW5n
Q29udGVudEJhY2tncm91bmQ6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcAppbmRleCA1NmQyN2QwMWM2ZDJiMjEwOGNjY2I3M2Q3YjI2MDAzZTY3NTlm
MThiLi5lNTRhODMyNDgxNTQxMmJhOGM2ZmRmNGY4MjE5MTQ0ODUxYWZiNzgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC0yNDQsMTcgKzI0
NCwxNyBAQCB2b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3QmIG8sCiAgICAgICAgICAgICAvLyBEbyBub3QgZHVt
cCBpbnZhbGlkIG9yIHRyYW5zcGFyZW50IGJhY2tncm91bmRzLCBzaW5jZSB0aGF0IGlzIHRoZSBk
ZWZhdWx0LgogICAgICAgICAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yID0gby5zdHlsZSgpLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAg
ICAgICBpZiAoby5wYXJlbnQoKS0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IpLnJnYigpICE9IGJhY2tncm91bmRDb2xvci5yZ2IoKQotICAg
ICAgICAgICAgICAgICYmIGJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkgJiYgYmFja2dyb3VuZENv
bG9yLnJnYigpKQorICAgICAgICAgICAgICAgICYmIGJhY2tncm91bmRDb2xvci5yZ2IoKSAhPSBD
b2xvcjo6dHJhbnNwYXJlbnQpCiAgICAgICAgICAgICAgICAgdHMgPDwgIiBbYmdjb2xvcj0iIDw8
IGJhY2tncm91bmRDb2xvci5uYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIDw8ICJdIjsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgQ29sb3IgdGV4dEZpbGxDb2xvciA9IG8uc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKTsKICAgICAg
ICAgICAgIGlmIChvLnBhcmVudCgpLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpLnJnYigpICE9IHRleHRGaWxsQ29sb3IucmdiKCkg
IAotICAgICAgICAgICAgICAgICYmIHRleHRGaWxsQ29sb3IuaXNWYWxpZCgpICYmIHRleHRGaWxs
Q29sb3IucmdiKCkgIT0gY29sb3IucmdiKCkgJiYgdGV4dEZpbGxDb2xvci5yZ2IoKSkKKyAgICAg
ICAgICAgICAgICAmJiB0ZXh0RmlsbENvbG9yLnJnYigpICE9IGNvbG9yLnJnYigpICYmIHRleHRG
aWxsQ29sb3IucmdiKCkgIT0gQ29sb3I6OnRyYW5zcGFyZW50KQogICAgICAgICAgICAgICAgIHRz
IDw8ICIgW3RleHRGaWxsQ29sb3I9IiA8PCB0ZXh0RmlsbENvbG9yLm5hbWVGb3JSZW5kZXJUcmVl
QXNUZXh0KCkgPDwgIl0iOwogCiAgICAgICAgICAgICBDb2xvciB0ZXh0U3Ryb2tlQ29sb3IgPSBv
LnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9r
ZUNvbG9yKTsKICAgICAgICAgICAgIGlmIChvLnBhcmVudCgpLT5zdHlsZSgpLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcikucmdiKCkgIT0gdGV4
dFN0cm9rZUNvbG9yLnJnYigpCi0gICAgICAgICAgICAgICAgJiYgdGV4dFN0cm9rZUNvbG9yLmlz
VmFsaWQoKSAmJiB0ZXh0U3Ryb2tlQ29sb3IucmdiKCkgIT0gY29sb3IucmdiKCkgJiYgdGV4dFN0
cm9rZUNvbG9yLnJnYigpKQorICAgICAgICAgICAgICAgICYmIHRleHRTdHJva2VDb2xvci5yZ2Io
KSAhPSBjb2xvci5yZ2IoKSAmJiB0ZXh0U3Ryb2tlQ29sb3IucmdiKCkgIT0gQ29sb3I6OnRyYW5z
cGFyZW50KQogICAgICAgICAgICAgICAgIHRzIDw8ICIgW3RleHRTdHJva2VDb2xvcj0iIDw8IHRl
eHRTdHJva2VDb2xvci5uYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIDw8ICJdIjsKIAogICAgICAg
ICAgICAgaWYgKG8ucGFyZW50KCktPnN0eWxlKCkudGV4dFN0cm9rZVdpZHRoKCkgIT0gby5zdHls
ZSgpLnRleHRTdHJva2VXaWR0aCgpICYmIG8uc3R5bGUoKS50ZXh0U3Ryb2tlV2lkdGgoKSA+IDAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRl
eCA4ODBkMThjYzJlODE0NGE2NWMzYjQxNTg2YzgwNjIxZmU5MTYxZjY2Li4xYzAwYmRhNTNmNWI2
YjQzNGVhNzE5NzlmNGU2MzIxMzgxZGE1NzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE0ODksOCArMTQ4OSwxMCBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8Q29sb3I+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ29sb3Im
IGNvbG9yKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgdWludDMyX3QgdmFsdWUgPSBj
b2xvci5yZ2IoKS52YWx1ZSgpOworCiAgICAgZW5jb2RlciA8PCB0cnVlOwotICAgIGVuY29kZXIg
PDwgY29sb3IucmdiKCk7CisgICAgZW5jb2RlciA8PCB2YWx1ZTsKIH0KIAogYm9vbCBBcmd1bWVu
dENvZGVyPENvbG9yPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENvbG9yJiBjb2xvcikKQEAg
LTE1MjgsMTEgKzE1MzAsMTEgQEAgYm9vbCBBcmd1bWVudENvZGVyPENvbG9yPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIENvbG9yJiBjb2xvcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgUkdCQTMyIHJnYmE7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZ2JhKSkKKyAg
ICB1aW50MzJfdCB2YWx1ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVlKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29sb3IgPSBDb2xvcihyZ2JhKTsKKyAgICBjb2xvciA9
IFNpbXBsZUNvbG9yIHsgdmFsdWUgfTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI2NDQ0ZDE0OGVkZTBk
OTRkMGZlYWYxNjk1MzYyOGU2YmNhMDA1NDMuLjVmNzE4MzgyM2M5ZGFkZjRjYjFjNDUzYjdkYzg4
OTE4OTFlNWE1YjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMS0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBSR0JBMzIgdHlwZWRlZiB3aXRoIGEgY2xhc3Mg
dG8gaW1wcm92ZSB0eXBlIHNhZmV0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA2ODYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBz
aG90Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IFVzZSB0aGUgQ29sb3IgY29u
c3RydWN0b3IgaW5zdGVhZCBvZiBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkLgorCiAyMDIwLTAxLTI3
ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbZXdzXSBB
ZGQgbWV0aG9kIHRvIGZldGNoIGNxKyBwYXRjaGVzIGZyb20gQnVnemlsbGEKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3QubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCmluZGV4
IDEyZjVmZjU3ZTQxYzUwNDMwNGNjZjU2NTNmZGZlMDljYWY4ODkyMWQuLjFiYmZkY2E5ZTk2YzUz
NWMyYWE5YmIzY2U1NDQ1ODAxN2U2NGJlODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZTbmFwc2hvdC5tbQpAQCAtNjAsNyArNjAsNyBAQCBU
RVNUKFBERlNuYXBzaG90LCBGdWxsQ29udGVudCkKICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRl
eHQoKVs0XSwgJ28nKTsKIAogICAgICAgICAvLyBUaGUgZW50aXJlIHBhZ2Ugc2hvdWxkIGJlIGdy
ZWVuLiBQaWNrIGEgcG9pbnQgaW4gdGhlIG1pZGRsZSB0byBjaGVjay4KLSAgICAgICAgRVhQRUNU
X1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVj
a2VkKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQo
NDAwLCAzMDApID09IENvbG9yKDAsIDI1NSwgMCkpOwogCiAgICAgICAgIGRpZFRha2VTbmFwc2hv
dCA9IHRydWU7CiAgICAgfV07CkBAIC05MSw3ICs5MSw3IEBAIFRFU1QoUERGU25hcHNob3QsIFN1
YnJlZ2lvbnMpCiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7
CiAKICAgICAgICAgLy8gVGhlIGVudGlyZSBwYWdlIHNob3VsZCBiZSBncmVlbi4gUGljayBhIHBv
aW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCi0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNv
bG9yQXRQb2ludCgyMDAsIDE1MCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDAp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDIwMCwgMTUwKSA9PSBD
b2xvcigwLCAyNTUsIDApKTsKIAogICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOwogICAg
IH1dOwpAQCAtMTExLDEwICsxMTEsMTAgQEAgVEVTVChQREZTbmFwc2hvdCwgU3VicmVnaW9ucykK
ICAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENH
UmVjdE1ha2UoMCwgMCwgMTIwMCwgMTIwMCkpKTsKIAogICAgICAgICAvLyBBIHBpeGVsIHRoYXQg
d2FzIGluIHRoZSB2aWV3IHNob3VsZCBiZSBncmVlbi4gUGljayBhIHBvaW50IGluIHRoZSBtaWRk
bGUgdG8gY2hlY2suCi0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCgyMDAs
IDE1MCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDIwMCwgMTUwKSA9PSBDb2xvcigwLCAyNTUsIDAp
KTsKIAogICAgICAgICAvLyBBIHBpeGVsIHRoYXQgd2FzIG91dHNpZGUgdGhlIHZpZXcgc2hvdWxk
IGFsc28gYmUgZ3JlZW4gKHdlIGV4dGVuZCBiYWNrZ3JvdW5kIGNvbG9yIG91dCkuIFBpY2sgYSBw
b2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgotICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5j
b2xvckF0UG9pbnQoOTAwLCA3MDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAw
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg5MDAsIDcwMCkgPT0g
Q29sb3IoMCwgMjU1LCAwKSk7CiAKICAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKICAg
ICB9XTsKQEAgLTE0MCwyMCArMTQwLDIwIEBAIFRFU1QoUERGU25hcHNob3QsIE92ZXIyMDBJbmNo
ZXMpCiAgICAgICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOwogICAgICAgICBFWFBF
Q1RfTkUocGFnZSwgbnVsbHB0cik7CiAgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9S
ZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7Ci0gICAg
ICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNy
ZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29s
b3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcigwLCAyNTUsIDApKTsKICAgICAgICAgRVhQRUNU
X0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDV1KTsKIAogICAgICAgICBwYWdlID0gZG9jdW1l
bnQtPnBhZ2UoMSk7CiAgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKICAgICAgICAg
RVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2Uo
MCwgMCwgODAwLCAxNDQwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBv
aW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yKDAs
IDI1NSwgMCkpOwogCiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAw
dSk7CiAKICAgICAgICAgcGFnZSA9IGRvY3VtZW50LT5wYWdlKDIpOwogICAgICAgICBFWFBFQ1Rf
TkUocGFnZSwgbnVsbHB0cik7CiAgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0
KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSkpOwotICAgICAgICBF
WFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yOjpjcmVhdGVV
bmNoZWNrZWQoMCwgMjU1LCAwKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQ
b2ludCg0MDAsIDMwMCkgPT0gQ29sb3IoMCwgMjU1LCAwKSk7CiAgICAgICAgIEVYUEVDVF9FUShw
YWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7CiAKICAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0g
dHJ1ZTsKQEAgLTE3OCw3ICsxNzgsNyBAQCBURVNUKFBERlNuYXBzaG90LCBMaW5rcykKICAgICAg
ICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKENHUmVj
dEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDAp
KSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0g
Q29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgyNTUsIDI1NSwgMjU1KSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3IoMjU1LCAyNTUsIDI1NSkp
OwogCiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCA4dSk7CiAgICAg
ICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMF0sICdDJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389101</attachid>
            <date>2020-01-28 20:28:06 -0800</date>
            <delta_ts>2020-01-30 07:24:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206862-20200128202800.patch</filename>
            <type>text/plain</type>
            <size>78964</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhlYzk0MTNjNjFkNmRk
N2IyYmZjNmJiMGY0ZmRmZmI3YzFjYjYyNy4uMzkzNjEzNDAyNDhjODAxZTQwMzRjNzgzNmQ5ZTBm
NzQyZmJmNWNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NiBAQAorMjAyMC0wMS0yOCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBSR0JBMzIgdHlw
ZWRlZiB3aXRoIGEgY2xhc3MgdG8gaW1wcm92ZSB0eXBlIHNhZmV0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOiBSZW1vdmUg
UkdCQ29sb3IuaC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogUmVtb3ZlIFJCR0NvbG9yLmNwcC4K
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZSBSR0JD
b2xvci5oIGFuZCBSR0JDb2xvci5jcHAuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgUkdCQ29sb3IuaC4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmdldFJlY3RWYWx1ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JW
YWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGNzcy9EZXByZWNhdGVkQ1NTT01Q
cmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01Qcmlt
aXRpdmVWYWx1ZTo6Z2V0Q291bnRlclZhbHVlIGNvbnN0KTogVXNlCisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlOjpjb3VudGVyVmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NT
T01QcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVlIGNvbnN0KTogVXNlCisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlOjpyZWN0VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NT
T01QcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JWYWx1ZSBjb25zdCk6IFVTZQorICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZTo6aXNSR0JDb2xvciBhbmQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbG9y
LgorCisgICAgICAgICogY3NzL0RlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yLmg6IFN0b3JlIGEgQ29s
b3IgaW5zdGVhZCBvZiBhbiBSR0JBMzIuCisgICAgICAgIFRha2UgYSBDb2xvciBhcmd1bWVudCBp
bnN0ZWFkIG9mIGEgUkdCQ29sb3IgYXJndW1lbnQuIFJlZmFjdG9yZWQgdG8KKyAgICAgICAgdXNl
IGEgY3JlYXRlV3JhcHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBtZW1iZXIgdG8gdGlnaHRlbiB0aGUg
Y29kZS4KKworICAgICAgICAqIGNzcy9SR0JDb2xvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
Y3NzL1JHQkNvbG9yLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBjc3MvU3R5bGVDb2xvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKTogRXhwbGlj
aXRseSBjb252ZXJ0IHRvIFNpbXBsZUNvbG9yCisgICAgICAgIHJhdGhlciB0aGFuIHJlbHlpbmcg
b24gaW5pdGlhbGl6aW5nIGEgQ29sb3IgZnJvbSBhbiBpbnRlZ2VyIEFSR0IgdmFsdWUuCisKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06IFJlbW92ZWQgaW5jbHVkZSBv
ZiBSR0JDb2xvci5oLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKTogVXNlIHRoZSBD
b2xvciBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mCisgICAgICAgIENvbG9yOjpjcmVhdGVVbmNoZWNr
ZWQuCisKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbzo6SGlzdG9yaWNN
ZW1vcnlDYXRlZ29yeUluZm8pOiBVc2UKKyAgICAgICAgZXhwbGljaXQgU2ltcGxlQ29sb3IgcmF0
aGVyIHRoYW4gcmVseWluZyBvbiBpbml0aWFsaXppbmcgYSBDb2xvciBmcm9tIGFuCisgICAgICAg
IGludGVnZXIgQVJHQiB2YWx1ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmNwcDogVXNlIGNvbnN0ZXhwciBmb3IgY29uc3RhbnQgY29sb3JzLgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVJHQik6IEltcGxlbWVudCBieSBjYWxsaW5nIG1ha2VSR0JBLgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZVJHQkEpOiBVc2UgYW4gZXhwbGljaXQgYXJndW1lbnQgbGlzdCB0byBjYWxsIHRo
ZQorICAgICAgICBTaW1wbGVDb2xvciBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Om1h
a2VSR0JBMzJGcm9tRmxvYXRzKTogSW1wbGVtZW50IGJ5IGNhbGxpbmcgbWFrZVJHQkEuCisgICAg
ICAgIChXZWJDb3JlOjpjb2xvcldpdGhPdmVycmlkZUFscGhhKTogVXNlIGFuIGV4cGxpY2l0IGFy
Z3VtZW50IGxpc3QgdG8gY2FsbAorICAgICAgICB0aGUgU2ltcGxlQ29sb3IgY29uc3RydWN0b3Iu
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhleENvbG9ySW50ZXJuYWwpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9yOjpDb2xvcik6IFJlbW92ZWQgdW5uZWVkZWQgY29kZSB0byBzZXQg
dGhlIGNvbG9yCisgICAgICAgIHRvIGludmFsaWQsIHNpbmNlIHRoYXQncyBhbHJlYWR5IHRoZSBk
ZWZhdWx0IGZvciBhIG5ldyBDb2xvciBvYmplY3QuCisgICAgICAgIEFsc28gdHdlYWsgdGhlIGxv
Z2ljIGEgYml0IGFuZCBhZGQgZXhwbGljaXQgYXJndW1lbnQgbGlzdCBmb3IgdGhlCisgICAgICAg
IFNpbXBsZUNvbG9yIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6
OnNlcmlhbGl6YXRpb25Gb3JIVE1MIGNvbnN0KTogQWRkZWQuIEZhY3RvcmVkIG91dCBvZgorICAg
ICAgICB0aGUgQ29sb3I6OnNlcmlhbGl6ZWQgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpD
b2xvcjo6c2VyaWFsaXplZCBjb25zdCk6IENoYW5nZWQgdG8gY2FsbCBzZXJpYWxpemF0aW9uRm9y
SFRNTC4KKyAgICAgICAgKFdlYkNvcmU6OmZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhh
VmFsdWUpOiBSZW5hbWVkIHNsaWdodGx5IHNob3J0ZXIuCisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVDb2xvcjo6c2VyaWFsaXphdGlvbkZvckNTUyBjb25zdCk6IEFkZGVkLiBGYWN0b3JlZCBvdXQg
b2YKKyAgICAgICAgdGhlIENvbG9yOjpjc3NUZXh0IGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3I6OmNzc1RleHQgY29uc3QpOiBDaGFuZ2VkIHRvIGNhbGwgc2VyaWFsaXphdGlvbkZv
ckNTUy4KKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMjo6c2VyaWFsaXphdGlvbkZvclJlbmRlclRy
ZWVBc1RleHQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgRmFjdG9yZWQgb3V0IG9mIG5hbWVGb3JS
ZW5kZXJUcmVlQXNUZXh0LgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6Om5hbWVGb3JSZW5kZXJU
cmVlQXNUZXh0IGNvbnN0KTogQ2hhbmdlZCB0byBjYWxsCisgICAgICAgIHNlcmlhbGl6YXRpb25G
b3JSZW5kZXJUcmVlQXNUZXh0LgorICAgICAgICAoV2ViQ29yZTo6Y29sb3JGcm9tUHJlbXVsdGlw
bGllZEFSR0IpOiBVcGRhdGVkIHRvIHVzZSB0aGUgU2ltcGxlQ29sb3IKKyAgICAgICAgbWVtYmVy
IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIHRoZSByZWQvZ3JlZW4vYmx1ZS9hbHBoYUNoYW5uZWwgZnVu
Y3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6YmxlbmQpOiBVc2UgQ29sb3I6OnRyYW5zcGFyZW50
IGZvciBibGVuZGluZyB3aGVyZSB0aGUgb2xkCisgICAgICAgIGNvZGUgdXNlZCAwIGFuZCByZWxp
ZWQgb24gaG93IHRoYXQgaXMgY29udmVydGVkIHRvIGEgQ29sb3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOiBSZXBsYWNlZCB0aGUgUkdCQTMyIHR5cGVkZWYgYW5kIHRo
ZQorICAgICAgICBSR0JBIGNsYXNzIHdpdGggYSBuZXcgY2xhc3MgbmFtZWQgU2ltcGxlQ29sb3Iu
IERlbGV0ZWQgdGhlIGZvdXIKKyAgICAgICAgcmVkL2dyZWVuL2JsdWUvYWxwaGFDaGFubmVsIGZ1
bmN0aW9ucywgdGhlIENvbG9yIGNvbnN0cnVjdG9yIHRoYXQKKyAgICAgICAgdGFrZXMgYW5kIFJH
QkEsIGFuZCB0aGUgQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCBmdW5jdGlvbi4gQ2hhbmdlZAorICAg
ICAgICB0aGUgY29sb3IgY29uc3RhbnRzIHRvIGFsbCBiZSBjb25zdGV4cHIuIE1vdmVkIHRoZSBp
bmxpbmUgZnVuY3Rpb24KKyAgICAgICAgZGVmaW5pdGlvbnMgdW50aWwgYWZ0ZXIgZXZlcnl0aGlu
ZyBpcyBkZWxjYXJlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6
IFVzZSB1aW50MzJfdCBpbnN0ZWFkIG9mIFJHQkEzMi4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QmFja2luZ1N0b3JlOjpjbGVhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNr
aW5nU3RvcmU6OmNsZWFyUmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNr
aW5nU3RvcmU6OmZpbGxSZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tp
bmdTdG9yZTo6cmVwZWF0Rmlyc3RSb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QmFja2luZ1N0b3JlOjpwaXhlbEF0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJhY2tpbmdTdG9yZTo6c2V0UGl4ZWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQmFja2luZ1N0b3JlOjpibGVuZFBpeGVsKTogRGl0dG8uIENvbnZlcnQgdG8gYW5kIGZyb20K
KyAgICAgICAgU2ltcGxlQ29sb3Igc28gd2UgY2FuIHVzZSB2YXJpb3VzIGZ1bmN0aW9ucyB0aGF0
IG9wZXJhdGUgb24gdGhhdCB0eXBlLgorICAgICAgICBVc2UgdGhlIGlzVmlzaWJsZSBhbmQgcmVk
L2dyZWVuL2JsdWUvYWxwaGFDb21wb25lbnQgbWVtYmVyIGZ1bmN0aW9ucy4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjpJbWFnZUJhY2tpbmdTdG9yZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6OnBpeGVsVmFsdWUgY29uc3QpOiBVc2Ug
Q29sb3I6OnRyYW5zcGFyZW50CisgICAgICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgMCBhbmQg
cmVseWluZyBvbiBob3cgdGhhdCBpcyBjb252ZXJ0ZWQgdG8gYSBDb2xvci4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaDogUmVtb3ZlZCBpbmNsdWRlIG9mIEltYWdl
QmFja2luZ1N0b3JlLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOiBVc2UgY29uc3RleHByIFNp
bXBsZUNvbG9yOjp2YWx1ZSBmdW5jdGlvbiB0bworICAgICAgICBzd2l0Y2ggb24gYSBTaW1wbGVD
b2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Om9sZEFxdWFGb2N1c1JpbmdDb2xvcik6IFVzZSBhbiBleHBsaWNpdCBT
aW1wbGVDb2xvciB0byB0dXJuIGEKKyAgICAgICAgaGV4IGludGVnZXIgaW50byBhIENvbG9yIHdp
dGhvdXQgcmVseWluZyBvbiBpbXBsaWNpdCBjb252ZXJzaW9uLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3I6Om9wZXJhdG9yIEQyRDFfQ09MT1JfRiBjb25zdCk6IFVzZSB2YWx1ZSgpIHRvIGdldCB0aGUg
Y29sb3IKKyAgICAgICAgaW50ZWdlciwganVzdCB0byBrZWVwIHRoaXMgd29ya2luZy4gUHJvYmFi
bHkgbmVlZHMgYSBiZXR0ZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgYXQgc29tZSBwb2ludC4K
KworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOiBE
b24ndCB1c2UgbWFrZVJHQiBhbnkgbW9yZSwKKyAgICAgICAgd3JpdGUgdGhlIGV4cHJlc3Npb24g
b3V0IGhlcmUgaW5zdGVhZC4gTW9yZSBlZmZpY2llbnQgYW55d2F5IHNpbmNlIHRoZXNlCisgICAg
ICAgIGFyZSBhbHJlYWR5IHNpbmdsZSBieXRlcy4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVm
YXVsdERldmljZXMpOiAgVXNlIGFuIGV4cGxpY2l0IFNpbXBsZUNvbG9yIHRvIHR1cm4gYQorICAg
ICAgICBoZXggaW50ZWdlciBpbnRvIGEgQ29sb3Igd2l0aG91dCByZWx5aW5nIG9uIGltcGxpY2l0
IGNvbnZlcnNpb24uCisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJh
d0JveGVzKTogRGl0dG8uIEFsc28gdXNlIGEgbW9kZXJuCisgICAgICAgIGZvciBsb29wIGluc3Rl
YWQgb2YgaW5kZXhpbmcuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1v
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRyYWNr
QmFja2dyb3VuZCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjYWxjdWxhdGVCb3JkZXJTdHlsZUNv
bG9yKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvciBjb25zdCk6IERpdHRvLiBBbHNv
IHVzZWQgbmFtZWQgY29sb3JzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpzeXN0ZW1Db2xvciBjb25zdCk6
IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QpOiBBZGRl
ZCBjaGVja3MgYWdhaW5zdAorICAgICAgICBDb2xvcjo6dHJhbnNwYXJlbnQgaW5zdGVhZCBvZiBj
b252ZXJ0aW5nIHRvIGFuIGludGVnZXIgYW5kIGNoZWNraW5nCisgICAgICAgIGFnYWluc3QgMC4g
UmVtb3ZlZCB1bm5lZWRlZCBpc1ZhbGlkIGNoZWNrcywgc2luY2UgaW52YWxpZCBjb2xvcidzIEFS
R0IKKyAgICAgICAgdmFsdWUgaXMgQ29sb3I6OnRyYW5zcGFyZW50LgorCisgICAgICAgICogcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkZWZhdWx0RGV2aWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6ZHJhd0JveGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRo
ZW1lTW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50
VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y2FsY3VsYXRlQm9yZGVyU3R5bGVDb2xv
cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnN5
c3RlbUNvbG9yIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVj
dCk6CisKIDIwMjAtMDEtMjggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIGxvZ2dpbmcgdG8gZGV0ZWN0IGNhdXNlIG9mIHJhcmUgY3Jhc2ggYXQg
UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUxheWVyQm91bmRzIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE4YzBj
YWY1ZTFkYWUwMGY0MjM0ZmNjMzkzN2YwY2RjMDFlZTQ0YTguLjA4MTg0ZTQ3MzRkYjFiZGQ1OGFk
ZDcyMjg2OTE2Y2M4MGE0NGY2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDEt
MjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgUkdC
QTMyIHR5cGVkZWYgd2l0aCBhIGNsYXNzIHRvIGltcHJvdmUgdHlwZSBzYWZldHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjg2MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q29sb3I+Ojpl
bmNvZGUpOiBVc2UgdWludDMyX3QgZXhwbGljaXRseSB0byBjb252ZXJ0CisgICAgICAgIHRoZSBj
b2xvciB2YWx1ZSBpbnRvIGEgU2ltcGxlQ29sb3IuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8Q29sb3I+OjpkZWNvZGUpOiBTYW1lIHRoaW5nLCBvbmx5IHRoZSBvdGhlciBkaXJlY3Rpb24u
CisKIDIwMjAtMDEtMjggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgbWFjQ2F0YWx5c3Q6IFRyaXBsZSBjbGlja2luZyB0byBzZWxlY3QgYSBzZW50ZW5j
ZSByZXN1bHRzIGluIGFuIGVtcHR5IHNlbGVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNTRk
YjcxNmFjODdjYWM0ZDAxMzBkZDhhNzk1NTRkMGQ2NzU2OWU2OS4uZDZmZDRjNWU5OWFhMGNkNjFl
YjhkZTJkNGVlZDQxN2VkM2NiZGUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0zMzYsNyArMzM2
LDYgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9NZWRp
YVF1ZXJ5RXZhbHVhdG9yLmgKICAgICBjc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uaAogICAgIGNz
cy9NZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5oCi0gICAgY3NzL1JHQkNvbG9yLmgKICAgICBjc3Mv
UmVjdC5oCiAgICAgY3NzL1N0eWxlQ29sb3IuaAogICAgIGNzcy9TdHlsZVByb3BlcnRpZXMuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAppbmRleCA2NDFkNmZkNDM1ZTNjM2FlMDdmMGIwMDcyODg1MmFkYjlhM2NiNzVl
Li40NGIwYWRiYWVjMTQ4YjAzYTgyNDI2MjdiYTFlMmQxNjYyZWRmNjE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtNzY2LDcgKzc2Niw2IEBAIGNzcy9NZWRpYVF1ZXJ5TGlzdC5jcHAKIGNzcy9NZWRpYVF1
ZXJ5TWF0Y2hlci5jcHAKIGNzcy9NZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5jcHAKIGNzcy9Qcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCi1jc3MvUkdCQ29sb3IuY3BwCiBjc3MvU1ZH
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAK
IGNzcy9TZWxlY3RvckZpbHRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjYzU4N2NlNTYyNzQ1NzUwYWE1YmQ5NGM5MTAw
ODczYjE3OWQ0ZTJiLi43MGVjNzY0YTQxYjEyMThmZmZiMDczNDI3ZTBiMDM2MDU1OGU5MTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0zODMyLDcgKzM4MzIsNiBAQAogCQlCQzY5MzI3NDBEN0UyOTM5MDBBRTQ0RDEgLyogSlNE
T01XaW5kb3dCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzY5MzI3MjBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM2RDQ0RUQwQzA3
RjJFRDAwNzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2RDQ0RUIwQzA3RjJFRDAwNzJEMkM5IC8qIEpT
SFRNTEVtYmVkRWxlbWVudC5oICovOyB9OwogCQlCQzZENkUyNjA5QUY5NDM1MDBGNTk3NTkgLyog
U2Nyb2xsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM2RDZFMjUwOUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzc0REEzNzEwMTNGM0Y3MDA3
OTg3QUQgLyogUkdCQ29sb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNzREQTM1MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNzcyQjNDMEM0RUE5
MUUwMDgzMjg1RiAvKiBDU1NIZWxwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNzcyQjM2MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NIZWxwZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzc3MkM0
NzBDNEVCMkM2MDA4MzI4NUYgLyogWE1MSHR0cFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzcyQzQ1MEM0RUIyQzYwMDgzMjg1RiAvKiBY
TUxIdHRwUmVxdWVzdC5oICovOyB9OwogCQlCQzc3MkM0RjBDNEVCMzA0MDA4MzI4NUYgLyogTUlN
RVR5cGVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM3NzJDNEQwQzRFQjMwNDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTMxODcsOCAr
MTMxODYsNiBAQAogCQlCQzZENDRFQTBDMDdGMkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxFbWJl
ZEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzZENDRFQjBDMDdG
MkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0hUTUxFbWJlZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkM2RDZFMjUwOUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQkM3NERBMzUxMDEzRjNGNzAwNzk4N0FEIC8qIFJHQkNvbG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJHQkNvbG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUJDNzREQTM2MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSR0JDb2xvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNzcyQjM2MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NI
ZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0hlbHBlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzc3MkM0NDBDNEVCMkM2MDA4MzI4NUYgLyog
WE1MSHR0cFJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFhNTEh0dHBSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3NzJD
NDUwQzRFQjJDNjAwODMyODVGIC8qIFhNTEh0dHBSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjc1NjQsOCArMjc1NjEsNiBAQAogCQkJCUU0QkJFRDBEMTRGNDAyNUQwMDNGMEI5
OCAvKiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCAqLywKIAkJCQk5M0NBNEM5RjA5
REY5M0ZBMDBERjg2NzcgLyogcXVpcmtzLmNzcyAqLywKIAkJCQlCQzQzNjhFNzBDMjI2RTMyMDA1
RUZCNUYgLyogUmVjdC5oICovLAotCQkJCUJDNzREQTM2MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JD
b2xvci5jcHAgKi8sCi0JCQkJQkM3NERBMzUxMDEzRjNGNzAwNzk4N0FEIC8qIFJHQkNvbG9yLmgg
Ki8sCiAJCQkJRTQ0QjRCQjExNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5jcHAg
Ki8sCiAJCQkJRTQ0QjRCQjIxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oICov
LAogCQkJCTQzMkQzRkU3MThBODY1ODQwMEQ3REMwMyAvKiBTZWxlY3RvckNoZWNrZXJUZXN0RnVu
Y3Rpb25zLmggKi8sCkBAIC0zMjA5Myw3ICszMjA4OCw2IEBACiAJCQkJRkQzMTYwQTkxMkIwMjZG
NzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
QUIxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRDMxNjBBRDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiSW5wdXRCdWZmZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCUJDNzREQTM3MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkY1RTEwQTE1NUEwNTAwMEE0MjM0IC8qIFJvb3RJbmxp
bmVCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUM5MEVGODZENDcwMDlEMENBRiAvKiBS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3M0Y5NUZGMTJD
OTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCBkZTUwOGM2MWMzOWE1ZTU2MmRjOWE5
NjRlNWU0Njk3ZWE1Nzk2YjE3Li44NWNmNzc4MjczNTY1OTE2NjdjZWM1NzgyOTdhY2RmNGEwY2E0
YmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTM3LDcg
KzM3LDYgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNp
bmNsdWRlICJQYWlyLmgiCi0jaW5jbHVkZSAiUkdCQ29sb3IuaCIKICNpbmNsdWRlICJSZWN0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KQEAgLTg3NCwyOSArODczLDYgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpzdHJpbmdW
YWx1ZSgpIGNvbnN0CiAgICAgfQogfQogCi1FeGNlcHRpb25PcjxDb3VudGVyJj4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmdldENvdW50ZXJWYWx1ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKHByaW1pdGl2ZVVu
aXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSKQotICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07Ci0gICAgcmV0dXJuICptX3ZhbHVlLmNvdW50
ZXI7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlY3QmPiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZh
bHVlKCkgY29uc3QKLXsKLSAgICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlw
ZTo6Q1NTX1JFQ1QpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJy
b3IgfTsKLSAgICByZXR1cm4gKm1fdmFsdWUucmVjdDsKLX0KLQotRXhjZXB0aW9uT3I8UmVmPFJH
QkNvbG9yPj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFJHQkNvbG9yVmFsdWUoKSBjb25zdAotewot
ICAgIGlmIChwcmltaXRpdmVVbml0VHlwZSgpICE9IENTU1VuaXRUeXBlOjpDU1NfUkdCQ09MT1Ip
Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKLQotICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgcmV0dXJuIGEgbmV3IG9iamVjdCBmb3IgZWFjaCBp
bnZvY2F0aW9uLgotICAgIHJldHVybiBSR0JDb2xvcjo6Y3JlYXRlKG1fdmFsdWUuY29sb3ItPnJn
YigpKTsKLX0KLQogTkVWRVJfSU5MSU5FIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0
TnVtYmVyVmFsdWUoU3RyaW5nVmlldyBzdWZmaXgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1ha2VT
dHJpbmcobV92YWx1ZS5udW0sIHN1ZmZpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5oCmluZGV4IDc2M2Q0MjBhNzFmYzhhMjM0NWNhMDkxOTk3ZmZiZjk0NjY3YzhkOGYuLjQ3
NDZhYzhkMDdmY2QzZTQ2YjY2Yzg4MGU5OWFmMWYyMmUwNTU0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oCkBAIC0xNDIsOSArMTQyLDYgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPGZsb2F0PiBnZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBl
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRTdHJpbmdW
YWx1ZShDU1NVbml0VHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhj
ZXB0aW9uT3I8U3RyaW5nPiBnZXRTdHJpbmdWYWx1ZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQ
T1JUIEV4Y2VwdGlvbk9yPENvdW50ZXImPiBnZXRDb3VudGVyVmFsdWUoKSBjb25zdDsKLSAgICBX
RUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWN0Jj4gZ2V0UmVjdFZhbHVlKCkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPFJHQkNvbG9yPj4gZ2V0UkdCQ29sb3JW
YWx1ZSgpIGNvbnN0OwogCiAgICAgZG91YmxlIGNvbXB1dGVEZWdyZWVzKCkgY29uc3Q7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUHJpbWl0aXZl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZh
bHVlLmNwcAppbmRleCAwNGJmOTcwNGVmNGMzMDNkN2Y0YzExZDlkYTMzYWNkMDg4NGE2ZGU5Li5j
Yzc0ZWZjNzZmZjRjM2MyMGYxMzJiOTZmZTM3ZjEwZTdhYzA1NjUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNyAr
MzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBzdWNoIGFzIFN0eWxlQ291bnRlclZhbHVl
LCBTdHlsZVJlY3RWYWx1ZSwgYW5kIFN0eWxlQ29sb3JWYWx1ZSwgdGhlc2UgbWV0aG9kcyB3aWxs
IGdldAogLy8gbW9yZSBjb21wbGljYXRlZC4KIAotCiB1bnNpZ25lZCBzaG9ydCBEZXByZWNhdGVk
Q1NTT01QcmltaXRpdmVWYWx1ZTo6cHJpbWl0aXZlVHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PihtX3ZhbHVlLT5wcmltaXRpdmVUeXBlKCkpOwpA
QCAtNjQsMjYgKzYzLDI1IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gRGVwcmVjYXRlZENTU09NUHJp
bWl0aXZlVmFsdWU6OmdldFN0cmluZ1ZhbHVlKCkgY29uc3QKIAogRXhjZXB0aW9uT3I8UmVmPERl
cHJlY2F0ZWRDU1NPTUNvdW50ZXI+PiBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6Z2V0
Q291bnRlclZhbHVlKCkgY29uc3QKIHsKLSAgICBFeGNlcHRpb25PcjxDb3VudGVyJj4gY291bnRl
ciA9IG1fdmFsdWUtPmdldENvdW50ZXJWYWx1ZSgpOwotICAgIGlmIChjb3VudGVyLmhhc0V4Y2Vw
dGlvbigpKQorICAgIGF1dG8qIHZhbHVlID0gbV92YWx1ZS0+Y291bnRlclZhbHVlKCk7CisgICAg
aWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJv
ciB9OwotICAgIHJldHVybiBEZXByZWNhdGVkQ1NTT01Db3VudGVyOjpjcmVhdGUoY291bnRlci5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgbV9vd25lci5nZXQoKSk7CisgICAgcmV0dXJuIERlcHJlY2F0
ZWRDU1NPTUNvdW50ZXI6OmNyZWF0ZSgqdmFsdWUsIG1fb3duZXIpOwogfQogICAgIAogRXhjZXB0
aW9uT3I8UmVmPERlcHJlY2F0ZWRDU1NPTVJlY3Q+PiBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVW
YWx1ZTo6Z2V0UmVjdFZhbHVlKCkgY29uc3QKIHsKLSAgICBFeGNlcHRpb25PcjxSZWN0Jj4gcmVj
dCA9IG1fdmFsdWUtPmdldFJlY3RWYWx1ZSgpOwotICAgIGlmIChyZWN0Lmhhc0V4Y2VwdGlvbigp
KQorICAgIGF1dG8qIHZhbHVlID0gbV92YWx1ZS0+cmVjdFZhbHVlKCk7CisgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwotICAg
IHJldHVybiBEZXByZWNhdGVkQ1NTT01SZWN0OjpjcmVhdGUocmVjdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKSwgbV9vd25lci5nZXQoKSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWRDU1NPTVJlY3Q6OmNy
ZWF0ZSgqdmFsdWUsIG1fb3duZXIpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8RGVwcmVjYXRlZENT
U09NUkdCQ29sb3I+PiBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JW
YWx1ZSgpIGNvbnN0CiB7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPFJHQkNvbG9yPj4gY29sb3IgPSBt
X3ZhbHVlLT5nZXRSR0JDb2xvclZhbHVlKCk7Ci0gICAgaWYgKGNvbG9yLmhhc0V4Y2VwdGlvbigp
KQorICAgIGlmICghbV92YWx1ZS0+aXNSR0JDb2xvcigpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07Ci0gICAgcmV0dXJuIERlcHJlY2F0ZWRDU1NPTVJH
QkNvbG9yOjpjcmVhdGUoY29sb3IucmVsZWFzZVJldHVyblZhbHVlKCksIG1fb3duZXIuZ2V0KCkp
OworICAgIHJldHVybiBEZXByZWNhdGVkQ1NTT01SR0JDb2xvcjo6Y3JlYXRlKG1fb3duZXIsIG1f
dmFsdWUtPmNvbG9yKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RGVwcmVjYXRlZENTU09NUkdCQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVk
Q1NTT01SR0JDb2xvci5oCmluZGV4IDQ2NTUwODU2ZTQxNmIwYjQ4MmE2MjliZmFlZjkwMTA5ODdj
ZTNmZDkuLjRhM2VkYzc2ODU1NTNiYTFmOGIzZDhkZTc5NGFhNTU0MTU5YjM3MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OS0yMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSw1
NSArMjEsNDQgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRGVwcmVjYXRlZENTU09NUHJp
bWl0aXZlVmFsdWUuaCIKLSNpbmNsdWRlICJSR0JDb2xvci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRGVwcmVjYXRlZENTU09NUkdCQ29sb3IgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxEZXBy
ZWNhdGVkQ1NTT01SR0JDb2xvcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RGVwcmVjYXRl
ZENTU09NUkdCQ29sb3I+IGNyZWF0ZShjb25zdCBSR0JDb2xvciYgY29sb3IsIENTU1N0eWxlRGVj
bGFyYXRpb24mIG93bmVyKQorICAgIHN0YXRpYyBSZWY8RGVwcmVjYXRlZENTU09NUkdCQ29sb3I+
IGNyZWF0ZShDU1NTdHlsZURlY2xhcmF0aW9uJiBvd25lciwgY29uc3QgQ29sb3ImIGNvbG9yKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVwcmVjYXRlZENTU09NUkdCQ29s
b3IoY29sb3IsIG93bmVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlcHJlY2F0
ZWRDU1NPTVJHQkNvbG9yKG93bmVyLCBjb2xvcikpOwogICAgIH0KIAotICAgIERlcHJlY2F0ZWRD
U1NPTVByaW1pdGl2ZVZhbHVlKiByZWQoKSB7IHJldHVybiBtX3JlZC5nZXQoKTsgfQotICAgIERl
cHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlKiBncmVlbigpIHsgcmV0dXJuIG1fZ3JlZW4uZ2V0
KCk7IH0KLSAgICBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSogYmx1ZSgpIHsgcmV0dXJu
IG1fYmx1ZS5nZXQoKTsgfQotICAgIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlKiBhbHBo
YSgpIHsgcmV0dXJuIG1fYWxwaGEuZ2V0KCk7IH0KLSAgICAKLSAgICBDb2xvciBjb2xvcigpIGNv
bnN0IHsgcmV0dXJuIENvbG9yKG1fcmdiQ29sb3IpOyB9CisgICAgRGVwcmVjYXRlZENTU09NUHJp
bWl0aXZlVmFsdWUmIHJlZCgpIHsgcmV0dXJuIG1fcmVkOyB9CisgICAgRGVwcmVjYXRlZENTU09N
UHJpbWl0aXZlVmFsdWUmIGdyZWVuKCkgeyByZXR1cm4gbV9ncmVlbjsgfQorICAgIERlcHJlY2F0
ZWRDU1NPTVByaW1pdGl2ZVZhbHVlJiBibHVlKCkgeyByZXR1cm4gbV9ibHVlOyB9CisgICAgRGVw
cmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUmIGFscGhhKCkgeyByZXR1cm4gbV9hbHBoYTsgfQor
CisgICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAKIHByaXZhdGU6
Ci0gICAgRGVwcmVjYXRlZENTU09NUkdCQ29sb3IoY29uc3QgUkdCQ29sb3ImIGNvbG9yLCBDU1NT
dHlsZURlY2xhcmF0aW9uJiBvd25lcikKLSAgICAgICAgOiBtX3JnYkNvbG9yKGNvbG9yLnJnYkNv
bG9yKCkpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTnVtYmVyVHlwZT4gc3RhdGljIFJlZjxEZXBy
ZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZT4gY3JlYXRlV3JhcHBlcihDU1NTdHlsZURlY2xhcmF0
aW9uJiBvd25lciwgTnVtYmVyVHlwZSBudW1iZXIpCiAgICAgewotICAgICAgICAvLyBSZWQKLSAg
ICAgICAgdW5zaWduZWQgdmFsdWUgPSAobV9yZ2JDb2xvciA+PiAxNikgJiAweEZGOwotICAgICAg
ICBhdXRvIHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1VuaXRU
eXBlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAgbV9yZWQgPSByZXN1bHQtPmNyZWF0ZURlcHJlY2F0
ZWRDU1NPTVByaW1pdGl2ZVdyYXBwZXIob3duZXIpOwotICAgICAgICAKLSAgICAgICAgLy8gR3Jl
ZW4KLSAgICAgICAgdmFsdWUgPSAobV9yZ2JDb2xvciA+PiA4KSAmIDB4RkY7Ci0gICAgICAgIHJl
c3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1VuaXRUeXBlOjpDU1Nf
TlVNQkVSKTsKLSAgICAgICAgbV9ncmVlbiA9IHJlc3VsdC0+Y3JlYXRlRGVwcmVjYXRlZENTU09N
UHJpbWl0aXZlV3JhcHBlcihvd25lcik7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKG51bWJlciwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpLT5jcmVhdGVEZXByZWNh
dGVkQ1NTT01QcmltaXRpdmVXcmFwcGVyKG93bmVyKTsKKyAgICB9CiAKLSAgICAgICAgLy8gQmx1
ZQotICAgICAgICB2YWx1ZSA9IG1fcmdiQ29sb3IgJiAweEZGOwotICAgICAgICByZXN1bHQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7
Ci0gICAgICAgIG1fYmx1ZSA9IHJlc3VsdC0+Y3JlYXRlRGVwcmVjYXRlZENTU09NUHJpbWl0aXZl
V3JhcHBlcihvd25lcik7Ci0gICAgICAgIAotICAgICAgICAvLyBBbHBoYQotICAgICAgICBmbG9h
dCBhbHBoYVZhbHVlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KChtX3JnYkNvbG9yID4+IDI0KSAmIDB4
RkYpIC8gMHhGRjsKLSAgICAgICAgcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShh
bHBoYVZhbHVlLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgIG1fYWxwaGEgPSBy
ZXN1bHQtPmNyZWF0ZURlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVdyYXBwZXIob3duZXIpOworICAg
IERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yKENTU1N0eWxlRGVjbGFyYXRpb24mIG93bmVyLCBjb25z
dCBDb2xvciYgY29sb3IpCisgICAgICAgIDogbV9jb2xvcihjb2xvcikKKyAgICAgICAgLCBtX3Jl
ZChjcmVhdGVXcmFwcGVyKG93bmVyLCBjb2xvci5yZWQoKSkpCisgICAgICAgICwgbV9ncmVlbihj
cmVhdGVXcmFwcGVyKG93bmVyLCBjb2xvci5ncmVlbigpKSkKKyAgICAgICAgLCBtX2JsdWUoY3Jl
YXRlV3JhcHBlcihvd25lciwgY29sb3IuYmx1ZSgpKSkKKyAgICAgICAgLCBtX2FscGhhKGNyZWF0
ZVdyYXBwZXIob3duZXIsIGNvbG9yLmFscGhhQXNGbG9hdCgpKSkKKyAgICB7CiAgICAgfQotICAg
IAotICAgIFJHQkEzMiBtX3JnYkNvbG9yOwotICAgIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01Qcmlt
aXRpdmVWYWx1ZT4gbV9yZWQ7Ci0gICAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZh
bHVlPiBtX2dyZWVuOwotICAgIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZT4g
bV9ibHVlOwotICAgIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZT4gbV9hbHBo
YTsKKworICAgIENvbG9yIG1fY29sb3I7CisgICAgUmVmPERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2
ZVZhbHVlPiBtX3JlZDsKKyAgICBSZWY8RGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU+IG1f
Z3JlZW47CisgICAgUmVmPERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlPiBtX2JsdWU7Cisg
ICAgUmVmPERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlPiBtX2FscGhhOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNv
bG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SR0JDb2xvci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGExZWU0MDNmMGNhZjY3MTFiMTE2MTFhYmYxMGRlMzI4NDk0NDRmZWMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1JHQkNvbG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSR0JDb2xvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVJlZjxSR0JDb2xvcj4gUkdCQ29sb3I6OmNyZWF0ZSh1bnNpZ25lZCByZ2JDb2xvcikK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSR0JDb2xvcihyZ2JDb2xvcikpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9S
R0JDb2xvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAxNGM0MWUwMzVkZWM2ZWQ5YTViYTBlNDU2Njg5MDJkN2FkYzE3YzIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1JHQkNvbG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEdvb2dsZSwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDU1NQcmltaXRpdmVW
YWx1ZTsKLQotY2xhc3MgUkdCQ29sb3IgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxSR0JDb2xv
cj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8UkdCQ29sb3I+IGNyZWF0ZSh1bnNpZ25lZCBy
Z2JDb2xvcik7Ci0KLSAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKG1fcmdi
Q29sb3IpOyB9Ci0KLSAgICBSR0JBMzIgcmdiQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JnYkNv
bG9yOyB9Ci0KLXByaXZhdGU6Ci0gICAgUkdCQ29sb3IodW5zaWduZWQgcmdiQ29sb3IpCi0gICAg
ICAgIDogbV9yZ2JDb2xvcihyZ2JDb2xvcikKLSAgICB7Ci0gICAgfQotCi0gICAgUkdCQTMyIG1f
cmdiQ29sb3I7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVD
b2xvci5jcHAKaW5kZXggMjliY2ExOWI5MjQ4NDA0MWNmMjU5MGZmNmVkNmE0NGNkNDEwYjgxZC4u
MWJjMjBmYjcyOTRhNmJiODAxNjY0NWZkZWY1ZTkxZGU1Y2VjNjQ5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZUNvbG9yLmNwcApAQCAtNDEsNyArNDEsNyBAQCBDb2xvciBTdHlsZUNvbG9yOjpjb2xvckZy
b21LZXl3b3JkKENTU1ZhbHVlSUQga2V5d29yZCwgT3B0aW9uU2V0PE9wdGlvbnM+IG9wdGlvbgog
ewogICAgIGlmIChjb25zdCBjaGFyKiB2YWx1ZU5hbWUgPSBnZXRWYWx1ZU5hbWUoa2V5d29yZCkp
IHsKICAgICAgICAgaWYgKGNvbnN0IE5hbWVkQ29sb3IqIG5hbWVkQ29sb3IgPSBmaW5kQ29sb3Io
dmFsdWVOYW1lLCBzdHJsZW4odmFsdWVOYW1lKSkpCi0gICAgICAgICAgICByZXR1cm4gQ29sb3Io
bmFtZWRDb2xvci0+QVJHQlZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7
IG5hbWVkQ29sb3ItPkFSR0JWYWx1ZSB9OwogICAgIH0KIAogICAgIHJldHVybiBSZW5kZXJUaGVt
ZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29sb3Ioa2V5d29yZCwgb3B0aW9ucyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggYjMyYzEzM2Q1MWU1
ZDlhMWRmNTlmMzJiOGMxYjMyMGRlZjdiMWMxYS4uYzM5NTkyNGJkODVmODRhMGFlMmFmMzM3NDNl
ZDlmOWY3YzZhM2IxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9I
VE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbQpAQCAtNTgsNyArNTgsNiBAQAogI2ltcG9ydCAiSFRNTFRhYmxlQ2VsbEVsZW1l
bnQuaCIKICNpbXBvcnQgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbXBvcnQgIkxvYWRlck5T
VVJMRXh0cmFzLmgiCi0jaW1wb3J0ICJSR0JDb2xvci5oIgogI2ltcG9ydCAiUmVuZGVySW1hZ2Uu
aCIKICNpbXBvcnQgIlJlbmRlclRleHQuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVydGllcy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IGIw
NDU1MjZlNjIzMTc3YmFkZjI4ZGJkM2IyMTc4ZThhNmY1ZGE2ODAuLjIzZGIwZmIzZWFlYzI5OTRh
N2ViMjk0MTBjZDY4OTdmMTk1NDM1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgdm9pZCBkcmF3
T3V0bGluZWRRdWFkV2l0aENsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFF1YWQmCiAgICAgY29udGV4dC5maWxsUGF0aChxdWFkVG9QYXRoKHF1YWQsIGJvdW5kcykpOwog
CiAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3I6OkRl
c3RpbmF0aW9uT3V0KTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6Y3JlYXRlVW5j
aGVja2VkKDI1NSwgMCwgMCkpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwg
MCwgMCkpOwogICAgIGNvbnRleHQuZmlsbFBhdGgocXVhZFRvUGF0aChjbGlwUXVhZCwgYm91bmRz
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZU92ZXJsYXlDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZU92ZXJsYXlDb2NvYS5tbQppbmRleCA1NWI0MDQzYTYwYzA5Zjk1MzEwYmVhYTA4NzE1ZTZj
OWE3N2IxMDMyLi41ZWI2OGFmMmMxNDkyN2JiMDE1MGI1NjJhYjk3OWE2OTIxYmIwM2Q2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3Zlcmxh
eUNvY29hLm1tCkBAIC0xMjgsMTMgKzEyOCwxMyBAQCBzdGF0aWMgQ0dDb2xvclJlZiBjcmVhdGVD
b2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQogc3RydWN0IEhpc3Rvcmlj
TWVtb3J5Q2F0ZWdvcnlJbmZvIHsKICAgICBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbygpIHsg
fSAvLyBOZWVkZWQgZm9yIHN0ZDo6YXJyYXkuCiAKLSAgICBIaXN0b3JpY01lbW9yeUNhdGVnb3J5
SW5mbyh1bnNpZ25lZCBjYXRlZ29yeSwgUkdCQTMyIHJnYmEsIFN0cmluZyBuYW1lLCBib29sIHN1
YmNhdGVnb3J5ID0gZmFsc2UpCisgICAgSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8odW5zaWdu
ZWQgY2F0ZWdvcnksIHVuc2lnbmVkIHJnYmEsIFN0cmluZyBuYW1lLCBib29sIHN1YmNhdGVnb3J5
ID0gZmFsc2UpCiAgICAgICAgIDogbmFtZShXVEZNb3ZlKG5hbWUpKQogICAgICAgICAsIGlzU3Vi
Y2F0ZWdvcnkoc3ViY2F0ZWdvcnkpCiAgICAgICAgICwgdHlwZShjYXRlZ29yeSkKICAgICB7CiAg
ICAgICAgIGZsb2F0IHIsIGcsIGIsIGE7Ci0gICAgICAgIENvbG9yKHJnYmEpLmdldFJHQkEociwg
ZywgYiwgYSk7CisgICAgICAgIENvbG9yIHsgU2ltcGxlQ29sb3IgeyByZ2JhIH0gfS5nZXRSR0JB
KHIsIGcsIGIsIGEpOwogICAgICAgICBjb2xvciA9IGFkb3B0Q0YoY3JlYXRlQ29sb3IociwgZywg
YiwgYSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3Iu
Y3BwCmluZGV4IDE2NjA3NjRhNDM5YjlhYTE4ZTdmNDEzZmJkNzlmMDVlODcwYTkyZTQuLmI1YTJh
MjRlZGEwYWNhYjc0NTZmMGRhMjY4NzMzZGZkZWJhN2RjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTcg
KzM3LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIUNPTVBJTEVSKE1TVkMpCi1j
b25zdCBSR0JBMzIgQ29sb3I6OmJsYWNrOwotY29uc3QgUkdCQTMyIENvbG9yOjp3aGl0ZTsKLWNv
bnN0IFJHQkEzMiBDb2xvcjo6ZGFya0dyYXk7Ci1jb25zdCBSR0JBMzIgQ29sb3I6OmdyYXk7Ci1j
b25zdCBSR0JBMzIgQ29sb3I6OmxpZ2h0R3JheTsKLWNvbnN0IFJHQkEzMiBDb2xvcjo6dHJhbnNw
YXJlbnQ7Ci0jZW5kaWYKLQotc3RhdGljIGNvbnN0IFJHQkEzMiBsaWdodGVuZWRCbGFjayA9IDB4
RkY1NDU0NTQ7Ci1zdGF0aWMgY29uc3QgUkdCQTMyIGRhcmtlbmVkV2hpdGUgPSAweEZGQUJBQkFC
Oworc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBsaWdodGVuZWRCbGFjayB7IDB4RkY1NDU0
NTQgfTsKK3N0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgZGFya2VuZWRXaGl0ZSB7IDB4RkZB
QkFCQUIgfTsKIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBwcmVtdWx0aXBsaWVkQ2hhbm5lbCh1
bnNpZ25lZCBjLCB1bnNpZ25lZCBhLCBib29sIGNlaWxpbmcgPSB0cnVlKQogewpAQCAtNjEsMTIg
KzUyLDEyIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgdW5wcmVtdWx0aXBsaWVkQ2hhbm5lbCh1
bnNpZ25lZCBjLCB1bnNpZ25lZCBhKQogCiBSR0JBMzIgbWFrZVJHQihpbnQgciwgaW50IGcsIGlu
dCBiKQogewotICAgIHJldHVybiAweEZGMDAwMDAwIHwgc3RkOjptYXgoMCwgc3RkOjptaW4ociwg
MjU1KSkgPDwgMTYgfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihnLCAyNTUpKSA8PCA4IHwgc3RkOjpt
YXgoMCwgc3RkOjptaW4oYiwgMjU1KSk7CisgICAgcmV0dXJuIG1ha2VSR0JBKHIsIGcsIGIsIDB4
RkYpOwogfQogCiBSR0JBMzIgbWFrZVJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGEsIDI1NSkpIDw8IDI0IHwgc3RkOjpt
YXgoMCwgc3RkOjptaW4ociwgMjU1KSkgPDwgMTYgfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihnLCAy
NTUpKSA8PCA4IHwgc3RkOjptYXgoMCwgc3RkOjptaW4oYiwgMjU1KSk7CisgICAgcmV0dXJuIHsg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGEsIDB4RkYpKSA8PCAy
NCB8IHN0ZDo6bWF4KDAsIHN0ZDo6bWluKHIsIDB4RkYpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0
ZDo6bWluKGcsIDB4RkYpKSA8PCA4IHwgc3RkOjptYXgoMCwgc3RkOjptaW4oYiwgMHhGRikpKSB9
OwogfQogCiBSR0JBMzIgbWFrZVByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgZywgaW50IGIs
IGludCBhLCBib29sIGNlaWxpbmcpCkBAIC04NywxNCArNzgsMTIgQEAgc3RhdGljIGludCBjb2xv
ckZsb2F0VG9SR0JBQnl0ZShmbG9hdCBmKQogCiBSR0JBMzIgbWFrZVJHQkEzMkZyb21GbG9hdHMo
ZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsKLSAgICByZXR1cm4gY29sb3JG
bG9hdFRvUkdCQUJ5dGUoYSkgPDwgMjQgfCBjb2xvckZsb2F0VG9SR0JBQnl0ZShyKSA8PCAxNiB8
IGNvbG9yRmxvYXRUb1JHQkFCeXRlKGcpIDw8IDggfCBjb2xvckZsb2F0VG9SR0JBQnl0ZShiKTsK
KyAgICByZXR1cm4gbWFrZVJHQkEoY29sb3JGbG9hdFRvUkdCQUJ5dGUociksIGNvbG9yRmxvYXRU
b1JHQkFCeXRlKGcpLCBjb2xvckZsb2F0VG9SR0JBQnl0ZShiKSwgY29sb3JGbG9hdFRvUkdCQUJ5
dGUoYSkpOwogfQogCiBSR0JBMzIgY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShSR0JBMzIgY29sb3Is
IGZsb2F0IG92ZXJyaWRlQWxwaGEpCiB7Ci0gICAgUkdCQTMyIHJnYk9ubHkgPSBjb2xvciAmIDB4
MDBGRkZGRkY7Ci0gICAgUkdCQTMyIHJnYmEgPSByZ2JPbmx5IHwgY29sb3JGbG9hdFRvUkdCQUJ5
dGUob3ZlcnJpZGVBbHBoYSkgPDwgMjQ7Ci0gICAgcmV0dXJuIHJnYmE7CisgICAgcmV0dXJuIHsg
KGNvbG9yLnZhbHVlKCkgJiAweDAwRkZGRkZGKSB8IGNvbG9yRmxvYXRUb1JHQkFCeXRlKG92ZXJy
aWRlQWxwaGEpIDw8IDI0IH07CiB9CiAKIFJHQkEzMiBtYWtlUkdCQUZyb21IU0xBKGZsb2F0IGh1
ZSwgZmxvYXQgc2F0dXJhdGlvbiwgZmxvYXQgbGlnaHRuZXNzLCBmbG9hdCBhbHBoYSkKQEAgLTEz
MSwyOCArMTIwLDI4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUhleENvbG9ySW50ZXJuYWwo
Y29uc3QgQ2hhcmFjdGVyVHlwZSogbmFtZSwgdW5zaWduZWQgbGVuCiAgICAgICAgIHZhbHVlIHw9
IHRvQVNDSUlIZXhWYWx1ZShuYW1lW2ldKTsKICAgICB9CiAgICAgaWYgKGxlbmd0aCA9PSA2KSB7
Ci0gICAgICAgIHJnYiA9IDB4RkYwMDAwMDAgfCB2YWx1ZTsKKyAgICAgICAgcmdiID0geyAweEZG
MDAwMDAwIHwgdmFsdWUgfTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlmIChs
ZW5ndGggPT0gOCkgewogICAgICAgICAvLyBXZSBwYXJzZWQgdGhlIHZhbHVlcyBpbnRvIFJHQkEg
b3JkZXIsIGJ1dCB0aGUgUkdCQTMyIHR5cGUKICAgICAgICAgLy8gZXhwZWN0cyB0aGVtIHRvIGJl
IGluIEFSR0Igb3JkZXIsIHNvIHdlIHJpZ2h0IHJvdGF0ZSBlaWdodCBiaXRzLgotICAgICAgICBy
Z2IgPSB2YWx1ZSA8PCAyNCB8IHZhbHVlID4+IDg7CisgICAgICAgIHJnYiA9IHsgdmFsdWUgPDwg
MjQgfCB2YWx1ZSA+PiA4IH07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAo
bGVuZ3RoID09IDQpIHsKICAgICAgICAgLy8gI2FiY2QgY29udmVydHMgdG8gZGRhYWJiY2MgaW4g
UkdCQTMyLgotICAgICAgICByZ2IgPSAodmFsdWUgJiAweEYpIDw8IDI4IHwgKHZhbHVlICYgMHhG
KSA8PCAyNAorICAgICAgICByZ2IgPSB7ICh2YWx1ZSAmIDB4RikgPDwgMjggfCAodmFsdWUgJiAw
eEYpIDw8IDI0CiAgICAgICAgICAgICB8ICh2YWx1ZSAmIDB4RjAwMCkgPDwgOCB8ICh2YWx1ZSAm
IDB4RjAwMCkgPDwgNAogICAgICAgICAgICAgfCAodmFsdWUgJiAweEYwMCkgPDwgNCB8ICh2YWx1
ZSAmIDB4RjAwKQotICAgICAgICAgICAgfCAodmFsdWUgJiAweEYwKSB8ICh2YWx1ZSAmIDB4RjAp
ID4+IDQ7CisgICAgICAgICAgICB8ICh2YWx1ZSAmIDB4RjApIHwgKHZhbHVlICYgMHhGMCkgPj4g
NCB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgLy8gI2FiYyBjb252ZXJ0cyB0
byAjYWFiYmNjCi0gICAgcmdiID0gMHhGRjAwMDAwMAorICAgIHJnYiA9IHsgMHhGRjAwMDAwMAog
ICAgICAgICB8ICh2YWx1ZSAmIDB4RjAwKSA8PCAxMiB8ICh2YWx1ZSAmIDB4RjAwKSA8PCA4CiAg
ICAgICAgIHwgKHZhbHVlICYgMHhGMCkgPDwgOCB8ICh2YWx1ZSAmIDB4RjApIDw8IDQKLSAgICAg
ICAgfCAodmFsdWUgJiAweEYpIDw8IDQgfCAodmFsdWUgJiAweEYpOworICAgICAgICB8ICh2YWx1
ZSAmIDB4RikgPDwgNCB8ICh2YWx1ZSAmIDB4RikgfTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMTY5LDcgKzE1OCw2IEBAIGJvb2wgQ29sb3I6OnBhcnNlSGV4Q29sb3IoY29uc3QgVUNoYXIq
IG5hbWUsIHVuc2lnbmVkIGxlbmd0aCwgUkdCQTMyJiByZ2IpCiBib29sIENvbG9yOjpwYXJzZUhl
eENvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSwgUkdCQTMyJiByZ2IpCiB7CiAgICAgdW5zaWduZWQg
bGVuZ3RoID0gbmFtZS5sZW5ndGgoKTsKLSAgICAKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmIChuYW1lLmlzOEJpdCgpKQpAQCAtMjM2LDI2ICsyMjQsMTgg
QEAgQ29sb3I6OkNvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgIHNldFJHQihj
b2xvcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGF1dG8qIGZvdW5kQ29sb3IgPSBmaW5k
TmFtZWRDb2xvcihuYW1lKSkKLSAgICAgICAgICAgIHNldFJHQihmb3VuZENvbG9yLT5BUkdCVmFs
dWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NvbG9yRGF0YS5yZ2JhQW5kRmxhZ3Mg
PSBpbnZhbGlkUkdCQUNvbG9yOworICAgICAgICAgICAgc2V0UkdCKHsgZm91bmRDb2xvci0+QVJH
QlZhbHVlIH0pOwogICAgIH0KIH0KIAogQ29sb3I6OkNvbG9yKGNvbnN0IGNoYXIqIG5hbWUpCiB7
Ci0gICAgUkdCQTMyIGNvbG9yOwotICAgIGJvb2wgdmFsaWQ7Ci0gICAgaWYgKG5hbWVbMF0gPT0g
JyMnKQotICAgICAgICB2YWxpZCA9IHBhcnNlSGV4Q29sb3IoKFN0cmluZykmbmFtZVsxXSwgY29s
b3IpOwotICAgIGVsc2UgewotICAgICAgICBjb25zdCBOYW1lZENvbG9yKiBmb3VuZENvbG9yID0g
ZmluZENvbG9yKG5hbWUsIHN0cmxlbihuYW1lKSk7Ci0gICAgICAgIGNvbG9yID0gZm91bmRDb2xv
ciA/IGZvdW5kQ29sb3ItPkFSR0JWYWx1ZSA6IDA7Ci0gICAgICAgIHZhbGlkID0gZm91bmRDb2xv
cjsKLSAgICB9Ci0KLSAgICBpZiAodmFsaWQpCi0gICAgICAgIHNldFJHQihjb2xvcik7CisgICAg
aWYgKG5hbWVbMF0gPT0gJyMnKSB7CisgICAgICAgIFNpbXBsZUNvbG9yIGNvbG9yOworICAgICAg
ICBpZiAocGFyc2VIZXhDb2xvcihyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oJm5hbWVb
MV0pLCBzdGQ6OnN0cmxlbigmbmFtZVsxXSksIGNvbG9yKSkKKyAgICAgICAgICAgIHNldFJHQihj
b2xvcik7CisgICAgfSBlbHNlIGlmIChhdXRvKiBmb3VuZENvbG9yID0gZmluZENvbG9yKG5hbWUs
IHN0cmxlbihuYW1lKSkpCisgICAgICAgIHNldFJHQih7IGZvdW5kQ29sb3ItPkFSR0JWYWx1ZSB9
KTsKIH0KIAogQ29sb3I6OkNvbG9yKGNvbnN0IENvbG9yJiBvdGhlcikKQEAgLTMwOSwxNSArMjg5
LDE4IEBAIENvbG9yJiBDb2xvcjo6b3BlcmF0b3I9KENvbG9yJiYgb3RoZXIpCiAgICAgcmV0dXJu
ICp0aGlzOwogfQogCitTdHJpbmcgU2ltcGxlQ29sb3I6OnNlcmlhbGl6YXRpb25Gb3JIVE1MKCkg
Y29uc3QKK3sKKyAgICBpZiAoaXNPcGFxdWUoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
JyMnLCBoZXgocmVkQ29tcG9uZW50KCksIDIsIExvd2VyY2FzZSksIGhleChncmVlbkNvbXBvbmVu
dCgpLCAyLCBMb3dlcmNhc2UpLCBoZXgoYmx1ZUNvbXBvbmVudCgpLCAyLCBMb3dlcmNhc2UpKTsK
KyAgICByZXR1cm4gc2VyaWFsaXphdGlvbkZvckNTUygpOworfQorCiBTdHJpbmcgQ29sb3I6OnNl
cmlhbGl6ZWQoKSBjb25zdAogewogICAgIGlmIChpc0V4dGVuZGVkKCkpCiAgICAgICAgIHJldHVy
biBhc0V4dGVuZGVkKCkuY3NzVGV4dCgpOwotCi0gICAgaWYgKGlzT3BhcXVlKCkpCi0gICAgICAg
IHJldHVybiBtYWtlU3RyaW5nKCcjJywgaGV4KHJlZCgpLCAyLCBMb3dlcmNhc2UpLCBoZXgoZ3Jl
ZW4oKSwgMiwgTG93ZXJjYXNlKSwgaGV4KGJsdWUoKSwgMiwgTG93ZXJjYXNlKSk7Ci0KLSAgICBy
ZXR1cm4gY3NzVGV4dCgpOworICAgIHJldHVybiByZ2IoKS5zZXJpYWxpemF0aW9uRm9ySFRNTCgp
OwogfQogCiBzdGF0aWMgY2hhciBkZWNpbWFsRGlnaXQodW5zaWduZWQgbnVtYmVyKQpAQCAtMzI2
LDcgKzMwOSw3IEBAIHN0YXRpYyBjaGFyIGRlY2ltYWxEaWdpdCh1bnNpZ25lZCBudW1iZXIpCiAg
ICAgcmV0dXJuICcwJyArIG51bWJlcjsKIH0KIAotc3RhdGljIHN0ZDo6YXJyYXk8Y2hhciwgND4g
c2VyaWFsaXplZEZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhhVmFsdWUodWludDhfdCBh
bHBoYSkKK3N0YXRpYyBzdGQ6OmFycmF5PGNoYXIsIDQ+IGZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rp
b25hbEFscGhhVmFsdWUodWludDhfdCBhbHBoYSkKIHsKICAgICBBU1NFUlQoYWxwaGEgPiAwKTsK
ICAgICBBU1NFUlQoYWxwaGEgPCAweEZGKTsKQEAgLTMzNywyNyArMzIwLDM2IEBAIHN0YXRpYyBz
dGQ6OmFycmF5PGNoYXIsIDQ+IHNlcmlhbGl6ZWRGcmFjdGlvbkRpZ2l0c0ZvckZyYWN0aW9uYWxB
bHBoYVZhbHVlKHVpbnQ4CiAgICAgcmV0dXJuIHsgeyBkZWNpbWFsRGlnaXQoKGFscGhhICogMTAg
KyAweDdGKSAvIDB4RkYpLCAnXDAnLCAnXDAnLCAnXDAnIH0gfTsKIH0KIAotU3RyaW5nIENvbG9y
Ojpjc3NUZXh0KCkgY29uc3QKK1N0cmluZyBTaW1wbGVDb2xvcjo6c2VyaWFsaXphdGlvbkZvckNT
UygpIGNvbnN0CiB7Ci0gICAgaWYgKGlzRXh0ZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuIGFzRXh0
ZW5kZWQoKS5jc3NUZXh0KCk7Ci0gICAgdWludDhfdCBhbHBoYSA9IHRoaXMtPmFscGhhKCk7Ci0g
ICAgc3dpdGNoIChhbHBoYSkgeworICAgIHN3aXRjaCAoYWxwaGFDb21wb25lbnQoKSkgewogICAg
IGNhc2UgMDoKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJnYmEoIiwgcmVkKCksICIsICIs
IGdyZWVuKCksICIsICIsIGJsdWUoKSwgIiwgMCkiKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoInJnYmEoIiwgcmVkQ29tcG9uZW50KCksICIsICIsIGdyZWVuQ29tcG9uZW50KCksICIsICIs
IGJsdWVDb21wb25lbnQoKSwgIiwgMCkiKTsKICAgICBjYXNlIDB4RkY6Ci0gICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKCJyZ2IoIiwgcmVkKCksICIsICIsIGdyZWVuKCksICIsICIsIGJsdWUoKSwg
JyknKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJnYigiLCByZWRDb21wb25lbnQoKSwg
IiwgIiwgZ3JlZW5Db21wb25lbnQoKSwgIiwgIiwgYmx1ZUNvbXBvbmVudCgpLCAnKScpOwogICAg
IGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJyZ2JhKCIsIHJlZCgpLCAiLCAi
LCBncmVlbigpLCAiLCAiLCBibHVlKCksICIsIDAuIiwgc2VyaWFsaXplZEZyYWN0aW9uRGlnaXRz
Rm9yRnJhY3Rpb25hbEFscGhhVmFsdWUoYWxwaGEpLmRhdGEoKSwgJyknKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcoInJnYmEoIiwgcmVkQ29tcG9uZW50KCksICIsICIsIGdyZWVuQ29tcG9u
ZW50KCksICIsICIsIGJsdWVDb21wb25lbnQoKSwgIiwgMC4iLCBmcmFjdGlvbkRpZ2l0c0ZvckZy
YWN0aW9uYWxBbHBoYVZhbHVlKGFscGhhQ29tcG9uZW50KCkpLmRhdGEoKSwgJyknKTsKICAgICB9
CiB9CiAKK1N0cmluZyBDb2xvcjo6Y3NzVGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKGlzRXh0ZW5k
ZWQoKSkKKyAgICAgICAgcmV0dXJuIGFzRXh0ZW5kZWQoKS5jc3NUZXh0KCk7CisgICAgcmV0dXJu
IHJnYigpLnNlcmlhbGl6YXRpb25Gb3JDU1MoKTsKK30KKworU3RyaW5nIFJHQkEzMjo6c2VyaWFs
aXphdGlvbkZvclJlbmRlclRyZWVBc1RleHQoKSBjb25zdAoreworICAgIGlmIChhbHBoYUNvbXBv
bmVudCgpIDwgMHhGRikKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJyMnLCBoZXgocmVkQ29t
cG9uZW50KCksIDIpLCBoZXgoZ3JlZW5Db21wb25lbnQoKSwgMiksIGhleChibHVlQ29tcG9uZW50
KCksIDIpLCBoZXgoYWxwaGFDb21wb25lbnQoKSwgMikpOworICAgIHJldHVybiBtYWtlU3RyaW5n
KCcjJywgaGV4KHJlZENvbXBvbmVudCgpLCAyKSwgaGV4KGdyZWVuQ29tcG9uZW50KCksIDIpLCBo
ZXgoYmx1ZUNvbXBvbmVudCgpLCAyKSk7Cit9CisKIFN0cmluZyBDb2xvcjo6bmFtZUZvclJlbmRl
clRyZWVBc1RleHQoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBIYW5kbGUgRXh0ZW5kZWRDb2xv
cnMuCi0gICAgaWYgKGFscGhhKCkgPCAweEZGKQotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygn
IycsIGhleChyZWQoKSwgMiksIGhleChncmVlbigpLCAyKSwgaGV4KGJsdWUoKSwgMiksIGhleChh
bHBoYSgpLCAyKSk7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoJyMnLCBoZXgocmVkKCksIDIpLCBo
ZXgoZ3JlZW4oKSwgMiksIGhleChibHVlKCksIDIpKTsKKyAgICAvLyBGSVhNRTogSGFuZGxlIGV4
dGVuZGVkIGNvbG9ycy4KKyAgICByZXR1cm4gcmdiKCkuc2VyaWFsaXphdGlvbkZvclJlbmRlclRy
ZWVBc1RleHQoKTsKIH0KIAogQ29sb3IgQ29sb3I6OmxpZ2h0KCkgY29uc3QKQEAgLTU3NSwxMCAr
NTY3LDkgQEAgdm9pZCBDb2xvcjo6Z2V0SFNWKGRvdWJsZSYgaHVlLCBkb3VibGUmIHNhdHVyYXRp
b24sIGRvdWJsZSYgdmFsdWUpIGNvbnN0CiAKIENvbG9yIGNvbG9yRnJvbVByZW11bHRpcGxpZWRB
UkdCKFJHQkEzMiBwaXhlbENvbG9yKQogewotICAgIGludCBhbHBoYSA9IGFscGhhQ2hhbm5lbChw
aXhlbENvbG9yKTsKLSAgICBpZiAoYWxwaGEgJiYgYWxwaGEgPCAyNTUpCi0gICAgICAgIHBpeGVs
Q29sb3IgPSBtYWtlVW5QcmVtdWx0aXBsaWVkUkdCQShyZWRDaGFubmVsKHBpeGVsQ29sb3IpLCBn
cmVlbkNoYW5uZWwocGl4ZWxDb2xvciksIGJsdWVDaGFubmVsKHBpeGVsQ29sb3IpLCBhbHBoYSk7
Ci0gICAgcmV0dXJuIENvbG9yKHBpeGVsQ29sb3IpOworICAgIGlmIChwaXhlbENvbG9yLmlzVmlz
aWJsZSgpICYmICFwaXhlbENvbG9yLmlzT3BhcXVlKCkpCisgICAgICAgIHJldHVybiBtYWtlVW5Q
cmVtdWx0aXBsaWVkUkdCQShwaXhlbENvbG9yLnJlZENvbXBvbmVudCgpLCBwaXhlbENvbG9yLmdy
ZWVuQ29tcG9uZW50KCksIHBpeGVsQ29sb3IuYmx1ZUNvbXBvbmVudCgpLCBwaXhlbENvbG9yLmFs
cGhhQ29tcG9uZW50KCkpOworICAgIHJldHVybiBwaXhlbENvbG9yOwogfQogCiBSR0JBMzIgcHJl
bXVsdGlwbGllZEFSR0JGcm9tQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNjAzLDEwICs1
OTQsOSBAQCBDb2xvciBibGVuZChjb25zdCBDb2xvciYgZnJvbSwgY29uc3QgQ29sb3ImIHRvLCBk
b3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRQcmVtdQogICAgICAgICByZXR1cm4gQ29sb3IoKTsK
IAogICAgIGlmIChibGVuZFByZW11bHRpcGxpZWQpIHsKLSAgICAgICAgLy8gQ29udHJhcnkgdG8g
dGhlIG5hbWUsIFJHQkEzMiBhY3R1YWxseSBzdG9yZXMgQVJHQiwgc28gd2UgY2FuIGluaXRpYWxp
emUgQ29sb3IgZGlyZWN0bHkgZnJvbSBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcigpLgotICAg
ICAgICAvLyBBbHNvLCBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcigpIGJhaWxzIG9uIHplcm8g
YWxwaGEsIHNvIHNwZWNpYWwtY2FzZSB0aGF0LgotICAgICAgICBDb2xvciBwcmVtdWx0RnJvbSA9
IGZyb20uYWxwaGEoKSA/IHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKGZyb20pIDogMDsKLSAg
ICAgICAgQ29sb3IgcHJlbXVsdFRvID0gdG8uYWxwaGEoKSA/IHByZW11bHRpcGxpZWRBUkdCRnJv
bUNvbG9yKHRvKSA6IDA7CisgICAgICAgIC8vIFNpbmNlIHByZW11bHRpcGxpZWRBUkdCRnJvbUNv
bG9yKCkgYmFpbHMgb24gemVybyBhbHBoYSwgc3BlY2lhbC1jYXNlIHRoYXQuCisgICAgICAgIENv
bG9yIHByZW11bHRGcm9tID0gZnJvbS5hbHBoYSgpID8gcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29s
b3IoZnJvbSkgOiBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgICAgIENvbG9yIHByZW11bHRUbyA9
IHRvLmFscGhhKCkgPyBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcih0bykgOiBDb2xvcjo6dHJh
bnNwYXJlbnQ7CiAKICAgICAgICAgQ29sb3IgcHJlbXVsdEJsZW5kZWQoYmxlbmQocHJlbXVsdEZy
b20ucmVkKCksIHByZW11bHRUby5yZWQoKSwgcHJvZ3Jlc3MpLAogICAgICAgICAgICAgYmxlbmQo
cHJlbXVsdEZyb20uZ3JlZW4oKSwgcHJlbXVsdFRvLmdyZWVuKCksIHByb2dyZXNzKSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCmluZGV4IDhlMzVlMDk5ZTRhZjMyZDY5
NzdlZWJkMmM3MDVjYTc2NmE0M2VmNDQuLjAxNGQxNGVjMDc3NTNlMGQ4NDM2OGJjMTY1ZDkyODMz
ZjUxZjg3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTUyLDEzICs1MiwzNyBAQCB0eXBlZGVmIEQyRF9WRUNUT1JfNEYgRDJEMV9WRUNUT1JfNEY7CiB0
eXBlZGVmIHN0cnVjdCBfR2RrUkdCQSBHZGtSR0JBOwogI2VuZGlmCiAKLW5hbWVzcGFjZSBXVEYg
ewotY2xhc3MgVGV4dFN0cmVhbTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVm
IHVuc2lnbmVkIFJHQkEzMjsgLy8gRGVwcmVjYXRlZDogVHlwZSBmb3IgYW4gUkdCQSBxdWFkcnVw
bGV0LiBVc2UgUkdCQSBjbGFzcyBpbnN0ZWFkLgorLy8gQ29sb3IgdmFsdWUgd2l0aCA4LWJpdCBj
b21wb25lbnRzIGZvciByZWQsIGdyZWVuLCBibHVlLCBhbmQgYWxwaGEuCisvLyBGb3IgaGlzdG9y
aWNhbCByZWFzb25zLCBzdG9yZWQgYXMgYSAzMi1iaXQgaW50ZWdlciwgd2l0aCBhbHBoYSBpbiB0
aGUgaGlnaCBiaXRzOiBBUkdCLgorY2xhc3MgU2ltcGxlQ29sb3IgeworcHVibGljOgorICAgIGNv
bnN0ZXhwciBTaW1wbGVDb2xvcih1aW50MzJfdCB2YWx1ZSA9IDApIDogbV92YWx1ZSB7IHZhbHVl
IH0geyB9CisKKyAgICBjb25zdGV4cHIgdWludDMyX3QgdmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlOyB9CisKKyAgICBjb25zdGV4cHIgdWludDhfdCByZWRDb21wb25lbnQoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlID4+IDE2OyB9CisgICAgY29uc3RleHByIHVpbnQ4X3QgZ3JlZW5Db21w
b25lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID4+IDg7IH0KKyAgICBjb25zdGV4cHIgdWlu
dDhfdCBibHVlQ29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIGNvbnN0
ZXhwciB1aW50OF90IGFscGhhQ29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA+PiAy
NDsgfQorCisgICAgY29uc3RleHByIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBhbHBo
YUNvbXBvbmVudCgpID09IDB4RkY7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBpc1Zpc2libGUoKSBj
b25zdCB7IHJldHVybiBhbHBoYUNvbXBvbmVudCgpOyB9CisKKyAgICBTdHJpbmcgc2VyaWFsaXph
dGlvbkZvckhUTUwoKSBjb25zdDsKKyAgICBTdHJpbmcgc2VyaWFsaXphdGlvbkZvckNTUygpIGNv
bnN0OworICAgIFN0cmluZyBzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dCgpIGNvbnN0
OworCitwcml2YXRlOgorICAgIHVpbnQzMl90IG1fdmFsdWUgeyAwIH07Cit9OworCitib29sIG9w
ZXJhdG9yPT0oU2ltcGxlQ29sb3IsIFNpbXBsZUNvbG9yKTsKK2Jvb2wgb3BlcmF0b3IhPShTaW1w
bGVDb2xvciwgU2ltcGxlQ29sb3IpOworCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYWZ0ZXIgbWln
cmF0aW5nIHRvIHRoZSBuZXcgbmFtZS4KK3VzaW5nIFJHQkEzMiA9IFNpbXBsZUNvbG9yOwogCiBX
RUJDT1JFX0VYUE9SVCBSR0JBMzIgbWFrZVJHQihpbnQgciwgaW50IGcsIGludCBiKTsKIFdFQkNP
UkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7CkBA
IC03MywzNiArOTcsOSBAQCBXRUJDT1JFX0VYUE9SVCBSR0JBMzIgbWFrZVJHQkEzMkZyb21GbG9h
dHMoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CiBSR0JBMzIgbWFrZVJHQkFG
cm9tSFNMQShmbG9hdCBoLCBmbG9hdCBzLCBmbG9hdCBsLCBmbG9hdCBhKTsKIFJHQkEzMiBtYWtl
UkdCQUZyb21DTVlLQShmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBh
KTsKIAotaW5saW5lIGludCByZWRDaGFubmVsKFJHQkEzMiBjb2xvcikgeyByZXR1cm4gKGNvbG9y
ID4+IDE2KSAmIDB4RkY7IH0KLWlubGluZSBpbnQgZ3JlZW5DaGFubmVsKFJHQkEzMiBjb2xvcikg
eyByZXR1cm4gKGNvbG9yID4+IDgpICYgMHhGRjsgfQotaW5saW5lIGludCBibHVlQ2hhbm5lbChS
R0JBMzIgY29sb3IpIHsgcmV0dXJuIGNvbG9yICYgMHhGRjsgfQotaW5saW5lIGludCBhbHBoYUNo
YW5uZWwoUkdCQTMyIGNvbG9yKSB7IHJldHVybiAoY29sb3IgPj4gMjQpICYgMHhGRjsgfQotCiB1
aW50OF90IHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoaW50KTsKIHVpbnQ4X3Qgcm91bmRBbmRD
bGFtcENvbG9yQ2hhbm5lbChmbG9hdCk7CiAKLWNsYXNzIFJHQkEgewotcHVibGljOgotICAgIFJH
QkEoKTsgLy8gYWxsIGNoYW5uZWxzIHplcm8sIGluY2x1ZGluZyBhbHBoYQotICAgIFJHQkEodWlu
dDhfdCByZWQsIHVpbnQ4X3QgZ3JlZW4sIHVpbnQ4X3QgYmx1ZSwgdWludDhfdCBhbHBoYSk7Ci0g
ICAgUkdCQSh1aW50OF90IHJlZCwgdWludDhfdCBncmVlbiwgdWludDhfdCBibHVlKTsgLy8gb3Bh
cXVlLCBhbHBoYSBvZiAxCi0KLSAgICB1aW50OF90IHJlZCgpIGNvbnN0OwotICAgIHVpbnQ4X3Qg
Z3JlZW4oKSBjb25zdDsKLSAgICB1aW50OF90IGJsdWUoKSBjb25zdDsKLSAgICB1aW50OF90IGFs
cGhhKCkgY29uc3Q7Ci0KLSAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0g
ICAgZnJpZW5kIGNsYXNzIENvbG9yOwotCi0gICAgdW5zaWduZWQgbV9pbnRlZ2VyIHsgMCB9Owot
fTsKLQotYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJHQkEmLCBjb25zdCBSR0JBJik7Ci1ib29sIG9w
ZXJhdG9yIT0oY29uc3QgUkdCQSYsIGNvbnN0IFJHQkEmKTsKLQogY2xhc3MgQ29sb3IgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTE3LDcgKzExNCw2IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBlbnVtIFNlbWFudGljVGFnIHsgU2VtYW50aWMgfTsKLQogICAg
IENvbG9yKFJHQkEzMiBjb2xvciwgU2VtYW50aWNUYWcpCiAgICAgewogICAgICAgICBzZXRSR0Io
Y29sb3IpOwpAQCAtMTc1LDcgKzE3MSw2IEBAIHB1YmxpYzoKICAgICAvLyBjb252ZXJ0ZWQgZXhh
Y3RseSB0byBpbnRlZ2Vycywgd2Ugc2hvdWxkIG1ha2UgYSBub3JtYWwgQ29sb3IuCiAgICAgV0VC
Q09SRV9FWFBPUlQgQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKTsKIAotICAgIENvbG9yKFJHQkEsIENvbG9yU3BhY2UpOwogICAg
IFdFQkNPUkVfRVhQT1JUIENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
Q29sb3IoQ29sb3ImJik7CiAKQEAgLTE4NSwxNyArMTgwLDYgQEAgcHVibGljOgogICAgICAgICAg
ICAgbV9jb2xvckRhdGEuZXh0ZW5kZWRDb2xvci0+ZGVyZWYoKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgQ29sb3IgY3JlYXRlVW5jaGVja2VkKGludCByLCBpbnQgZywgaW50IGIpCi0gICAgewotICAg
ICAgICBSR0JBMzIgY29sb3IgPSAweEZGMDAwMDAwIHwgciA8PCAxNiB8IGcgPDwgOCB8IGI7Ci0g
ICAgICAgIHJldHVybiBDb2xvcihjb2xvcik7Ci0gICAgfQotICAgIHN0YXRpYyBDb2xvciBjcmVh
dGVVbmNoZWNrZWQoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCi0gICAgewotICAgICAgICBS
R0JBMzIgY29sb3IgPSBhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGI7Ci0gICAgICAgIHJl
dHVybiBDb2xvcihjb2xvcik7Ci0gICAgfQotCiAgICAgLy8gUmV0dXJucyB0aGUgY29sb3Igc2Vy
aWFsaXplZCBhY2NvcmRpbmcgdG8gSFRNTDUKICAgICAvLyA8aHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcz4g
KDEwIFNlcHRlbWJlciAyMDE1KQogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemVk
KCkgY29uc3Q7CkBAIC0yMDcsMTUgKzE5MSwxNSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgfHwgKG1fY29sb3JEYXRhLnJnYmFBbmRG
bGFncyAmIHZhbGlkUkdCQUNvbG9yQml0KTsgfQogCi0gICAgYm9vbCBpc09wYXF1ZSgpIGNvbnN0
IHsgcmV0dXJuIGlzVmFsaWQoKSAmJiAoaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgpLmFscGhh
KCkgPT0gMS4wIDogYWxwaGEoKSA9PSAyNTUpOyB9Ci0gICAgYm9vbCBpc1Zpc2libGUoKSBjb25z
dCB7IHJldHVybiBpc1ZhbGlkKCkgJiYgKGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5hbHBo
YSgpID4gMC4wIDogYWxwaGEoKSA+IDApOyB9CisgICAgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsg
cmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpID09IDEuMCA6IHJnYigp
LmlzT3BhcXVlKCk7IH0KKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0
ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpID4gMC4wIDogcmdiKCkuaXNWaXNpYmxlKCk7
IH0KIAotICAgIGludCByZWQoKSBjb25zdCB7IHJldHVybiByZWRDaGFubmVsKHJnYigpKTsgfQot
ICAgIGludCBncmVlbigpIGNvbnN0IHsgcmV0dXJuIGdyZWVuQ2hhbm5lbChyZ2IoKSk7IH0KLSAg
ICBpbnQgYmx1ZSgpIGNvbnN0IHsgcmV0dXJuIGJsdWVDaGFubmVsKHJnYigpKTsgfQotICAgIGlu
dCBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIGFscGhhQ2hhbm5lbChyZ2IoKSk7IH0KKyAgICBpbnQg
cmVkKCkgY29uc3QgeyByZXR1cm4gcmdiKCkucmVkQ29tcG9uZW50KCk7IH0KKyAgICBpbnQgZ3Jl
ZW4oKSBjb25zdCB7IHJldHVybiByZ2IoKS5ncmVlbkNvbXBvbmVudCgpOyB9CisgICAgaW50IGJs
dWUoKSBjb25zdCB7IHJldHVybiByZ2IoKS5ibHVlQ29tcG9uZW50KCk7IH0KKyAgICBpbnQgYWxw
aGEoKSBjb25zdCB7IHJldHVybiByZ2IoKS5hbHBoYUNvbXBvbmVudCgpOyB9CiAKLSAgICBmbG9h
dCBhbHBoYUFzRmxvYXQoKSBjb25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgPyBhc0V4dGVuZGVk
KCkuYWxwaGEoKSA6IHN0YXRpY19jYXN0PGZsb2F0PihhbHBoYUNoYW5uZWwocmdiKCkpKSAvIDI1
NTsgfQorICAgIGZsb2F0IGFscGhhQXNGbG9hdCgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQo
KSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpIDogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJnYigpLmFscGhh
Q29tcG9uZW50KCkpIC8gMHhGRjsgfQogCiAgICAgUkdCQTMyIHJnYigpIGNvbnN0OwogCkBAIC0y
NjksMTkgKzI1MywxOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGFyc2VIZXhDb2xvcihj
b25zdCBMQ2hhciosIHVuc2lnbmVkLCBSR0JBMzImKTsKICAgICBzdGF0aWMgYm9vbCBwYXJzZUhl
eENvbG9yKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQsIFJHQkEzMiYpOwogCi0gICAgc3RhdGljIGNv
bnN0IFJHQkEzMiBibGFjayA9IDB4RkYwMDAwMDA7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGNvbnN0IFJHQkEzMiB3aGl0ZSA9IDB4RkZGRkZGRkY7Ci0gICAgc3RhdGljIGNvbnN0IFJHQkEz
MiBkYXJrR3JheSA9IDB4RkY4MDgwODA7Ci0gICAgc3RhdGljIGNvbnN0IFJHQkEzMiBncmF5ID0g
MHhGRkEwQTBBMDsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGxpZ2h0R3JheSA9IDB4RkZDMEMw
QzA7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFJHQkEzMiB0cmFuc3BhcmVudCA9
IDB4MDAwMDAwMDA7Ci0gICAgc3RhdGljIGNvbnN0IFJHQkEzMiBjeWFuID0gMHhGRjAwRkZGRjsK
LSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIHllbGxvdyA9IDB4RkZGRkZGMDA7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBTaW1wbGVDb2xvciBibGFjayB7IDB4RkYwMDAwMDAgfTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIFNpbXBsZUNvbG9yIHdoaXRlIHsgMHhGRkZGRkZGRiB9OworICAgIHN0YXRpYyBj
b25zdGV4cHIgU2ltcGxlQ29sb3IgZGFya0dyYXkgeyAweEZGODA4MDgwIH07CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBTaW1wbGVDb2xvciBncmF5IHsgMHhGRkEwQTBBMCB9OworICAgIHN0YXRpYyBj
b25zdGV4cHIgU2ltcGxlQ29sb3IgbGlnaHRHcmF5IHsgMHhGRkMwQzBDMCB9OworICAgIHN0YXRp
YyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgdHJhbnNwYXJlbnQgeyAweDAwMDAwMDAwIH07CisgICAg
c3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBjeWFuIHsgMHhGRjAwRkZGRiB9OworICAgIHN0
YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgeWVsbG93IHsgMHhGRkZGRkYwMCB9OwogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGNvbXBvc2l0aW9u
RmlsbCA9IDB4M0NBRkMwRTM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBjb21w
b3NpdGlvbkZpbGwgeyAweDNDQUZDMEUzIH07CiAjZWxzZQotICAgIHN0YXRpYyBjb25zdCBSR0JB
MzIgY29tcG9zaXRpb25GaWxsID0gMHhGRkUxREQ1NTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNp
bXBsZUNvbG9yIGNvbXBvc2l0aW9uRmlsbCB7IDB4RkZFMURENTUgfTsKICNlbmRpZgogCiAgICAg
Ym9vbCBpc0V4dGVuZGVkKCkgY29uc3QKQEAgLTM0Myw0OSArMzI3LDE3IEBAIHVpbnQxNl90IGZh
c3REaXZpZGVCeTI1NSh1aW50MTZfdCk7CiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmIGNhY2hl
ZENHQ29sb3IoY29uc3QgQ29sb3ImKTsKICNlbmRpZgogCi1pbmxpbmUgUkdCQTo6UkdCQSgpCi17
Ci19Ci0KLWlubGluZSBSR0JBOjpSR0JBKHVpbnQ4X3QgcmVkLCB1aW50OF90IGdyZWVuLCB1aW50
OF90IGJsdWUsIHVpbnQ4X3QgYWxwaGEpCi0gICAgOiBtX2ludGVnZXIoYWxwaGEgPDwgMjQgfCBy
ZWQgPDwgMTYgfCBncmVlbiA8PCA4IHwgYmx1ZSkKLXsKLX0KLQotaW5saW5lIFJHQkE6OlJHQkEo
dWludDhfdCByZWQsIHVpbnQ4X3QgZ3JlZW4sIHVpbnQ4X3QgYmx1ZSkKLSAgICA6IG1faW50ZWdl
cigweEZGMDAwMDAwIHwgcmVkIDw8IDE2IHwgZ3JlZW4gPDwgOCB8IGJsdWUpCi17Ci19Ci0KLWlu
bGluZSB1aW50OF90IFJHQkE6OnJlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW50ZWdlciA+
PiAxNjsKLX0KLQotaW5saW5lIHVpbnQ4X3QgUkdCQTo6Z3JlZW4oKSBjb25zdAotewotICAgIHJl
dHVybiBtX2ludGVnZXIgPj4gODsKLX0KLQotaW5saW5lIHVpbnQ4X3QgUkdCQTo6Ymx1ZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1faW50ZWdlcjsKLX0KLQotaW5saW5lIHVpbnQ4X3QgUkdCQTo6
YWxwaGEoKSBjb25zdAotewotICAgIHJldHVybiBtX2ludGVnZXIgPj4gMjQ7Ci19CitXRUJDT1JF
X0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29u
c3QgQ29sb3ImKTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBDb2xvclNwYWNlKTsKIAotaW5saW5lIGJvb2wgUkdCQTo6aGFzQWxw
aGEoKSBjb25zdAoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShTaW1wbGVDb2xvciBhLCBTaW1wbGVD
b2xvciBiKQogewotICAgIHJldHVybiAobV9pbnRlZ2VyICYgMHhGRjAwMDAwMCkgIT0gMHhGRjAw
MDAwMDsKKyAgICByZXR1cm4gYS52YWx1ZSgpID09IGIudmFsdWUoKTsKIH0KIAotaW5saW5lIENv
bG9yOjpDb2xvcihSR0JBIGNvbG9yLCBDb2xvclNwYWNlIHNwYWNlKQoraW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShTaW1wbGVDb2xvciBhLCBTaW1wbGVDb2xvciBiKQogewotICAgIHNldFJHQihjb2xv
ci5tX2ludGVnZXIpOwotICAgIEFTU0VSVF9VTlVTRUQoc3BhY2UsIHNwYWNlID09IENvbG9yU3Bh
Y2U6OlNSR0IpOworICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKIGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ29sb3ImIGEsIGNvbnN0IENvbG9yJiBiKQpAQCAtNDM3LDEyICszODksMTIg
QEAgaW5saW5lIFJHQkEzMiBDb2xvcjo6cmdiKCkgY29uc3QKICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIEFTU0VSVCghaXNFeHRlbmRlZCgpKSBoZXJlLCBvciBwcm9kdWNlCiAgICAgLy8gYW4gUkdC
QTMyIGVxdWl2YWxlbnQgZm9yIGFuIEV4dGVuZGVkQ29sb3IuIElkZWFsbHkgdGhlIGZvcm1lciwK
ICAgICAvLyBzbyB3ZSBjYW4gYXVkaXQgYWxsIHRoZSByZ2IoKSBjYWxsIHNpdGVzIHRvIGhhbmRs
ZSBleHRlbmRlZC4KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UkdCQTMyPihtX2NvbG9yRGF0YS5y
Z2JhQW5kRmxhZ3MgPj4gMzIpOworICAgIHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQzMl90Piht
X2NvbG9yRGF0YS5yZ2JhQW5kRmxhZ3MgPj4gMzIpIH07CiB9CiAKIGlubGluZSB2b2lkIENvbG9y
OjpzZXRSR0IoUkdCQTMyIHJnYikKIHsKLSAgICBtX2NvbG9yRGF0YS5yZ2JhQW5kRmxhZ3MgPSBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ocmdiKSA8PCAzMjsKKyAgICBtX2NvbG9yRGF0YS5yZ2JhQW5k
RmxhZ3MgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmdiLnZhbHVlKCkpIDw8IDMyOwogICAgIHRh
Z0FzVmFsaWQoKTsKIH0KIApAQCAtNDUzLDcgKzQwNSw3IEBAIGlubGluZSBib29sIENvbG9yOjpp
c0JsYWNrQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgICAgICByZXR1cm4gIWV4dGVuZGVk
Q29sb3IucmVkKCkgJiYgIWV4dGVuZGVkQ29sb3IuZ3JlZW4oKSAmJiAhZXh0ZW5kZWRDb2xvci5i
bHVlKCkgJiYgZXh0ZW5kZWRDb2xvci5hbHBoYSgpID09IDE7CiAgICAgfQogCi0gICAgcmV0dXJu
IGNvbG9yLmlzVmFsaWQoKSAmJiBjb2xvci5yZ2IoKSA9PSBDb2xvcjo6YmxhY2s7CisgICAgcmV0
dXJuIGNvbG9yLnJnYigpID09IENvbG9yOjpibGFjazsKIH0KIAogaW5saW5lIGJvb2wgQ29sb3I6
OmlzV2hpdGVDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCkBAIC00NjMsMTIgKzQxNSw5IEBAIGlu
bGluZSBib29sIENvbG9yOjppc1doaXRlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgICAg
ICByZXR1cm4gZXh0ZW5kZWRDb2xvci5yZWQoKSA9PSAxICYmIGV4dGVuZGVkQ29sb3IuZ3JlZW4o
KSA9PSAxICYmIGV4dGVuZGVkQ29sb3IuYmx1ZSgpID09IDEgJiYgZXh0ZW5kZWRDb2xvci5hbHBo
YSgpID09IDE7CiAgICAgfQogICAgIAotICAgIHJldHVybiBjb2xvci5pc1ZhbGlkKCkgJiYgY29s
b3IucmdiKCkgPT0gQ29sb3I6OndoaXRlOworICAgIHJldHVybiBjb2xvci5yZ2IoKSA9PSBDb2xv
cjo6d2hpdGU7CiB9CiAKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXggYmFl
YmU1MjYxMWRiZTg1NDc3OGFhZDVmMmMwZTY4YzY3ZjE1Y2QwNi4uZjdjY2U0MTUxNTVlZDQzZWRm
ZGY1MDc2NjdjNGFhOTJkYzcxMjhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCkBAIC02MCwxNCArNjAsMTQgQEAgcHVi
bGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIFZlY3RvcjxjaGFyPiBi
dWZmZXI7Ci0gICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gc2l6ZS5hcmVhKCkudW5zYWZlR2V0
KCkgKiBzaXplb2YoUkdCQTMyKTsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBzaXplLmFy
ZWEoKS51bnNhZmVHZXQoKSAqIHNpemVvZih1aW50MzJfdCk7CiAKICAgICAgICAgaWYgKCFidWZm
ZXIudHJ5UmVzZXJ2ZUNhcGFjaXR5KGJ1ZmZlclNpemUpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwogICAgICAgICBtX3BpeGVs
cyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwot
ICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8UkdCQTMyKj4oY29uc3RfY2Fz
dDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgp
KSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVj
dChJbnRQb2ludCgpLCBtX3NpemUpOwogICAgICAgICBjbGVhcigpOwpAQCAtODYsNyArODYsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyKCkKICAgICB7Ci0gICAgICAgIG1lbXNldChtX3Bp
eGVsc1B0ciwgMCwgKG1fc2l6ZS5hcmVhKCkgKiBzaXplb2YoUkdCQTMyKSkudW5zYWZlR2V0KCkp
OworICAgICAgICBtZW1zZXQobV9waXhlbHNQdHIsIDAsIChtX3NpemUuYXJlYSgpICogc2l6ZW9m
KHVpbnQzMl90KSkudW5zYWZlR2V0KCkpOwogICAgIH0KIAogICAgIHZvaWQgY2xlYXJSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QpCkBAIC05NCw4ICs5NCw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KHJlY3QuaXNFbXB0eSgpIHx8ICFpbkJvdW5kcyhyZWN0KSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBzaXplX3Qgcm93Qnl0ZXMgPSByZWN0LndpZHRoKCkgKiBzaXplb2YoUkdCQTMy
KTsKLSAgICAgICAgUkdCQTMyKiBzdGFydCA9IHBpeGVsQXQocmVjdC54KCksIHJlY3QueSgpKTsK
KyAgICAgICAgc2l6ZV90IHJvd0J5dGVzID0gcmVjdC53aWR0aCgpICogc2l6ZW9mKHVpbnQzMl90
KTsKKyAgICAgICAgdWludDMyX3QqIHN0YXJ0ID0gcGl4ZWxBdChyZWN0LngoKSwgcmVjdC55KCkp
OwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3QuaGVpZ2h0KCk7ICsraSkgewogICAg
ICAgICAgICAgbWVtc2V0KHN0YXJ0LCAwLCByb3dCeXRlcyk7CiAgICAgICAgICAgICBzdGFydCAr
PSBtX3NpemUud2lkdGgoKTsKQEAgLTEwNyw4ICsxMDcsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlm
IChyZWN0LmlzRW1wdHkoKSB8fCAhaW5Cb3VuZHMocmVjdCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgUkdCQTMyKiBzdGFydCA9IHBpeGVsQXQocmVjdC54KCksIHJlY3QueSgpKTsK
LSAgICAgICAgUkdCQTMyIHBpeGVsVmFsdWUgPSB0aGlzLT5waXhlbFZhbHVlKHIsIGcsIGIsIGEp
OworICAgICAgICB1aW50MzJfdCogc3RhcnQgPSBwaXhlbEF0KHJlY3QueCgpLCByZWN0LnkoKSk7
CisgICAgICAgIHVpbnQzMl90IHBpeGVsVmFsdWUgPSB0aGlzLT5waXhlbFZhbHVlKHIsIGcsIGIs
IGEpOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3QuaGVpZ2h0KCk7ICsraSkgewog
ICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCByZWN0LndpZHRoKCk7ICsraikKICAgICAg
ICAgICAgICAgICBzdGFydFtqXSA9IHBpeGVsVmFsdWU7CkBAIC0xMjEsMjIgKzEyMSwyMiBAQCBw
dWJsaWM6CiAgICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSB8fCAhaW5Cb3VuZHMocmVjdCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgc2l6ZV90IHJvd0J5dGVzID0gcmVjdC53aWR0
aCgpICogc2l6ZW9mKFJHQkEzMik7Ci0gICAgICAgIFJHQkEzMiogc3JjID0gcGl4ZWxBdChyZWN0
LngoKSwgcmVjdC55KCkpOwotICAgICAgICBSR0JBMzIqIGRlc3QgPSBzcmMgKyBtX3NpemUud2lk
dGgoKTsKKyAgICAgICAgc2l6ZV90IHJvd0J5dGVzID0gcmVjdC53aWR0aCgpICogc2l6ZW9mKHVp
bnQzMl90KTsKKyAgICAgICAgdWludDMyX3QqIHNyYyA9IHBpeGVsQXQocmVjdC54KCksIHJlY3Qu
eSgpKTsKKyAgICAgICAgdWludDMyX3QqIGRlc3QgPSBzcmMgKyBtX3NpemUud2lkdGgoKTsKICAg
ICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCByZWN0LmhlaWdodCgpOyArK2kpIHsKICAgICAgICAg
ICAgIG1lbWNweShkZXN0LCBzcmMsIHJvd0J5dGVzKTsKICAgICAgICAgICAgIGRlc3QgKz0gbV9z
aXplLndpZHRoKCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBSR0JBMzIqIHBpeGVsQXQoaW50
IHgsIGludCB5KSBjb25zdAorICAgIHVpbnQzMl90KiBwaXhlbEF0KGludCB4LCBpbnQgeSkgY29u
c3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpbkJvdW5kcyhJbnRQb2ludCh4LCB5KSkpOwogICAg
ICAgICByZXR1cm4gbV9waXhlbHNQdHIgKyB5ICogbV9zaXplLndpZHRoKCkgKyB4OwogICAgIH0K
IAotICAgIHZvaWQgc2V0UGl4ZWwoUkdCQTMyKiBkZXN0LCB1bnNpZ25lZCByLCB1bnNpZ25lZCBn
LCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHZvaWQgc2V0UGl4ZWwodWludDMyX3QqIGRl
c3QsIHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCiAgICAg
ewogICAgICAgICBBU1NFUlQoZGVzdCk7CiAgICAgICAgICpkZXN0ID0gcGl4ZWxWYWx1ZShyLCBn
LCBiLCBhKTsKQEAgLTE0NywzMCArMTQ3LDMyIEBAIHB1YmxpYzoKICAgICAgICAgc2V0UGl4ZWwo
cGl4ZWxBdCh4LCB5KSwgciwgZywgYiwgYSk7CiAgICAgfQogCi0gICAgdm9pZCBibGVuZFBpeGVs
KFJHQkEzMiogZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWdu
ZWQgYSkKKyAgICB2b2lkIGJsZW5kUGl4ZWwodWludDMyX3QqIGRlc3QsIHVuc2lnbmVkIHIsIHVu
c2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCiAgICAgewogICAgICAgICBpZiAoIWEp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGEgPj0gMjU1IHx8ICFhbHBoYUNo
YW5uZWwoKmRlc3QpKSB7CisgICAgICAgIFNpbXBsZUNvbG9yIHBpeGVsIHsgKmRlc3QgfTsKKwor
ICAgICAgICBpZiAoYSA+PSAyNTUgfHwgIXBpeGVsLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgICAg
ICBzZXRQaXhlbChkZXN0LCByLCBnLCBiLCBhKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmICghbV9wcmVtdWx0aXBseUFscGhhKQotICAgICAgICAgICAgKmRl
c3QgPSBtYWtlUHJlbXVsdGlwbGllZFJHQkEocmVkQ2hhbm5lbCgqZGVzdCksIGdyZWVuQ2hhbm5l
bCgqZGVzdCksIGJsdWVDaGFubmVsKCpkZXN0KSwgYWxwaGFDaGFubmVsKCpkZXN0KSwgZmFsc2Up
OworICAgICAgICAgICAgcGl4ZWwgPSBtYWtlUHJlbXVsdGlwbGllZFJHQkEocGl4ZWwucmVkQ29t
cG9uZW50KCksIHBpeGVsLmdyZWVuQ29tcG9uZW50KCksIHBpeGVsLmJsdWVDb21wb25lbnQoKSwg
cGl4ZWwuYWxwaGFDb21wb25lbnQoKSwgZmFsc2UpOwogCiAgICAgICAgIHVuc2lnbmVkIGQgPSAy
NTUgLSBhOwogCi0gICAgICAgIHIgPSBmYXN0RGl2aWRlQnkyNTUociAqIGEgKyByZWRDaGFubmVs
KCpkZXN0KSAqIGQpOwotICAgICAgICBnID0gZmFzdERpdmlkZUJ5MjU1KGcgKiBhICsgZ3JlZW5D
aGFubmVsKCpkZXN0KSAqIGQpOwotICAgICAgICBiID0gZmFzdERpdmlkZUJ5MjU1KGIgKiBhICsg
Ymx1ZUNoYW5uZWwoKmRlc3QpICogZCk7Ci0gICAgICAgIGEgKz0gZmFzdERpdmlkZUJ5MjU1KGQg
KiBhbHBoYUNoYW5uZWwoKmRlc3QpKTsKKyAgICAgICAgciA9IGZhc3REaXZpZGVCeTI1NShyICog
YSArIHBpeGVsLnJlZENvbXBvbmVudCgpICogZCk7CisgICAgICAgIGcgPSBmYXN0RGl2aWRlQnky
NTUoZyAqIGEgKyBwaXhlbC5ncmVlbkNvbXBvbmVudCgpICogZCk7CisgICAgICAgIGIgPSBmYXN0
RGl2aWRlQnkyNTUoYiAqIGEgKyBwaXhlbC5ibHVlQ29tcG9uZW50KCkgKiBkKTsKKyAgICAgICAg
YSArPSBmYXN0RGl2aWRlQnkyNTUoZCAqIHBpeGVsLmFscGhhQ29tcG9uZW50KCkpOwogCiAgICAg
ICAgIGlmIChtX3ByZW11bHRpcGx5QWxwaGEpCi0gICAgICAgICAgICAqZGVzdCA9IG1ha2VSR0JB
KHIsIGcsIGIsIGEpOworICAgICAgICAgICAgKmRlc3QgPSBtYWtlUkdCQShyLCBnLCBiLCBhKS52
YWx1ZSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICAqZGVzdCA9IG1ha2VVblByZW11bHRp
cGxpZWRSR0JBKHIsIGcsIGIsIGEpOworICAgICAgICAgICAgKmRlc3QgPSBtYWtlVW5QcmVtdWx0
aXBsaWVkUkdCQShyLCBnLCBiLCBhKS52YWx1ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBib29s
IGlzT3ZlclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTIwNCw3ICsyMDYsNyBAQCBwcml2
YXRlOgogICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyOwogICAgICAgICBidWZmZXIuYXBwZW5k
KG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkpOwogICAgICAg
ICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOwotICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8UkdCQTMyKj4o
Y29uc3RfY2FzdDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVs
cy0+ZGF0YSgpKSk7CiAgICAgfQogCiAgICAgYm9vbCBpbkJvdW5kcyhjb25zdCBJbnRQb2ludCYg
cG9pbnQpIGNvbnN0CkBAIC0yMTcsMTkgKzIxOSwxOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1
cm4gSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpLmNvbnRhaW5zKHJlY3QpOwogICAgIH0KIAot
ICAgIFJHQkEzMiBwaXhlbFZhbHVlKHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIs
IHVuc2lnbmVkIGEpIGNvbnN0CisgICAgdWludDMyX3QgcGl4ZWxWYWx1ZSh1bnNpZ25lZCByLCB1
bnNpZ25lZCBnLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBhKSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKG1fcHJlbXVsdGlwbHlBbHBoYSAmJiAhYSkKICAgICAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgICAgIGlmIChtX3ByZW11bHRpcGx5QWxwaGEgJiYgYSA8IDI1NSkKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlUHJlbXVsdGlwbGllZFJHQkEociwgZywgYiwgYSwgZmFsc2UpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VQcmVtdWx0aXBsaWVkUkdCQShyLCBnLCBiLCBhLCBmYWxzZSkudmFsdWUo
KTsKIAotICAgICAgICByZXR1cm4gbWFrZVJHQkEociwgZywgYiwgYSk7CisgICAgICAgIHJldHVy
biBtYWtlUkdCQShyLCBnLCBiLCBhKS52YWx1ZSgpOwogICAgIH0KIAogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3BpeGVsczsKLSAgICBSR0JBMzIqIG1fcGl4ZWxzUHRy
IHsgbnVsbHB0ciB9OworICAgIHVpbnQzMl90KiBtX3BpeGVsc1B0ciB7IG51bGxwdHIgfTsKICAg
ICBJbnRTaXplIG1fc2l6ZTsKICAgICBJbnRSZWN0IG1fZnJhbWVSZWN0OyAvLyBUaGlzIHdpbGwg
YWx3YXlzIGp1c3QgYmUgdGhlIGVudGlyZSBidWZmZXIgZXhjZXB0IGZvciBHSUYgYW5kIFBORyBm
cmFtZXMKICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYSB7IHRydWUgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCAyY2M2YjAyYTdkMzUw
MTU3MWNmMjA5MzY0YjM2ZWQyNWMxZDgzOTY5Li44NTZmZTM0ZmU2ZjcxN2Y4MTZlMzRhNDdkM2Y2
ODRiYTYwM2I5NGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VGcmFtZS5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1
ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgotI2luY2x1ZGUgIkltYWdlQmFja2luZ1N0b3JlLmgiCiAj
aW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKICNp
bmNsdWRlICJJbnRTaXplLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yQ0cuY3BwCmluZGV4IGNkZmZhM2Y2MGU5YWQxOGYyYTQwYThlODk4NTJhMzZhMzM3
ZjUxMDAuLjc4MzhmMzUzMWMyYmU1MDY1OTUyYWUxY2IzODE4N2JjOWI3MmU5NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCkBAIC0xMjgs
MjMgKzEyOCwyMyBAQCBzdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCiBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewog
ICAgIGlmICghY29sb3IuaXNFeHRlbmRlZCgpKSB7Ci0gICAgICAgIHN3aXRjaCAoY29sb3Iucmdi
KCkpIHsKLSAgICAgICAgY2FzZSBDb2xvcjo6dHJhbnNwYXJlbnQ6IHsKKyAgICAgICAgc3dpdGNo
IChjb2xvci5yZ2IoKS52YWx1ZSgpKSB7CisgICAgICAgIGNhc2UgQ29sb3I6OnRyYW5zcGFyZW50
LnZhbHVlKCk6IHsKICAgICAgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHRyYW5zcGFyZW50Q0dD
b2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKICAgICAgICAgICAgIHJldHVybiB0cmFuc3BhcmVu
dENHQ29sb3I7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDb2xvcjo6YmxhY2s6IHsKKyAgICAg
ICAgY2FzZSBDb2xvcjo6YmxhY2sudmFsdWUoKTogewogICAgICAgICAgICAgc3RhdGljIENHQ29s
b3JSZWYgYmxhY2tDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAgICAgICAgICAgcmV0
dXJuIGJsYWNrQ0dDb2xvcjsKICAgICAgICAgfQotICAgICAgICBjYXNlIENvbG9yOjp3aGl0ZTog
eworICAgICAgICBjYXNlIENvbG9yOjp3aGl0ZS52YWx1ZSgpOiB7CiAgICAgICAgICAgICBzdGF0
aWMgQ0dDb2xvclJlZiB3aGl0ZUNHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7CiAgICAgICAg
ICAgICByZXR1cm4gd2hpdGVDR0NvbG9yOwogICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBBU1NFUlQoY29sb3IuaXNFeHRlbmRlZCgpIHx8IGNvbG9yLnJnYigpKTsKKyAgICBBU1NF
UlQoY29sb3IuaXNFeHRlbmRlZCgpIHx8IGNvbG9yLnJnYigpLnZhbHVlKCkpOwogCiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFRpbnlMUlVDYWNoZTxDb2xvciwgUmV0YWluUHRyPENHQ29sb3JS
ZWY+LCAzMj4+IGNhY2hlOwogICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQoY29sb3IpLmdldCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9y
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1t
CmluZGV4IDFmZjViNzIzYmQ5MjI3YjZkMTI2OWNkZjk0ZTYzZDIyNTIyYjdmNjAuLjE4NzQ5NTJh
YTJjYjIwZjk2NThlZjBiMmQ0YzMzN2RmODBjMzU0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KQEAgLTQwLDcgKzQwLDcgQEAgc3Rh
dGljIGJvb2wgdXNlT2xkQXF1YUZvY3VzUmluZ0NvbG9yOwogCiBDb2xvciBvbGRBcXVhRm9jdXNS
aW5nQ29sb3IoKQogewotICAgIHJldHVybiAweEZGN0RBREQ5OworICAgIHJldHVybiBTaW1wbGVD
b2xvciB7IDB4RkY3REFERDkgfTsKIH0KIAogdm9pZCBzZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdD
b2xvcihib29sIG5ld1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwCmluZGV4IGRlYWRkZDZmOGY4ZjMwN2IzOWJm
MWMxMWM0YmRiNGE0YzNiNDEwYjAuLjhjMzFiNjcyNmVhNDY3MTljYzVhYWY1Yjg4MDVkMWUzZWM5
MDgzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9D
b2xvckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vQ29sb3JEaXJlY3QyRC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgQ29sb3I6Om9wZXJhdG9yIEQy
RDFfQ09MT1JfRigpIGNvbnN0CiB7CiAgICAgZmxvYXQgY29sb3JBbHBoYSA9IGFscGhhKCkgLyAy
NTUuMGY7CiAKLSAgICByZXR1cm4gRDJEMTo6Q29sb3JGKHJnYigpLCBjb2xvckFscGhhKTsKKyAg
ICByZXR1cm4gRDJEMTo6Q29sb3JGKHJnYigpLnZhbHVlKCksIGNvbG9yQWxwaGEpOwogfQogCiBD
b2xvcjo6b3BlcmF0b3IgRDJEMV9WRUNUT1JfNEYoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmNwcAppbmRleCA4YTEzMzNjNjU0Y2QyNmZjOWZjZjIxZDNlODkwNDVlYzMyZjU0ZDFlLi5m
N2Y3ZjcxMDExNGU4YmIyNDZiNDQ2ZjY3MjU0Mzg2ZGQ4NjhkZjg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmNwcApAQCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpy
b3dBdmFpbGFibGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCByb3dJbmRleCwK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lk
dGg7ICsreCwgcGl4ZWwgKz0gMywgKythZGRyZXNzKQotICAgICAgICAgICAgKmFkZHJlc3MgPSBt
YWtlUkdCKHBpeGVsWzBdLCBwaXhlbFsxXSwgcGl4ZWxbMl0pOworICAgICAgICAgICAgKmFkZHJl
c3MgPSAweEZGMDAwMDAwIHwgcGl4ZWxbMF0gPDwgMTYgfCBwaXhlbFsxXSA8PCA4IHwgcGl4ZWxb
Ml07CiAgICAgfQogCiAgICAgaWYgKG5vblRyaXZpYWxBbHBoYU1hc2sgJiYgIWJ1ZmZlci5oYXNB
bHBoYSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA1ODQ2MmY2MjJjMjBkM2Yy
OGIyNTM4YjRhNDlhOGNkY2ZkYTU2NGJhLi4xNmQyOGZjNTU1M2E1NDUyMGRkMTY0OWNkNzgwYjRj
ODRkMjRhZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtODMsOCArODMsOCBA
QCBzdGF0aWMgaW5saW5lIFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+IGRlZmF1bHREZXZpY2VzKCkK
ICAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIlNDUkVFTi0xIl9zLCAiTW9jayBzY3JlZW4gZGV2
aWNlIDEiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGU6OlNjcmVlbiwgQ29sb3I6OmxpZ2h0R3JheSwgeyAzODQwLCAyMTYwIH0gfSB9LAogICAgICAg
ICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTIiX3MsICJNb2NrIHNjcmVlbiBkZXZpY2UgMiJf
cywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2Ny
ZWVuLCBDb2xvcjo6eWVsbG93LCB7IDE5MjAsIDEwODAgfSB9IH0sCiAKLSAgICAgICAgTW9ja01l
ZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9jayB3aW5kb3cgMSJfcywgTW9ja0Rpc3BsYXlQ
cm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCAweGZmZjFiNSwg
eyA2NDAsIDQ4MCB9IH0gfSwKLSAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9z
LCAiTW9jayB3aW5kb3cgMiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCAweGZmZDBiNSwgeyAxMjgwLCA2MDAgfSB9IH0sCisgICAg
ICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1vY2sgd2luZG93IDEiX3MsIE1v
Y2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwg
U2ltcGxlQ29sb3IgeyAweGZmZjFiNSB9LCB7IDY0MCwgNDgwIH0gfSB9LAorICAgICAgICBNb2Nr
TWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAyIl9zLCBNb2NrRGlzcGxh
eVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIFNpbXBsZUNv
bG9yIHsgMHhmZmQwYjUgfSwgeyAxMjgwLCA2MDAgfSB9IH0sCiAgICAgfTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcAppbmRleCA1YWM5ZDY2MDZjNDIyMTI0OGJjNDFkZTkzODljZTVjODdlNGE0MTdiLi42
N2QyYTE3ZmNkMDQ4N2Y4ZDk4NDI2MzM5NjQ0NWFmNzA5ZGFhOTFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cApAQCAtMjYyLDEyICsyNjIsMTAgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJh
d0FuaW1hdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAKIHZvaWQgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmRyYXdCb3hlcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IFJHQkEzMiBtYWdlbnRhID0gMHhmZmZmMDBmZjsKLSAgICBzdGF0aWMgY29u
c3QgUkdCQTMyIHllbGxvdyA9IDB4ZmZmZmZmMDA7Ci0gICAgc3RhdGljIGNvbnN0IFJHQkEzMiBi
bHVlID0gMHhmZjAwMDBmZjsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIHJlZCA9IDB4ZmZmZjAw
MDA7Ci0gICAgc3RhdGljIGNvbnN0IFJHQkEzMiBncmVlbiA9IDB4ZmYwMDgwMDA7Ci0gICAgc3Rh
dGljIGNvbnN0IFJHQkEzMiBjeWFuID0gMHhGRjAwRkZGRjsKKyAgICBjb25zdGV4cHIgU2ltcGxl
Q29sb3IgbWFnZW50YSB7IDB4ZmZmZjAwZmYgfTsKKyAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3Ig
Ymx1ZSB7IDB4ZmYwMDAwZmYgfTsKKyAgICBjb25zdGV4cHIgU2ltcGxlQ29sb3IgcmVkIHsgMHhm
ZmZmMDAwMCB9OworICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBkYXJrR3JlZW4geyAweGZmMDA4
MDAwIH07CiAKICAgICBJbnRTaXplIHNpemUgPSBjYXB0dXJlU2l6ZSgpOwogICAgIGZsb2F0IGJv
eFNpemUgPSBzaXplLndpZHRoKCkgKiAuMDM1OwpAQCAtMzE3LDkgKzMxNSw5IEBAIHZvaWQgTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdCb3hlcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
CiAKICAgICBib3hUb3AgKz0gYm94U2l6ZSArIDI7CiAgICAgYm94TGVmdCA9IGJveFNpemU7Ci0g
ICAgQ29sb3IgYm94Q29sb3JzW10gPSB7IENvbG9yOjp3aGl0ZSwgeWVsbG93LCBjeWFuLCBncmVl
biwgbWFnZW50YSwgcmVkLCBibHVlIH07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emVvZihib3hDb2xvcnMpIC8gc2l6ZW9mKGJveENvbG9yc1swXSk7IGkrKykgewotICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChib3hMZWZ0LCBib3hUb3AsIGJveFNpemUgKyAxLCBi
b3hTaXplICsgMSksIGJveENvbG9yc1tpXSk7CisgICAgY29uc3RleHByIFNpbXBsZUNvbG9yIGJv
eENvbG9yc1tdID0geyBDb2xvcjo6d2hpdGUsIENvbG9yOjp5ZWxsb3csIENvbG9yOjpjeWFuLCBk
YXJrR3JlZW4sIG1hZ2VudGEsIHJlZCwgYmx1ZSB9OworICAgIGZvciAoYXV0byYgYm94Q29sb3Ig
OiBib3hDb2xvcnMpIHsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoYm94TGVm
dCwgYm94VG9wLCBib3hTaXplICsgMSwgYm94U2l6ZSArIDEpLCBib3hDb2xvcik7CiAgICAgICAg
IGJveExlZnQgKz0gYm94U2l6ZSArIDE7CiAgICAgfQogICAgIGNvbnRleHQuc3Ryb2tlUGF0aCht
X3BhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxi
YXJUaGVtZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJU
aGVtZU1vY2suY3BwCmluZGV4IGVkOGFiYjRhMTQ2YWJjNzEwYzQ1YzQ3NzMwZGI4NTAwM2RlNjZj
NDkuLjVhNjc1YTI1ZWJiMjA2Yzc0NmJkNDRjYzIyYTQ1MGMyODc2Y2E2YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lTW9jazo6c2Nyb2xsYmFyVGhpY2tuZXNz
KFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplLCBTY3IKIAogdm9pZCBTY3JvbGxiYXJU
aGVtZU1vY2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
U2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRyYWNrUmVjdCkKIHsKLSAgICBj
b250ZXh0LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLmVuYWJsZWQoKSA/IENvbG9yOjps
aWdodEdyYXkgOiBDb2xvcigweEZGRTBFMEUwKSk7CisgICAgY29udGV4dC5maWxsUmVjdCh0cmFj
a1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5IDogU2ltcGxlQ29s
b3IgeyAweEZGRTBFMEUwIH0pOwogfQogCiB2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRU
aHVtYihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25z
dCBJbnRSZWN0JiB0aHVtYlJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IDk4Y2RkOGJlZmRiYTFiYTc4MmMwM2U2YjI1MjFkY2E4MDc1ZmNkYWIuLjNk
ZjQ1NWIwNjMxMmVlNWNkNjFmN2VkMWJiODhjN2M3NTc3Y2IzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xODM3LDkgKzE4MzcsMTEgQEAgUmVuZGVy
RnJhZ21lbnRlZEZsb3cqIFJlbmRlck9iamVjdDo6bG9jYXRlRW5jbG9zaW5nRnJhZ21lbnRlZEZs
b3coKSBjb25zdAogdm9pZCBSZW5kZXJPYmplY3Q6OmNhbGN1bGF0ZUJvcmRlclN0eWxlQ29sb3Io
Y29uc3QgQm9yZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCb3hTaWRlJiBzaWRlLCBDb2xvciYgY29s
b3IpCiB7CiAgICAgQVNTRVJUKHN0eWxlID09IEJvcmRlclN0eWxlOjpJbnNldCB8fCBzdHlsZSA9
PSBCb3JkZXJTdHlsZTo6T3V0c2V0KTsKKwogICAgIC8vIFRoaXMgdmFsdWVzIHdlcmUgZGVyaXZl
ZCBlbXBpcmljYWxseS4KLSAgICBjb25zdCBSR0JBMzIgYmFzZURhcmtDb2xvciA9IDB4RkYyMDIw
MjA7Ci0gICAgY29uc3QgUkdCQTMyIGJhc2VMaWdodENvbG9yID0gMHhGRkVCRUJFQjsKKyAgICBj
b25zdGV4cHIgU2ltcGxlQ29sb3IgYmFzZURhcmtDb2xvciB7IDB4RkYyMDIwMjAgfTsKKyAgICBj
b25zdGV4cHIgU2ltcGxlQ29sb3IgYmFzZUxpZ2h0Q29sb3IgeyAweEZGRUJFQkVCIH07CisKICAg
ICBlbnVtIE9wZXJhdGlvbiB7IERhcmtlbiwgTGlnaHRlbiB9OwogCiAgICAgT3BlcmF0aW9uIG9w
ZXJhdGlvbiA9IChzaWRlID09IEJTVG9wIHx8IHNpZGUgPT0gQlNMZWZ0KSA9PSAoc3R5bGUgPT0g
Qm9yZGVyU3R5bGU6Okluc2V0KSA/IERhcmtlbiA6IExpZ2h0ZW47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCAwYzM1YjRmMTc2MTJkNDdhNjY0NThkM2YzNzI2
NTcxZWJhYmY5YWY3Li42MDk3YjRjNmEzZTllYmQzMTkyOTI2ZmUzOTM5YjhiYjVkN2ZlZWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTEyODUsNzMgKzEy
ODUsNzIgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSUQgY3NzVmFs
dWVJZCwgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGkKIHsKICAgICBzd2l0Y2ggKGNzc1ZhbHVl
SWQpIHsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0TGluazoKLSAgICAgICAgcmV0dXJuIG9wdGlv
bnMuY29udGFpbnMoU3R5bGVDb2xvcjo6T3B0aW9uczo6Rm9yVmlzaXRlZExpbmspID8gMHhGRjU1
MUE4QiA6IDB4RkYwMDAwRUU7CisgICAgICAgIHJldHVybiBvcHRpb25zLmNvbnRhaW5zKFN0eWxl
Q29sb3I6Ok9wdGlvbnM6OkZvclZpc2l0ZWRMaW5rKSA/IFNpbXBsZUNvbG9yIHsgMHhGRjU1MUE4
QiB9IDogU2ltcGxlQ29sb3IgeyAweEZGMDAwMEVFIH07CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtp
dEFjdGl2ZWxpbms6Ci0gICAgICAgIHJldHVybiAweEZGRkYwMDAwOworICAgICAgICByZXR1cm4g
U2ltcGxlQ29sb3IgeyAweEZGRkYwMDAwIH07CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJvcmRl
cjoKLSAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAgICAgIHJldHVybiBDb2xvcjo6d2hp
dGU7CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJ1dHRvbnRleHQ6Ci0gICAgICAgIHJldHVybiAw
eEZGMDAwMDAwOworICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFs
dWVBY3RpdmVjYXB0aW9uOgotICAgICAgICByZXR1cm4gMHhGRkNDQ0NDQzsKKyAgICAgICAgcmV0
dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkNDQ0NDQyB9OwogICAgIGNhc2UgQ1NTVmFsdWVBcHB3b3Jr
c3BhY2U6Ci0gICAgICAgIHJldHVybiAweEZGRkZGRkZGOworICAgICAgICByZXR1cm4gQ29sb3I6
OndoaXRlOwogICAgIGNhc2UgQ1NTVmFsdWVCYWNrZ3JvdW5kOgotICAgICAgICByZXR1cm4gMHhG
RjYzNjNDRTsKKyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjYzNjNDRSB9OwogICAg
IGNhc2UgQ1NTVmFsdWVCdXR0b25mYWNlOgotICAgICAgICByZXR1cm4gMHhGRkMwQzBDMDsKKyAg
ICAgICAgcmV0dXJuIENvbG9yOjpsaWdodEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbmhp
Z2hsaWdodDoKLSAgICAgICAgcmV0dXJuIDB4RkZEREREREQ7CisgICAgICAgIHJldHVybiBTaW1w
bGVDb2xvciB7IDB4RkZEREREREQgfTsKICAgICBjYXNlIENTU1ZhbHVlQnV0dG9uc2hhZG93Ogot
ICAgICAgICByZXR1cm4gMHhGRjg4ODg4ODsKKyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsg
MHhGRjg4ODg4OCB9OwogICAgIGNhc2UgQ1NTVmFsdWVCdXR0b250ZXh0OgotICAgICAgICByZXR1
cm4gMHhGRjAwMDAwMDsKKyAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENT
U1ZhbHVlQ2FwdGlvbnRleHQ6Ci0gICAgICAgIHJldHVybiAweEZGMDAwMDAwOworICAgICAgICBy
ZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVHcmF5dGV4dDoKLSAgICAgICAg
cmV0dXJuIDB4RkY4MDgwODA7CisgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkY4MDgw
ODAgfTsKICAgICBjYXNlIENTU1ZhbHVlSGlnaGxpZ2h0OgotICAgICAgICByZXR1cm4gMHhGRkI1
RDVGRjsKKyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkI1RDVGRiB9OwogICAgIGNh
c2UgQ1NTVmFsdWVIaWdobGlnaHR0ZXh0OgotICAgICAgICByZXR1cm4gMHhGRjAwMDAwMDsKKyAg
ICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlSW5hY3RpdmVib3Jk
ZXI6Ci0gICAgICAgIHJldHVybiAweEZGRkZGRkZGOworICAgICAgICByZXR1cm4gQ29sb3I6Ondo
aXRlOwogICAgIGNhc2UgQ1NTVmFsdWVJbmFjdGl2ZWNhcHRpb246Ci0gICAgICAgIHJldHVybiAw
eEZGRkZGRkZGOworICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogICAgIGNhc2UgQ1NTVmFs
dWVJbmFjdGl2ZWNhcHRpb250ZXh0OgotICAgICAgICByZXR1cm4gMHhGRjdGN0Y3RjsKKyAgICAg
ICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjdGN0Y3RiB9OwogICAgIGNhc2UgQ1NTVmFsdWVJ
bmZvYmFja2dyb3VuZDoKLSAgICAgICAgcmV0dXJuIDB4RkZGQkZDQzU7CisgICAgICAgIHJldHVy
biBTaW1wbGVDb2xvciB7IDB4RkZGQkZDQzUgfTsKICAgICBjYXNlIENTU1ZhbHVlSW5mb3RleHQ6
Ci0gICAgICAgIHJldHVybiAweEZGMDAwMDAwOworICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNr
OwogICAgIGNhc2UgQ1NTVmFsdWVNZW51OgotICAgICAgICByZXR1cm4gMHhGRkMwQzBDMDsKKyAg
ICAgICAgcmV0dXJuIENvbG9yOjpsaWdodEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZU1lbnV0ZXh0
OgotICAgICAgICByZXR1cm4gMHhGRjAwMDAwMDsKKyAgICAgICAgcmV0dXJuIENvbG9yOjpibGFj
azsKICAgICBjYXNlIENTU1ZhbHVlU2Nyb2xsYmFyOgotICAgICAgICByZXR1cm4gMHhGRkZGRkZG
RjsKKyAgICAgICAgcmV0dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlVGV4dDoK
LSAgICAgICAgcmV0dXJuIDB4RkYwMDAwMDA7CisgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7
CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZGRhcmtzaGFkb3c6Ci0gICAgICAgIHJldHVybiAweEZG
NjY2NjY2OworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGNjY2NjY2IH07CiAgICAg
Y2FzZSBDU1NWYWx1ZVRocmVlZGZhY2U6Ci0gICAgICAgIHJldHVybiAweEZGQzBDMEMwOworICAg
ICAgICByZXR1cm4gQ29sb3I6OmxpZ2h0R3JheTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkaGln
aGxpZ2h0OgotICAgICAgICByZXR1cm4gMHhGRkRERERERDsKKyAgICAgICAgcmV0dXJuIFNpbXBs
ZUNvbG9yIHsgMHhGRkRERERERCB9OwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRsaWdodHNoYWRv
dzoKLSAgICAgICAgcmV0dXJuIDB4RkZDMEMwQzA7CisgICAgICAgIHJldHVybiBDb2xvcjo6bGln
aHRHcmF5OwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRzaGFkb3c6Ci0gICAgICAgIHJldHVybiAw
eEZGODg4ODg4OworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGODg4ODg4IH07CiAg
ICAgY2FzZSBDU1NWYWx1ZVdpbmRvdzoKLSAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAg
ICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvd2ZyYW1lOgot
ICAgICAgICByZXR1cm4gMHhGRkNDQ0NDQzsKKyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsg
MHhGRkNDQ0NDQyB9OwogICAgIGNhc2UgQ1NTVmFsdWVXaW5kb3d0ZXh0OgotICAgICAgICByZXR1
cm4gMHhGRjAwMDAwMDsKKyAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBkZWZhdWx0
OgotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9Ci0gICAgcmV0dXJu
IENvbG9yKCk7CiB9CiAKIENvbG9yIFJlbmRlclRoZW1lOjphY3RpdmVUZXh0U2VhcmNoSGlnaGxp
Z2h0Q29sb3IoT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IG9wdGlvbnMpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggY2Q4YWY2ZTJh
Nzg1ZjAxNjkyNDdiMGQxZjJjYWE3N2M5M2M2MTQwZi4uMjM5ZmUyMDQ4Mjk4NmU5Mzc2MGYwNDk2
MzhlOGJiMmZmMmEzYzdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbQpAQCAtODE5LDExICs4MTksMTEgQEAgQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnN5c3Rl
bUNvbG9yKENTU1ZhbHVlSUQgY3NzVmFsdWVJRCwgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok8KICAg
ICAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZGZhY2U6CiAgICAgICAgICAgICAvLyBXZSBzZWxlY3Rl
ZCB0aGlzIHZhbHVlIGluc3RlYWQgb2YgW05TQ29sb3IgY29udHJvbENvbG9yXSB0byBhdm9pZCB3
ZWJzaXRlIGluY29tcGF0aWJpbGl0aWVzLgogICAgICAgICAgICAgLy8gV2UgbWF5IHdhbnQgdG8g
Y29uc2lkZXIgY2hhbmdpbmcgdG8gW05TQ29sb3IgY29udHJvbENvbG9yXSBzb21lIGRheS4KLSAg
ICAgICAgICAgIHJldHVybiAweEZGQzBDMEMwOworICAgICAgICAgICAgcmV0dXJuIFNpbXBsZUNv
bG9yIHsgMHhGRkMwQzBDMCB9OwogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVJbmZvYmFja2dyb3Vu
ZDoKICAgICAgICAgICAgIC8vIE5vIGNvcnJlc3BvbmRpbmcgTlNDb2xvciBmb3IgdGhpcyBzbyB3
ZSB1c2UgYSBoYXJkIGNvZGVkIHZhbHVlLgotICAgICAgICAgICAgcmV0dXJuIDB4RkZGQkZDQzU7
CisgICAgICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGRkJGQ0M1IH07CiAKICAgICAg
ICAgY2FzZSBDU1NWYWx1ZU1lbnU6CiAgICAgICAgICAgICByZXR1cm4gbWVudUJhY2tncm91bmRD
b2xvcigpOwpAQCAtODMyLDMwICs4MzIsMzAgQEAgQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnN5c3Rl
bUNvbG9yKENTU1ZhbHVlSUQgY3NzVmFsdWVJRCwgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok8KICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJvcmRlcjoKICAgICAgICAgICAgIC8vIEhhcmRjb2Rl
ZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3
ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAgICAgICAgICAgaWYgKGxvY2FsQXBwZWFyYW5jZS51
c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbG9yKDB4RkYx
QUE5RkYsIENvbG9yOjpTZW1hbnRpYyk7Ci0gICAgICAgICAgICByZXR1cm4gQ29sb3IoMHhGRjAw
NjdGNCwgQ29sb3I6OlNlbWFudGljKTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVD
b2xvciB7IDB4RkYxQUE5RkYgfSwgQ29sb3I6OlNlbWFudGljIH07CisgICAgICAgICAgICByZXR1
cm4geyBTaW1wbGVDb2xvciB7IDB4RkYwMDY3RjQgfSwgQ29sb3I6OlNlbWFudGljIH07CiAKICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udHJvbEFjY2VudDoKICAgICAgICAgICAg
IC8vIEhhcmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFyYW5jZSBwcmVmZXJl
bmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAgICAgICAgICAgLy8gU2FtZSBj
b2xvciBpbiBsaWdodCBhbmQgZGFyayBhcHBlYXJhbmNlcy4KLSAgICAgICAgICAgIHJldHVybiBD
b2xvcigweEZGMDA3QUZGLCBDb2xvcjo6U2VtYW50aWMpOworICAgICAgICAgICAgcmV0dXJuIHsg
U2ltcGxlQ29sb3IgeyAweEZGMDA3QUZGIH0sIENvbG9yOjpTZW1hbnRpYyB9OwogCiAgICAgICAg
IGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNlbGVjdGVkQ29udGVudEJhY2tncm91bmQ6CiAgICAg
ICAgICAgICAvLyBIYXJkY29kZWQgdG8gYXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFuY2Ug
cHJlZmVyZW5jZSB0byB0aGUgd2ViIGZvciBmaW5nZXJwcmludGluZy4KICAgICAgICAgICAgIGlm
IChsb2NhbEFwcGVhcmFuY2UudXNpbmdEYXJrQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAg
IHJldHVybiBDb2xvcigweEZGMDA1OEQwLCBDb2xvcjo6U2VtYW50aWMpOwotICAgICAgICAgICAg
cmV0dXJuIENvbG9yKDB4RkYwMDYzRTEsIENvbG9yOjpTZW1hbnRpYyk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweEZGMDA1OEQwIH0sIENvbG9yOjpTZW1hbnRpYyB9
OworICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweEZGMDA2M0UxIH0sIENvbG9y
OjpTZW1hbnRpYyB9OwogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVIaWdobGlnaHQ6CiAgICAgICAg
IGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNlbGVjdGVkVGV4dEJhY2tncm91bmQ6CiAgICAgICAg
ICAgICAvLyBIYXJkY29kZWQgdG8gYXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFuY2UgcHJl
ZmVyZW5jZSB0byB0aGUgd2ViIGZvciBmaW5nZXJwcmludGluZy4KICAgICAgICAgICAgIGlmIChs
b2NhbEFwcGVhcmFuY2UudXNpbmdEYXJrQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBDb2xvcigweENDM0Y2MzhCLCBDb2xvcjo6U2VtYW50aWMpOwotICAgICAgICAgICAgcmV0
dXJuIENvbG9yKDB4OTk4MEJDRkUsIENvbG9yOjpTZW1hbnRpYyk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweENDM0Y2MzhCIH0sIENvbG9yOjpTZW1hbnRpYyB9Owor
ICAgICAgICAgICAgcmV0dXJuIHsgU2ltcGxlQ29sb3IgeyAweDk5ODBCQ0ZFIH0sIENvbG9yOjpT
ZW1hbnRpYyB9OwogCiAjaWYgIUhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCiAgICAgICAgIGNh
c2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUNvbnRhaW5lckJvcmRlcjoKLSAgICAgICAgICAgIHJldHVy
biAweEZGQzVDNUM1OworICAgICAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkM1QzVD
NSB9OwogI2VuZGlmCiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtRXZlbkFsdGVy
bmF0aW5nQ29udGVudEJhY2tncm91bmQ6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCA1NmQyN2QwMWM2ZDJiMjEwOGNjY2I3M2Q3YjI2MDAz
ZTY3NTlmMThiLi5lNTRhODMyNDgxNTQxMmJhOGM2ZmRmNGY4MjE5MTQ0ODUxYWZiNzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC0yNDQs
MTcgKzI0NCwxNyBAQCB2b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3QmIG8sCiAgICAgICAgICAgICAvLyBEbyBu
b3QgZHVtcCBpbnZhbGlkIG9yIHRyYW5zcGFyZW50IGJhY2tncm91bmRzLCBzaW5jZSB0aGF0IGlz
IHRoZSBkZWZhdWx0LgogICAgICAgICAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yID0gby5zdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAg
ICAgICAgICAgICBpZiAoby5wYXJlbnQoKS0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLnJnYigpICE9IGJhY2tncm91bmRDb2xvci5yZ2Io
KQotICAgICAgICAgICAgICAgICYmIGJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkgJiYgYmFja2dy
b3VuZENvbG9yLnJnYigpKQorICAgICAgICAgICAgICAgICYmIGJhY2tncm91bmRDb2xvci5yZ2Io
KSAhPSBDb2xvcjo6dHJhbnNwYXJlbnQpCiAgICAgICAgICAgICAgICAgdHMgPDwgIiBbYmdjb2xv
cj0iIDw8IGJhY2tncm91bmRDb2xvci5uYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIDw8ICJdIjsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgQ29sb3IgdGV4dEZpbGxDb2xvciA9IG8uc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKTsK
ICAgICAgICAgICAgIGlmIChvLnBhcmVudCgpLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpLnJnYigpICE9IHRleHRGaWxsQ29sb3Iu
cmdiKCkgIAotICAgICAgICAgICAgICAgICYmIHRleHRGaWxsQ29sb3IuaXNWYWxpZCgpICYmIHRl
eHRGaWxsQ29sb3IucmdiKCkgIT0gY29sb3IucmdiKCkgJiYgdGV4dEZpbGxDb2xvci5yZ2IoKSkK
KyAgICAgICAgICAgICAgICAmJiB0ZXh0RmlsbENvbG9yLnJnYigpICE9IGNvbG9yLnJnYigpICYm
IHRleHRGaWxsQ29sb3IucmdiKCkgIT0gQ29sb3I6OnRyYW5zcGFyZW50KQogICAgICAgICAgICAg
ICAgIHRzIDw8ICIgW3RleHRGaWxsQ29sb3I9IiA8PCB0ZXh0RmlsbENvbG9yLm5hbWVGb3JSZW5k
ZXJUcmVlQXNUZXh0KCkgPDwgIl0iOwogCiAgICAgICAgICAgICBDb2xvciB0ZXh0U3Ryb2tlQ29s
b3IgPSBvLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4
dFN0cm9rZUNvbG9yKTsKICAgICAgICAgICAgIGlmIChvLnBhcmVudCgpLT5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcikucmdiKCkg
IT0gdGV4dFN0cm9rZUNvbG9yLnJnYigpCi0gICAgICAgICAgICAgICAgJiYgdGV4dFN0cm9rZUNv
bG9yLmlzVmFsaWQoKSAmJiB0ZXh0U3Ryb2tlQ29sb3IucmdiKCkgIT0gY29sb3IucmdiKCkgJiYg
dGV4dFN0cm9rZUNvbG9yLnJnYigpKQorICAgICAgICAgICAgICAgICYmIHRleHRTdHJva2VDb2xv
ci5yZ2IoKSAhPSBjb2xvci5yZ2IoKSAmJiB0ZXh0U3Ryb2tlQ29sb3IucmdiKCkgIT0gQ29sb3I6
OnRyYW5zcGFyZW50KQogICAgICAgICAgICAgICAgIHRzIDw8ICIgW3RleHRTdHJva2VDb2xvcj0i
IDw8IHRleHRTdHJva2VDb2xvci5uYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIDw8ICJdIjsKIAog
ICAgICAgICAgICAgaWYgKG8ucGFyZW50KCktPnN0eWxlKCkudGV4dFN0cm9rZVdpZHRoKCkgIT0g
by5zdHlsZSgpLnRleHRTdHJva2VXaWR0aCgpICYmIG8uc3R5bGUoKS50ZXh0U3Ryb2tlV2lkdGgo
KSA+IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAppbmRleCA4ODBkMThjYzJlODE0NGE2NWMzYjQxNTg2YzgwNjIxZmU5MTYxZjY2Li4xYzAwYmRh
NTNmNWI2YjQzNGVhNzE5NzlmNGU2MzIxMzgxZGE1NzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE0ODksOCArMTQ4OSwxMCBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8Q29sb3I+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
Q29sb3ImIGNvbG9yKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgdWludDMyX3QgdmFs
dWUgPSBjb2xvci5yZ2IoKS52YWx1ZSgpOworCiAgICAgZW5jb2RlciA8PCB0cnVlOwotICAgIGVu
Y29kZXIgPDwgY29sb3IucmdiKCk7CisgICAgZW5jb2RlciA8PCB2YWx1ZTsKIH0KIAogYm9vbCBB
cmd1bWVudENvZGVyPENvbG9yPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENvbG9yJiBjb2xv
cikKQEAgLTE1MjgsMTEgKzE1MzAsMTEgQEAgYm9vbCBBcmd1bWVudENvZGVyPENvbG9yPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIENvbG9yJiBjb2xvcikKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0gICAgUkdCQTMyIHJnYmE7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZ2Jh
KSkKKyAgICB1aW50MzJfdCB2YWx1ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29sb3IgPSBDb2xvcihyZ2JhKTsKKyAgICBj
b2xvciA9IFNpbXBsZUNvbG9yIHsgdmFsdWUgfTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ0M2EwZDk5
ODE2OGZhMzVkODM4YzMzMGQ2MTY1ZTM4YTQ4MjE2MzUuLjJiMGZlZGM1ODJlNzllZGM2YjQwMzQw
MDQwYjQyOTk2MmZmNjg4MGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMS0yOCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBSR0JBMzIgdHlwZWRlZiB3aXRoIGEg
Y2xhc3MgdG8gaW1wcm92ZSB0eXBlIHNhZmV0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BE
RlNuYXBzaG90Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IFVzZSB0aGUgQ29s
b3IgY29uc3RydWN0b3IgaW5zdGVhZCBvZiBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkLgorCiAyMDIw
LTAxLTI4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBU
ZXN0V2ViS2l0QVBJOiBDb25kaXRpb25hbGl6ZSBkZXZpY2Ugb3JpZW50YXRpb24gdGVzdHMgb24g
RU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCmluZGV4IDEyZjVmZjU3ZTQxYzUwNDMw
NGNjZjU2NTNmZGZlMDljYWY4ODkyMWQuLjFiYmZkY2E5ZTk2YzUzNWMyYWE5YmIzY2U1NDQ1ODAx
N2U2NGJlODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUERGU25hcHNob3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QREZTbmFwc2hvdC5tbQpAQCAtNjAsNyArNjAsNyBAQCBURVNUKFBERlNuYXBzaG90LCBG
dWxsQ29udGVudCkKICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVs0XSwgJ28nKTsKIAog
ICAgICAgICAvLyBUaGUgZW50aXJlIHBhZ2Ugc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEgcG9pbnQg
aW4gdGhlIG1pZGRsZSB0byBjaGVjay4KLSAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JB
dFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9y
KDAsIDI1NSwgMCkpOwogCiAgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CiAgICAgfV07
CkBAIC05MSw3ICs5MSw3IEBAIFRFU1QoUERGU25hcHNob3QsIFN1YnJlZ2lvbnMpCiAgICAgICAg
IEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7CiAKICAgICAgICAgLy8gVGhl
IGVudGlyZSBwYWdlIHNob3VsZCBiZSBncmVlbi4gUGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUg
dG8gY2hlY2suCi0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCgyMDAsIDE1
MCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDIwMCwgMTUwKSA9PSBDb2xvcigwLCAyNTUsIDApKTsK
IAogICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOwogICAgIH1dOwpAQCAtMTExLDEwICsx
MTEsMTAgQEAgVEVTVChQREZTbmFwc2hvdCwgU3VicmVnaW9ucykKICAgICAgICAgRVhQRUNUX1RS
VUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgMTIw
MCwgMTIwMCkpKTsKIAogICAgICAgICAvLyBBIHBpeGVsIHRoYXQgd2FzIGluIHRoZSB2aWV3IHNo
b3VsZCBiZSBncmVlbi4gUGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCi0gICAg
ICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCgyMDAsIDE1MCkgPT0gQ29sb3I6OmNy
ZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29s
b3JBdFBvaW50KDIwMCwgMTUwKSA9PSBDb2xvcigwLCAyNTUsIDApKTsKIAogICAgICAgICAvLyBB
IHBpeGVsIHRoYXQgd2FzIG91dHNpZGUgdGhlIHZpZXcgc2hvdWxkIGFsc28gYmUgZ3JlZW4gKHdl
IGV4dGVuZCBiYWNrZ3JvdW5kIGNvbG9yIG91dCkuIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxl
IHRvIGNoZWNrLgotICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoOTAwLCA3
MDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg5MDAsIDcwMCkgPT0gQ29sb3IoMCwgMjU1LCAwKSk7
CiAKICAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKICAgICB9XTsKQEAgLTE0MCwyMCAr
MTQwLDIwIEBAIFRFU1QoUERGU25hcHNob3QsIE92ZXIyMDBJbmNoZXMpCiAgICAgICAgIGF1dG8g
cGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOwogICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0
cik7CiAgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygp
LCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHBh
Z2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAy
NTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAw
KSA9PSBDb2xvcigwLCAyNTUsIDApKTsKICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3Rl
ckNvdW50KCksIDV1KTsKIAogICAgICAgICBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMSk7CiAgICAg
ICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKICAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0
RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkp
KTsKLSAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBD
b2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShw
YWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yKDAsIDI1NSwgMCkpOwogCiAgICAg
ICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7CiAKICAgICAgICAgcGFn
ZSA9IGRvY3VtZW50LT5wYWdlKDIpOwogICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7
CiAgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBD
R1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5j
b2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAw
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0g
Q29sb3IoMCwgMjU1LCAwKSk7CiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3Vu
dCgpLCAwdSk7CiAKICAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKQEAgLTE3OCw3ICsx
NzgsNyBAQCBURVNUKFBERlNuYXBzaG90LCBMaW5rcykKICAgICAgICAgRVhQRUNUX05FKHBhZ2Us
IG51bGxwdHIpOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2Ut
PmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7Ci0gICAgICAgIEVYUEVD
VF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hl
Y2tlZCgyNTUsIDI1NSwgMjU1KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQ
b2ludCg0MDAsIDMwMCkgPT0gQ29sb3IoMjU1LCAyNTUsIDI1NSkpOwogCiAgICAgICAgIEVYUEVD
VF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCA4dSk7CiAgICAgICAgIEVYUEVDVF9FUShwYWdl
LT50ZXh0KClbMF0sICdDJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389246</attachid>
            <date>2020-01-30 07:24:16 -0800</date>
            <delta_ts>2020-02-01 08:53:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206862-20200130072415.patch</filename>
            <type>text/plain</type>
            <size>85707</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI2MjRiMmIxNjA4MGVk
ZTAxNTkzZjhlNDExODA1MzE4YmU2YjFmMC4uMDczZTVhMjNmY2RkMmU4MmM0OTI2YTU4NGMyZWMz
ZmQ2ZDNhNmYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2OCBAQAorMjAyMC0wMS0zMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBSR0JBMzIgdHlw
ZWRlZiB3aXRoIGEgY2xhc3MgdG8gaW1wcm92ZSB0eXBlIHNhZmV0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOiBSZW1vdmUg
UkdCQ29sb3IuaC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogUmVtb3ZlIFJCR0NvbG9yLmNwcC4K
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZSBSR0JD
b2xvci5oIGFuZCBSR0JDb2xvci5jcHAuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgUkdCQ29sb3IuaC4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmdldFJlY3RWYWx1ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JW
YWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGNzcy9EZXByZWNhdGVkQ1NTT01Q
cmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01Qcmlt
aXRpdmVWYWx1ZTo6Z2V0Q291bnRlclZhbHVlIGNvbnN0KTogVXNlCisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlOjpjb3VudGVyVmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NT
T01QcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVlIGNvbnN0KTogVXNlCisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlOjpyZWN0VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NT
T01QcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JWYWx1ZSBjb25zdCk6IFVTZQorICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZTo6aXNSR0JDb2xvciBhbmQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbG9y
LgorCisgICAgICAgICogY3NzL0RlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yLmg6IFN0b3JlIGEgQ29s
b3IgaW5zdGVhZCBvZiBhbiBSR0JBMzIuCisgICAgICAgIFRha2UgYSBDb2xvciBhcmd1bWVudCBp
bnN0ZWFkIG9mIGEgUkdCQ29sb3IgYXJndW1lbnQuIFJlZmFjdG9yZWQgdG8KKyAgICAgICAgdXNl
IGEgY3JlYXRlV3JhcHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBtZW1iZXIgdG8gdGlnaHRlbiB0aGUg
Y29kZS4KKworICAgICAgICAqIGNzcy9SR0JDb2xvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
Y3NzL1JHQkNvbG9yLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBjc3MvU3R5bGVDb2xvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKTogRXhwbGlj
aXRseSBjb252ZXJ0IHRvIFNpbXBsZUNvbG9yCisgICAgICAgIHJhdGhlciB0aGFuIHJlbHlpbmcg
b24gaW5pdGlhbGl6aW5nIGEgQ29sb3IgZnJvbSBhbiBpbnRlZ2VyIEFSR0IgdmFsdWUuCisKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06IFJlbW92ZWQgaW5jbHVkZSBv
ZiBSR0JDb2xvci5oLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKTogVXNlIHRoZSBD
b2xvciBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mCisgICAgICAgIENvbG9yOjpjcmVhdGVVbmNoZWNr
ZWQuCisKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbzo6SGlzdG9yaWNN
ZW1vcnlDYXRlZ29yeUluZm8pOiBVc2UKKyAgICAgICAgZXhwbGljaXQgU2ltcGxlQ29sb3IgcmF0
aGVyIHRoYW4gcmVseWluZyBvbiBpbml0aWFsaXppbmcgYSBDb2xvciBmcm9tIGFuCisgICAgICAg
IGludGVnZXIgQVJHQiB2YWx1ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmNwcDogVXNlIGNvbnN0ZXhwciBmb3IgY29uc3RhbnQgY29sb3JzLgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVJHQik6IEltcGxlbWVudCBieSBjYWxsaW5nIG1ha2VSR0JBLgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZVJHQkEpOiBVc2UgYW4gZXhwbGljaXQgYXJndW1lbnQgbGlzdCB0byBjYWxsIHRo
ZQorICAgICAgICBTaW1wbGVDb2xvciBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Om1h
a2VSR0JBMzJGcm9tRmxvYXRzKTogSW1wbGVtZW50IGJ5IGNhbGxpbmcgbWFrZVJHQkEuCisgICAg
ICAgIChXZWJDb3JlOjpjb2xvcldpdGhPdmVycmlkZUFscGhhKTogVXNlIGFuIGV4cGxpY2l0IGFy
Z3VtZW50IGxpc3QgdG8gY2FsbAorICAgICAgICB0aGUgU2ltcGxlQ29sb3IgY29uc3RydWN0b3Iu
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhleENvbG9ySW50ZXJuYWwpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9yOjpDb2xvcik6IFJlbW92ZWQgdW5uZWVkZWQgY29kZSB0byBzZXQg
dGhlIGNvbG9yCisgICAgICAgIHRvIGludmFsaWQsIHNpbmNlIHRoYXQncyBhbHJlYWR5IHRoZSBk
ZWZhdWx0IGZvciBhIG5ldyBDb2xvciBvYmplY3QuCisgICAgICAgIEFsc28gdHdlYWsgdGhlIGxv
Z2ljIGEgYml0IGFuZCBhZGQgZXhwbGljaXQgYXJndW1lbnQgbGlzdCBmb3IgdGhlCisgICAgICAg
IFNpbXBsZUNvbG9yIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6
OnNlcmlhbGl6YXRpb25Gb3JIVE1MIGNvbnN0KTogQWRkZWQuIEZhY3RvcmVkIG91dCBvZgorICAg
ICAgICB0aGUgQ29sb3I6OnNlcmlhbGl6ZWQgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpD
b2xvcjo6c2VyaWFsaXplZCBjb25zdCk6IENoYW5nZWQgdG8gY2FsbCBzZXJpYWxpemF0aW9uRm9y
SFRNTC4KKyAgICAgICAgKFdlYkNvcmU6OmZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhh
VmFsdWUpOiBSZW5hbWVkIHNsaWdodGx5IHNob3J0ZXIuCisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVDb2xvcjo6c2VyaWFsaXphdGlvbkZvckNTUyBjb25zdCk6IEFkZGVkLiBGYWN0b3JlZCBvdXQg
b2YKKyAgICAgICAgdGhlIENvbG9yOjpjc3NUZXh0IGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3I6OmNzc1RleHQgY29uc3QpOiBDaGFuZ2VkIHRvIGNhbGwgc2VyaWFsaXphdGlvbkZv
ckNTUy4KKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMjo6c2VyaWFsaXphdGlvbkZvclJlbmRlclRy
ZWVBc1RleHQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgRmFjdG9yZWQgb3V0IG9mIG5hbWVGb3JS
ZW5kZXJUcmVlQXNUZXh0LgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6Om5hbWVGb3JSZW5kZXJU
cmVlQXNUZXh0IGNvbnN0KTogQ2hhbmdlZCB0byBjYWxsCisgICAgICAgIHNlcmlhbGl6YXRpb25G
b3JSZW5kZXJUcmVlQXNUZXh0LgorICAgICAgICAoV2ViQ29yZTo6Y29sb3JGcm9tUHJlbXVsdGlw
bGllZEFSR0IpOiBVcGRhdGVkIHRvIHVzZSB0aGUgU2ltcGxlQ29sb3IKKyAgICAgICAgbWVtYmVy
IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIHRoZSByZWQvZ3JlZW4vYmx1ZS9hbHBoYUNoYW5uZWwgZnVu
Y3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6YmxlbmQpOiBVc2UgQ29sb3I6OnRyYW5zcGFyZW50
IGZvciBibGVuZGluZyB3aGVyZSB0aGUgb2xkCisgICAgICAgIGNvZGUgdXNlZCAwIGFuZCByZWxp
ZWQgb24gaG93IHRoYXQgaXMgY29udmVydGVkIHRvIGEgQ29sb3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOiBSZXBsYWNlZCB0aGUgUkdCQTMyIHR5cGVkZWYgYW5kIHRo
ZQorICAgICAgICBSR0JBIGNsYXNzIHdpdGggYSBuZXcgY2xhc3MgbmFtZWQgU2ltcGxlQ29sb3Iu
IERlbGV0ZWQgdGhlIGZvdXIKKyAgICAgICAgcmVkL2dyZWVuL2JsdWUvYWxwaGFDaGFubmVsIGZ1
bmN0aW9ucywgdGhlIENvbG9yIGNvbnN0cnVjdG9yIHRoYXQKKyAgICAgICAgdGFrZXMgYW5kIFJH
QkEsIGFuZCB0aGUgQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCBmdW5jdGlvbi4gQ2hhbmdlZAorICAg
ICAgICB0aGUgY29sb3IgY29uc3RhbnRzIHRvIGFsbCBiZSBjb25zdGV4cHIuIE1vdmVkIHRoZSBp
bmxpbmUgZnVuY3Rpb24KKyAgICAgICAgZGVmaW5pdGlvbnMgdW50aWwgYWZ0ZXIgZXZlcnl0aGlu
ZyBpcyBkZWxjYXJlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6
IFVzZSB1aW50MzJfdCBpbnN0ZWFkIG9mIFJHQkEzMi4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QmFja2luZ1N0b3JlOjpjbGVhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNr
aW5nU3RvcmU6OmNsZWFyUmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNr
aW5nU3RvcmU6OmZpbGxSZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tp
bmdTdG9yZTo6cmVwZWF0Rmlyc3RSb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QmFja2luZ1N0b3JlOjpwaXhlbEF0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJhY2tpbmdTdG9yZTo6c2V0UGl4ZWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQmFja2luZ1N0b3JlOjpibGVuZFBpeGVsKTogRGl0dG8uIENvbnZlcnQgdG8gYW5kIGZyb20K
KyAgICAgICAgU2ltcGxlQ29sb3Igc28gd2UgY2FuIHVzZSB2YXJpb3VzIGZ1bmN0aW9ucyB0aGF0
IG9wZXJhdGUgb24gdGhhdCB0eXBlLgorICAgICAgICBVc2UgdGhlIGlzVmlzaWJsZSBhbmQgcmVk
L2dyZWVuL2JsdWUvYWxwaGFDb21wb25lbnQgbWVtYmVyIGZ1bmN0aW9ucy4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjpJbWFnZUJhY2tpbmdTdG9yZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6OnBpeGVsVmFsdWUgY29uc3QpOiBVc2Ug
Q29sb3I6OnRyYW5zcGFyZW50CisgICAgICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgMCBhbmQg
cmVseWluZyBvbiBob3cgdGhhdCBpcyBjb252ZXJ0ZWQgdG8gYSBDb2xvci4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaDogUmVtb3ZlZCBpbmNsdWRlIG9mIEltYWdl
QmFja2luZ1N0b3JlLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aDogQWRkZWQgZm9yd2FyZCBkZWxhcmF0aW9uIG9mIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZSk6IENhbGwg
dmFsdWUoKSB0bworICAgICAgICBjb252ZXJ0IFJHQkEzMiwgd2hpY2ggaXMgbm93IGEgY2xhc3Ms
IHRvIGFuIDMyLWJpdCBBUkdCIGludGVnZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOiBVc2Ug
Y29uc3RleHByIFNpbXBsZUNvbG9yOjp2YWx1ZSBmdW5jdGlvbiB0bworICAgICAgICBzd2l0Y2gg
b24gYSBTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xv
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9sZEFxdWFGb2N1c1JpbmdDb2xvcik6IFVzZSBh
biBleHBsaWNpdCBTaW1wbGVDb2xvciB0byB0dXJuIGEKKyAgICAgICAgaGV4IGludGVnZXIgaW50
byBhIENvbG9yIHdpdGhvdXQgcmVseWluZyBvbiBpbXBsaWNpdCBjb252ZXJzaW9uLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29sb3I6Om9wZXJhdG9yIEQyRDFfQ09MT1JfRiBjb25zdCk6IFVzZSB2YWx1ZSgp
IHRvIGdldCB0aGUgY29sb3IKKyAgICAgICAgaW50ZWdlciwganVzdCB0byBrZWVwIHRoaXMgd29y
a2luZy4gUHJvYmFibHkgbmVlZHMgYSBiZXR0ZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgYXQg
c29tZSBwb2ludC4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyb3dB
dmFpbGFibGUpOiBEb24ndCB1c2UgbWFrZVJHQiBhbnkgbW9yZSwKKyAgICAgICAgd3JpdGUgdGhl
IGV4cHJlc3Npb24gb3V0IGhlcmUgaW5zdGVhZC4gTW9yZSBlZmZpY2llbnQgYW55d2F5IHNpbmNl
IHRoZXNlCisgICAgICAgIGFyZSBhbHJlYWR5IHNpbmdsZSBieXRlcy4KKworICAgICAgICAqIHBs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZGVmYXVsdERldmljZXMpOiAgVXNlIGFuIGV4cGxpY2l0IFNpbXBsZUNvbG9yIHRv
IHR1cm4gYQorICAgICAgICBoZXggaW50ZWdlciBpbnRvIGEgQ29sb3Igd2l0aG91dCByZWx5aW5n
IG9uIGltcGxpY2l0IGNvbnZlcnNpb24uCisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6ZHJhd0JveGVzKTogRGl0dG8uIEFsc28gdXNlIGEgbW9kZXJuCisgICAgICAgIGZv
ciBsb29wIGluc3RlYWQgb2YgaW5kZXhpbmcuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3Jv
bGxiYXJUaGVtZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2Nr
OjpwYWludFRyYWNrQmFja2dyb3VuZCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjYWxjdWxhdGVC
b3JkZXJTdHlsZUNvbG9yKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvciBjb25zdCk6
IERpdHRvLiBBbHNvIHVzZWQgbmFtZWQgY29sb3JzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpzeXN0ZW1D
b2xvciBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJP
YmplY3QpOiBBZGRlZCBjaGVja3MgYWdhaW5zdAorICAgICAgICBDb2xvcjo6dHJhbnNwYXJlbnQg
aW5zdGVhZCBvZiBjb252ZXJ0aW5nIHRvIGFuIGludGVnZXIgYW5kIGNoZWNraW5nCisgICAgICAg
IGFnYWluc3QgMC4gUmVtb3ZlZCB1bm5lZWRlZCBpc1ZhbGlkIGNoZWNrcywgc2luY2UgaW52YWxp
ZCBjb2xvcidzIEFSR0IKKyAgICAgICAgdmFsdWUgaXMgQ29sb3I6OnRyYW5zcGFyZW50LgorCisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0RGV2aWNlcyk6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0JveGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L1Njcm9sbGJhclRoZW1lTW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZU1vY2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y2FsY3VsYXRlQm9y
ZGVyU3R5bGVDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvciBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWM6OnN5c3RlbUNvbG9yIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQXNUZXh0Ojp3cml0
ZVJlbmRlck9iamVjdCk6CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpn
ZXRSR0JDb2xvclZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU6Omdl
dENvdW50ZXJWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01Q
cmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRl
cHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlOjpnZXRSR0JDb2xvclZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKiBjc3MvRGVwcmVjYXRlZENTU09NUkdCQ29sb3IuaDoKKyAgICAgICAgKiBjc3MvUkdC
Q29sb3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGNzcy9SR0JDb2xvci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGNzcy9TdHlsZUNvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ29s
b3I6OmNvbG9yRnJvbUtleXdvcmQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3T3V0bGluZWRRdWFkV2l0aENsaXApOgorICAgICAgICAqIHBhZ2Uv
Y29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvOjpIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bWFrZVJHQik6CisgICAgICAgIChXZWJDb3JlOjptYWtlUkdCQSk6CisgICAgICAgIChXZWJDb3Jl
OjptYWtlUkdCQTMyRnJvbUZsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpjb2xvcldpdGhPdmVy
cmlkZUFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSGV4Q29sb3JJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb2xvcjo6cGFyc2VIZXhDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpDb2xvcjo6Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OnNlcmlhbGl6
YXRpb25Gb3JIVE1MIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXJpYWxpemVk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFs
cGhhVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OnNlcmlhbGl6YXRpb25G
b3JDU1MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmNzc1RleHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UkdCQTMyOjpzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bmFtZUZvclJlbmRlclRyZWVBc1Rl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0Ip
OgorICAgICAgICAoV2ViQ29yZTo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXpl
ZEZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhhVmFsdWUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVD
b2xvcjo6U2ltcGxlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OnZhbHVl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpyZWRDb21wb25lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6OmdyZWVuQ29tcG9uZW50IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9yOjpibHVlQ29tcG9uZW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbG9yOjphbHBoYUNvbXBvbmVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb2xvcjo6aXNPcGFxdWUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlQ29sb3I6OmlzVmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb2xvcjo6aXNPcGFxdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmlzVmlz
aWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6cmVkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9yOjpncmVlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xv
cjo6Ymx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6YWxwaGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmFscGhhQXNGbG9hdCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29sb3I6OnJnYiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xv
cjo6c2V0UkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjppc0JsYWNrQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29sb3I6OmlzV2hpdGVDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpy
ZWRDaGFubmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmdyZWVuQ2hhbm5lbCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpibHVlQ2hhbm5lbCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjphbHBoYUNoYW5uZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3I6OmNyZWF0ZVVuY2hlY2tlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSR0JBOjpS
R0JBKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJHQkE6OnJlZCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSR0JBOjpncmVlbiBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSR0JBOjpibHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJHQkE6OmFscGhhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJHQkE6
Omhhc0FscGhhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6
OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjpjbGVhclJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQmFja2luZ1N0b3JlOjpyZXBlYXRGaXJzdFJvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJhY2tpbmdTdG9yZTo6cGl4ZWxBdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJhY2tpbmdTdG9yZTo6c2V0UGl4ZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNr
aW5nU3RvcmU6OmJsZW5kUGl4ZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3Rv
cmU6OkltYWdlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0
b3JlOjpwaXhlbFZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29sb3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpvbGRBcXVhRm9jdXNSaW5n
Q29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Db2xvckRpcmVjdDJELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpvcGVyYXRvciBEMkQxX0NPTE9SX0YgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdERldmljZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdCb3hlcyk6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNhbGN1bGF0ZUJv
cmRlclN0eWxlQ29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IgY29uc3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lTWFjOjpzeXN0ZW1Db2xvciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3Jp
dGVSZW5kZXJPYmplY3QpOgorCiAyMDIwLTAxLTMwICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8g
aW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDkxZWI5NTRmMjZlNGNjYzgyNjAy
Y2EyNjM1OTU5NWZhY2QzMTFjMi4uOWQ1OWVlNzJmN2ZlZDY5ZGRhYWM3MWI2Y2IzOGRhYTNkODUx
MGI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMS0zMCAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBSR0JBMzIgdHlwZWRlZiB3aXRo
IGEgY2xhc3MgdG8gaW1wcm92ZSB0eXBlIHNhZmV0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDb2xvcj46OmVuY29kZSk6IFVzZSB1aW50
MzJfdCBleHBsaWNpdGx5IHRvIGNvbnZlcnQKKyAgICAgICAgdGhlIGNvbG9yIHZhbHVlIGludG8g
YSBTaW1wbGVDb2xvci4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDb2xvcj46OmRlY29k
ZSk6IFNhbWUgdGhpbmcsIG9ubHkgdGhlIG90aGVyIGRpcmVjdGlvbi4KKwogMjAyMC0wMS0zMCAg
eW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVc2Ug
QVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQppbmRleCA1NGRiNzE2YWM4N2NhYzRkMDEzMGRkOGE3OTU1NGQwZDY3NTY5ZTY5Li5k
NmZkNGM1ZTk5YWEwY2Q2MWViOGRlMmQ0ZWVkNDE3ZWQzY2JkZTBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKQEAgLTMzNiw3ICszMzYsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuaAogICAgIGNzcy9NZWRpYVF1ZXJ5RXhw
cmVzc2lvbi5oCiAgICAgY3NzL01lZGlhUXVlcnlQYXJzZXJDb250ZXh0LmgKLSAgICBjc3MvUkdC
Q29sb3IuaAogICAgIGNzcy9SZWN0LmgKICAgICBjc3MvU3R5bGVDb2xvci5oCiAgICAgY3NzL1N0
eWxlUHJvcGVydGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDExNmIzODhkMmQ1ZmQ1Y2QyZmQ5YTRl
NjI1MGMzODZiNDVjNzEyNjUuLmU2OTAxYzNjZGIxMjcyYjIzNDFlMTAwYzcyZWM3ZWZkYmVlMzM0
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC03NjYsNyArNzY2LDYgQEAgY3NzL01lZGlhUXVlcnlMaXN0
LmNwcAogY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcAogY3NzL01lZGlhUXVlcnlQYXJzZXJDb250
ZXh0LmNwcAogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKLWNzcy9SR0JD
b2xvci5jcHAKIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCiBjc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcAogY3NzL1NlbGVjdG9yRmlsdGVyLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJjNDg4M2I0ODYz
M2JmZTc5MDc2MjVkZmZjMDgzM2FlMDg1OTIyN2UuLjA2YjlkOWFlZDQzMGM5N2MzMTc4MmRkOTVi
Yzg0M2U3YTQxMmEzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTM4MzMsNyArMzgzMyw2IEBACiAJCUJDNjkzMjc0MEQ3RTI5
MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjkzMjcyMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdp
bmRvd0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlCQzZENDRFRDBDMDdGMkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZENDRFQjBDMDdG
MkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmggKi87IH07CiAJCUJDNkQ2RTI2MDlB
Rjk0MzUwMEY1OTc1OSAvKiBTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZENkUyNTA5QUY5NDM1MDBGNTk3NTkgLyogU2Nyb2xsVmll
dy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJD
NzREQTM3MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NERBMzUxMDEzRjNGNzAwNzk4N0FEIC8qIFJH
QkNvbG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQkM3NzJCM0MwQzRFQTkxRTAwODMyODVGIC8qIENTU0hlbHBlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NzJCMzYwQzRFQTkxRTAwODMyODVG
IC8qIENTU0hlbHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUJDNzcyQzQ3MEM0RUIyQzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NzJDNDUwQzRF
QjJDNjAwODMyODVGIC8qIFhNTEh0dHBSZXF1ZXN0LmggKi87IH07CiAJCUJDNzcyQzRGMEM0RUIz
MDQwMDgzMjg1RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc3MkM0RDBDNEVCMzA0MDA4MzI4NUYgLyogTUlNRVR5
cGVSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xMzE5MCw4ICsxMzE4OSw2IEBACiAJCUJDNkQ0NEVBMEMwN0YyRUQwMDcyRDJDOSAv
KiBKU0hUTUxFbWJlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTSFRNTEVtYmVkRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDNkQ0NEVCMEMwN0YyRUQwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTEVtYmVkRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzZENkUyNTA5QUY5NDM1MDBGNTk3NTkgLyogU2Ny
b2xsVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsVmlldy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzc0REEzNTEwMTNGM0Y3MDA3OTg3QUQg
LyogUkdCQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUkdCQ29sb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM3NERBMzYxMDEzRjNGNzAwNzk4N0FE
IC8qIFJHQkNvbG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJH
QkNvbG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3NzJCMzYwQzRFQTkx
RTAwODMyODVGIC8qIENTU0hlbHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTSGVscGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNzcyQzQ0MEM0
RUIyQzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gWE1MSHR0cFJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzc3MkM0NTBDNEVCMkM2MDA4MzI4NUYgLyogWE1MSHR0cFJlcXVlc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzU3Miw4ICsyNzU2OSw2IEBACiAJCQkJRTRCQkVE
MEQxNEY0MDI1RDAwM0YwQjk4IC8qIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oICov
LAogCQkJCTkzQ0E0QzlGMDlERjkzRkEwMERGODY3NyAvKiBxdWlya3MuY3NzICovLAogCQkJCUJD
NDM2OEU3MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggKi8sCi0JCQkJQkM3NERBMzYxMDEzRjNG
NzAwNzk4N0FEIC8qIFJHQkNvbG9yLmNwcCAqLywKLQkJCQlCQzc0REEzNTEwMTNGM0Y3MDA3OTg3
QUQgLyogUkdCQ29sb3IuaCAqLywKIAkJCQlFNDRCNEJCMTE0MTY1MEQ3MDAyQjFEOEIgLyogU2Vs
ZWN0b3JDaGVja2VyLmNwcCAqLywKIAkJCQlFNDRCNEJCMjE0MTY1MEQ3MDAyQjFEOEIgLyogU2Vs
ZWN0b3JDaGVja2VyLmggKi8sCiAJCQkJNDMyRDNGRTcxOEE4NjU4NDAwRDdEQzAzIC8qIFNlbGVj
dG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaCAqLywKQEAgLTMyMDk4LDcgKzMyMDkzLDYgQEAKIAkJ
CQlGRDMxNjBBOTEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQ29udm9sdmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjBBQjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQ29udm9sdmVyU3Rh
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEFEMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZl
cmJJbnB1dEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkM3NERBMzcxMDEzRjNGNzAwNzk4
N0FEIC8qIFJHQkNvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjVFMTBBMTU1QTA1MDAw
QTQyMzQgLyogUm9vdElubGluZUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzkwRUY4
NkQ0NzAwOUQwQ0FGIC8qIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTczRjk1RkYxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0LmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IGRlNTA4
YzYxYzM5YTVlNTYyZGM5YTk2NGU1ZTQ2OTdlYTU3OTZiMTcuLjg1Y2Y3NzgyNzM1NjU5MTY2N2Nl
YzU3ODI5N2FjZGY0YTBjYTRiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5j
bHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhaXIuaCIKLSNpbmNsdWRlICJSR0JDb2xvci5oIgog
I2luY2x1ZGUgIlJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtODc0LDI5ICs4NzMsNiBAQCBTdHJpbmcgQ1NTUHJpbWl0
aXZlVmFsdWU6OnN0cmluZ1ZhbHVlKCkgY29uc3QKICAgICB9CiB9CiAKLUV4Y2VwdGlvbk9yPENv
dW50ZXImPiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0Q291bnRlclZhbHVlKCkgY29uc3QKLXsKLSAg
ICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVIpCi0g
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKLSAgICByZXR1
cm4gKm1fdmFsdWUuY291bnRlcjsKLX0KLQotRXhjZXB0aW9uT3I8UmVjdCY+IENTU1ByaW1pdGl2
ZVZhbHVlOjpnZXRSZWN0VmFsdWUoKSBjb25zdAotewotICAgIGlmIChwcmltaXRpdmVVbml0VHlw
ZSgpICE9IENTU1VuaXRUeXBlOjpDU1NfUkVDVCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRBY2Nlc3NFcnJvciB9OwotICAgIHJldHVybiAqbV92YWx1ZS5yZWN0OwotfQotCi1F
eGNlcHRpb25PcjxSZWY8UkdCQ29sb3I+PiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JW
YWx1ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5
cGU6OkNTU19SR0JDT0xPUikKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nl
c3NFcnJvciB9OwotCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCByZXR1cm4gYSBuZXcg
b2JqZWN0IGZvciBlYWNoIGludm9jYXRpb24uCi0gICAgcmV0dXJuIFJHQkNvbG9yOjpjcmVhdGUo
bV92YWx1ZS5jb2xvci0+cmdiKCkpOwotfQotCiBORVZFUl9JTkxJTkUgU3RyaW5nIENTU1ByaW1p
dGl2ZVZhbHVlOjpmb3JtYXROdW1iZXJWYWx1ZShTdHJpbmdWaWV3IHN1ZmZpeCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbWFrZVN0cmluZyhtX3ZhbHVlLm51bSwgc3VmZml4KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggNzYzZDQyMGE3MWZjOGEyMzQ1Y2EwOTE5OTdm
ZmJmOTQ2NjdjOGQ4Zi4uNDc0NmFjOGQwN2ZjZDNlNDZiNjZjODgwZTk5YWYxZjIyZTA1NTRjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTE0Miw5ICsxNDIsNiBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8ZmxvYXQ+IGdldEZsb2F0
VmFsdWUoQ1NTVW5pdFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldFN0cmluZ1ZhbHVlKENTU1VuaXRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxTdHJpbmc+IGdldFN0cmluZ1ZhbHVlKCkgY29uc3Q7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8Q291bnRlciY+IGdldENvdW50ZXJWYWx1
ZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlY3QmPiBnZXRSZWN0
VmFsdWUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8UkdCQ29s
b3I+PiBnZXRSR0JDb2xvclZhbHVlKCkgY29uc3Q7CiAKICAgICBkb3VibGUgY29tcHV0ZURlZ3Jl
ZXMoKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNh
dGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRl
ZENTU09NUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDA0YmY5NzA0ZWY0YzMwM2Q3ZjRjMTFkOWRh
MzNhY2QwODg0YTZkZTkuLmNjNzRlZmM3NmZmNGMzYzIwZjEzMmI5NmZlMzdmMTBlN2FjMDU2NTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRDU1NPTVByaW1pdGl2
ZVZhbHVlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHN1Y2ggYXMg
U3R5bGVDb3VudGVyVmFsdWUsIFN0eWxlUmVjdFZhbHVlLCBhbmQgU3R5bGVDb2xvclZhbHVlLCB0
aGVzZSBtZXRob2RzIHdpbGwgZ2V0CiAvLyBtb3JlIGNvbXBsaWNhdGVkLgogCi0KIHVuc2lnbmVk
IHNob3J0IERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlOjpwcmltaXRpdmVUeXBlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KG1fdmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKSk7CkBAIC02NCwyNiArNjMsMjUgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBE
ZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6Z2V0U3RyaW5nVmFsdWUoKSBjb25zdAogCiBF
eGNlcHRpb25PcjxSZWY8RGVwcmVjYXRlZENTU09NQ291bnRlcj4+IERlcHJlY2F0ZWRDU1NPTVBy
aW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUoKSBjb25zdAogewotICAgIEV4Y2VwdGlvbk9y
PENvdW50ZXImPiBjb3VudGVyID0gbV92YWx1ZS0+Z2V0Q291bnRlclZhbHVlKCk7Ci0gICAgaWYg
KGNvdW50ZXIuaGFzRXhjZXB0aW9uKCkpCisgICAgYXV0byogdmFsdWUgPSBtX3ZhbHVlLT5jb3Vu
dGVyVmFsdWUoKTsKKyAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZEFjY2Vzc0Vycm9yIH07Ci0gICAgcmV0dXJuIERlcHJlY2F0ZWRDU1NPTUNvdW50ZXI6
OmNyZWF0ZShjb3VudGVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBtX293bmVyLmdldCgpKTsKKyAg
ICByZXR1cm4gRGVwcmVjYXRlZENTU09NQ291bnRlcjo6Y3JlYXRlKCp2YWx1ZSwgbV9vd25lcik7
CiB9CiAgICAgCiBFeGNlcHRpb25PcjxSZWY8RGVwcmVjYXRlZENTU09NUmVjdD4+IERlcHJlY2F0
ZWRDU1NPTVByaW1pdGl2ZVZhbHVlOjpnZXRSZWN0VmFsdWUoKSBjb25zdAogewotICAgIEV4Y2Vw
dGlvbk9yPFJlY3QmPiByZWN0ID0gbV92YWx1ZS0+Z2V0UmVjdFZhbHVlKCk7Ci0gICAgaWYgKHJl
Y3QuaGFzRXhjZXB0aW9uKCkpCisgICAgYXV0byogdmFsdWUgPSBtX3ZhbHVlLT5yZWN0VmFsdWUo
KTsKKyAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFj
Y2Vzc0Vycm9yIH07Ci0gICAgcmV0dXJuIERlcHJlY2F0ZWRDU1NPTVJlY3Q6OmNyZWF0ZShyZWN0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBtX293bmVyLmdldCgpKTsKKyAgICByZXR1cm4gRGVwcmVj
YXRlZENTU09NUmVjdDo6Y3JlYXRlKCp2YWx1ZSwgbV9vd25lcik7CiB9CiAKIEV4Y2VwdGlvbk9y
PFJlZjxEZXByZWNhdGVkQ1NTT01SR0JDb2xvcj4+IERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZh
bHVlOjpnZXRSR0JDb2xvclZhbHVlKCkgY29uc3QKIHsKLSAgICBFeGNlcHRpb25PcjxSZWY8UkdC
Q29sb3I+PiBjb2xvciA9IG1fdmFsdWUtPmdldFJHQkNvbG9yVmFsdWUoKTsKLSAgICBpZiAoY29s
b3IuaGFzRXhjZXB0aW9uKCkpCisgICAgaWYgKCFtX3ZhbHVlLT5pc1JHQkNvbG9yKCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKLSAgICByZXR1cm4g
RGVwcmVjYXRlZENTU09NUkdCQ29sb3I6OmNyZWF0ZShjb2xvci5yZWxlYXNlUmV0dXJuVmFsdWUo
KSwgbV9vd25lci5nZXQoKSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yOjpj
cmVhdGUobV9vd25lciwgbV92YWx1ZS0+Y29sb3IoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0RlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yLmgKaW5kZXggNDY1NTA4NTZlNDE2YjBiNDgy
YTYyOWJmYWVmOTAxMDk4N2NlM2ZkOS4uNGEzZWRjNzY4NTU1M2JhMWY4YjNkOGRlNzk0YWE1NTQx
NTliMzczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRDU1NPTVJH
QkNvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRDU1NPTVJHQkNvbG9y
LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDMgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTIxLDU1ICsyMSw0NCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJE
ZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5oIgotI2luY2x1ZGUgIlJHQkNvbG9yLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBEZXByZWNhdGVkQ1NTT01SR0JDb2xvciBmaW5hbCA6IHB1Ymxp
YyBSZWZDb3VudGVkPERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxEZXByZWNhdGVkQ1NTT01SR0JDb2xvcj4gY3JlYXRlKGNvbnN0IFJHQkNvbG9yJiBj
b2xvciwgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgb3duZXIpCisgICAgc3RhdGljIFJlZjxEZXByZWNh
dGVkQ1NTT01SR0JDb2xvcj4gY3JlYXRlKENTU1N0eWxlRGVjbGFyYXRpb24mIG93bmVyLCBjb25z
dCBDb2xvciYgY29sb3IpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXBy
ZWNhdGVkQ1NTT01SR0JDb2xvcihjb2xvciwgb3duZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGVwcmVjYXRlZENTU09NUkdCQ29sb3Iob3duZXIsIGNvbG9yKSk7CiAgICAgfQog
Ci0gICAgRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUqIHJlZCgpIHsgcmV0dXJuIG1fcmVk
LmdldCgpOyB9Ci0gICAgRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUqIGdyZWVuKCkgeyBy
ZXR1cm4gbV9ncmVlbi5nZXQoKTsgfQotICAgIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVl
KiBibHVlKCkgeyByZXR1cm4gbV9ibHVlLmdldCgpOyB9Ci0gICAgRGVwcmVjYXRlZENTU09NUHJp
bWl0aXZlVmFsdWUqIGFscGhhKCkgeyByZXR1cm4gbV9hbHBoYS5nZXQoKTsgfQotICAgIAotICAg
IENvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IobV9yZ2JDb2xvcik7IH0KKyAgICBE
ZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSYgcmVkKCkgeyByZXR1cm4gbV9yZWQ7IH0KKyAg
ICBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSYgZ3JlZW4oKSB7IHJldHVybiBtX2dyZWVu
OyB9CisgICAgRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUmIGJsdWUoKSB7IHJldHVybiBt
X2JsdWU7IH0KKyAgICBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSYgYWxwaGEoKSB7IHJl
dHVybiBtX2FscGhhOyB9CisKKyAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29s
b3I7IH0KIAogcHJpdmF0ZToKLSAgICBEZXByZWNhdGVkQ1NTT01SR0JDb2xvcihjb25zdCBSR0JD
b2xvciYgY29sb3IsIENTU1N0eWxlRGVjbGFyYXRpb24mIG93bmVyKQotICAgICAgICA6IG1fcmdi
Q29sb3IoY29sb3IucmdiQ29sb3IoKSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOdW1iZXJUeXBl
PiBzdGF0aWMgUmVmPERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlPiBjcmVhdGVXcmFwcGVy
KENTU1N0eWxlRGVjbGFyYXRpb24mIG93bmVyLCBOdW1iZXJUeXBlIG51bWJlcikKICAgICB7Ci0g
ICAgICAgIC8vIFJlZAotICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IChtX3JnYkNvbG9yID4+IDE2
KSAmIDB4RkY7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSh2YWx1ZSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOwotICAgICAgICBtX3JlZCA9IHJlc3Vs
dC0+Y3JlYXRlRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlV3JhcHBlcihvd25lcik7Ci0gICAgICAg
IAotICAgICAgICAvLyBHcmVlbgotICAgICAgICB2YWx1ZSA9IChtX3JnYkNvbG9yID4+IDgpICYg
MHhGRjsKLSAgICAgICAgcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwg
Q1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOwotICAgICAgICBtX2dyZWVuID0gcmVzdWx0LT5jcmVh
dGVEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVXcmFwcGVyKG93bmVyKTsKKyAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobnVtYmVyLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJF
UiktPmNyZWF0ZURlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVdyYXBwZXIob3duZXIpOworICAgIH0K
IAotICAgICAgICAvLyBCbHVlCi0gICAgICAgIHZhbHVlID0gbV9yZ2JDb2xvciAmIDB4RkY7Ci0g
ICAgICAgIHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1VuaXRU
eXBlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAgbV9ibHVlID0gcmVzdWx0LT5jcmVhdGVEZXByZWNh
dGVkQ1NTT01QcmltaXRpdmVXcmFwcGVyKG93bmVyKTsKLSAgICAgICAgCi0gICAgICAgIC8vIEFs
cGhhCi0gICAgICAgIGZsb2F0IGFscGhhVmFsdWUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oKG1fcmdi
Q29sb3IgPj4gMjQpICYgMHhGRikgLyAweEZGOwotICAgICAgICByZXN1bHQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKGFscGhhVmFsdWUsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKLSAg
ICAgICAgbV9hbHBoYSA9IHJlc3VsdC0+Y3JlYXRlRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlV3Jh
cHBlcihvd25lcik7CisgICAgRGVwcmVjYXRlZENTU09NUkdCQ29sb3IoQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgb3duZXIsIGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICAgICAgOiBtX2NvbG9yKGNvbG9y
KQorICAgICAgICAsIG1fcmVkKGNyZWF0ZVdyYXBwZXIob3duZXIsIGNvbG9yLnJlZCgpKSkKKyAg
ICAgICAgLCBtX2dyZWVuKGNyZWF0ZVdyYXBwZXIob3duZXIsIGNvbG9yLmdyZWVuKCkpKQorICAg
ICAgICAsIG1fYmx1ZShjcmVhdGVXcmFwcGVyKG93bmVyLCBjb2xvci5ibHVlKCkpKQorICAgICAg
ICAsIG1fYWxwaGEoY3JlYXRlV3JhcHBlcihvd25lciwgY29sb3IuYWxwaGFBc0Zsb2F0KCkpKQor
ICAgIHsKICAgICB9Ci0gICAgCi0gICAgUkdCQTMyIG1fcmdiQ29sb3I7Ci0gICAgUmVmUHRyPERl
cHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlPiBtX3JlZDsKLSAgICBSZWZQdHI8RGVwcmVjYXRl
ZENTU09NUHJpbWl0aXZlVmFsdWU+IG1fZ3JlZW47Ci0gICAgUmVmUHRyPERlcHJlY2F0ZWRDU1NP
TVByaW1pdGl2ZVZhbHVlPiBtX2JsdWU7Ci0gICAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVByaW1p
dGl2ZVZhbHVlPiBtX2FscGhhOworCisgICAgQ29sb3IgbV9jb2xvcjsKKyAgICBSZWY8RGVwcmVj
YXRlZENTU09NUHJpbWl0aXZlVmFsdWU+IG1fcmVkOworICAgIFJlZjxEZXByZWNhdGVkQ1NTT01Q
cmltaXRpdmVWYWx1ZT4gbV9ncmVlbjsKKyAgICBSZWY8RGVwcmVjYXRlZENTU09NUHJpbWl0aXZl
VmFsdWU+IG1fYmx1ZTsKKyAgICBSZWY8RGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU+IG1f
YWxwaGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvUkdCQ29sb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFlZTQwM2YwY2FmNjcxMWIxMTYxMWFi
ZjEwZGUzMjg0OTQ0NGZlYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3IuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBHb29nbGUsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJHQkNvbG9yLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFJHQkNvbG9yPiBSR0JDb2xvcjo6Y3JlYXRlKHVu
c2lnbmVkIHJnYkNvbG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJHQkNvbG9yKHJn
YkNvbG9yKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3Iu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE0YzQxZTAzNWRlYzZlZDlhNWJhMGU0
NTY2ODkwMmQ3YWRjMTdjMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3IuaAorKysgL2Rldi9udWxsCkBAIC0x
LDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkg
R29vZ2xlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ29sb3IuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIENTU1ByaW1pdGl2ZVZhbHVlOwotCi1jbGFzcyBSR0JDb2xvciBmaW5hbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFJHQkNvbG9yPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSR0JDb2xvcj4g
Y3JlYXRlKHVuc2lnbmVkIHJnYkNvbG9yKTsKLQotICAgIENvbG9yIGNvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gQ29sb3IobV9yZ2JDb2xvcik7IH0KLQotICAgIFJHQkEzMiByZ2JDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fcmdiQ29sb3I7IH0KLQotcHJpdmF0ZToKLSAgICBSR0JDb2xvcih1bnNpZ25l
ZCByZ2JDb2xvcikKLSAgICAgICAgOiBtX3JnYkNvbG9yKHJnYkNvbG9yKQotICAgIHsKLSAgICB9
Ci0KLSAgICBSR0JBMzIgbV9yZ2JDb2xvcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUNvbG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZUNvbG9yLmNwcAppbmRleCAyOWJjYTE5YjkyNDg0MDQxY2YyNTkwZmY2
ZWQ2YTQ0Y2Q0MTBiODFkLi4xYmMyMGZiNzI5NGE2YmI4MDE2NjQ1ZmRlZjVlOTFkZTVjZWM2NDk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVDb2xvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29sb3IuY3BwCkBAIC00MSw3ICs0MSw3IEBAIENvbG9yIFN0
eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmFsdWVJRCBrZXl3b3JkLCBPcHRpb25TZXQ8
T3B0aW9ucz4gb3B0aW9uCiB7CiAgICAgaWYgKGNvbnN0IGNoYXIqIHZhbHVlTmFtZSA9IGdldFZh
bHVlTmFtZShrZXl3b3JkKSkgewogICAgICAgICBpZiAoY29uc3QgTmFtZWRDb2xvciogbmFtZWRD
b2xvciA9IGZpbmRDb2xvcih2YWx1ZU5hbWUsIHN0cmxlbih2YWx1ZU5hbWUpKSkKLSAgICAgICAg
ICAgIHJldHVybiBDb2xvcihuYW1lZENvbG9yLT5BUkdCVmFsdWUpOworICAgICAgICAgICAgcmV0
dXJuIFNpbXBsZUNvbG9yIHsgbmFtZWRDb2xvci0+QVJHQlZhbHVlIH07CiAgICAgfQogCiAgICAg
cmV0dXJuIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihrZXl3b3JkLCBvcHRp
b25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpp
bmRleCBiMzJjMTMzZDUxZTVkOWExZGY1OWYzMmI4YzFiMzIwZGVmN2IxYzFhLi5jMzk1OTI0YmQ4
NWY4NGEwYWUyYWYzMzc0M2VkOWY5ZjdjNmEzYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC01OCw3ICs1OCw2IEBACiAjaW1wb3J0ICJI
VE1MVGFibGVDZWxsRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgog
I2ltcG9ydCAiTG9hZGVyTlNVUkxFeHRyYXMuaCIKLSNpbXBvcnQgIlJHQkNvbG9yLmgiCiAjaW1w
b3J0ICJSZW5kZXJJbWFnZS5oIgogI2ltcG9ydCAiUmVuZGVyVGV4dC5oIgogI2ltcG9ydCAiU3R5
bGVQcm9wZXJ0aWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAKaW5kZXggYjA0NTUyNmU2MjMxNzdiYWRmMjhkYmQzYjIxNzhlOGE2ZjVkYTY4MC4u
MjNkYjBmYjNlYWVjMjk5NGE3ZWIyOTQxMGNkNjg5N2YxOTU0MzUxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtMjIyLDcgKzIyMiw3IEBA
IHN0YXRpYyB2b2lkIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UXVhZCYKICAgICBjb250ZXh0LmZpbGxQYXRoKHF1YWRUb1BhdGgo
cXVhZCwgYm91bmRzKSk7CiAKICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21w
b3NpdGVPcGVyYXRvcjo6RGVzdGluYXRpb25PdXQpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMjU1LCAwLCAwKSk7CisgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3IoMjU1LCAwLCAwKSk7CiAgICAgY29udGV4dC5maWxsUGF0aChxdWFkVG9QYXRo
KGNsaXBRdWFkLCBib3VuZHMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCmluZGV4IDU1YjQwNDNhNjBjMDlm
OTUzMTBiZWFhMDg3MTVlNmM5YTc3YjEwMzIuLjVlYjY4YWYyYzE0OTI3YmIwMTUwYjU2MmFiOTc5
YTY5MjFiYjAzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3Vy
Y2VVc2FnZU92ZXJsYXlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jl
c291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KQEAgLTEyOCwxMyArMTI4LDEzIEBAIHN0YXRpYyBD
R0NvbG9yUmVmIGNyZWF0ZUNvbG9yKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEp
CiBzdHJ1Y3QgSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8gewogICAgIEhpc3RvcmljTWVtb3J5
Q2F0ZWdvcnlJbmZvKCkgeyB9IC8vIE5lZWRlZCBmb3Igc3RkOjphcnJheS4KIAotICAgIEhpc3Rv
cmljTWVtb3J5Q2F0ZWdvcnlJbmZvKHVuc2lnbmVkIGNhdGVnb3J5LCBSR0JBMzIgcmdiYSwgU3Ry
aW5nIG5hbWUsIGJvb2wgc3ViY2F0ZWdvcnkgPSBmYWxzZSkKKyAgICBIaXN0b3JpY01lbW9yeUNh
dGVnb3J5SW5mbyh1bnNpZ25lZCBjYXRlZ29yeSwgdW5zaWduZWQgcmdiYSwgU3RyaW5nIG5hbWUs
IGJvb2wgc3ViY2F0ZWdvcnkgPSBmYWxzZSkKICAgICAgICAgOiBuYW1lKFdURk1vdmUobmFtZSkp
CiAgICAgICAgICwgaXNTdWJjYXRlZ29yeShzdWJjYXRlZ29yeSkKICAgICAgICAgLCB0eXBlKGNh
dGVnb3J5KQogICAgIHsKICAgICAgICAgZmxvYXQgciwgZywgYiwgYTsKLSAgICAgICAgQ29sb3Io
cmdiYSkuZ2V0UkdCQShyLCBnLCBiLCBhKTsKKyAgICAgICAgQ29sb3IgeyBTaW1wbGVDb2xvciB7
IHJnYmEgfSB9LmdldFJHQkEociwgZywgYiwgYSk7CiAgICAgICAgIGNvbG9yID0gYWRvcHRDRihj
cmVhdGVDb2xvcihyLCBnLCBiLCBhKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvci5jcHAKaW5kZXggMTY2MDc2NGE0MzliOWFhMThlN2Y0MTNmYmQ3OWYw
NWU4NzBhOTJlNC4uYjVhMmEyNGVkYTBhY2FiNzQ1NmYwZGEyNjg3MzNkZmRlYmE3ZGNlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNywxNyArMzcsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAh
Q09NUElMRVIoTVNWQykKLWNvbnN0IFJHQkEzMiBDb2xvcjo6YmxhY2s7Ci1jb25zdCBSR0JBMzIg
Q29sb3I6OndoaXRlOwotY29uc3QgUkdCQTMyIENvbG9yOjpkYXJrR3JheTsKLWNvbnN0IFJHQkEz
MiBDb2xvcjo6Z3JheTsKLWNvbnN0IFJHQkEzMiBDb2xvcjo6bGlnaHRHcmF5OwotY29uc3QgUkdC
QTMyIENvbG9yOjp0cmFuc3BhcmVudDsKLSNlbmRpZgotCi1zdGF0aWMgY29uc3QgUkdCQTMyIGxp
Z2h0ZW5lZEJsYWNrID0gMHhGRjU0NTQ1NDsKLXN0YXRpYyBjb25zdCBSR0JBMzIgZGFya2VuZWRX
aGl0ZSA9IDB4RkZBQkFCQUI7CitzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGxpZ2h0ZW5l
ZEJsYWNrIHsgMHhGRjU0NTQ1NCB9Oworc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBkYXJr
ZW5lZFdoaXRlIHsgMHhGRkFCQUJBQiB9OwogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHByZW11
bHRpcGxpZWRDaGFubmVsKHVuc2lnbmVkIGMsIHVuc2lnbmVkIGEsIGJvb2wgY2VpbGluZyA9IHRy
dWUpCiB7CkBAIC02MSwxMiArNTIsMTIgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCB1bnByZW11
bHRpcGxpZWRDaGFubmVsKHVuc2lnbmVkIGMsIHVuc2lnbmVkIGEpCiAKIFJHQkEzMiBtYWtlUkdC
KGludCByLCBpbnQgZywgaW50IGIpCiB7Ci0gICAgcmV0dXJuIDB4RkYwMDAwMDAgfCBzdGQ6Om1h
eCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGcsIDI1
NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKKyAgICByZXR1cm4gbWFr
ZVJHQkEociwgZywgYiwgMHhGRik7CiB9CiAKIFJHQkEzMiBtYWtlUkdCQShpbnQgciwgaW50IGcs
IGludCBiLCBpbnQgYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYXgoMCwgc3RkOjptaW4oYSwgMjU1
KSkgPDwgMjQgfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4
KDAsIHN0ZDo6bWluKGcsIDI1NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUp
KTsKKyAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjptYXgoMCwgc3RkOjpt
aW4oYSwgMHhGRikpIDw8IDI0IHwgc3RkOjptYXgoMCwgc3RkOjptaW4ociwgMHhGRikpIDw8IDE2
IHwgc3RkOjptYXgoMCwgc3RkOjptaW4oZywgMHhGRikpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6
Om1pbihiLCAweEZGKSkpIH07CiB9CiAKIFJHQkEzMiBtYWtlUHJlbXVsdGlwbGllZFJHQkEoaW50
IHIsIGludCBnLCBpbnQgYiwgaW50IGEsIGJvb2wgY2VpbGluZykKQEAgLTg3LDE0ICs3OCwxMiBA
QCBzdGF0aWMgaW50IGNvbG9yRmxvYXRUb1JHQkFCeXRlKGZsb2F0IGYpCiAKIFJHQkEzMiBtYWtl
UkdCQTMyRnJvbUZsb2F0cyhmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQogewot
ICAgIHJldHVybiBjb2xvckZsb2F0VG9SR0JBQnl0ZShhKSA8PCAyNCB8IGNvbG9yRmxvYXRUb1JH
QkFCeXRlKHIpIDw8IDE2IHwgY29sb3JGbG9hdFRvUkdCQUJ5dGUoZykgPDwgOCB8IGNvbG9yRmxv
YXRUb1JHQkFCeXRlKGIpOworICAgIHJldHVybiBtYWtlUkdCQShjb2xvckZsb2F0VG9SR0JBQnl0
ZShyKSwgY29sb3JGbG9hdFRvUkdCQUJ5dGUoZyksIGNvbG9yRmxvYXRUb1JHQkFCeXRlKGIpLCBj
b2xvckZsb2F0VG9SR0JBQnl0ZShhKSk7CiB9CiAKIFJHQkEzMiBjb2xvcldpdGhPdmVycmlkZUFs
cGhhKFJHQkEzMiBjb2xvciwgZmxvYXQgb3ZlcnJpZGVBbHBoYSkKIHsKLSAgICBSR0JBMzIgcmdi
T25seSA9IGNvbG9yICYgMHgwMEZGRkZGRjsKLSAgICBSR0JBMzIgcmdiYSA9IHJnYk9ubHkgfCBj
b2xvckZsb2F0VG9SR0JBQnl0ZShvdmVycmlkZUFscGhhKSA8PCAyNDsKLSAgICByZXR1cm4gcmdi
YTsKKyAgICByZXR1cm4geyAoY29sb3IudmFsdWUoKSAmIDB4MDBGRkZGRkYpIHwgY29sb3JGbG9h
dFRvUkdCQUJ5dGUob3ZlcnJpZGVBbHBoYSkgPDwgMjQgfTsKIH0KIAogUkdCQTMyIG1ha2VSR0JB
RnJvbUhTTEEoZmxvYXQgaHVlLCBmbG9hdCBzYXR1cmF0aW9uLCBmbG9hdCBsaWdodG5lc3MsIGZs
b2F0IGFscGhhKQpAQCAtMTMxLDI4ICsxMjAsMjggQEAgc3RhdGljIGlubGluZSBib29sIHBhcnNl
SGV4Q29sb3JJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBuYW1lLCB1bnNpZ25lZCBsZW4K
ICAgICAgICAgdmFsdWUgfD0gdG9BU0NJSUhleFZhbHVlKG5hbWVbaV0pOwogICAgIH0KICAgICBp
ZiAobGVuZ3RoID09IDYpIHsKLSAgICAgICAgcmdiID0gMHhGRjAwMDAwMCB8IHZhbHVlOworICAg
ICAgICByZ2IgPSB7IDB4RkYwMDAwMDAgfCB2YWx1ZSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgaWYgKGxlbmd0aCA9PSA4KSB7CiAgICAgICAgIC8vIFdlIHBhcnNlZCB0aGUg
dmFsdWVzIGludG8gUkdCQSBvcmRlciwgYnV0IHRoZSBSR0JBMzIgdHlwZQogICAgICAgICAvLyBl
eHBlY3RzIHRoZW0gdG8gYmUgaW4gQVJHQiBvcmRlciwgc28gd2UgcmlnaHQgcm90YXRlIGVpZ2h0
IGJpdHMuCi0gICAgICAgIHJnYiA9IHZhbHVlIDw8IDI0IHwgdmFsdWUgPj4gODsKKyAgICAgICAg
cmdiID0geyB2YWx1ZSA8PCAyNCB8IHZhbHVlID4+IDggfTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIGlmIChsZW5ndGggPT0gNCkgewogICAgICAgICAvLyAjYWJjZCBjb252ZXJ0
cyB0byBkZGFhYmJjYyBpbiBSR0JBMzIuCi0gICAgICAgIHJnYiA9ICh2YWx1ZSAmIDB4RikgPDwg
MjggfCAodmFsdWUgJiAweEYpIDw8IDI0CisgICAgICAgIHJnYiA9IHsgKHZhbHVlICYgMHhGKSA8
PCAyOCB8ICh2YWx1ZSAmIDB4RikgPDwgMjQKICAgICAgICAgICAgIHwgKHZhbHVlICYgMHhGMDAw
KSA8PCA4IHwgKHZhbHVlICYgMHhGMDAwKSA8PCA0CiAgICAgICAgICAgICB8ICh2YWx1ZSAmIDB4
RjAwKSA8PCA0IHwgKHZhbHVlICYgMHhGMDApCi0gICAgICAgICAgICB8ICh2YWx1ZSAmIDB4RjAp
IHwgKHZhbHVlICYgMHhGMCkgPj4gNDsKKyAgICAgICAgICAgIHwgKHZhbHVlICYgMHhGMCkgfCAo
dmFsdWUgJiAweEYwKSA+PiA0IH07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAv
LyAjYWJjIGNvbnZlcnRzIHRvICNhYWJiY2MKLSAgICByZ2IgPSAweEZGMDAwMDAwCisgICAgcmdi
ID0geyAweEZGMDAwMDAwCiAgICAgICAgIHwgKHZhbHVlICYgMHhGMDApIDw8IDEyIHwgKHZhbHVl
ICYgMHhGMDApIDw8IDgKICAgICAgICAgfCAodmFsdWUgJiAweEYwKSA8PCA4IHwgKHZhbHVlICYg
MHhGMCkgPDwgNAotICAgICAgICB8ICh2YWx1ZSAmIDB4RikgPDwgNCB8ICh2YWx1ZSAmIDB4Rik7
CisgICAgICAgIHwgKHZhbHVlICYgMHhGKSA8PCA0IHwgKHZhbHVlICYgMHhGKSB9OwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0xNjksNyArMTU4LDYgQEAgYm9vbCBDb2xvcjo6cGFyc2VIZXhD
b2xvcihjb25zdCBVQ2hhciogbmFtZSwgdW5zaWduZWQgbGVuZ3RoLCBSR0JBMzImIHJnYikKIGJv
b2wgQ29sb3I6OnBhcnNlSGV4Q29sb3IoY29uc3QgU3RyaW5nJiBuYW1lLCBSR0JBMzImIHJnYikK
IHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBuYW1lLmxlbmd0aCgpOwotICAgIAogICAgIGlmICgh
bGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKG5hbWUuaXM4Qml0KCkpCkBA
IC0yMzYsMjYgKzIyNCwxOCBAQCBDb2xvcjo6Q29sb3IoY29uc3QgU3RyaW5nJiBuYW1lKQogICAg
ICAgICAgICAgc2V0UkdCKGNvbG9yKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoYXV0byog
Zm91bmRDb2xvciA9IGZpbmROYW1lZENvbG9yKG5hbWUpKQotICAgICAgICAgICAgc2V0UkdCKGZv
dW5kQ29sb3ItPkFSR0JWYWx1ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fY29sb3JE
YXRhLnJnYmFBbmRGbGFncyA9IGludmFsaWRSR0JBQ29sb3I7CisgICAgICAgICAgICBzZXRSR0Io
eyBmb3VuZENvbG9yLT5BUkdCVmFsdWUgfSk7CiAgICAgfQogfQogCiBDb2xvcjo6Q29sb3IoY29u
c3QgY2hhciogbmFtZSkKIHsKLSAgICBSR0JBMzIgY29sb3I7Ci0gICAgYm9vbCB2YWxpZDsKLSAg
ICBpZiAobmFtZVswXSA9PSAnIycpCi0gICAgICAgIHZhbGlkID0gcGFyc2VIZXhDb2xvcigoU3Ry
aW5nKSZuYW1lWzFdLCBjb2xvcik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IE5hbWVkQ29s
b3IqIGZvdW5kQ29sb3IgPSBmaW5kQ29sb3IobmFtZSwgc3RybGVuKG5hbWUpKTsKLSAgICAgICAg
Y29sb3IgPSBmb3VuZENvbG9yID8gZm91bmRDb2xvci0+QVJHQlZhbHVlIDogMDsKLSAgICAgICAg
dmFsaWQgPSBmb3VuZENvbG9yOwotICAgIH0KLQotICAgIGlmICh2YWxpZCkKLSAgICAgICAgc2V0
UkdCKGNvbG9yKTsKKyAgICBpZiAobmFtZVswXSA9PSAnIycpIHsKKyAgICAgICAgU2ltcGxlQ29s
b3IgY29sb3I7CisgICAgICAgIGlmIChwYXJzZUhleENvbG9yKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigmbmFtZVsxXSksIHN0ZDo6c3RybGVuKCZuYW1lWzFdKSwgY29sb3IpKQorICAg
ICAgICAgICAgc2V0UkdCKGNvbG9yKTsKKyAgICB9IGVsc2UgaWYgKGF1dG8qIGZvdW5kQ29sb3Ig
PSBmaW5kQ29sb3IobmFtZSwgc3RybGVuKG5hbWUpKSkKKyAgICAgICAgc2V0UkdCKHsgZm91bmRD
b2xvci0+QVJHQlZhbHVlIH0pOwogfQogCiBDb2xvcjo6Q29sb3IoY29uc3QgQ29sb3ImIG90aGVy
KQpAQCAtMzA5LDE1ICsyODksMTggQEAgQ29sb3ImIENvbG9yOjpvcGVyYXRvcj0oQ29sb3ImJiBv
dGhlcikKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK1N0cmluZyBTaW1wbGVDb2xvcjo6c2VyaWFs
aXphdGlvbkZvckhUTUwoKSBjb25zdAoreworICAgIGlmIChpc09wYXF1ZSgpKQorICAgICAgICBy
ZXR1cm4gbWFrZVN0cmluZygnIycsIGhleChyZWRDb21wb25lbnQoKSwgMiwgTG93ZXJjYXNlKSwg
aGV4KGdyZWVuQ29tcG9uZW50KCksIDIsIExvd2VyY2FzZSksIGhleChibHVlQ29tcG9uZW50KCks
IDIsIExvd2VyY2FzZSkpOworICAgIHJldHVybiBzZXJpYWxpemF0aW9uRm9yQ1NTKCk7Cit9CisK
IFN0cmluZyBDb2xvcjo6c2VyaWFsaXplZCgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRXh0ZW5kZWQo
KSkKICAgICAgICAgcmV0dXJuIGFzRXh0ZW5kZWQoKS5jc3NUZXh0KCk7Ci0KLSAgICBpZiAoaXNP
cGFxdWUoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJyMnLCBoZXgocmVkKCksIDIsIExv
d2VyY2FzZSksIGhleChncmVlbigpLCAyLCBMb3dlcmNhc2UpLCBoZXgoYmx1ZSgpLCAyLCBMb3dl
cmNhc2UpKTsKLQotICAgIHJldHVybiBjc3NUZXh0KCk7CisgICAgcmV0dXJuIHJnYigpLnNlcmlh
bGl6YXRpb25Gb3JIVE1MKCk7CiB9CiAKIHN0YXRpYyBjaGFyIGRlY2ltYWxEaWdpdCh1bnNpZ25l
ZCBudW1iZXIpCkBAIC0zMjYsNyArMzA5LDcgQEAgc3RhdGljIGNoYXIgZGVjaW1hbERpZ2l0KHVu
c2lnbmVkIG51bWJlcikKICAgICByZXR1cm4gJzAnICsgbnVtYmVyOwogfQogCi1zdGF0aWMgc3Rk
OjphcnJheTxjaGFyLCA0PiBzZXJpYWxpemVkRnJhY3Rpb25EaWdpdHNGb3JGcmFjdGlvbmFsQWxw
aGFWYWx1ZSh1aW50OF90IGFscGhhKQorc3RhdGljIHN0ZDo6YXJyYXk8Y2hhciwgND4gZnJhY3Rp
b25EaWdpdHNGb3JGcmFjdGlvbmFsQWxwaGFWYWx1ZSh1aW50OF90IGFscGhhKQogewogICAgIEFT
U0VSVChhbHBoYSA+IDApOwogICAgIEFTU0VSVChhbHBoYSA8IDB4RkYpOwpAQCAtMzM3LDI3ICsz
MjAsMzYgQEAgc3RhdGljIHN0ZDo6YXJyYXk8Y2hhciwgND4gc2VyaWFsaXplZEZyYWN0aW9uRGln
aXRzRm9yRnJhY3Rpb25hbEFscGhhVmFsdWUodWludDgKICAgICByZXR1cm4geyB7IGRlY2ltYWxE
aWdpdCgoYWxwaGEgKiAxMCArIDB4N0YpIC8gMHhGRiksICdcMCcsICdcMCcsICdcMCcgfSB9Owog
fQogCi1TdHJpbmcgQ29sb3I6OmNzc1RleHQoKSBjb25zdAorU3RyaW5nIFNpbXBsZUNvbG9yOjpz
ZXJpYWxpemF0aW9uRm9yQ1NTKCkgY29uc3QKIHsKLSAgICBpZiAoaXNFeHRlbmRlZCgpKQotICAg
ICAgICByZXR1cm4gYXNFeHRlbmRlZCgpLmNzc1RleHQoKTsKLSAgICB1aW50OF90IGFscGhhID0g
dGhpcy0+YWxwaGEoKTsKLSAgICBzd2l0Y2ggKGFscGhhKSB7CisgICAgc3dpdGNoIChhbHBoYUNv
bXBvbmVudCgpKSB7CiAgICAgY2FzZSAwOgotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygicmdi
YSgiLCByZWQoKSwgIiwgIiwgZ3JlZW4oKSwgIiwgIiwgYmx1ZSgpLCAiLCAwKSIpOworICAgICAg
ICByZXR1cm4gbWFrZVN0cmluZygicmdiYSgiLCByZWRDb21wb25lbnQoKSwgIiwgIiwgZ3JlZW5D
b21wb25lbnQoKSwgIiwgIiwgYmx1ZUNvbXBvbmVudCgpLCAiLCAwKSIpOwogICAgIGNhc2UgMHhG
RjoKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJnYigiLCByZWQoKSwgIiwgIiwgZ3JlZW4o
KSwgIiwgIiwgYmx1ZSgpLCAnKScpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZygicmdiKCIs
IHJlZENvbXBvbmVudCgpLCAiLCAiLCBncmVlbkNvbXBvbmVudCgpLCAiLCAiLCBibHVlQ29tcG9u
ZW50KCksICcpJyk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJn
YmEoIiwgcmVkKCksICIsICIsIGdyZWVuKCksICIsICIsIGJsdWUoKSwgIiwgMC4iLCBzZXJpYWxp
emVkRnJhY3Rpb25EaWdpdHNGb3JGcmFjdGlvbmFsQWxwaGFWYWx1ZShhbHBoYSkuZGF0YSgpLCAn
KScpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZygicmdiYSgiLCByZWRDb21wb25lbnQoKSwg
IiwgIiwgZ3JlZW5Db21wb25lbnQoKSwgIiwgIiwgYmx1ZUNvbXBvbmVudCgpLCAiLCAwLiIsIGZy
YWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhhVmFsdWUoYWxwaGFDb21wb25lbnQoKSkuZGF0
YSgpLCAnKScpOwogICAgIH0KIH0KIAorU3RyaW5nIENvbG9yOjpjc3NUZXh0KCkgY29uc3QKK3sK
KyAgICBpZiAoaXNFeHRlbmRlZCgpKQorICAgICAgICByZXR1cm4gYXNFeHRlbmRlZCgpLmNzc1Rl
eHQoKTsKKyAgICByZXR1cm4gcmdiKCkuc2VyaWFsaXphdGlvbkZvckNTUygpOworfQorCitTdHJp
bmcgUkdCQTMyOjpzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dCgpIGNvbnN0Cit7Cisg
ICAgaWYgKGFscGhhQ29tcG9uZW50KCkgPCAweEZGKQorICAgICAgICByZXR1cm4gbWFrZVN0cmlu
ZygnIycsIGhleChyZWRDb21wb25lbnQoKSwgMiksIGhleChncmVlbkNvbXBvbmVudCgpLCAyKSwg
aGV4KGJsdWVDb21wb25lbnQoKSwgMiksIGhleChhbHBoYUNvbXBvbmVudCgpLCAyKSk7CisgICAg
cmV0dXJuIG1ha2VTdHJpbmcoJyMnLCBoZXgocmVkQ29tcG9uZW50KCksIDIpLCBoZXgoZ3JlZW5D
b21wb25lbnQoKSwgMiksIGhleChibHVlQ29tcG9uZW50KCksIDIpKTsKK30KKwogU3RyaW5nIENv
bG9yOjpuYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEhh
bmRsZSBFeHRlbmRlZENvbG9ycy4KLSAgICBpZiAoYWxwaGEoKSA8IDB4RkYpCi0gICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKCcjJywgaGV4KHJlZCgpLCAyKSwgaGV4KGdyZWVuKCksIDIpLCBoZXgo
Ymx1ZSgpLCAyKSwgaGV4KGFscGhhKCksIDIpKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZygnIycs
IGhleChyZWQoKSwgMiksIGhleChncmVlbigpLCAyKSwgaGV4KGJsdWUoKSwgMikpOworICAgIC8v
IEZJWE1FOiBIYW5kbGUgZXh0ZW5kZWQgY29sb3JzLgorICAgIHJldHVybiByZ2IoKS5zZXJpYWxp
emF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dCgpOwogfQogCiBDb2xvciBDb2xvcjo6bGlnaHQoKSBj
b25zdApAQCAtNTc1LDEwICs1NjcsOSBAQCB2b2lkIENvbG9yOjpnZXRIU1YoZG91YmxlJiBodWUs
IGRvdWJsZSYgc2F0dXJhdGlvbiwgZG91YmxlJiB2YWx1ZSkgY29uc3QKIAogQ29sb3IgY29sb3JG
cm9tUHJlbXVsdGlwbGllZEFSR0IoUkdCQTMyIHBpeGVsQ29sb3IpCiB7Ci0gICAgaW50IGFscGhh
ID0gYWxwaGFDaGFubmVsKHBpeGVsQ29sb3IpOwotICAgIGlmIChhbHBoYSAmJiBhbHBoYSA8IDI1
NSkKLSAgICAgICAgcGl4ZWxDb2xvciA9IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHJlZENoYW5u
ZWwocGl4ZWxDb2xvciksIGdyZWVuQ2hhbm5lbChwaXhlbENvbG9yKSwgYmx1ZUNoYW5uZWwocGl4
ZWxDb2xvciksIGFscGhhKTsKLSAgICByZXR1cm4gQ29sb3IocGl4ZWxDb2xvcik7CisgICAgaWYg
KHBpeGVsQ29sb3IuaXNWaXNpYmxlKCkgJiYgIXBpeGVsQ29sb3IuaXNPcGFxdWUoKSkKKyAgICAg
ICAgcmV0dXJuIG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHBpeGVsQ29sb3IucmVkQ29tcG9uZW50
KCksIHBpeGVsQ29sb3IuZ3JlZW5Db21wb25lbnQoKSwgcGl4ZWxDb2xvci5ibHVlQ29tcG9uZW50
KCksIHBpeGVsQ29sb3IuYWxwaGFDb21wb25lbnQoKSk7CisgICAgcmV0dXJuIHBpeGVsQ29sb3I7
CiB9CiAKIFJHQkEzMiBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihjb25zdCBDb2xvciYgY29s
b3IpCkBAIC02MDMsMTAgKzU5NCw5IEBAIENvbG9yIGJsZW5kKGNvbnN0IENvbG9yJiBmcm9tLCBj
b25zdCBDb2xvciYgdG8sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFByZW11CiAgICAgICAg
IHJldHVybiBDb2xvcigpOwogCiAgICAgaWYgKGJsZW5kUHJlbXVsdGlwbGllZCkgewotICAgICAg
ICAvLyBDb250cmFyeSB0byB0aGUgbmFtZSwgUkdCQTMyIGFjdHVhbGx5IHN0b3JlcyBBUkdCLCBz
byB3ZSBjYW4gaW5pdGlhbGl6ZSBDb2xvciBkaXJlY3RseSBmcm9tIHByZW11bHRpcGxpZWRBUkdC
RnJvbUNvbG9yKCkuCi0gICAgICAgIC8vIEFsc28sIHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9y
KCkgYmFpbHMgb24gemVybyBhbHBoYSwgc28gc3BlY2lhbC1jYXNlIHRoYXQuCi0gICAgICAgIENv
bG9yIHByZW11bHRGcm9tID0gZnJvbS5hbHBoYSgpID8gcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29s
b3IoZnJvbSkgOiAwOwotICAgICAgICBDb2xvciBwcmVtdWx0VG8gPSB0by5hbHBoYSgpID8gcHJl
bXVsdGlwbGllZEFSR0JGcm9tQ29sb3IodG8pIDogMDsKKyAgICAgICAgLy8gU2luY2UgcHJlbXVs
dGlwbGllZEFSR0JGcm9tQ29sb3IoKSBiYWlscyBvbiB6ZXJvIGFscGhhLCBzcGVjaWFsLWNhc2Ug
dGhhdC4KKyAgICAgICAgQ29sb3IgcHJlbXVsdEZyb20gPSBmcm9tLmFscGhhKCkgPyBwcmVtdWx0
aXBsaWVkQVJHQkZyb21Db2xvcihmcm9tKSA6IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICAgICAg
Q29sb3IgcHJlbXVsdFRvID0gdG8uYWxwaGEoKSA/IHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9y
KHRvKSA6IENvbG9yOjp0cmFuc3BhcmVudDsKIAogICAgICAgICBDb2xvciBwcmVtdWx0QmxlbmRl
ZChibGVuZChwcmVtdWx0RnJvbS5yZWQoKSwgcHJlbXVsdFRvLnJlZCgpLCBwcm9ncmVzcyksCiAg
ICAgICAgICAgICBibGVuZChwcmVtdWx0RnJvbS5ncmVlbigpLCBwcmVtdWx0VG8uZ3JlZW4oKSwg
cHJvZ3Jlc3MpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKaW5kZXgg
OGUzNWUwOTllNGFmMzJkNjk3N2VlYmQyYzcwNWNhNzY2YTQzZWY0NC4uMDE0ZDE0ZWMwNzc1M2Uw
ZDg0MzY4YmMxNjVkOTI4MzNmNTFmODdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNTIsMTMgKzUyLDM3IEBAIHR5cGVkZWYgRDJEX1ZFQ1RPUl80RiBE
MkQxX1ZFQ1RPUl80RjsKIHR5cGVkZWYgc3RydWN0IF9HZGtSR0JBIEdka1JHQkE7CiAjZW5kaWYK
IAotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0U3RyZWFtOwotfQotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXR5cGVkZWYgdW5zaWduZWQgUkdCQTMyOyAvLyBEZXByZWNhdGVkOiBUeXBlIGZv
ciBhbiBSR0JBIHF1YWRydXBsZXQuIFVzZSBSR0JBIGNsYXNzIGluc3RlYWQuCisvLyBDb2xvciB2
YWx1ZSB3aXRoIDgtYml0IGNvbXBvbmVudHMgZm9yIHJlZCwgZ3JlZW4sIGJsdWUsIGFuZCBhbHBo
YS4KKy8vIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIHN0b3JlZCBhcyBhIDMyLWJpdCBpbnRlZ2Vy
LCB3aXRoIGFscGhhIGluIHRoZSBoaWdoIGJpdHM6IEFSR0IuCitjbGFzcyBTaW1wbGVDb2xvciB7
CitwdWJsaWM6CisgICAgY29uc3RleHByIFNpbXBsZUNvbG9yKHVpbnQzMl90IHZhbHVlID0gMCkg
OiBtX3ZhbHVlIHsgdmFsdWUgfSB7IH0KKworICAgIGNvbnN0ZXhwciB1aW50MzJfdCB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgIGNvbnN0ZXhwciB1aW50OF90IHJlZENv
bXBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPj4gMTY7IH0KKyAgICBjb25zdGV4cHIg
dWludDhfdCBncmVlbkNvbXBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPj4gODsgfQor
ICAgIGNvbnN0ZXhwciB1aW50OF90IGJsdWVDb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlOyB9CisgICAgY29uc3RleHByIHVpbnQ4X3QgYWxwaGFDb21wb25lbnQoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlID4+IDI0OyB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBpc09wYXF1ZSgpIGNv
bnN0IHsgcmV0dXJuIGFscGhhQ29tcG9uZW50KCkgPT0gMHhGRjsgfQorICAgIGNvbnN0ZXhwciBi
b29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGFscGhhQ29tcG9uZW50KCk7IH0KKworICAg
IFN0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTCgpIGNvbnN0OworICAgIFN0cmluZyBzZXJpYWxp
emF0aW9uRm9yQ1NTKCkgY29uc3Q7CisgICAgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJU
cmVlQXNUZXh0KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdWludDMyX3QgbV92YWx1ZSB7IDAg
fTsKK307CisKK2Jvb2wgb3BlcmF0b3I9PShTaW1wbGVDb2xvciwgU2ltcGxlQ29sb3IpOworYm9v
bCBvcGVyYXRvciE9KFNpbXBsZUNvbG9yLCBTaW1wbGVDb2xvcik7CisKKy8vIEZJWE1FOiBSZW1v
dmUgdGhpcyBhZnRlciBtaWdyYXRpbmcgdG8gdGhlIG5ldyBuYW1lLgordXNpbmcgUkdCQTMyID0g
U2ltcGxlQ29sb3I7CiAKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdCKGludCByLCBpbnQg
ZywgaW50IGIpOwogV0VCQ09SRV9FWFBPUlQgUkdCQTMyIG1ha2VSR0JBKGludCByLCBpbnQgZywg
aW50IGIsIGludCBhKTsKQEAgLTczLDM2ICs5Nyw5IEBAIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBt
YWtlUkdCQTMyRnJvbUZsb2F0cyhmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsK
IFJHQkEzMiBtYWtlUkdCQUZyb21IU0xBKGZsb2F0IGgsIGZsb2F0IHMsIGZsb2F0IGwsIGZsb2F0
IGEpOwogUkdCQTMyIG1ha2VSR0JBRnJvbUNNWUtBKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHks
IGZsb2F0IGssIGZsb2F0IGEpOwogCi1pbmxpbmUgaW50IHJlZENoYW5uZWwoUkdCQTMyIGNvbG9y
KSB7IHJldHVybiAoY29sb3IgPj4gMTYpICYgMHhGRjsgfQotaW5saW5lIGludCBncmVlbkNoYW5u
ZWwoUkdCQTMyIGNvbG9yKSB7IHJldHVybiAoY29sb3IgPj4gOCkgJiAweEZGOyB9Ci1pbmxpbmUg
aW50IGJsdWVDaGFubmVsKFJHQkEzMiBjb2xvcikgeyByZXR1cm4gY29sb3IgJiAweEZGOyB9Ci1p
bmxpbmUgaW50IGFscGhhQ2hhbm5lbChSR0JBMzIgY29sb3IpIHsgcmV0dXJuIChjb2xvciA+PiAy
NCkgJiAweEZGOyB9Ci0KIHVpbnQ4X3Qgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChpbnQpOwog
dWludDhfdCByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGZsb2F0KTsKIAotY2xhc3MgUkdCQSB7
Ci1wdWJsaWM6Ci0gICAgUkdCQSgpOyAvLyBhbGwgY2hhbm5lbHMgemVybywgaW5jbHVkaW5nIGFs
cGhhCi0gICAgUkdCQSh1aW50OF90IHJlZCwgdWludDhfdCBncmVlbiwgdWludDhfdCBibHVlLCB1
aW50OF90IGFscGhhKTsKLSAgICBSR0JBKHVpbnQ4X3QgcmVkLCB1aW50OF90IGdyZWVuLCB1aW50
OF90IGJsdWUpOyAvLyBvcGFxdWUsIGFscGhhIG9mIDEKLQotICAgIHVpbnQ4X3QgcmVkKCkgY29u
c3Q7Ci0gICAgdWludDhfdCBncmVlbigpIGNvbnN0OwotICAgIHVpbnQ4X3QgYmx1ZSgpIGNvbnN0
OwotICAgIHVpbnQ4X3QgYWxwaGEoKSBjb25zdDsKLQotICAgIGJvb2wgaGFzQWxwaGEoKSBjb25z
dDsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgQ29sb3I7Ci0KLSAgICB1bnNpZ25lZCBt
X2ludGVnZXIgeyAwIH07Ci19OwotCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgUkdCQSYsIGNvbnN0
IFJHQkEmKTsKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBSR0JBJiwgY29uc3QgUkdCQSYpOwotCiBj
bGFzcyBDb2xvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0x
MTcsNyArMTE0LDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIGVudW0gU2VtYW50aWNUYWcgeyBT
ZW1hbnRpYyB9OwotCiAgICAgQ29sb3IoUkdCQTMyIGNvbG9yLCBTZW1hbnRpY1RhZykKICAgICB7
CiAgICAgICAgIHNldFJHQihjb2xvcik7CkBAIC0xNzUsNyArMTcxLDYgQEAgcHVibGljOgogICAg
IC8vIGNvbnZlcnRlZCBleGFjdGx5IHRvIGludGVnZXJzLCB3ZSBzaG91bGQgbWFrZSBhIG5vcm1h
bCBDb2xvci4KICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9h
dCBiLCBmbG9hdCBhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpOwogCi0gICAgQ29sb3IoUkdCQSwg
Q29sb3JTcGFjZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IoY29uc3QgQ29sb3ImKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBDb2xvcihDb2xvciYmKTsKIApAQCAtMTg1LDE3ICsxODAsNiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2NvbG9yRGF0YS5leHRlbmRlZENvbG9yLT5kZXJlZigpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBDb2xvciBjcmVhdGVVbmNoZWNrZWQoaW50IHIsIGludCBnLCBp
bnQgYikKLSAgICB7Ci0gICAgICAgIFJHQkEzMiBjb2xvciA9IDB4RkYwMDAwMDAgfCByIDw8IDE2
IHwgZyA8PCA4IHwgYjsKLSAgICAgICAgcmV0dXJuIENvbG9yKGNvbG9yKTsKLSAgICB9Ci0gICAg
c3RhdGljIENvbG9yIGNyZWF0ZVVuY2hlY2tlZChpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkK
LSAgICB7Ci0gICAgICAgIFJHQkEzMiBjb2xvciA9IGEgPDwgMjQgfCByIDw8IDE2IHwgZyA8PCA4
IHwgYjsKLSAgICAgICAgcmV0dXJuIENvbG9yKGNvbG9yKTsKLSAgICB9Ci0KICAgICAvLyBSZXR1
cm5zIHRoZSBjb2xvciBzZXJpYWxpemVkIGFjY29yZGluZyB0byBIVE1MNQogICAgIC8vIDxodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNmaWxsLWFu
ZC1zdHJva2Utc3R5bGVzPiAoMTAgU2VwdGVtYmVyIDIwMTUpCiAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHNlcmlhbGl6ZWQoKSBjb25zdDsKQEAgLTIwNywxNSArMTkxLDE1IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSB8fCAobV9j
b2xvckRhdGEucmdiYUFuZEZsYWdzICYgdmFsaWRSR0JBQ29sb3JCaXQpOyB9CiAKLSAgICBib29s
IGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZCgpICYmIChpc0V4dGVuZGVkKCkgPyBh
c0V4dGVuZGVkKCkuYWxwaGEoKSA9PSAxLjAgOiBhbHBoYSgpID09IDI1NSk7IH0KLSAgICBib29s
IGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWQoKSAmJiAoaXNFeHRlbmRlZCgpID8g
YXNFeHRlbmRlZCgpLmFscGhhKCkgPiAwLjAgOiBhbHBoYSgpID4gMCk7IH0KKyAgICBib29sIGlz
T3BhcXVlKCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgpLmFscGhh
KCkgPT0gMS4wIDogcmdiKCkuaXNPcGFxdWUoKTsgfQorICAgIGJvb2wgaXNWaXNpYmxlKCkgY29u
c3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgpLmFscGhhKCkgPiAwLjAgOiBy
Z2IoKS5pc1Zpc2libGUoKTsgfQogCi0gICAgaW50IHJlZCgpIGNvbnN0IHsgcmV0dXJuIHJlZENo
YW5uZWwocmdiKCkpOyB9Ci0gICAgaW50IGdyZWVuKCkgY29uc3QgeyByZXR1cm4gZ3JlZW5DaGFu
bmVsKHJnYigpKTsgfQotICAgIGludCBibHVlKCkgY29uc3QgeyByZXR1cm4gYmx1ZUNoYW5uZWwo
cmdiKCkpOyB9Ci0gICAgaW50IGFscGhhKCkgY29uc3QgeyByZXR1cm4gYWxwaGFDaGFubmVsKHJn
YigpKTsgfQorICAgIGludCByZWQoKSBjb25zdCB7IHJldHVybiByZ2IoKS5yZWRDb21wb25lbnQo
KTsgfQorICAgIGludCBncmVlbigpIGNvbnN0IHsgcmV0dXJuIHJnYigpLmdyZWVuQ29tcG9uZW50
KCk7IH0KKyAgICBpbnQgYmx1ZSgpIGNvbnN0IHsgcmV0dXJuIHJnYigpLmJsdWVDb21wb25lbnQo
KTsgfQorICAgIGludCBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIHJnYigpLmFscGhhQ29tcG9uZW50
KCk7IH0KIAotICAgIGZsb2F0IGFscGhhQXNGbG9hdCgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5k
ZWQoKSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpIDogc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFscGhhQ2hh
bm5lbChyZ2IoKSkpIC8gMjU1OyB9CisgICAgZmxvYXQgYWxwaGFBc0Zsb2F0KCkgY29uc3QgeyBy
ZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgpLmFscGhhKCkgOiBzdGF0aWNfY2FzdDxm
bG9hdD4ocmdiKCkuYWxwaGFDb21wb25lbnQoKSkgLyAweEZGOyB9CiAKICAgICBSR0JBMzIgcmdi
KCkgY29uc3Q7CiAKQEAgLTI2OSwxOSArMjUzLDE5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBwYXJzZUhleENvbG9yKGNvbnN0IExDaGFyKiwgdW5zaWduZWQsIFJHQkEzMiYpOwogICAgIHN0
YXRpYyBib29sIHBhcnNlSGV4Q29sb3IoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCwgUkdCQTMyJik7
CiAKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGJsYWNrID0gMHhGRjAwMDAwMDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgUkdCQTMyIHdoaXRlID0gMHhGRkZGRkZGRjsKLSAgICBz
dGF0aWMgY29uc3QgUkdCQTMyIGRhcmtHcmF5ID0gMHhGRjgwODA4MDsKLSAgICBzdGF0aWMgY29u
c3QgUkdCQTMyIGdyYXkgPSAweEZGQTBBMEEwOwotICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgbGln
aHRHcmF5ID0gMHhGRkMwQzBDMDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgUkdC
QTMyIHRyYW5zcGFyZW50ID0gMHgwMDAwMDAwMDsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGN5
YW4gPSAweEZGMDBGRkZGOwotICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgeWVsbG93ID0gMHhGRkZG
RkYwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGJsYWNrIHsgMHhGRjAwMDAw
MCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3Igd2hpdGUgeyAweEZGRkZGRkZG
IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBkYXJrR3JheSB7IDB4RkY4MDgw
ODAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGdyYXkgeyAweEZGQTBBMEEw
IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBsaWdodEdyYXkgeyAweEZGQzBD
MEMwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciB0cmFuc3BhcmVudCB7IDB4
MDAwMDAwMDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGN5YW4geyAweEZG
MDBGRkZGIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciB5ZWxsb3cgeyAweEZG
RkZGRjAwIH07CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHN0YXRpYyBjb25zdCBS
R0JBMzIgY29tcG9zaXRpb25GaWxsID0gMHgzQ0FGQzBFMzsKKyAgICBzdGF0aWMgY29uc3RleHBy
IFNpbXBsZUNvbG9yIGNvbXBvc2l0aW9uRmlsbCB7IDB4M0NBRkMwRTMgfTsKICNlbHNlCi0gICAg
c3RhdGljIGNvbnN0IFJHQkEzMiBjb21wb3NpdGlvbkZpbGwgPSAweEZGRTFERDU1OworICAgIHN0
YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgY29tcG9zaXRpb25GaWxsIHsgMHhGRkUxREQ1NSB9
OwogI2VuZGlmCiAKICAgICBib29sIGlzRXh0ZW5kZWQoKSBjb25zdApAQCAtMzQzLDQ5ICszMjcs
MTcgQEAgdWludDE2X3QgZmFzdERpdmlkZUJ5MjU1KHVpbnQxNl90KTsKIFdFQkNPUkVfRVhQT1JU
IENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYpOwogI2VuZGlmCiAKLWlubGlu
ZSBSR0JBOjpSR0JBKCkKLXsKLX0KLQotaW5saW5lIFJHQkE6OlJHQkEodWludDhfdCByZWQsIHVp
bnQ4X3QgZ3JlZW4sIHVpbnQ4X3QgYmx1ZSwgdWludDhfdCBhbHBoYSkKLSAgICA6IG1faW50ZWdl
cihhbHBoYSA8PCAyNCB8IHJlZCA8PCAxNiB8IGdyZWVuIDw8IDggfCBibHVlKQotewotfQotCi1p
bmxpbmUgUkdCQTo6UkdCQSh1aW50OF90IHJlZCwgdWludDhfdCBncmVlbiwgdWludDhfdCBibHVl
KQotICAgIDogbV9pbnRlZ2VyKDB4RkYwMDAwMDAgfCByZWQgPDwgMTYgfCBncmVlbiA8PCA4IHwg
Ymx1ZSkKLXsKLX0KLQotaW5saW5lIHVpbnQ4X3QgUkdCQTo6cmVkKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9pbnRlZ2VyID4+IDE2OwotfQotCi1pbmxpbmUgdWludDhfdCBSR0JBOjpncmVlbigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW50ZWdlciA+PiA4OwotfQotCi1pbmxpbmUgdWludDhf
dCBSR0JBOjpibHVlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnRlZ2VyOwotfQotCi1pbmxp
bmUgdWludDhfdCBSR0JBOjphbHBoYSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW50ZWdlciA+
PiAyNDsKLX0KK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBjb25zdCBDb2xvciYpOworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwogCi1pbmxpbmUg
Ym9vbCBSR0JBOjpoYXNBbHBoYSgpIGNvbnN0CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFNpbXBs
ZUNvbG9yIGEsIFNpbXBsZUNvbG9yIGIpCiB7Ci0gICAgcmV0dXJuIChtX2ludGVnZXIgJiAweEZG
MDAwMDAwKSAhPSAweEZGMDAwMDAwOworICAgIHJldHVybiBhLnZhbHVlKCkgPT0gYi52YWx1ZSgp
OwogfQogCi1pbmxpbmUgQ29sb3I6OkNvbG9yKFJHQkEgY29sb3IsIENvbG9yU3BhY2Ugc3BhY2Up
CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFNpbXBsZUNvbG9yIGEsIFNpbXBsZUNvbG9yIGIpCiB7
Ci0gICAgc2V0UkdCKGNvbG9yLm1faW50ZWdlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChzcGFjZSwg
c3BhY2UgPT0gQ29sb3JTcGFjZTo6U1JHQik7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAog
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xvciYgYSwgY29uc3QgQ29sb3ImIGIpCkBA
IC00MzcsMTIgKzM4OSwxMiBAQCBpbmxpbmUgUkdCQTMyIENvbG9yOjpyZ2IoKSBjb25zdAogICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgQVNTRVJUKCFpc0V4dGVuZGVkKCkpIGhlcmUsIG9yIHByb2R1
Y2UKICAgICAvLyBhbiBSR0JBMzIgZXF1aXZhbGVudCBmb3IgYW4gRXh0ZW5kZWRDb2xvci4gSWRl
YWxseSB0aGUgZm9ybWVyLAogICAgIC8vIHNvIHdlIGNhbiBhdWRpdCBhbGwgdGhlIHJnYigpIGNh
bGwgc2l0ZXMgdG8gaGFuZGxlIGV4dGVuZGVkLgotICAgIHJldHVybiBzdGF0aWNfY2FzdDxSR0JB
MzI+KG1fY29sb3JEYXRhLnJnYmFBbmRGbGFncyA+PiAzMik7CisgICAgcmV0dXJuIHsgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KG1fY29sb3JEYXRhLnJnYmFBbmRGbGFncyA+PiAzMikgfTsKIH0KIAog
aW5saW5lIHZvaWQgQ29sb3I6OnNldFJHQihSR0JBMzIgcmdiKQogewotICAgIG1fY29sb3JEYXRh
LnJnYmFBbmRGbGFncyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZ2IpIDw8IDMyOworICAgIG1f
Y29sb3JEYXRhLnJnYmFBbmRGbGFncyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZ2IudmFsdWUo
KSkgPDwgMzI7CiAgICAgdGFnQXNWYWxpZCgpOwogfQogCkBAIC00NTMsNyArNDA1LDcgQEAgaW5s
aW5lIGJvb2wgQ29sb3I6OmlzQmxhY2tDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAg
IHJldHVybiAhZXh0ZW5kZWRDb2xvci5yZWQoKSAmJiAhZXh0ZW5kZWRDb2xvci5ncmVlbigpICYm
ICFleHRlbmRlZENvbG9yLmJsdWUoKSAmJiBleHRlbmRlZENvbG9yLmFscGhhKCkgPT0gMTsKICAg
ICB9CiAKLSAgICByZXR1cm4gY29sb3IuaXNWYWxpZCgpICYmIGNvbG9yLnJnYigpID09IENvbG9y
OjpibGFjazsKKyAgICByZXR1cm4gY29sb3IucmdiKCkgPT0gQ29sb3I6OmJsYWNrOwogfQogCiBp
bmxpbmUgYm9vbCBDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTQ2
MywxMiArNDE1LDkgQEAgaW5saW5lIGJvb2wgQ29sb3I6OmlzV2hpdGVDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpCiAgICAgICAgIHJldHVybiBleHRlbmRlZENvbG9yLnJlZCgpID09IDEgJiYgZXh0
ZW5kZWRDb2xvci5ncmVlbigpID09IDEgJiYgZXh0ZW5kZWRDb2xvci5ibHVlKCkgPT0gMSAmJiBl
eHRlbmRlZENvbG9yLmFscGhhKCkgPT0gMTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGNvbG9y
LmlzVmFsaWQoKSAmJiBjb2xvci5yZ2IoKSA9PSBDb2xvcjo6d2hpdGU7CisgICAgcmV0dXJuIGNv
bG9yLnJnYigpID09IENvbG9yOjp3aGl0ZTsKIH0KIAotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IENvbG9yJik7Ci1XRUJD
T1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwg
Q29sb3JTcGFjZSk7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdURiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5n
U3RvcmUuaAppbmRleCBiYWViZTUyNjExZGJlODU0Nzc4YWFkNWYyYzBlNjhjNjdmMTVjZDA2Li5m
N2NjZTQxNTE1NWVkNDNlZGZkZjUwNzY2N2M0YWE5MmRjNzEyOGY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTYw
LDE0ICs2MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAg
ICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcjsKLSAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBzaXpl
LmFyZWEoKS51bnNhZmVHZXQoKSAqIHNpemVvZihSR0JBMzIpOworICAgICAgICBzaXplX3QgYnVm
ZmVyU2l6ZSA9IHNpemUuYXJlYSgpLnVuc2FmZUdldCgpICogc2l6ZW9mKHVpbnQzMl90KTsKIAog
ICAgICAgICBpZiAoIWJ1ZmZlci50cnlSZXNlcnZlQ2FwYWNpdHkoYnVmZmVyU2l6ZSkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7
CiAgICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDxS
R0JBMzIqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CisgICAgICAgIG1f
cGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8Y2hhcio+
KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICAgICAgbV9zaXplID0gc2l6ZTsKICAgICAgICAgbV9m
cmFtZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CiAgICAgICAgIGNsZWFyKCk7
CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXIoKQogICAgIHsKLSAg
ICAgICAgbWVtc2V0KG1fcGl4ZWxzUHRyLCAwLCAobV9zaXplLmFyZWEoKSAqIHNpemVvZihSR0JB
MzIpKS51bnNhZmVHZXQoKSk7CisgICAgICAgIG1lbXNldChtX3BpeGVsc1B0ciwgMCwgKG1fc2l6
ZS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpKS51bnNhZmVHZXQoKSk7CiAgICAgfQogCiAgICAg
dm9pZCBjbGVhclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTk0LDggKzk0LDggQEAgcHVi
bGljOgogICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkgfHwgIWluQm91bmRzKHJlY3QpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHNpemVfdCByb3dCeXRlcyA9IHJlY3Qud2lkdGgo
KSAqIHNpemVvZihSR0JBMzIpOwotICAgICAgICBSR0JBMzIqIHN0YXJ0ID0gcGl4ZWxBdChyZWN0
LngoKSwgcmVjdC55KCkpOworICAgICAgICBzaXplX3Qgcm93Qnl0ZXMgPSByZWN0LndpZHRoKCkg
KiBzaXplb2YodWludDMyX3QpOworICAgICAgICB1aW50MzJfdCogc3RhcnQgPSBwaXhlbEF0KHJl
Y3QueCgpLCByZWN0LnkoKSk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVjdC5oZWln
aHQoKTsgKytpKSB7CiAgICAgICAgICAgICBtZW1zZXQoc3RhcnQsIDAsIHJvd0J5dGVzKTsKICAg
ICAgICAgICAgIHN0YXJ0ICs9IG1fc2l6ZS53aWR0aCgpOwpAQCAtMTA3LDggKzEwNyw4IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpIHx8ICFpbkJvdW5kcyhyZWN0KSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSR0JBMzIqIHN0YXJ0ID0gcGl4ZWxBdChyZWN0
LngoKSwgcmVjdC55KCkpOwotICAgICAgICBSR0JBMzIgcGl4ZWxWYWx1ZSA9IHRoaXMtPnBpeGVs
VmFsdWUociwgZywgYiwgYSk7CisgICAgICAgIHVpbnQzMl90KiBzdGFydCA9IHBpeGVsQXQocmVj
dC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgdWludDMyX3QgcGl4ZWxWYWx1ZSA9IHRoaXMtPnBp
eGVsVmFsdWUociwgZywgYiwgYSk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVjdC5o
ZWlnaHQoKTsgKytpKSB7CiAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHJlY3Qud2lk
dGgoKTsgKytqKQogICAgICAgICAgICAgICAgIHN0YXJ0W2pdID0gcGl4ZWxWYWx1ZTsKQEAgLTEy
MSwyMiArMTIxLDIyIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpIHx8ICFp
bkJvdW5kcyhyZWN0KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBzaXplX3Qgcm93
Qnl0ZXMgPSByZWN0LndpZHRoKCkgKiBzaXplb2YoUkdCQTMyKTsKLSAgICAgICAgUkdCQTMyKiBz
cmMgPSBwaXhlbEF0KHJlY3QueCgpLCByZWN0LnkoKSk7Ci0gICAgICAgIFJHQkEzMiogZGVzdCA9
IHNyYyArIG1fc2l6ZS53aWR0aCgpOworICAgICAgICBzaXplX3Qgcm93Qnl0ZXMgPSByZWN0Lndp
ZHRoKCkgKiBzaXplb2YodWludDMyX3QpOworICAgICAgICB1aW50MzJfdCogc3JjID0gcGl4ZWxB
dChyZWN0LngoKSwgcmVjdC55KCkpOworICAgICAgICB1aW50MzJfdCogZGVzdCA9IHNyYyArIG1f
c2l6ZS53aWR0aCgpOwogICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHJlY3QuaGVpZ2h0KCk7
ICsraSkgewogICAgICAgICAgICAgbWVtY3B5KGRlc3QsIHNyYywgcm93Qnl0ZXMpOwogICAgICAg
ICAgICAgZGVzdCArPSBtX3NpemUud2lkdGgoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIFJH
QkEzMiogcGl4ZWxBdChpbnQgeCwgaW50IHkpIGNvbnN0CisgICAgdWludDMyX3QqIHBpeGVsQXQo
aW50IHgsIGludCB5KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGluQm91bmRzKEludFBv
aW50KHgsIHkpKSk7CiAgICAgICAgIHJldHVybiBtX3BpeGVsc1B0ciArIHkgKiBtX3NpemUud2lk
dGgoKSArIHg7CiAgICAgfQogCi0gICAgdm9pZCBzZXRQaXhlbChSR0JBMzIqIGRlc3QsIHVuc2ln
bmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCisgICAgdm9pZCBzZXRQ
aXhlbCh1aW50MzJfdCogZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwg
dW5zaWduZWQgYSkKICAgICB7CiAgICAgICAgIEFTU0VSVChkZXN0KTsKICAgICAgICAgKmRlc3Qg
PSBwaXhlbFZhbHVlKHIsIGcsIGIsIGEpOwpAQCAtMTQ3LDMwICsxNDcsMzIgQEAgcHVibGljOgog
ICAgICAgICBzZXRQaXhlbChwaXhlbEF0KHgsIHkpLCByLCBnLCBiLCBhKTsKICAgICB9CiAKLSAg
ICB2b2lkIGJsZW5kUGl4ZWwoUkdCQTMyKiBkZXN0LCB1bnNpZ25lZCByLCB1bnNpZ25lZCBnLCB1
bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHZvaWQgYmxlbmRQaXhlbCh1aW50MzJfdCogZGVz
dCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKICAgICB7
CiAgICAgICAgIGlmICghYSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoYSA+
PSAyNTUgfHwgIWFscGhhQ2hhbm5lbCgqZGVzdCkpIHsKKyAgICAgICAgU2ltcGxlQ29sb3IgcGl4
ZWwgeyAqZGVzdCB9OworCisgICAgICAgIGlmIChhID49IDI1NSB8fCAhcGl4ZWwuaXNWaXNpYmxl
KCkpIHsKICAgICAgICAgICAgIHNldFBpeGVsKGRlc3QsIHIsIGcsIGIsIGEpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5QWxwaGEp
Ci0gICAgICAgICAgICAqZGVzdCA9IG1ha2VQcmVtdWx0aXBsaWVkUkdCQShyZWRDaGFubmVsKCpk
ZXN0KSwgZ3JlZW5DaGFubmVsKCpkZXN0KSwgYmx1ZUNoYW5uZWwoKmRlc3QpLCBhbHBoYUNoYW5u
ZWwoKmRlc3QpLCBmYWxzZSk7CisgICAgICAgICAgICBwaXhlbCA9IG1ha2VQcmVtdWx0aXBsaWVk
UkdCQShwaXhlbC5yZWRDb21wb25lbnQoKSwgcGl4ZWwuZ3JlZW5Db21wb25lbnQoKSwgcGl4ZWwu
Ymx1ZUNvbXBvbmVudCgpLCBwaXhlbC5hbHBoYUNvbXBvbmVudCgpLCBmYWxzZSk7CiAKICAgICAg
ICAgdW5zaWduZWQgZCA9IDI1NSAtIGE7CiAKLSAgICAgICAgciA9IGZhc3REaXZpZGVCeTI1NShy
ICogYSArIHJlZENoYW5uZWwoKmRlc3QpICogZCk7Ci0gICAgICAgIGcgPSBmYXN0RGl2aWRlQnky
NTUoZyAqIGEgKyBncmVlbkNoYW5uZWwoKmRlc3QpICogZCk7Ci0gICAgICAgIGIgPSBmYXN0RGl2
aWRlQnkyNTUoYiAqIGEgKyBibHVlQ2hhbm5lbCgqZGVzdCkgKiBkKTsKLSAgICAgICAgYSArPSBm
YXN0RGl2aWRlQnkyNTUoZCAqIGFscGhhQ2hhbm5lbCgqZGVzdCkpOworICAgICAgICByID0gZmFz
dERpdmlkZUJ5MjU1KHIgKiBhICsgcGl4ZWwucmVkQ29tcG9uZW50KCkgKiBkKTsKKyAgICAgICAg
ZyA9IGZhc3REaXZpZGVCeTI1NShnICogYSArIHBpeGVsLmdyZWVuQ29tcG9uZW50KCkgKiBkKTsK
KyAgICAgICAgYiA9IGZhc3REaXZpZGVCeTI1NShiICogYSArIHBpeGVsLmJsdWVDb21wb25lbnQo
KSAqIGQpOworICAgICAgICBhICs9IGZhc3REaXZpZGVCeTI1NShkICogcGl4ZWwuYWxwaGFDb21w
b25lbnQoKSk7CiAKICAgICAgICAgaWYgKG1fcHJlbXVsdGlwbHlBbHBoYSkKLSAgICAgICAgICAg
ICpkZXN0ID0gbWFrZVJHQkEociwgZywgYiwgYSk7CisgICAgICAgICAgICAqZGVzdCA9IG1ha2VS
R0JBKHIsIGcsIGIsIGEpLnZhbHVlKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICpkZXN0
ID0gbWFrZVVuUHJlbXVsdGlwbGllZFJHQkEociwgZywgYiwgYSk7CisgICAgICAgICAgICAqZGVz
dCA9IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHIsIGcsIGIsIGEpLnZhbHVlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIGJvb2wgaXNPdmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMjA0
LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7CiAgICAg
ICAgIGJ1ZmZlci5hcHBlbmQob3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9waXhlbHMt
PnNpemUoKSk7CiAgICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnBy
ZXRfY2FzdDxSR0JBMzIqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7Cisg
ICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nh
c3Q8Y2hhcio+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICB9CiAKICAgICBib29sIGluQm91bmRz
KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKQEAgLTIxNywxOSArMjE5LDE5IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSkuY29udGFpbnMo
cmVjdCk7CiAgICAgfQogCi0gICAgUkdCQTMyIHBpeGVsVmFsdWUodW5zaWduZWQgciwgdW5zaWdu
ZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkgY29uc3QKKyAgICB1aW50MzJfdCBwaXhlbFZh
bHVlKHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpIGNvbnN0
CiAgICAgewogICAgICAgICBpZiAobV9wcmVtdWx0aXBseUFscGhhICYmICFhKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYgKG1fcHJlbXVsdGlwbHlBbHBoYSAmJiBhIDwgMjU1
KQotICAgICAgICAgICAgcmV0dXJuIG1ha2VQcmVtdWx0aXBsaWVkUkdCQShyLCBnLCBiLCBhLCBm
YWxzZSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVByZW11bHRpcGxpZWRSR0JBKHIsIGcsIGIs
IGEsIGZhbHNlKS52YWx1ZSgpOwogCi0gICAgICAgIHJldHVybiBtYWtlUkdCQShyLCBnLCBiLCBh
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VSR0JBKHIsIGcsIGIsIGEpLnZhbHVlKCk7CiAgICAgfQog
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOwotICAgIFJH
QkEzMiogbV9waXhlbHNQdHIgeyBudWxscHRyIH07CisgICAgdWludDMyX3QqIG1fcGl4ZWxzUHRy
IHsgbnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXplOwogICAgIEludFJlY3QgbV9mcmFtZVJl
Y3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50aXJlIGJ1ZmZlciBleGNlcHQg
Zm9yIEdJRiBhbmQgUE5HIGZyYW1lcwogICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhhIHsgdHJ1
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCmlu
ZGV4IDJjYzZiMDJhN2QzNTAxNTcxY2YyMDkzNjRiMzZlZDI1YzFkODM5NjkuLjg1NmZlMzRmZTZm
NzE3ZjgxNmUzNGE0N2QzZjY4NGJhNjAzYjk0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUg
IkNvbG9yLmgiCiAjaW5jbHVkZSAiRGVjb2RpbmdPcHRpb25zLmgiCi0jaW5jbHVkZSAiSW1hZ2VC
YWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
SW1hZ2VUeXBlcy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IDFjMDdhNmYzMGFhNTEwNzAzZDIy
YTIzMDU5ZGNlMDg3OWIyOGQ4NWQuLjYyMWE1MjM2OTdlODMxOGJkMDkyN2IxOTA3N2VkMGI0N2E0
MWIzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBJ
bWFnZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEltYWdlRGVjb2RlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1hZ2VTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8SW1hZ2VTb3VyY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VTb3VyY2U+
IHsKICAgICBmcmllbmQgY2xhc3MgQml0bWFwSW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmlu
ZGV4IGJiYjVjNjQ4MmI2ZTFkM2YyOGFjNDc5ZWE3YzVkMzFiMWQzMzc5MDIuLmI2MzViZjQzZjcz
ZDczM2NhM2UyMjJlMzJkN2UyMTE1NmQxMWVhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBA
IC0zOTgsNyArMzk4LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xv
clNwYWNlKGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiYgbG8KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsb29rVXBUYWJsZVtwaXhlbENvbG9yLmdyZWVuKCldLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2tVcFRhYmxlW3BpeGVsQ29sb3IuYmx1ZSgpXSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbENvbG9yLmFscGhhKCkpOwotICAg
ICAgICAgICAgKnBpeGVsID0gcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IocGl4ZWxDb2xvcik7
CisgICAgICAgICAgICAqcGl4ZWwgPSBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihwaXhlbENv
bG9yKS52YWx1ZSgpOwogICAgICAgICB9CiAgICAgfQogICAgIGNhaXJvX3N1cmZhY2VfbWFya19k
aXJ0eV9yZWN0YW5nbGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgMCwgMCwgbV9sb2dpY2FsU2l6
ZS53aWR0aCgpLCBtX2xvZ2ljYWxTaXplLmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKaW5kZXggY2RmZmEzZjYwZTlhZDE4ZjJh
NDBhOGU4OTg1MmEzNmEzMzdmNTEwMC4uNzgzOGYzNTMxYzJiZTUwNjU5NTJhZTFjYjM4MTg3YmM5
YjcyZTk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q29sb3JDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29s
b3JDRy5jcHAKQEAgLTEyOCwyMyArMTI4LDIzIEBAIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0Nv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpCiB7CiAgICAgaWYgKCFjb2xvci5pc0V4dGVuZGVkKCkpIHsKLSAgICAgICAg
c3dpdGNoIChjb2xvci5yZ2IoKSkgewotICAgICAgICBjYXNlIENvbG9yOjp0cmFuc3BhcmVudDog
eworICAgICAgICBzd2l0Y2ggKGNvbG9yLnJnYigpLnZhbHVlKCkpIHsKKyAgICAgICAgY2FzZSBD
b2xvcjo6dHJhbnNwYXJlbnQudmFsdWUoKTogewogICAgICAgICAgICAgc3RhdGljIENHQ29sb3JS
ZWYgdHJhbnNwYXJlbnRDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAgICAgICAgICAg
cmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsKICAgICAgICAgfQotICAgICAgICBjYXNlIENvbG9y
OjpibGFjazogeworICAgICAgICBjYXNlIENvbG9yOjpibGFjay52YWx1ZSgpOiB7CiAgICAgICAg
ICAgICBzdGF0aWMgQ0dDb2xvclJlZiBibGFja0NHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7
CiAgICAgICAgICAgICByZXR1cm4gYmxhY2tDR0NvbG9yOwogICAgICAgICB9Ci0gICAgICAgIGNh
c2UgQ29sb3I6OndoaXRlOiB7CisgICAgICAgIGNhc2UgQ29sb3I6OndoaXRlLnZhbHVlKCk6IHsK
ICAgICAgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHdoaXRlQ0dDb2xvciA9IGxlYWtDR0NvbG9y
KGNvbG9yKTsKICAgICAgICAgICAgIHJldHVybiB3aGl0ZUNHQ29sb3I7CiAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KIAotICAgIEFTU0VSVChjb2xvci5pc0V4dGVuZGVkKCkgfHwgY29sb3Iu
cmdiKCkpOworICAgIEFTU0VSVChjb2xvci5pc0V4dGVuZGVkKCkgfHwgY29sb3IucmdiKCkudmFs
dWUoKSk7CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPENvbG9yLCBS
ZXRhaW5QdHI8Q0dDb2xvclJlZj4sIDMyPj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hlLmdldCgp
LmdldChjb2xvcikuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29sb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29sb3JNYWMubW0KaW5kZXggMWZmNWI3MjNiZDkyMjdiNmQxMjY5Y2RmOTRlNjNkMjI1
MjJiN2Y2MC4uMTg3NDk1MmFhMmNiMjBmOTY1OGVmMGIyZDRjMzM3ZGY4MGMzNTQyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQpAQCAt
NDAsNyArNDAsNyBAQCBzdGF0aWMgYm9vbCB1c2VPbGRBcXVhRm9jdXNSaW5nQ29sb3I7CiAKIENv
bG9yIG9sZEFxdWFGb2N1c1JpbmdDb2xvcigpCiB7Ci0gICAgcmV0dXJuIDB4RkY3REFERDk7Cisg
ICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjdEQUREOSB9OwogfQogCiB2b2lkIHNldFVzZXNU
ZXN0TW9kZUZvY3VzUmluZ0NvbG9yKGJvb2wgbmV3VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQ29sb3JEaXJlY3QyRC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQ29sb3JEaXJlY3QyRC5jcHAKaW5kZXggZGVh
ZGRkNmY4ZjhmMzA3YjM5YmYxYzExYzRiZGI0YTRjM2I0MTBiMC4uOGMzMWI2NzI2ZWE0NjcxOWNj
NWFhZjViODgwNWQxZTNlYzkwODM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Db2xvckRpcmVjdDJELmNwcApAQCAtNDIsNyArNDIsNyBAQCBD
b2xvcjo6b3BlcmF0b3IgRDJEMV9DT0xPUl9GKCkgY29uc3QKIHsKICAgICBmbG9hdCBjb2xvckFs
cGhhID0gYWxwaGEoKSAvIDI1NS4wZjsKIAotICAgIHJldHVybiBEMkQxOjpDb2xvckYocmdiKCks
IGNvbG9yQWxwaGEpOworICAgIHJldHVybiBEMkQxOjpDb2xvckYocmdiKCkudmFsdWUoKSwgY29s
b3JBbHBoYSk7CiB9CiAKIENvbG9yOjpvcGVyYXRvciBEMkQxX1ZFQ1RPUl80RigpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IDhhMTMzM2M2NTRjZDI2ZmM5ZmNmMjFkM2U4
OTA0NWVjMzJmNTRkMWUuLmY3ZjdmNzEwMTE0ZThiYjI0NmI0NDZmNjcyNTQzODZkZDg2OGRmODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9Q
TkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCBQ
TkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSh1bnNpZ25lZCBjaGFyKiByb3dCdWZmZXIsIHVu
c2lnbmVkIHJvd0luZGV4LAogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChp
bnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4LCBwaXhlbCArPSAzLCArK2FkZHJlc3MpCi0gICAgICAg
ICAgICAqYWRkcmVzcyA9IG1ha2VSR0IocGl4ZWxbMF0sIHBpeGVsWzFdLCBwaXhlbFsyXSk7Cisg
ICAgICAgICAgICAqYWRkcmVzcyA9IDB4RkYwMDAwMDAgfCBwaXhlbFswXSA8PCAxNiB8IHBpeGVs
WzFdIDw8IDggfCBwaXhlbFsyXTsKICAgICB9CiAKICAgICBpZiAobm9uVHJpdmlhbEFscGhhTWFz
ayAmJiAhYnVmZmVyLmhhc0FscGhhKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4
IDU4NDYyZjYyMmMyMGQzZjI4YjI1MzhiNGE0OWE4Y2RjZmRhNTY0YmEuLjE2ZDI4ZmM1NTUzYTU0
NTIwZGQxNjQ5Y2Q3ODBiNGM4NGQyNGFmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
CkBAIC04Myw4ICs4Myw4IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPE1vY2tNZWRpYURldmljZT4g
ZGVmYXVsdERldmljZXMoKQogICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTEiX3Ms
ICJNb2NrIHNjcmVlbiBkZXZpY2UgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBDb2xvcjo6bGlnaHRHcmF5LCB7IDM4NDAsIDIx
NjAgfSB9IH0sCiAgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJTQ1JFRU4tMiJfcywgIk1vY2sg
c2NyZWVuIGRldmljZSAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlOjpTY3JlZW4sIENvbG9yOjp5ZWxsb3csIHsgMTkyMCwgMTA4MCB9IH0gfSwK
IAotICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAx
Il9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpT
Y3JlZW4sIDB4ZmZmMWI1LCB7IDY0MCwgNDgwIH0gfSB9LAotICAgICAgICBNb2NrTWVkaWFEZXZp
Y2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRp
ZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIDB4ZmZkMGI1LCB7IDEyODAs
IDYwMCB9IH0gfSwKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9j
ayB3aW5kb3cgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6U2NyZWVuLCBTaW1wbGVDb2xvciB7IDB4ZmZmMWI1IH0sIHsgNjQwLCA0ODAgfSB9
IH0sCisgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1vY2sgd2luZG93
IDIiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6
OlNjcmVlbiwgU2ltcGxlQ29sb3IgeyAweGZmZDBiNSB9LCB7IDEyODAsIDYwMCB9IH0gfSwKICAg
ICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDVhYzlkNjYwNmM0MjIxMjQ4YmM0MWRlOTM4
OWNlNWM4N2U0YTQxN2IuLjY3ZDJhMTdmY2QwNDg3ZjhkOTg0MjYzMzk2NDQ1YWY3MDlkYWE5MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0yNjIsMTIgKzI2MiwxMCBAQCB2b2lkIE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpkcmF3QW5pbWF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIAog
dm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0JveGVzKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkKIHsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIG1hZ2VudGEgPSAweGZmZmYwMGZm
OwotICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgeWVsbG93ID0gMHhmZmZmZmYwMDsKLSAgICBzdGF0
aWMgY29uc3QgUkdCQTMyIGJsdWUgPSAweGZmMDAwMGZmOwotICAgIHN0YXRpYyBjb25zdCBSR0JB
MzIgcmVkID0gMHhmZmZmMDAwMDsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGdyZWVuID0gMHhm
ZjAwODAwMDsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGN5YW4gPSAweEZGMDBGRkZGOworICAg
IGNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWdlbnRhIHsgMHhmZmZmMDBmZiB9OworICAgIGNvbnN0
ZXhwciBTaW1wbGVDb2xvciBibHVlIHsgMHhmZjAwMDBmZiB9OworICAgIGNvbnN0ZXhwciBTaW1w
bGVDb2xvciByZWQgeyAweGZmZmYwMDAwIH07CisgICAgY29uc3RleHByIFNpbXBsZUNvbG9yIGRh
cmtHcmVlbiB7IDB4ZmYwMDgwMDAgfTsKIAogICAgIEludFNpemUgc2l6ZSA9IGNhcHR1cmVTaXpl
KCk7CiAgICAgZmxvYXQgYm94U2l6ZSA9IHNpemUud2lkdGgoKSAqIC4wMzU7CkBAIC0zMTcsOSAr
MzE1LDkgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0JveGVzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKIAogICAgIGJveFRvcCArPSBib3hTaXplICsgMjsKICAgICBib3hM
ZWZ0ID0gYm94U2l6ZTsKLSAgICBDb2xvciBib3hDb2xvcnNbXSA9IHsgQ29sb3I6OndoaXRlLCB5
ZWxsb3csIGN5YW4sIGdyZWVuLCBtYWdlbnRhLCByZWQsIGJsdWUgfTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2l6ZW9mKGJveENvbG9ycykgLyBzaXplb2YoYm94Q29sb3JzWzBdKTsg
aSsrKSB7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KGJveExlZnQsIGJveFRv
cCwgYm94U2l6ZSArIDEsIGJveFNpemUgKyAxKSwgYm94Q29sb3JzW2ldKTsKKyAgICBjb25zdGV4
cHIgU2ltcGxlQ29sb3IgYm94Q29sb3JzW10gPSB7IENvbG9yOjp3aGl0ZSwgQ29sb3I6OnllbGxv
dywgQ29sb3I6OmN5YW4sIGRhcmtHcmVlbiwgbWFnZW50YSwgcmVkLCBibHVlIH07CisgICAgZm9y
IChhdXRvJiBib3hDb2xvciA6IGJveENvbG9ycykgeworICAgICAgICBjb250ZXh0LmZpbGxSZWN0
KEZsb2F0UmVjdChib3hMZWZ0LCBib3hUb3AsIGJveFNpemUgKyAxLCBib3hTaXplICsgMSksIGJv
eENvbG9yKTsKICAgICAgICAgYm94TGVmdCArPSBib3hTaXplICsgMTsKICAgICB9CiAgICAgY29u
dGV4dC5zdHJva2VQYXRoKG1fcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKaW5kZXggZWQ4YWJiNGExNDZhYmM3MTBjNDVj
NDc3MzBkYjg1MDAzZGU2NmM0OS4uNWE2NzVhMjVlYmIyMDZjNzQ2YmQ0NGNjMjJhNDUwYzI4NzZj
YTZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJU
aGVtZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFy
VGhlbWVNb2NrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpz
Y3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUsIFNjcgog
CiB2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdHJh
Y2tSZWN0KQogewotICAgIGNvbnRleHQuZmlsbFJlY3QodHJhY2tSZWN0LCBzY3JvbGxiYXIuZW5h
YmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IENvbG9yKDB4RkZFMEUwRTApKTsKKyAgICBjb250
ZXh0LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdo
dEdyYXkgOiBTaW1wbGVDb2xvciB7IDB4RkZFMEUwRTAgfSk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFy
VGhlbWVNb2NrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFy
JiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggOThjZGQ4YmVmZGJhMWJhNzgyYzAzZTZiMjUy
MWRjYTgwNzVmY2RhYi4uM2RmNDU1YjA2MzEyZWU1Y2Q2MWY3ZWQxYmI4OGM3Yzc1NzdjYjNkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE4MzcsOSAr
MTgzNywxMSBAQCBSZW5kZXJGcmFnbWVudGVkRmxvdyogUmVuZGVyT2JqZWN0Ojpsb2NhdGVFbmNs
b3NpbmdGcmFnbWVudGVkRmxvdygpIGNvbnN0CiB2b2lkIFJlbmRlck9iamVjdDo6Y2FsY3VsYXRl
Qm9yZGVyU3R5bGVDb2xvcihjb25zdCBCb3JkZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJveFNpZGUm
IHNpZGUsIENvbG9yJiBjb2xvcikKIHsKICAgICBBU1NFUlQoc3R5bGUgPT0gQm9yZGVyU3R5bGU6
Okluc2V0IHx8IHN0eWxlID09IEJvcmRlclN0eWxlOjpPdXRzZXQpOworCiAgICAgLy8gVGhpcyB2
YWx1ZXMgd2VyZSBkZXJpdmVkIGVtcGlyaWNhbGx5LgotICAgIGNvbnN0IFJHQkEzMiBiYXNlRGFy
a0NvbG9yID0gMHhGRjIwMjAyMDsKLSAgICBjb25zdCBSR0JBMzIgYmFzZUxpZ2h0Q29sb3IgPSAw
eEZGRUJFQkVCOworICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBiYXNlRGFya0NvbG9yIHsgMHhG
RjIwMjAyMCB9OworICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBiYXNlTGlnaHRDb2xvciB7IDB4
RkZFQkVCRUIgfTsKKwogICAgIGVudW0gT3BlcmF0aW9uIHsgRGFya2VuLCBMaWdodGVuIH07CiAK
ICAgICBPcGVyYXRpb24gb3BlcmF0aW9uID0gKHNpZGUgPT0gQlNUb3AgfHwgc2lkZSA9PSBCU0xl
ZnQpID09IChzdHlsZSA9PSBCb3JkZXJTdHlsZTo6SW5zZXQpID8gRGFya2VuIDogTGlnaHRlbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDBjMzViNGYxNzYx
MmQ0N2E2NjQ1OGQzZjM3MjY1NzFlYmFiZjlhZjcuLjYwOTdiNGM2YTNlOWViZDMxOTI5MjZmZTM5
MzliOGJiNWQ3ZmVlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNw
cApAQCAtMTI4NSw3MyArMTI4NSw3MiBAQCBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3Io
Q1NTVmFsdWVJRCBjc3NWYWx1ZUlkLCBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aQogewogICAg
IHN3aXRjaCAoY3NzVmFsdWVJZCkgewogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMaW5rOgotICAg
ICAgICByZXR1cm4gb3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yOjpPcHRpb25zOjpGb3JWaXNp
dGVkTGluaykgPyAweEZGNTUxQThCIDogMHhGRjAwMDBFRTsKKyAgICAgICAgcmV0dXJuIG9wdGlv
bnMuY29udGFpbnMoU3R5bGVDb2xvcjo6T3B0aW9uczo6Rm9yVmlzaXRlZExpbmspID8gU2ltcGxl
Q29sb3IgeyAweEZGNTUxQThCIH0gOiBTaW1wbGVDb2xvciB7IDB4RkYwMDAwRUUgfTsKICAgICBj
YXNlIENTU1ZhbHVlV2Via2l0QWN0aXZlbGluazoKLSAgICAgICAgcmV0dXJuIDB4RkZGRjAwMDA7
CisgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZGRjAwMDAgfTsKICAgICBjYXNlIENT
U1ZhbHVlQWN0aXZlYm9yZGVyOgotICAgICAgICByZXR1cm4gMHhGRkZGRkZGRjsKKyAgICAgICAg
cmV0dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlQWN0aXZlYnV0dG9udGV4dDoK
LSAgICAgICAgcmV0dXJuIDB4RkYwMDAwMDA7CisgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7
CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWNhcHRpb246Ci0gICAgICAgIHJldHVybiAweEZGQ0ND
Q0NDOworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGQ0NDQ0NDIH07CiAgICAgY2Fz
ZSBDU1NWYWx1ZUFwcHdvcmtzcGFjZToKLSAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAg
ICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZUJhY2tncm91bmQ6Ci0g
ICAgICAgIHJldHVybiAweEZGNjM2M0NFOworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAw
eEZGNjM2M0NFIH07CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbmZhY2U6Ci0gICAgICAgIHJldHVy
biAweEZGQzBDMEMwOworICAgICAgICByZXR1cm4gQ29sb3I6OmxpZ2h0R3JheTsKICAgICBjYXNl
IENTU1ZhbHVlQnV0dG9uaGlnaGxpZ2h0OgotICAgICAgICByZXR1cm4gMHhGRkRERERERDsKKyAg
ICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkRERERERCB9OwogICAgIGNhc2UgQ1NTVmFs
dWVCdXR0b25zaGFkb3c6Ci0gICAgICAgIHJldHVybiAweEZGODg4ODg4OworICAgICAgICByZXR1
cm4gU2ltcGxlQ29sb3IgeyAweEZGODg4ODg4IH07CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbnRl
eHQ6Ci0gICAgICAgIHJldHVybiAweEZGMDAwMDAwOworICAgICAgICByZXR1cm4gQ29sb3I6OmJs
YWNrOwogICAgIGNhc2UgQ1NTVmFsdWVDYXB0aW9udGV4dDoKLSAgICAgICAgcmV0dXJuIDB4RkYw
MDAwMDA7CisgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZUdy
YXl0ZXh0OgotICAgICAgICByZXR1cm4gMHhGRjgwODA4MDsKKyAgICAgICAgcmV0dXJuIFNpbXBs
ZUNvbG9yIHsgMHhGRjgwODA4MCB9OwogICAgIGNhc2UgQ1NTVmFsdWVIaWdobGlnaHQ6Ci0gICAg
ICAgIHJldHVybiAweEZGQjVENUZGOworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZG
QjVENUZGIH07CiAgICAgY2FzZSBDU1NWYWx1ZUhpZ2hsaWdodHRleHQ6Ci0gICAgICAgIHJldHVy
biAweEZGMDAwMDAwOworICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NT
VmFsdWVJbmFjdGl2ZWJvcmRlcjoKLSAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAgICAg
IHJldHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZUluYWN0aXZlY2FwdGlvbjoK
LSAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAgICAgIHJldHVybiBDb2xvcjo6d2hpdGU7
CiAgICAgY2FzZSBDU1NWYWx1ZUluYWN0aXZlY2FwdGlvbnRleHQ6Ci0gICAgICAgIHJldHVybiAw
eEZGN0Y3RjdGOworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGN0Y3RjdGIH07CiAg
ICAgY2FzZSBDU1NWYWx1ZUluZm9iYWNrZ3JvdW5kOgotICAgICAgICByZXR1cm4gMHhGRkZCRkND
NTsKKyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkZCRkNDNSB9OwogICAgIGNhc2Ug
Q1NTVmFsdWVJbmZvdGV4dDoKLSAgICAgICAgcmV0dXJuIDB4RkYwMDAwMDA7CisgICAgICAgIHJl
dHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZU1lbnU6Ci0gICAgICAgIHJldHVy
biAweEZGQzBDMEMwOworICAgICAgICByZXR1cm4gQ29sb3I6OmxpZ2h0R3JheTsKICAgICBjYXNl
IENTU1ZhbHVlTWVudXRleHQ6Ci0gICAgICAgIHJldHVybiAweEZGMDAwMDAwOworICAgICAgICBy
ZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVTY3JvbGxiYXI6Ci0gICAgICAg
IHJldHVybiAweEZGRkZGRkZGOworICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogICAgIGNh
c2UgQ1NTVmFsdWVUZXh0OgotICAgICAgICByZXR1cm4gMHhGRjAwMDAwMDsKKyAgICAgICAgcmV0
dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkZGFya3NoYWRvdzoKLSAg
ICAgICAgcmV0dXJuIDB4RkY2NjY2NjY7CisgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4
RkY2NjY2NjYgfTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkZmFjZToKLSAgICAgICAgcmV0dXJu
IDB4RkZDMEMwQzA7CisgICAgICAgIHJldHVybiBDb2xvcjo6bGlnaHRHcmF5OwogICAgIGNhc2Ug
Q1NTVmFsdWVUaHJlZWRoaWdobGlnaHQ6Ci0gICAgICAgIHJldHVybiAweEZGREREREREOworICAg
ICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGREREREREIH07CiAgICAgY2FzZSBDU1NWYWx1
ZVRocmVlZGxpZ2h0c2hhZG93OgotICAgICAgICByZXR1cm4gMHhGRkMwQzBDMDsKKyAgICAgICAg
cmV0dXJuIENvbG9yOjpsaWdodEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZHNoYWRvdzoK
LSAgICAgICAgcmV0dXJuIDB4RkY4ODg4ODg7CisgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7
IDB4RkY4ODg4ODggfTsKICAgICBjYXNlIENTU1ZhbHVlV2luZG93OgotICAgICAgICByZXR1cm4g
MHhGRkZGRkZGRjsKKyAgICAgICAgcmV0dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1Zh
bHVlV2luZG93ZnJhbWU6Ci0gICAgICAgIHJldHVybiAweEZGQ0NDQ0NDOworICAgICAgICByZXR1
cm4gU2ltcGxlQ29sb3IgeyAweEZGQ0NDQ0NDIH07CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvd3Rl
eHQ6Ci0gICAgICAgIHJldHVybiAweEZGMDAwMDAwOworICAgICAgICByZXR1cm4gQ29sb3I6OmJs
YWNrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KLSAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWU6OmFjdGl2
ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4g
b3B0aW9ucykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQppbmRleCBjZDhhZjZlMmE3ODVmMDE2OTI0N2IwZDFmMmNhYTc3YzkzYzYxNDBmLi4yMzlmZTIw
NDgyOTg2ZTkzNzYwZjA0OTYzOGU4YmIyZmYyYTNjN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC04MTksMTEgKzgxOSwxMSBAQCBDb2xvciBSZW5k
ZXJUaGVtZU1hYzo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlELCBPcHRpb25TZXQ8
U3R5bGVDb2xvcjo6TwogICAgICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkZmFjZToKICAgICAgICAg
ICAgIC8vIFdlIHNlbGVjdGVkIHRoaXMgdmFsdWUgaW5zdGVhZCBvZiBbTlNDb2xvciBjb250cm9s
Q29sb3JdIHRvIGF2b2lkIHdlYnNpdGUgaW5jb21wYXRpYmlsaXRpZXMuCiAgICAgICAgICAgICAv
LyBXZSBtYXkgd2FudCB0byBjb25zaWRlciBjaGFuZ2luZyB0byBbTlNDb2xvciBjb250cm9sQ29s
b3JdIHNvbWUgZGF5LgotICAgICAgICAgICAgcmV0dXJuIDB4RkZDMEMwQzA7CisgICAgICAgICAg
ICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGQzBDMEMwIH07CiAKICAgICAgICAgY2FzZSBDU1NW
YWx1ZUluZm9iYWNrZ3JvdW5kOgogICAgICAgICAgICAgLy8gTm8gY29ycmVzcG9uZGluZyBOU0Nv
bG9yIGZvciB0aGlzIHNvIHdlIHVzZSBhIGhhcmQgY29kZWQgdmFsdWUuCi0gICAgICAgICAgICBy
ZXR1cm4gMHhGRkZCRkNDNTsKKyAgICAgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZG
QkZDQzUgfTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlTWVudToKICAgICAgICAgICAgIHJldHVy
biBtZW51QmFja2dyb3VuZENvbG9yKCk7CkBAIC04MzIsMzAgKzgzMiwzMCBAQCBDb2xvciBSZW5k
ZXJUaGVtZU1hYzo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlELCBPcHRpb25TZXQ8
U3R5bGVDb2xvcjo6TwogICAgICAgICBjYXNlIENTU1ZhbHVlQWN0aXZlYm9yZGVyOgogICAgICAg
ICAgICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBhcHBlYXJhbmNlIHBy
ZWZlcmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAgICAgICAgICBpZiAo
bG9jYWxBcHBlYXJhbmNlLnVzaW5nRGFya0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gQ29sb3IoMHhGRjFBQTlGRiwgQ29sb3I6OlNlbWFudGljKTsKLSAgICAgICAgICAgIHJl
dHVybiBDb2xvcigweEZGMDA2N0Y0LCBDb2xvcjo6U2VtYW50aWMpOworICAgICAgICAgICAgICAg
IHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHhGRjFBQTlGRiB9LCBDb2xvcjo6U2VtYW50aWMgfTsK
KyAgICAgICAgICAgIHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHhGRjAwNjdGNCB9LCBDb2xvcjo6
U2VtYW50aWMgfTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1Db250cm9sQWNj
ZW50OgogICAgICAgICAgICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBh
cHBlYXJhbmNlIHByZWZlcmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAg
ICAgICAgICAvLyBTYW1lIGNvbG9yIGluIGxpZ2h0IGFuZCBkYXJrIGFwcGVhcmFuY2VzLgotICAg
ICAgICAgICAgcmV0dXJuIENvbG9yKDB4RkYwMDdBRkYsIENvbG9yOjpTZW1hbnRpYyk7CisgICAg
ICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4RkYwMDdBRkYgfSwgQ29sb3I6OlNlbWFu
dGljIH07CiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2VsZWN0ZWRDb250ZW50
QmFja2dyb3VuZDoKICAgICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBh
IHVzZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5n
LgogICAgICAgICAgICAgaWYgKGxvY2FsQXBwZWFyYW5jZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIENvbG9yKDB4RkYwMDU4RDAsIENvbG9yOjpTZW1hbnRp
Yyk7Ci0gICAgICAgICAgICByZXR1cm4gQ29sb3IoMHhGRjAwNjNFMSwgQ29sb3I6OlNlbWFudGlj
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4RkYwMDU4RDAgfSwg
Q29sb3I6OlNlbWFudGljIH07CisgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4
RkYwMDYzRTEgfSwgQ29sb3I6OlNlbWFudGljIH07CiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZUhp
Z2hsaWdodDoKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2VsZWN0ZWRUZXh0QmFj
a2dyb3VuZDoKICAgICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVz
ZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgog
ICAgICAgICAgICAgaWYgKGxvY2FsQXBwZWFyYW5jZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIENvbG9yKDB4Q0MzRjYzOEIsIENvbG9yOjpTZW1hbnRpYyk7
Ci0gICAgICAgICAgICByZXR1cm4gQ29sb3IoMHg5OTgwQkNGRSwgQ29sb3I6OlNlbWFudGljKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4Q0MzRjYzOEIgfSwgQ29s
b3I6OlNlbWFudGljIH07CisgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4OTk4
MEJDRkUgfSwgQ29sb3I6OlNlbWFudGljIH07CiAKICNpZiAhSEFWRShPU19EQVJLX01PREVfU1VQ
UE9SVCkKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udGFpbmVyQm9yZGVyOgot
ICAgICAgICAgICAgcmV0dXJuIDB4RkZDNUM1QzU7CisgICAgICAgICAgICByZXR1cm4gU2ltcGxl
Q29sb3IgeyAweEZGQzVDNUM1IH07CiAjZW5kaWYKIAogICAgICAgICBjYXNlIENTU1ZhbHVlQXBw
bGVTeXN0ZW1FdmVuQWx0ZXJuYXRpbmdDb250ZW50QmFja2dyb3VuZDogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDU2ZDI3ZDAxYzZkMmIy
MTA4Y2NjYjczZDdiMjYwMDNlNjc1OWYxOGIuLmU1NGE4MzI0ODE1NDEyYmE4YzZmZGY0ZjgyMTkx
NDQ4NTFhZmI3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAKQEAgLTI0NCwxNyArMjQ0LDE3IEBAIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3Jp
dGVSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywKICAg
ICAgICAgICAgIC8vIERvIG5vdCBkdW1wIGludmFsaWQgb3IgdHJhbnNwYXJlbnQgYmFja2dyb3Vu
ZHMsIHNpbmNlIHRoYXQgaXMgdGhlIGRlZmF1bHQuCiAgICAgICAgICAgICBDb2xvciBiYWNrZ3Jv
dW5kQ29sb3IgPSBvLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKICAgICAgICAgICAgIGlmIChvLnBhcmVudCgpLT5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCkgIT0gYmFj
a2dyb3VuZENvbG9yLnJnYigpCi0gICAgICAgICAgICAgICAgJiYgYmFja2dyb3VuZENvbG9yLmlz
VmFsaWQoKSAmJiBiYWNrZ3JvdW5kQ29sb3IucmdiKCkpCisgICAgICAgICAgICAgICAgJiYgYmFj
a2dyb3VuZENvbG9yLnJnYigpICE9IENvbG9yOjp0cmFuc3BhcmVudCkKICAgICAgICAgICAgICAg
ICB0cyA8PCAiIFtiZ2NvbG9yPSIgPDwgYmFja2dyb3VuZENvbG9yLm5hbWVGb3JSZW5kZXJUcmVl
QXNUZXh0KCkgPDwgIl0iOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBDb2xvciB0ZXh0Rmls
bENvbG9yID0gby5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtp
dFRleHRGaWxsQ29sb3IpOwogICAgICAgICAgICAgaWYgKG8ucGFyZW50KCktPnN0eWxlKCkudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcikucmdiKCkg
IT0gdGV4dEZpbGxDb2xvci5yZ2IoKSAgCi0gICAgICAgICAgICAgICAgJiYgdGV4dEZpbGxDb2xv
ci5pc1ZhbGlkKCkgJiYgdGV4dEZpbGxDb2xvci5yZ2IoKSAhPSBjb2xvci5yZ2IoKSAmJiB0ZXh0
RmlsbENvbG9yLnJnYigpKQorICAgICAgICAgICAgICAgICYmIHRleHRGaWxsQ29sb3IucmdiKCkg
IT0gY29sb3IucmdiKCkgJiYgdGV4dEZpbGxDb2xvci5yZ2IoKSAhPSBDb2xvcjo6dHJhbnNwYXJl
bnQpCiAgICAgICAgICAgICAgICAgdHMgPDwgIiBbdGV4dEZpbGxDb2xvcj0iIDw8IHRleHRGaWxs
Q29sb3IubmFtZUZvclJlbmRlclRyZWVBc1RleHQoKSA8PCAiXSI7CiAKICAgICAgICAgICAgIENv
bG9yIHRleHRTdHJva2VDb2xvciA9IG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IpOwogICAgICAgICAgICAgaWYgKG8ucGFyZW50
KCktPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZUNvbG9yKS5yZ2IoKSAhPSB0ZXh0U3Ryb2tlQ29sb3IucmdiKCkKLSAgICAgICAgICAgICAg
ICAmJiB0ZXh0U3Ryb2tlQ29sb3IuaXNWYWxpZCgpICYmIHRleHRTdHJva2VDb2xvci5yZ2IoKSAh
PSBjb2xvci5yZ2IoKSAmJiB0ZXh0U3Ryb2tlQ29sb3IucmdiKCkpCisgICAgICAgICAgICAgICAg
JiYgdGV4dFN0cm9rZUNvbG9yLnJnYigpICE9IGNvbG9yLnJnYigpICYmIHRleHRTdHJva2VDb2xv
ci5yZ2IoKSAhPSBDb2xvcjo6dHJhbnNwYXJlbnQpCiAgICAgICAgICAgICAgICAgdHMgPDwgIiBb
dGV4dFN0cm9rZUNvbG9yPSIgPDwgdGV4dFN0cm9rZUNvbG9yLm5hbWVGb3JSZW5kZXJUcmVlQXNU
ZXh0KCkgPDwgIl0iOwogCiAgICAgICAgICAgICBpZiAoby5wYXJlbnQoKS0+c3R5bGUoKS50ZXh0
U3Ryb2tlV2lkdGgoKSAhPSBvLnN0eWxlKCkudGV4dFN0cm9rZVdpZHRoKCkgJiYgby5zdHlsZSgp
LnRleHRTdHJva2VXaWR0aCgpID4gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDg4MGQxOGNjMmU4MTQ0YTY1YzNiNDE1ODZjODA2MjFm
ZTkxNjFmNjYuLjFjMDBiZGE1M2Y1YjZiNDM0ZWE3MTk3OWY0ZTYzMjEzODFkYTU3MmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTQ4
OSw4ICsxNDg5LDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDb2xvcj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICB1aW50MzJfdCB2YWx1ZSA9IGNvbG9yLnJnYigpLnZhbHVlKCk7CisKICAgICBlbmNvZGVy
IDw8IHRydWU7Ci0gICAgZW5jb2RlciA8PCBjb2xvci5yZ2IoKTsKKyAgICBlbmNvZGVyIDw8IHZh
bHVlOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8Q29sb3I+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgQ29sb3ImIGNvbG9yKQpAQCAtMTUyOCwxMSArMTUzMCwxMSBAQCBib29sIEFyZ3VtZW50
Q29kZXI8Q29sb3I+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ29sb3ImIGNvbG9yKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBSR0JBMzIgcmdiYTsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJnYmEpKQorICAgIHVpbnQzMl90IHZhbHVlOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUodmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb2xvciA9IENv
bG9yKHJnYmEpOworICAgIGNvbG9yID0gU2ltcGxlQ29sb3IgeyB2YWx1ZSB9OwogICAgIHJldHVy
biB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggOWRmYzg0MWZkZjI4YTUzMjZiOTc5MjkzMzlmMTRhNjUwNTBjMjE5Ni4uYzdmZTc0
ZGIxMTI0NjZlM2FhMTcyN2Q4YjZmZGQ0NmRiZjBhYzJlYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAxLTMw
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFJHQkEz
MiB0eXBlZGVmIHdpdGggYSBjbGFzcyB0byBpbXByb3ZlIHR5cGUgc2FmZXR5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY4NjIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3QubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKTogVXNlIHRoZSBDb2xvciBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIENvbG9yOjpjcmVhdGVV
bmNoZWNrZWQuCisKIDIwMjAtMDEtMjkgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUu
Y29tPgogCiAgICAgICAgIHJ1bi1zYWZhcmkgLyBydW4td2Via2l0LXRlc3RzIC0taW9zLXNpbXVs
YXRvciBub3Qgd29ya2luZyB3aXRoIFhDb2RlIDEzLjMuMSAoMTFDNTA0KQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZTbmFwc2hvdC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3QubW0KaW5kZXgg
MTJmNWZmNTdlNDFjNTA0MzA0Y2NmNTY1M2ZkZmUwOWNhZjg4OTIxZC4uMWJiZmRjYTllOTZjNTM1
YzJhYTliYjNjZTU0NDU4MDE3ZTY0YmU4MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9QREZTbmFwc2hvdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCkBAIC02MCw3ICs2MCw3IEBAIFRF
U1QoUERGU25hcHNob3QsIEZ1bGxDb250ZW50KQogICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4
dCgpWzRdLCAnbycpOwogCiAgICAgICAgIC8vIFRoZSBlbnRpcmUgcGFnZSBzaG91bGQgYmUgZ3Jl
ZW4uIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgotICAgICAgICBFWFBFQ1Rf
VFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNr
ZWQoMCwgMjU1LCAwKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0
MDAsIDMwMCkgPT0gQ29sb3IoMCwgMjU1LCAwKSk7CiAKICAgICAgICAgZGlkVGFrZVNuYXBzaG90
ID0gdHJ1ZTsKICAgICB9XTsKQEAgLTkxLDcgKzkxLDcgQEAgVEVTVChQREZTbmFwc2hvdCwgU3Vi
cmVnaW9ucykKICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDB1KTsK
IAogICAgICAgICAvLyBUaGUgZW50aXJlIHBhZ2Ugc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEgcG9p
bnQgaW4gdGhlIG1pZGRsZSB0byBjaGVjay4KLSAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29s
b3JBdFBvaW50KDIwMCwgMTUwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkp
OworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoMjAwLCAxNTApID09IENv
bG9yKDAsIDI1NSwgMCkpOwogCiAgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CiAgICAg
fV07CkBAIC0xMTEsMTAgKzExMSwxMCBAQCBURVNUKFBERlNuYXBzaG90LCBTdWJyZWdpb25zKQog
ICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dS
ZWN0TWFrZSgwLCAwLCAxMjAwLCAxMjAwKSkpOwogCiAgICAgICAgIC8vIEEgcGl4ZWwgdGhhdCB3
YXMgaW4gdGhlIHZpZXcgc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEgcG9pbnQgaW4gdGhlIG1pZGRs
ZSB0byBjaGVjay4KLSAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDIwMCwg
MTUwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBF
Q1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoMjAwLCAxNTApID09IENvbG9yKDAsIDI1NSwgMCkp
OwogCiAgICAgICAgIC8vIEEgcGl4ZWwgdGhhdCB3YXMgb3V0c2lkZSB0aGUgdmlldyBzaG91bGQg
YWxzbyBiZSBncmVlbiAod2UgZXh0ZW5kIGJhY2tncm91bmQgY29sb3Igb3V0KS4gUGljayBhIHBv
aW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCi0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNv
bG9yQXRQb2ludCg5MDAsIDcwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDAp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDkwMCwgNzAwKSA9PSBD
b2xvcigwLCAyNTUsIDApKTsKIAogICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOwogICAg
IH1dOwpAQCAtMTQwLDIwICsxNDAsMjAgQEAgVEVTVChQREZTbmFwc2hvdCwgT3ZlcjIwMEluY2hl
cykKICAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CiAgICAgICAgIEVYUEVD
VF9ORShwYWdlLCBudWxscHRyKTsKICAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1Jl
Y3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKLSAgICAg
ICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3Jl
YXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xv
ckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yKDAsIDI1NSwgMCkpOwogICAgICAgICBFWFBFQ1Rf
RVEocGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgNXUpOwogCiAgICAgICAgIHBhZ2UgPSBkb2N1bWVu
dC0+cGFnZSgxKTsKICAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOwogICAgICAgICBF
WFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgw
LCAwLCA4MDAsIDE0NDAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9p
bnQoNDAwLCAzMDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3IoMCwg
MjU1LCAwKSk7CiAKICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDB1
KTsKIAogICAgICAgICBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMik7CiAgICAgICAgIEVYUEVDVF9O
RShwYWdlLCBudWxscHRyKTsKICAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3Qo
cGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApKSk7Ci0gICAgICAgIEVY
UEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNyZWF0ZVVu
Y2hlY2tlZCgwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBv
aW50KDQwMCwgMzAwKSA9PSBDb2xvcigwLCAyNTUsIDApKTsKICAgICAgICAgRVhQRUNUX0VRKHBh
Z2UtPmNoYXJhY3RlckNvdW50KCksIDB1KTsKIAogICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0
cnVlOwpAQCAtMTc4LDcgKzE3OCw3IEBAIFRFU1QoUERGU25hcHNob3QsIExpbmtzKQogICAgICAg
ICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CiAKICAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0
RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkp
KTsKLSAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBD
b2xvcjo6Y3JlYXRlVW5jaGVja2VkKDI1NSwgMjU1LCAyNTUpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcigyNTUsIDI1NSwgMjU1KSk7
CiAKICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDh1KTsKICAgICAg
ICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVswXSwgJ0MnKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389460</attachid>
            <date>2020-02-01 08:54:01 -0800</date>
            <delta_ts>2020-02-03 07:11:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206862-20200201085356.patch</filename>
            <type>text/plain</type>
            <size>79918</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc1MGY5MTA5YWFkNzgw
Yjk1YjFjODE4NjI3YjYwNDgzMDc4ZGM3Zi4uNGQ2NjQ0ZmFjMjdjYzhiNzA0Y2YzNDEzNGIwYjVm
MjNlNzc2NWY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAyMC0wMi0wMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBSR0JBMzIgdHlw
ZWRlZiB3aXRoIGEgY2xhc3MgdG8gaW1wcm92ZSB0eXBlIHNhZmV0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOiBSZW1vdmUg
UkdCQ29sb3IuaC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogUmVtb3ZlIFJCR0NvbG9yLmNwcC4K
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZSBSR0JD
b2xvci5oIGFuZCBSR0JDb2xvci5jcHAuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgUkdCQ29sb3IuaC4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmdldFJlY3RWYWx1ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JW
YWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGNzcy9EZXByZWNhdGVkQ1NTT01Q
cmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01Qcmlt
aXRpdmVWYWx1ZTo6Z2V0Q291bnRlclZhbHVlIGNvbnN0KTogVXNlCisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlOjpjb3VudGVyVmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NT
T01QcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVlIGNvbnN0KTogVXNlCisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlOjpyZWN0VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkQ1NT
T01QcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JWYWx1ZSBjb25zdCk6IFVTZQorICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZTo6aXNSR0JDb2xvciBhbmQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbG9y
LgorCisgICAgICAgICogY3NzL0RlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yLmg6IFN0b3JlIGEgQ29s
b3IgaW5zdGVhZCBvZiBhbiBSR0JBMzIuCisgICAgICAgIFRha2UgYSBDb2xvciBhcmd1bWVudCBp
bnN0ZWFkIG9mIGEgUkdCQ29sb3IgYXJndW1lbnQuIFJlZmFjdG9yZWQgdG8KKyAgICAgICAgdXNl
IGEgY3JlYXRlV3JhcHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBtZW1iZXIgdG8gdGlnaHRlbiB0aGUg
Y29kZS4KKworICAgICAgICAqIGNzcy9SR0JDb2xvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
Y3NzL1JHQkNvbG9yLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBjc3MvU3R5bGVDb2xvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKTogRXhwbGlj
aXRseSBjb252ZXJ0IHRvIFNpbXBsZUNvbG9yCisgICAgICAgIHJhdGhlciB0aGFuIHJlbHlpbmcg
b24gaW5pdGlhbGl6aW5nIGEgQ29sb3IgZnJvbSBhbiBpbnRlZ2VyIEFSR0IgdmFsdWUuCisKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06IFJlbW92ZWQgaW5jbHVkZSBv
ZiBSR0JDb2xvci5oLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKTogVXNlIHRoZSBD
b2xvciBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mCisgICAgICAgIENvbG9yOjpjcmVhdGVVbmNoZWNr
ZWQuCisKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbzo6SGlzdG9yaWNN
ZW1vcnlDYXRlZ29yeUluZm8pOiBVc2UKKyAgICAgICAgZXhwbGljaXQgU2ltcGxlQ29sb3IgcmF0
aGVyIHRoYW4gcmVseWluZyBvbiBpbml0aWFsaXppbmcgYSBDb2xvciBmcm9tIGFuCisgICAgICAg
IGludGVnZXIgQVJHQiB2YWx1ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmNwcDogVXNlIGNvbnN0ZXhwciBmb3IgY29uc3RhbnQgY29sb3JzLgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVJHQik6IEltcGxlbWVudCBieSBjYWxsaW5nIG1ha2VSR0JBLgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZVJHQkEpOiBVc2UgYW4gZXhwbGljaXQgYXJndW1lbnQgbGlzdCB0byBjYWxsIHRo
ZQorICAgICAgICBTaW1wbGVDb2xvciBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Om1h
a2VSR0JBMzJGcm9tRmxvYXRzKTogSW1wbGVtZW50IGJ5IGNhbGxpbmcgbWFrZVJHQkEuCisgICAg
ICAgIChXZWJDb3JlOjpjb2xvcldpdGhPdmVycmlkZUFscGhhKTogVXNlIGFuIGV4cGxpY2l0IGFy
Z3VtZW50IGxpc3QgdG8gY2FsbAorICAgICAgICB0aGUgU2ltcGxlQ29sb3IgY29uc3RydWN0b3Iu
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhleENvbG9ySW50ZXJuYWwpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9yOjpDb2xvcik6IFJlbW92ZWQgdW5uZWVkZWQgY29kZSB0byBzZXQg
dGhlIGNvbG9yCisgICAgICAgIHRvIGludmFsaWQsIHNpbmNlIHRoYXQncyBhbHJlYWR5IHRoZSBk
ZWZhdWx0IGZvciBhIG5ldyBDb2xvciBvYmplY3QuCisgICAgICAgIEFsc28gdHdlYWsgdGhlIGxv
Z2ljIGEgYml0IGFuZCBhZGQgZXhwbGljaXQgYXJndW1lbnQgbGlzdCBmb3IgdGhlCisgICAgICAg
IFNpbXBsZUNvbG9yIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlQ29sb3I6
OnNlcmlhbGl6YXRpb25Gb3JIVE1MIGNvbnN0KTogQWRkZWQuIEZhY3RvcmVkIG91dCBvZgorICAg
ICAgICB0aGUgQ29sb3I6OnNlcmlhbGl6ZWQgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpD
b2xvcjo6c2VyaWFsaXplZCBjb25zdCk6IENoYW5nZWQgdG8gY2FsbCBzZXJpYWxpemF0aW9uRm9y
SFRNTC4KKyAgICAgICAgKFdlYkNvcmU6OmZyYWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhh
VmFsdWUpOiBSZW5hbWVkIHNsaWdodGx5IHNob3J0ZXIuCisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVDb2xvcjo6c2VyaWFsaXphdGlvbkZvckNTUyBjb25zdCk6IEFkZGVkLiBGYWN0b3JlZCBvdXQg
b2YKKyAgICAgICAgdGhlIENvbG9yOjpjc3NUZXh0IGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3I6OmNzc1RleHQgY29uc3QpOiBDaGFuZ2VkIHRvIGNhbGwgc2VyaWFsaXphdGlvbkZv
ckNTUy4KKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMjo6c2VyaWFsaXphdGlvbkZvclJlbmRlclRy
ZWVBc1RleHQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgRmFjdG9yZWQgb3V0IG9mIG5hbWVGb3JS
ZW5kZXJUcmVlQXNUZXh0LgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6Om5hbWVGb3JSZW5kZXJU
cmVlQXNUZXh0IGNvbnN0KTogQ2hhbmdlZCB0byBjYWxsCisgICAgICAgIHNlcmlhbGl6YXRpb25G
b3JSZW5kZXJUcmVlQXNUZXh0LgorICAgICAgICAoV2ViQ29yZTo6Y29sb3JGcm9tUHJlbXVsdGlw
bGllZEFSR0IpOiBVcGRhdGVkIHRvIHVzZSB0aGUgU2ltcGxlQ29sb3IKKyAgICAgICAgbWVtYmVy
IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIHRoZSByZWQvZ3JlZW4vYmx1ZS9hbHBoYUNoYW5uZWwgZnVu
Y3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6YmxlbmQpOiBVc2UgQ29sb3I6OnRyYW5zcGFyZW50
IGZvciBibGVuZGluZyB3aGVyZSB0aGUgb2xkCisgICAgICAgIGNvZGUgdXNlZCAwIGFuZCByZWxp
ZWQgb24gaG93IHRoYXQgaXMgY29udmVydGVkIHRvIGEgQ29sb3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOiBSZXBsYWNlZCB0aGUgUkdCQTMyIHR5cGVkZWYgYW5kIHRo
ZQorICAgICAgICBSR0JBIGNsYXNzIHdpdGggYSBuZXcgY2xhc3MgbmFtZWQgU2ltcGxlQ29sb3Iu
IERlbGV0ZWQgdGhlIGZvdXIKKyAgICAgICAgcmVkL2dyZWVuL2JsdWUvYWxwaGFDaGFubmVsIGZ1
bmN0aW9ucywgdGhlIENvbG9yIGNvbnN0cnVjdG9yIHRoYXQKKyAgICAgICAgdGFrZXMgYW5kIFJH
QkEsIGFuZCB0aGUgQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCBmdW5jdGlvbi4gQ2hhbmdlZAorICAg
ICAgICB0aGUgY29sb3IgY29uc3RhbnRzIHRvIGFsbCBiZSBjb25zdGV4cHIuIE1vdmVkIHRoZSBp
bmxpbmUgZnVuY3Rpb24KKyAgICAgICAgZGVmaW5pdGlvbnMgdW50aWwgYWZ0ZXIgZXZlcnl0aGlu
ZyBpcyBkZWxjYXJlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6
IFVzZSB1aW50MzJfdCBpbnN0ZWFkIG9mIFJHQkEzMi4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QmFja2luZ1N0b3JlOjpjbGVhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNr
aW5nU3RvcmU6OmNsZWFyUmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNr
aW5nU3RvcmU6OmZpbGxSZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tp
bmdTdG9yZTo6cmVwZWF0Rmlyc3RSb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QmFja2luZ1N0b3JlOjpwaXhlbEF0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJhY2tpbmdTdG9yZTo6c2V0UGl4ZWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQmFja2luZ1N0b3JlOjpibGVuZFBpeGVsKTogRGl0dG8uIENvbnZlcnQgdG8gYW5kIGZyb20K
KyAgICAgICAgU2ltcGxlQ29sb3Igc28gd2UgY2FuIHVzZSB2YXJpb3VzIGZ1bmN0aW9ucyB0aGF0
IG9wZXJhdGUgb24gdGhhdCB0eXBlLgorICAgICAgICBVc2UgdGhlIGlzVmlzaWJsZSBhbmQgcmVk
L2dyZWVuL2JsdWUvYWxwaGFDb21wb25lbnQgbWVtYmVyIGZ1bmN0aW9ucy4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjpJbWFnZUJhY2tpbmdTdG9yZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6OnBpeGVsVmFsdWUgY29uc3QpOiBVc2Ug
Q29sb3I6OnRyYW5zcGFyZW50CisgICAgICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgMCBhbmQg
cmVseWluZyBvbiBob3cgdGhhdCBpcyBjb252ZXJ0ZWQgdG8gYSBDb2xvci4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaDogUmVtb3ZlZCBpbmNsdWRlIG9mIEltYWdl
QmFja2luZ1N0b3JlLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aDogQWRkZWQgZm9yd2FyZCBkZWxhcmF0aW9uIG9mIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZSk6IENhbGwg
dmFsdWUoKSB0bworICAgICAgICBjb252ZXJ0IFJHQkEzMiwgd2hpY2ggaXMgbm93IGEgY2xhc3Ms
IHRvIGFuIDMyLWJpdCBBUkdCIGludGVnZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOiBVc2Ug
Y29uc3RleHByIFNpbXBsZUNvbG9yOjp2YWx1ZSBmdW5jdGlvbiB0bworICAgICAgICBzd2l0Y2gg
b24gYSBTaW1wbGVDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xv
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9sZEFxdWFGb2N1c1JpbmdDb2xvcik6IFVzZSBh
biBleHBsaWNpdCBTaW1wbGVDb2xvciB0byB0dXJuIGEKKyAgICAgICAgaGV4IGludGVnZXIgaW50
byBhIENvbG9yIHdpdGhvdXQgcmVseWluZyBvbiBpbXBsaWNpdCBjb252ZXJzaW9uLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29sb3I6Om9wZXJhdG9yIEQyRDFfQ09MT1JfRiBjb25zdCk6IFVzZSB2YWx1ZSgp
IHRvIGdldCB0aGUgY29sb3IKKyAgICAgICAgaW50ZWdlciwganVzdCB0byBrZWVwIHRoaXMgd29y
a2luZy4gUHJvYmFibHkgbmVlZHMgYSBiZXR0ZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgYXQg
c29tZSBwb2ludC4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyb3dB
dmFpbGFibGUpOiBEb24ndCB1c2UgbWFrZVJHQiBhbnkgbW9yZSwKKyAgICAgICAgd3JpdGUgdGhl
IGV4cHJlc3Npb24gb3V0IGhlcmUgaW5zdGVhZC4gTW9yZSBlZmZpY2llbnQgYW55d2F5IHNpbmNl
IHRoZXNlCisgICAgICAgIGFyZSBhbHJlYWR5IHNpbmdsZSBieXRlcy4KKworICAgICAgICAqIHBs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZGVmYXVsdERldmljZXMpOiAgVXNlIGFuIGV4cGxpY2l0IFNpbXBsZUNvbG9yIHRv
IHR1cm4gYQorICAgICAgICBoZXggaW50ZWdlciBpbnRvIGEgQ29sb3Igd2l0aG91dCByZWx5aW5n
IG9uIGltcGxpY2l0IGNvbnZlcnNpb24uCisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6ZHJhd0JveGVzKTogRGl0dG8uIEFsc28gdXNlIGEgbW9kZXJuCisgICAgICAgIGZv
ciBsb29wIGluc3RlYWQgb2YgaW5kZXhpbmcuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3Jv
bGxiYXJUaGVtZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2Nr
OjpwYWludFRyYWNrQmFja2dyb3VuZCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjYWxjdWxhdGVC
b3JkZXJTdHlsZUNvbG9yKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvciBjb25zdCk6
IERpdHRvLiBBbHNvIHVzZWQgbmFtZWQgY29sb3JzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpzeXN0ZW1D
b2xvciBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJP
YmplY3QpOiBBZGRlZCBjaGVja3MgYWdhaW5zdAorICAgICAgICBDb2xvcjo6dHJhbnNwYXJlbnQg
aW5zdGVhZCBvZiBjb252ZXJ0aW5nIHRvIGFuIGludGVnZXIgYW5kIGNoZWNraW5nCisgICAgICAg
IGFnYWluc3QgMC4gUmVtb3ZlZCB1bm5lZWRlZCBpc1ZhbGlkIGNoZWNrcywgc2luY2UgaW52YWxp
ZCBjb2xvcidzIEFSR0IKKyAgICAgICAgdmFsdWUgaXMgQ29sb3I6OnRyYW5zcGFyZW50LgorCiAy
MDIwLTAxLTMwICBEb3VnIEtlbGx5ICA8ZG91Z2tAYXBwbGUuY29tPgogCiAgICAgICAgIEVuc3Vy
ZSBub24taW5pdGlhbCB2YWx1ZXMgZm9yIENTUyBGb250IHByb3BlcnRpZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
YmIxODI5MTk4ODZhY2Y4NzZhNTc2MjZlNjk4YWZiZGUwZTc5ZThkYS4uYWExNmNlMzQ3MDNmZmUz
MWQyOTQ1MDNlY2E1NWM1MTk5YTVjMDczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAy
MC0wMi0wMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFj
ZSBSR0JBMzIgdHlwZWRlZiB3aXRoIGEgY2xhc3MgdG8gaW1wcm92ZSB0eXBlIHNhZmV0eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODYyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDb2xv
cj46OmVuY29kZSk6IFVzZSB1aW50MzJfdCBleHBsaWNpdGx5IHRvIGNvbnZlcnQKKyAgICAgICAg
dGhlIGNvbG9yIHZhbHVlIGludG8gYSBTaW1wbGVDb2xvci4KKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxDb2xvcj46OmRlY29kZSk6IFNhbWUgdGhpbmcsIG9ubHkgdGhlIG90aGVyIGRpcmVj
dGlvbi4KKwogMjAyMC0wMS0zMCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBsb2dnaW5nIHRvIHNob3cgdGhlIGZsb3cgb2YgQXBwU1NPCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQppbmRleCA1NGRiNzE2YWM4N2NhYzRkMDEzMGRkOGE3OTU1NGQwZDY3NTY5ZTY5Li5k
NmZkNGM1ZTk5YWEwY2Q2MWViOGRlMmQ0ZWVkNDE3ZWQzY2JkZTBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKQEAgLTMzNiw3ICszMzYsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuaAogICAgIGNzcy9NZWRpYVF1ZXJ5RXhw
cmVzc2lvbi5oCiAgICAgY3NzL01lZGlhUXVlcnlQYXJzZXJDb250ZXh0LmgKLSAgICBjc3MvUkdC
Q29sb3IuaAogICAgIGNzcy9SZWN0LmgKICAgICBjc3MvU3R5bGVDb2xvci5oCiAgICAgY3NzL1N0
eWxlUHJvcGVydGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDExNmIzODhkMmQ1ZmQ1Y2QyZmQ5YTRl
NjI1MGMzODZiNDVjNzEyNjUuLmU2OTAxYzNjZGIxMjcyYjIzNDFlMTAwYzcyZWM3ZWZkYmVlMzM0
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC03NjYsNyArNzY2LDYgQEAgY3NzL01lZGlhUXVlcnlMaXN0
LmNwcAogY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcAogY3NzL01lZGlhUXVlcnlQYXJzZXJDb250
ZXh0LmNwcAogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKLWNzcy9SR0JD
b2xvci5jcHAKIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCiBjc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcAogY3NzL1NlbGVjdG9yRmlsdGVyLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk4N2E2MzlkNzM4
OTAwYjlhOTFkODlhYWFkNGJiM2NmYjEwODBmZGIuLjdjM2JkZmJiY2FkNTVlN2RkMGM0OWQwMDdm
MjAzOWQ2N2I4YTY3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTM4MzEsNyArMzgzMSw2IEBACiAJCUJDNjkzMjc0MEQ3RTI5
MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjkzMjcyMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdp
bmRvd0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlCQzZENDRFRDBDMDdGMkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZENDRFQjBDMDdG
MkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmggKi87IH07CiAJCUJDNkQ2RTI2MDlB
Rjk0MzUwMEY1OTc1OSAvKiBTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZENkUyNTA5QUY5NDM1MDBGNTk3NTkgLyogU2Nyb2xsVmll
dy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJD
NzREQTM3MTAxM0YzRjcwMDc5ODdBRCAvKiBSR0JDb2xvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NERBMzUxMDEzRjNGNzAwNzk4N0FEIC8qIFJH
QkNvbG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQkM3NzJCM0MwQzRFQTkxRTAwODMyODVGIC8qIENTU0hlbHBlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NzJCMzYwQzRFQTkxRTAwODMyODVG
IC8qIENTU0hlbHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUJDNzcyQzQ3MEM0RUIyQzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NzJDNDUwQzRF
QjJDNjAwODMyODVGIC8qIFhNTEh0dHBSZXF1ZXN0LmggKi87IH07CiAJCUJDNzcyQzRGMEM0RUIz
MDQwMDgzMjg1RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc3MkM0RDBDNEVCMzA0MDA4MzI4NUYgLyogTUlNRVR5
cGVSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xMzE4Myw4ICsxMzE4Miw2IEBACiAJCUJDNkQ0NEVBMEMwN0YyRUQwMDcyRDJDOSAv
KiBKU0hUTUxFbWJlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTSFRNTEVtYmVkRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDNkQ0NEVCMEMwN0YyRUQwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTEVtYmVkRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzZENkUyNTA5QUY5NDM1MDBGNTk3NTkgLyogU2Ny
b2xsVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsVmlldy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzc0REEzNTEwMTNGM0Y3MDA3OTg3QUQg
LyogUkdCQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUkdCQ29sb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM3NERBMzYxMDEzRjNGNzAwNzk4N0FE
IC8qIFJHQkNvbG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJH
QkNvbG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3NzJCMzYwQzRFQTkx
RTAwODMyODVGIC8qIENTU0hlbHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTSGVscGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNzcyQzQ0MEM0
RUIyQzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gWE1MSHR0cFJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzc3MkM0NTBDNEVCMkM2MDA4MzI4NUYgLyogWE1MSHR0cFJlcXVlc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzU2MCw4ICsyNzU1Nyw2IEBACiAJCQkJRTRCQkVE
MEQxNEY0MDI1RDAwM0YwQjk4IC8qIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oICov
LAogCQkJCTkzQ0E0QzlGMDlERjkzRkEwMERGODY3NyAvKiBxdWlya3MuY3NzICovLAogCQkJCUJD
NDM2OEU3MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggKi8sCi0JCQkJQkM3NERBMzYxMDEzRjNG
NzAwNzk4N0FEIC8qIFJHQkNvbG9yLmNwcCAqLywKLQkJCQlCQzc0REEzNTEwMTNGM0Y3MDA3OTg3
QUQgLyogUkdCQ29sb3IuaCAqLywKIAkJCQlFNDRCNEJCMTE0MTY1MEQ3MDAyQjFEOEIgLyogU2Vs
ZWN0b3JDaGVja2VyLmNwcCAqLywKIAkJCQlFNDRCNEJCMjE0MTY1MEQ3MDAyQjFEOEIgLyogU2Vs
ZWN0b3JDaGVja2VyLmggKi8sCiAJCQkJNDMyRDNGRTcxOEE4NjU4NDAwRDdEQzAzIC8qIFNlbGVj
dG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaCAqLywKQEAgLTMyMDg2LDcgKzMyMDgxLDYgQEAKIAkJ
CQlGRDMxNjBBOTEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQ29udm9sdmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjBBQjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQ29udm9sdmVyU3Rh
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEFEMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZl
cmJJbnB1dEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkM3NERBMzcxMDEzRjNGNzAwNzk4
N0FEIC8qIFJHQkNvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjVFMTBBMTU1QTA1MDAw
QTQyMzQgLyogUm9vdElubGluZUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzkwRUY4
NkQ0NzAwOUQwQ0FGIC8qIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTczRjk1RkYxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0LmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IGRlNTA4
YzYxYzM5YTVlNTYyZGM5YTk2NGU1ZTQ2OTdlYTU3OTZiMTcuLjg1Y2Y3NzgyNzM1NjU5MTY2N2Nl
YzU3ODI5N2FjZGY0YTBjYTRiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5j
bHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhaXIuaCIKLSNpbmNsdWRlICJSR0JDb2xvci5oIgog
I2luY2x1ZGUgIlJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtODc0LDI5ICs4NzMsNiBAQCBTdHJpbmcgQ1NTUHJpbWl0
aXZlVmFsdWU6OnN0cmluZ1ZhbHVlKCkgY29uc3QKICAgICB9CiB9CiAKLUV4Y2VwdGlvbk9yPENv
dW50ZXImPiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0Q291bnRlclZhbHVlKCkgY29uc3QKLXsKLSAg
ICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVIpCi0g
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKLSAgICByZXR1
cm4gKm1fdmFsdWUuY291bnRlcjsKLX0KLQotRXhjZXB0aW9uT3I8UmVjdCY+IENTU1ByaW1pdGl2
ZVZhbHVlOjpnZXRSZWN0VmFsdWUoKSBjb25zdAotewotICAgIGlmIChwcmltaXRpdmVVbml0VHlw
ZSgpICE9IENTU1VuaXRUeXBlOjpDU1NfUkVDVCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRBY2Nlc3NFcnJvciB9OwotICAgIHJldHVybiAqbV92YWx1ZS5yZWN0OwotfQotCi1F
eGNlcHRpb25PcjxSZWY8UkdCQ29sb3I+PiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JW
YWx1ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5
cGU6OkNTU19SR0JDT0xPUikKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nl
c3NFcnJvciB9OwotCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCByZXR1cm4gYSBuZXcg
b2JqZWN0IGZvciBlYWNoIGludm9jYXRpb24uCi0gICAgcmV0dXJuIFJHQkNvbG9yOjpjcmVhdGUo
bV92YWx1ZS5jb2xvci0+cmdiKCkpOwotfQotCiBORVZFUl9JTkxJTkUgU3RyaW5nIENTU1ByaW1p
dGl2ZVZhbHVlOjpmb3JtYXROdW1iZXJWYWx1ZShTdHJpbmdWaWV3IHN1ZmZpeCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbWFrZVN0cmluZyhtX3ZhbHVlLm51bSwgc3VmZml4KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggNzYzZDQyMGE3MWZjOGEyMzQ1Y2EwOTE5OTdm
ZmJmOTQ2NjdjOGQ4Zi4uNDc0NmFjOGQwN2ZjZDNlNDZiNjZjODgwZTk5YWYxZjIyZTA1NTRjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTE0Miw5ICsxNDIsNiBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8ZmxvYXQ+IGdldEZsb2F0
VmFsdWUoQ1NTVW5pdFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldFN0cmluZ1ZhbHVlKENTU1VuaXRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxTdHJpbmc+IGdldFN0cmluZ1ZhbHVlKCkgY29uc3Q7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8Q291bnRlciY+IGdldENvdW50ZXJWYWx1
ZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlY3QmPiBnZXRSZWN0
VmFsdWUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8UkdCQ29s
b3I+PiBnZXRSR0JDb2xvclZhbHVlKCkgY29uc3Q7CiAKICAgICBkb3VibGUgY29tcHV0ZURlZ3Jl
ZXMoKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNh
dGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRl
ZENTU09NUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDA0YmY5NzA0ZWY0YzMwM2Q3ZjRjMTFkOWRh
MzNhY2QwODg0YTZkZTkuLmNjNzRlZmM3NmZmNGMzYzIwZjEzMmI5NmZlMzdmMTBlN2FjMDU2NTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRDU1NPTVByaW1pdGl2
ZVZhbHVlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHN1Y2ggYXMg
U3R5bGVDb3VudGVyVmFsdWUsIFN0eWxlUmVjdFZhbHVlLCBhbmQgU3R5bGVDb2xvclZhbHVlLCB0
aGVzZSBtZXRob2RzIHdpbGwgZ2V0CiAvLyBtb3JlIGNvbXBsaWNhdGVkLgogCi0KIHVuc2lnbmVk
IHNob3J0IERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlOjpwcmltaXRpdmVUeXBlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KG1fdmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKSk7CkBAIC02NCwyNiArNjMsMjUgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBE
ZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZTo6Z2V0U3RyaW5nVmFsdWUoKSBjb25zdAogCiBF
eGNlcHRpb25PcjxSZWY8RGVwcmVjYXRlZENTU09NQ291bnRlcj4+IERlcHJlY2F0ZWRDU1NPTVBy
aW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUoKSBjb25zdAogewotICAgIEV4Y2VwdGlvbk9y
PENvdW50ZXImPiBjb3VudGVyID0gbV92YWx1ZS0+Z2V0Q291bnRlclZhbHVlKCk7Ci0gICAgaWYg
KGNvdW50ZXIuaGFzRXhjZXB0aW9uKCkpCisgICAgYXV0byogdmFsdWUgPSBtX3ZhbHVlLT5jb3Vu
dGVyVmFsdWUoKTsKKyAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZEFjY2Vzc0Vycm9yIH07Ci0gICAgcmV0dXJuIERlcHJlY2F0ZWRDU1NPTUNvdW50ZXI6
OmNyZWF0ZShjb3VudGVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBtX293bmVyLmdldCgpKTsKKyAg
ICByZXR1cm4gRGVwcmVjYXRlZENTU09NQ291bnRlcjo6Y3JlYXRlKCp2YWx1ZSwgbV9vd25lcik7
CiB9CiAgICAgCiBFeGNlcHRpb25PcjxSZWY8RGVwcmVjYXRlZENTU09NUmVjdD4+IERlcHJlY2F0
ZWRDU1NPTVByaW1pdGl2ZVZhbHVlOjpnZXRSZWN0VmFsdWUoKSBjb25zdAogewotICAgIEV4Y2Vw
dGlvbk9yPFJlY3QmPiByZWN0ID0gbV92YWx1ZS0+Z2V0UmVjdFZhbHVlKCk7Ci0gICAgaWYgKHJl
Y3QuaGFzRXhjZXB0aW9uKCkpCisgICAgYXV0byogdmFsdWUgPSBtX3ZhbHVlLT5yZWN0VmFsdWUo
KTsKKyAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFj
Y2Vzc0Vycm9yIH07Ci0gICAgcmV0dXJuIERlcHJlY2F0ZWRDU1NPTVJlY3Q6OmNyZWF0ZShyZWN0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBtX293bmVyLmdldCgpKTsKKyAgICByZXR1cm4gRGVwcmVj
YXRlZENTU09NUmVjdDo6Y3JlYXRlKCp2YWx1ZSwgbV9vd25lcik7CiB9CiAKIEV4Y2VwdGlvbk9y
PFJlZjxEZXByZWNhdGVkQ1NTT01SR0JDb2xvcj4+IERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZh
bHVlOjpnZXRSR0JDb2xvclZhbHVlKCkgY29uc3QKIHsKLSAgICBFeGNlcHRpb25PcjxSZWY8UkdC
Q29sb3I+PiBjb2xvciA9IG1fdmFsdWUtPmdldFJHQkNvbG9yVmFsdWUoKTsKLSAgICBpZiAoY29s
b3IuaGFzRXhjZXB0aW9uKCkpCisgICAgaWYgKCFtX3ZhbHVlLT5pc1JHQkNvbG9yKCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKLSAgICByZXR1cm4g
RGVwcmVjYXRlZENTU09NUkdCQ29sb3I6OmNyZWF0ZShjb2xvci5yZWxlYXNlUmV0dXJuVmFsdWUo
KSwgbV9vd25lci5nZXQoKSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yOjpj
cmVhdGUobV9vd25lciwgbV92YWx1ZS0+Y29sb3IoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkQ1NTT01SR0JDb2xvci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0RlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yLmgKaW5kZXggNDY1NTA4NTZlNDE2YjBiNDgy
YTYyOWJmYWVmOTAxMDk4N2NlM2ZkOS4uNGEzZWRjNzY4NTU1M2JhMWY4YjNkOGRlNzk0YWE1NTQx
NTliMzczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRDU1NPTVJH
QkNvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRDU1NPTVJHQkNvbG9y
LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDMgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTIxLDU1ICsyMSw0NCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJE
ZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5oIgotI2luY2x1ZGUgIlJHQkNvbG9yLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBEZXByZWNhdGVkQ1NTT01SR0JDb2xvciBmaW5hbCA6IHB1Ymxp
YyBSZWZDb3VudGVkPERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxEZXByZWNhdGVkQ1NTT01SR0JDb2xvcj4gY3JlYXRlKGNvbnN0IFJHQkNvbG9yJiBj
b2xvciwgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgb3duZXIpCisgICAgc3RhdGljIFJlZjxEZXByZWNh
dGVkQ1NTT01SR0JDb2xvcj4gY3JlYXRlKENTU1N0eWxlRGVjbGFyYXRpb24mIG93bmVyLCBjb25z
dCBDb2xvciYgY29sb3IpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXBy
ZWNhdGVkQ1NTT01SR0JDb2xvcihjb2xvciwgb3duZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGVwcmVjYXRlZENTU09NUkdCQ29sb3Iob3duZXIsIGNvbG9yKSk7CiAgICAgfQog
Ci0gICAgRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUqIHJlZCgpIHsgcmV0dXJuIG1fcmVk
LmdldCgpOyB9Ci0gICAgRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUqIGdyZWVuKCkgeyBy
ZXR1cm4gbV9ncmVlbi5nZXQoKTsgfQotICAgIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVl
KiBibHVlKCkgeyByZXR1cm4gbV9ibHVlLmdldCgpOyB9Ci0gICAgRGVwcmVjYXRlZENTU09NUHJp
bWl0aXZlVmFsdWUqIGFscGhhKCkgeyByZXR1cm4gbV9hbHBoYS5nZXQoKTsgfQotICAgIAotICAg
IENvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IobV9yZ2JDb2xvcik7IH0KKyAgICBE
ZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSYgcmVkKCkgeyByZXR1cm4gbV9yZWQ7IH0KKyAg
ICBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSYgZ3JlZW4oKSB7IHJldHVybiBtX2dyZWVu
OyB9CisgICAgRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUmIGJsdWUoKSB7IHJldHVybiBt
X2JsdWU7IH0KKyAgICBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSYgYWxwaGEoKSB7IHJl
dHVybiBtX2FscGhhOyB9CisKKyAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29s
b3I7IH0KIAogcHJpdmF0ZToKLSAgICBEZXByZWNhdGVkQ1NTT01SR0JDb2xvcihjb25zdCBSR0JD
b2xvciYgY29sb3IsIENTU1N0eWxlRGVjbGFyYXRpb24mIG93bmVyKQotICAgICAgICA6IG1fcmdi
Q29sb3IoY29sb3IucmdiQ29sb3IoKSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOdW1iZXJUeXBl
PiBzdGF0aWMgUmVmPERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlPiBjcmVhdGVXcmFwcGVy
KENTU1N0eWxlRGVjbGFyYXRpb24mIG93bmVyLCBOdW1iZXJUeXBlIG51bWJlcikKICAgICB7Ci0g
ICAgICAgIC8vIFJlZAotICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IChtX3JnYkNvbG9yID4+IDE2
KSAmIDB4RkY7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSh2YWx1ZSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOwotICAgICAgICBtX3JlZCA9IHJlc3Vs
dC0+Y3JlYXRlRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlV3JhcHBlcihvd25lcik7Ci0gICAgICAg
IAotICAgICAgICAvLyBHcmVlbgotICAgICAgICB2YWx1ZSA9IChtX3JnYkNvbG9yID4+IDgpICYg
MHhGRjsKLSAgICAgICAgcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwg
Q1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOwotICAgICAgICBtX2dyZWVuID0gcmVzdWx0LT5jcmVh
dGVEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVXcmFwcGVyKG93bmVyKTsKKyAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobnVtYmVyLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJF
UiktPmNyZWF0ZURlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVdyYXBwZXIob3duZXIpOworICAgIH0K
IAotICAgICAgICAvLyBCbHVlCi0gICAgICAgIHZhbHVlID0gbV9yZ2JDb2xvciAmIDB4RkY7Ci0g
ICAgICAgIHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1VuaXRU
eXBlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAgbV9ibHVlID0gcmVzdWx0LT5jcmVhdGVEZXByZWNh
dGVkQ1NTT01QcmltaXRpdmVXcmFwcGVyKG93bmVyKTsKLSAgICAgICAgCi0gICAgICAgIC8vIEFs
cGhhCi0gICAgICAgIGZsb2F0IGFscGhhVmFsdWUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oKG1fcmdi
Q29sb3IgPj4gMjQpICYgMHhGRikgLyAweEZGOwotICAgICAgICByZXN1bHQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKGFscGhhVmFsdWUsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKLSAg
ICAgICAgbV9hbHBoYSA9IHJlc3VsdC0+Y3JlYXRlRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlV3Jh
cHBlcihvd25lcik7CisgICAgRGVwcmVjYXRlZENTU09NUkdCQ29sb3IoQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgb3duZXIsIGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICAgICAgOiBtX2NvbG9yKGNvbG9y
KQorICAgICAgICAsIG1fcmVkKGNyZWF0ZVdyYXBwZXIob3duZXIsIGNvbG9yLnJlZCgpKSkKKyAg
ICAgICAgLCBtX2dyZWVuKGNyZWF0ZVdyYXBwZXIob3duZXIsIGNvbG9yLmdyZWVuKCkpKQorICAg
ICAgICAsIG1fYmx1ZShjcmVhdGVXcmFwcGVyKG93bmVyLCBjb2xvci5ibHVlKCkpKQorICAgICAg
ICAsIG1fYWxwaGEoY3JlYXRlV3JhcHBlcihvd25lciwgY29sb3IuYWxwaGFBc0Zsb2F0KCkpKQor
ICAgIHsKICAgICB9Ci0gICAgCi0gICAgUkdCQTMyIG1fcmdiQ29sb3I7Ci0gICAgUmVmUHRyPERl
cHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlPiBtX3JlZDsKLSAgICBSZWZQdHI8RGVwcmVjYXRl
ZENTU09NUHJpbWl0aXZlVmFsdWU+IG1fZ3JlZW47Ci0gICAgUmVmUHRyPERlcHJlY2F0ZWRDU1NP
TVByaW1pdGl2ZVZhbHVlPiBtX2JsdWU7Ci0gICAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVByaW1p
dGl2ZVZhbHVlPiBtX2FscGhhOworCisgICAgQ29sb3IgbV9jb2xvcjsKKyAgICBSZWY8RGVwcmVj
YXRlZENTU09NUHJpbWl0aXZlVmFsdWU+IG1fcmVkOworICAgIFJlZjxEZXByZWNhdGVkQ1NTT01Q
cmltaXRpdmVWYWx1ZT4gbV9ncmVlbjsKKyAgICBSZWY8RGVwcmVjYXRlZENTU09NUHJpbWl0aXZl
VmFsdWU+IG1fYmx1ZTsKKyAgICBSZWY8RGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU+IG1f
YWxwaGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvUkdCQ29sb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFlZTQwM2YwY2FmNjcxMWIxMTYxMWFi
ZjEwZGUzMjg0OTQ0NGZlYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3IuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBHb29nbGUsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJHQkNvbG9yLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFJHQkNvbG9yPiBSR0JDb2xvcjo6Y3JlYXRlKHVu
c2lnbmVkIHJnYkNvbG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJHQkNvbG9yKHJn
YkNvbG9yKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3Iu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE0YzQxZTAzNWRlYzZlZDlhNWJhMGU0
NTY2ODkwMmQ3YWRjMTdjMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3IuaAorKysgL2Rldi9udWxsCkBAIC0x
LDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkg
R29vZ2xlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ29sb3IuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIENTU1ByaW1pdGl2ZVZhbHVlOwotCi1jbGFzcyBSR0JDb2xvciBmaW5hbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFJHQkNvbG9yPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSR0JDb2xvcj4g
Y3JlYXRlKHVuc2lnbmVkIHJnYkNvbG9yKTsKLQotICAgIENvbG9yIGNvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gQ29sb3IobV9yZ2JDb2xvcik7IH0KLQotICAgIFJHQkEzMiByZ2JDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fcmdiQ29sb3I7IH0KLQotcHJpdmF0ZToKLSAgICBSR0JDb2xvcih1bnNpZ25l
ZCByZ2JDb2xvcikKLSAgICAgICAgOiBtX3JnYkNvbG9yKHJnYkNvbG9yKQotICAgIHsKLSAgICB9
Ci0KLSAgICBSR0JBMzIgbV9yZ2JDb2xvcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUNvbG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZUNvbG9yLmNwcAppbmRleCAyOWJjYTE5YjkyNDg0MDQxY2YyNTkwZmY2
ZWQ2YTQ0Y2Q0MTBiODFkLi4xYmMyMGZiNzI5NGE2YmI4MDE2NjQ1ZmRlZjVlOTFkZTVjZWM2NDk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVDb2xvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29sb3IuY3BwCkBAIC00MSw3ICs0MSw3IEBAIENvbG9yIFN0
eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmFsdWVJRCBrZXl3b3JkLCBPcHRpb25TZXQ8
T3B0aW9ucz4gb3B0aW9uCiB7CiAgICAgaWYgKGNvbnN0IGNoYXIqIHZhbHVlTmFtZSA9IGdldFZh
bHVlTmFtZShrZXl3b3JkKSkgewogICAgICAgICBpZiAoY29uc3QgTmFtZWRDb2xvciogbmFtZWRD
b2xvciA9IGZpbmRDb2xvcih2YWx1ZU5hbWUsIHN0cmxlbih2YWx1ZU5hbWUpKSkKLSAgICAgICAg
ICAgIHJldHVybiBDb2xvcihuYW1lZENvbG9yLT5BUkdCVmFsdWUpOworICAgICAgICAgICAgcmV0
dXJuIFNpbXBsZUNvbG9yIHsgbmFtZWRDb2xvci0+QVJHQlZhbHVlIH07CiAgICAgfQogCiAgICAg
cmV0dXJuIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihrZXl3b3JkLCBvcHRp
b25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpp
bmRleCBiMzJjMTMzZDUxZTVkOWExZGY1OWYzMmI4YzFiMzIwZGVmN2IxYzFhLi5jMzk1OTI0YmQ4
NWY4NGEwYWUyYWYzMzc0M2VkOWY5ZjdjNmEzYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC01OCw3ICs1OCw2IEBACiAjaW1wb3J0ICJI
VE1MVGFibGVDZWxsRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgog
I2ltcG9ydCAiTG9hZGVyTlNVUkxFeHRyYXMuaCIKLSNpbXBvcnQgIlJHQkNvbG9yLmgiCiAjaW1w
b3J0ICJSZW5kZXJJbWFnZS5oIgogI2ltcG9ydCAiUmVuZGVyVGV4dC5oIgogI2ltcG9ydCAiU3R5
bGVQcm9wZXJ0aWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAKaW5kZXggYjA0NTUyNmU2MjMxNzdiYWRmMjhkYmQzYjIxNzhlOGE2ZjVkYTY4MC4u
MjNkYjBmYjNlYWVjMjk5NGE3ZWIyOTQxMGNkNjg5N2YxOTU0MzUxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtMjIyLDcgKzIyMiw3IEBA
IHN0YXRpYyB2b2lkIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UXVhZCYKICAgICBjb250ZXh0LmZpbGxQYXRoKHF1YWRUb1BhdGgo
cXVhZCwgYm91bmRzKSk7CiAKICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21w
b3NpdGVPcGVyYXRvcjo6RGVzdGluYXRpb25PdXQpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMjU1LCAwLCAwKSk7CisgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3IoMjU1LCAwLCAwKSk7CiAgICAgY29udGV4dC5maWxsUGF0aChxdWFkVG9QYXRo
KGNsaXBRdWFkLCBib3VuZHMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCmluZGV4IDU1YjQwNDNhNjBjMDlm
OTUzMTBiZWFhMDg3MTVlNmM5YTc3YjEwMzIuLjVlYjY4YWYyYzE0OTI3YmIwMTUwYjU2MmFiOTc5
YTY5MjFiYjAzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3Vy
Y2VVc2FnZU92ZXJsYXlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jl
c291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KQEAgLTEyOCwxMyArMTI4LDEzIEBAIHN0YXRpYyBD
R0NvbG9yUmVmIGNyZWF0ZUNvbG9yKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEp
CiBzdHJ1Y3QgSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8gewogICAgIEhpc3RvcmljTWVtb3J5
Q2F0ZWdvcnlJbmZvKCkgeyB9IC8vIE5lZWRlZCBmb3Igc3RkOjphcnJheS4KIAotICAgIEhpc3Rv
cmljTWVtb3J5Q2F0ZWdvcnlJbmZvKHVuc2lnbmVkIGNhdGVnb3J5LCBSR0JBMzIgcmdiYSwgU3Ry
aW5nIG5hbWUsIGJvb2wgc3ViY2F0ZWdvcnkgPSBmYWxzZSkKKyAgICBIaXN0b3JpY01lbW9yeUNh
dGVnb3J5SW5mbyh1bnNpZ25lZCBjYXRlZ29yeSwgdW5zaWduZWQgcmdiYSwgU3RyaW5nIG5hbWUs
IGJvb2wgc3ViY2F0ZWdvcnkgPSBmYWxzZSkKICAgICAgICAgOiBuYW1lKFdURk1vdmUobmFtZSkp
CiAgICAgICAgICwgaXNTdWJjYXRlZ29yeShzdWJjYXRlZ29yeSkKICAgICAgICAgLCB0eXBlKGNh
dGVnb3J5KQogICAgIHsKICAgICAgICAgZmxvYXQgciwgZywgYiwgYTsKLSAgICAgICAgQ29sb3Io
cmdiYSkuZ2V0UkdCQShyLCBnLCBiLCBhKTsKKyAgICAgICAgQ29sb3IgeyBTaW1wbGVDb2xvciB7
IHJnYmEgfSB9LmdldFJHQkEociwgZywgYiwgYSk7CiAgICAgICAgIGNvbG9yID0gYWRvcHRDRihj
cmVhdGVDb2xvcihyLCBnLCBiLCBhKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvci5jcHAKaW5kZXggMTY2MDc2NGE0MzliOWFhMThlN2Y0MTNmYmQ3OWYw
NWU4NzBhOTJlNC4uYjVhMmEyNGVkYTBhY2FiNzQ1NmYwZGEyNjg3MzNkZmRlYmE3ZGNlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNywxNyArMzcsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAh
Q09NUElMRVIoTVNWQykKLWNvbnN0IFJHQkEzMiBDb2xvcjo6YmxhY2s7Ci1jb25zdCBSR0JBMzIg
Q29sb3I6OndoaXRlOwotY29uc3QgUkdCQTMyIENvbG9yOjpkYXJrR3JheTsKLWNvbnN0IFJHQkEz
MiBDb2xvcjo6Z3JheTsKLWNvbnN0IFJHQkEzMiBDb2xvcjo6bGlnaHRHcmF5OwotY29uc3QgUkdC
QTMyIENvbG9yOjp0cmFuc3BhcmVudDsKLSNlbmRpZgotCi1zdGF0aWMgY29uc3QgUkdCQTMyIGxp
Z2h0ZW5lZEJsYWNrID0gMHhGRjU0NTQ1NDsKLXN0YXRpYyBjb25zdCBSR0JBMzIgZGFya2VuZWRX
aGl0ZSA9IDB4RkZBQkFCQUI7CitzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGxpZ2h0ZW5l
ZEJsYWNrIHsgMHhGRjU0NTQ1NCB9Oworc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBkYXJr
ZW5lZFdoaXRlIHsgMHhGRkFCQUJBQiB9OwogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHByZW11
bHRpcGxpZWRDaGFubmVsKHVuc2lnbmVkIGMsIHVuc2lnbmVkIGEsIGJvb2wgY2VpbGluZyA9IHRy
dWUpCiB7CkBAIC02MSwxMiArNTIsMTIgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCB1bnByZW11
bHRpcGxpZWRDaGFubmVsKHVuc2lnbmVkIGMsIHVuc2lnbmVkIGEpCiAKIFJHQkEzMiBtYWtlUkdC
KGludCByLCBpbnQgZywgaW50IGIpCiB7Ci0gICAgcmV0dXJuIDB4RkYwMDAwMDAgfCBzdGQ6Om1h
eCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4KDAsIHN0ZDo6bWluKGcsIDI1
NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUpKTsKKyAgICByZXR1cm4gbWFr
ZVJHQkEociwgZywgYiwgMHhGRik7CiB9CiAKIFJHQkEzMiBtYWtlUkdCQShpbnQgciwgaW50IGcs
IGludCBiLCBpbnQgYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYXgoMCwgc3RkOjptaW4oYSwgMjU1
KSkgPDwgMjQgfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihyLCAyNTUpKSA8PCAxNiB8IHN0ZDo6bWF4
KDAsIHN0ZDo6bWluKGcsIDI1NSkpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihiLCAyNTUp
KTsKKyAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjptYXgoMCwgc3RkOjpt
aW4oYSwgMHhGRikpIDw8IDI0IHwgc3RkOjptYXgoMCwgc3RkOjptaW4ociwgMHhGRikpIDw8IDE2
IHwgc3RkOjptYXgoMCwgc3RkOjptaW4oZywgMHhGRikpIDw8IDggfCBzdGQ6Om1heCgwLCBzdGQ6
Om1pbihiLCAweEZGKSkpIH07CiB9CiAKIFJHQkEzMiBtYWtlUHJlbXVsdGlwbGllZFJHQkEoaW50
IHIsIGludCBnLCBpbnQgYiwgaW50IGEsIGJvb2wgY2VpbGluZykKQEAgLTg3LDE0ICs3OCwxMiBA
QCBzdGF0aWMgaW50IGNvbG9yRmxvYXRUb1JHQkFCeXRlKGZsb2F0IGYpCiAKIFJHQkEzMiBtYWtl
UkdCQTMyRnJvbUZsb2F0cyhmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQogewot
ICAgIHJldHVybiBjb2xvckZsb2F0VG9SR0JBQnl0ZShhKSA8PCAyNCB8IGNvbG9yRmxvYXRUb1JH
QkFCeXRlKHIpIDw8IDE2IHwgY29sb3JGbG9hdFRvUkdCQUJ5dGUoZykgPDwgOCB8IGNvbG9yRmxv
YXRUb1JHQkFCeXRlKGIpOworICAgIHJldHVybiBtYWtlUkdCQShjb2xvckZsb2F0VG9SR0JBQnl0
ZShyKSwgY29sb3JGbG9hdFRvUkdCQUJ5dGUoZyksIGNvbG9yRmxvYXRUb1JHQkFCeXRlKGIpLCBj
b2xvckZsb2F0VG9SR0JBQnl0ZShhKSk7CiB9CiAKIFJHQkEzMiBjb2xvcldpdGhPdmVycmlkZUFs
cGhhKFJHQkEzMiBjb2xvciwgZmxvYXQgb3ZlcnJpZGVBbHBoYSkKIHsKLSAgICBSR0JBMzIgcmdi
T25seSA9IGNvbG9yICYgMHgwMEZGRkZGRjsKLSAgICBSR0JBMzIgcmdiYSA9IHJnYk9ubHkgfCBj
b2xvckZsb2F0VG9SR0JBQnl0ZShvdmVycmlkZUFscGhhKSA8PCAyNDsKLSAgICByZXR1cm4gcmdi
YTsKKyAgICByZXR1cm4geyAoY29sb3IudmFsdWUoKSAmIDB4MDBGRkZGRkYpIHwgY29sb3JGbG9h
dFRvUkdCQUJ5dGUob3ZlcnJpZGVBbHBoYSkgPDwgMjQgfTsKIH0KIAogUkdCQTMyIG1ha2VSR0JB
RnJvbUhTTEEoZmxvYXQgaHVlLCBmbG9hdCBzYXR1cmF0aW9uLCBmbG9hdCBsaWdodG5lc3MsIGZs
b2F0IGFscGhhKQpAQCAtMTMxLDI4ICsxMjAsMjggQEAgc3RhdGljIGlubGluZSBib29sIHBhcnNl
SGV4Q29sb3JJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBuYW1lLCB1bnNpZ25lZCBsZW4K
ICAgICAgICAgdmFsdWUgfD0gdG9BU0NJSUhleFZhbHVlKG5hbWVbaV0pOwogICAgIH0KICAgICBp
ZiAobGVuZ3RoID09IDYpIHsKLSAgICAgICAgcmdiID0gMHhGRjAwMDAwMCB8IHZhbHVlOworICAg
ICAgICByZ2IgPSB7IDB4RkYwMDAwMDAgfCB2YWx1ZSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgaWYgKGxlbmd0aCA9PSA4KSB7CiAgICAgICAgIC8vIFdlIHBhcnNlZCB0aGUg
dmFsdWVzIGludG8gUkdCQSBvcmRlciwgYnV0IHRoZSBSR0JBMzIgdHlwZQogICAgICAgICAvLyBl
eHBlY3RzIHRoZW0gdG8gYmUgaW4gQVJHQiBvcmRlciwgc28gd2UgcmlnaHQgcm90YXRlIGVpZ2h0
IGJpdHMuCi0gICAgICAgIHJnYiA9IHZhbHVlIDw8IDI0IHwgdmFsdWUgPj4gODsKKyAgICAgICAg
cmdiID0geyB2YWx1ZSA8PCAyNCB8IHZhbHVlID4+IDggfTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIGlmIChsZW5ndGggPT0gNCkgewogICAgICAgICAvLyAjYWJjZCBjb252ZXJ0
cyB0byBkZGFhYmJjYyBpbiBSR0JBMzIuCi0gICAgICAgIHJnYiA9ICh2YWx1ZSAmIDB4RikgPDwg
MjggfCAodmFsdWUgJiAweEYpIDw8IDI0CisgICAgICAgIHJnYiA9IHsgKHZhbHVlICYgMHhGKSA8
PCAyOCB8ICh2YWx1ZSAmIDB4RikgPDwgMjQKICAgICAgICAgICAgIHwgKHZhbHVlICYgMHhGMDAw
KSA8PCA4IHwgKHZhbHVlICYgMHhGMDAwKSA8PCA0CiAgICAgICAgICAgICB8ICh2YWx1ZSAmIDB4
RjAwKSA8PCA0IHwgKHZhbHVlICYgMHhGMDApCi0gICAgICAgICAgICB8ICh2YWx1ZSAmIDB4RjAp
IHwgKHZhbHVlICYgMHhGMCkgPj4gNDsKKyAgICAgICAgICAgIHwgKHZhbHVlICYgMHhGMCkgfCAo
dmFsdWUgJiAweEYwKSA+PiA0IH07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAv
LyAjYWJjIGNvbnZlcnRzIHRvICNhYWJiY2MKLSAgICByZ2IgPSAweEZGMDAwMDAwCisgICAgcmdi
ID0geyAweEZGMDAwMDAwCiAgICAgICAgIHwgKHZhbHVlICYgMHhGMDApIDw8IDEyIHwgKHZhbHVl
ICYgMHhGMDApIDw8IDgKICAgICAgICAgfCAodmFsdWUgJiAweEYwKSA8PCA4IHwgKHZhbHVlICYg
MHhGMCkgPDwgNAotICAgICAgICB8ICh2YWx1ZSAmIDB4RikgPDwgNCB8ICh2YWx1ZSAmIDB4Rik7
CisgICAgICAgIHwgKHZhbHVlICYgMHhGKSA8PCA0IHwgKHZhbHVlICYgMHhGKSB9OwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0xNjksNyArMTU4LDYgQEAgYm9vbCBDb2xvcjo6cGFyc2VIZXhD
b2xvcihjb25zdCBVQ2hhciogbmFtZSwgdW5zaWduZWQgbGVuZ3RoLCBSR0JBMzImIHJnYikKIGJv
b2wgQ29sb3I6OnBhcnNlSGV4Q29sb3IoY29uc3QgU3RyaW5nJiBuYW1lLCBSR0JBMzImIHJnYikK
IHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBuYW1lLmxlbmd0aCgpOwotICAgIAogICAgIGlmICgh
bGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKG5hbWUuaXM4Qml0KCkpCkBA
IC0yMzYsMjYgKzIyNCwxOCBAQCBDb2xvcjo6Q29sb3IoY29uc3QgU3RyaW5nJiBuYW1lKQogICAg
ICAgICAgICAgc2V0UkdCKGNvbG9yKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoYXV0byog
Zm91bmRDb2xvciA9IGZpbmROYW1lZENvbG9yKG5hbWUpKQotICAgICAgICAgICAgc2V0UkdCKGZv
dW5kQ29sb3ItPkFSR0JWYWx1ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fY29sb3JE
YXRhLnJnYmFBbmRGbGFncyA9IGludmFsaWRSR0JBQ29sb3I7CisgICAgICAgICAgICBzZXRSR0Io
eyBmb3VuZENvbG9yLT5BUkdCVmFsdWUgfSk7CiAgICAgfQogfQogCiBDb2xvcjo6Q29sb3IoY29u
c3QgY2hhciogbmFtZSkKIHsKLSAgICBSR0JBMzIgY29sb3I7Ci0gICAgYm9vbCB2YWxpZDsKLSAg
ICBpZiAobmFtZVswXSA9PSAnIycpCi0gICAgICAgIHZhbGlkID0gcGFyc2VIZXhDb2xvcigoU3Ry
aW5nKSZuYW1lWzFdLCBjb2xvcik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IE5hbWVkQ29s
b3IqIGZvdW5kQ29sb3IgPSBmaW5kQ29sb3IobmFtZSwgc3RybGVuKG5hbWUpKTsKLSAgICAgICAg
Y29sb3IgPSBmb3VuZENvbG9yID8gZm91bmRDb2xvci0+QVJHQlZhbHVlIDogMDsKLSAgICAgICAg
dmFsaWQgPSBmb3VuZENvbG9yOwotICAgIH0KLQotICAgIGlmICh2YWxpZCkKLSAgICAgICAgc2V0
UkdCKGNvbG9yKTsKKyAgICBpZiAobmFtZVswXSA9PSAnIycpIHsKKyAgICAgICAgU2ltcGxlQ29s
b3IgY29sb3I7CisgICAgICAgIGlmIChwYXJzZUhleENvbG9yKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigmbmFtZVsxXSksIHN0ZDo6c3RybGVuKCZuYW1lWzFdKSwgY29sb3IpKQorICAg
ICAgICAgICAgc2V0UkdCKGNvbG9yKTsKKyAgICB9IGVsc2UgaWYgKGF1dG8qIGZvdW5kQ29sb3Ig
PSBmaW5kQ29sb3IobmFtZSwgc3RybGVuKG5hbWUpKSkKKyAgICAgICAgc2V0UkdCKHsgZm91bmRD
b2xvci0+QVJHQlZhbHVlIH0pOwogfQogCiBDb2xvcjo6Q29sb3IoY29uc3QgQ29sb3ImIG90aGVy
KQpAQCAtMzA5LDE1ICsyODksMTggQEAgQ29sb3ImIENvbG9yOjpvcGVyYXRvcj0oQ29sb3ImJiBv
dGhlcikKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK1N0cmluZyBTaW1wbGVDb2xvcjo6c2VyaWFs
aXphdGlvbkZvckhUTUwoKSBjb25zdAoreworICAgIGlmIChpc09wYXF1ZSgpKQorICAgICAgICBy
ZXR1cm4gbWFrZVN0cmluZygnIycsIGhleChyZWRDb21wb25lbnQoKSwgMiwgTG93ZXJjYXNlKSwg
aGV4KGdyZWVuQ29tcG9uZW50KCksIDIsIExvd2VyY2FzZSksIGhleChibHVlQ29tcG9uZW50KCks
IDIsIExvd2VyY2FzZSkpOworICAgIHJldHVybiBzZXJpYWxpemF0aW9uRm9yQ1NTKCk7Cit9CisK
IFN0cmluZyBDb2xvcjo6c2VyaWFsaXplZCgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRXh0ZW5kZWQo
KSkKICAgICAgICAgcmV0dXJuIGFzRXh0ZW5kZWQoKS5jc3NUZXh0KCk7Ci0KLSAgICBpZiAoaXNP
cGFxdWUoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJyMnLCBoZXgocmVkKCksIDIsIExv
d2VyY2FzZSksIGhleChncmVlbigpLCAyLCBMb3dlcmNhc2UpLCBoZXgoYmx1ZSgpLCAyLCBMb3dl
cmNhc2UpKTsKLQotICAgIHJldHVybiBjc3NUZXh0KCk7CisgICAgcmV0dXJuIHJnYigpLnNlcmlh
bGl6YXRpb25Gb3JIVE1MKCk7CiB9CiAKIHN0YXRpYyBjaGFyIGRlY2ltYWxEaWdpdCh1bnNpZ25l
ZCBudW1iZXIpCkBAIC0zMjYsNyArMzA5LDcgQEAgc3RhdGljIGNoYXIgZGVjaW1hbERpZ2l0KHVu
c2lnbmVkIG51bWJlcikKICAgICByZXR1cm4gJzAnICsgbnVtYmVyOwogfQogCi1zdGF0aWMgc3Rk
OjphcnJheTxjaGFyLCA0PiBzZXJpYWxpemVkRnJhY3Rpb25EaWdpdHNGb3JGcmFjdGlvbmFsQWxw
aGFWYWx1ZSh1aW50OF90IGFscGhhKQorc3RhdGljIHN0ZDo6YXJyYXk8Y2hhciwgND4gZnJhY3Rp
b25EaWdpdHNGb3JGcmFjdGlvbmFsQWxwaGFWYWx1ZSh1aW50OF90IGFscGhhKQogewogICAgIEFT
U0VSVChhbHBoYSA+IDApOwogICAgIEFTU0VSVChhbHBoYSA8IDB4RkYpOwpAQCAtMzM3LDI3ICsz
MjAsMzYgQEAgc3RhdGljIHN0ZDo6YXJyYXk8Y2hhciwgND4gc2VyaWFsaXplZEZyYWN0aW9uRGln
aXRzRm9yRnJhY3Rpb25hbEFscGhhVmFsdWUodWludDgKICAgICByZXR1cm4geyB7IGRlY2ltYWxE
aWdpdCgoYWxwaGEgKiAxMCArIDB4N0YpIC8gMHhGRiksICdcMCcsICdcMCcsICdcMCcgfSB9Owog
fQogCi1TdHJpbmcgQ29sb3I6OmNzc1RleHQoKSBjb25zdAorU3RyaW5nIFNpbXBsZUNvbG9yOjpz
ZXJpYWxpemF0aW9uRm9yQ1NTKCkgY29uc3QKIHsKLSAgICBpZiAoaXNFeHRlbmRlZCgpKQotICAg
ICAgICByZXR1cm4gYXNFeHRlbmRlZCgpLmNzc1RleHQoKTsKLSAgICB1aW50OF90IGFscGhhID0g
dGhpcy0+YWxwaGEoKTsKLSAgICBzd2l0Y2ggKGFscGhhKSB7CisgICAgc3dpdGNoIChhbHBoYUNv
bXBvbmVudCgpKSB7CiAgICAgY2FzZSAwOgotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygicmdi
YSgiLCByZWQoKSwgIiwgIiwgZ3JlZW4oKSwgIiwgIiwgYmx1ZSgpLCAiLCAwKSIpOworICAgICAg
ICByZXR1cm4gbWFrZVN0cmluZygicmdiYSgiLCByZWRDb21wb25lbnQoKSwgIiwgIiwgZ3JlZW5D
b21wb25lbnQoKSwgIiwgIiwgYmx1ZUNvbXBvbmVudCgpLCAiLCAwKSIpOwogICAgIGNhc2UgMHhG
RjoKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJnYigiLCByZWQoKSwgIiwgIiwgZ3JlZW4o
KSwgIiwgIiwgYmx1ZSgpLCAnKScpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZygicmdiKCIs
IHJlZENvbXBvbmVudCgpLCAiLCAiLCBncmVlbkNvbXBvbmVudCgpLCAiLCAiLCBibHVlQ29tcG9u
ZW50KCksICcpJyk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJn
YmEoIiwgcmVkKCksICIsICIsIGdyZWVuKCksICIsICIsIGJsdWUoKSwgIiwgMC4iLCBzZXJpYWxp
emVkRnJhY3Rpb25EaWdpdHNGb3JGcmFjdGlvbmFsQWxwaGFWYWx1ZShhbHBoYSkuZGF0YSgpLCAn
KScpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZygicmdiYSgiLCByZWRDb21wb25lbnQoKSwg
IiwgIiwgZ3JlZW5Db21wb25lbnQoKSwgIiwgIiwgYmx1ZUNvbXBvbmVudCgpLCAiLCAwLiIsIGZy
YWN0aW9uRGlnaXRzRm9yRnJhY3Rpb25hbEFscGhhVmFsdWUoYWxwaGFDb21wb25lbnQoKSkuZGF0
YSgpLCAnKScpOwogICAgIH0KIH0KIAorU3RyaW5nIENvbG9yOjpjc3NUZXh0KCkgY29uc3QKK3sK
KyAgICBpZiAoaXNFeHRlbmRlZCgpKQorICAgICAgICByZXR1cm4gYXNFeHRlbmRlZCgpLmNzc1Rl
eHQoKTsKKyAgICByZXR1cm4gcmdiKCkuc2VyaWFsaXphdGlvbkZvckNTUygpOworfQorCitTdHJp
bmcgUkdCQTMyOjpzZXJpYWxpemF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dCgpIGNvbnN0Cit7Cisg
ICAgaWYgKGFscGhhQ29tcG9uZW50KCkgPCAweEZGKQorICAgICAgICByZXR1cm4gbWFrZVN0cmlu
ZygnIycsIGhleChyZWRDb21wb25lbnQoKSwgMiksIGhleChncmVlbkNvbXBvbmVudCgpLCAyKSwg
aGV4KGJsdWVDb21wb25lbnQoKSwgMiksIGhleChhbHBoYUNvbXBvbmVudCgpLCAyKSk7CisgICAg
cmV0dXJuIG1ha2VTdHJpbmcoJyMnLCBoZXgocmVkQ29tcG9uZW50KCksIDIpLCBoZXgoZ3JlZW5D
b21wb25lbnQoKSwgMiksIGhleChibHVlQ29tcG9uZW50KCksIDIpKTsKK30KKwogU3RyaW5nIENv
bG9yOjpuYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEhh
bmRsZSBFeHRlbmRlZENvbG9ycy4KLSAgICBpZiAoYWxwaGEoKSA8IDB4RkYpCi0gICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKCcjJywgaGV4KHJlZCgpLCAyKSwgaGV4KGdyZWVuKCksIDIpLCBoZXgo
Ymx1ZSgpLCAyKSwgaGV4KGFscGhhKCksIDIpKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZygnIycs
IGhleChyZWQoKSwgMiksIGhleChncmVlbigpLCAyKSwgaGV4KGJsdWUoKSwgMikpOworICAgIC8v
IEZJWE1FOiBIYW5kbGUgZXh0ZW5kZWQgY29sb3JzLgorICAgIHJldHVybiByZ2IoKS5zZXJpYWxp
emF0aW9uRm9yUmVuZGVyVHJlZUFzVGV4dCgpOwogfQogCiBDb2xvciBDb2xvcjo6bGlnaHQoKSBj
b25zdApAQCAtNTc1LDEwICs1NjcsOSBAQCB2b2lkIENvbG9yOjpnZXRIU1YoZG91YmxlJiBodWUs
IGRvdWJsZSYgc2F0dXJhdGlvbiwgZG91YmxlJiB2YWx1ZSkgY29uc3QKIAogQ29sb3IgY29sb3JG
cm9tUHJlbXVsdGlwbGllZEFSR0IoUkdCQTMyIHBpeGVsQ29sb3IpCiB7Ci0gICAgaW50IGFscGhh
ID0gYWxwaGFDaGFubmVsKHBpeGVsQ29sb3IpOwotICAgIGlmIChhbHBoYSAmJiBhbHBoYSA8IDI1
NSkKLSAgICAgICAgcGl4ZWxDb2xvciA9IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHJlZENoYW5u
ZWwocGl4ZWxDb2xvciksIGdyZWVuQ2hhbm5lbChwaXhlbENvbG9yKSwgYmx1ZUNoYW5uZWwocGl4
ZWxDb2xvciksIGFscGhhKTsKLSAgICByZXR1cm4gQ29sb3IocGl4ZWxDb2xvcik7CisgICAgaWYg
KHBpeGVsQ29sb3IuaXNWaXNpYmxlKCkgJiYgIXBpeGVsQ29sb3IuaXNPcGFxdWUoKSkKKyAgICAg
ICAgcmV0dXJuIG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHBpeGVsQ29sb3IucmVkQ29tcG9uZW50
KCksIHBpeGVsQ29sb3IuZ3JlZW5Db21wb25lbnQoKSwgcGl4ZWxDb2xvci5ibHVlQ29tcG9uZW50
KCksIHBpeGVsQ29sb3IuYWxwaGFDb21wb25lbnQoKSk7CisgICAgcmV0dXJuIHBpeGVsQ29sb3I7
CiB9CiAKIFJHQkEzMiBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihjb25zdCBDb2xvciYgY29s
b3IpCkBAIC02MDMsMTAgKzU5NCw5IEBAIENvbG9yIGJsZW5kKGNvbnN0IENvbG9yJiBmcm9tLCBj
b25zdCBDb2xvciYgdG8sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFByZW11CiAgICAgICAg
IHJldHVybiBDb2xvcigpOwogCiAgICAgaWYgKGJsZW5kUHJlbXVsdGlwbGllZCkgewotICAgICAg
ICAvLyBDb250cmFyeSB0byB0aGUgbmFtZSwgUkdCQTMyIGFjdHVhbGx5IHN0b3JlcyBBUkdCLCBz
byB3ZSBjYW4gaW5pdGlhbGl6ZSBDb2xvciBkaXJlY3RseSBmcm9tIHByZW11bHRpcGxpZWRBUkdC
RnJvbUNvbG9yKCkuCi0gICAgICAgIC8vIEFsc28sIHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9y
KCkgYmFpbHMgb24gemVybyBhbHBoYSwgc28gc3BlY2lhbC1jYXNlIHRoYXQuCi0gICAgICAgIENv
bG9yIHByZW11bHRGcm9tID0gZnJvbS5hbHBoYSgpID8gcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29s
b3IoZnJvbSkgOiAwOwotICAgICAgICBDb2xvciBwcmVtdWx0VG8gPSB0by5hbHBoYSgpID8gcHJl
bXVsdGlwbGllZEFSR0JGcm9tQ29sb3IodG8pIDogMDsKKyAgICAgICAgLy8gU2luY2UgcHJlbXVs
dGlwbGllZEFSR0JGcm9tQ29sb3IoKSBiYWlscyBvbiB6ZXJvIGFscGhhLCBzcGVjaWFsLWNhc2Ug
dGhhdC4KKyAgICAgICAgQ29sb3IgcHJlbXVsdEZyb20gPSBmcm9tLmFscGhhKCkgPyBwcmVtdWx0
aXBsaWVkQVJHQkZyb21Db2xvcihmcm9tKSA6IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICAgICAg
Q29sb3IgcHJlbXVsdFRvID0gdG8uYWxwaGEoKSA/IHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9y
KHRvKSA6IENvbG9yOjp0cmFuc3BhcmVudDsKIAogICAgICAgICBDb2xvciBwcmVtdWx0QmxlbmRl
ZChibGVuZChwcmVtdWx0RnJvbS5yZWQoKSwgcHJlbXVsdFRvLnJlZCgpLCBwcm9ncmVzcyksCiAg
ICAgICAgICAgICBibGVuZChwcmVtdWx0RnJvbS5ncmVlbigpLCBwcmVtdWx0VG8uZ3JlZW4oKSwg
cHJvZ3Jlc3MpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKaW5kZXgg
OGUzNWUwOTllNGFmMzJkNjk3N2VlYmQyYzcwNWNhNzY2YTQzZWY0NC4uMDE0ZDE0ZWMwNzc1M2Uw
ZDg0MzY4YmMxNjVkOTI4MzNmNTFmODdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNTIsMTMgKzUyLDM3IEBAIHR5cGVkZWYgRDJEX1ZFQ1RPUl80RiBE
MkQxX1ZFQ1RPUl80RjsKIHR5cGVkZWYgc3RydWN0IF9HZGtSR0JBIEdka1JHQkE7CiAjZW5kaWYK
IAotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0U3RyZWFtOwotfQotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXR5cGVkZWYgdW5zaWduZWQgUkdCQTMyOyAvLyBEZXByZWNhdGVkOiBUeXBlIGZv
ciBhbiBSR0JBIHF1YWRydXBsZXQuIFVzZSBSR0JBIGNsYXNzIGluc3RlYWQuCisvLyBDb2xvciB2
YWx1ZSB3aXRoIDgtYml0IGNvbXBvbmVudHMgZm9yIHJlZCwgZ3JlZW4sIGJsdWUsIGFuZCBhbHBo
YS4KKy8vIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIHN0b3JlZCBhcyBhIDMyLWJpdCBpbnRlZ2Vy
LCB3aXRoIGFscGhhIGluIHRoZSBoaWdoIGJpdHM6IEFSR0IuCitjbGFzcyBTaW1wbGVDb2xvciB7
CitwdWJsaWM6CisgICAgY29uc3RleHByIFNpbXBsZUNvbG9yKHVpbnQzMl90IHZhbHVlID0gMCkg
OiBtX3ZhbHVlIHsgdmFsdWUgfSB7IH0KKworICAgIGNvbnN0ZXhwciB1aW50MzJfdCB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgIGNvbnN0ZXhwciB1aW50OF90IHJlZENv
bXBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPj4gMTY7IH0KKyAgICBjb25zdGV4cHIg
dWludDhfdCBncmVlbkNvbXBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPj4gODsgfQor
ICAgIGNvbnN0ZXhwciB1aW50OF90IGJsdWVDb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlOyB9CisgICAgY29uc3RleHByIHVpbnQ4X3QgYWxwaGFDb21wb25lbnQoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlID4+IDI0OyB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBpc09wYXF1ZSgpIGNv
bnN0IHsgcmV0dXJuIGFscGhhQ29tcG9uZW50KCkgPT0gMHhGRjsgfQorICAgIGNvbnN0ZXhwciBi
b29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGFscGhhQ29tcG9uZW50KCk7IH0KKworICAg
IFN0cmluZyBzZXJpYWxpemF0aW9uRm9ySFRNTCgpIGNvbnN0OworICAgIFN0cmluZyBzZXJpYWxp
emF0aW9uRm9yQ1NTKCkgY29uc3Q7CisgICAgU3RyaW5nIHNlcmlhbGl6YXRpb25Gb3JSZW5kZXJU
cmVlQXNUZXh0KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdWludDMyX3QgbV92YWx1ZSB7IDAg
fTsKK307CisKK2Jvb2wgb3BlcmF0b3I9PShTaW1wbGVDb2xvciwgU2ltcGxlQ29sb3IpOworYm9v
bCBvcGVyYXRvciE9KFNpbXBsZUNvbG9yLCBTaW1wbGVDb2xvcik7CisKKy8vIEZJWE1FOiBSZW1v
dmUgdGhpcyBhZnRlciBtaWdyYXRpbmcgdG8gdGhlIG5ldyBuYW1lLgordXNpbmcgUkdCQTMyID0g
U2ltcGxlQ29sb3I7CiAKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdCKGludCByLCBpbnQg
ZywgaW50IGIpOwogV0VCQ09SRV9FWFBPUlQgUkdCQTMyIG1ha2VSR0JBKGludCByLCBpbnQgZywg
aW50IGIsIGludCBhKTsKQEAgLTczLDM2ICs5Nyw5IEBAIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBt
YWtlUkdCQTMyRnJvbUZsb2F0cyhmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsK
IFJHQkEzMiBtYWtlUkdCQUZyb21IU0xBKGZsb2F0IGgsIGZsb2F0IHMsIGZsb2F0IGwsIGZsb2F0
IGEpOwogUkdCQTMyIG1ha2VSR0JBRnJvbUNNWUtBKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHks
IGZsb2F0IGssIGZsb2F0IGEpOwogCi1pbmxpbmUgaW50IHJlZENoYW5uZWwoUkdCQTMyIGNvbG9y
KSB7IHJldHVybiAoY29sb3IgPj4gMTYpICYgMHhGRjsgfQotaW5saW5lIGludCBncmVlbkNoYW5u
ZWwoUkdCQTMyIGNvbG9yKSB7IHJldHVybiAoY29sb3IgPj4gOCkgJiAweEZGOyB9Ci1pbmxpbmUg
aW50IGJsdWVDaGFubmVsKFJHQkEzMiBjb2xvcikgeyByZXR1cm4gY29sb3IgJiAweEZGOyB9Ci1p
bmxpbmUgaW50IGFscGhhQ2hhbm5lbChSR0JBMzIgY29sb3IpIHsgcmV0dXJuIChjb2xvciA+PiAy
NCkgJiAweEZGOyB9Ci0KIHVpbnQ4X3Qgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChpbnQpOwog
dWludDhfdCByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGZsb2F0KTsKIAotY2xhc3MgUkdCQSB7
Ci1wdWJsaWM6Ci0gICAgUkdCQSgpOyAvLyBhbGwgY2hhbm5lbHMgemVybywgaW5jbHVkaW5nIGFs
cGhhCi0gICAgUkdCQSh1aW50OF90IHJlZCwgdWludDhfdCBncmVlbiwgdWludDhfdCBibHVlLCB1
aW50OF90IGFscGhhKTsKLSAgICBSR0JBKHVpbnQ4X3QgcmVkLCB1aW50OF90IGdyZWVuLCB1aW50
OF90IGJsdWUpOyAvLyBvcGFxdWUsIGFscGhhIG9mIDEKLQotICAgIHVpbnQ4X3QgcmVkKCkgY29u
c3Q7Ci0gICAgdWludDhfdCBncmVlbigpIGNvbnN0OwotICAgIHVpbnQ4X3QgYmx1ZSgpIGNvbnN0
OwotICAgIHVpbnQ4X3QgYWxwaGEoKSBjb25zdDsKLQotICAgIGJvb2wgaGFzQWxwaGEoKSBjb25z
dDsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgQ29sb3I7Ci0KLSAgICB1bnNpZ25lZCBt
X2ludGVnZXIgeyAwIH07Ci19OwotCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgUkdCQSYsIGNvbnN0
IFJHQkEmKTsKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBSR0JBJiwgY29uc3QgUkdCQSYpOwotCiBj
bGFzcyBDb2xvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0x
MTcsNyArMTE0LDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIGVudW0gU2VtYW50aWNUYWcgeyBT
ZW1hbnRpYyB9OwotCiAgICAgQ29sb3IoUkdCQTMyIGNvbG9yLCBTZW1hbnRpY1RhZykKICAgICB7
CiAgICAgICAgIHNldFJHQihjb2xvcik7CkBAIC0xNzUsNyArMTcxLDYgQEAgcHVibGljOgogICAg
IC8vIGNvbnZlcnRlZCBleGFjdGx5IHRvIGludGVnZXJzLCB3ZSBzaG91bGQgbWFrZSBhIG5vcm1h
bCBDb2xvci4KICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9h
dCBiLCBmbG9hdCBhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpOwogCi0gICAgQ29sb3IoUkdCQSwg
Q29sb3JTcGFjZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IoY29uc3QgQ29sb3ImKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBDb2xvcihDb2xvciYmKTsKIApAQCAtMTg1LDE3ICsxODAsNiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2NvbG9yRGF0YS5leHRlbmRlZENvbG9yLT5kZXJlZigpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBDb2xvciBjcmVhdGVVbmNoZWNrZWQoaW50IHIsIGludCBnLCBp
bnQgYikKLSAgICB7Ci0gICAgICAgIFJHQkEzMiBjb2xvciA9IDB4RkYwMDAwMDAgfCByIDw8IDE2
IHwgZyA8PCA4IHwgYjsKLSAgICAgICAgcmV0dXJuIENvbG9yKGNvbG9yKTsKLSAgICB9Ci0gICAg
c3RhdGljIENvbG9yIGNyZWF0ZVVuY2hlY2tlZChpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkK
LSAgICB7Ci0gICAgICAgIFJHQkEzMiBjb2xvciA9IGEgPDwgMjQgfCByIDw8IDE2IHwgZyA8PCA4
IHwgYjsKLSAgICAgICAgcmV0dXJuIENvbG9yKGNvbG9yKTsKLSAgICB9Ci0KICAgICAvLyBSZXR1
cm5zIHRoZSBjb2xvciBzZXJpYWxpemVkIGFjY29yZGluZyB0byBIVE1MNQogICAgIC8vIDxodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNmaWxsLWFu
ZC1zdHJva2Utc3R5bGVzPiAoMTAgU2VwdGVtYmVyIDIwMTUpCiAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHNlcmlhbGl6ZWQoKSBjb25zdDsKQEAgLTIwNywxNSArMTkxLDE1IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSB8fCAobV9j
b2xvckRhdGEucmdiYUFuZEZsYWdzICYgdmFsaWRSR0JBQ29sb3JCaXQpOyB9CiAKLSAgICBib29s
IGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZCgpICYmIChpc0V4dGVuZGVkKCkgPyBh
c0V4dGVuZGVkKCkuYWxwaGEoKSA9PSAxLjAgOiBhbHBoYSgpID09IDI1NSk7IH0KLSAgICBib29s
IGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWQoKSAmJiAoaXNFeHRlbmRlZCgpID8g
YXNFeHRlbmRlZCgpLmFscGhhKCkgPiAwLjAgOiBhbHBoYSgpID4gMCk7IH0KKyAgICBib29sIGlz
T3BhcXVlKCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgpLmFscGhh
KCkgPT0gMS4wIDogcmdiKCkuaXNPcGFxdWUoKTsgfQorICAgIGJvb2wgaXNWaXNpYmxlKCkgY29u
c3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgpLmFscGhhKCkgPiAwLjAgOiBy
Z2IoKS5pc1Zpc2libGUoKTsgfQogCi0gICAgaW50IHJlZCgpIGNvbnN0IHsgcmV0dXJuIHJlZENo
YW5uZWwocmdiKCkpOyB9Ci0gICAgaW50IGdyZWVuKCkgY29uc3QgeyByZXR1cm4gZ3JlZW5DaGFu
bmVsKHJnYigpKTsgfQotICAgIGludCBibHVlKCkgY29uc3QgeyByZXR1cm4gYmx1ZUNoYW5uZWwo
cmdiKCkpOyB9Ci0gICAgaW50IGFscGhhKCkgY29uc3QgeyByZXR1cm4gYWxwaGFDaGFubmVsKHJn
YigpKTsgfQorICAgIGludCByZWQoKSBjb25zdCB7IHJldHVybiByZ2IoKS5yZWRDb21wb25lbnQo
KTsgfQorICAgIGludCBncmVlbigpIGNvbnN0IHsgcmV0dXJuIHJnYigpLmdyZWVuQ29tcG9uZW50
KCk7IH0KKyAgICBpbnQgYmx1ZSgpIGNvbnN0IHsgcmV0dXJuIHJnYigpLmJsdWVDb21wb25lbnQo
KTsgfQorICAgIGludCBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIHJnYigpLmFscGhhQ29tcG9uZW50
KCk7IH0KIAotICAgIGZsb2F0IGFscGhhQXNGbG9hdCgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5k
ZWQoKSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpIDogc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFscGhhQ2hh
bm5lbChyZ2IoKSkpIC8gMjU1OyB9CisgICAgZmxvYXQgYWxwaGFBc0Zsb2F0KCkgY29uc3QgeyBy
ZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgpLmFscGhhKCkgOiBzdGF0aWNfY2FzdDxm
bG9hdD4ocmdiKCkuYWxwaGFDb21wb25lbnQoKSkgLyAweEZGOyB9CiAKICAgICBSR0JBMzIgcmdi
KCkgY29uc3Q7CiAKQEAgLTI2OSwxOSArMjUzLDE5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBwYXJzZUhleENvbG9yKGNvbnN0IExDaGFyKiwgdW5zaWduZWQsIFJHQkEzMiYpOwogICAgIHN0
YXRpYyBib29sIHBhcnNlSGV4Q29sb3IoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCwgUkdCQTMyJik7
CiAKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGJsYWNrID0gMHhGRjAwMDAwMDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgUkdCQTMyIHdoaXRlID0gMHhGRkZGRkZGRjsKLSAgICBz
dGF0aWMgY29uc3QgUkdCQTMyIGRhcmtHcmF5ID0gMHhGRjgwODA4MDsKLSAgICBzdGF0aWMgY29u
c3QgUkdCQTMyIGdyYXkgPSAweEZGQTBBMEEwOwotICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgbGln
aHRHcmF5ID0gMHhGRkMwQzBDMDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgUkdC
QTMyIHRyYW5zcGFyZW50ID0gMHgwMDAwMDAwMDsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGN5
YW4gPSAweEZGMDBGRkZGOwotICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgeWVsbG93ID0gMHhGRkZG
RkYwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGJsYWNrIHsgMHhGRjAwMDAw
MCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3Igd2hpdGUgeyAweEZGRkZGRkZG
IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBkYXJrR3JheSB7IDB4RkY4MDgw
ODAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGdyYXkgeyAweEZGQTBBMEEw
IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBsaWdodEdyYXkgeyAweEZGQzBD
MEMwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciB0cmFuc3BhcmVudCB7IDB4
MDAwMDAwMDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGN5YW4geyAweEZG
MDBGRkZGIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTaW1wbGVDb2xvciB5ZWxsb3cgeyAweEZG
RkZGRjAwIH07CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHN0YXRpYyBjb25zdCBS
R0JBMzIgY29tcG9zaXRpb25GaWxsID0gMHgzQ0FGQzBFMzsKKyAgICBzdGF0aWMgY29uc3RleHBy
IFNpbXBsZUNvbG9yIGNvbXBvc2l0aW9uRmlsbCB7IDB4M0NBRkMwRTMgfTsKICNlbHNlCi0gICAg
c3RhdGljIGNvbnN0IFJHQkEzMiBjb21wb3NpdGlvbkZpbGwgPSAweEZGRTFERDU1OworICAgIHN0
YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgY29tcG9zaXRpb25GaWxsIHsgMHhGRkUxREQ1NSB9
OwogI2VuZGlmCiAKICAgICBib29sIGlzRXh0ZW5kZWQoKSBjb25zdApAQCAtMzQzLDQ5ICszMjcs
MTcgQEAgdWludDE2X3QgZmFzdERpdmlkZUJ5MjU1KHVpbnQxNl90KTsKIFdFQkNPUkVfRVhQT1JU
IENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYpOwogI2VuZGlmCiAKLWlubGlu
ZSBSR0JBOjpSR0JBKCkKLXsKLX0KLQotaW5saW5lIFJHQkE6OlJHQkEodWludDhfdCByZWQsIHVp
bnQ4X3QgZ3JlZW4sIHVpbnQ4X3QgYmx1ZSwgdWludDhfdCBhbHBoYSkKLSAgICA6IG1faW50ZWdl
cihhbHBoYSA8PCAyNCB8IHJlZCA8PCAxNiB8IGdyZWVuIDw8IDggfCBibHVlKQotewotfQotCi1p
bmxpbmUgUkdCQTo6UkdCQSh1aW50OF90IHJlZCwgdWludDhfdCBncmVlbiwgdWludDhfdCBibHVl
KQotICAgIDogbV9pbnRlZ2VyKDB4RkYwMDAwMDAgfCByZWQgPDwgMTYgfCBncmVlbiA8PCA4IHwg
Ymx1ZSkKLXsKLX0KLQotaW5saW5lIHVpbnQ4X3QgUkdCQTo6cmVkKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9pbnRlZ2VyID4+IDE2OwotfQotCi1pbmxpbmUgdWludDhfdCBSR0JBOjpncmVlbigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW50ZWdlciA+PiA4OwotfQotCi1pbmxpbmUgdWludDhf
dCBSR0JBOjpibHVlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnRlZ2VyOwotfQotCi1pbmxp
bmUgdWludDhfdCBSR0JBOjphbHBoYSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW50ZWdlciA+
PiAyNDsKLX0KK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBjb25zdCBDb2xvciYpOworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwogCi1pbmxpbmUg
Ym9vbCBSR0JBOjpoYXNBbHBoYSgpIGNvbnN0CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFNpbXBs
ZUNvbG9yIGEsIFNpbXBsZUNvbG9yIGIpCiB7Ci0gICAgcmV0dXJuIChtX2ludGVnZXIgJiAweEZG
MDAwMDAwKSAhPSAweEZGMDAwMDAwOworICAgIHJldHVybiBhLnZhbHVlKCkgPT0gYi52YWx1ZSgp
OwogfQogCi1pbmxpbmUgQ29sb3I6OkNvbG9yKFJHQkEgY29sb3IsIENvbG9yU3BhY2Ugc3BhY2Up
CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFNpbXBsZUNvbG9yIGEsIFNpbXBsZUNvbG9yIGIpCiB7
Ci0gICAgc2V0UkdCKGNvbG9yLm1faW50ZWdlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChzcGFjZSwg
c3BhY2UgPT0gQ29sb3JTcGFjZTo6U1JHQik7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAog
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xvciYgYSwgY29uc3QgQ29sb3ImIGIpCkBA
IC00MzcsMTIgKzM4OSwxMiBAQCBpbmxpbmUgUkdCQTMyIENvbG9yOjpyZ2IoKSBjb25zdAogICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgQVNTRVJUKCFpc0V4dGVuZGVkKCkpIGhlcmUsIG9yIHByb2R1
Y2UKICAgICAvLyBhbiBSR0JBMzIgZXF1aXZhbGVudCBmb3IgYW4gRXh0ZW5kZWRDb2xvci4gSWRl
YWxseSB0aGUgZm9ybWVyLAogICAgIC8vIHNvIHdlIGNhbiBhdWRpdCBhbGwgdGhlIHJnYigpIGNh
bGwgc2l0ZXMgdG8gaGFuZGxlIGV4dGVuZGVkLgotICAgIHJldHVybiBzdGF0aWNfY2FzdDxSR0JB
MzI+KG1fY29sb3JEYXRhLnJnYmFBbmRGbGFncyA+PiAzMik7CisgICAgcmV0dXJuIHsgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KG1fY29sb3JEYXRhLnJnYmFBbmRGbGFncyA+PiAzMikgfTsKIH0KIAog
aW5saW5lIHZvaWQgQ29sb3I6OnNldFJHQihSR0JBMzIgcmdiKQogewotICAgIG1fY29sb3JEYXRh
LnJnYmFBbmRGbGFncyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZ2IpIDw8IDMyOworICAgIG1f
Y29sb3JEYXRhLnJnYmFBbmRGbGFncyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZ2IudmFsdWUo
KSkgPDwgMzI7CiAgICAgdGFnQXNWYWxpZCgpOwogfQogCkBAIC00NTMsNyArNDA1LDcgQEAgaW5s
aW5lIGJvb2wgQ29sb3I6OmlzQmxhY2tDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAg
IHJldHVybiAhZXh0ZW5kZWRDb2xvci5yZWQoKSAmJiAhZXh0ZW5kZWRDb2xvci5ncmVlbigpICYm
ICFleHRlbmRlZENvbG9yLmJsdWUoKSAmJiBleHRlbmRlZENvbG9yLmFscGhhKCkgPT0gMTsKICAg
ICB9CiAKLSAgICByZXR1cm4gY29sb3IuaXNWYWxpZCgpICYmIGNvbG9yLnJnYigpID09IENvbG9y
OjpibGFjazsKKyAgICByZXR1cm4gY29sb3IucmdiKCkgPT0gQ29sb3I6OmJsYWNrOwogfQogCiBp
bmxpbmUgYm9vbCBDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTQ2
MywxMiArNDE1LDkgQEAgaW5saW5lIGJvb2wgQ29sb3I6OmlzV2hpdGVDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpCiAgICAgICAgIHJldHVybiBleHRlbmRlZENvbG9yLnJlZCgpID09IDEgJiYgZXh0
ZW5kZWRDb2xvci5ncmVlbigpID09IDEgJiYgZXh0ZW5kZWRDb2xvci5ibHVlKCkgPT0gMSAmJiBl
eHRlbmRlZENvbG9yLmFscGhhKCkgPT0gMTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGNvbG9y
LmlzVmFsaWQoKSAmJiBjb2xvci5yZ2IoKSA9PSBDb2xvcjo6d2hpdGU7CisgICAgcmV0dXJuIGNv
bG9yLnJnYigpID09IENvbG9yOjp3aGl0ZTsKIH0KIAotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IENvbG9yJik7Ci1XRUJD
T1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwg
Q29sb3JTcGFjZSk7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdURiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5n
U3RvcmUuaAppbmRleCBiYWViZTUyNjExZGJlODU0Nzc4YWFkNWYyYzBlNjhjNjdmMTVjZDA2Li5m
N2NjZTQxNTE1NWVkNDNlZGZkZjUwNzY2N2M0YWE5MmRjNzEyOGY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTYw
LDE0ICs2MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAg
ICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcjsKLSAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBzaXpl
LmFyZWEoKS51bnNhZmVHZXQoKSAqIHNpemVvZihSR0JBMzIpOworICAgICAgICBzaXplX3QgYnVm
ZmVyU2l6ZSA9IHNpemUuYXJlYSgpLnVuc2FmZUdldCgpICogc2l6ZW9mKHVpbnQzMl90KTsKIAog
ICAgICAgICBpZiAoIWJ1ZmZlci50cnlSZXNlcnZlQ2FwYWNpdHkoYnVmZmVyU2l6ZSkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7
CiAgICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDxS
R0JBMzIqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CisgICAgICAgIG1f
cGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8Y2hhcio+
KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICAgICAgbV9zaXplID0gc2l6ZTsKICAgICAgICAgbV9m
cmFtZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CiAgICAgICAgIGNsZWFyKCk7
CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXIoKQogICAgIHsKLSAg
ICAgICAgbWVtc2V0KG1fcGl4ZWxzUHRyLCAwLCAobV9zaXplLmFyZWEoKSAqIHNpemVvZihSR0JB
MzIpKS51bnNhZmVHZXQoKSk7CisgICAgICAgIG1lbXNldChtX3BpeGVsc1B0ciwgMCwgKG1fc2l6
ZS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpKS51bnNhZmVHZXQoKSk7CiAgICAgfQogCiAgICAg
dm9pZCBjbGVhclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTk0LDggKzk0LDggQEAgcHVi
bGljOgogICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkgfHwgIWluQm91bmRzKHJlY3QpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHNpemVfdCByb3dCeXRlcyA9IHJlY3Qud2lkdGgo
KSAqIHNpemVvZihSR0JBMzIpOwotICAgICAgICBSR0JBMzIqIHN0YXJ0ID0gcGl4ZWxBdChyZWN0
LngoKSwgcmVjdC55KCkpOworICAgICAgICBzaXplX3Qgcm93Qnl0ZXMgPSByZWN0LndpZHRoKCkg
KiBzaXplb2YodWludDMyX3QpOworICAgICAgICB1aW50MzJfdCogc3RhcnQgPSBwaXhlbEF0KHJl
Y3QueCgpLCByZWN0LnkoKSk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVjdC5oZWln
aHQoKTsgKytpKSB7CiAgICAgICAgICAgICBtZW1zZXQoc3RhcnQsIDAsIHJvd0J5dGVzKTsKICAg
ICAgICAgICAgIHN0YXJ0ICs9IG1fc2l6ZS53aWR0aCgpOwpAQCAtMTA3LDggKzEwNyw4IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpIHx8ICFpbkJvdW5kcyhyZWN0KSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSR0JBMzIqIHN0YXJ0ID0gcGl4ZWxBdChyZWN0
LngoKSwgcmVjdC55KCkpOwotICAgICAgICBSR0JBMzIgcGl4ZWxWYWx1ZSA9IHRoaXMtPnBpeGVs
VmFsdWUociwgZywgYiwgYSk7CisgICAgICAgIHVpbnQzMl90KiBzdGFydCA9IHBpeGVsQXQocmVj
dC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgdWludDMyX3QgcGl4ZWxWYWx1ZSA9IHRoaXMtPnBp
eGVsVmFsdWUociwgZywgYiwgYSk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVjdC5o
ZWlnaHQoKTsgKytpKSB7CiAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHJlY3Qud2lk
dGgoKTsgKytqKQogICAgICAgICAgICAgICAgIHN0YXJ0W2pdID0gcGl4ZWxWYWx1ZTsKQEAgLTEy
MSwyMiArMTIxLDIyIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpIHx8ICFp
bkJvdW5kcyhyZWN0KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBzaXplX3Qgcm93
Qnl0ZXMgPSByZWN0LndpZHRoKCkgKiBzaXplb2YoUkdCQTMyKTsKLSAgICAgICAgUkdCQTMyKiBz
cmMgPSBwaXhlbEF0KHJlY3QueCgpLCByZWN0LnkoKSk7Ci0gICAgICAgIFJHQkEzMiogZGVzdCA9
IHNyYyArIG1fc2l6ZS53aWR0aCgpOworICAgICAgICBzaXplX3Qgcm93Qnl0ZXMgPSByZWN0Lndp
ZHRoKCkgKiBzaXplb2YodWludDMyX3QpOworICAgICAgICB1aW50MzJfdCogc3JjID0gcGl4ZWxB
dChyZWN0LngoKSwgcmVjdC55KCkpOworICAgICAgICB1aW50MzJfdCogZGVzdCA9IHNyYyArIG1f
c2l6ZS53aWR0aCgpOwogICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHJlY3QuaGVpZ2h0KCk7
ICsraSkgewogICAgICAgICAgICAgbWVtY3B5KGRlc3QsIHNyYywgcm93Qnl0ZXMpOwogICAgICAg
ICAgICAgZGVzdCArPSBtX3NpemUud2lkdGgoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIFJH
QkEzMiogcGl4ZWxBdChpbnQgeCwgaW50IHkpIGNvbnN0CisgICAgdWludDMyX3QqIHBpeGVsQXQo
aW50IHgsIGludCB5KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGluQm91bmRzKEludFBv
aW50KHgsIHkpKSk7CiAgICAgICAgIHJldHVybiBtX3BpeGVsc1B0ciArIHkgKiBtX3NpemUud2lk
dGgoKSArIHg7CiAgICAgfQogCi0gICAgdm9pZCBzZXRQaXhlbChSR0JBMzIqIGRlc3QsIHVuc2ln
bmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCisgICAgdm9pZCBzZXRQ
aXhlbCh1aW50MzJfdCogZGVzdCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwg
dW5zaWduZWQgYSkKICAgICB7CiAgICAgICAgIEFTU0VSVChkZXN0KTsKICAgICAgICAgKmRlc3Qg
PSBwaXhlbFZhbHVlKHIsIGcsIGIsIGEpOwpAQCAtMTQ3LDMwICsxNDcsMzIgQEAgcHVibGljOgog
ICAgICAgICBzZXRQaXhlbChwaXhlbEF0KHgsIHkpLCByLCBnLCBiLCBhKTsKICAgICB9CiAKLSAg
ICB2b2lkIGJsZW5kUGl4ZWwoUkdCQTMyKiBkZXN0LCB1bnNpZ25lZCByLCB1bnNpZ25lZCBnLCB1
bnNpZ25lZCBiLCB1bnNpZ25lZCBhKQorICAgIHZvaWQgYmxlbmRQaXhlbCh1aW50MzJfdCogZGVz
dCwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKICAgICB7
CiAgICAgICAgIGlmICghYSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoYSA+
PSAyNTUgfHwgIWFscGhhQ2hhbm5lbCgqZGVzdCkpIHsKKyAgICAgICAgU2ltcGxlQ29sb3IgcGl4
ZWwgeyAqZGVzdCB9OworCisgICAgICAgIGlmIChhID49IDI1NSB8fCAhcGl4ZWwuaXNWaXNpYmxl
KCkpIHsKICAgICAgICAgICAgIHNldFBpeGVsKGRlc3QsIHIsIGcsIGIsIGEpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGx5QWxwaGEp
Ci0gICAgICAgICAgICAqZGVzdCA9IG1ha2VQcmVtdWx0aXBsaWVkUkdCQShyZWRDaGFubmVsKCpk
ZXN0KSwgZ3JlZW5DaGFubmVsKCpkZXN0KSwgYmx1ZUNoYW5uZWwoKmRlc3QpLCBhbHBoYUNoYW5u
ZWwoKmRlc3QpLCBmYWxzZSk7CisgICAgICAgICAgICBwaXhlbCA9IG1ha2VQcmVtdWx0aXBsaWVk
UkdCQShwaXhlbC5yZWRDb21wb25lbnQoKSwgcGl4ZWwuZ3JlZW5Db21wb25lbnQoKSwgcGl4ZWwu
Ymx1ZUNvbXBvbmVudCgpLCBwaXhlbC5hbHBoYUNvbXBvbmVudCgpLCBmYWxzZSk7CiAKICAgICAg
ICAgdW5zaWduZWQgZCA9IDI1NSAtIGE7CiAKLSAgICAgICAgciA9IGZhc3REaXZpZGVCeTI1NShy
ICogYSArIHJlZENoYW5uZWwoKmRlc3QpICogZCk7Ci0gICAgICAgIGcgPSBmYXN0RGl2aWRlQnky
NTUoZyAqIGEgKyBncmVlbkNoYW5uZWwoKmRlc3QpICogZCk7Ci0gICAgICAgIGIgPSBmYXN0RGl2
aWRlQnkyNTUoYiAqIGEgKyBibHVlQ2hhbm5lbCgqZGVzdCkgKiBkKTsKLSAgICAgICAgYSArPSBm
YXN0RGl2aWRlQnkyNTUoZCAqIGFscGhhQ2hhbm5lbCgqZGVzdCkpOworICAgICAgICByID0gZmFz
dERpdmlkZUJ5MjU1KHIgKiBhICsgcGl4ZWwucmVkQ29tcG9uZW50KCkgKiBkKTsKKyAgICAgICAg
ZyA9IGZhc3REaXZpZGVCeTI1NShnICogYSArIHBpeGVsLmdyZWVuQ29tcG9uZW50KCkgKiBkKTsK
KyAgICAgICAgYiA9IGZhc3REaXZpZGVCeTI1NShiICogYSArIHBpeGVsLmJsdWVDb21wb25lbnQo
KSAqIGQpOworICAgICAgICBhICs9IGZhc3REaXZpZGVCeTI1NShkICogcGl4ZWwuYWxwaGFDb21w
b25lbnQoKSk7CiAKICAgICAgICAgaWYgKG1fcHJlbXVsdGlwbHlBbHBoYSkKLSAgICAgICAgICAg
ICpkZXN0ID0gbWFrZVJHQkEociwgZywgYiwgYSk7CisgICAgICAgICAgICAqZGVzdCA9IG1ha2VS
R0JBKHIsIGcsIGIsIGEpLnZhbHVlKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICpkZXN0
ID0gbWFrZVVuUHJlbXVsdGlwbGllZFJHQkEociwgZywgYiwgYSk7CisgICAgICAgICAgICAqZGVz
dCA9IG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHIsIGcsIGIsIGEpLnZhbHVlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIGJvb2wgaXNPdmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMjA0
LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7CiAgICAg
ICAgIGJ1ZmZlci5hcHBlbmQob3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9waXhlbHMt
PnNpemUoKSk7CiAgICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnBy
ZXRfY2FzdDxSR0JBMzIqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7Cisg
ICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nh
c3Q8Y2hhcio+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICB9CiAKICAgICBib29sIGluQm91bmRz
KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKQEAgLTIxNywxOSArMjE5LDE5IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSkuY29udGFpbnMo
cmVjdCk7CiAgICAgfQogCi0gICAgUkdCQTMyIHBpeGVsVmFsdWUodW5zaWduZWQgciwgdW5zaWdu
ZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkgY29uc3QKKyAgICB1aW50MzJfdCBwaXhlbFZh
bHVlKHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpIGNvbnN0
CiAgICAgewogICAgICAgICBpZiAobV9wcmVtdWx0aXBseUFscGhhICYmICFhKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYgKG1fcHJlbXVsdGlwbHlBbHBoYSAmJiBhIDwgMjU1
KQotICAgICAgICAgICAgcmV0dXJuIG1ha2VQcmVtdWx0aXBsaWVkUkdCQShyLCBnLCBiLCBhLCBm
YWxzZSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVByZW11bHRpcGxpZWRSR0JBKHIsIGcsIGIs
IGEsIGZhbHNlKS52YWx1ZSgpOwogCi0gICAgICAgIHJldHVybiBtYWtlUkdCQShyLCBnLCBiLCBh
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VSR0JBKHIsIGcsIGIsIGEpLnZhbHVlKCk7CiAgICAgfQog
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOwotICAgIFJH
QkEzMiogbV9waXhlbHNQdHIgeyBudWxscHRyIH07CisgICAgdWludDMyX3QqIG1fcGl4ZWxzUHRy
IHsgbnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXplOwogICAgIEludFJlY3QgbV9mcmFtZVJl
Y3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50aXJlIGJ1ZmZlciBleGNlcHQg
Zm9yIEdJRiBhbmQgUE5HIGZyYW1lcwogICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhhIHsgdHJ1
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCmlu
ZGV4IDJjYzZiMDJhN2QzNTAxNTcxY2YyMDkzNjRiMzZlZDI1YzFkODM5NjkuLjg1NmZlMzRmZTZm
NzE3ZjgxNmUzNGE0N2QzZjY4NGJhNjAzYjk0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUg
IkNvbG9yLmgiCiAjaW5jbHVkZSAiRGVjb2RpbmdPcHRpb25zLmgiCi0jaW5jbHVkZSAiSW1hZ2VC
YWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
SW1hZ2VUeXBlcy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IDFjMDdhNmYzMGFhNTEwNzAzZDIy
YTIzMDU5ZGNlMDg3OWIyOGQ4NWQuLjYyMWE1MjM2OTdlODMxOGJkMDkyN2IxOTA3N2VkMGI0N2E0
MWIzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBJ
bWFnZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEltYWdlRGVjb2RlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1hZ2VTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8SW1hZ2VTb3VyY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VTb3VyY2U+
IHsKICAgICBmcmllbmQgY2xhc3MgQml0bWFwSW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmlu
ZGV4IGJiYjVjNjQ4MmI2ZTFkM2YyOGFjNDc5ZWE3YzVkMzFiMWQzMzc5MDIuLmI2MzViZjQzZjcz
ZDczM2NhM2UyMjJlMzJkN2UyMTE1NmQxMWVhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBA
IC0zOTgsNyArMzk4LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xv
clNwYWNlKGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiYgbG8KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsb29rVXBUYWJsZVtwaXhlbENvbG9yLmdyZWVuKCldLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2tVcFRhYmxlW3BpeGVsQ29sb3IuYmx1ZSgpXSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbENvbG9yLmFscGhhKCkpOwotICAg
ICAgICAgICAgKnBpeGVsID0gcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IocGl4ZWxDb2xvcik7
CisgICAgICAgICAgICAqcGl4ZWwgPSBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihwaXhlbENv
bG9yKS52YWx1ZSgpOwogICAgICAgICB9CiAgICAgfQogICAgIGNhaXJvX3N1cmZhY2VfbWFya19k
aXJ0eV9yZWN0YW5nbGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgMCwgMCwgbV9sb2dpY2FsU2l6
ZS53aWR0aCgpLCBtX2xvZ2ljYWxTaXplLmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKaW5kZXggY2RmZmEzZjYwZTlhZDE4ZjJh
NDBhOGU4OTg1MmEzNmEzMzdmNTEwMC4uNzgzOGYzNTMxYzJiZTUwNjU5NTJhZTFjYjM4MTg3YmM5
YjcyZTk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q29sb3JDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29s
b3JDRy5jcHAKQEAgLTEyOCwyMyArMTI4LDIzIEBAIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0Nv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpCiB7CiAgICAgaWYgKCFjb2xvci5pc0V4dGVuZGVkKCkpIHsKLSAgICAgICAg
c3dpdGNoIChjb2xvci5yZ2IoKSkgewotICAgICAgICBjYXNlIENvbG9yOjp0cmFuc3BhcmVudDog
eworICAgICAgICBzd2l0Y2ggKGNvbG9yLnJnYigpLnZhbHVlKCkpIHsKKyAgICAgICAgY2FzZSBD
b2xvcjo6dHJhbnNwYXJlbnQudmFsdWUoKTogewogICAgICAgICAgICAgc3RhdGljIENHQ29sb3JS
ZWYgdHJhbnNwYXJlbnRDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAgICAgICAgICAg
cmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsKICAgICAgICAgfQotICAgICAgICBjYXNlIENvbG9y
OjpibGFjazogeworICAgICAgICBjYXNlIENvbG9yOjpibGFjay52YWx1ZSgpOiB7CiAgICAgICAg
ICAgICBzdGF0aWMgQ0dDb2xvclJlZiBibGFja0NHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7
CiAgICAgICAgICAgICByZXR1cm4gYmxhY2tDR0NvbG9yOwogICAgICAgICB9Ci0gICAgICAgIGNh
c2UgQ29sb3I6OndoaXRlOiB7CisgICAgICAgIGNhc2UgQ29sb3I6OndoaXRlLnZhbHVlKCk6IHsK
ICAgICAgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHdoaXRlQ0dDb2xvciA9IGxlYWtDR0NvbG9y
KGNvbG9yKTsKICAgICAgICAgICAgIHJldHVybiB3aGl0ZUNHQ29sb3I7CiAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KIAotICAgIEFTU0VSVChjb2xvci5pc0V4dGVuZGVkKCkgfHwgY29sb3Iu
cmdiKCkpOworICAgIEFTU0VSVChjb2xvci5pc0V4dGVuZGVkKCkgfHwgY29sb3IucmdiKCkudmFs
dWUoKSk7CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPENvbG9yLCBS
ZXRhaW5QdHI8Q0dDb2xvclJlZj4sIDMyPj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hlLmdldCgp
LmdldChjb2xvcikuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29sb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29sb3JNYWMubW0KaW5kZXggMWZmNWI3MjNiZDkyMjdiNmQxMjY5Y2RmOTRlNjNkMjI1
MjJiN2Y2MC4uMTg3NDk1MmFhMmNiMjBmOTY1OGVmMGIyZDRjMzM3ZGY4MGMzNTQyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQpAQCAt
NDAsNyArNDAsNyBAQCBzdGF0aWMgYm9vbCB1c2VPbGRBcXVhRm9jdXNSaW5nQ29sb3I7CiAKIENv
bG9yIG9sZEFxdWFGb2N1c1JpbmdDb2xvcigpCiB7Ci0gICAgcmV0dXJuIDB4RkY3REFERDk7Cisg
ICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRjdEQUREOSB9OwogfQogCiB2b2lkIHNldFVzZXNU
ZXN0TW9kZUZvY3VzUmluZ0NvbG9yKGJvb2wgbmV3VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQ29sb3JEaXJlY3QyRC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQ29sb3JEaXJlY3QyRC5jcHAKaW5kZXggZGVh
ZGRkNmY4ZjhmMzA3YjM5YmYxYzExYzRiZGI0YTRjM2I0MTBiMC4uOGMzMWI2NzI2ZWE0NjcxOWNj
NWFhZjViODgwNWQxZTNlYzkwODM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Db2xvckRpcmVjdDJELmNwcApAQCAtNDIsNyArNDIsNyBAQCBD
b2xvcjo6b3BlcmF0b3IgRDJEMV9DT0xPUl9GKCkgY29uc3QKIHsKICAgICBmbG9hdCBjb2xvckFs
cGhhID0gYWxwaGEoKSAvIDI1NS4wZjsKIAotICAgIHJldHVybiBEMkQxOjpDb2xvckYocmdiKCks
IGNvbG9yQWxwaGEpOworICAgIHJldHVybiBEMkQxOjpDb2xvckYocmdiKCkudmFsdWUoKSwgY29s
b3JBbHBoYSk7CiB9CiAKIENvbG9yOjpvcGVyYXRvciBEMkQxX1ZFQ1RPUl80RigpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IDhhMTMzM2M2NTRjZDI2ZmM5ZmNmMjFkM2U4
OTA0NWVjMzJmNTRkMWUuLmY3ZjdmNzEwMTE0ZThiYjI0NmI0NDZmNjcyNTQzODZkZDg2OGRmODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9Q
TkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCBQ
TkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSh1bnNpZ25lZCBjaGFyKiByb3dCdWZmZXIsIHVu
c2lnbmVkIHJvd0luZGV4LAogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChp
bnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4LCBwaXhlbCArPSAzLCArK2FkZHJlc3MpCi0gICAgICAg
ICAgICAqYWRkcmVzcyA9IG1ha2VSR0IocGl4ZWxbMF0sIHBpeGVsWzFdLCBwaXhlbFsyXSk7Cisg
ICAgICAgICAgICAqYWRkcmVzcyA9IDB4RkYwMDAwMDAgfCBwaXhlbFswXSA8PCAxNiB8IHBpeGVs
WzFdIDw8IDggfCBwaXhlbFsyXTsKICAgICB9CiAKICAgICBpZiAobm9uVHJpdmlhbEFscGhhTWFz
ayAmJiAhYnVmZmVyLmhhc0FscGhhKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4
IDU4NDYyZjYyMmMyMGQzZjI4YjI1MzhiNGE0OWE4Y2RjZmRhNTY0YmEuLjE2ZDI4ZmM1NTUzYTU0
NTIwZGQxNjQ5Y2Q3ODBiNGM4NGQyNGFmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
CkBAIC04Myw4ICs4Myw4IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPE1vY2tNZWRpYURldmljZT4g
ZGVmYXVsdERldmljZXMoKQogICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTEiX3Ms
ICJNb2NrIHNjcmVlbiBkZXZpY2UgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBDb2xvcjo6bGlnaHRHcmF5LCB7IDM4NDAsIDIx
NjAgfSB9IH0sCiAgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJTQ1JFRU4tMiJfcywgIk1vY2sg
c2NyZWVuIGRldmljZSAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlOjpTY3JlZW4sIENvbG9yOjp5ZWxsb3csIHsgMTkyMCwgMTA4MCB9IH0gfSwK
IAotICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAx
Il9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpT
Y3JlZW4sIDB4ZmZmMWI1LCB7IDY0MCwgNDgwIH0gfSB9LAotICAgICAgICBNb2NrTWVkaWFEZXZp
Y2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRp
ZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIDB4ZmZkMGI1LCB7IDEyODAs
IDYwMCB9IH0gfSwKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9j
ayB3aW5kb3cgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6U2NyZWVuLCBTaW1wbGVDb2xvciB7IDB4ZmZmMWI1IH0sIHsgNjQwLCA0ODAgfSB9
IH0sCisgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1vY2sgd2luZG93
IDIiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6
OlNjcmVlbiwgU2ltcGxlQ29sb3IgeyAweGZmZDBiNSB9LCB7IDEyODAsIDYwMCB9IH0gfSwKICAg
ICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDVhYzlkNjYwNmM0MjIxMjQ4YmM0MWRlOTM4
OWNlNWM4N2U0YTQxN2IuLjY3ZDJhMTdmY2QwNDg3ZjhkOTg0MjYzMzk2NDQ1YWY3MDlkYWE5MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0yNjIsMTIgKzI2MiwxMCBAQCB2b2lkIE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpkcmF3QW5pbWF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIAog
dm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0JveGVzKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkKIHsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIG1hZ2VudGEgPSAweGZmZmYwMGZm
OwotICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgeWVsbG93ID0gMHhmZmZmZmYwMDsKLSAgICBzdGF0
aWMgY29uc3QgUkdCQTMyIGJsdWUgPSAweGZmMDAwMGZmOwotICAgIHN0YXRpYyBjb25zdCBSR0JB
MzIgcmVkID0gMHhmZmZmMDAwMDsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGdyZWVuID0gMHhm
ZjAwODAwMDsKLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGN5YW4gPSAweEZGMDBGRkZGOworICAg
IGNvbnN0ZXhwciBTaW1wbGVDb2xvciBtYWdlbnRhIHsgMHhmZmZmMDBmZiB9OworICAgIGNvbnN0
ZXhwciBTaW1wbGVDb2xvciBibHVlIHsgMHhmZjAwMDBmZiB9OworICAgIGNvbnN0ZXhwciBTaW1w
bGVDb2xvciByZWQgeyAweGZmZmYwMDAwIH07CisgICAgY29uc3RleHByIFNpbXBsZUNvbG9yIGRh
cmtHcmVlbiB7IDB4ZmYwMDgwMDAgfTsKIAogICAgIEludFNpemUgc2l6ZSA9IGNhcHR1cmVTaXpl
KCk7CiAgICAgZmxvYXQgYm94U2l6ZSA9IHNpemUud2lkdGgoKSAqIC4wMzU7CkBAIC0zMTcsOSAr
MzE1LDkgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0JveGVzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKIAogICAgIGJveFRvcCArPSBib3hTaXplICsgMjsKICAgICBib3hM
ZWZ0ID0gYm94U2l6ZTsKLSAgICBDb2xvciBib3hDb2xvcnNbXSA9IHsgQ29sb3I6OndoaXRlLCB5
ZWxsb3csIGN5YW4sIGdyZWVuLCBtYWdlbnRhLCByZWQsIGJsdWUgfTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2l6ZW9mKGJveENvbG9ycykgLyBzaXplb2YoYm94Q29sb3JzWzBdKTsg
aSsrKSB7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KGJveExlZnQsIGJveFRv
cCwgYm94U2l6ZSArIDEsIGJveFNpemUgKyAxKSwgYm94Q29sb3JzW2ldKTsKKyAgICBjb25zdGV4
cHIgU2ltcGxlQ29sb3IgYm94Q29sb3JzW10gPSB7IENvbG9yOjp3aGl0ZSwgQ29sb3I6OnllbGxv
dywgQ29sb3I6OmN5YW4sIGRhcmtHcmVlbiwgbWFnZW50YSwgcmVkLCBibHVlIH07CisgICAgZm9y
IChhdXRvJiBib3hDb2xvciA6IGJveENvbG9ycykgeworICAgICAgICBjb250ZXh0LmZpbGxSZWN0
KEZsb2F0UmVjdChib3hMZWZ0LCBib3hUb3AsIGJveFNpemUgKyAxLCBib3hTaXplICsgMSksIGJv
eENvbG9yKTsKICAgICAgICAgYm94TGVmdCArPSBib3hTaXplICsgMTsKICAgICB9CiAgICAgY29u
dGV4dC5zdHJva2VQYXRoKG1fcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKaW5kZXggZWQ4YWJiNGExNDZhYmM3MTBjNDVj
NDc3MzBkYjg1MDAzZGU2NmM0OS4uNWE2NzVhMjVlYmIyMDZjNzQ2YmQ0NGNjMjJhNDUwYzI4NzZj
YTZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJU
aGVtZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFy
VGhlbWVNb2NrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpz
Y3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUsIFNjcgog
CiB2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdHJh
Y2tSZWN0KQogewotICAgIGNvbnRleHQuZmlsbFJlY3QodHJhY2tSZWN0LCBzY3JvbGxiYXIuZW5h
YmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IENvbG9yKDB4RkZFMEUwRTApKTsKKyAgICBjb250
ZXh0LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdo
dEdyYXkgOiBTaW1wbGVDb2xvciB7IDB4RkZFMEUwRTAgfSk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFy
VGhlbWVNb2NrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFy
JiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggOThjZGQ4YmVmZGJhMWJhNzgyYzAzZTZiMjUy
MWRjYTgwNzVmY2RhYi4uM2RmNDU1YjA2MzEyZWU1Y2Q2MWY3ZWQxYmI4OGM3Yzc1NzdjYjNkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE4MzcsOSAr
MTgzNywxMSBAQCBSZW5kZXJGcmFnbWVudGVkRmxvdyogUmVuZGVyT2JqZWN0Ojpsb2NhdGVFbmNs
b3NpbmdGcmFnbWVudGVkRmxvdygpIGNvbnN0CiB2b2lkIFJlbmRlck9iamVjdDo6Y2FsY3VsYXRl
Qm9yZGVyU3R5bGVDb2xvcihjb25zdCBCb3JkZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJveFNpZGUm
IHNpZGUsIENvbG9yJiBjb2xvcikKIHsKICAgICBBU1NFUlQoc3R5bGUgPT0gQm9yZGVyU3R5bGU6
Okluc2V0IHx8IHN0eWxlID09IEJvcmRlclN0eWxlOjpPdXRzZXQpOworCiAgICAgLy8gVGhpcyB2
YWx1ZXMgd2VyZSBkZXJpdmVkIGVtcGlyaWNhbGx5LgotICAgIGNvbnN0IFJHQkEzMiBiYXNlRGFy
a0NvbG9yID0gMHhGRjIwMjAyMDsKLSAgICBjb25zdCBSR0JBMzIgYmFzZUxpZ2h0Q29sb3IgPSAw
eEZGRUJFQkVCOworICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBiYXNlRGFya0NvbG9yIHsgMHhG
RjIwMjAyMCB9OworICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBiYXNlTGlnaHRDb2xvciB7IDB4
RkZFQkVCRUIgfTsKKwogICAgIGVudW0gT3BlcmF0aW9uIHsgRGFya2VuLCBMaWdodGVuIH07CiAK
ICAgICBPcGVyYXRpb24gb3BlcmF0aW9uID0gKHNpZGUgPT0gQlNUb3AgfHwgc2lkZSA9PSBCU0xl
ZnQpID09IChzdHlsZSA9PSBCb3JkZXJTdHlsZTo6SW5zZXQpID8gRGFya2VuIDogTGlnaHRlbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDBjMzViNGYxNzYx
MmQ0N2E2NjQ1OGQzZjM3MjY1NzFlYmFiZjlhZjcuLjYwOTdiNGM2YTNlOWViZDMxOTI5MjZmZTM5
MzliOGJiNWQ3ZmVlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNw
cApAQCAtMTI4NSw3MyArMTI4NSw3MiBAQCBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3Io
Q1NTVmFsdWVJRCBjc3NWYWx1ZUlkLCBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aQogewogICAg
IHN3aXRjaCAoY3NzVmFsdWVJZCkgewogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMaW5rOgotICAg
ICAgICByZXR1cm4gb3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yOjpPcHRpb25zOjpGb3JWaXNp
dGVkTGluaykgPyAweEZGNTUxQThCIDogMHhGRjAwMDBFRTsKKyAgICAgICAgcmV0dXJuIG9wdGlv
bnMuY29udGFpbnMoU3R5bGVDb2xvcjo6T3B0aW9uczo6Rm9yVmlzaXRlZExpbmspID8gU2ltcGxl
Q29sb3IgeyAweEZGNTUxQThCIH0gOiBTaW1wbGVDb2xvciB7IDB4RkYwMDAwRUUgfTsKICAgICBj
YXNlIENTU1ZhbHVlV2Via2l0QWN0aXZlbGluazoKLSAgICAgICAgcmV0dXJuIDB4RkZGRjAwMDA7
CisgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZGRjAwMDAgfTsKICAgICBjYXNlIENT
U1ZhbHVlQWN0aXZlYm9yZGVyOgotICAgICAgICByZXR1cm4gMHhGRkZGRkZGRjsKKyAgICAgICAg
cmV0dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlQWN0aXZlYnV0dG9udGV4dDoK
LSAgICAgICAgcmV0dXJuIDB4RkYwMDAwMDA7CisgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7
CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWNhcHRpb246Ci0gICAgICAgIHJldHVybiAweEZGQ0ND
Q0NDOworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGQ0NDQ0NDIH07CiAgICAgY2Fz
ZSBDU1NWYWx1ZUFwcHdvcmtzcGFjZToKLSAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAg
ICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZUJhY2tncm91bmQ6Ci0g
ICAgICAgIHJldHVybiAweEZGNjM2M0NFOworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAw
eEZGNjM2M0NFIH07CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbmZhY2U6Ci0gICAgICAgIHJldHVy
biAweEZGQzBDMEMwOworICAgICAgICByZXR1cm4gQ29sb3I6OmxpZ2h0R3JheTsKICAgICBjYXNl
IENTU1ZhbHVlQnV0dG9uaGlnaGxpZ2h0OgotICAgICAgICByZXR1cm4gMHhGRkRERERERDsKKyAg
ICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkRERERERCB9OwogICAgIGNhc2UgQ1NTVmFs
dWVCdXR0b25zaGFkb3c6Ci0gICAgICAgIHJldHVybiAweEZGODg4ODg4OworICAgICAgICByZXR1
cm4gU2ltcGxlQ29sb3IgeyAweEZGODg4ODg4IH07CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbnRl
eHQ6Ci0gICAgICAgIHJldHVybiAweEZGMDAwMDAwOworICAgICAgICByZXR1cm4gQ29sb3I6OmJs
YWNrOwogICAgIGNhc2UgQ1NTVmFsdWVDYXB0aW9udGV4dDoKLSAgICAgICAgcmV0dXJuIDB4RkYw
MDAwMDA7CisgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZUdy
YXl0ZXh0OgotICAgICAgICByZXR1cm4gMHhGRjgwODA4MDsKKyAgICAgICAgcmV0dXJuIFNpbXBs
ZUNvbG9yIHsgMHhGRjgwODA4MCB9OwogICAgIGNhc2UgQ1NTVmFsdWVIaWdobGlnaHQ6Ci0gICAg
ICAgIHJldHVybiAweEZGQjVENUZGOworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZG
QjVENUZGIH07CiAgICAgY2FzZSBDU1NWYWx1ZUhpZ2hsaWdodHRleHQ6Ci0gICAgICAgIHJldHVy
biAweEZGMDAwMDAwOworICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NT
VmFsdWVJbmFjdGl2ZWJvcmRlcjoKLSAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAgICAg
IHJldHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZUluYWN0aXZlY2FwdGlvbjoK
LSAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAgICAgIHJldHVybiBDb2xvcjo6d2hpdGU7
CiAgICAgY2FzZSBDU1NWYWx1ZUluYWN0aXZlY2FwdGlvbnRleHQ6Ci0gICAgICAgIHJldHVybiAw
eEZGN0Y3RjdGOworICAgICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGN0Y3RjdGIH07CiAg
ICAgY2FzZSBDU1NWYWx1ZUluZm9iYWNrZ3JvdW5kOgotICAgICAgICByZXR1cm4gMHhGRkZCRkND
NTsKKyAgICAgICAgcmV0dXJuIFNpbXBsZUNvbG9yIHsgMHhGRkZCRkNDNSB9OwogICAgIGNhc2Ug
Q1NTVmFsdWVJbmZvdGV4dDoKLSAgICAgICAgcmV0dXJuIDB4RkYwMDAwMDA7CisgICAgICAgIHJl
dHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZU1lbnU6Ci0gICAgICAgIHJldHVy
biAweEZGQzBDMEMwOworICAgICAgICByZXR1cm4gQ29sb3I6OmxpZ2h0R3JheTsKICAgICBjYXNl
IENTU1ZhbHVlTWVudXRleHQ6Ci0gICAgICAgIHJldHVybiAweEZGMDAwMDAwOworICAgICAgICBy
ZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVTY3JvbGxiYXI6Ci0gICAgICAg
IHJldHVybiAweEZGRkZGRkZGOworICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogICAgIGNh
c2UgQ1NTVmFsdWVUZXh0OgotICAgICAgICByZXR1cm4gMHhGRjAwMDAwMDsKKyAgICAgICAgcmV0
dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkZGFya3NoYWRvdzoKLSAg
ICAgICAgcmV0dXJuIDB4RkY2NjY2NjY7CisgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4
RkY2NjY2NjYgfTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkZmFjZToKLSAgICAgICAgcmV0dXJu
IDB4RkZDMEMwQzA7CisgICAgICAgIHJldHVybiBDb2xvcjo6bGlnaHRHcmF5OwogICAgIGNhc2Ug
Q1NTVmFsdWVUaHJlZWRoaWdobGlnaHQ6Ci0gICAgICAgIHJldHVybiAweEZGREREREREOworICAg
ICAgICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGREREREREIH07CiAgICAgY2FzZSBDU1NWYWx1
ZVRocmVlZGxpZ2h0c2hhZG93OgotICAgICAgICByZXR1cm4gMHhGRkMwQzBDMDsKKyAgICAgICAg
cmV0dXJuIENvbG9yOjpsaWdodEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZHNoYWRvdzoK
LSAgICAgICAgcmV0dXJuIDB4RkY4ODg4ODg7CisgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7
IDB4RkY4ODg4ODggfTsKICAgICBjYXNlIENTU1ZhbHVlV2luZG93OgotICAgICAgICByZXR1cm4g
MHhGRkZGRkZGRjsKKyAgICAgICAgcmV0dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1Zh
bHVlV2luZG93ZnJhbWU6Ci0gICAgICAgIHJldHVybiAweEZGQ0NDQ0NDOworICAgICAgICByZXR1
cm4gU2ltcGxlQ29sb3IgeyAweEZGQ0NDQ0NDIH07CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvd3Rl
eHQ6Ci0gICAgICAgIHJldHVybiAweEZGMDAwMDAwOworICAgICAgICByZXR1cm4gQ29sb3I6OmJs
YWNrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KLSAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWU6OmFjdGl2
ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4g
b3B0aW9ucykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQppbmRleCBjZDhhZjZlMmE3ODVmMDE2OTI0N2IwZDFmMmNhYTc3YzkzYzYxNDBmLi4yMzlmZTIw
NDgyOTg2ZTkzNzYwZjA0OTYzOGU4YmIyZmYyYTNjN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC04MTksMTEgKzgxOSwxMSBAQCBDb2xvciBSZW5k
ZXJUaGVtZU1hYzo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlELCBPcHRpb25TZXQ8
U3R5bGVDb2xvcjo6TwogICAgICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkZmFjZToKICAgICAgICAg
ICAgIC8vIFdlIHNlbGVjdGVkIHRoaXMgdmFsdWUgaW5zdGVhZCBvZiBbTlNDb2xvciBjb250cm9s
Q29sb3JdIHRvIGF2b2lkIHdlYnNpdGUgaW5jb21wYXRpYmlsaXRpZXMuCiAgICAgICAgICAgICAv
LyBXZSBtYXkgd2FudCB0byBjb25zaWRlciBjaGFuZ2luZyB0byBbTlNDb2xvciBjb250cm9sQ29s
b3JdIHNvbWUgZGF5LgotICAgICAgICAgICAgcmV0dXJuIDB4RkZDMEMwQzA7CisgICAgICAgICAg
ICByZXR1cm4gU2ltcGxlQ29sb3IgeyAweEZGQzBDMEMwIH07CiAKICAgICAgICAgY2FzZSBDU1NW
YWx1ZUluZm9iYWNrZ3JvdW5kOgogICAgICAgICAgICAgLy8gTm8gY29ycmVzcG9uZGluZyBOU0Nv
bG9yIGZvciB0aGlzIHNvIHdlIHVzZSBhIGhhcmQgY29kZWQgdmFsdWUuCi0gICAgICAgICAgICBy
ZXR1cm4gMHhGRkZCRkNDNTsKKyAgICAgICAgICAgIHJldHVybiBTaW1wbGVDb2xvciB7IDB4RkZG
QkZDQzUgfTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlTWVudToKICAgICAgICAgICAgIHJldHVy
biBtZW51QmFja2dyb3VuZENvbG9yKCk7CkBAIC04MzIsMzAgKzgzMiwzMCBAQCBDb2xvciBSZW5k
ZXJUaGVtZU1hYzo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlELCBPcHRpb25TZXQ8
U3R5bGVDb2xvcjo6TwogICAgICAgICBjYXNlIENTU1ZhbHVlQWN0aXZlYm9yZGVyOgogICAgICAg
ICAgICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBhcHBlYXJhbmNlIHBy
ZWZlcmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAgICAgICAgICBpZiAo
bG9jYWxBcHBlYXJhbmNlLnVzaW5nRGFya0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gQ29sb3IoMHhGRjFBQTlGRiwgQ29sb3I6OlNlbWFudGljKTsKLSAgICAgICAgICAgIHJl
dHVybiBDb2xvcigweEZGMDA2N0Y0LCBDb2xvcjo6U2VtYW50aWMpOworICAgICAgICAgICAgICAg
IHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHhGRjFBQTlGRiB9LCBDb2xvcjo6U2VtYW50aWMgfTsK
KyAgICAgICAgICAgIHJldHVybiB7IFNpbXBsZUNvbG9yIHsgMHhGRjAwNjdGNCB9LCBDb2xvcjo6
U2VtYW50aWMgfTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1Db250cm9sQWNj
ZW50OgogICAgICAgICAgICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBh
cHBlYXJhbmNlIHByZWZlcmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAg
ICAgICAgICAvLyBTYW1lIGNvbG9yIGluIGxpZ2h0IGFuZCBkYXJrIGFwcGVhcmFuY2VzLgotICAg
ICAgICAgICAgcmV0dXJuIENvbG9yKDB4RkYwMDdBRkYsIENvbG9yOjpTZW1hbnRpYyk7CisgICAg
ICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4RkYwMDdBRkYgfSwgQ29sb3I6OlNlbWFu
dGljIH07CiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2VsZWN0ZWRDb250ZW50
QmFja2dyb3VuZDoKICAgICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBh
IHVzZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5n
LgogICAgICAgICAgICAgaWYgKGxvY2FsQXBwZWFyYW5jZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIENvbG9yKDB4RkYwMDU4RDAsIENvbG9yOjpTZW1hbnRp
Yyk7Ci0gICAgICAgICAgICByZXR1cm4gQ29sb3IoMHhGRjAwNjNFMSwgQ29sb3I6OlNlbWFudGlj
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4RkYwMDU4RDAgfSwg
Q29sb3I6OlNlbWFudGljIH07CisgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4
RkYwMDYzRTEgfSwgQ29sb3I6OlNlbWFudGljIH07CiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZUhp
Z2hsaWdodDoKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2VsZWN0ZWRUZXh0QmFj
a2dyb3VuZDoKICAgICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVz
ZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgog
ICAgICAgICAgICAgaWYgKGxvY2FsQXBwZWFyYW5jZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIENvbG9yKDB4Q0MzRjYzOEIsIENvbG9yOjpTZW1hbnRpYyk7
Ci0gICAgICAgICAgICByZXR1cm4gQ29sb3IoMHg5OTgwQkNGRSwgQ29sb3I6OlNlbWFudGljKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4Q0MzRjYzOEIgfSwgQ29s
b3I6OlNlbWFudGljIH07CisgICAgICAgICAgICByZXR1cm4geyBTaW1wbGVDb2xvciB7IDB4OTk4
MEJDRkUgfSwgQ29sb3I6OlNlbWFudGljIH07CiAKICNpZiAhSEFWRShPU19EQVJLX01PREVfU1VQ
UE9SVCkKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udGFpbmVyQm9yZGVyOgot
ICAgICAgICAgICAgcmV0dXJuIDB4RkZDNUM1QzU7CisgICAgICAgICAgICByZXR1cm4gU2ltcGxl
Q29sb3IgeyAweEZGQzVDNUM1IH07CiAjZW5kaWYKIAogICAgICAgICBjYXNlIENTU1ZhbHVlQXBw
bGVTeXN0ZW1FdmVuQWx0ZXJuYXRpbmdDb250ZW50QmFja2dyb3VuZDogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDU2ZDI3ZDAxYzZkMmIy
MTA4Y2NjYjczZDdiMjYwMDNlNjc1OWYxOGIuLmU1NGE4MzI0ODE1NDEyYmE4YzZmZGY0ZjgyMTkx
NDQ4NTFhZmI3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAKQEAgLTI0NCwxNyArMjQ0LDE3IEBAIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3Jp
dGVSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywKICAg
ICAgICAgICAgIC8vIERvIG5vdCBkdW1wIGludmFsaWQgb3IgdHJhbnNwYXJlbnQgYmFja2dyb3Vu
ZHMsIHNpbmNlIHRoYXQgaXMgdGhlIGRlZmF1bHQuCiAgICAgICAgICAgICBDb2xvciBiYWNrZ3Jv
dW5kQ29sb3IgPSBvLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKICAgICAgICAgICAgIGlmIChvLnBhcmVudCgpLT5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCkgIT0gYmFj
a2dyb3VuZENvbG9yLnJnYigpCi0gICAgICAgICAgICAgICAgJiYgYmFja2dyb3VuZENvbG9yLmlz
VmFsaWQoKSAmJiBiYWNrZ3JvdW5kQ29sb3IucmdiKCkpCisgICAgICAgICAgICAgICAgJiYgYmFj
a2dyb3VuZENvbG9yLnJnYigpICE9IENvbG9yOjp0cmFuc3BhcmVudCkKICAgICAgICAgICAgICAg
ICB0cyA8PCAiIFtiZ2NvbG9yPSIgPDwgYmFja2dyb3VuZENvbG9yLm5hbWVGb3JSZW5kZXJUcmVl
QXNUZXh0KCkgPDwgIl0iOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBDb2xvciB0ZXh0Rmls
bENvbG9yID0gby5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtp
dFRleHRGaWxsQ29sb3IpOwogICAgICAgICAgICAgaWYgKG8ucGFyZW50KCktPnN0eWxlKCkudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcikucmdiKCkg
IT0gdGV4dEZpbGxDb2xvci5yZ2IoKSAgCi0gICAgICAgICAgICAgICAgJiYgdGV4dEZpbGxDb2xv
ci5pc1ZhbGlkKCkgJiYgdGV4dEZpbGxDb2xvci5yZ2IoKSAhPSBjb2xvci5yZ2IoKSAmJiB0ZXh0
RmlsbENvbG9yLnJnYigpKQorICAgICAgICAgICAgICAgICYmIHRleHRGaWxsQ29sb3IucmdiKCkg
IT0gY29sb3IucmdiKCkgJiYgdGV4dEZpbGxDb2xvci5yZ2IoKSAhPSBDb2xvcjo6dHJhbnNwYXJl
bnQpCiAgICAgICAgICAgICAgICAgdHMgPDwgIiBbdGV4dEZpbGxDb2xvcj0iIDw8IHRleHRGaWxs
Q29sb3IubmFtZUZvclJlbmRlclRyZWVBc1RleHQoKSA8PCAiXSI7CiAKICAgICAgICAgICAgIENv
bG9yIHRleHRTdHJva2VDb2xvciA9IG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IpOwogICAgICAgICAgICAgaWYgKG8ucGFyZW50
KCktPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZUNvbG9yKS5yZ2IoKSAhPSB0ZXh0U3Ryb2tlQ29sb3IucmdiKCkKLSAgICAgICAgICAgICAg
ICAmJiB0ZXh0U3Ryb2tlQ29sb3IuaXNWYWxpZCgpICYmIHRleHRTdHJva2VDb2xvci5yZ2IoKSAh
PSBjb2xvci5yZ2IoKSAmJiB0ZXh0U3Ryb2tlQ29sb3IucmdiKCkpCisgICAgICAgICAgICAgICAg
JiYgdGV4dFN0cm9rZUNvbG9yLnJnYigpICE9IGNvbG9yLnJnYigpICYmIHRleHRTdHJva2VDb2xv
ci5yZ2IoKSAhPSBDb2xvcjo6dHJhbnNwYXJlbnQpCiAgICAgICAgICAgICAgICAgdHMgPDwgIiBb
dGV4dFN0cm9rZUNvbG9yPSIgPDwgdGV4dFN0cm9rZUNvbG9yLm5hbWVGb3JSZW5kZXJUcmVlQXNU
ZXh0KCkgPDwgIl0iOwogCiAgICAgICAgICAgICBpZiAoby5wYXJlbnQoKS0+c3R5bGUoKS50ZXh0
U3Ryb2tlV2lkdGgoKSAhPSBvLnN0eWxlKCkudGV4dFN0cm9rZVdpZHRoKCkgJiYgby5zdHlsZSgp
LnRleHRTdHJva2VXaWR0aCgpID4gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDg4MGQxOGNjMmU4MTQ0YTY1YzNiNDE1ODZjODA2MjFm
ZTkxNjFmNjYuLjFjMDBiZGE1M2Y1YjZiNDM0ZWE3MTk3OWY0ZTYzMjEzODFkYTU3MmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTQ4
OSw4ICsxNDg5LDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDb2xvcj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICB1aW50MzJfdCB2YWx1ZSA9IGNvbG9yLnJnYigpLnZhbHVlKCk7CisKICAgICBlbmNvZGVy
IDw8IHRydWU7Ci0gICAgZW5jb2RlciA8PCBjb2xvci5yZ2IoKTsKKyAgICBlbmNvZGVyIDw8IHZh
bHVlOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8Q29sb3I+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgQ29sb3ImIGNvbG9yKQpAQCAtMTUyOCwxMSArMTUzMCwxMSBAQCBib29sIEFyZ3VtZW50
Q29kZXI8Q29sb3I+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ29sb3ImIGNvbG9yKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBSR0JBMzIgcmdiYTsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJnYmEpKQorICAgIHVpbnQzMl90IHZhbHVlOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUodmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb2xvciA9IENv
bG9yKHJnYmEpOworICAgIGNvbG9yID0gU2ltcGxlQ29sb3IgeyB2YWx1ZSB9OwogICAgIHJldHVy
biB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggZTgxODFhODhlMWZmYjg0ZTMxYmExZTQ3YTljZmM0YjM3NjkwNjQ3My4uYWU3MjA5
OGUxZjgzMmQ0MmE0YWMwZmE4MmE2MjljYzQzODE1YTRmNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAyLTAx
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFJHQkEz
MiB0eXBlZGVmIHdpdGggYSBjbGFzcyB0byBpbXByb3ZlIHR5cGUgc2FmZXR5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY4NjIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3QubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKTogVXNlIHRoZSBDb2xvciBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIENvbG9yOjpjcmVhdGVV
bmNoZWNrZWQuCisKIDIwMjAtMDEtMzAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBhbm90aGVyIHNwZWN1bGF0aXZlIHRlc3QgZml4IGFm
dGVyIHIyNTUwNDEKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUERGU25hcHNob3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1BERlNuYXBzaG90Lm1tCmluZGV4IDEyZjVmZjU3ZTQxYzUwNDMwNGNjZjU2NTNmZGZlMDlj
YWY4ODkyMWQuLjFiYmZkY2E5ZTk2YzUzNWMyYWE5YmIzY2U1NDQ1ODAxN2U2NGJlODEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3Qu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZTbmFwc2hv
dC5tbQpAQCAtNjAsNyArNjAsNyBAQCBURVNUKFBERlNuYXBzaG90LCBGdWxsQ29udGVudCkKICAg
ICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVs0XSwgJ28nKTsKIAogICAgICAgICAvLyBUaGUg
ZW50aXJlIHBhZ2Ugc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEgcG9pbnQgaW4gdGhlIG1pZGRsZSB0
byBjaGVjay4KLSAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAw
KSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yKDAsIDI1NSwgMCkpOwog
CiAgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CiAgICAgfV07CkBAIC05MSw3ICs5MSw3
IEBAIFRFU1QoUERGU25hcHNob3QsIFN1YnJlZ2lvbnMpCiAgICAgICAgIEVYUEVDVF9FUShwYWdl
LT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7CiAKICAgICAgICAgLy8gVGhlIGVudGlyZSBwYWdlIHNo
b3VsZCBiZSBncmVlbi4gUGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCi0gICAg
ICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCgyMDAsIDE1MCkgPT0gQ29sb3I6OmNy
ZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29s
b3JBdFBvaW50KDIwMCwgMTUwKSA9PSBDb2xvcigwLCAyNTUsIDApKTsKIAogICAgICAgICBkaWRU
YWtlU25hcHNob3QgPSB0cnVlOwogICAgIH1dOwpAQCAtMTExLDEwICsxMTEsMTAgQEAgVEVTVChQ
REZTbmFwc2hvdCwgU3VicmVnaW9ucykKICAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxU
b1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgMTIwMCwgMTIwMCkpKTsKIAog
ICAgICAgICAvLyBBIHBpeGVsIHRoYXQgd2FzIGluIHRoZSB2aWV3IHNob3VsZCBiZSBncmVlbi4g
UGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCi0gICAgICAgIEVYUEVDVF9UUlVF
KHBhZ2UtPmNvbG9yQXRQb2ludCgyMDAsIDE1MCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgw
LCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDIwMCwg
MTUwKSA9PSBDb2xvcigwLCAyNTUsIDApKTsKIAogICAgICAgICAvLyBBIHBpeGVsIHRoYXQgd2Fz
IG91dHNpZGUgdGhlIHZpZXcgc2hvdWxkIGFsc28gYmUgZ3JlZW4gKHdlIGV4dGVuZCBiYWNrZ3Jv
dW5kIGNvbG9yIG91dCkuIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgotICAg
ICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoOTAwLCA3MDApID09IENvbG9yOjpj
cmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNv
bG9yQXRQb2ludCg5MDAsIDcwMCkgPT0gQ29sb3IoMCwgMjU1LCAwKSk7CiAKICAgICAgICAgZGlk
VGFrZVNuYXBzaG90ID0gdHJ1ZTsKICAgICB9XTsKQEAgLTE0MCwyMCArMTQwLDIwIEBAIFRFU1Qo
UERGU25hcHNob3QsIE92ZXIyMDBJbmNoZXMpCiAgICAgICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50
LT5wYWdlKDApOwogICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CiAgICAgICAgIEVY
UEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAs
IDAsIDgwMCwgMTQ0MDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2lu
dCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcigwLCAy
NTUsIDApKTsKICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDV1KTsK
IAogICAgICAgICBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMSk7CiAgICAgICAgIEVYUEVDVF9ORShw
YWdlLCBudWxscHRyKTsKICAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFn
ZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKLSAgICAgICAgRVhQ
RUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5j
aGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9p
bnQoNDAwLCAzMDApID09IENvbG9yKDAsIDI1NSwgMCkpOwogCiAgICAgICAgIEVYUEVDVF9FUShw
YWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7CiAKICAgICAgICAgcGFnZSA9IGRvY3VtZW50LT5w
YWdlKDIpOwogICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CiAgICAgICAgIEVYUEVD
VF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAs
IDgwMCwgNjAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAw
LCAzMDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3IoMCwgMjU1LCAw
KSk7CiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7CiAKICAg
ICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKQEAgLTE3OCw3ICsxNzgsNyBAQCBURVNUKFBE
RlNuYXBzaG90LCBMaW5rcykKICAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOwogCiAg
ICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1Jl
Y3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNv
bG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgyNTUsIDI1NSwg
MjU1KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkg
PT0gQ29sb3IoMjU1LCAyNTUsIDI1NSkpOwogCiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFy
YWN0ZXJDb3VudCgpLCA4dSk7CiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMF0sICdD
Jyk7Cg==
</data>
<flag name="review"
          id="405126"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>