<?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>159498</bug_id>
          
          <creation_ts>2016-07-06 16:46:36 -0700</creation_ts>
          <short_desc>Email from June 1st containing text &apos;Today @ 7:10PM&apos; is linkified, but shouldn&apos;t be</short_desc>
          <delta_ts>2016-07-07 01:15:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1208436</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-07-06 16:46:36 -0700</bug_when>
    <thetext>Email from June 1st containing text &apos;Today @ 7:10PM&apos; is linkified, but shouldn&apos;t be</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208437</commentid>
    <comment_count>1</comment_count>
      <attachid>282959</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-07-06 16:47:04 -0700</bug_when>
    <thetext>Created attachment 282959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208438</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-06 16:48:25 -0700</bug_when>
    <thetext>Attachment 282959 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1632:  Declaration has space between type name and * in NSCachedURLResponse *WebFrameLoaderClient  [whitespace/declaration] [3]
ERROR: Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1641:  Declaration has space between type name and * in NSDictionary *WebFrameLoaderClient  [whitespace/declaration] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/DataDetection.mm:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208454</commentid>
    <comment_count>3</comment_count>
      <attachid>282959</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-07-06 17:00:24 -0700</bug_when>
    <thetext>Comment on attachment 282959
Patch

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

&gt; Source/WebCore/editing/cocoa/DataDetection.mm:522
&gt; +    NSDate *referenceDate = [context objectForKey:@&quot;ReferenceDate&quot;] ?: [NSDate date];

Is this key exposed anywhere?

&gt; Source/WebKit2/Shared/LoadParameters.h:50
&gt; +#if PLATFORM(COCOA)
&gt; +    void platformEncode(IPC::ArgumentEncoder&amp;) const;
&gt; +    static bool platformDecode(IPC::ArgumentDecoder&amp;, LoadParameters&amp;);
&gt; +#endif

These should not be #ifdef. Other platforms should have empty implementations.

&gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:101
&gt; +#if PLATFORM(COCOA)

This doesn&apos;t need to be PLATFORM(COCOA). The whole file is cocoa only.

&gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:106
&gt; +#if PLATFORM(COCOA)
&gt; +    m_delegateMethods.dataDetectionContextForWebView = [delegate respondsToSelector:@selector(_dataDetectionContextForWebView:)];
&gt; +#endif

This doesn&apos;t need to be PLATFORM(COCOA). The whole file is cocoa only.

&gt; Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:447
&gt; +#if PLATFORM(COCOA)

This doesn&apos;t need to be PLATFORM(COCOA). The whole file is cocoa only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208463</commentid>
    <comment_count>4</comment_count>
      <attachid>282968</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-07-06 17:35:29 -0700</bug_when>
    <thetext>Created attachment 282968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208464</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-06 17:38:09 -0700</bug_when>
    <thetext>Attachment 282968 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1632:  Declaration has space between type name and * in NSCachedURLResponse *WebFrameLoaderClient  [whitespace/declaration] [3]
ERROR: Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1641:  Declaration has space between type name and * in NSDictionary *WebFrameLoaderClient  [whitespace/declaration] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/DataDetection.mm:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208467</commentid>
    <comment_count>6</comment_count>
      <attachid>282970</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-07-06 17:42:01 -0700</bug_when>
    <thetext>Created attachment 282970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208468</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-06 17:43:37 -0700</bug_when>
    <thetext>Attachment 282970 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1632:  Declaration has space between type name and * in NSCachedURLResponse *WebFrameLoaderClient  [whitespace/declaration] [3]
ERROR: Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1641:  Declaration has space between type name and * in NSDictionary *WebFrameLoaderClient  [whitespace/declaration] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/DataDetection.mm:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208473</commentid>
    <comment_count>8</comment_count>
      <attachid>282973</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-07-06 17:59:08 -0700</bug_when>
    <thetext>Created attachment 282973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208475</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-06 18:01:36 -0700</bug_when>
    <thetext>Attachment 282973 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1632:  Declaration has space between type name and * in NSCachedURLResponse *WebFrameLoaderClient  [whitespace/declaration] [3]
ERROR: Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1641:  Declaration has space between type name and * in NSDictionary *WebFrameLoaderClient  [whitespace/declaration] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/DataDetection.mm:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208480</commentid>
    <comment_count>10</comment_count>
      <attachid>282976</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-07-06 18:08:26 -0700</bug_when>
    <thetext>Created attachment 282976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208481</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-06 18:11:13 -0700</bug_when>
    <thetext>Attachment 282976 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1632:  Declaration has space between type name and * in NSCachedURLResponse *WebFrameLoaderClient  [whitespace/declaration] [3]
ERROR: Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1641:  Declaration has space between type name and * in NSDictionary *WebFrameLoaderClient  [whitespace/declaration] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/DataDetection.mm:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208482</commentid>
    <comment_count>12</comment_count>
      <attachid>282977</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-07-06 18:13:03 -0700</bug_when>
    <thetext>Created attachment 282977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208483</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-06 18:16:05 -0700</bug_when>
    <thetext>Attachment 282977 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1632:  Declaration has space between type name and * in NSCachedURLResponse *WebFrameLoaderClient  [whitespace/declaration] [3]
ERROR: Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1641:  Declaration has space between type name and * in NSDictionary *WebFrameLoaderClient  [whitespace/declaration] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/DataDetection.mm:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208485</commentid>
    <comment_count>14</comment_count>
      <attachid>282978</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-07-06 18:23:28 -0700</bug_when>
    <thetext>Created attachment 282978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208486</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-06 18:27:05 -0700</bug_when>
    <thetext>Attachment 282978 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1632:  Declaration has space between type name and * in NSCachedURLResponse *WebFrameLoaderClient  [whitespace/declaration] [3]
ERROR: Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1641:  Declaration has space between type name and * in NSDictionary *WebFrameLoaderClient  [whitespace/declaration] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/DataDetection.mm:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208508</commentid>
    <comment_count>16</comment_count>
      <attachid>282978</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-06 20:04:20 -0700</bug_when>
    <thetext>Comment on attachment 282978
Patch

Clearing flags on attachment: 282978

Committed r202889: &lt;http://trac.webkit.org/changeset/202889&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208509</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-06 20:04:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208537</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-06 22:11:39 -0700</bug_when>
    <thetext>May have caused a couple of API tests to fail on the bots:

FAIL WebKit2WillLoadTest.WKPageLoadHTMLString

/Volumes/Data/slave/elcapitan-release/build/Tools/TestWebKitAPI/Tests/WebKit2/WillLoad.cpp:122
Value of: MIMEType
  Actual: &quot;&quot;
Expected: expectedMIMEType
Which is: &quot;text/html&quot;

FAIL WebKit2WillLoadTest.WKPageLoadHTMLStringWithUserData

/Volumes/Data/slave/elcapitan-release/build/Tools/TestWebKitAPI/Tests/WebKit2/WillLoad.cpp:122
Value of: MIMEType
  Actual: &quot;&quot;
Expected: expectedMIMEType
Which is: &quot;text/html&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208542</commentid>
    <comment_count>19</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-07-06 22:36:02 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; May have caused a couple of API tests to fail on the bots:
&gt; 
&gt; FAIL WebKit2WillLoadTest.WKPageLoadHTMLString
&gt; 
&gt; /Volumes/Data/slave/elcapitan-release/build/Tools/TestWebKitAPI/Tests/
&gt; WebKit2/WillLoad.cpp:122
&gt; Value of: MIMEType
&gt;   Actual: &quot;&quot;
&gt; Expected: expectedMIMEType
&gt; Which is: &quot;text/html&quot;
&gt; 
&gt; FAIL WebKit2WillLoadTest.WKPageLoadHTMLStringWithUserData
&gt; 
&gt; /Volumes/Data/slave/elcapitan-release/build/Tools/TestWebKitAPI/Tests/
&gt; WebKit2/WillLoad.cpp:122
&gt; Value of: MIMEType
&gt;   Actual: &quot;&quot;
&gt; Expected: expectedMIMEType
&gt; Which is: &quot;text/html&quot;


Probably. I&apos;ll take a look!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208543</commentid>
    <comment_count>20</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-07-06 22:40:11 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; May have caused a couple of API tests to fail on the bots:
&gt; &gt; 
&gt; &gt; FAIL WebKit2WillLoadTest.WKPageLoadHTMLString
&gt; &gt; 
&gt; &gt; /Volumes/Data/slave/elcapitan-release/build/Tools/TestWebKitAPI/Tests/
&gt; &gt; WebKit2/WillLoad.cpp:122
&gt; &gt; Value of: MIMEType
&gt; &gt;   Actual: &quot;&quot;
&gt; &gt; Expected: expectedMIMEType
&gt; &gt; Which is: &quot;text/html&quot;
&gt; &gt; 
&gt; &gt; FAIL WebKit2WillLoadTest.WKPageLoadHTMLStringWithUserData
&gt; &gt; 
&gt; &gt; /Volumes/Data/slave/elcapitan-release/build/Tools/TestWebKitAPI/Tests/
&gt; &gt; WebKit2/WillLoad.cpp:122
&gt; &gt; Value of: MIMEType
&gt; &gt;   Actual: &quot;&quot;
&gt; &gt; Expected: expectedMIMEType
&gt; &gt; Which is: &quot;text/html&quot;
&gt; 
&gt; 
&gt; Probably. I&apos;ll take a look!

Yep! Stupid typo. Fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208545</commentid>
    <comment_count>21</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-07-06 22:42:18 -0700</bug_when>
    <thetext>Should be fixed in https://trac.webkit.org/changeset/202894</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208556</commentid>
    <comment_count>22</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-07-06 23:24:29 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Comment on attachment 282978 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 282978
&gt; 
&gt; Committed r202889: &lt;http://trac.webkit.org/changeset/202889&gt;

It broke the Apple Mac cmake build, cc-ing Alex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208567</commentid>
    <comment_count>23</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-07-07 01:15:06 -0700</bug_when>
    <thetext>fix landed in https://trac.webkit.org/changeset/202898</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282959</attachid>
            <date>2016-07-06 16:47:04 -0700</date>
            <delta_ts>2016-07-06 17:35:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159498-20160706164631.patch</filename>
            <type>text/plain</type>
            <size>64913</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYyMDU4ZWExYTkwMTky
NzU4MzFhNTcyMjJjZTRhNDY5NDRkZTJmNS4uNTM2MjVlZDhlNWViYTJkYTcwNzVlNDM0N2E3N2M4
N2UzNTM5OTg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA3LTA2ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEVtYWlsIGZyb20g
SnVuZSAxc3QgY29udGFpbmluZyB0ZXh0ICdUb2RheSBAIDc6MTBQTScgaXMgbGlua2lmaWVkLCBi
dXQgc2hvdWxkbid0IGJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTk0OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NzE5OTAzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyBBUEkgdGVzdDog
V2ViS2l0Mi5EYXRhRGV0ZWN0aW9uUmVmZXJlbmNlRGF0ZQorCisgICAgICAgICogZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0
aW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudElu
UmFuZ2UpOgorICAgICAgICBFeHRyYWN0IHRoZSByZWZlcmVuY2UgZGF0ZSBmcm9tIHRoZSBEYXRh
RGV0ZWN0b3JzIGNvbnRleHQgZGljdGlvbmFyeSBpZiBpdCBleGlzdHMsCisgICAgICAgIGFuZCBw
YXNzIGl0IGFsb25nIHRvIERhdGFEZXRlY3RvcnMuCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBs
ZXRlRm9yVGhpc0ZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgUGx1bWIgdGhlIERhdGFEZXRlY3RvcnMgY29udGV4dCBkaWN0aW9uYXJ5IHRocm91
Z2ggZnJvbSBXZWJQYWdlLgorCiAyMDE2LTA3LTA1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBEYXRhYmFzZSBwcm9jZXNzIGNyYXNoZXMgZGVsZXRpbmcgYSBj
b3JydXB0IFNRTGl0ZSBkYXRhYmFzZSBmaWxlIChudWxsIGRlcmVmKS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAw
ZGZmNTE4M2MzMDRjYWQ5ODMzNzlkNjhmNzVlYTcxM2Y5ZTdjOGM4Li40ZWFkZDhjN2ZmYjdlYzdj
MTRjNDMwOGQyM2E4ZDMxODk3MTE0ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIw
MTYtMDctMDYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgRW1haWwgZnJvbSBKdW5lIDFzdCBjb250YWluaW5nIHRleHQgJ1RvZGF5IEAgNzoxMFBNJyBp
cyBsaW5raWZpZWQsIGJ1dCBzaG91bGRuJ3QgYmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTQ5OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjY3
MTk5MDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvTG9hZFBhcmFtZXRlcnNDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjpwbGF0Zm9ybUVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6
OkxvYWRQYXJhbWV0ZXJzOjpwbGF0Zm9ybURlY29kZSk6CisgICAgICAgICogU2hhcmVkL0xvYWRQ
YXJhbWV0ZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjpl
bmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAgIEFkZCBhIHN0cnVj
dCB0aGF0IGtub3dzIGhvdyB0byBlbmNvZGUgYWxsIG9mIHRoZSBkaWZmZXJlbnQgcGFyYW1ldGVy
cworICAgICAgICB0byBhbGwgb2YgdGhlIExvYWQqIG1lc3NhZ2VzLCBpbmNsdWRpbmcgdGhlIHBs
YXRmb3JtLXNwZWNpZmljIERhdGFEZXRlY3RvcnMgcGFyYW1ldGVycy4KKworICAgICAgICAqIFNo
YXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL0FyZ3Vt
ZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjp0eXBlRnJvbU9iamVjdCk6CisgICAgICAg
IChJUEM6OmVuY29kZSk6CisgICAgICAgIChJUEM6OmRlY29kZSk6CisgICAgICAgIEFkZCBOU1VS
TCBjb2RlcnMgdGhhdCBkZWZlciB0byB0aGUgQ0ZVUkwgY29kZXJzLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6ZGF0YURl
dGVjdGlvbkNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJL
aXQ6OlVJRGVsZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OmRhdGFEZXRlY3Rpb25Db250ZXh0KToKKyAgICAgICAgQWRkIEFQSVVJQ2xp
ZW50IG1ldGhvZHMgdG8gcmV0cmlldmUgdGhlIERhdGFEZXRlY3RvcnMgY29udGV4dCBkaWN0aW9u
YXJ5LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMp
OgorICAgICAgICBBZGQgdGhlIERhdGFEZXRlY3RvcnMgY29udGV4dCBkaWN0aW9uYXJ5IHRvIHRo
ZSBnaXZlbiBMb2FkUGFyYW1ldGVycy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGF0YURldGVjdGlvbkNvbnRleHQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkYXRh
RGV0ZWN0aW9uQ29udGV4dCk6CisgICAgICAgIFN0b3JlIHRoZSBkYXRhRGV0ZWN0aW9uQ29udGV4
dCBvbiBXZWJQYWdlLCBhbmQgbWFrZSBpdCBhY2Nlc3NpYmxlIHRvIFdlYkNvcmUKKyAgICAgICAg
dmlhIHRoZSBGcmFtZUxvYWRlckNsaWVudCAoaXQgaXMgdXNlZCBpbiBGcmFtZUxvYWRlciB3aGVu
IHRoZSBsb2FkIGNvbXBsZXRlcykuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojps
b2FkSFRNTFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRQbGFp
blRleHRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNo
aXZlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFN0cmluZ0ltcGwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmxvYWRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRN
TFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRIVE1MU3RyaW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFBsYWluVGV4dFN0cmluZyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRXZWJBcmNoaXZlRGF0YSk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisgICAgICAgIEFkb3B0IExvYWRQYXJhbWV0ZXJzLCB0YWtpbmcgdGhpcyBvcHBvcnR1bml0eSB0
byByZWR1Y2UgdGhlIG51bWJlciBvZiB2ZXJ5IHNpbWlsYXIgbWVzc2FnZXMuCisgICAgICAgIFdl
IGNhbiB0YWtlIHRoaXMgZnVydGhlciAod2Ugc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGl0IGRvd24g
dG8ganVzdCBMb2FkUmVxdWVzdAorICAgICAgICBhbmQgTG9hZERhdGEpIGluIHRoZSBmdXR1cmUu
IFdoZW4gYW55IGxvYWQgb2NjdXJzLCBncmFiIHRoZSBjbGllbnQncyBEYXRhRGV0ZWN0b3JzZQor
ICAgICAgICBjb250ZXh0IGRpY3Rpb25hcnkgYW5kIHNlbmQgaXQgYWxvbmcgd2l0aCB0aGUgbG9h
ZCByZXF1ZXN0LCBzdG9yaW5nIGl0IGluIFdlYlBhZ2UuCisKIDIwMTYtMDctMDQgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDb29yZGluYXRl
ZCBHcmFwaGljc10gTW9kZXJuaXplIGFuZCBjbGVhbnVwIENvbXBvc2l0aW5nQ29vcmRpbmF0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmgKaW5kZXggOTQ5
ZTViZjdiMzk4ODg4NzcxMzZiZjdjZDMzZTg2MjZlZWIyM2M2MC4uNzc1OWQxOTljYTRlY2ZmMDUy
NDE5YmRiMzAzMmY4ZTNkN2RiY2ZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9EYXRhRGV0ZWN0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogT0JKQ19DTEFTUyBEREFjdGlv
bkNvbnRleHQ7CiBPQkpDX0NMQVNTIE5TQXJyYXk7CitPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Nyw3ICs1OCw3IEBAIHB1YmxpYzoKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxEREFjdGlv
bkNvbnRleHQ+IGRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1
bHQmLCBGbG9hdFJlY3QmIGRldGVjdGVkRGF0YUJvdW5kaW5nQm94LCBSZWZQdHI8UmFuZ2U+JiBk
ZXRlY3RlZERhdGFSYW5nZSk7CiAjZW5kaWYKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTlNB
cnJheSAqZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYgY29udGV4dFJhbmdlLCBE
YXRhRGV0ZWN0b3JUeXBlcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE5TQXJyYXkgKmRl
dGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURldGVj
dG9yVHlwZXMsIE5TRGljdGlvbmFyeSAqY29udGV4dCk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzRGF0YURldGVjdG9yTGluayhFbGVtZW50Jik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkYXRhRGV0ZWN0b3JJZGVudGlmaWVy
KEVsZW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0
YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlv
bi5tbQppbmRleCAxMzgzM2VlMTk5NjgyYzNiNTBjMTEwZDc2M2Y0NWYwODQ3NTk1MzViLi40YjM0
YzI2NGM1OTIyMDI3MWJjMWE1MmYzODFkZDEwNzc1OTA0OGJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC00MjksNyArNDI5LDcgQEAgc3Rh
dGljIGlubGluZSBDRkNvbXBhcmlzb25SZXN1bHQgcXVlcnlPZmZzZXRDb21wYXJlKEREUXVlcnlP
ZmZzZXQgbzEsIEREUXVlcnlPZmYKICAgICByZXR1cm4ga0NGQ29tcGFyZUVxdWFsVG87CiB9CiAK
LU5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5n
ZT4mIGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMgdHlwZXMpCitOU0FycmF5ICpEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFu
Z2UsIERhdGFEZXRlY3RvclR5cGVzIHR5cGVzLCBOU0RpY3Rpb25hcnkgKmNvbnRleHQpCiB7CiAg
ICAgUmV0YWluUHRyPEREU2Nhbm5lclJlZj4gc2Nhbm5lciA9IGFkb3B0Q0Yoc29mdExpbmtfRGF0
YURldGVjdG9yc0NvcmVfRERTY2FubmVyQ3JlYXRlKEREU2Nhbm5lclR5cGVTdGFuZGFyZCwgMCwg
bnVsbHB0cikpOwogICAgIFJldGFpblB0cjxERFNjYW5RdWVyeVJlZj4gc2NhblF1ZXJ5ID0gYWRv
cHRDRihzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNjYW5RdWVyeUNyZWF0ZShOVUxMKSk7
CkBAIC00NDMsMTUgKzQ0MywxNSBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250
ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogICAgIC8vIEZJ
WE1FOiB3ZSBzaG91bGQgYWRkIGEgdGltZW91dCB0byB0aGlzIGNhbGwgdG8gbWFrZSBzdXJlIGl0
IGRvZXNuJ3QgdGFrZSB0b28gbXVjaCB0aW1lLgogICAgIGlmICghc29mdExpbmtfRGF0YURldGVj
dG9yc0NvcmVfRERTY2FubmVyU2NhblF1ZXJ5KHNjYW5uZXIuZ2V0KCksIHNjYW5RdWVyeS5nZXQo
KSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gc2Nhbm5lclJlc3VsdHMgPSBhZG9wdENGKHNvZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3JlX0RE
U2Nhbm5lckNvcHlSZXN1bHRzV2l0aE9wdGlvbnMoc2Nhbm5lci5nZXQoKSwgZ2V0X0RhdGFEZXRl
Y3RvcnNDb3JlX0REU2Nhbm5lckNvcHlSZXN1bHRzT3B0aW9uc0ZvclBhc3NpdmVVc2UoKSB8IERE
U2Nhbm5lckNvcHlSZXN1bHRzT3B0aW9uc0NvYWxlc2NlU2lnbmF0dXJlcykpOwogICAgIGlmICgh
c2Nhbm5lclJlc3VsdHMpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisKICAgICBDRkluZGV4
IHJlc3VsdENvdW50ID0gQ0ZBcnJheUdldENvdW50KHNjYW5uZXJSZXN1bHRzLmdldCgpKTsKICAg
ICBpZiAoIXJlc3VsdENvdW50KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAorCiAgICAgVmVj
dG9yPFJldGFpblB0cjxERFJlc3VsdFJlZj4+IGFsbFJlc3VsdHM7CiAgICAgVmVjdG9yPFJldGFp
blB0cjxOU0luZGV4UGF0aD4+IGluZGV4UGF0aHM7CiAgICAgTlNJbnRlZ2VyIGN1cnJlbnRUb3BM
ZXZlbEluZGV4ID0gMDsKQEAgLTUxOSw3ICs1MTksNyBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9u
OjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFE
ZQogICAgIH0KICAgICAKICAgICBhdXRvIHR6ID0gYWRvcHRDRihDRlRpbWVab25lQ29weURlZmF1
bHQoKSk7Ci0gICAgTlNEYXRlICpyZWZlcmVuY2VEYXRlID0gW05TRGF0ZSBkYXRlXTsKKyAgICBO
U0RhdGUgKnJlZmVyZW5jZURhdGUgPSBbY29udGV4dCBvYmplY3RGb3JLZXk6QCJSZWZlcmVuY2VE
YXRlIl0gPzogW05TRGF0ZSBkYXRlXTsKICAgICBUZXh0KiBsYXN0VGV4dE5vZGVUb1VwZGF0ZSA9
IG51bGxwdHI7CiAgICAgU3RyaW5nIGxhc3ROb2RlQ29udGVudDsKICAgICBzaXplX3QgY29udGVu
dE9mZnNldCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA3MzBj
MGI4MDE5MjA5MTY3NzM4NWUwMmFjNWNlOWEyNGM2ODM4MDFmLi5iMzIyNzQyZDUyMDEwZDgxODNi
ZTdjMmZhOTJkMTUzOThjMmQ1Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTIzMTAsNyArMjMxMCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBs
ZXRlRm9yVGhpc0ZyYW1lKCkKICAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygp
LmRhdGFEZXRlY3RvclR5cGVzKCkgIT0gRGF0YURldGVjdG9yVHlwZU5vbmUgJiYgZG9jdW1lbnQp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50RWxlbWVudCA9IGRvY3Vt
ZW50LT5kb2N1bWVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiBkb2N1bWVudFJhbmdlID0gbWFrZVJhbmdlKGZpcnN0UG9zaXRpb25Jbk5vZGUoZG9j
dW1lbnRFbGVtZW50KSwgbGFzdFBvc2l0aW9uSW5Ob2RlKGRvY3VtZW50RWxlbWVudCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShkb2N1bWVudFJhbmdlLCBtX2ZyYW1lLnNl
dHRpbmdzKCkuZGF0YURldGVjdG9yVHlwZXMoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9mcmFtZS5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250
ZW50SW5SYW5nZShkb2N1bWVudFJhbmdlLCBtX2ZyYW1lLnNldHRpbmdzKCkuZGF0YURldGVjdG9y
VHlwZXMoKSwgbV9jbGllbnQuZGF0YURldGVjdGlvbkNvbnRleHQoKSkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2NsaWVudC5kaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24obV9mcmFt
ZS5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpKTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5OTJlNWM4NTIyNWM0ODJh
NzNlYzIxYzZlM2NhNTFiZjkzNDI5N2QxLi5kODZjNjQ4NzA4ODBmY2ExZDA1ZjM3MTliYmFjMWQ5
OWJkZWQzNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtNTQsNiArNTQsNyBAQCB0eXBlZGVmIHZvaWQqIFJlbW90ZUFYT2JqZWN0UmVmOwogI2lmIFBM
QVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU0FycmF5OwogT0JKQ19DTEFTUyBOU0NhY2hlZFVS
TFJlc3BvbnNlOworT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CiBPQkpDX0NMQVNTIE5TVmlldzsK
ICNlbmRpZgogCkBAIC0yOTIsNiArMjkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBBbGxvdyBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0byByZXRyaWV2ZSBhIEZyYW1lIHBh
cmVudCBpZiB0aGVyZSdzIG5vIFBsYXRmb3JtV2lkZ2V0LgogICAgICAgICB2aXJ0dWFsIFJlbW90
ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBjb25z
dCA9IDA7CisgICAgICAgIHZpcnR1YWwgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9uQ29udGV4
dCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNF
KENGTkVUV09SSykKICAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2Fj
aGVSZXNwb25zZSAtIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcy
NTc+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0xvYWRQYXJhbWV0
ZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvTG9hZFBhcmFtZXRlcnND
b2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYWRlMDFkMDFlZTJhZWY0NTQ0OTBiOGM1ZjkyNjY2MjlmZmM3
Y2MwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0xvYWRQ
YXJhbWV0ZXJzQ29jb2EubW0KQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJMb2FkUGFyYW1ldGVycy5oIgorCisjaWYgUExBVEZPUk0o
Q09DT0EpCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyc01hYy5oIgorI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBMb2FkUGFy
YW1ldGVyczo6cGxhdGZvcm1FbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGF0YURldGVjdGlvbkNvbnRleHQuZ2V0
KCkpOworfQorCitib29sIExvYWRQYXJhbWV0ZXJzOjpwbGF0Zm9ybURlY29kZShJUEM6OkFyZ3Vt
ZW50RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCit7CisgICAgaWYgKCFJ
UEM6OmRlY29kZShkZWNvZGVyLCBkYXRhLmRhdGFEZXRlY3Rpb25Db250ZXh0KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Mb2FkUGFy
YW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU4Y2I1MTVkYzEzMTQwM2M4Zjc0OTI0NTg4MmY2NWUyNWYxODNjMzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCkBA
IC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTG9hZFBhcmFtZXRlcnMuaCIKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQ
Qzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbmF2
aWdhdGlvbklEOworICAgIGVuY29kZXIgPDwgcmVxdWVzdDsKKyAgICBlbmNvZGVyIDw8IHNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7CisgICAgZW5jb2RlciA8PCBkYXRhOworICAgIGVuY29kZXIgPDwg
c3RyaW5nOworICAgIGVuY29kZXIgPDwgTUlNRVR5cGU7CisgICAgZW5jb2RlciA8PCBlbmNvZGlu
Z05hbWU7CisgICAgZW5jb2RlciA8PCBiYXNlVVJMU3RyaW5nOworICAgIGVuY29kZXIgPDwgdW5y
ZWFjaGFibGVVUkxTdHJpbmc7CisgICAgZW5jb2RlciA8PCBwcm92aXNpb25hbExvYWRFcnJvclVS
TFN0cmluZzsKKyAgICBlbmNvZGVyIDw8IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7Cisg
ICAgZW5jb2RlciA8PCB1c2VyRGF0YTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHBsYXRm
b3JtRW5jb2RlKGVuY29kZXIpOworI2VuZGlmCit9CisKK2Jvb2wgTG9hZFBhcmFtZXRlcnM6OmRl
Y29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEp
Cit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm5hdmlnYXRpb25JRCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5yZXF1ZXN0KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnNh
bmRib3hFeHRlbnNpb25IYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRhdGEuZGF0YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zdHJpbmcpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuTUlNRVR5cGUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuZW5jb2RpbmdOYW1lKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmJh
c2VVUkxTdHJpbmcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRhdGEudW5yZWFjaGFibGVVUkxTdHJpbmcpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxT
dHJpbmcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS51c2VyRGF0YSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmICghcGxhdGZvcm1EZWNv
ZGUoZGVjb2RlciwgZGF0YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTG9hZFBhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTNiYjVkOTc0ZmJlMjBlN2QxYjUxOTUz
ODdlYWY3MmM2ZjM2OTgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0xvYWRQYXJhbWV0ZXJzLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
TG9hZFBhcmFtZXRlcnNfaAorI2RlZmluZSBMb2FkUGFyYW1ldGVyc19oCisKKyNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2luY2x1ZGUg
IlVzZXJEYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKworT0JK
Q19DTEFTUyBOU0RpY3Rpb25hcnk7CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgQXJndW1lbnRE
ZWNvZGVyOworY2xhc3MgQXJndW1lbnRFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RydWN0IExvYWRQYXJhbWV0ZXJzIHsKKyAgICB2b2lkIGVuY29kZShJUEM6OkFyZ3VtZW50
RW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkFyZ3VtZW50RGVj
b2RlciYsIExvYWRQYXJhbWV0ZXJzJik7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lk
IHBsYXRmb3JtRW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGlj
IGJvb2wgcGxhdGZvcm1EZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBMb2FkUGFyYW1ldGVy
cyYpOworI2VuZGlmCisKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQ7CisKKyAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKKworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwor
ICAgIFN0cmluZyBzdHJpbmc7CisgICAgU3RyaW5nIE1JTUVUeXBlOworICAgIFN0cmluZyBlbmNv
ZGluZ05hbWU7CisKKyAgICBTdHJpbmcgYmFzZVVSTFN0cmluZzsKKyAgICBTdHJpbmcgdW5yZWFj
aGFibGVVUkxTdHJpbmc7CisgICAgU3RyaW5nIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5n
OworCisgICAgdWludDY0X3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBVc2Vy
RGF0YSB1c2VyRGF0YTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxOU0Rp
Y3Rpb25hcnk+IGRhdGFEZXRlY3Rpb25Db250ZXh0OworI2VuZGlmCit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIExvYWRQYXJhbWV0ZXJzX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMuaAppbmRleCA0ZTJkYTc2MTkzMTUzZWQ4
ZDgwOWQxODdlMDUyMzE1YzliNzFmN2I0Li5jZWE1ZjAxZDg4YTQ3M2FkNjA2ZDQ0NjEyODQ3MTkx
Y2NkNjJkZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50
Q29kZXJzTWFjLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVy
c01hYy5oCkBAIC0zNyw2ICszNyw3IEBAIE9CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OwogT0JKQ19D
TEFTUyBOU0ZvbnQ7CiBPQkpDX0NMQVNTIE5TTnVtYmVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsK
K09CSkNfQ0xBU1MgTlNVUkw7CiAKIG5hbWVzcGFjZSBJUEMgewogCkBAIC04Nyw2ICs4OCwxMCBA
QCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBSZXRhaW5QdHI8TlNEYXRlPiYpOwogdm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgTlNEYXRhICopOwogYm9vbCBkZWNvZGUoQXJndW1l
bnREZWNvZGVyJiwgUmV0YWluUHRyPE5TRGF0YT4mKTsKIAorLy8gTlNVUkwKK3ZvaWQgZW5jb2Rl
KEFyZ3VtZW50RW5jb2RlciYsIE5TVVJMICopOworYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVy
JiwgUmV0YWluUHRyPE5TVVJMPiYpOworCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogI2VuZGlmIC8v
IEFyZ3VtZW50Q29kZXJzTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3Vt
ZW50Q29kZXJzTWFjLm1tCmluZGV4IDY0MGU3ZWRkMzQ0MTM5ZGIyMTlhZDFjMzEwNzMwY2ZhMzNm
ZTk5ZTEuLjI1NThiNDE4MzNlNjU0MGE0ZTNmMWJjMTRmNjBiZGI4YzI5MGMyZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5tbQpAQCAtNTUsNiAr
NTUsNyBAQCBlbnVtIE5TVHlwZSB7CiAgICAgTlNTdHJpbmdUeXBlLAogICAgIE5TRGF0ZVR5cGUs
CiAgICAgTlNEYXRhVHlwZSwKKyAgICBOU1VSTFR5cGUsCiAgICAgVW5rbm93biwKIH07CiAKQEAg
LTg0LDYgKzg1LDggQEAgc3RhdGljIE5TVHlwZSB0eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCiAg
ICAgICAgIHJldHVybiBOU0RhdGVUeXBlOwogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6
W05TRGF0YSBjbGFzc11dKQogICAgICAgICByZXR1cm4gTlNEYXRhVHlwZTsKKyAgICBpZiAoW29i
amVjdCBpc0tpbmRPZkNsYXNzOltOU1VSTCBjbGFzc11dKQorICAgICAgICByZXR1cm4gTlNVUkxU
eXBlOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFVua25vd247CkBA
IC0xMjYsNiArMTI5LDkgQEAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBp
ZCBvYmplY3QpCiAgICAgY2FzZSBOU0RhdGFUeXBlOgogICAgICAgICBlbmNvZGUoZW5jb2Rlciwg
c3RhdGljX2Nhc3Q8TlNEYXRhICo+KG9iamVjdCkpOwogICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBOU1VSTFR5cGU6CisgICAgICAgIGVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxOU1VSTCAq
PihvYmplY3QpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVW5rbm93bjoKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtMjA3LDYgKzIxMywxMyBAQCBib29sIGRlY29kZShBcmd1bWVudERl
Y29kZXImIGRlY29kZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsdCkKICAgICAgICAgcmVzdWx0ID0g
ZGF0YTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIGNhc2UgTlNVUkxUeXBlOiB7
CisgICAgICAgIFJldGFpblB0cjxOU1VSTD4gVVJMOworICAgICAgICBpZiAoIWRlY29kZShkZWNv
ZGVyLCBVUkwpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXN1bHQgPSBV
Ukw7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICBjYXNlIFVua25vd246CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MDUs
NCArNTE4LDE5IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmV0YWlu
UHRyPE5TRGF0YT4mIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBOU1VSTCAqVVJMKQoreworICAgIGVuY29kZShlbmNv
ZGVyLCAoQ0ZVUkxSZWYpVVJMKTsKK30KKworYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBk
ZWNvZGVyLCBSZXRhaW5QdHI8TlNVUkw+JiByZXN1bHQpCit7CisgICAgUmV0YWluUHRyPENGVVJM
UmVmPiBVUkw7CisgICAgaWYgKCFkZWNvZGUoZGVjb2RlciwgVVJMKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmVzdWx0ID0gYWRvcHROUygoTlNVUkwgKilVUkwubGVha1JlZigpKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggNmE4ZmFjZGY2OThmMGU0NjRiMGZh
Yzg4NzBlNzgyMDRkNmYzODY3ZC4uMTFiYjQyMTFkMDMyOWE2NDRjOTNkOTFjZmE3OGMyZmJhMmZh
NDhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAt
MTY0LDYgKzE2NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxlVGFw
QXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIHsgfQogICAgIHZpcnR1YWwgVUlWaWV3
Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCkgeyByZXR1cm4gbnVsbHB0cjsg
fQogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBOU0RpY3Rpb25hcnkg
KmRhdGFEZXRlY3Rpb25Db250ZXh0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbihXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIEFQSTo6T2JqZWN0KikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5oCmluZGV4IDA4M2MxZjkzNjMzYjgzM2FlZjlkYzM1ZjNmMmM3YWE3ZDBiYmQ5
ZTQuLjE5OWNlY2RlODc4ZDk1NTA1ZDUwYzVhOWZhMmM2MzgyZWNmODc2NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtOTcsNiArOTcsOSBAQCBw
cml2YXRlOgogICAgICAgICBSZXRhaW5QdHI8TlNBcnJheT4gYWN0aW9uc0ZvckVsZW1lbnQoX1dL
QWN0aXZhdGVkRWxlbWVudEluZm8gKiwgUmV0YWluUHRyPE5TQXJyYXk+IGRlZmF1bHRBY3Rpb25z
KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWROb3RIYW5kbGVUYXBBc0NsaWNrKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CiAgICAgICAgIFVJVmlld0NvbnRyb2xsZXIgKnBy
ZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpIG92ZXJyaWRlOworI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0
aW9uQ29udGV4dCgpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgICAgIHZvaWQgaW1hZ2VPck1lZGlh
RG9jdW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAK
QEAgLTEyOSw2ICsxMzIsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdlYlZpZXdBY3Rpb25z
Rm9yRWxlbWVudERlZmF1bHRBY3Rpb25zIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkTm90
SGFuZGxlVGFwQXNDbGlja0F0UG9pbnQgOiAxOwogICAgICAgICBib29sIHByZXNlbnRpbmdWaWV3
Q29udHJvbGxlckZvcldlYlZpZXcgOiAxOworICAgICAgICBib29sIGRhdGFEZXRlY3Rpb25Db250
ZXh0Rm9yV2ViVmlldyA6IDE7CiAjZW5kaWYKICAgICAgICAgYm9vbCB3ZWJWaWV3SW1hZ2VPck1l
ZGlhRG9jdW1lbnRTaXplQ2hhbmdlZCA6IDE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggMmJlZDQ0OTE2YWZhZmJmMDQ3ZGU5YmM0YTBmYjAx
NGE4ZGNkZTI2MC4uMDlmZGJhOTk5NjVlNGIzYmNjYmFhYTRlYjZlMzczMjBiZjgyMTFmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEwMSw2
ICsxMDEsOSBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+
IGRlbGVnYXRlKQogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWROb3RIYW5kbGVUYXBB
c0NsaWNrQXRQb2ludCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OmRpZE5vdEhhbmRsZVRhcEFzQ2xpY2tBdFBvaW50OildOwogICAgIG1fZGVsZWdhdGVN
ZXRob2RzLnByZXNlbnRpbmdWaWV3Q29udHJvbGxlckZvcldlYlZpZXcgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyRm9yV2Vi
VmlldzopXTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1fZGVsZWdhdGVNZXRo
b2RzLmRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldyA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF9kYXRhRGV0ZWN0aW9uQ29udGV4dEZvcldlYlZpZXc6KV07Cisj
ZW5kaWYKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3SW1hZ2VPck1lZGlhRG9jdW1lbnRT
aXplQ2hhbmdlZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQ6KV07CiAKICNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKQEAgLTQ0MSw2ICs0NDQsMjAgQEAgVUlWaWV3Q29udHJvbGxlciAqVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpCiAKICNlbmRpZgogCisj
aWYgUExBVEZPUk0oQ09DT0EpCitOU0RpY3Rpb25hcnkgKlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpk
YXRhRGV0ZWN0aW9uQ29udGV4dCgpCit7CisgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZU1ldGhvZHMuZGF0YURldGVjdGlvbkNvbnRleHRGb3JXZWJWaWV3KQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5n
ZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJldHVybiBbc3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxlZ2F0ZSkg
X2RhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3XTsK
K30KKyNlbmRpZgorCiB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjppbWFnZU9yTWVkaWFEb2N1
bWVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUpCiB7CiAgICAg
aWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0ltYWdlT3JNZWRpYURv
Y3VtZW50U2l6ZUNoYW5nZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggMTBmYmM3ZWVmMjNkZTVlYWIwMzhkYTY0Yjli
OWQ0ZTIzNTk5ZGI4OC4uNTc0ZmQwNGYzMWZlNzI3ODY2NzdhNDc4ZGQ4MTQ5ODg5YjM5MGJiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbQpAQCAtMjQsOSArMjQsMTEgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAKKyNp
bXBvcnQgIkFQSVVJQ2xpZW50LmgiCiAjaW1wb3J0ICJEYXRhRGV0ZWN0aW9uUmVzdWx0LmgiCisj
aW1wb3J0ICJMb2FkUGFyYW1ldGVycy5oIgogCiAjaW1wb3J0IDxXZWJDb3JlL1NlYXJjaFBvcHVw
TWVudUNvY29hLmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KQEAgLTY4LDQgKzcw
LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWRGb3JGcmFt
ZShjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGUKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2VQ
cm94eTo6YWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFt
ZXRlcnMpCit7CisgICAgbG9hZFBhcmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQgPSBtX3Vp
Q2xpZW50LT5kYXRhRGV0ZWN0aW9uQ29udGV4dCgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDViMDVkMmZhZGM5NTI0ZDYxMGZkYTMxZjMy
YjEwYjkxNjhiODFkYTYuLjhiOGUyYzVhZDQ4YzZjZmE3MWVkYTk2YTYzMTE0N2Y3OTNjNThiNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01NSw2ICs1
NSw3IEBACiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdB
cmVhUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlck1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiTmF0aXZlV2ViR2VzdHVyZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudC5oIgpAQCAtOTIwLDExICs5MjEsMTcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QK
ICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAot
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAg
IGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25I
YW5kbGUocmVxdWVzdC51cmwoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgTG9hZFBh
cmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CisgICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklE
ID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7CisgICAgbG9hZFBhcmFtZXRlcnMucmVxdWVz
dCA9IHJlcXVlc3Q7CisgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9ICh1aW50NjRfdClzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OworICAgIGxvYWRQ
YXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNU
b0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKKyAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBt
YXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKHJlcXVlc3QudXJsKCksIGxvYWRQ
YXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogICAgIGlmIChjcmVhdGVkRXh0ZW5z
aW9uKQogICAgICAgICBtX3Byb2Nlc3MtPndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5k
Ym94RXh0ZW5zaW9uKCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpM
b2FkUmVxdWVzdChuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgcmVxdWVzdCwgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgKHVpbnQ2NF90KXNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIFVz
ZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQo
KSkpLCBtX3BhZ2VJRCk7CisgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1l
dGVycyk7CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRSZXF1
ZXN0KGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gV1RGTW92ZShuYXZpZ2F0aW9uKTsK
QEAgLTk1OSwxMCArOTY2LDE2IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94
eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAKICAgICBTdHJp
bmcgcmVzb3VyY2VEaXJlY3RvcnlQYXRoID0gcmVzb3VyY2VEaXJlY3RvcnlVUkwuZmlsZVN5c3Rl
bVBhdGgoKTsKIAotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlOwotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShyZXNvdXJjZURpcmVj
dG9yeVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJlYWRPbmx5LCBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKTsKKyAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKKyAgICBsb2FkUGFyYW1l
dGVycy5uYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKTsKKyAgICBsb2Fk
UGFyYW1ldGVycy5yZXF1ZXN0ID0gZmlsZVVSTDsKKyAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gKHVpbnQ2NF90KVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3k6OlNob3VsZE5vdEFsbG93OworICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNl
ckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgp
KTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocmVzb3VyY2VEaXJlY3RvcnlQ
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSk7CisgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1l
dGVycyk7CisKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwocmVzb3Vy
Y2VEaXJlY3RvcnlVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
TG9hZFJlcXVlc3QobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIGZpbGVVUkwsIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUsICh1aW50NjRfdClTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGROb3RBbGxvdywgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXModXNlckRhdGEpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkxvYWRSZXF1ZXN0KGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwog
ICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1
cm4gV1RGTW92ZShuYXZpZ2F0aW9uKTsKQEAgLTk4Miw4ICs5OTUsMTcgQEAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6OkRhdGEqIGRhdGEsIGNvbnN0
IFN0cmluZyYgTUkKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlBy
b2Nlc3MoKTsKIAorICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQ
YXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOworICAg
IGxvYWRQYXJhbWV0ZXJzLmRhdGEgPSBkYXRhLT5kYXRhUmVmZXJlbmNlKCk7CisgICAgbG9hZFBh
cmFtZXRlcnMuTUlNRVR5cGUgPSBNSU1FVHlwZTsKKyAgICBsb2FkUGFyYW1ldGVycy5lbmNvZGlu
Z05hbWUgPSBlbmNvZGluZzsKKyAgICBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nID0gYmFz
ZVVSTDsKKyAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7CisgICAgYWRkUGxhdGZv
cm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CisKICAgICBtX3Byb2Nlc3MtPmFzc3Vt
ZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVSTCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkRGF0YShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgZGF0YS0+
ZGF0YVJlZmVyZW5jZSgpLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIFVzZXJEYXRhKHBy
b2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSkpLCBtX3Bh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShs
b2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNz
VGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CkBAIC0x
MDA0LDggKzEwMjYsMTYgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojps
b2FkSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGMKICAgICBpZiAoIWlzVmFs
aWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAorICAgIExvYWRQYXJhbWV0
ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLnN0cmluZyA9IGh0
bWxTdHJpbmc7CisgICAgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lID0gQVNDSUlMaXRlcmFs
KCJ0ZXh0L2h0bWwiKTsKKyAgICBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nID0gYmFzZVVS
TDsKKyAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7CisgICAgYWRkUGxhdGZvcm1M
b2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CisKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJl
YWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVSTCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpMb2FkSFRNTFN0cmluZyhuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaHRt
bFN0cmluZywgYmFzZVVSTCwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXModXNlckRhdGEpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTdHJpbmcobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7
CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJl
dHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwpAQCAtMTAzMyw5ICsxMDYzLDE4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJp
bmcsIGNvbnN0IFN0cmluCiAgICAgaWYgKG1fbWFpbkZyYW1lKQogICAgICAgICBtX21haW5GcmFt
ZS0+c2V0VW5yZWFjaGFibGVVUkwodW5yZWFjaGFibGVVUkwpOwogCisgICAgTG9hZFBhcmFtZXRl
cnMgbG9hZFBhcmFtZXRlcnM7CisgICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gMDsK
KyAgICBsb2FkUGFyYW1ldGVycy5zdHJpbmcgPSBodG1sU3RyaW5nOworICAgIGxvYWRQYXJhbWV0
ZXJzLmJhc2VVUkxTdHJpbmcgPSBiYXNlVVJMOworICAgIGxvYWRQYXJhbWV0ZXJzLnVucmVhY2hh
YmxlVVJMU3RyaW5nID0gdW5yZWFjaGFibGVVUkw7CisgICAgbG9hZFBhcmFtZXRlcnMucHJvdmlz
aW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcgPSBtX2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkw7Cisg
ICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOworICAgIGFkZFBsYXRmb3JtTG9hZFBh
cmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOworCiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNj
ZXNzVG9CYXNlVVJMKGJhc2VVUkwpOwogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1Rv
QmFzZVVSTCh1bnJlYWNoYWJsZVVSTCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhodG1sU3RyaW5nLCBiYXNlVVJMLCB1bnJl
YWNoYWJsZVVSTCwgbV9mYWlsaW5nUHJvdmlzaW9uYWxMb2FkVVJMLCBVc2VyRGF0YShwcm9jZXNz
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZEFsdGVybmF0ZUhU
TUxTdHJpbmcobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNw
b25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIApAQCAtMTA1MCw3ICsxMDg5LDE0IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBBUEk6Ok9iamVjdCogdXNlckRhCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRT
dGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVx
dWVzdFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRQbGFpblRleHRTdHJpbmcoc3RyaW5nLCBV
c2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0
KCkpKSwgbV9wYWdlSUQpOworICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAg
IGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IDA7CisgICAgbG9hZFBhcmFtZXRlcnMuc3Ry
aW5nID0gc3RyaW5nOworICAgIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlID0gQVNDSUlMaXRlcmFs
KCJ0ZXh0L3BsYWluIik7CisgICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShw
cm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOworICAg
IGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOworCisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU3RyaW5nKGxvYWRQYXJhbWV0ZXJzKSwg
bV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7
CiB9CiAKQEAgLTEwNjUsNyArMTExMSwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFy
Y2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwogICAg
IGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKICAgICBt
X3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwodHJhbnNhY3Rpb24sIGJsYW5r
VVJMKCkuc3RyaW5nKCkpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpMb2FkV2ViQXJjaGl2ZURhdGEod2ViQXJjaGl2ZURhdGEtPmRhdGFSZWZlcmVuY2UoKSwgVXNl
ckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgp
KSksIG1fcGFnZUlEKTsKKyAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKKyAgICBs
b2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQgPSAwOworICAgIGxvYWRQYXJhbWV0ZXJzLmRhdGEg
PSB3ZWJBcmNoaXZlRGF0YS0+ZGF0YVJlZmVyZW5jZSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLk1J
TUVUeXBlID0gQVNDSUlMaXRlcmFsKCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiKTsKKyAgICBs
b2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUgPSBBU0NJSUxpdGVyYWwoInV0Zi0xNiIpOworICAg
IGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKKyAgICBhZGRQbGF0Zm9ybUxvYWRQYXJh
bWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6TG9hZERhdGEobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9j
ZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDQwNjYxM2E4NDM2M2E1MGEyOTg0MTM1OWI5ZjVj
ZGEyYjEwMjZkYTQuLjEwYTZhNzQyOWVkZDcyY2M5YzRiMjNjZGUwNjI0OWUxYWM2NjEyMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIwNSw2ICsyMDUsNyBA
QCBzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKIHN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIHN0cnVj
dCBFZGl0aW5nUmFuZ2U7CiBzdHJ1Y3QgRWRpdG9yU3RhdGU7CitzdHJ1Y3QgTG9hZFBhcmFtZXRl
cnM7CiBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOwogc3RydWN0IFByaW50SW5mbzsKIHN0
cnVjdCBXZWJQb3B1cEl0ZW07CkBAIC0xMzM3LDYgKzEzMzgsOCBAQCBwcml2YXRlOgogCiAgICAg
Ly8gRGljdGlvbmFyeS4KICAgICB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0
IFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8mKTsKKworICAgIHZvaWQgYWRkUGxhdGZvcm1M
b2FkUGFyYW1ldGVycyhMb2FkUGFyYW1ldGVycyYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYjc2NDY2MTc2MzM0NjExZjJiMDMwZTQ1OWVmNzE2Yjg2Y2VkYmEzMS4uYjYzYzkw
ZDM5Y2IyMmNiYjg0MWQ1NzA4YmM1ZGI5YjlmNzdlYjljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTk2LDYgKzU5Niw5IEBA
CiAJCTI5QUQzMDk2MTY0QjRDOTMwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5
QUQzMDk1MTY0QjRDOTMwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5t
bSAqLzsgfTsKIAkJMjlDRDU1QUExMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyOUNENTVBODEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdEJhc2UuaCAqLzsgfTsKIAkJMjlDRDU1QUIxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRDU1QTkxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNz
aWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tICovOyB9OworCQkyRDEwODc2MDFEMkM1NzNFMDBC
ODVGODIgLyogTG9hZFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQxMDg3NUUxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0
ZXJzLmNwcCAqLzsgfTsKKwkJMkQxMDg3NjExRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDEw
ODc1RjFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuaCAqLzsgfTsKKwkJMkQxMDg3
NjMxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzQ29jb2EubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDEwODc2MjFEMkM2NDFCMDBCODVG
ODIgLyogTG9hZFBhcmFtZXRlcnNDb2NvYS5tbSAqLzsgfTsKIAkJMkQxMjVDNUUxODU3RUEwNTAw
M0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxMjVDNUMxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oICovOyB9OwogCQkyRDEyNUM1RjE4NTdFQTA1MDAzQkEzQ0IgLyog
Vmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQxMjVDNUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJl
Q29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJMkQxQjVENUQxODU4NjlDODAwNkM2NTk2IC8qIFZp
ZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDFCNUQ1QjE4NTg2OUM4MDA2QzY1OTYgLyog
Vmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAgLTI2MDEs
NiArMjYwNCw5IEBACiAJCTI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDAwMzUyMjFCQzc0MTQ4MDBEQTg3MTYgLyogRGVwcmVjYXRlZFBE
RlBsdWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZXByZWNhdGVkUERG
UGx1Z2luLmg7IHBhdGggPSBQREYvRGVwcmVjYXRlZFBERlBsdWdpbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDAwMzUyMzFCQzc0MTQ4MDBEQTg3MTYgLyogRGVwcmVjYXRlZFBE
RlBsdWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERlcHJl
Y2F0ZWRQREZQbHVnaW4ubW07IHBhdGggPSBQREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQxMDg3NUUxRDJDNTczRTAwQjg1RjgyIC8qIExv
YWRQYXJhbWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExv
YWRQYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQxMDg3NUYx
RDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExvYWRQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJEMTA4NzYyMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9hZFBhcmFtZXRlcnNDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQxMjVDNUMxODU3RUEwNTAwM0JB
M0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkQxMjVDNUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZXdHZXN0dXJl
Q29udHJvbGxlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQxQjVENUEx
ODU4NjU5OTAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC00NDg0LDYgKzQ0OTAsOCBAQAogCQkJCUJDQ0Y2QjIzMTJDOTNFN0EwMDhGOUMz
NSAvKiBJbWFnZU9wdGlvbnMuaCAqLywKIAkJCQkxQTkyREMxMjEyRjhCQUI5MDAxN0FGNjUgLyog
TGF5ZXJUcmVlQ29udGV4dC5jcHAgKi8sCiAJCQkJMUE5MkRDMTAxMkY4QkE0NjAwMTdBRjY1IC8q
IExheWVyVHJlZUNvbnRleHQuaCAqLywKKwkJCQkyRDEwODc1RTFEMkM1NzNFMDBCODVGODIgLyog
TG9hZFBhcmFtZXRlcnMuY3BwICovLAorCQkJCTJEMTA4NzVGMUQyQzU3M0UwMEI4NUY4MiAvKiBM
b2FkUGFyYW1ldGVycy5oICovLAogCQkJCTJENTAzNjZBMUJDREUxNzkwMEUyMEJCMyAvKiBOYXRp
dmVXZWJHZXN0dXJlRXZlbnQuaCAqLywKIAkJCQlDMDJCRkYxNTEyNTE0RkQ4MDA5Q0NCRUEgLyog
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oICovLAogCQkJCTMxRUEyNUQzMTM0Rjc4RDYwMDVCMTQ1
MiAvKiBOYXRpdmVXZWJNb3VzZUV2ZW50LmggKi8sCkBAIC01MjM4LDYgKzUyNDYsNyBAQAogCQkJ
CTM3QkVDNERFMTk0OTE0ODYwMDhCNDI4NiAvKiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
Lm1tICovLAogCQkJCUM1NUY5MTZDMUM1OTVFNDQwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVz
dWx0LmggKi8sCiAJCQkJQzU1RjkxNkQxQzU5NUU0NDAwMjlFOTJEIC8qIERhdGFEZXRlY3Rpb25S
ZXN1bHQubW0gKi8sCisJCQkJMkQxMDg3NjIxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0
ZXJzQ29jb2EubW0gKi8sCiAJCQkJMUFCMUY3OEUxRDFCMzRBNjAwN0M5QkQxIC8qIFdlYkNvcmVB
cmd1bWVudENvZGVyc0NvY29hLm1tICovLAogCQkJCTM3QzRDMDkyMTgxNEIzQUYwMDM2ODhCOSAv
KiBXS05TQXJyYXkuaCAqLywKIAkJCQkzN0M0QzA5MTE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0Fy
cmF5Lm1tICovLApAQCAtNzg1NSw2ICs3ODY0LDcgQEAKIAkJCQk3Qzg1RkQ3QzE5MzQxNUE4MDAw
MTc3QzQgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0M4NUZEODAxOTM0MTY2NTAwMDE3N0M0IC8qIFdlYlByZWZlcmVuY2VzS2V5cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNENTk4QUMxMTJCN0ZERjAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzU3Rv
cmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEMTA4NzYxMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2Fk
UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEOTcxMEY0MzdBRjAwNThDMTVB
IC8qIFdlYlByb2Nlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQzQTA5MTI0RDExQTkwMEZG
QkZCNSAvKiBXZWJQcm9jZXNzQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwNDNG
NkExMjUxNEQ4QjAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtODg4MCw2ICs4ODkwLDcgQEAKIAkJCQlDNTlDNEE1ODE4QjgxMTc0MDA3
QkRDQjYgLyogQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTE1RTc3MjcxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQ0VFOTY2QzExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkyRDEwODc2MzFEMkM2NDFCMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnND
b2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUxQTMxNzM1MTM0Q0VBODAwMDdDOUE0RiAvKiBB
dHRyaWJ1dGVkU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyRjU4OTYxMkE4ODM4ODAw
NjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTEyRjU4OTgxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25M
aXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkwNjMsNiArOTA3NCw3IEBACiAJCQkJMUEy
RDgyQTYxMjdGNEVBQjAwMUVCOTYyIC8qIE5QT2JqZWN0UHJveHkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUEyRDgyQTgxMjdGNEVBQjAwMUVCOTYyIC8qIE5QUmVtb3RlT2JqZWN0TWFwLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBMjE2MUIxMTFGMzc2NjQwMDhBRDBGNSAvKiBOUFJ1bnRpbWVP
YmplY3RNYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkQxMDg3NjAxRDJDNTczRTAwQjg1Rjgy
IC8qIExvYWRQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjE2MkIwMTFGMzg5
NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUEyRDg0QTQxMjdGNkFEMTAwMUVCOTYyIC8qIE5QVmFyaWFudERhdGEuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM4QUNBMTQxNjY3MEQ4OTAwNEMxOTQxIC8qIE9iakNPYmplY3RHcmFwaC5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAyZDcx
MmJjNzBkZTFhZWE1YjBhNDY5N2UxNjIzYTg1NTIzM2M4NDJmLi42YWYwNzZlODNlMzBjNGVhN2Vm
Yjg3ZTg4YjFhNDU5ZGQ5OWU1ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cApAQCAtMTYyOSw3ICsxNjI5LDcgQEAgUmVtb3RlQVhPYmplY3RSZWYgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKQogICAgIHJldHVybiB3ZWJQYWdlLT5h
Y2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCk7CiB9CiAgICAgCi1OU0NhY2hlZFVSTFJlc3BvbnNl
KiBXZWJGcmFtZUxvYWRlckNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNl
KSBjb25zdAorTlNDYWNoZWRVUkxSZXNwb25zZSAqV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndpbGxD
YWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBO
U0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkgY29uc3QKIHsKICAgICBXZWJQYWdlKiB3ZWJQ
YWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTE2MzgsNiArMTYz
OCwxNSBAQCBOU0NhY2hlZFVSTFJlc3BvbnNlKiBXZWJGcmFtZUxvYWRlckNsaWVudDo6d2lsbENh
Y2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bgogICAgIHJldHVybiB3ZWJQYWdlLT5pbmpl
Y3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudCgpLnNob3VsZENhY2hlUmVzcG9uc2Uod2ViUGFn
ZSwgbV9mcmFtZSwgaWRlbnRpZmllcikgPyByZXNwb25zZSA6IG5pbDsKIH0KIAorTlNEaWN0aW9u
YXJ5ICpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGF0YURldGVjdGlvbkNvbnRleHQoKQoreworICAg
IFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHdlYlBhZ2UtPmRhdGFEZXRlY3Rpb25D
b250ZXh0KCk7Cit9CisKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogYm9vbCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2hvdWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1lbnQoY29uc3QgU3RyaW5n
JiAvKm1pbWVUeXBlKi8pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
ZTIwNzQwNDU5NzgxMDU5ZTBlOGMzMzEwODBiY2NiOTIzMjIxYTY5NC4uZWU2YmViZDY4NDlhZjVk
MmU0OGMzZjk5NGVkYzIyNjNiNTE2MmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aApAQCAtMjIxLDYgKzIyMSw4IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNj
ZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIG92ZXJyaWRlOwogICAgIAogICAgIE5TQ2FjaGVkVVJM
UmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgY29uc3Qgb3ZlcnJp
ZGU7CisKKyAgICBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkgb3ZlcnJpZGU7
CiAjZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1lbnQoY29uc3Qg
U3RyaW5nJiAvKm1pbWVUeXBlKi8pIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDU4MzEzYzExODRlNTZkOGNmNWY5
YjNjYzQ0OTg3ZGZjOTg1ZGY5MzcuLmZhZGYzZjk5YzA2YzEyYTljZDc1MDBlZDI2MWFiNGU1MmQz
MGE2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZC5oIgorI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCiAjaW5jbHVkZSAiTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCkBAIC0xMTM5LDIxICsxMTQwLDIz
IEBAIHZvaWQgV2ViUGFnZTo6bG9hZFVSTEluRnJhbWUoY29uc3QgU3RyaW5nJiB1cmwsIHVpbnQ2
NF90IGZyYW1lSUQpCiAgICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkKEZyYW1l
TG9hZFJlcXVlc3QoZnJhbWUtPmNvcmVGcmFtZSgpLCBSZXNvdXJjZVJlcXVlc3QoVVJMKFVSTCgp
LCB1cmwpKSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpKTsK
IH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCB1aW50NjRfdCBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2U6OmxvYWRS
ZXF1ZXN0KGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKIHsKICAgICBTZW5k
U3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcih0aGlzKTsKIAotICAgIG1fcGVuZGluZ05h
dmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKKyAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBs
b2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQ7CiAKLSAgICBtX3NhbmRib3hFeHRlbnNpb25UcmFj
a2VyLmJlZ2luTG9hZChtX21haW5GcmFtZS5nZXQoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7
CisgICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci5iZWdpbkxvYWQobV9tYWluRnJhbWUuZ2V0
KCksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgLy8gTGV0
IHRoZSBJbmplY3RlZEJ1bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0aGUgbG9hZCwg
cGFzc2luZyB0aGUgdXNlciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcwogICAgIC8vIHRvIGFsbCB0
aGUgY2xpZW50IHRvIHNldCB1cCBhbnkgbmVlZGVkIHN0YXRlLgotICAgIG1fbG9hZGVyQ2xpZW50
LndpbGxMb2FkVVJMUmVxdWVzdCh0aGlzLCByZXF1ZXN0LCBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Cisg
ICAgbV9sb2FkZXJDbGllbnQud2lsbExvYWRVUkxSZXF1ZXN0KHRoaXMsIGxvYWRQYXJhbWV0ZXJz
LnJlcXVlc3QsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHMobG9hZFBhcmFtZXRlcnMudXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKworICAgIG1fZGF0
YURldGVjdGlvbkNvbnRleHQgPSBsb2FkUGFyYW1ldGVycy5kYXRhRGV0ZWN0aW9uQ29udGV4dDsK
IAogICAgIC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4KLSAgICBGcmFtZUxvYWRSZXF1
ZXN0IGZyYW1lTG9hZFJlcXVlc3QobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZXF1ZXN0LCBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0gICAgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSBleHRlcm5hbFVSTHNQb2xpY3kgPSBzdGF0aWNfY2FzdDxT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5PihzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
KTsKKyAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QobV9tYWluRnJhbWUtPmNv
cmVGcmFtZSgpLCBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBleHRlcm5hbFVSTHNQb2xpY3kgPSBzdGF0aWNfY2FzdDxTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5Pihsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKICAg
ICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koZXh0ZXJu
YWxVUkxzUG9saWN5KTsKIAogICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLmxvYWRS
ZXF1ZXN0KGZyYW1lTG9hZFJlcXVlc3QpOwpAQCAtMTE3OSw3ICsxMTgyLDcgQEAgdm9pZCBXZWJQ
YWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2hhcmUKICAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxv
YWQoRnJhbWVMb2FkUmVxdWVzdChtX21haW5GcmFtZS0+Y29yZUZyYW1lKCksIHJlcXVlc3QsIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBzdWJzdGl0dXRlRGF0
YSkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRTdHJpbmcodWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQordm9pZCBXZWJQYWdlOjpsb2FkU3RyaW5nSW1wbCh1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwg
Y29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFodG1sU3RyaW5nLmlzTnVsbCgpICYmIGh0bWxT
dHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
aHRtbFN0cmluZy5jaGFyYWN0ZXJzOCgpKSwgaHRtbFN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihM
Q2hhcikpOwpAQCAtMTE5MCwzOCArMTE5MywzMyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRTdHJpbmco
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0CiAg
ICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRhKGNvbnN0IExv
YWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKLSAgICBVUkwgYmFzZVVSTCA9
IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgYmFzZVVS
TFN0cmluZyk7Ci0gICAgbG9hZERhdGFJbXBsKG5hdmlnYXRpb25JRCwgc2hhcmVkQnVmZmVyLCBN
SU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgdXNlckRhdGEpOwotfQorICAg
IG1fZGF0YURldGVjdGlvbkNvbnRleHQgPSBsb2FkUGFyYW1ldGVycy5kYXRhRGV0ZWN0aW9uQ29u
dGV4dDsKIAotdm9pZCBXZWJQYWdlOjpsb2FkSFRNTFN0cmluZyh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5n
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCi17Ci0gICAgVVJMIGJhc2VVUkwgPSBiYXNlVVJM
U3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGJhc2VVUkxTdHJpbmcp
OwotICAgIGxvYWRTdHJpbmcobmF2aWdhdGlvbklELCBodG1sU3RyaW5nLCBBU0NJSUxpdGVyYWwo
InRleHQvaHRtbCIpLCBiYXNlVVJMLCBVUkwoKSwgdXNlckRhdGEpOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9hZFBhcmFt
ZXRlcnMuZGF0YS5zaXplKCkpOworICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFz
ZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1l
dGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2
aWdhdGlvbklELCBzaGFyZWRCdWZmZXIsIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFy
YW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2Vy
RGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3Qg
U3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgdW5yZWFjaGFibGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxMb2Fk
RXJyb3JVUkxTdHJpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZTo6
bG9hZFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXRlcnMpCiB7Ci0gICAg
VVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBVUkwo
VVJMKCksIGJhc2VVUkxTdHJpbmcpOwotICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9IHVucmVhY2hh
YmxlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCB1bnJlYWNoYWJsZVVS
TFN0cmluZyk7Ci0gICAgVVJMIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMID0gcHJvdmlzaW9uYWxM
b2FkRXJyb3JVUkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIHByb3Zpc2lv
bmFsTG9hZEVycm9yVVJMU3RyaW5nKTsKLSAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxv
YWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKHByb3Zpc2lvbmFs
TG9hZEVycm9yVVJMKTsKLSAgICBsb2FkU3RyaW5nKDAsIGh0bWxTdHJpbmcsIEFTQ0lJTGl0ZXJh
bCgidGV4dC9odG1sIiksIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCB1c2VyRGF0YSk7Ci0gICAg
bV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zZXRQcm92aXNpb25hbExvYWRFcnJv
ckJlaW5nSGFuZGxlZFVSTCh7IH0pOwotfQorICAgIG1fZGF0YURldGVjdGlvbkNvbnRleHQgPSBs
b2FkUGFyYW1ldGVycy5kYXRhRGV0ZWN0aW9uQ29udGV4dDsKIAotdm9pZCBXZWJQYWdlOjpsb2Fk
UGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCi17Ci0gICAgbG9hZFN0cmluZygwLCBzdHJpbmcsIEFTQ0lJTGl0ZXJhbCgidGV4dC9w
bGFpbiIpLCBibGFua1VSTCgpLCBVUkwoKSwgdXNlckRhdGEpOworICAgIFVSTCBiYXNlVVJMID0g
bG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJM
KFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBsb2FkU3RyaW5nSW1w
bChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnN0cmluZywgbG9h
ZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2Vy
RGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFdlYkFyY2hpdmVEYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgd2ViQXJjaGl2ZURhdGEsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkK
K3ZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRl
cnMmIGxvYWRQYXJhbWV0ZXJzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KHdlYkFyY2hpdmVEYXRhLmRhdGEoKSksIHdlYkFyY2hpdmVEYXRhLnNpemUoKSAqIHNpemVvZih1
aW50OF90KSk7Ci0gICAgbG9hZERhdGFJbXBsKDAsIHNoYXJlZEJ1ZmZlciwgQVNDSUlMaXRlcmFs
KCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiKSwgQVNDSUlMaXRlcmFsKCJ1dGYtMTYiKSwgYmxh
bmtVUkwoKSwgVVJMKCksIHVzZXJEYXRhKTsKKyAgICBtX2RhdGFEZXRlY3Rpb25Db250ZXh0ID0g
bG9hZFBhcmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQ7CisKKyAgICBVUkwgYmFzZVVSTCA9
IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVS
TChVUkwoKSwgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZyk7CisgICAgVVJMIHVucmVhY2hh
YmxlVVJMID0gbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVVUkxTdHJpbmcuaXNFbXB0eSgpID8g
VVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVucmVhY2hhYmxlVVJMU3RyaW5nKTsK
KyAgICBVUkwgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwgPSBsb2FkUGFyYW1ldGVycy5wcm92aXNp
b25hbExvYWRFcnJvclVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwgbG9h
ZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcpOworICAgIG1fbWFpbkZy
YW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hh
bmRsZWRVUkwocHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwpOworICAgIGxvYWRTdHJpbmdJbXBsKDAs
IGxvYWRQYXJhbWV0ZXJzLnN0cmluZywgQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKSwgYmFzZVVS
TCwgdW5yZWFjaGFibGVVUkwsIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhKTsKKyAgICBtX21haW5G
cmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdI
YW5kbGVkVVJMKHsgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRo
U2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIEludFBvaW50IGRvY3VtZW50UG9pbnQs
IEludFBvaW50IHNjcmVlblBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggZmFlYjI1ZDc4NDU3ZTc1Y2E2MWMyOWY2YWU4MGRkNmE4NTNjNDYy
NC4uMjhhNzllNmYxMDM0ODdhYmI0YTkxMDkwMDkzY2Y5NTlhZTYwMTA4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xOTIsNiArMTkyLDcgQEAg
c3RydWN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTsKIHN0cnVjdCBFZGl0aW5nUmFuZ2U7CiBz
dHJ1Y3QgRWRpdG9yU3RhdGU7CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b247CitzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUHJpbnRJbmZvOwogc3RydWN0IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKQEAg
LTg1Myw2ICs4NTQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRVc2VQREZQbHVnaW4oKSBj
b25zdDsKICAgICBib29sIHBkZlBsdWdpbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3BkZlBs
dWdpbkVuYWJsZWQ7IH0KICAgICB2b2lkIHNldFBERlBsdWdpbkVuYWJsZWQoYm9vbCBlbmFibGVk
KSB7IG1fcGRmUGx1Z2luRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKworICAgIE5TRGljdGlvbmFyeSAq
ZGF0YURldGVjdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFEZXRlY3Rpb25Db250
ZXh0LmdldCgpOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgc2F2ZVBERlRvRmlsZUluRG93bmxvYWRz
Rm9sZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6
ZSk7CkBAIC05OTgsMTggKzEwMDEsMTYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgc291cmNlRm9y
RnJhbWUoV2ViRnJhbWUqKTsKIAogICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgV2ViQ29yZTo6VVJM
JiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRh
Jik7Ci0gICAgdm9pZCBsb2FkU3RyaW5nKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJM
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJik7CisgICAg
dm9pZCBsb2FkU3RyaW5nSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29u
c3QgV2ViQ29yZTo6VVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgYm9v
bCBwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogICAg
IC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKCk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIHVpbnQ2NF90IHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3ksIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkRGF0YSh1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYg
TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGJhc2VV
UkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkSFRNTFN0cmluZyh1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNl
VVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmco
Y29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0
cmluZyYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxMb2FkRXJyb3JV
UkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGxv
YWRSZXF1ZXN0KGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CisgICAgdm9pZCBsb2FkRGF0YShjb25z
dCBMb2FkUGFyYW1ldGVycyYpOworICAgIHZvaWQgbG9hZFN0cmluZyhjb25zdCBMb2FkUGFyYW1l
dGVycyYpOworICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgTG9hZFBhcmFt
ZXRlcnMmKTsKICAgICB2b2lkIG5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNv
bnN0IFN0cmluZyYgdXJsLCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3Jl
OjpJbnRQb2ludCBzY3JlZW5Qb2ludCk7CiAgICAgdm9pZCByZWxvYWQodWludDY0X3QgbmF2aWdh
dGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxl
ZCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAgICAgdm9pZCBnb0ZvcndhcmQo
dWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CkBAIC0xMjgwLDYgKzEyODEsOCBAQCBw
cml2YXRlOgogCiAgICAgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciBtX3ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3I7CiAKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBtX2RhdGFE
ZXRlY3Rpb25Db250ZXh0OworCiAjZWxpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIChQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKEVGTCkpCiAgICAgR1JlZlB0cjxXZWJQYWdlQWNjZXNzaWJpbGl0
eU9iamVjdD4gbV9hY2Nlc3NpYmlsaXR5T2JqZWN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDNk
ZTRmNzVlZjQ5YzY2NGE2NzdjNjdiMGE0MjU4MWNhN2JhYjJmYjMuLmJlNTQ2YzFjOGYyMGJhMGZh
MWE0ZTM2MzgzNjBjODRkMjVmMDI1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xMzIsMTIgKzEzMiwxMSBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBUcnlSZXN0b3JlU2Ny
b2xsUG9zaXRpb24oKQogCiAgICAgTG9hZFVSTEluRnJhbWUoU3RyaW5nIHVybCwgdWludDY0X3Qg
ZnJhbWVJRCkKLSAgICBMb2FkUmVxdWVzdCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCB1aW50NjRfdCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIExvYWREYXRhKHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIFN0cmluZyBNSU1FVHlwZSwg
U3RyaW5nIGVuY29kaW5nLCBTdHJpbmcgYmFzZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKLSAgICBMb2FkSFRNTFN0cmluZyh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBodG1s
U3RyaW5nLCBTdHJpbmcgYmFzZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBM
b2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhTdHJpbmcgaHRtbFN0cmluZywgU3RyaW5nIGJhc2VVUkws
IFN0cmluZyB1bnJlYWNoYWJsZVVSTCwgU3RyaW5nIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMLCBX
ZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIExvYWRQbGFpblRleHRTdHJpbmcoU3RyaW5n
IHN0cmluZywgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBMb2FkV2ViQXJjaGl2ZURh
dGEoSVBDOjpEYXRhUmVmZXJlbmNlIHdlYkFyY2hpdmVEYXRhLCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQorICAgIExvYWRSZXF1ZXN0KHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxv
YWRQYXJhbWV0ZXJzKQorICAgIExvYWREYXRhKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJz
IGxvYWRQYXJhbWV0ZXJzKQorICAgIExvYWRTdHJpbmcoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFt
ZXRlcnMgbG9hZFBhcmFtZXRlcnMpCisgICAgTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoc3RydWN0
IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpCisKICAgICBOYXZpZ2F0ZVRv
UERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhTdHJpbmcgdXJsLCBXZWJDb3JlOjpJbnRQb2ludCBk
b2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCkKIAogICAgIFJlbG9h
ZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgYm9vbCBjb250
ZW50QmxvY2tlcnNFbmFibGVkLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDE2MDI5MDliZTgwODRiODU5MDNkNjg1ZGEyMTM3ZDU3YzRkZTNkYjAu
LmE3NDcxMGY3OGZjYzU5Yzg0YjU0ZDIyN2M3NWNhNjE0N2MxMGY5Y2UgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAx
Ni0wNy0wNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAg
ICBFbWFpbCBmcm9tIEp1bmUgMXN0IGNvbnRhaW5pbmcgdGV4dCAnVG9kYXkgQCA3OjEwUE0nIGlz
IGxpbmtpZmllZCwgYnV0IHNob3VsZG4ndCBiZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NDk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjcx
OTkwMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0RhdGFEZXRlY3Rpb24u
bW06IEFkZGVkLgorICAgICAgICAoLVtEYXRhRGV0ZWN0aW9uTmF2aWdhdGlvbkRlbGVnYXRlIHdl
YlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1bRGF0YURldGVjdGlvblVJ
RGVsZWdhdGUgX2RhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldzpdKToKKyAgICAgICAgKGV4
cGVjdExpbmtDb3VudCk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgQWRkIGEgdGVzdCBlbnN1
cmluZyB0aGF0IFJlZmVyZW5jZURhdGUgaW4gdGhlIERhdGFEZXRlY3RvcnMgY29udGV4dCBpcyBy
ZXNwZWN0ZWQKKyAgICAgICAgd2hlbiBkZWNpZGluZyB3aGF0IHRvIGxpbmtpZnkuCisKIDIwMTYt
MDctMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIERhdGFi
YXNlIHByb2Nlc3MgY3Jhc2hlcyBkZWxldGluZyBhIGNvcnJ1cHQgU1FMaXRlIGRhdGFiYXNlIGZp
bGUgKG51bGwgZGVyZWYpLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ZmY3OTAyNDZhNzE1
ZTI2YjM1MDI2NTIzN2I4NGJlZjZhYWM4NjMwLi5iYTQ1NTA2ZjY5ZDNhM2RhNTdjOWE4ZDY2ZjY1
OGJiM2M2MmM0Y2ZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDksNiArNDksNyBAQAog
CQkyRDAwMDY1RjFDMUY1ODlBMDA4OEU2QTcgLyogV0tQREZWaWV3UmVzaXplQ3Jhc2gubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDAwMDY1RDFDMUY1
ODk0MDA4OEU2QTcgLyogV0tQREZWaWV3UmVzaXplQ3Jhc2gubW0gKi87IH07CiAJCTJEMTY0NkUy
MUQxODYyQ0QwMDAxNUExQSAvKiBEZWZlcnJlZFZpZXdJbldpbmRvd1N0YXRlQ2hhbmdlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxNjQ2RTExRDE4
NjJDRDAwMDE1QTFBIC8qIERlZmVycmVkVmlld0luV2luZG93U3RhdGVDaGFuZ2UubW0gKi87IH07
CiAJCTJENTFBMEM3MUM4QkYwMEMwMDc2NUM0NSAvKiBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBl
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENTFB
MEM1MUM4QkYwMDQwMDc2NUM0NSAvKiBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSAqLzsg
fTsKKwkJMkRDNENGNzcxRDJEOUREODAwRUNDQzk0IC8qIERhdGFEZXRlY3Rpb24ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREM0Q0Y3NjFEMkQ5REQ4
MDBFQ0NDOTQgLyogRGF0YURldGVjdGlvbi5tbSAqLzsgfTsKIAkJMkREN0QzQUYxNzgyMjdCMzAw
MjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDdEM0FFMTc4MjI3QUMwMDI2
RTFFMyAvKiBsb3RzLW9mLXRleHQtdmVydGljYWwtbHIuaHRtbCAqLzsgfTsKIAkJMkU3NzY1Q0Qx
NkM0RDgwQTAwQkEyQkIxIC8qIG1haW5JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc3NjVDQzE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5t
bSAqLzsgfTsKIAkJMkU3NzY1Q0YxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc3NjVDRTE2QzREODEx
MDBCQTJCQjEgLyogbWFpbk1hYy5tbSAqLzsgfTsKQEAgLTY2MCw2ICs2NjEsNyBAQAogCQkyRDY0
MEI1NDE3ODc1REZGMDBCRkFGOTkgLyogU2Nyb2xsUGlubmluZ0JlaGF2aW9ycy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4MTA0Q0IxQkVDMTNFNzAwMjBEQTQ2
IC8qIEZpbmRJblBhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBGaW5kSW5QYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDlBNTNBRTFC
MzFGQThEMDA3NEQ1QUEgLyogU2hyaW5rVG9GaXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTaHJpbmtUb0ZpdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMkRDNENGNzYxRDJEOUREODAwRUNDQzk0IC8qIERhdGFEZXRlY3Rpb24ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRhRGV0ZWN0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREQzNTUzNTFCRDA4Mzc4MDA1REY0QTcgLyogQXV0
b0xheW91dEludGVncmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQXV0b0xheW91dEludGVncmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyREQ3RDNBOTE3ODIwNUQwMDAyNkUxRTMgLyogUmVzaXplUmV2ZXJzZVBhZ2luYXRlZFdl
YlZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzaXplUmV2
ZXJzZVBhZ2luYXRlZFdlYlZpZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
REQ3RDNBRTE3ODIyN0FDMDAyNkUxRTMgLyogbG90cy1vZi10ZXh0LXZlcnRpY2FsLWxyLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAibG90cy1vZi10ZXh0LXZlcnRpY2FsLWxyLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTE2Niw2ICsxMTY4LDcgQEAKIAkJCQlBMTRGQzU4NjFCODk5MUI2
MDBEMTA3RUIgLyogQ29udGVudEZpbHRlcmluZy5tbSAqLywKIAkJCQlBMTRGQzU4OTFCODk5Mjcx
MDBEMTA3RUIgLyogQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbSAqLywKIAkJCQkxQUFEMTlGNTFD
N0NFMjAzMDA4MzFFNDcgLyogQ29kaW5nLm1tICovLAorCQkJCTJEQzRDRjc2MUQyRDlERDgwMEVD
Q0M5NCAvKiBEYXRhRGV0ZWN0aW9uLm1tICovLAogCQkJCUExQTRGRTVEMThERDNEQjcwMEI1RUE4
QSAvKiBEb3dubG9hZC5tbSAqLywKIAkJCQkyRDgxMDRDQjFCRUMxM0U3MDAyMERBNDYgLyogRmlu
ZEluUGFnZS5tbSAqLywKIAkJCQkyRDFGRTBBRjFBRDQ2NUMxMDA2Q0Q5RTYgLyogRml4ZWRMYXlv
dXRTaXplLm1tICovLApAQCAtMjEyOCw2ICsyMTMxLDcgQEAKIAkJCQk3NjQzMjJENzFCNjFDQ0Mz
MDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RjA1MUE0MTFBRTYwMDQ0N0M0QyAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGcmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMjUxQTQxMUFGNjAw
NDQ3QzRDIC8qIE9wZW5BbmRDbG9zZVdpbmRvdy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJEQzRD
Rjc3MUQyRDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdGMDcxQTQxMUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkQmFzaWMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0UwQzExRDBBNjUyRjAwRkVCQ0YzIC8qIFByb3Zpc2lvbmFsVVJMTm90
Q2hhbmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDgxQTQxMUFFNjAwNDQ3QzRDIC8q
IFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2Nv
YS9EYXRhRGV0ZWN0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvRGF0YURldGVjdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzEyNmJjYTlhMWU1NmRlOGU4OWNlNzhh
MGY1ZjMwNTUxNzAwMmE2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtMCwwICsxLDExMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3N0YXRpYyBib29s
IGZpbmlzaGVkTG9hZGluZzsKK3N0YXRpYyBib29sIHJhblNjcmlwdDsKKworQGludGVyZmFjZSBE
YXRhRGV0ZWN0aW9uTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRl
bGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gRGF0YURldGVjdGlvbk5hdmlnYXRpb25E
ZWxlZ2F0ZQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNo
TmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgoreworICAgIGZpbmlzaGVkTG9h
ZGluZyA9IHRydWU7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBEYXRhRGV0ZWN0aW9uVUlEZWxl
Z2F0ZSA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGU+CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZXRhaW4pIE5TRGF0ZSAqcmVmZXJlbmNlRGF0ZTsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
RGF0YURldGVjdGlvblVJRGVsZWdhdGUKKworLSAoTlNEaWN0aW9uYXJ5ICopX2RhdGFEZXRlY3Rp
b25Db250ZXh0Rm9yV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldworeworICAgIGlmICghX3Jl
ZmVyZW5jZURhdGUpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gQHsKKyAgICAg
ICAgQCJSZWZlcmVuY2VEYXRlIjogX3JlZmVyZW5jZURhdGUKKyAgICB9OworfQorCitAZW5kCisK
K3ZvaWQgZXhwZWN0TGlua0NvdW50KFdLV2ViVmlldyAqd2ViVmlldywgTlNTdHJpbmcgKkhUTUxT
dHJpbmcsIHVuc2lnbmVkIGxpbmtDb3VudCkKK3sKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpIVE1MU3RyaW5nIGJhc2VVUkw6bmlsXTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZmluaXNoZWRMb2FkaW5nKTsKKyAgICBmaW5pc2hlZExvYWRpbmcgPSBmYWxzZTsKKworICAg
IFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdhJykubGVuZ3RoIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHZhbHVlLCBOU0Vycm9yICpl
cnJvcikgeworICAgICAgICBFWFBFQ1RfRVEobGlua0NvdW50LCBbdmFsdWUgdW5zaWduZWRJbnRW
YWx1ZV0pOworICAgICAgICByYW5TY3JpcHQgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZyYW5TY3JpcHQpOworICAgIHJhblNjcmlwdCA9IGZhbHNlOwor
fQorCitURVNUKFdlYktpdDIsIERhdGFEZXRlY3Rpb25SZWZlcmVuY2VEYXRlKQoreworICAgIFJl
dGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlv
biBzZXREYXRhRGV0ZWN0b3JUeXBlczpXS0RhdGFEZXRlY3RvclR5cGVDYWxlbmRhckV2ZW50XTsK
KworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgUmV0YWluUHRyPERhdGFEZXRlY3Rp
b25OYXZpZ2F0aW9uRGVsZWdhdGU+IG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEYXRh
RGV0ZWN0aW9uTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcg
c2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBS
ZXRhaW5QdHI8RGF0YURldGVjdGlvblVJRGVsZWdhdGU+IFVJRGVsZWdhdGUgPSBhZG9wdE5TKFtb
RGF0YURldGVjdGlvblVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOlVJRGVsZWdhdGUuZ2V0KCldOworCisgICAgZXhwZWN0TGlua0NvdW50KHdlYlZp
ZXcuZ2V0KCksIEAidG9tb3Jyb3cgYXQgNlBNIiwgMSk7CisgICAgZXhwZWN0TGlua0NvdW50KHdl
YlZpZXcuZ2V0KCksIEAieWVzdGVyZGF5IGF0IDZQTSIsIDApOworCisgICAgTlNUaW1lSW50ZXJ2
YWwgd2VlayA9IDYwICogNjAgKiAyNCAqIDc7CisKKyAgICBbVUlEZWxlZ2F0ZSBzZXRSZWZlcmVu
Y2VEYXRlOltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdzotd2Vla11dOworICAg
IGV4cGVjdExpbmtDb3VudCh3ZWJWaWV3LmdldCgpLCBAInRvbW9ycm93IGF0IDZQTSIsIDApOwor
ICAgIGV4cGVjdExpbmtDb3VudCh3ZWJWaWV3LmdldCgpLCBAInllc3RlcmRheSBhdCA2UE0iLCAw
KTsKKworICAgIFtVSURlbGVnYXRlIHNldFJlZmVyZW5jZURhdGU6W05TRGF0ZSBkYXRlV2l0aFRp
bWVJbnRlcnZhbFNpbmNlTm93OndlZWtdXTsKKyAgICBleHBlY3RMaW5rQ291bnQod2ViVmlldy5n
ZXQoKSwgQCJ0b21vcnJvdyBhdCA2UE0iLCAxKTsKKyAgICBleHBlY3RMaW5rQ291bnQod2ViVmll
dy5nZXQoKSwgQCJ5ZXN0ZXJkYXkgYXQgNlBNIiwgMSk7Cit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282968</attachid>
            <date>2016-07-06 17:35:29 -0700</date>
            <delta_ts>2016-07-06 17:41:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159498-20160706173456.patch</filename>
            <type>text/plain</type>
            <size>80023</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYyMDU4ZWExYTkwMTky
NzU4MzFhNTcyMjJjZTRhNDY5NDRkZTJmNS4uMTUyYTljZDc0MDkzZDc0MDljYjM3NjVjZWNkODBh
ZWU1NTMxZDExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA3LTA2ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEVtYWlsIGZyb20g
SnVuZSAxc3QgY29udGFpbmluZyB0ZXh0ICdUb2RheSBAIDc6MTBQTScgaXMgbGlua2lmaWVkLCBi
dXQgc2hvdWxkbid0IGJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTk0OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NzE5OTAzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0OiBXZWJL
aXQyLkRhdGFEZXRlY3Rpb25SZWZlcmVuY2VEYXRlCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5n
ZSk6CisgICAgICAgIEV4dHJhY3QgdGhlIHJlZmVyZW5jZSBkYXRlIGZyb20gdGhlIERhdGFEZXRl
Y3RvcnMgY29udGV4dCBkaWN0aW9uYXJ5IGlmIGl0IGV4aXN0cywKKyAgICAgICAgYW5kIHBhc3Mg
aXQgYWxvbmcgdG8gRGF0YURldGVjdG9ycy4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVG
b3JUaGlzRnJhbWUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICBQbHVtYiB0aGUgRGF0YURldGVjdG9ycyBjb250ZXh0IGRpY3Rpb25hcnkgdGhyb3VnaCBm
cm9tIFdlYlBhZ2UuCisKIDIwMTYtMDctMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIERhdGFiYXNlIHByb2Nlc3MgY3Jhc2hlcyBkZWxldGluZyBhIGNvcnJ1
cHQgU1FMaXRlIGRhdGFiYXNlIGZpbGUgKG51bGwgZGVyZWYpLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDBkZmY1
MTgzYzMwNGNhZDk4MzM3OWQ2OGY3NWVhNzEzZjllN2M4YzguLjkwZGNhNzYzZTVhOTg5NDBjMzJm
OTZiNjU1OTYxOWIxZmEyYzU0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAxNi0w
Ny0wNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBF
bWFpbCBmcm9tIEp1bmUgMXN0IGNvbnRhaW5pbmcgdGV4dCAnVG9kYXkgQCA3OjEwUE0nIGlzIGxp
bmtpZmllZCwgYnV0IHNob3VsZG4ndCBiZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NDk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjcxOTkw
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogU2hhcmVk
L0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpM
b2FkUGFyYW1ldGVyczo6cGxhdGZvcm1FbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFy
YW1ldGVyczo6cGxhdGZvcm1EZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Mb2FkUGFyYW1ldGVy
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICBBZGQgYSBzdHJ1Y3QgdGhhdCBr
bm93cyBob3cgdG8gZW5jb2RlIGFsbCBvZiB0aGUgZGlmZmVyZW50IHBhcmFtZXRlcnMKKyAgICAg
ICAgdG8gYWxsIG9mIHRoZSBMb2FkKiBtZXNzYWdlcywgaW5jbHVkaW5nIHRoZSBwbGF0Zm9ybS1z
cGVjaWZpYyBEYXRhRGV0ZWN0b3JzIHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBTaGFyZWQvbWFj
L0FyZ3VtZW50Q29kZXJzTWFjLmg6CisgICAgICAgICogU2hhcmVkL21hYy9Bcmd1bWVudENvZGVy
c01hYy5tbToKKyAgICAgICAgKElQQzo6dHlwZUZyb21PYmplY3QpOgorICAgICAgICAoSVBDOjpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGUpOgorICAgICAgICBBZGQgTlNVUkwgY29kZXJz
IHRoYXQgZGVmZXIgdG8gdGhlIENGVVJMIGNvZGVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRhdGFEZXRlY3Rpb25D
b250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURl
bGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpkYXRhRGV0ZWN0aW9uQ29udGV4dCk6CisgICAgICAgIEFkZCBBUElVSUNsaWVudCBtZXRo
b2RzIHRvIHJldHJpZXZlIHRoZSBEYXRhRGV0ZWN0b3JzIGNvbnRleHQgZGljdGlvbmFyeS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKToKKyAgICAg
ICAgQWRkIHRoZSBEYXRhRGV0ZWN0b3JzIGNvbnRleHQgZGljdGlvbmFyeSB0byB0aGUgZ2l2ZW4g
TG9hZFBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRhdGFEZXRlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGF0YURldGVjdGlv
bkNvbnRleHQpOgorICAgICAgICBTdG9yZSB0aGUgZGF0YURldGVjdGlvbkNvbnRleHQgb24gV2Vi
UGFnZSwgYW5kIG1ha2UgaXQgYWNjZXNzaWJsZSB0byBXZWJDb3JlCisgICAgICAgIHZpYSB0aGUg
RnJhbWVMb2FkZXJDbGllbnQgKGl0IGlzIHVzZWQgaW4gRnJhbWVMb2FkZXIgd2hlbiB0aGUgbG9h
ZCBjb21wbGV0ZXMpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmxvYWRGaWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEhUTUxT
dHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1M
U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUGxhaW5UZXh0U3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRTdHJpbmdJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkSFRNTFN0cmluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRQbGFpblRleHRTdHJpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkV2ViQXJjaGl2ZURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAg
ICBBZG9wdCBMb2FkUGFyYW1ldGVycywgdGFraW5nIHRoaXMgb3Bwb3J0dW5pdHkgdG8gcmVkdWNl
IHRoZSBudW1iZXIgb2YgdmVyeSBzaW1pbGFyIG1lc3NhZ2VzLgorICAgICAgICBXZSBjYW4gdGFr
ZSB0aGlzIGZ1cnRoZXIgKHdlIHNob3VsZCBiZSBhYmxlIHRvIGdldCBpdCBkb3duIHRvIGp1c3Qg
TG9hZFJlcXVlc3QKKyAgICAgICAgYW5kIExvYWREYXRhKSBpbiB0aGUgZnV0dXJlLiBXaGVuIGFu
eSBsb2FkIG9jY3VycywgZ3JhYiB0aGUgY2xpZW50J3MgRGF0YURldGVjdG9yc2UKKyAgICAgICAg
Y29udGV4dCBkaWN0aW9uYXJ5IGFuZCBzZW5kIGl0IGFsb25nIHdpdGggdGhlIGxvYWQgcmVxdWVz
dCwgc3RvcmluZyBpdCBpbiBXZWJQYWdlLgorCiAyMDE2LTA3LTA0ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ29vcmRpbmF0ZWQgR3JhcGhp
Y3NdIE1vZGVybml6ZSBhbmQgY2xlYW51cCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDUy
M2MyZjM2NjEwNDNjZGNhMDY3NWEyMjVkNmYyY2EzNmJmMjY3MC4uYjExODBjNmU4OWZiODUyNGNm
MzNhMzQ3MTJiODQ1ODU3NzAyMjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0NCw2ICsxMjQ0LDcgQEAKIAkJMkQ5N0Yw
NDgxOURENDE0MDAwMUVFOUMzIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBQUUzMkQxOURDQUY2MDAwRTAw
MkQyIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5oICovOyB9OwogCQkyRDlGMEUxMzE0RkYxQ0JG
MDBCQTBGRjcgLyogbGluZWFyU1JHQi5pY2MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUYwRTEyMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdC
LmljYyAqLzsgfTsKIAkJMkRCOUM0QUExQjMyMzFGNDAwNzBGMjdGIC8qIE5TRXZlbnRTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQjlDNEE5MUIz
MjMxRjQwMDcwRjI3RiAvKiBOU0V2ZW50U1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkRDNENGNzkxRDJERDk4OTAwRUNDQzk0IC8qIERhdGFE
ZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRDNENGNzgxRDJERDk4OTAwRUNDQzk0IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEQ0I4Mzc5
MTlGOTlCQkEwMEE3RkJFNCAvKiBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRENCODM3NzE5Rjk5QkJBMDBB
N0ZCRTQgLyogTlNTaGFyaW5nU2VydmljZVBpY2tlclNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEQ0I4MzdBMTlGOTlCQkEwMEE3RkJFNCAv
KiBOU1NoYXJpbmdTZXJ2aWNlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRENCODM3ODE5Rjk5QkJBMDBBN0ZCRTQgLyogTlNTaGFyaW5nU2Vydmlj
ZVNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJEREI5N0Y0MTlGOUFFQ0EwMDIwMjVEOCAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkREQjk3RjMxOUY5QUVDQTAwMjAy
NUQ4IC8qIE5TRXh0ZW5zaW9uU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTg4MTIsNiArODgxMyw3IEBACiAJCTJEQUFFMzJDMTlEQ0FGNjAw
MEUwMDJEMiAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRBQUUzMkQxOURDQUY2MDAwRTAwMkQyIC8qIE1vY2tQYWdlT3Zl
cmxheUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrUGFnZU92
ZXJsYXlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRCOUM0QTkxQjMy
MzFGNDAwNzBGMjdGIC8qIE5TRXZlbnRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTlNFdmVudFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREM0Q0Y3
ODFEMkREOTg5MDBFQ0NDOTQgLyogRGF0YURldGVjdG9yc1VJU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRlY3RvcnNVSVNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyRENCODM3NzE5Rjk5QkJBMDBBN0ZCRTQgLyogTlNTaGFyaW5nU2Vydmlj
ZVBpY2tlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQ0I4Mzc4
MTlGOTlCQkEwMEE3RkJFNCAvKiBOU1NoYXJpbmdTZXJ2aWNlU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5TU2hhcmluZ1NlcnZpY2VTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkREQjk3RjMxOUY5QUVDQTAwMjAyNUQ4IC8qIE5TRXh0ZW5zaW9uU1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TRXh0ZW5zaW9uU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDE3MCw2ICsyMDE3Miw3IEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNFMTI1MjQyMUExNkMwMUEwMDg2NDQ4
MCAvKiBDb3JlVUlTUEkuaCAqLywKKwkJCQkyREM0Q0Y3ODFEMkREOTg5MDBFQ0NDOTQgLyogRGF0
YURldGVjdG9yc1VJU1BJLmggKi8sCiAJCQkJQ0VDMzM3QUUxQTQ2MDg2RDAwOUI4NTIzIC8qIEdy
YXBoaWNzU2VydmljZXNTUEkuaCAqLywKIAkJCQk3QzRDOTZFMjFBRDQ0QUJGMDAzNjVBNTAgLyog
TGF1bmNoU2VydmljZXNTUEkuaCAqLywKIAkJCQlDRTEyNTI0MDFBMTZCMUI2MDA4NjQ0ODAgLyog
TWVkaWFQbGF5ZXJTUEkuaCAqLywKQEAgLTI2OTIwLDYgKzI2OTIzLDcgQEAKIAkJCQk3QzlEQkZF
RTFBOUM0OUIxMDAwRDZCMjUgLyogSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0NDYxNDM4MENENjg5QzUwMEZBREE3NSAvKiBKU0hUTUxBdWRpb0VsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3QjExMEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxC
YXNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRDNENGNzkxRDJERDk4OTAwRUNDQzk0
IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFBMjMwQTFD
REFCNDAwQjQyQjI1IC8qIEpTSFRNTEJvZHlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUUyQUEyNTBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MQlJFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODBFN0U5RjBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MQnV0dG9uRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5oCmluZGV4IDk0OWU1YmY3YjM5ODg4ODc3MTM2YmY3Y2QzM2U4NjI2ZWViMjNjNjAuLjc3
NTlkMTk5Y2E0ZWNmZjA1MjQxOWJkYjMwMzJmOGUzZDdkYmNmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAKIE9C
SkNfQ0xBU1MgRERBY3Rpb25Db250ZXh0OwogT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFT
UyBOU0RpY3Rpb25hcnk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsNyArNTgsNyBA
QCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBkZXRlY3RJdGVtQXJvdW5kSGl0VGVzdFJlc3VsdChj
b25zdCBIaXRUZXN0UmVzdWx0JiwgRmxvYXRSZWN0JiBkZXRlY3RlZERhdGFCb3VuZGluZ0JveCwg
UmVmUHRyPFJhbmdlPiYgZGV0ZWN0ZWREYXRhUmFuZ2UpOwogI2VuZGlmCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIE5TQXJyYXkgKmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4m
IGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBOU0FycmF5ICpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0
UmFuZ2UsIERhdGFEZXRlY3RvclR5cGVzLCBOU0RpY3Rpb25hcnkgKmNvbnRleHQpOwogI2lmIFBM
QVRGT1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0RhdGFEZXRlY3Rv
ckxpbmsoRWxlbWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZGF0YURl
dGVjdG9ySWRlbnRpZmllcihFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggMTM4MzNlZTE5OTY4MmMzYjUwYzExMGQ3NjNmNDVm
MDg0NzU5NTM1Yi4uODQ2NGU4NmI1N2RmNTRhNWQ1ZTY1YjQ1ZDlkYzUyZWUzZmExODllYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNDI5
LDcgKzQyOSw3IEBAIHN0YXRpYyBpbmxpbmUgQ0ZDb21wYXJpc29uUmVzdWx0IHF1ZXJ5T2Zmc2V0
Q29tcGFyZShERFF1ZXJ5T2Zmc2V0IG8xLCBERFF1ZXJ5T2ZmCiAgICAgcmV0dXJuIGtDRkNvbXBh
cmVFcXVhbFRvOwogfQogCi1OU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5S
YW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZXRlY3RvclR5cGVzIHR5cGVz
KQorTlNBcnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJh
bmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGV0ZWN0b3JUeXBlcyB0eXBlcywgTlNEaWN0aW9uYXJ5
ICpjb250ZXh0KQogewogICAgIFJldGFpblB0cjxERFNjYW5uZXJSZWY+IHNjYW5uZXIgPSBhZG9w
dENGKHNvZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3JlX0REU2Nhbm5lckNyZWF0ZShERFNjYW5uZXJU
eXBlU3RhbmRhcmQsIDAsIG51bGxwdHIpKTsKICAgICBSZXRhaW5QdHI8RERTY2FuUXVlcnlSZWY+
IHNjYW5RdWVyeSA9IGFkb3B0Q0Yoc29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FuUXVl
cnlDcmVhdGUoTlVMTCkpOwpAQCAtNDQzLDE1ICs0NDMsMTUgQEAgTlNBcnJheSAqRGF0YURldGVj
dGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYgY29udGV4dFJhbmdlLCBE
YXRhRGUKICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGFkZCBhIHRpbWVvdXQgdG8gdGhpcyBjYWxs
IHRvIG1ha2Ugc3VyZSBpdCBkb2Vzbid0IHRha2UgdG9vIG11Y2ggdGltZS4KICAgICBpZiAoIXNv
ZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3JlX0REU2Nhbm5lclNjYW5RdWVyeShzY2FubmVyLmdldCgp
LCBzY2FuUXVlcnkuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAorCiAgICAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IHNjYW5uZXJSZXN1bHRzID0gYWRvcHRDRihzb2Z0TGlua19EYXRh
RGV0ZWN0b3JzQ29yZV9ERFNjYW5uZXJDb3B5UmVzdWx0c1dpdGhPcHRpb25zKHNjYW5uZXIuZ2V0
KCksIGdldF9EYXRhRGV0ZWN0b3JzQ29yZV9ERFNjYW5uZXJDb3B5UmVzdWx0c09wdGlvbnNGb3JQ
YXNzaXZlVXNlKCkgfCBERFNjYW5uZXJDb3B5UmVzdWx0c09wdGlvbnNDb2FsZXNjZVNpZ25hdHVy
ZXMpKTsKICAgICBpZiAoIXNjYW5uZXJSZXN1bHRzKQogICAgICAgICByZXR1cm4gbmlsOwotICAg
IAorCiAgICAgQ0ZJbmRleCByZXN1bHRDb3VudCA9IENGQXJyYXlHZXRDb3VudChzY2FubmVyUmVz
dWx0cy5nZXQoKSk7CiAgICAgaWYgKCFyZXN1bHRDb3VudCkKICAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICAKKwogICAgIFZlY3RvcjxSZXRhaW5QdHI8RERSZXN1bHRSZWY+PiBhbGxSZXN1bHRzOwog
ICAgIFZlY3RvcjxSZXRhaW5QdHI8TlNJbmRleFBhdGg+PiBpbmRleFBhdGhzOwogICAgIE5TSW50
ZWdlciBjdXJyZW50VG9wTGV2ZWxJbmRleCA9IDA7CkBAIC01MTksNyArNTE5LDcgQEAgTlNBcnJh
eSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYgY29u
dGV4dFJhbmdlLCBEYXRhRGUKICAgICB9CiAgICAgCiAgICAgYXV0byB0eiA9IGFkb3B0Q0YoQ0ZU
aW1lWm9uZUNvcHlEZWZhdWx0KCkpOwotICAgIE5TRGF0ZSAqcmVmZXJlbmNlRGF0ZSA9IFtOU0Rh
dGUgZGF0ZV07CisgICAgTlNEYXRlICpyZWZlcmVuY2VEYXRlID0gW2NvbnRleHQgb2JqZWN0Rm9y
S2V5OmtEYXRhRGV0ZWN0b3JzUmVmZXJlbmNlRGF0ZUtleV0gPzogW05TRGF0ZSBkYXRlXTsKICAg
ICBUZXh0KiBsYXN0VGV4dE5vZGVUb1VwZGF0ZSA9IG51bGxwdHI7CiAgICAgU3RyaW5nIGxhc3RO
b2RlQ29udGVudDsKICAgICBzaXplX3QgY29udGVudE9mZnNldCA9IDA7CkBAIC02NTIsNyArNjUy
LDcgQEAgTlNBcnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRy
PFJhbmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGUKIH0KIAogI2Vsc2UKLU5TQXJyYXkgKkRhdGFE
ZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4mLCBEYXRhRGV0ZWN0
b3JUeXBlcykKK05TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJl
ZlB0cjxSYW5nZT4mLCBEYXRhRGV0ZWN0b3JUeXBlcywgTlNEaWN0aW9uYXJ5ICopCiB7CiAgICAg
cmV0dXJuIG5pbDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDcz
MGMwYjgwMTkyMDkxNjc3Mzg1ZTAyYWM1Y2U5YTI0YzY4MzgwMWYuLmIzMjI3NDJkNTIwMTBkODE4
M2JlN2MyZmE5MmQxNTM5OGMyZDVjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcApAQCAtMjMxMCw3ICsyMzEwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29t
cGxldGVGb3JUaGlzRnJhbWUoKQogICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lLnNldHRpbmdz
KCkuZGF0YURldGVjdG9yVHlwZXMoKSAhPSBEYXRhRGV0ZWN0b3JUeXBlTm9uZSAmJiBkb2N1bWVu
dCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogZG9jdW1lbnRFbGVtZW50ID0gZG9j
dW1lbnQtPmRvY3VtZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQ
dHI8UmFuZ2U+IGRvY3VtZW50UmFuZ2UgPSBtYWtlUmFuZ2UoZmlyc3RQb3NpdGlvbkluTm9kZShk
b2N1bWVudEVsZW1lbnQpLCBsYXN0UG9zaXRpb25Jbk5vZGUoZG9jdW1lbnRFbGVtZW50KSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLnNldERhdGFEZXRlY3Rpb25SZXN1bHRzKERh
dGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKGRvY3VtZW50UmFuZ2UsIG1fZnJhbWUu
c2V0dGluZ3MoKS5kYXRhRGV0ZWN0b3JUeXBlcygpKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2ZyYW1lLnNldERhdGFEZXRlY3Rpb25SZXN1bHRzKERhdGFEZXRlY3Rpb246OmRldGVjdENv
bnRlbnRJblJhbmdlKGRvY3VtZW50UmFuZ2UsIG1fZnJhbWUuc2V0dGluZ3MoKS5kYXRhRGV0ZWN0
b3JUeXBlcygpLCBtX2NsaWVudC5kYXRhRGV0ZWN0aW9uQ29udGV4dCgpKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fY2xpZW50LmRpc3BhdGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihtX2Zy
YW1lLmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkpOwogICAgICAgICAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDk5MmU1Yzg1MjI1YzQ4
MmE3M2VjMjFjNmUzY2E1MWJmOTM0Mjk3ZDEuLmQ4NmM2NDg3MDg4MGZjYTFkMDVmMzcxOWJiYWMx
ZDk5YmRlZDM0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
CkBAIC01NCw2ICs1NCw3IEBAIHR5cGVkZWYgdm9pZCogUmVtb3RlQVhPYmplY3RSZWY7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiBPQkpDX0NMQVNTIE5TQXJyYXk7CiBPQkpDX0NMQVNTIE5TQ2FjaGVk
VVJMUmVzcG9uc2U7CitPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNWaWV3
OwogI2VuZGlmCiAKQEAgLTI5Miw2ICsyOTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIC8vIEFsbG93IGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIHJldHJpZXZlIGEgRnJhbWUg
cGFyZW50IGlmIHRoZXJlJ3Mgbm8gUGxhdGZvcm1XaWRnZXQuCiAgICAgICAgIHZpcnR1YWwgUmVt
b3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpID0gMDsKICAgICAgICAg
dmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgTlNDYWNoZWRVUkxSZXNwb25zZSopIGNv
bnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250
ZXh0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBV
U0UoQ0ZORVRXT1JLKQogICAgICAgICAvLyBGSVhNRTogV2luZG93cyBzaG91bGQgdXNlIHdpbGxD
YWNoZVJlc3BvbnNlIC0gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NzI1Nz4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL0RhdGFE
ZXRlY3RvcnNVSVNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9EYXRhRGV0
ZWN0b3JzVUlTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDdkOWVlYzYwNzYxOTUwMmUxMGFiNWYzZTUxNjVi
OTBkYzk5YmFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L2lvcy9EYXRhRGV0ZWN0b3JzVUlTUEkuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4K
KworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQgPERhdGFEZXRlY3RvcnNV
SS9EREFjdGlvbi5oPgorI2ltcG9ydCA8RGF0YURldGVjdG9yc1VJL0RERGV0ZWN0aW9uQ29udHJv
bGxlci5oPgorCisjZWxzZQorCitAaW50ZXJmYWNlIEREQWN0aW9uIDogTlNPYmplY3QKK0BlbmQK
KworQGludGVyZmFjZSBEREFjdGlvbiAoKQorLSAoQk9PTCloYXNVc2VySW50ZXJmYWNlOworLSAo
TlNTdHJpbmcgKilsb2NhbGl6ZWROYW1lOworQHByb3BlcnR5IChyZWFkb25seSkgTlNTdHJpbmcg
KmFjdGlvblVUSTsKK0BlbmQKKworQHByb3RvY29sIERERGV0ZWN0aW9uQ29udHJvbGxlckludGVy
YWN0aW9uRGVsZWdhdGUgPE5TT2JqZWN0PgorQGVuZAorCitAaW50ZXJmYWNlIERERGV0ZWN0aW9u
Q29udHJvbGxlciA6IE5TT2JqZWN0IDxVSUFjdGlvblNoZWV0RGVsZWdhdGU+CitAZW5kCisKK0Bp
bnRlcmZhY2UgREREZXRlY3Rpb25Db250cm9sbGVyICgpCisrIChERERldGVjdGlvbkNvbnRyb2xs
ZXIgKilzaGFyZWRDb250cm9sbGVyOworKyAoTlNBcnJheSAqKXRhcEFuZEhvbGRTY2hlbWVzOwor
LSAodm9pZClwZXJmb3JtQWN0aW9uOihEREFjdGlvbiAqKWFjdGlvbiBmcm9tQWxlcnRDb250cm9s
bGVyOihVSUFsZXJ0Q29udHJvbGxlciAqKWFsZXJ0Q29udHJvbGxlciBpbnRlcmFjdGlvbkRlbGVn
YXRlOihpZCA8REREZXRlY3Rpb25Db250cm9sbGVySW50ZXJhY3Rpb25EZWxlZ2F0ZT4paW50ZXJh
Y3Rpb25EZWxlZ2F0ZTsKK0BlbmQKKworI2VuZGlmCisKK0BpbnRlcmZhY2UgREREZXRlY3Rpb25D
b250cm9sbGVyIChEZXRhaWxzVG9CZVJlbW92ZWQpCisvLyBGSVhNRTogVGhpcyB3aWxsIGJlIHJl
bW92ZWQgYXMgc29vbiBhcyA8cmRhcjovL3Byb2JsZW0vMTYzNDY5MTM+IGlzIGZpeGVkLgorLSAo
TlNBcnJheSAqKWFjdGlvbnNGb3JBbmNob3I6KGlkKWFuY2hvciB1cmw6KE5TVVJMICopdGFyZ2V0
VVJMIGZvckZyYW1lOihpZClmcmFtZTsKK0BlbmQKKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVX
T1JLKERhdGFEZXRlY3RvcnNVSSkKK1NPRlRfTElOS19DTEFTUyhEYXRhRGV0ZWN0b3JzVUksIERE
RGV0ZWN0aW9uQ29udHJvbGxlcikKK1NPRlRfTElOS19DT05TVEFOVChEYXRhRGV0ZWN0b3JzVUks
IGtEYXRhRGV0ZWN0b3JzTGVhZGluZ1RleHQsIGNvbnN0IE5TU3RyaW5nICopCitTT0ZUX0xJTktf
Q09OU1RBTlQoRGF0YURldGVjdG9yc1VJLCBrRGF0YURldGVjdG9yc1RyYWlsaW5nVGV4dCwgY29u
c3QgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChEYXRhRGV0ZWN0b3JzVUksIGtEYXRh
RGV0ZWN0b3JzUmVmZXJlbmNlRGF0ZSwgY29uc3QgTlNTdHJpbmcgKikKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9EYXRhRGV0ZWN0b3JzVUlTUEkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL3NwaS9pb3MvRGF0YURldGVjdG9yc1VJU1BJLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyYWE1OTVkYTkwMDdmYTg5OTJlYjdhNDM1ZGVmM2U3
Yzc2YzZlZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9EYXRhRGV0ZWN0b3JzVUlTUEkuaAorKysg
L2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxVSUtpdC9V
SUtpdC5oPgotI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgotCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKLQotI2ltcG9ydCA8RGF0YURldGVjdG9yc1VJL0REQWN0aW9uLmg+Ci0j
aW1wb3J0IDxEYXRhRGV0ZWN0b3JzVUkvREREZXRlY3Rpb25Db250cm9sbGVyLmg+Ci0KLSNlbHNl
Ci0KLUBpbnRlcmZhY2UgRERBY3Rpb24gOiBOU09iamVjdAotQGVuZAotCi1AaW50ZXJmYWNlIERE
QWN0aW9uICgpCi0tIChCT09MKWhhc1VzZXJJbnRlcmZhY2U7Ci0tIChOU1N0cmluZyAqKWxvY2Fs
aXplZE5hbWU7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBOU1N0cmluZyAqYWN0aW9uVVRJOwotQGVu
ZAotCi1AcHJvdG9jb2wgREREZXRlY3Rpb25Db250cm9sbGVySW50ZXJhY3Rpb25EZWxlZ2F0ZSA8
TlNPYmplY3Q+Ci1AZW5kCi0KLUBpbnRlcmZhY2UgREREZXRlY3Rpb25Db250cm9sbGVyIDogTlNP
YmplY3QgPFVJQWN0aW9uU2hlZXREZWxlZ2F0ZT4KLUBlbmQKLQotQGludGVyZmFjZSBERERldGVj
dGlvbkNvbnRyb2xsZXIgKCkKLSsgKERERGV0ZWN0aW9uQ29udHJvbGxlciAqKXNoYXJlZENvbnRy
b2xsZXI7Ci0rIChOU0FycmF5ICopdGFwQW5kSG9sZFNjaGVtZXM7Ci0tICh2b2lkKXBlcmZvcm1B
Y3Rpb246KEREQWN0aW9uICopYWN0aW9uIGZyb21BbGVydENvbnRyb2xsZXI6KFVJQWxlcnRDb250
cm9sbGVyICopYWxlcnRDb250cm9sbGVyIGludGVyYWN0aW9uRGVsZWdhdGU6KGlkIDxERERldGVj
dGlvbkNvbnRyb2xsZXJJbnRlcmFjdGlvbkRlbGVnYXRlPilpbnRlcmFjdGlvbkRlbGVnYXRlOwot
QGVuZAotCi0jZW5kaWYKLQotQGludGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgKERldGFp
bHNUb0JlUmVtb3ZlZCkKLS8vIEZJWE1FOiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBhcyBzb29uIGFz
IDxyZGFyOi8vcHJvYmxlbS8xNjM0NjkxMz4gaXMgZml4ZWQuCi0tIChOU0FycmF5ICopYWN0aW9u
c0ZvckFuY2hvcjooaWQpYW5jaG9yIHVybDooTlNVUkwgKil0YXJnZXRVUkwgZm9yRnJhbWU6KGlk
KWZyYW1lOwotQGVuZAotCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoRGF0YURldGVjdG9y
c1VJKQotU09GVF9MSU5LX0NMQVNTKERhdGFEZXRlY3RvcnNVSSwgREREZXRlY3Rpb25Db250cm9s
bGVyKQotU09GVF9MSU5LX0NPTlNUQU5UKERhdGFEZXRlY3RvcnNVSSwga0RhdGFEZXRlY3RvcnNM
ZWFkaW5nVGV4dCwgY29uc3QgTlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVChEYXRhRGV0
ZWN0b3JzVUksIGtEYXRhRGV0ZWN0b3JzVHJhaWxpbmdUZXh0LCBjb25zdCBOU1N0cmluZyAqKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvTG9hZFBhcmFtZXRlcnNDb2NvYS5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYWRlMDFkMDFlZTJhZWY0NTQ0OTBiOGM1ZjkyNjY2MjlmZmM3Y2MwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0xvYWRQYXJhbWV0
ZXJzQ29jb2EubW0KQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJMb2FkUGFyYW1ldGVycy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyc01hYy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBMb2FkUGFyYW1ldGVy
czo6cGxhdGZvcm1FbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGF0YURldGVjdGlvbkNvbnRleHQuZ2V0KCkpOwor
fQorCitib29sIExvYWRQYXJhbWV0ZXJzOjpwbGF0Zm9ybURlY29kZShJUEM6OkFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCit7CisgICAgaWYgKCFJUEM6OmRl
Y29kZShkZWNvZGVyLCBkYXRhLmRhdGFEZXRlY3Rpb25Db250ZXh0KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Mb2FkUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAxMGYxMzQ1ZjhkNTZjZGM4NTlmMTllMjY1YWVlODNmOWVhZDJkMzEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0wLDAg
KzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxv
YWRQYXJhbWV0ZXJzLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG5hdmlnYXRp
b25JRDsKKyAgICBlbmNvZGVyIDw8IHJlcXVlc3Q7CisgICAgZW5jb2RlciA8PCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwgZGF0YTsKKyAgICBlbmNvZGVyIDw8IHN0cmlu
ZzsKKyAgICBlbmNvZGVyIDw8IE1JTUVUeXBlOworICAgIGVuY29kZXIgPDwgZW5jb2RpbmdOYW1l
OworICAgIGVuY29kZXIgPDwgYmFzZVVSTFN0cmluZzsKKyAgICBlbmNvZGVyIDw8IHVucmVhY2hh
YmxlVVJMU3RyaW5nOworICAgIGVuY29kZXIgPDwgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJp
bmc7CisgICAgZW5jb2RlciA8PCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OworICAgIGVu
Y29kZXIgPDwgdXNlckRhdGE7CisKKyAgICBwbGF0Zm9ybUVuY29kZShlbmNvZGVyKTsKK30KKwor
Ym9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBMb2FkUGFyYW1ldGVycyYgZGF0YSkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEu
bmF2aWdhdGlvbklEKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShkYXRhLnJlcXVlc3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRhdGEuc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5kYXRhKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnN0cmluZykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5N
SU1FVHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZGF0YS5lbmNvZGluZ05hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRhdGEuYmFzZVVSTFN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS51bnJlYWNoYWJsZVVSTFN0cmluZykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5w
cm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRh
LnVzZXJEYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFwbGF0Zm9ybURl
Y29kZShkZWNvZGVyLCBkYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK3ZvaWQgTG9hZFBhcmFtZXRlcnM6
OnBsYXRmb3JtRW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3QKK3sKK30KKworYm9v
bCBMb2FkUGFyYW1ldGVyczo6cGxhdGZvcm1EZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBM
b2FkUGFyYW1ldGVycyYpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNlbmRpZiAvLyAhUExB
VEZPUk0oQ09DT0EpCisKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Mb2FkUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5OWQxNWNlMDdhZThmYjc5NzM0NzI2MjYx
YmQ5OTA4NzkzZDkxMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TG9hZFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBM
b2FkUGFyYW1ldGVyc19oCisjZGVmaW5lIExvYWRQYXJhbWV0ZXJzX2gKKworI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAi
VXNlckRhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorCitPQkpD
X0NMQVNTIE5TRGljdGlvbmFyeTsKKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBBcmd1bWVudERl
Y29kZXI7CitjbGFzcyBBcmd1bWVudEVuY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdHJ1Y3QgTG9hZFBhcmFtZXRlcnMgeworICAgIHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRF
bmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNv
ZGVyJiwgTG9hZFBhcmFtZXRlcnMmKTsKKworICAgIHZvaWQgcGxhdGZvcm1FbmNvZGUoSVBDOjpB
cmd1bWVudEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybURlY29kZShJ
UEM6OkFyZ3VtZW50RGVjb2RlciYsIExvYWRQYXJhbWV0ZXJzJik7CisKKyAgICB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQ7CisKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKKyAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKKworICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOworICAgIFN0cmluZyBzdHJpbmc7CisgICAgU3RyaW5n
IE1JTUVUeXBlOworICAgIFN0cmluZyBlbmNvZGluZ05hbWU7CisKKyAgICBTdHJpbmcgYmFzZVVS
TFN0cmluZzsKKyAgICBTdHJpbmcgdW5yZWFjaGFibGVVUkxTdHJpbmc7CisgICAgU3RyaW5nIHBy
b3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nOworCisgICAgdWludDY0X3Qgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeTsKKyAgICBVc2VyRGF0YSB1c2VyRGF0YTsKKworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGRhdGFEZXRlY3Rpb25Db250ZXh0
OworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIExvYWRQ
YXJhbWV0ZXJzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1l
bnRDb2RlcnNNYWMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNN
YWMuaAppbmRleCA0ZTJkYTc2MTkzMTUzZWQ4ZDgwOWQxODdlMDUyMzE1YzliNzFmN2I0Li5jZWE1
ZjAxZDg4YTQ3M2FkNjA2ZDQ0NjEyODQ3MTkxY2NkNjJkZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5oCkBAIC0zNyw2ICszNyw3IEBAIE9CSkNf
Q0xBU1MgTlNEaWN0aW9uYXJ5OwogT0JKQ19DTEFTUyBOU0ZvbnQ7CiBPQkpDX0NMQVNTIE5TTnVt
YmVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKK09CSkNfQ0xBU1MgTlNVUkw7CiAKIG5hbWVzcGFj
ZSBJUEMgewogCkBAIC04Nyw2ICs4OCwxMCBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIm
LCBSZXRhaW5QdHI8TlNEYXRlPiYpOwogdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgTlNE
YXRhICopOwogYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgUmV0YWluUHRyPE5TRGF0YT4m
KTsKIAorLy8gTlNVUkwKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIE5TVVJMICopOwor
Ym9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgUmV0YWluUHRyPE5TVVJMPiYpOworCiB9IC8v
IG5hbWVzcGFjZSBJUEMKIAogI2VuZGlmIC8vIEFyZ3VtZW50Q29kZXJzTWFjX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLm1tCmluZGV4IDY0MGU3ZWRk
MzQ0MTM5ZGIyMTlhZDFjMzEwNzMwY2ZhMzNmZTk5ZTEuLjI1NThiNDE4MzNlNjU0MGE0ZTNmMWJj
MTRmNjBiZGI4YzI5MGMyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
QXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1
bWVudENvZGVyc01hYy5tbQpAQCAtNTUsNiArNTUsNyBAQCBlbnVtIE5TVHlwZSB7CiAgICAgTlNT
dHJpbmdUeXBlLAogICAgIE5TRGF0ZVR5cGUsCiAgICAgTlNEYXRhVHlwZSwKKyAgICBOU1VSTFR5
cGUsCiAgICAgVW5rbm93biwKIH07CiAKQEAgLTg0LDYgKzg1LDggQEAgc3RhdGljIE5TVHlwZSB0
eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCiAgICAgICAgIHJldHVybiBOU0RhdGVUeXBlOwogICAg
IGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQogICAgICAgICByZXR1
cm4gTlNEYXRhVHlwZTsKKyAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU1VSTCBjbGFz
c11dKQorICAgICAgICByZXR1cm4gTlNVUkxUeXBlOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIFVua25vd247CkBAIC0xMjYsNiArMTI5LDkgQEAgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBpZCBvYmplY3QpCiAgICAgY2FzZSBOU0RhdGFUeXBl
OgogICAgICAgICBlbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8TlNEYXRhICo+KG9iamVjdCkp
OwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBOU1VSTFR5cGU6CisgICAgICAgIGVuY29kZShl
bmNvZGVyLCBzdGF0aWNfY2FzdDxOU1VSTCAqPihvYmplY3QpKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgVW5rbm93bjoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjA3LDYgKzIxMywx
MyBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxpZD4m
IHJlc3VsdCkKICAgICAgICAgcmVzdWx0ID0gZGF0YTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQorICAgIGNhc2UgTlNVUkxUeXBlOiB7CisgICAgICAgIFJldGFpblB0cjxOU1VSTD4gVVJM
OworICAgICAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBVUkwpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXN1bHQgPSBVUkw7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KICAgICBjYXNlIFVua25vd246CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC01MDUsNCArNTE4LDE5IEBAIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPE5TRGF0YT4mIHJlc3VsdCkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBOU1VS
TCAqVVJMKQoreworICAgIGVuY29kZShlbmNvZGVyLCAoQ0ZVUkxSZWYpVVJMKTsKK30KKworYm9v
bCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8TlNVUkw+JiByZXN1
bHQpCit7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBVUkw7CisgICAgaWYgKCFkZWNvZGUoZGVj
b2RlciwgVVJMKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0ID0gYWRvcHRO
UygoTlNVUkwgKilVUkwubGVha1JlZigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgK
aW5kZXggNmE4ZmFjZGY2OThmMGU0NjRiMGZhYzg4NzBlNzgyMDRkNmYzODY3ZC4uMTFiYjQyMTFk
MDMyOWE2NDRjOTNkOTFjZmE3OGMyZmJhMmZhNDhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMTY0LDYgKzE2NCw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxlVGFwQXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpIHsgfQogICAgIHZpcnR1YWwgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250
cm9sbGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgdmlydHVhbCBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkgeyByZXR1
cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xpY2tBdXRvRmls
bEJ1dHRvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6T2JqZWN0KikgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDA4M2MxZjkzNjMz
YjgzM2FlZjlkYzM1ZjNmMmM3YWE3ZDBiYmQ5ZTQuLmQyYWQ2OThiYmVmNmE1MTA4Y2NmMWUxMjAz
NmM3Yzc4MjhiMzgxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaApAQCAtOTcsNyArOTcsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgUmV0YWluUHRyPE5T
QXJyYXk+IGFjdGlvbnNGb3JFbGVtZW50KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICosIFJldGFp
blB0cjxOU0FycmF5PiBkZWZhdWx0QWN0aW9ucykgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlk
Tm90SGFuZGxlVGFwQXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOwog
ICAgICAgICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKSBvdmVy
cmlkZTsKLSNlbmRpZgorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKworICAgICAgICBOU0RpY3Rp
b25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkgb3ZlcnJpZGU7CisKICAgICAgICAgdm9pZCBp
bWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBv
dmVycmlkZTsKIAogICAgICAgICBVSURlbGVnYXRlJiBtX3VpRGVsZWdhdGU7CkBAIC0xMzAsNiAr
MTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkTm90SGFuZGxlVGFwQXND
bGlja0F0UG9pbnQgOiAxOwogICAgICAgICBib29sIHByZXNlbnRpbmdWaWV3Q29udHJvbGxlckZv
cldlYlZpZXcgOiAxOwogI2VuZGlmCisgICAgICAgIGJvb2wgZGF0YURldGVjdGlvbkNvbnRleHRG
b3JXZWJWaWV3IDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3SW1hZ2VPck1lZGlhRG9jdW1lbnRT
aXplQ2hhbmdlZCA6IDE7CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggMmJlZDQ0OTE2YWZhZmJm
MDQ3ZGU5YmM0YTBmYjAxNGE4ZGNkZTI2MC4uNDQwOTUzN2FmOTlhZTY1ZDcwMDVjODA1YmMyMGEz
NzRhYmMxNzY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUubW0KQEAgLTEwMSw2ICsxMDEsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlk
IDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdE
aWROb3RIYW5kbGVUYXBBc0NsaWNrQXRQb2ludCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZE5vdEhhbmRsZVRhcEFzQ2xpY2tBdFBvaW50OildOwog
ICAgIG1fZGVsZWdhdGVNZXRob2RzLnByZXNlbnRpbmdWaWV3Q29udHJvbGxlckZvcldlYlZpZXcg
PSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfcHJlc2VudGluZ1ZpZXdD
b250cm9sbGVyRm9yV2ViVmlldzopXTsKICNlbmRpZgorICAgIG1fZGVsZWdhdGVNZXRob2RzLmRh
dGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF9kYXRhRGV0ZWN0aW9uQ29udGV4dEZvcldlYlZpZXc6KV07CiAgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0ltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQgPSBb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzppbWFnZU9yTWVk
aWFEb2N1bWVudFNpemVDaGFuZ2VkOildOwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBA
IC00NDEsNiArNDQyLDE4IEBAIFVJVmlld0NvbnRyb2xsZXIgKlVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKQogCiAjZW5kaWYKIAorTlNEaWN0aW9uYXJ5ICpV
SURlbGVnYXRlOjpVSUNsaWVudDo6ZGF0YURldGVjdGlvbkNvbnRleHQoKQoreworICAgIGlmICgh
bV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2Vi
VmlldykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV91
aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gW3N0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdh
dGVQcml2YXRlPj4oZGVsZWdhdGUpIF9kYXRhRGV0ZWN0aW9uQ29udGV4dEZvcldlYlZpZXc6bV91
aURlbGVnYXRlLm1fd2ViVmlld107Cit9CisKIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6Omlt
YWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3
U2l6ZSkKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
SW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCAxMGZiYzdlZWYyM2Rl
NWVhYjAzOGRhNjRiOWI5ZDRlMjM1OTlkYjg4Li41MDYzOWU1Mzc1MzVmYTJmY2VhZjA4YzcxZjRm
ZjQ0YWI4ZWRlZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0yNCw5ICsyNCwxMiBAQAogICovCiAKICNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0ICJXZWJQYWdl
UHJveHkuaCIKIAorI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKICNpbXBvcnQgIkRhdGFEZXRlY3Rp
b25SZXN1bHQuaCIKKyNpbXBvcnQgIkxvYWRQYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJXZWJQcm9j
ZXNzUHJveHkuaCIKIAogI2ltcG9ydCA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oPgog
I2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CkBAIC02OCw0ICs3MSw5IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkRm9yRnJhbWUoY29uc3QgV2ViQ29y
ZTo6Q29udGVudEZpbHRlCiB9CiAjZW5kaWYKIAordm9pZCBXZWJQYWdlUHJveHk6OmFkZFBsYXRm
b3JtTG9hZFBhcmFtZXRlcnMoTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQoreworICAg
IGxvYWRQYXJhbWV0ZXJzLmRhdGFEZXRlY3Rpb25Db250ZXh0ID0gbV91aUNsaWVudC0+ZGF0YURl
dGVjdGlvbkNvbnRleHQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCA1YjA1ZDJmYWRjOTUyNGQ2MTBmZGEzMWYzMmIxMGI5MTY4YjgxZGE2
Li44YjhlMmM1YWQ0OGM2Y2ZhNzFlZGE5NmE2MzExNDdmNzkzYzU4Yjc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1
ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkxv
YWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5hdGl2ZVdl
Ykdlc3R1cmVFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKQEAg
LTkyMCwxMSArOTIxLDE3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6
bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0CiAgICAgaWYgKCFpc1Zh
bGlkKCkpCiAgICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CiAKLSAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAgICBib29sIGNyZWF0ZWRF
eHRlbnNpb24gPSBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKHJlcXVlc3Qu
dXJsKCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQ
YXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24t
Pm5hdmlnYXRpb25JRCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0Owor
ICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSAodWludDY0
X3Qpc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBsb2FkUGFyYW1ldGVycy51c2Vy
RGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhKS5nZXQoKSk7CisgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFsaXpl
U2FuZGJveEV4dGVuc2lvbkhhbmRsZShyZXF1ZXN0LnVybCgpLCBsb2FkUGFyYW1ldGVycy5zYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBpZiAoY3JlYXRlZEV4dGVuc2lvbikKICAgICAgICAg
bV9wcm9jZXNzLT53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigp
OwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobmF2
aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIHJlcXVlc3QsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUs
ICh1aW50NjRfdClzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBVc2VyRGF0YShwcm9jZXNz
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdlSUQp
OworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOworCisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1l
dGVycyksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5z
dGFydCgpOwogCiAgICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CkBAIC05NTksMTAgKzk2
NiwxNiBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogCiAgICAgU3RyaW5nIHJlc291cmNlRGly
ZWN0b3J5UGF0aCA9IHJlc291cmNlRGlyZWN0b3J5VVJMLmZpbGVTeXN0ZW1QYXRoKCk7CiAKLSAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocmVzb3VyY2VEaXJlY3RvcnlQYXRoLCBTYW5k
Ym94RXh0ZW5zaW9uOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgTG9h
ZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CisgICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlv
bklEID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7CisgICAgbG9hZFBhcmFtZXRlcnMucmVx
dWVzdCA9IGZpbGVVUkw7CisgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSA9ICh1aW50NjRfdClTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRO
b3RBbGxvdzsKKyAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3Mo
KS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7CisgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHJlc291cmNlRGlyZWN0b3J5UGF0aCwgU2FuZGJveEV4
dGVuc2lvbjo6UmVhZE9ubHksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUp
OworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOworCiAgICAg
bV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKHJlc291cmNlRGlyZWN0b3J5VVJM
KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRSZXF1ZXN0KG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBmaWxlVVJMLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
LCAodWludDY0X3QpU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cs
IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5n
ZXQoKSkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3Mt
PnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIFdURk1vdmUobmF2
aWdhdGlvbik7CkBAIC05ODIsOCArOTk1LDE3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpEYXRhKiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JCiAg
ICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CiAKKyAg
ICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKKyAgICBsb2FkUGFyYW1ldGVycy5uYXZp
Z2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKTsKKyAgICBsb2FkUGFyYW1ldGVy
cy5kYXRhID0gZGF0YS0+ZGF0YVJlZmVyZW5jZSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLk1JTUVU
eXBlID0gTUlNRVR5cGU7CisgICAgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lID0gZW5jb2Rp
bmc7CisgICAgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZyA9IGJhc2VVUkw7CisgICAgbG9h
ZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0
c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRl
cnMobG9hZFBhcmFtZXRlcnMpOworCiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9C
YXNlVVJMKGJhc2VVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
TG9hZERhdGEobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIGRhdGEtPmRhdGFSZWZlcmVuY2Uo
KSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEobG9hZFBhcmFtZXRlcnMp
LCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQo
KTsKIAogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwpAQCAtMTAwNCw4ICsxMDI2LDE2
IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEhUTUxTdHJpbmco
Y29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAg
IHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CiAKKyAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1l
dGVyczsKKyAgICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKTsKKyAgICBsb2FkUGFyYW1ldGVycy5zdHJpbmcgPSBodG1sU3RyaW5nOworICAg
IGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFtZSA9IEFTQ0lJTGl0ZXJhbCgidGV4dC9odG1sIik7
CisgICAgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZyA9IGJhc2VVUkw7CisgICAgbG9hZFBh
cmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1Rv
SGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMo
bG9hZFBhcmFtZXRlcnMpOworCiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNl
VVJMKGJhc2VVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9h
ZEhUTUxTdHJpbmcobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIGh0bWxTdHJpbmcsIGJhc2VV
UkwsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRh
KS5nZXQoKSkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb2FkU3RyaW5nKGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vz
cy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gV1RGTW92ZShu
YXZpZ2F0aW9uKTsKQEAgLTEwMzMsOSArMTA2MywxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9h
ZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJp
bgogICAgIGlmIChtX21haW5GcmFtZSkKICAgICAgICAgbV9tYWluRnJhbWUtPnNldFVucmVhY2hh
YmxlVVJMKHVucmVhY2hhYmxlVVJMKTsKIAorICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0
ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IDA7CisgICAgbG9hZFBhcmFt
ZXRlcnMuc3RyaW5nID0gaHRtbFN0cmluZzsKKyAgICBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3Ry
aW5nID0gYmFzZVVSTDsKKyAgICBsb2FkUGFyYW1ldGVycy51bnJlYWNoYWJsZVVSTFN0cmluZyA9
IHVucmVhY2hhYmxlVVJMOworICAgIGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9y
VVJMU3RyaW5nID0gbV9mYWlsaW5nUHJvdmlzaW9uYWxMb2FkVVJMOworICAgIGxvYWRQYXJhbWV0
ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXModXNlckRhdGEpLmdldCgpKTsKKyAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQ
YXJhbWV0ZXJzKTsKKwogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChi
YXNlVVJMKTsKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwodW5yZWFj
aGFibGVVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZEFs
dGVybmF0ZUhUTUxTdHJpbmcoaHRtbFN0cmluZywgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIG1f
ZmFpbGluZ1Byb3Zpc2lvbmFsTG9hZFVSTCwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGxvYWRQ
YXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1l
cigpLnN0YXJ0KCk7CiB9CiAKQEAgLTEwNTAsNyArMTA4OSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZFBsYWluVGV4dFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgQVBJOjpPYmplY3Qq
IHVzZXJEYQogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rp
b24oKTsKICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwodHJhbnNh
Y3Rpb24sIGJsYW5rVVJMKCkuc3RyaW5nKCkpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkUGxhaW5UZXh0U3RyaW5nKHN0cmluZywgVXNlckRhdGEocHJvY2Vz
cygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKSksIG1fcGFnZUlE
KTsKKyAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKKyAgICBsb2FkUGFyYW1ldGVy
cy5uYXZpZ2F0aW9uSUQgPSAwOworICAgIGxvYWRQYXJhbWV0ZXJzLnN0cmluZyA9IHN0cmluZzsK
KyAgICBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSA9IEFTQ0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIp
OworICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKKyAgICBhZGRQbGF0Zm9ybUxv
YWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFN0cmluZyhsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKICAg
ICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCkBAIC0xMDY1
LDcgKzExMTEsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6
OkRhdGEqIHdlYkFyY2hpdmVEYXRhLCBBUEk6Ok9iamVjdCogdXMKICAgICBhdXRvIHRyYW5zYWN0
aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAgICAgbV9wYWdlTG9hZFN0YXRl
LnNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCBibGFua1VSTCgpLnN0cmluZygp
KTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFdlYkFyY2hp
dmVEYXRhKHdlYkFyY2hpdmVEYXRhLT5kYXRhUmVmZXJlbmNlKCksIFVzZXJEYXRhKHByb2Nlc3Mo
KS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSkpLCBtX3BhZ2VJRCk7
CisgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CisgICAgbG9hZFBhcmFtZXRlcnMu
bmF2aWdhdGlvbklEID0gMDsKKyAgICBsb2FkUGFyYW1ldGVycy5kYXRhID0gd2ViQXJjaGl2ZURh
dGEtPmRhdGFSZWZlcmVuY2UoKTsKKyAgICBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSA9IEFTQ0lJ
TGl0ZXJhbCgiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIik7CisgICAgbG9hZFBhcmFtZXRlcnMu
ZW5jb2RpbmdOYW1lID0gQVNDSUlMaXRlcmFsKCJ1dGYtMTYiKTsKKyAgICBsb2FkUGFyYW1ldGVy
cy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KHVzZXJEYXRhKS5nZXQoKSk7CisgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFy
YW1ldGVycyk7CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRE
YXRhKGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA0MDY2MTNhODQzNjNhNTBhMjk4NDEzNTliOWY1Y2RhMmIxMDI2ZGE0Li4x
MGE2YTc0MjllZGQ3MmNjOWM0YjIzY2RlMDYyNDllMWFjNjYxMjA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMDUsNiArMjA1LDcgQEAgc3RydWN0IEF0dHJp
YnV0ZWRTdHJpbmc7CiBzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiBzdHJ1Y3QgRWRpdGluZ1Jhbmdl
Owogc3RydWN0IEVkaXRvclN0YXRlOworc3RydWN0IExvYWRQYXJhbWV0ZXJzOwogc3RydWN0IFBs
YXRmb3JtUG9wdXBNZW51RGF0YTsKIHN0cnVjdCBQcmludEluZm87CiBzdHJ1Y3QgV2ViUG9wdXBJ
dGVtOwpAQCAtMTMzNyw2ICsxMzM4LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIERpY3Rpb25hcnku
CiAgICAgdm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBXZWJDb3JlOjpEaWN0
aW9uYXJ5UG9wdXBJbmZvJik7CisKKyAgICB2b2lkIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMo
TG9hZFBhcmFtZXRlcnMmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQuaApp
bmRleCBlMDVhZWUwMjViOWVlZjdjYmY0YWY1Y2JiMjlkNjQ2ODY0MWI4NTgxLi5jNmI1NGRkYmE1
MWQ4ODJkYmIyYTViNTc4NWNjYTBkMDZmYmVlNGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQuaApAQCAtMjUsMTAgKzI1
LDEwIEBACiAKICNpZiBQTEFURk9STShJT1MpCiAKLSNpbXBvcnQgIkRhdGFEZXRlY3RvcnNVSVNQ
SS5oIgogI2ltcG9ydCAiR2VzdHVyZVR5cGVzLmgiCiAjaW1wb3J0ICJXS0FjdGlvblNoZWV0Lmgi
CiAjaW1wb3J0IDxVSUtpdC9VSVBvcG92ZXJDb250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0RhdGFEZXRlY3RvcnNVSVNQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggNjI2MGRlNDYxMWE4ZWFkYTVjYzE1
MjljMTMzYzc1MWM2ODA2M2ZjNS4uYjNlNDk4MjU0MGJjY2FlMTliNzEyOGNhNjQ4ZGQzYTYwYjEw
YjRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBQTEFURk9STShJ
T1MpCiAKICNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCi0jaW1wb3J0ICJEYXRhRGV0ZWN0b3JzVUlT
UEkuaCIKICNpbXBvcnQgIkVkaXRpbmdSYW5nZS5oIgogI2ltcG9ydCAiTWFuYWdlZENvbmZpZ3Vy
YXRpb25TUEkuaCIKICNpbXBvcnQgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKQEAgLTY1LDYg
KzY0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29y
ZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRlY3RvcnNVSVNQSS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9GbG9hdFF1YWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QYXRoLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYjc2NDY2MTc2MzM0NjExZjJiMDMwZTQ1OWVmNzE2Yjg2Y2Vk
YmEzMS4uZTY2N2VlNGZhYjllZjc4Njg0MTQxMDE0YTk3ODU5NmRhNWNkOGM5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTk2
LDYgKzU5Niw5IEBACiAJCTI5QUQzMDk2MTY0QjRDOTMwMDcyREVBOSAvKiBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI5QUQzMDk1MTY0QjRDOTMwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eU1hYy5tbSAqLzsgfTsKIAkJMjlDRDU1QUExMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyOUNENTVBODEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCAqLzsgfTsKIAkJMjlDRDU1QUIxMjhFMjk0RjAwMTMz
Qzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRDU1QTkxMjhFMjk0RjAwMTMzQzg1
IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tICovOyB9OworCQkyRDEwODc2
MDFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxMDg3NUUxRDJDNTczRTAwQjg1RjgyIC8q
IExvYWRQYXJhbWV0ZXJzLmNwcCAqLzsgfTsKKwkJMkQxMDg3NjExRDJDNTczRTAwQjg1RjgyIC8q
IExvYWRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDEwODc1RjFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuaCAqLzsg
fTsKKwkJMkQxMDg3NjMxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzQ29jb2EubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDEwODc2MjFE
MkM2NDFCMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnNDb2NvYS5tbSAqLzsgfTsKIAkJMkQxMjVD
NUUxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxMjVDNUMxODU3RUEwNTAwM0JB
M0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oICovOyB9OwogCQkyRDEyNUM1RjE4NTdFQTA1
MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxMjVDNUQxODU3RUEwNTAwM0JBM0NCIC8q
IFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJMkQxQjVENUQxODU4NjlDODAw
NkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDFCNUQ1QjE4NTg2OUM4
MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKQEAgLTE3MzYsNyArMTczOSw2IEBACiAJCUNFMTFBRDUyMUNCQzQ4MkYwMDY4MUVFNSAvKiBD
b2RlU2lnbmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi87IH07CiAJCUNF
MUEwQkQyMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCQ0MxQTQ4RTZDNjAw
NTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJCUNFMUEwQkQzMUE0OEU2
QzYwMDU0RUY3NCAvKiBDb3JlUERGU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJDRDFBNDhFNkM2MDA1NEVGNzQgLyogQ29yZVBERlNQSS5o
ICovOyB9OwotCQlDRTFBMEJENDFBNDhFNkM2MDA1NEVGNzQgLyogRGF0YURldGVjdG9yc1VJU1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJD
RTFBNDhFNkM2MDA1NEVGNzQgLyogRGF0YURldGVjdG9yc1VJU1BJLmggKi87IH07CiAJCUNFMUEw
QkQ1MUE0OEU2QzYwMDU0RUY3NCAvKiBNYW5hZ2VkQ29uZmlndXJhdGlvblNQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCQ0YxQTQ4RTZDNjAw
NTRFRjc0IC8qIE1hbmFnZWRDb25maWd1cmF0aW9uU1BJLmggKi87IH07CiAJCUNFMUEwQkQ2MUE0
OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFMUEwQkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCAqLzsg
fTsKIAkJQ0UxQTBCRDcxQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCRDExQTQ4RTZDNjAw
NTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oICovOyB9OwpAQCAtMjYwMSw2ICsyNjAzLDkgQEAKIAkJ
MjlDRDU1QTkxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RC
YXNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJEMDAzNTIyMUJDNzQxNDgwMERBODcxNiAvKiBEZXByZWNhdGVkUERGUGx1Z2luLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERlcHJlY2F0ZWRQREZQbHVnaW4uaDsgcGF0aCA9
IFBERi9EZXByZWNhdGVkUERGUGx1Z2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJEMDAzNTIzMUJDNzQxNDgwMERBODcxNiAvKiBEZXByZWNhdGVkUERGUGx1Z2luLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRGVwcmVjYXRlZFBERlBsdWdpbi5t
bTsgcGF0aCA9IFBERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyRDEwODc1RTFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9hZFBhcmFtZXRlcnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDEwODc1RjFEMkM1NzNFMDBCODVGODIg
LyogTG9hZFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9h
ZFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQxMDg3NjIxRDJD
NjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2FkUGFyYW1ldGVyc0NvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRDEyNUM1QzE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1
cmVDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdHZXN0
dXJlQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDEyNUM1RDE4
NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDFCNUQ1QTE4NTg2NTk5MDA2QzY1OTYg
LyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpZXdHZXN0dXJlQ29u
dHJvbGxlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4NDIs
NyArMzg0Nyw2IEBACiAJCUNFMTFBRDUxMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU2lnbmluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0
aW9uU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXNzZXJ0
aW9uU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCQ0Qx
QTQ4RTZDNjAwNTRFRjc0IC8qIENvcmVQREZTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29yZVBERlNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRTFB
MEJDRTFBNDhFNkM2MDA1NEVGNzQgLyogRGF0YURldGVjdG9yc1VJU1BJLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRlY3RvcnNVSVNQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRTFBMEJDRjFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZp
Z3VyYXRpb25TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFuYWdlZENv
bmZpZ3VyYXRpb25TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDAx
QTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUQ0NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDExQTQ4
RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZXh0SW5wdXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0
ODQsNiArNDQ4OCw4IEBACiAJCQkJQkNDRjZCMjMxMkM5M0U3QTAwOEY5QzM1IC8qIEltYWdlT3B0
aW9ucy5oICovLAogCQkJCTFBOTJEQzEyMTJGOEJBQjkwMDE3QUY2NSAvKiBMYXllclRyZWVDb250
ZXh0LmNwcCAqLywKIAkJCQkxQTkyREMxMDEyRjhCQTQ2MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29u
dGV4dC5oICovLAorCQkJCTJEMTA4NzVFMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVy
cy5jcHAgKi8sCisJCQkJMkQxMDg3NUYxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJz
LmggKi8sCiAJCQkJMkQ1MDM2NkExQkNERTE3OTAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVF
dmVudC5oICovLAogCQkJCUMwMkJGRjE1MTI1MTRGRDgwMDlDQ0JFQSAvKiBOYXRpdmVXZWJLZXli
b2FyZEV2ZW50LmggKi8sCiAJCQkJMzFFQTI1RDMxMzRGNzhENjAwNUIxNDUyIC8qIE5hdGl2ZVdl
Yk1vdXNlRXZlbnQuaCAqLywKQEAgLTUyMzgsNiArNTI0NCw3IEBACiAJCQkJMzdCRUM0REUxOTQ5
MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIubW0gKi8sCiAJCQkJ
QzU1RjkxNkMxQzU5NUU0NDAwMjlFOTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQuaCAqLywKIAkJ
CQlDNTVGOTE2RDFDNTk1RTQ0MDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5tbSAqLywK
KwkJCQkyRDEwODc2MjFEMkM2NDFCMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnNDb2NvYS5tbSAq
LywKIAkJCQkxQUIxRjc4RTFEMUIzNEE2MDA3QzlCRDEgLyogV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0gKi8sCiAJCQkJMzdDNEMwOTIxODE0QjNBRjAwMzY4OEI5IC8qIFdLTlNBcnJheS5o
ICovLAogCQkJCTM3QzRDMDkxMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkubW0gKi8sCkBA
IC03MTYwLDcgKzcxNjcsNiBAQAogCQkJCUNFMUEwQkNDMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3Nl
cnRpb25TZXJ2aWNlc1NQSS5oICovLAogCQkJCUNEQTA0MUYzMUFDRTIxMDUwMDRBMTNFQyAvKiBC
YWNrQm9hcmRTZXJ2aWNlc1NQSS5oICovLAogCQkJCUNFMUEwQkNEMUE0OEU2QzYwMDU0RUY3NCAv
KiBDb3JlUERGU1BJLmggKi8sCi0JCQkJQ0UxQTBCQ0UxQTQ4RTZDNjAwNTRFRjc0IC8qIERhdGFE
ZXRlY3RvcnNVSVNQSS5oICovLAogCQkJCUNFMUEwQkNGMUE0OEU2QzYwMDU0RUY3NCAvKiBNYW5h
Z2VkQ29uZmlndXJhdGlvblNQSS5oICovLAogCQkJCTU3OUQxOEI3MUNDRkUzNEIwMEIxOTc0QyAv
KiBQaG90b3NTUEkuaCAqLywKIAkJCQlDRTFBMEJEMDFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJ
LmggKi8sCkBAIC03NDYzLDcgKzc0NjksNiBAQAogCQkJCTUxMkE5NzZBMTgwRTA5QjgwMDM5QTE0
OSAvKiBEYXRhYmFzZVByb2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTAzMkYxRTE4MEY3OTE3MDA5NjFCQjcgLyogRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NUY5MTcxMUM1OTY3NkUwMDI5RTkyRCAv
KiBEYXRhRGV0ZWN0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLywKLQkJCQlDRTFBMEJENDFBNDhF
NkM2MDA1NEVGNzQgLyogRGF0YURldGVjdG9yc1VJU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUM3NTM4MDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODM4OTFCNkMxQTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjcwMjFDMjNGODRDMDBENDExODMgLyogRG93bmxv
YWQuaCBpbiBIZWFkZXJzICovLApAQCAtNzg1NSw2ICs3ODYwLDcgQEAKIAkJCQk3Qzg1RkQ3QzE5
MzQxNUE4MDAwMTc3QzQgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0M4NUZEODAxOTM0MTY2NTAwMDE3N0M0IC8qIFdlYlByZWZlcmVuY2VzS2V5cy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNENTk4QUMxMTJCN0ZERjAwRUM4QzIzIC8qIFdlYlByZWZl
cmVuY2VzU3RvcmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEMTA4NzYxMUQyQzU3M0UwMEI4NUY4
MiAvKiBMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEOTcxMEY0MzdB
RjAwNThDMTVBIC8qIFdlYlByb2Nlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQzQTA5MTI0
RDExQTkwMEZGQkZCNSAvKiBXZWJQcm9jZXNzQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUEwNDNGNkExMjUxNEQ4QjAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtODg4MCw2ICs4ODg2LDcgQEAKIAkJCQlDNTlDNEE1ODE4
QjgxMTc0MDA3QkRDQjYgLyogQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTE1RTc3MjcxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0VFOTY2QzExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkyRDEwODc2MzFEMkM2NDFCMDBCODVGODIgLyogTG9hZFBh
cmFtZXRlcnNDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUxQTMxNzM1MTM0Q0VBODAwMDdD
OUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyRjU4OTYx
MkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTEyRjU4OTgxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkwNjMsNiArOTA3MCw3IEBA
CiAJCQkJMUEyRDgyQTYxMjdGNEVBQjAwMUVCOTYyIC8qIE5QT2JqZWN0UHJveHkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUEyRDgyQTgxMjdGNEVBQjAwMUVCOTYyIC8qIE5QUmVtb3RlT2JqZWN0
TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjE2MUIxMTFGMzc2NjQwMDhBRDBGNSAvKiBO
UFJ1bnRpbWVPYmplY3RNYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkQxMDg3NjAxRDJDNTcz
RTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjE2
MkIwMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUEyRDg0QTQxMjdGNkFEMTAwMUVCOTYyIC8qIE5QVmFyaWFudERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM4QUNBMTQxNjY3MEQ4OTAwNEMxOTQxIC8qIE9iakNPYmplY3RH
cmFwaC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApp
bmRleCAyZDcxMmJjNzBkZTFhZWE1YjBhNDY5N2UxNjIzYTg1NTIzM2M4NDJmLi42YWYwNzZlODNl
MzBjNGVhN2VmYjg3ZTg4YjFhNDU5ZGQ5OWU1ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtMTYyOSw3ICsxNjI5LDcgQEAgUmVtb3RlQVhPYmplY3RSZWYgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKQogICAgIHJldHVybiB3
ZWJQYWdlLT5hY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCk7CiB9CiAgICAgCi1OU0NhY2hlZFVS
TFJlc3BvbnNlKiBXZWJGcmFtZUxvYWRlckNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2UoRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2Uq
IHJlc3BvbnNlKSBjb25zdAorTlNDYWNoZWRVUkxSZXNwb25zZSAqV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OndpbGxDYWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkgY29uc3QKIHsKICAgICBXZWJQ
YWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTE2
MzgsNiArMTYzOCwxNSBAQCBOU0NhY2hlZFVSTFJlc3BvbnNlKiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6d2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bgogICAgIHJldHVybiB3ZWJQ
YWdlLT5pbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudCgpLnNob3VsZENhY2hlUmVzcG9u
c2Uod2ViUGFnZSwgbV9mcmFtZSwgaWRlbnRpZmllcikgPyByZXNwb25zZSA6IG5pbDsKIH0KIAor
TlNEaWN0aW9uYXJ5ICpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGF0YURldGVjdGlvbkNvbnRleHQo
KQoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3
ZWJQYWdlKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHdlYlBhZ2UtPmRhdGFE
ZXRlY3Rpb25Db250ZXh0KCk7Cit9CisKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogYm9v
bCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1lbnQoY29u
c3QgU3RyaW5nJiAvKm1pbWVUeXBlKi8pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKaW5kZXggZTIwNzQwNDU5NzgxMDU5ZTBlOGMzMzEwODBiY2NiOTIzMjIxYTY5NC4uZWU2YmVi
ZDY4NDlhZjVkMmU0OGMzZjk5NGVkYzIyNjNiNTE2MmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtMjIxLDYgKzIyMSw4IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQVhPYmpl
Y3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIG92ZXJyaWRlOwogICAgIAogICAgIE5T
Q2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgY29u
c3Qgb3ZlcnJpZGU7CisKKyAgICBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkg
b3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1l
bnQoY29uc3QgU3RyaW5nJiAvKm1pbWVUeXBlKi8pIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDU4MzEzYzExODRl
NTZkOGNmNWY5YjNjYzQ0OTg3ZGZjOTg1ZGY5MzcuLmZhZGYzZjk5YzA2YzEyYTljZDc1MDBlZDI2
MWFiNGU1MmQzMGE2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5o
IgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIgorI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCiAjaW5j
bHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCkBAIC0xMTM5LDIx
ICsxMTQwLDIzIEBAIHZvaWQgV2ViUGFnZTo6bG9hZFVSTEluRnJhbWUoY29uc3QgU3RyaW5nJiB1
cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiAgICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5s
b2FkKEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUtPmNvcmVGcmFtZSgpLCBSZXNvdXJjZVJlcXVlc3Qo
VVJMKFVSTCgpLCB1cmwpKSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90
QWxsb3cpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdCh1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCB1aW50NjRfdCBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBh
Z2U6OmxvYWRSZXF1ZXN0KGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKIHsK
ICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcih0aGlzKTsKIAotICAgIG1f
cGVuZGluZ05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKKyAgICBtX3BlbmRpbmdOYXZpZ2F0
aW9uSUQgPSBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQ7CiAKLSAgICBtX3NhbmRib3hFeHRl
bnNpb25UcmFja2VyLmJlZ2luTG9hZChtX21haW5GcmFtZS5nZXQoKSwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSk7CisgICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci5iZWdpbkxvYWQobV9tYWlu
RnJhbWUuZ2V0KCksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogCiAg
ICAgLy8gTGV0IHRoZSBJbmplY3RlZEJ1bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0
aGUgbG9hZCwgcGFzc2luZyB0aGUgdXNlciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcwogICAgIC8v
IHRvIGFsbCB0aGUgY2xpZW50IHRvIHNldCB1cCBhbnkgbmVlZGVkIHN0YXRlLgotICAgIG1fbG9h
ZGVyQ2xpZW50LndpbGxMb2FkVVJMUmVxdWVzdCh0aGlzLCByZXF1ZXN0LCBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQud2lsbExvYWRVUkxSZXF1ZXN0KHRoaXMsIGxvYWRQ
YXJhbWV0ZXJzLnJlcXVlc3QsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHMobG9hZFBhcmFtZXRlcnMudXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKwor
ICAgIG1fZGF0YURldGVjdGlvbkNvbnRleHQgPSBsb2FkUGFyYW1ldGVycy5kYXRhRGV0ZWN0aW9u
Q29udGV4dDsKIAogICAgIC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4KLSAgICBGcmFt
ZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCBy
ZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0g
ICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBleHRlcm5hbFVSTHNQb2xpY3kgPSBzdGF0
aWNfY2FzdDxTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5PihzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KTsKKyAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QobV9tYWlu
RnJhbWUtPmNvcmVGcmFtZSgpLCBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LCBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBleHRlcm5hbFVSTHNQb2xpY3kgPSBzdGF0aWNfY2FzdDxTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5Pihsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5KTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3koZXh0ZXJuYWxVUkxzUG9saWN5KTsKIAogICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRn
ZSgpLmxvYWRSZXF1ZXN0KGZyYW1lTG9hZFJlcXVlc3QpOwpAQCAtMTE3OSw3ICsxMTgyLDcgQEAg
dm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmUKICAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxv
YWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChtX21haW5GcmFtZS0+Y29yZUZyYW1lKCksIHJl
cXVlc3QsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBzdWJz
dGl0dXRlRGF0YSkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRTdHJpbmcodWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgTUlNRVR5
cGUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlOjpsb2FkU3RyaW5nSW1wbCh1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFodG1sU3RyaW5nLmlzTnVsbCgp
ICYmIGh0bWxTdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oaHRtbFN0cmluZy5jaGFyYWN0ZXJzOCgpKSwgaHRtbFN0cmluZy5sZW5ndGgoKSAq
IHNpemVvZihMQ2hhcikpOwpAQCAtMTE5MCwzOCArMTE5MywzMyBAQCB2b2lkIFdlYlBhZ2U6Omxv
YWRTdHJpbmcodWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcs
IGNvbnN0CiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhKHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1J
TUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJM
U3RyaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRh
KGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKLSAgICBVUkwg
YmFzZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVSTChVUkwo
KSwgYmFzZVVSTFN0cmluZyk7Ci0gICAgbG9hZERhdGFJbXBsKG5hdmlnYXRpb25JRCwgc2hhcmVk
QnVmZmVyLCBNSU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgdXNlckRhdGEp
OwotfQorICAgIG1fZGF0YURldGVjdGlvbkNvbnRleHQgPSBsb2FkUGFyYW1ldGVycy5kYXRhRGV0
ZWN0aW9uQ29udGV4dDsKIAotdm9pZCBXZWJQYWdlOjpsb2FkSFRNTFN0cmluZyh1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNl
VVJMU3RyaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCi17Ci0gICAgVVJMIGJhc2VVUkwg
PSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGJhc2VV
UkxTdHJpbmcpOwotICAgIGxvYWRTdHJpbmcobmF2aWdhdGlvbklELCBodG1sU3RyaW5nLCBBU0NJ
SUxpdGVyYWwoInRleHQvaHRtbCIpLCBiYXNlVVJMLCBVUkwoKSwgdXNlckRhdGEpOworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwg
bG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOworICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFt
ZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBs
b2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFt
ZXRlcnMubmF2aWdhdGlvbklELCBzaGFyZWRCdWZmZXIsIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBl
LCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1l
dGVycy51c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJp
bmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcHJvdmlz
aW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQg
V2ViUGFnZTo6bG9hZFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXRlcnMp
CiB7Ci0gICAgVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJM
KCkgOiBVUkwoVVJMKCksIGJhc2VVUkxTdHJpbmcpOwotICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9
IHVucmVhY2hhYmxlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCB1bnJl
YWNoYWJsZVVSTFN0cmluZyk7Ci0gICAgVVJMIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMID0gcHJv
dmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCks
IHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nKTsKLSAgICBtX21haW5GcmFtZS0+Y29yZUZy
YW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKHBy
b3Zpc2lvbmFsTG9hZEVycm9yVVJMKTsKLSAgICBsb2FkU3RyaW5nKDAsIGh0bWxTdHJpbmcsIEFT
Q0lJTGl0ZXJhbCgidGV4dC9odG1sIiksIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCB1c2VyRGF0
YSk7Ci0gICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zZXRQcm92aXNpb25h
bExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCh7IH0pOwotfQorICAgIG1fZGF0YURldGVjdGlvbkNv
bnRleHQgPSBsb2FkUGFyYW1ldGVycy5kYXRhRGV0ZWN0aW9uQ29udGV4dDsKIAotdm9pZCBXZWJQ
YWdlOjpsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCi17Ci0gICAgbG9hZFN0cmluZygwLCBzdHJpbmcsIEFTQ0lJTGl0ZXJh
bCgidGV4dC9wbGFpbiIpLCBibGFua1VSTCgpLCBVUkwoKSwgdXNlckRhdGEpOworICAgIFVSTCBi
YXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VS
TCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBsb2Fk
U3RyaW5nSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnN0
cmluZywgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1l
dGVycy51c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFdlYkFyY2hpdmVEYXRhKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2ViQXJjaGl2ZURhdGEsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgTG9h
ZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KHdlYkFyY2hpdmVEYXRhLmRhdGEoKSksIHdlYkFyY2hpdmVEYXRhLnNpemUoKSAq
IHNpemVvZih1aW50OF90KSk7Ci0gICAgbG9hZERhdGFJbXBsKDAsIHNoYXJlZEJ1ZmZlciwgQVND
SUlMaXRlcmFsKCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiKSwgQVNDSUlMaXRlcmFsKCJ1dGYt
MTYiKSwgYmxhbmtVUkwoKSwgVVJMKCksIHVzZXJEYXRhKTsKKyAgICBtX2RhdGFEZXRlY3Rpb25D
b250ZXh0ID0gbG9hZFBhcmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQ7CisKKyAgICBVUkwg
YmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtV
UkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZyk7CisgICAgVVJM
IHVucmVhY2hhYmxlVVJMID0gbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVVUkxTdHJpbmcuaXNF
bXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVucmVhY2hhYmxlVVJM
U3RyaW5nKTsKKyAgICBVUkwgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwgPSBsb2FkUGFyYW1ldGVy
cy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6IFVSTChV
UkwoKSwgbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcpOworICAg
IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJy
b3JCZWluZ0hhbmRsZWRVUkwocHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwpOworICAgIGxvYWRTdHJp
bmdJbXBsKDAsIGxvYWRQYXJhbWV0ZXJzLnN0cmluZywgQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwi
KSwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhKTsKKyAg
ICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVy
cm9yQmVpbmdIYW5kbGVkVVJMKHsgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bmF2aWdhdGVUb1BE
RkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIEludFBvaW50IGRvY3Vt
ZW50UG9pbnQsIEludFBvaW50IHNjcmVlblBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZmFlYjI1ZDc4NDU3ZTc1Y2E2MWMyOWY2YWU4MGRk
NmE4NTNjNDYyNC4uMjhhNzllNmYxMDM0ODdhYmI0YTkxMDkwMDkzY2Y5NTlhZTYwMTA4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xOTIsNiAr
MTkyLDcgQEAgc3RydWN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTsKIHN0cnVjdCBFZGl0aW5n
UmFuZ2U7CiBzdHJ1Y3QgRWRpdG9yU3RhdGU7CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb247CitzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUHJpbnRJbmZvOwog
c3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNT
dG9yZTsKQEAgLTg1Myw2ICs4NTQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRVc2VQREZQ
bHVnaW4oKSBjb25zdDsKICAgICBib29sIHBkZlBsdWdpbkVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3BkZlBsdWdpbkVuYWJsZWQ7IH0KICAgICB2b2lkIHNldFBERlBsdWdpbkVuYWJsZWQoYm9v
bCBlbmFibGVkKSB7IG1fcGRmUGx1Z2luRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKworICAgIE5TRGlj
dGlvbmFyeSAqZGF0YURldGVjdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFEZXRl
Y3Rpb25Db250ZXh0LmdldCgpOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgc2F2ZVBERlRvRmlsZUlu
RG93bmxvYWRzRm9sZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxvbmcgc2l6ZSk7CkBAIC05OTgsMTggKzEwMDEsMTYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcg
c291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAogICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZhaWxpbmdVUkwsIGNvbnN0
IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkU3RyaW5nKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJM
JiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRh
Jik7CisgICAgdm9pZCBsb2FkU3RyaW5nSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFz
ZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYpOwog
CiAgICAgYm9vbCBwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwm
KTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKCk7Ci0gICAgdm9pZCBsb2Fk
UmVxdWVzdCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIHVpbnQ2NF90IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkRGF0
YSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBTdHJp
bmcmIGJhc2VVUkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkSFRNTFN0cmluZyh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3Ry
aW5nJiBiYXNlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhU
TUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkws
IGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxM
b2FkRXJyb3JVUkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkUGxhaW5UZXh0U3Ry
aW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkV2ViQXJj
aGl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgVXNlckRhdGEmKTsKKyAg
ICB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CisgICAgdm9pZCBsb2Fk
RGF0YShjb25zdCBMb2FkUGFyYW1ldGVycyYpOworICAgIHZvaWQgbG9hZFN0cmluZyhjb25zdCBM
b2FkUGFyYW1ldGVycyYpOworICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3Qg
TG9hZFBhcmFtZXRlcnMmKTsKICAgICB2b2lkIG5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRl
ZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVudFBvaW50
LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCk7CiAgICAgdm9pZCByZWxvYWQodWludDY0
X3QgbmF2aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGJvb2wgY29udGVudEJsb2Nr
ZXJzRW5hYmxlZCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAgICAgdm9pZCBn
b0ZvcndhcmQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CkBAIC0xMjgwLDYgKzEy
ODEsOCBAQCBwcml2YXRlOgogCiAgICAgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciBtX3Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I7CiAKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5
PiBtX2RhdGFEZXRlY3Rpb25Db250ZXh0OworCiAjZWxpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYm
IChQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkpCiAgICAgR1JlZlB0cjxXZWJQYWdlQWNj
ZXNzaWJpbGl0eU9iamVjdD4gbV9hY2Nlc3NpYmlsaXR5T2JqZWN0OwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CmluZGV4IDNkZTRmNzVlZjQ5YzY2NGE2NzdjNjdiMGE0MjU4MWNhN2JhYjJmYjMuLmJlNTQ2YzFj
OGYyMGJhMGZhMWE0ZTM2MzgzNjBjODRkMjVmMDI1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xMzIsMTIg
KzEzMiwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBUcnlS
ZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCiAgICAgTG9hZFVSTEluRnJhbWUoU3RyaW5nIHVybCwg
dWludDY0X3QgZnJhbWVJRCkKLSAgICBMb2FkUmVxdWVzdCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCB1aW50NjRfdCBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIExvYWREYXRh
KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIFN0cmluZyBN
SU1FVHlwZSwgU3RyaW5nIGVuY29kaW5nLCBTdHJpbmcgYmFzZVVSTCwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKLSAgICBMb2FkSFRNTFN0cmluZyh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0
cmluZyBodG1sU3RyaW5nLCBTdHJpbmcgYmFzZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKLSAgICBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhTdHJpbmcgaHRtbFN0cmluZywgU3RyaW5n
IGJhc2VVUkwsIFN0cmluZyB1bnJlYWNoYWJsZVVSTCwgU3RyaW5nIHByb3Zpc2lvbmFsTG9hZEVy
cm9yVVJMLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIExvYWRQbGFpblRleHRTdHJp
bmcoU3RyaW5nIHN0cmluZywgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBMb2FkV2Vi
QXJjaGl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlIHdlYkFyY2hpdmVEYXRhLCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQorICAgIExvYWRSZXF1ZXN0KHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJh
bWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQorICAgIExvYWREYXRhKHN0cnVjdCBXZWJLaXQ6OkxvYWRQ
YXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQorICAgIExvYWRTdHJpbmcoc3RydWN0IFdlYktpdDo6
TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpCisgICAgTG9hZEFsdGVybmF0ZUhUTUxTdHJp
bmcoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpCisKICAgICBO
YXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhTdHJpbmcgdXJsLCBXZWJDb3JlOjpJ
bnRQb2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCkKIAog
ICAgIFJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwg
Ym9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDE2MDI5MDliZTgwODRiODU5MDNkNjg1ZGEyMTM3ZDU3
YzRkZTNkYjAuLjQyMmZkYTQxNjk4MDM1ZmQ3MGY4MjBlMDI5OGM0YjQ3NmFiZTEwYTggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAxNi0wNy0wNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
KworICAgICAgICBFbWFpbCBmcm9tIEp1bmUgMXN0IGNvbnRhaW5pbmcgdGV4dCAnVG9kYXkgQCA3
OjEwUE0nIGlzIGxpbmtpZmllZCwgYnV0IHNob3VsZG4ndCBiZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NDk4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yNjcxOTkwMz4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRGF0YURldGVj
dGlvbi5tbTogQWRkZWQuCisgICAgICAgICgtW0RhdGFEZXRlY3Rpb25OYXZpZ2F0aW9uRGVsZWdh
dGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoLVtEYXRhRGV0ZWN0
aW9uVUlEZWxlZ2F0ZSBfZGF0YURldGVjdGlvbkNvbnRleHRGb3JXZWJWaWV3Ol0pOgorICAgICAg
ICAoZXhwZWN0TGlua0NvdW50KToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICBBZGQgYSB0ZXN0
IGVuc3VyaW5nIHRoYXQgUmVmZXJlbmNlRGF0ZSBpbiB0aGUgRGF0YURldGVjdG9ycyBjb250ZXh0
IGlzIHJlc3BlY3RlZAorICAgICAgICB3aGVuIGRlY2lkaW5nIHdoYXQgdG8gbGlua2lmeS4KKwog
MjAxNi0wNy0wNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
RGF0YWJhc2UgcHJvY2VzcyBjcmFzaGVzIGRlbGV0aW5nIGEgY29ycnVwdCBTUUxpdGUgZGF0YWJh
c2UgZmlsZSAobnVsbCBkZXJlZikuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRmZjc5MDI0
NmE3MTVlMjZiMzUwMjY1MjM3Yjg0YmVmNmFhYzg2MzAuLmJhNDU1MDZmNjlkM2EzZGE1N2M5YThk
NjZmNjU4YmIzYzYyYzRjZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OSw2ICs0OSw3
IEBACiAJCTJEMDAwNjVGMUMxRjU4OUEwMDg4RTZBNyAvKiBXS1BERlZpZXdSZXNpemVDcmFzaC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMDAwNjVE
MUMxRjU4OTQwMDg4RTZBNyAvKiBXS1BERlZpZXdSZXNpemVDcmFzaC5tbSAqLzsgfTsKIAkJMkQx
NjQ2RTIxRDE4NjJDRDAwMDE1QTFBIC8qIERlZmVycmVkVmlld0luV2luZG93U3RhdGVDaGFuZ2Uu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDE2NDZF
MTFEMTg2MkNEMDAwMTVBMUEgLyogRGVmZXJyZWRWaWV3SW5XaW5kb3dTdGF0ZUNoYW5nZS5tbSAq
LzsgfTsKIAkJMkQ1MUEwQzcxQzhCRjAwQzAwNzY1QzQ1IC8qIERPTUhUTUxWaWRlb0VsZW1lbnRX
cmFwcGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQ1MUEwQzUxQzhCRjAwNDAwNzY1QzQ1IC8qIERPTUhUTUxWaWRlb0VsZW1lbnRXcmFwcGVyLm1t
ICovOyB9OworCQkyREM0Q0Y3NzFEMkQ5REQ4MDBFQ0NDOTQgLyogRGF0YURldGVjdGlvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQzRDRjc2MUQy
RDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0aW9uLm1tICovOyB9OwogCQkyREQ3RDNBRjE3ODIy
N0IzMDAyNkUxRTMgLyogbG90cy1vZi10ZXh0LXZlcnRpY2FsLWxyLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkREN0QzQUUxNzgyMjdB
QzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sICovOyB9OwogCQkyRTc3
NjVDRDE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzc2NUNDMTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWlu
SU9TLm1tICovOyB9OwogCQkyRTc3NjVDRjE2QzREODExMDBCQTJCQjEgLyogbWFpbk1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzc2NUNFMTZD
NEQ4MTEwMEJBMkJCMSAvKiBtYWluTWFjLm1tICovOyB9OwpAQCAtNjYwLDYgKzY2MSw3IEBACiAJ
CTJENjQwQjU0MTc4NzVERkYwMEJGQUY5OSAvKiBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbFBpbm5pbmdCZWhhdmlv
cnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDgxMDRDQjFCRUMxM0U3MDAy
MERBNDYgLyogRmluZEluUGFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEZpbmRJblBhZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEOUE1
M0FFMUIzMUZBOEQwMDc0RDVBQSAvKiBTaHJpbmtUb0ZpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNocmlua1RvRml0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyREM0Q0Y3NjFEMkQ5REQ4MDBFQ0NDOTQgLyogRGF0YURldGVjdGlvbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGFEZXRlY3Rpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERDM1NTM1MUJEMDgzNzgwMDVERjRBNyAv
KiBBdXRvTGF5b3V0SW50ZWdyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBBdXRvTGF5b3V0SW50ZWdyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJERDdEM0E5MTc4MjA1RDAwMDI2RTFFMyAvKiBSZXNpemVSZXZlcnNlUGFnaW5h
dGVkV2ViVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNp
emVSZXZlcnNlUGFnaW5hdGVkV2ViVmlldy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJERDdEM0FFMTc4MjI3QUMwMDI2RTFFMyAvKiBsb3RzLW9mLXRleHQtdmVydGljYWwtbHIu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJsb3RzLW9mLXRleHQtdmVydGljYWwtbHIuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTY2LDYgKzExNjgsNyBAQAogCQkJCUExNEZDNTg2MUI4
OTkxQjYwMEQxMDdFQiAvKiBDb250ZW50RmlsdGVyaW5nLm1tICovLAogCQkJCUExNEZDNTg5MUI4
OTkyNzEwMEQxMDdFQiAvKiBDb250ZW50RmlsdGVyaW5nUGx1Z0luLm1tICovLAogCQkJCTFBQUQx
OUY1MUM3Q0UyMDMwMDgzMUU0NyAvKiBDb2RpbmcubW0gKi8sCisJCQkJMkRDNENGNzYxRDJEOURE
ODAwRUNDQzk0IC8qIERhdGFEZXRlY3Rpb24ubW0gKi8sCiAJCQkJQTFBNEZFNUQxOEREM0RCNzAw
QjVFQThBIC8qIERvd25sb2FkLm1tICovLAogCQkJCTJEODEwNENCMUJFQzEzRTcwMDIwREE0NiAv
KiBGaW5kSW5QYWdlLm1tICovLAogCQkJCTJEMUZFMEFGMUFENDY1QzEwMDZDRDlFNiAvKiBGaXhl
ZExheW91dFNpemUubW0gKi8sCkBAIC0yMTI4LDYgKzIxMzEsNyBAQAogCQkJCTc2NDMyMkQ3MUI2
MUNDQzMwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdGMDUxQTQxMUFFNjAwNDQ3QzRDIC8qIE5ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZyYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyNTFBNDEx
QUY2MDA0NDdDNEMgLyogT3BlbkFuZENsb3NlV2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
MkRDNENGNzcxRDJEOUREODAwRUNDQzk0IC8qIERhdGFEZXRlY3Rpb24ubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0YwNzFBNDExQUU2MDA0NDdDNEMgLyogUGFnZUxvYWRCYXNpYy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzRTBDMTFEMEE2NTJGMDBGRUJDRjMgLyogUHJvdmlzaW9uYWxV
UkxOb3RDaGFuZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwODFBNDExQUU2MDA0NDdD
NEMgLyogUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZS5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMTI2YmNhOWExZTU2ZGU4ZTg5
Y2U3OGEwZjVmMzA1NTE3MDAyYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC0wLDAgKzEsMTEzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgor
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworc3RhdGlj
IGJvb2wgZmluaXNoZWRMb2FkaW5nOworc3RhdGljIGJvb2wgcmFuU2NyaXB0OworCitAaW50ZXJm
YWNlIERhdGFEZXRlY3Rpb25OYXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBEYXRhRGV0ZWN0aW9uTmF2aWdh
dGlvbkRlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRG
aW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCit7CisgICAgZmluaXNo
ZWRMb2FkaW5nID0gdHJ1ZTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIERhdGFEZXRlY3Rpb25V
SURlbGVnYXRlIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZT4KKworQHByb3BlcnR5IChub25hdG9t
aWMsIHJldGFpbikgTlNEYXRlICpyZWZlcmVuY2VEYXRlOworCitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBEYXRhRGV0ZWN0aW9uVUlEZWxlZ2F0ZQorCistIChOU0RpY3Rpb25hcnkgKilfZGF0YURl
dGVjdGlvbkNvbnRleHRGb3JXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgaWYg
KCFfcmVmZXJlbmNlRGF0ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBAewor
ICAgICAgICBAIlJlZmVyZW5jZURhdGUiOiBfcmVmZXJlbmNlRGF0ZQorICAgIH07Cit9CisKK0Bl
bmQKKwordm9pZCBleHBlY3RMaW5rQ291bnQoV0tXZWJWaWV3ICp3ZWJWaWV3LCBOU1N0cmluZyAq
SFRNTFN0cmluZywgdW5zaWduZWQgbGlua0NvdW50KQoreworICAgIFt3ZWJWaWV3IGxvYWRIVE1M
U3RyaW5nOkhUTUxTdHJpbmcgYmFzZVVSTDpuaWxdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZmaW5pc2hlZExvYWRpbmcpOworICAgIGZpbmlzaGVkTG9hZGluZyA9IGZhbHNlOwor
CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ2EnKS5sZW5ndGgiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgdmFsdWUsIE5TRXJy
b3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9FUShsaW5rQ291bnQsIFt2YWx1ZSB1bnNpZ25l
ZEludFZhbHVlXSk7CisgICAgICAgIHJhblNjcmlwdCA9IHRydWU7CisgICAgfV07CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJhblNjcmlwdCk7CisgICAgcmFuU2NyaXB0ID0gZmFs
c2U7Cit9CisKK1RFU1QoV2ViS2l0MiwgRGF0YURldGVjdGlvblJlZmVyZW5jZURhdGUpCit7Cisg
ICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIHNldERhdGFEZXRlY3RvclR5cGVzOldLRGF0YURldGVjdG9yVHlwZUNhbGVuZGFyRXZl
bnRdOworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBSZXRhaW5QdHI8RGF0YURl
dGVjdGlvbk5hdmlnYXRpb25EZWxlZ2F0ZT4gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhb
W0RhdGFEZXRlY3Rpb25OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKKwor
ICAgIFJldGFpblB0cjxEYXRhRGV0ZWN0aW9uVUlEZWxlZ2F0ZT4gVUlEZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tEYXRhRGV0ZWN0aW9uVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3
IHNldFVJRGVsZWdhdGU6VUlEZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBleHBlY3RMaW5rQ291bnQo
d2ViVmlldy5nZXQoKSwgQCJ0b21vcnJvdyBhdCA2UE0iLCAxKTsKKyAgICBleHBlY3RMaW5rQ291
bnQod2ViVmlldy5nZXQoKSwgQCJ5ZXN0ZXJkYXkgYXQgNlBNIiwgMCk7CisKKyAgICBOU1RpbWVJ
bnRlcnZhbCB3ZWVrID0gNjAgKiA2MCAqIDI0ICogNzsKKworICAgIFtVSURlbGVnYXRlIHNldFJl
ZmVyZW5jZURhdGU6W05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93Oi13ZWVrXV07
CisgICAgZXhwZWN0TGlua0NvdW50KHdlYlZpZXcuZ2V0KCksIEAidG9tb3Jyb3cgYXQgNlBNIiwg
MCk7CisgICAgZXhwZWN0TGlua0NvdW50KHdlYlZpZXcuZ2V0KCksIEAieWVzdGVyZGF5IGF0IDZQ
TSIsIDApOworCisgICAgW1VJRGVsZWdhdGUgc2V0UmVmZXJlbmNlRGF0ZTpbTlNEYXRlIGRhdGVX
aXRoVGltZUludGVydmFsU2luY2VOb3c6d2Vla11dOworICAgIGV4cGVjdExpbmtDb3VudCh3ZWJW
aWV3LmdldCgpLCBAInRvbW9ycm93IGF0IDZQTSIsIDEpOworICAgIGV4cGVjdExpbmtDb3VudCh3
ZWJWaWV3LmdldCgpLCBAInllc3RlcmRheSBhdCA2UE0iLCAxKTsKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282970</attachid>
            <date>2016-07-06 17:42:01 -0700</date>
            <delta_ts>2016-07-06 17:59:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159498-20160706174128.patch</filename>
            <type>text/plain</type>
            <size>80660</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYyMDU4ZWExYTkwMTky
NzU4MzFhNTcyMjJjZTRhNDY5NDRkZTJmNS4uMTUyYTljZDc0MDkzZDc0MDljYjM3NjVjZWNkODBh
ZWU1NTMxZDExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA3LTA2ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEVtYWlsIGZyb20g
SnVuZSAxc3QgY29udGFpbmluZyB0ZXh0ICdUb2RheSBAIDc6MTBQTScgaXMgbGlua2lmaWVkLCBi
dXQgc2hvdWxkbid0IGJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTk0OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NzE5OTAzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0OiBXZWJL
aXQyLkRhdGFEZXRlY3Rpb25SZWZlcmVuY2VEYXRlCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5n
ZSk6CisgICAgICAgIEV4dHJhY3QgdGhlIHJlZmVyZW5jZSBkYXRlIGZyb20gdGhlIERhdGFEZXRl
Y3RvcnMgY29udGV4dCBkaWN0aW9uYXJ5IGlmIGl0IGV4aXN0cywKKyAgICAgICAgYW5kIHBhc3Mg
aXQgYWxvbmcgdG8gRGF0YURldGVjdG9ycy4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVG
b3JUaGlzRnJhbWUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICBQbHVtYiB0aGUgRGF0YURldGVjdG9ycyBjb250ZXh0IGRpY3Rpb25hcnkgdGhyb3VnaCBm
cm9tIFdlYlBhZ2UuCisKIDIwMTYtMDctMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIERhdGFiYXNlIHByb2Nlc3MgY3Jhc2hlcyBkZWxldGluZyBhIGNvcnJ1
cHQgU1FMaXRlIGRhdGFiYXNlIGZpbGUgKG51bGwgZGVyZWYpLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDBkZmY1
MTgzYzMwNGNhZDk4MzM3OWQ2OGY3NWVhNzEzZjllN2M4YzguLjkwZGNhNzYzZTVhOTg5NDBjMzJm
OTZiNjU1OTYxOWIxZmEyYzU0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAxNi0w
Ny0wNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBF
bWFpbCBmcm9tIEp1bmUgMXN0IGNvbnRhaW5pbmcgdGV4dCAnVG9kYXkgQCA3OjEwUE0nIGlzIGxp
bmtpZmllZCwgYnV0IHNob3VsZG4ndCBiZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NDk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjcxOTkw
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogU2hhcmVk
L0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpM
b2FkUGFyYW1ldGVyczo6cGxhdGZvcm1FbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFy
YW1ldGVyczo6cGxhdGZvcm1EZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Mb2FkUGFyYW1ldGVy
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICBBZGQgYSBzdHJ1Y3QgdGhhdCBr
bm93cyBob3cgdG8gZW5jb2RlIGFsbCBvZiB0aGUgZGlmZmVyZW50IHBhcmFtZXRlcnMKKyAgICAg
ICAgdG8gYWxsIG9mIHRoZSBMb2FkKiBtZXNzYWdlcywgaW5jbHVkaW5nIHRoZSBwbGF0Zm9ybS1z
cGVjaWZpYyBEYXRhRGV0ZWN0b3JzIHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBTaGFyZWQvbWFj
L0FyZ3VtZW50Q29kZXJzTWFjLmg6CisgICAgICAgICogU2hhcmVkL21hYy9Bcmd1bWVudENvZGVy
c01hYy5tbToKKyAgICAgICAgKElQQzo6dHlwZUZyb21PYmplY3QpOgorICAgICAgICAoSVBDOjpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGUpOgorICAgICAgICBBZGQgTlNVUkwgY29kZXJz
IHRoYXQgZGVmZXIgdG8gdGhlIENGVVJMIGNvZGVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRhdGFEZXRlY3Rpb25D
b250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURl
bGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpkYXRhRGV0ZWN0aW9uQ29udGV4dCk6CisgICAgICAgIEFkZCBBUElVSUNsaWVudCBtZXRo
b2RzIHRvIHJldHJpZXZlIHRoZSBEYXRhRGV0ZWN0b3JzIGNvbnRleHQgZGljdGlvbmFyeS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKToKKyAgICAg
ICAgQWRkIHRoZSBEYXRhRGV0ZWN0b3JzIGNvbnRleHQgZGljdGlvbmFyeSB0byB0aGUgZ2l2ZW4g
TG9hZFBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRhdGFEZXRlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGF0YURldGVjdGlv
bkNvbnRleHQpOgorICAgICAgICBTdG9yZSB0aGUgZGF0YURldGVjdGlvbkNvbnRleHQgb24gV2Vi
UGFnZSwgYW5kIG1ha2UgaXQgYWNjZXNzaWJsZSB0byBXZWJDb3JlCisgICAgICAgIHZpYSB0aGUg
RnJhbWVMb2FkZXJDbGllbnQgKGl0IGlzIHVzZWQgaW4gRnJhbWVMb2FkZXIgd2hlbiB0aGUgbG9h
ZCBjb21wbGV0ZXMpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmxvYWRGaWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEhUTUxT
dHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1M
U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUGxhaW5UZXh0U3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRTdHJpbmdJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkSFRNTFN0cmluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRQbGFpblRleHRTdHJpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkV2ViQXJjaGl2ZURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAg
ICBBZG9wdCBMb2FkUGFyYW1ldGVycywgdGFraW5nIHRoaXMgb3Bwb3J0dW5pdHkgdG8gcmVkdWNl
IHRoZSBudW1iZXIgb2YgdmVyeSBzaW1pbGFyIG1lc3NhZ2VzLgorICAgICAgICBXZSBjYW4gdGFr
ZSB0aGlzIGZ1cnRoZXIgKHdlIHNob3VsZCBiZSBhYmxlIHRvIGdldCBpdCBkb3duIHRvIGp1c3Qg
TG9hZFJlcXVlc3QKKyAgICAgICAgYW5kIExvYWREYXRhKSBpbiB0aGUgZnV0dXJlLiBXaGVuIGFu
eSBsb2FkIG9jY3VycywgZ3JhYiB0aGUgY2xpZW50J3MgRGF0YURldGVjdG9yc2UKKyAgICAgICAg
Y29udGV4dCBkaWN0aW9uYXJ5IGFuZCBzZW5kIGl0IGFsb25nIHdpdGggdGhlIGxvYWQgcmVxdWVz
dCwgc3RvcmluZyBpdCBpbiBXZWJQYWdlLgorCiAyMDE2LTA3LTA0ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ29vcmRpbmF0ZWQgR3JhcGhp
Y3NdIE1vZGVybml6ZSBhbmQgY2xlYW51cCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDUy
M2MyZjM2NjEwNDNjZGNhMDY3NWEyMjVkNmYyY2EzNmJmMjY3MC4uYjExODBjNmU4OWZiODUyNGNm
MzNhMzQ3MTJiODQ1ODU3NzAyMjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0NCw2ICsxMjQ0LDcgQEAKIAkJMkQ5N0Yw
NDgxOURENDE0MDAwMUVFOUMzIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBQUUzMkQxOURDQUY2MDAwRTAw
MkQyIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5oICovOyB9OwogCQkyRDlGMEUxMzE0RkYxQ0JG
MDBCQTBGRjcgLyogbGluZWFyU1JHQi5pY2MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUYwRTEyMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdC
LmljYyAqLzsgfTsKIAkJMkRCOUM0QUExQjMyMzFGNDAwNzBGMjdGIC8qIE5TRXZlbnRTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQjlDNEE5MUIz
MjMxRjQwMDcwRjI3RiAvKiBOU0V2ZW50U1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkRDNENGNzkxRDJERDk4OTAwRUNDQzk0IC8qIERhdGFE
ZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRDNENGNzgxRDJERDk4OTAwRUNDQzk0IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEQ0I4Mzc5
MTlGOTlCQkEwMEE3RkJFNCAvKiBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRENCODM3NzE5Rjk5QkJBMDBB
N0ZCRTQgLyogTlNTaGFyaW5nU2VydmljZVBpY2tlclNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEQ0I4MzdBMTlGOTlCQkEwMEE3RkJFNCAv
KiBOU1NoYXJpbmdTZXJ2aWNlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRENCODM3ODE5Rjk5QkJBMDBBN0ZCRTQgLyogTlNTaGFyaW5nU2Vydmlj
ZVNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJEREI5N0Y0MTlGOUFFQ0EwMDIwMjVEOCAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkREQjk3RjMxOUY5QUVDQTAwMjAy
NUQ4IC8qIE5TRXh0ZW5zaW9uU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTg4MTIsNiArODgxMyw3IEBACiAJCTJEQUFFMzJDMTlEQ0FGNjAw
MEUwMDJEMiAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRBQUUzMkQxOURDQUY2MDAwRTAwMkQyIC8qIE1vY2tQYWdlT3Zl
cmxheUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrUGFnZU92
ZXJsYXlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRCOUM0QTkxQjMy
MzFGNDAwNzBGMjdGIC8qIE5TRXZlbnRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTlNFdmVudFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREM0Q0Y3
ODFEMkREOTg5MDBFQ0NDOTQgLyogRGF0YURldGVjdG9yc1VJU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRlY3RvcnNVSVNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyRENCODM3NzE5Rjk5QkJBMDBBN0ZCRTQgLyogTlNTaGFyaW5nU2Vydmlj
ZVBpY2tlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQ0I4Mzc4
MTlGOTlCQkEwMEE3RkJFNCAvKiBOU1NoYXJpbmdTZXJ2aWNlU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5TU2hhcmluZ1NlcnZpY2VTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkREQjk3RjMxOUY5QUVDQTAwMjAyNUQ4IC8qIE5TRXh0ZW5zaW9uU1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TRXh0ZW5zaW9uU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDE3MCw2ICsyMDE3Miw3IEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNFMTI1MjQyMUExNkMwMUEwMDg2NDQ4
MCAvKiBDb3JlVUlTUEkuaCAqLywKKwkJCQkyREM0Q0Y3ODFEMkREOTg5MDBFQ0NDOTQgLyogRGF0
YURldGVjdG9yc1VJU1BJLmggKi8sCiAJCQkJQ0VDMzM3QUUxQTQ2MDg2RDAwOUI4NTIzIC8qIEdy
YXBoaWNzU2VydmljZXNTUEkuaCAqLywKIAkJCQk3QzRDOTZFMjFBRDQ0QUJGMDAzNjVBNTAgLyog
TGF1bmNoU2VydmljZXNTUEkuaCAqLywKIAkJCQlDRTEyNTI0MDFBMTZCMUI2MDA4NjQ0ODAgLyog
TWVkaWFQbGF5ZXJTUEkuaCAqLywKQEAgLTI2OTIwLDYgKzI2OTIzLDcgQEAKIAkJCQk3QzlEQkZF
RTFBOUM0OUIxMDAwRDZCMjUgLyogSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0NDYxNDM4MENENjg5QzUwMEZBREE3NSAvKiBKU0hUTUxBdWRpb0VsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3QjExMEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxC
YXNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRDNENGNzkxRDJERDk4OTAwRUNDQzk0
IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFBMjMwQTFD
REFCNDAwQjQyQjI1IC8qIEpTSFRNTEJvZHlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUUyQUEyNTBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MQlJFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODBFN0U5RjBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MQnV0dG9uRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5oCmluZGV4IDk0OWU1YmY3YjM5ODg4ODc3MTM2YmY3Y2QzM2U4NjI2ZWViMjNjNjAuLjc3
NTlkMTk5Y2E0ZWNmZjA1MjQxOWJkYjMwMzJmOGUzZDdkYmNmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAKIE9C
SkNfQ0xBU1MgRERBY3Rpb25Db250ZXh0OwogT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFT
UyBOU0RpY3Rpb25hcnk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsNyArNTgsNyBA
QCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBkZXRlY3RJdGVtQXJvdW5kSGl0VGVzdFJlc3VsdChj
b25zdCBIaXRUZXN0UmVzdWx0JiwgRmxvYXRSZWN0JiBkZXRlY3RlZERhdGFCb3VuZGluZ0JveCwg
UmVmUHRyPFJhbmdlPiYgZGV0ZWN0ZWREYXRhUmFuZ2UpOwogI2VuZGlmCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIE5TQXJyYXkgKmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4m
IGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBOU0FycmF5ICpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0
UmFuZ2UsIERhdGFEZXRlY3RvclR5cGVzLCBOU0RpY3Rpb25hcnkgKmNvbnRleHQpOwogI2lmIFBM
QVRGT1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0RhdGFEZXRlY3Rv
ckxpbmsoRWxlbWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZGF0YURl
dGVjdG9ySWRlbnRpZmllcihFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggMTM4MzNlZTE5OTY4MmMzYjUwYzExMGQ3NjNmNDVm
MDg0NzU5NTM1Yi4uNTI2ZGVmYzNiZjlkMGQ5NmRmZDA2MWVhZDBkZmM5YTgwZWEyMWI3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtMjks
NiArMjksNyBAQAogI2ltcG9ydCAiQXR0ci5oIgogI2ltcG9ydCAiQ1NTU3R5bGVEZWNsYXJhdGlv
bi5oIgogI2ltcG9ydCAiRGF0YURldGVjdG9yc1NQSS5oIgorI2ltcG9ydCAiRGF0YURldGVjdG9y
c1VJU1BJLmgiCiAjaW1wb3J0ICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgogI2ltcG9ydCAi
RWxlbWVudFRyYXZlcnNhbC5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCkBAIC00MjksNyArNDMw
LDcgQEAgc3RhdGljIGlubGluZSBDRkNvbXBhcmlzb25SZXN1bHQgcXVlcnlPZmZzZXRDb21wYXJl
KEREUXVlcnlPZmZzZXQgbzEsIEREUXVlcnlPZmYKICAgICByZXR1cm4ga0NGQ29tcGFyZUVxdWFs
VG87CiB9CiAKLU5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJl
ZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMgdHlwZXMpCitOU0Fy
cmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBj
b250ZXh0UmFuZ2UsIERhdGFEZXRlY3RvclR5cGVzIHR5cGVzLCBOU0RpY3Rpb25hcnkgKmNvbnRl
eHQpCiB7CiAgICAgUmV0YWluUHRyPEREU2Nhbm5lclJlZj4gc2Nhbm5lciA9IGFkb3B0Q0Yoc29m
dExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVyQ3JlYXRlKEREU2Nhbm5lclR5cGVTdGFu
ZGFyZCwgMCwgbnVsbHB0cikpOwogICAgIFJldGFpblB0cjxERFNjYW5RdWVyeVJlZj4gc2NhblF1
ZXJ5ID0gYWRvcHRDRihzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNjYW5RdWVyeUNyZWF0
ZShOVUxMKSk7CkBAIC00NDMsMTUgKzQ0NCwxNSBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpk
ZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQog
ICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgYWRkIGEgdGltZW91dCB0byB0aGlzIGNhbGwgdG8gbWFr
ZSBzdXJlIGl0IGRvZXNuJ3QgdGFrZSB0b28gbXVjaCB0aW1lLgogICAgIGlmICghc29mdExpbmtf
RGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVyU2NhblF1ZXJ5KHNjYW5uZXIuZ2V0KCksIHNjYW5R
dWVyeS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8
Q0ZBcnJheVJlZj4gc2Nhbm5lclJlc3VsdHMgPSBhZG9wdENGKHNvZnRMaW5rX0RhdGFEZXRlY3Rv
cnNDb3JlX0REU2Nhbm5lckNvcHlSZXN1bHRzV2l0aE9wdGlvbnMoc2Nhbm5lci5nZXQoKSwgZ2V0
X0RhdGFEZXRlY3RvcnNDb3JlX0REU2Nhbm5lckNvcHlSZXN1bHRzT3B0aW9uc0ZvclBhc3NpdmVV
c2UoKSB8IEREU2Nhbm5lckNvcHlSZXN1bHRzT3B0aW9uc0NvYWxlc2NlU2lnbmF0dXJlcykpOwog
ICAgIGlmICghc2Nhbm5lclJlc3VsdHMpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisKICAg
ICBDRkluZGV4IHJlc3VsdENvdW50ID0gQ0ZBcnJheUdldENvdW50KHNjYW5uZXJSZXN1bHRzLmdl
dCgpKTsKICAgICBpZiAoIXJlc3VsdENvdW50KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAor
CiAgICAgVmVjdG9yPFJldGFpblB0cjxERFJlc3VsdFJlZj4+IGFsbFJlc3VsdHM7CiAgICAgVmVj
dG9yPFJldGFpblB0cjxOU0luZGV4UGF0aD4+IGluZGV4UGF0aHM7CiAgICAgTlNJbnRlZ2VyIGN1
cnJlbnRUb3BMZXZlbEluZGV4ID0gMDsKQEAgLTUxOSw3ICs1MjAsNyBAQCBOU0FycmF5ICpEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFu
Z2UsIERhdGFEZQogICAgIH0KICAgICAKICAgICBhdXRvIHR6ID0gYWRvcHRDRihDRlRpbWVab25l
Q29weURlZmF1bHQoKSk7Ci0gICAgTlNEYXRlICpyZWZlcmVuY2VEYXRlID0gW05TRGF0ZSBkYXRl
XTsKKyAgICBOU0RhdGUgKnJlZmVyZW5jZURhdGUgPSBbY29udGV4dCBvYmplY3RGb3JLZXk6a0Rh
dGFEZXRlY3RvcnNSZWZlcmVuY2VEYXRlS2V5XSA/OiBbTlNEYXRlIGRhdGVdOwogICAgIFRleHQq
IGxhc3RUZXh0Tm9kZVRvVXBkYXRlID0gbnVsbHB0cjsKICAgICBTdHJpbmcgbGFzdE5vZGVDb250
ZW50OwogICAgIHNpemVfdCBjb250ZW50T2Zmc2V0ID0gMDsKQEAgLTY1Miw3ICs2NTMsNyBAQCBO
U0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+
JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogfQogCiAjZWxzZQotTlNBcnJheSAqRGF0YURldGVjdGlv
bjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYsIERhdGFEZXRlY3RvclR5cGVz
KQorTlNBcnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJh
bmdlPiYsIERhdGFEZXRlY3RvclR5cGVzLCBOU0RpY3Rpb25hcnkgKikKIHsKICAgICByZXR1cm4g
bmlsOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNzMwYzBiODAx
OTIwOTE2NzczODVlMDJhYzVjZTlhMjRjNjgzODAxZi4uYjMyMjc0MmQ1MjAxMGQ4MTgzYmU3YzJm
YTkyZDE1Mzk4YzJkNWNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBA
IC0yMzEwLDcgKzIzMTAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZv
clRoaXNGcmFtZSgpCiAgICAgICAgICAgICAgICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5kYXRh
RGV0ZWN0b3JUeXBlcygpICE9IERhdGFEZXRlY3RvclR5cGVOb25lICYmIGRvY3VtZW50KSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+
ZG9jdW1lbnRFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5n
ZT4gZG9jdW1lbnRSYW5nZSA9IG1ha2VSYW5nZShmaXJzdFBvc2l0aW9uSW5Ob2RlKGRvY3VtZW50
RWxlbWVudCksIGxhc3RQb3NpdGlvbkluTm9kZShkb2N1bWVudEVsZW1lbnQpKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZnJhbWUuc2V0RGF0YURldGVjdGlvblJlc3VsdHMoRGF0YURldGVj
dGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoZG9jdW1lbnRSYW5nZSwgbV9mcmFtZS5zZXR0aW5n
cygpLmRhdGFEZXRlY3RvclR5cGVzKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJh
bWUuc2V0RGF0YURldGVjdGlvblJlc3VsdHMoRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudElu
UmFuZ2UoZG9jdW1lbnRSYW5nZSwgbV9mcmFtZS5zZXR0aW5ncygpLmRhdGFEZXRlY3RvclR5cGVz
KCksIG1fY2xpZW50LmRhdGFEZXRlY3Rpb25Db250ZXh0KCkpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9jbGllbnQuZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKG1fZnJhbWUuZGF0
YURldGVjdGlvblJlc3VsdHMoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOTkyZTVjODUyMjVjNDgyYTczZWMy
MWM2ZTNjYTUxYmY5MzQyOTdkMS4uZDg2YzY0ODcwODgwZmNhMWQwNWYzNzE5YmJhYzFkOTliZGVk
MzQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTU0
LDYgKzU0LDcgQEAgdHlwZWRlZiB2b2lkKiBSZW1vdGVBWE9iamVjdFJlZjsKICNpZiBQTEFURk9S
TShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNBcnJheTsKIE9CSkNfQ0xBU1MgTlNDYWNoZWRVUkxSZXNw
b25zZTsKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OwogT0JKQ19DTEFTUyBOU1ZpZXc7CiAjZW5k
aWYKIApAQCAtMjkyLDYgKzI5Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8g
QWxsb3cgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8gcmV0cmlldmUgYSBGcmFtZSBwYXJlbnQg
aWYgdGhlcmUncyBubyBQbGF0Zm9ybVdpZGdldC4KICAgICAgICAgdmlydHVhbCBSZW1vdGVBWE9i
amVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgPSAwOwogICAgICAgICB2aXJ0dWFs
IE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgY29uc3QgPSAw
OworICAgICAgICB2aXJ0dWFsIE5TRGljdGlvbmFyeSAqZGF0YURldGVjdGlvbkNvbnRleHQoKSB7
IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRk5F
VFdPUkspCiAgICAgICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNob3VsZCB1c2Ugd2lsbENhY2hlUmVz
cG9uc2UgLSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MjU3Pi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvRGF0YURldGVjdG9y
c1VJU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL0RhdGFEZXRlY3RvcnNV
SVNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE0N2Q5ZWVjNjA3NjE5NTAyZTEwYWI1ZjNlNTE2NWI5MGRjOTli
YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL0Rh
dGFEZXRlY3RvcnNVSVNQSS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
IDxVSUtpdC9VSUtpdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorCisjaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2ltcG9ydCA8RGF0YURldGVjdG9yc1VJL0REQWN0
aW9uLmg+CisjaW1wb3J0IDxEYXRhRGV0ZWN0b3JzVUkvREREZXRlY3Rpb25Db250cm9sbGVyLmg+
CisKKyNlbHNlCisKK0BpbnRlcmZhY2UgRERBY3Rpb24gOiBOU09iamVjdAorQGVuZAorCitAaW50
ZXJmYWNlIEREQWN0aW9uICgpCistIChCT09MKWhhc1VzZXJJbnRlcmZhY2U7CistIChOU1N0cmlu
ZyAqKWxvY2FsaXplZE5hbWU7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1N0cmluZyAqYWN0aW9u
VVRJOworQGVuZAorCitAcHJvdG9jb2wgREREZXRlY3Rpb25Db250cm9sbGVySW50ZXJhY3Rpb25E
ZWxlZ2F0ZSA8TlNPYmplY3Q+CitAZW5kCisKK0BpbnRlcmZhY2UgREREZXRlY3Rpb25Db250cm9s
bGVyIDogTlNPYmplY3QgPFVJQWN0aW9uU2hlZXREZWxlZ2F0ZT4KK0BlbmQKKworQGludGVyZmFj
ZSBERERldGVjdGlvbkNvbnRyb2xsZXIgKCkKKysgKERERGV0ZWN0aW9uQ29udHJvbGxlciAqKXNo
YXJlZENvbnRyb2xsZXI7CisrIChOU0FycmF5ICopdGFwQW5kSG9sZFNjaGVtZXM7CistICh2b2lk
KXBlcmZvcm1BY3Rpb246KEREQWN0aW9uICopYWN0aW9uIGZyb21BbGVydENvbnRyb2xsZXI6KFVJ
QWxlcnRDb250cm9sbGVyICopYWxlcnRDb250cm9sbGVyIGludGVyYWN0aW9uRGVsZWdhdGU6KGlk
IDxERERldGVjdGlvbkNvbnRyb2xsZXJJbnRlcmFjdGlvbkRlbGVnYXRlPilpbnRlcmFjdGlvbkRl
bGVnYXRlOworQGVuZAorCisjZW5kaWYKKworQGludGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xs
ZXIgKERldGFpbHNUb0JlUmVtb3ZlZCkKKy8vIEZJWE1FOiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBh
cyBzb29uIGFzIDxyZGFyOi8vcHJvYmxlbS8xNjM0NjkxMz4gaXMgZml4ZWQuCistIChOU0FycmF5
ICopYWN0aW9uc0ZvckFuY2hvcjooaWQpYW5jaG9yIHVybDooTlNVUkwgKil0YXJnZXRVUkwgZm9y
RnJhbWU6KGlkKWZyYW1lOworQGVuZAorCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoRGF0
YURldGVjdG9yc1VJKQorU09GVF9MSU5LX0NMQVNTKERhdGFEZXRlY3RvcnNVSSwgREREZXRlY3Rp
b25Db250cm9sbGVyKQorU09GVF9MSU5LX0NPTlNUQU5UKERhdGFEZXRlY3RvcnNVSSwga0RhdGFE
ZXRlY3RvcnNMZWFkaW5nVGV4dCwgY29uc3QgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFO
VChEYXRhRGV0ZWN0b3JzVUksIGtEYXRhRGV0ZWN0b3JzVHJhaWxpbmdUZXh0LCBjb25zdCBOU1N0
cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKERhdGFEZXRlY3RvcnNVSSwga0RhdGFEZXRlY3Rv
cnNSZWZlcmVuY2VEYXRlLCBjb25zdCBOU1N0cmluZyAqKQorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL0RhdGFEZXRlY3RvcnNVSVNQSS5oIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vc3BpL2lvcy9EYXRhRGV0ZWN0b3JzVUlTUEkuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzJhYTU5NWRhOTAwN2ZhODk5MmViN2E0MzVkZWYzZTdjNzZjNmVl
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL0RhdGFEZXRlY3RvcnNVSVNQSS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+Ci0KLSNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQotCi0jaW1wb3J0IDxEYXRhRGV0ZWN0b3JzVUkvRERBY3Rpb24uaD4KLSNpbXBvcnQg
PERhdGFEZXRlY3RvcnNVSS9ERERldGVjdGlvbkNvbnRyb2xsZXIuaD4KLQotI2Vsc2UKLQotQGlu
dGVyZmFjZSBEREFjdGlvbiA6IE5TT2JqZWN0Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRERBY3Rpb24g
KCkKLS0gKEJPT0wpaGFzVXNlckludGVyZmFjZTsKLS0gKE5TU3RyaW5nICopbG9jYWxpemVkTmFt
ZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIE5TU3RyaW5nICphY3Rpb25VVEk7Ci1AZW5kCi0KLUBw
cm90b2NvbCBERERldGVjdGlvbkNvbnRyb2xsZXJJbnRlcmFjdGlvbkRlbGVnYXRlIDxOU09iamVj
dD4KLUBlbmQKLQotQGludGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgOiBOU09iamVjdCA8
VUlBY3Rpb25TaGVldERlbGVnYXRlPgotQGVuZAotCi1AaW50ZXJmYWNlIERERGV0ZWN0aW9uQ29u
dHJvbGxlciAoKQotKyAoREREZXRlY3Rpb25Db250cm9sbGVyICopc2hhcmVkQ29udHJvbGxlcjsK
LSsgKE5TQXJyYXkgKil0YXBBbmRIb2xkU2NoZW1lczsKLS0gKHZvaWQpcGVyZm9ybUFjdGlvbjoo
RERBY3Rpb24gKilhY3Rpb24gZnJvbUFsZXJ0Q29udHJvbGxlcjooVUlBbGVydENvbnRyb2xsZXIg
KilhbGVydENvbnRyb2xsZXIgaW50ZXJhY3Rpb25EZWxlZ2F0ZTooaWQgPERERGV0ZWN0aW9uQ29u
dHJvbGxlckludGVyYWN0aW9uRGVsZWdhdGU+KWludGVyYWN0aW9uRGVsZWdhdGU7Ci1AZW5kCi0K
LSNlbmRpZgotCi1AaW50ZXJmYWNlIERERGV0ZWN0aW9uQ29udHJvbGxlciAoRGV0YWlsc1RvQmVS
ZW1vdmVkKQotLy8gRklYTUU6IFRoaXMgd2lsbCBiZSByZW1vdmVkIGFzIHNvb24gYXMgPHJkYXI6
Ly9wcm9ibGVtLzE2MzQ2OTEzPiBpcyBmaXhlZC4KLS0gKE5TQXJyYXkgKilhY3Rpb25zRm9yQW5j
aG9yOihpZClhbmNob3IgdXJsOihOU1VSTCAqKXRhcmdldFVSTCBmb3JGcmFtZTooaWQpZnJhbWU7
Ci1AZW5kCi0KLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhEYXRhRGV0ZWN0b3JzVUkpCi1T
T0ZUX0xJTktfQ0xBU1MoRGF0YURldGVjdG9yc1VJLCBERERldGVjdGlvbkNvbnRyb2xsZXIpCi1T
T0ZUX0xJTktfQ09OU1RBTlQoRGF0YURldGVjdG9yc1VJLCBrRGF0YURldGVjdG9yc0xlYWRpbmdU
ZXh0LCBjb25zdCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UKERhdGFEZXRlY3RvcnNV
SSwga0RhdGFEZXRlY3RvcnNUcmFpbGluZ1RleHQsIGNvbnN0IE5TU3RyaW5nICopCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvTG9hZFBhcmFtZXRlcnNDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9Mb2FkUGFyYW1ldGVyc0NvY29hLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBhZGUwMWQwMWVlMmFlZjQ1NDQ5MGI4YzVmOTI2NjYyOWZmYzdjYzAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvTG9hZFBhcmFtZXRlcnNDb2Nv
YS5tbQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKworI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzTWFjLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIExvYWRQYXJhbWV0ZXJzOjpwbGF0
Zm9ybUVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBJ
UEM6OmVuY29kZShlbmNvZGVyLCBkYXRhRGV0ZWN0aW9uQ29udGV4dC5nZXQoKSk7Cit9CisKK2Jv
b2wgTG9hZFBhcmFtZXRlcnM6OnBsYXRmb3JtRGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBk
ZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYgZGF0YSkKK3sKKyAgICBpZiAoIUlQQzo6ZGVjb2RlKGRl
Y29kZXIsIGRhdGEuZGF0YURldGVjdGlvbkNvbnRleHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDEw
ZjEzNDVmOGQ1NmNkYzg1OWYxOWUyNjVhZWU4M2Y5ZWFkMmQzMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKQEAgLTAsMCArMSwxMDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTG9hZFBhcmFt
ZXRlcnMuaCIKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6QXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbmF2aWdhdGlvbklEOwor
ICAgIGVuY29kZXIgPDwgcmVxdWVzdDsKKyAgICBlbmNvZGVyIDw8IHNhbmRib3hFeHRlbnNpb25I
YW5kbGU7CisgICAgZW5jb2RlciA8PCBkYXRhOworICAgIGVuY29kZXIgPDwgc3RyaW5nOworICAg
IGVuY29kZXIgPDwgTUlNRVR5cGU7CisgICAgZW5jb2RlciA8PCBlbmNvZGluZ05hbWU7CisgICAg
ZW5jb2RlciA8PCBiYXNlVVJMU3RyaW5nOworICAgIGVuY29kZXIgPDwgdW5yZWFjaGFibGVVUkxT
dHJpbmc7CisgICAgZW5jb2RlciA8PCBwcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZzsKKyAg
ICBlbmNvZGVyIDw8IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CisgICAgZW5jb2RlciA8
PCB1c2VyRGF0YTsKKworICAgIHBsYXRmb3JtRW5jb2RlKGVuY29kZXIpOworfQorCitib29sIExv
YWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIExvYWRQ
YXJhbWV0ZXJzJiBkYXRhKQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5uYXZpZ2F0
aW9uSUQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEucmVxdWVzdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGF0YS5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmRhdGEpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc3RyaW5nKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLk1JTUVUeXBl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRh
LmVuY29kaW5nTmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGF0YS5iYXNlVVJMU3RyaW5nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnVucmVhY2hhYmxlVVJMU3RyaW5nKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnByb3Zpc2lv
bmFsTG9hZEVycm9yVVJMU3RyaW5nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEudXNlckRh
dGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXBsYXRmb3JtRGVjb2RlKGRl
Y29kZXIsIGRhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworI2lmICFQTEFURk9STShDT0NPQSkKKwordm9pZCBMb2FkUGFyYW1ldGVyczo6cGxhdGZv
cm1FbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdAoreworfQorCitib29sIExvYWRQ
YXJhbWV0ZXJzOjpwbGF0Zm9ybURlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYsIExvYWRQYXJh
bWV0ZXJzJikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlmIC8vICFQTEFURk9STShD
T0NPQSkKKworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0xvYWRQ
YXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjk5ZDE1Y2UwN2FlOGZiNzk3MzQ3MjYyNjFiZDk5MDg3
OTNkOTEwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Mb2FkUGFy
YW1ldGVycy5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIExvYWRQYXJh
bWV0ZXJzX2gKKyNkZWZpbmUgTG9hZFBhcmFtZXRlcnNfaAorCisjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgorI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJVc2VyRGF0
YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisKK09CSkNfQ0xBU1Mg
TlNEaWN0aW9uYXJ5OworCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsK
K2NsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVj
dCBMb2FkUGFyYW1ldGVycyB7CisgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXIm
KSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBM
b2FkUGFyYW1ldGVycyYpOworCisgICAgdm9pZCBwbGF0Zm9ybUVuY29kZShJUEM6OkFyZ3VtZW50
RW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBib29sIHBsYXRmb3JtRGVjb2RlKElQQzo6QXJn
dW1lbnREZWNvZGVyJiwgTG9hZFBhcmFtZXRlcnMmKTsKKworICAgIHVpbnQ2NF90IG5hdmlnYXRp
b25JRDsKKworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOworCisgICAgSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGE7CisgICAgU3RyaW5nIHN0cmluZzsKKyAgICBTdHJpbmcgTUlNRVR5
cGU7CisgICAgU3RyaW5nIGVuY29kaW5nTmFtZTsKKworICAgIFN0cmluZyBiYXNlVVJMU3RyaW5n
OworICAgIFN0cmluZyB1bnJlYWNoYWJsZVVSTFN0cmluZzsKKyAgICBTdHJpbmcgcHJvdmlzaW9u
YWxMb2FkRXJyb3JVUkxTdHJpbmc7CisKKyAgICB1aW50NjRfdCBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5OworICAgIFVzZXJEYXRhIHVzZXJEYXRhOworCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZGF0YURldGVjdGlvbkNvbnRleHQ7CisjZW5k
aWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gTG9hZFBhcmFtZXRl
cnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVy
c01hYy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5oCmlu
ZGV4IDRlMmRhNzYxOTMxNTNlZDhkODA5ZDE4N2UwNTIzMTVjOWI3MWY3YjQuLmNlYTVmMDFkODhh
NDczYWQ2MDZkNDQ2MTI4NDcxOTFjY2Q2MmRkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLmgKQEAgLTM3LDYgKzM3LDcgQEAgT0JKQ19DTEFTUyBO
U0RpY3Rpb25hcnk7CiBPQkpDX0NMQVNTIE5TRm9udDsKIE9CSkNfQ0xBU1MgTlNOdW1iZXI7CiBP
QkpDX0NMQVNTIE5TU3RyaW5nOworT0JKQ19DTEFTUyBOU1VSTDsKIAogbmFtZXNwYWNlIElQQyB7
CiAKQEAgLTg3LDYgKzg4LDEwIEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFJldGFp
blB0cjxOU0RhdGU+Jik7CiB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBOU0RhdGEgKik7
CiBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBSZXRhaW5QdHI8TlNEYXRhPiYpOwogCisv
LyBOU1VSTAordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgTlNVUkwgKik7Citib29sIGRl
Y29kZShBcmd1bWVudERlY29kZXImLCBSZXRhaW5QdHI8TlNVUkw+Jik7CisKIH0gLy8gbmFtZXNw
YWNlIElQQwogCiAjZW5kaWYgLy8gQXJndW1lbnRDb2RlcnNNYWNfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggNjQwZTdlZGQzNDQxMzlk
YjIxOWFkMWMzMTA3MzBjZmEzM2ZlOTllMS4uMjU1OGI0MTgzM2U2NTQwYTRlM2YxYmMxNGY2MGJk
YjhjMjkwYzJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVu
dENvZGVyc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29k
ZXJzTWFjLm1tCkBAIC01NSw2ICs1NSw3IEBAIGVudW0gTlNUeXBlIHsKICAgICBOU1N0cmluZ1R5
cGUsCiAgICAgTlNEYXRlVHlwZSwKICAgICBOU0RhdGFUeXBlLAorICAgIE5TVVJMVHlwZSwKICAg
ICBVbmtub3duLAogfTsKIApAQCAtODQsNiArODUsOCBAQCBzdGF0aWMgTlNUeXBlIHR5cGVGcm9t
T2JqZWN0KGlkIG9iamVjdCkKICAgICAgICAgcmV0dXJuIE5TRGF0ZVR5cGU7CiAgICAgaWYgKFtv
YmplY3QgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBOU0Rh
dGFUeXBlOworICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TVVJMIGNsYXNzXV0pCisg
ICAgICAgIHJldHVybiBOU1VSTFR5cGU7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gVW5rbm93bjsKQEAgLTEyNiw2ICsxMjksOSBAQCB2b2lkIGVuY29kZShBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIsIGlkIG9iamVjdCkKICAgICBjYXNlIE5TRGF0YVR5cGU6CiAgICAg
ICAgIGVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxOU0RhdGEgKj4ob2JqZWN0KSk7CiAgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIE5TVVJMVHlwZToKKyAgICAgICAgZW5jb2RlKGVuY29kZXIs
IHN0YXRpY19jYXN0PE5TVVJMICo+KG9iamVjdCkpOworICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBVbmtub3duOgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMDcsNiArMjEzLDEzIEBAIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPGlkPiYgcmVzdWx0
KQogICAgICAgICByZXN1bHQgPSBkYXRhOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Cisg
ICAgY2FzZSBOU1VSTFR5cGU6IHsKKyAgICAgICAgUmV0YWluUHRyPE5TVVJMPiBVUkw7CisgICAg
ICAgIGlmICghZGVjb2RlKGRlY29kZXIsIFVSTCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJlc3VsdCA9IFVSTDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogICAg
IGNhc2UgVW5rbm93bjoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTUwNSw0ICs1MTgsMTkgQEAgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNv
ZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8TlNEYXRhPiYgcmVzdWx0KQogICAgIHJldHVybiB0cnVl
OwogfQogCit2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIE5TVVJMICpVUkwp
Cit7CisgICAgZW5jb2RlKGVuY29kZXIsIChDRlVSTFJlZilVUkwpOworfQorCitib29sIGRlY29k
ZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxOU1VSTD4mIHJlc3VsdCkKK3sK
KyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IFVSTDsKKyAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBV
UkwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXN1bHQgPSBhZG9wdE5TKChOU1VS
TCAqKVVSTC5sZWFrUmVmKCkpOworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAppbmRleCA2
YThmYWNkZjY5OGYwZTQ2NGIwZmFjODg3MGU3ODIwNGQ2ZjM4NjdkLi4xMWJiNDIxMWQwMzI5YTY0
NGM5M2Q5MWNmYTc4YzJmYmEyZmE0OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElVSUNsaWVudC5oCkBAIC0xNjQsNiArMTY0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWROb3RIYW5kbGVUYXBBc0NsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgeyB9
CiAgICAgdmlydHVhbCBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIo
KSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2
aXJ0dWFsIE5TRGljdGlvbmFyeSAqZGF0YURldGVjdGlvbkNvbnRleHQoKSB7IHJldHVybiBudWxs
cHRyOyB9CisjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9u
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggMDgzYzFmOTM2MzNiODMzYWVm
OWRjMzVmM2YyYzdhYTdkMGJiZDllNC4uZDJhZDY5OGJiZWY2YTUxMDhjY2YxZTEyMDM2YzdjNzgy
OGIzODE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CkBAIC05Nyw3ICs5NywxMCBAQCBwcml2YXRlOgogICAgICAgICBSZXRhaW5QdHI8TlNBcnJheT4g
YWN0aW9uc0ZvckVsZW1lbnQoX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKiwgUmV0YWluUHRyPE5T
QXJyYXk+IGRlZmF1bHRBY3Rpb25zKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWROb3RIYW5k
bGVUYXBBc0NsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CiAgICAgICAg
IFVJVmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpIG92ZXJyaWRlOwot
I2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCisgICAgICAgIE5TRGljdGlvbmFyeSAq
ZGF0YURldGVjdGlvbkNvbnRleHQoKSBvdmVycmlkZTsKKwogICAgICAgICB2b2lkIGltYWdlT3JN
ZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRl
OwogCiAgICAgICAgIFVJRGVsZWdhdGUmIG1fdWlEZWxlZ2F0ZTsKQEAgLTEzMCw2ICsxMzMsNyBA
QCBwcml2YXRlOgogICAgICAgICBib29sIHdlYlZpZXdEaWROb3RIYW5kbGVUYXBBc0NsaWNrQXRQ
b2ludCA6IDE7CiAgICAgICAgIGJvb2wgcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyRm9yV2ViVmll
dyA6IDE7CiAjZW5kaWYKKyAgICAgICAgYm9vbCBkYXRhRGV0ZWN0aW9uQ29udGV4dEZvcldlYlZp
ZXcgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdJbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFu
Z2VkIDogMTsKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCAyYmVkNDQ5MTZhZmFmYmYwNDdkZTli
YzRhMGZiMDE0YThkY2RlMjYwLi40NDA5NTM3YWY5OWFlNjVkNzAwNWM4MDViYzIwYTM3NGFiYzE3
NjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpA
QCAtMTAxLDYgKzEwMSw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPFdLVUlE
ZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZE5vdEhh
bmRsZVRhcEFzQ2xpY2tBdFBvaW50ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXc6ZGlkTm90SGFuZGxlVGFwQXNDbGlja0F0UG9pbnQ6KV07CiAgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMucHJlc2VudGluZ1ZpZXdDb250cm9sbGVyRm9yV2ViVmlldyA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9wcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXJGb3JXZWJWaWV3OildOwogI2VuZGlmCisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZGF0YURldGVj
dGlvbkNvbnRleHRGb3JXZWJWaWV3ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX2RhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldzopXTsKICAgICBtX2RlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3SW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZCA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmltYWdlT3JNZWRpYURvY3Vt
ZW50U2l6ZUNoYW5nZWQ6KV07CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTQ0MSw2
ICs0NDIsMTggQEAgVUlWaWV3Q29udHJvbGxlciAqVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnByZXNl
bnRpbmdWaWV3Q29udHJvbGxlcigpCiAKICNlbmRpZgogCitOU0RpY3Rpb25hcnkgKlVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpkYXRhRGV0ZWN0aW9uQ29udGV4dCgpCit7CisgICAgaWYgKCFtX3VpRGVs
ZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMuZGF0YURldGVjdGlvbkNvbnRleHRGb3JXZWJWaWV3KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdh
dGUubV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIHJldHVybiBbc3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZh
dGU+PihkZWxlZ2F0ZSkgX2RhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldzptX3VpRGVsZWdh
dGUubV93ZWJWaWV3XTsKK30KKwogdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6aW1hZ2VPck1l
ZGlhRG9jdW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKQog
ewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdJbWFnZU9y
TWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDEwZmJjN2VlZjIzZGU1ZWFiMDM4
ZGE2NGI5YjlkNGUyMzU5OWRiODguLjUwNjM5ZTUzNzUzNWZhMmZjZWFmMDhjNzFmNGZmNDRhYjhl
ZGVkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW0KQEAgLTI0LDkgKzI0LDEyIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5o
IgogCisjaW1wb3J0ICJBUElVSUNsaWVudC5oIgogI2ltcG9ydCAiRGF0YURldGVjdGlvblJlc3Vs
dC5oIgorI2ltcG9ydCAiTG9hZFBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3NQcm94
eS5oIgogCiAjaW1wb3J0IDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudUNvY29hLmg+CiAjaW1wb3J0
IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KQEAgLTY4LDQgKzcxLDkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWRGb3JGcmFtZShjb25zdCBXZWJDb3JlOjpDb250
ZW50RmlsdGUKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2VQcm94eTo6YWRkUGxhdGZvcm1Mb2Fk
UGFyYW1ldGVycyhMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXRlcnMpCit7CisgICAgbG9hZFBh
cmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQgPSBtX3VpQ2xpZW50LT5kYXRhRGV0ZWN0aW9u
Q29udGV4dCgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDViMDVkMmZhZGM5NTI0ZDYxMGZkYTMxZjMyYjEwYjkxNjhiODFkYTYuLjYwYTc0
ZmRjYzc2ZjEyNGEzODA4NDRhYjdkNDdiMzc2YTA4MTExNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiRHJh
d2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTG9hZFBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViR2VzdHVy
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgpAQCAtOTA2LDYg
KzkwNywxMiBAQCBib29sIFdlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVu
c2lvbkhhbmRsZShjb25zdCBVUkwmIHVybCwgU2FuZGJveAogICAgIHJldHVybiB0cnVlOwogfQog
CisjaWYgIVBMQVRGT1JNKENPQ09BKQordm9pZCBXZWJQYWdlUHJveHk6OmFkZFBsYXRmb3JtTG9h
ZFBhcmFtZXRlcnMoTG9hZFBhcmFtZXRlcnMmKQoreworfQorI2VuZGlmCisKIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAobV9pc0Ns
b3NlZCkKQEAgLTkyMCwxMSArOTI3LDE3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0CiAgICAg
aWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CiAKLSAgICBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAgICBib29s
IGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KHJlcXVlc3QudXJsKCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIExvYWRQYXJhbWV0
ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSBy
ZXF1ZXN0OworICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kg
PSAodWludDY0X3Qpc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBsb2FkUGFyYW1l
dGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5k
bGVzKHVzZXJEYXRhKS5nZXQoKSk7CisgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJ
bml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShyZXF1ZXN0LnVybCgpLCBsb2FkUGFyYW1l
dGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBpZiAoY3JlYXRlZEV4dGVuc2lvbikK
ICAgICAgICAgbV9wcm9jZXNzLT53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4
dGVuc2lvbigpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJl
cXVlc3QobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIHJlcXVlc3QsIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUsICh1aW50NjRfdClzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBVc2VyRGF0
YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpKSwg
bV9wYWdlSUQpOworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMp
OworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChs
b2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNz
VGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CkBAIC05
NTksMTAgKzk3MiwxNiBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6Omxv
YWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogCiAgICAgU3RyaW5nIHJl
c291cmNlRGlyZWN0b3J5UGF0aCA9IHJlc291cmNlRGlyZWN0b3J5VVJMLmZpbGVTeXN0ZW1QYXRo
KCk7CiAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocmVzb3VyY2VEaXJlY3RvcnlQ
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7
CisgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CisgICAgbG9hZFBhcmFtZXRlcnMu
bmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7CisgICAgbG9hZFBhcmFt
ZXRlcnMucmVxdWVzdCA9IGZpbGVVUkw7CisgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSA9ICh1aW50NjRfdClTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OjpTaG91bGROb3RBbGxvdzsKKyAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRh
KHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7Cisg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHJlc291cmNlRGlyZWN0b3J5UGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNp
b25IYW5kbGUpOworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMp
OworCiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKHJlc291cmNlRGly
ZWN0b3J5VVJMKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRS
ZXF1ZXN0KG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBmaWxlVVJMLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlLCAodWludDY0X3QpU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxk
Tm90QWxsb3csIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhKS5nZXQoKSkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKICAgICBt
X3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIFdU
Rk1vdmUobmF2aWdhdGlvbik7CkBAIC05ODIsOCArMTAwMSwxNyBAQCBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6RGF0YSogZGF0YSwgY29uc3QgU3Ry
aW5nJiBNSQogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2Vz
cygpOwogCisgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CisgICAgbG9hZFBhcmFt
ZXRlcnMubmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7CisgICAgbG9h
ZFBhcmFtZXRlcnMuZGF0YSA9IGRhdGEtPmRhdGFSZWZlcmVuY2UoKTsKKyAgICBsb2FkUGFyYW1l
dGVycy5NSU1FVHlwZSA9IE1JTUVUeXBlOworICAgIGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFt
ZSA9IGVuY29kaW5nOworICAgIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcgPSBiYXNlVVJM
OworICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKKyAgICBhZGRQbGF0Zm9ybUxv
YWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKKwogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVh
ZEFjY2Vzc1RvQmFzZVVSTChiYXNlVVJMKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkxvYWREYXRhKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBkYXRhLT5kYXRh
UmVmZXJlbmNlKCksIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgVXNlckRhdGEocHJvY2Vz
cygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKSksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQ
YXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1l
cigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gV1RGTW92ZShuYXZpZ2F0aW9uKTsKQEAgLTEwMDQs
OCArMTAzMiwxNiBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRI
VE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgYwogICAgIGlmICghaXNWYWxpZCgp
KQogICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwogCisgICAgTG9hZFBhcmFtZXRlcnMg
bG9hZFBhcmFtZXRlcnM7CisgICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gbmF2aWdh
dGlvbi0+bmF2aWdhdGlvbklEKCk7CisgICAgbG9hZFBhcmFtZXRlcnMuc3RyaW5nID0gaHRtbFN0
cmluZzsKKyAgICBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUgPSBBU0NJSUxpdGVyYWwoInRl
eHQvaHRtbCIpOworICAgIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcgPSBiYXNlVVJMOwor
ICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9y
bU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKKyAgICBhZGRQbGF0Zm9ybUxvYWRQ
YXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKKwogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFj
Y2Vzc1RvQmFzZVVSTChiYXNlVVJMKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkxvYWRIVE1MU3RyaW5nKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBodG1sU3Ry
aW5nLCBiYXNlVVJMLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFN0cmluZyhsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKICAg
ICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJu
IFdURk1vdmUobmF2aWdhdGlvbik7CkBAIC0xMDMzLDkgKzEwNjksMTggQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywg
Y29uc3QgU3RyaW4KICAgICBpZiAobV9tYWluRnJhbWUpCiAgICAgICAgIG1fbWFpbkZyYW1lLT5z
ZXRVbnJlYWNoYWJsZVVSTCh1bnJlYWNoYWJsZVVSTCk7CiAKKyAgICBMb2FkUGFyYW1ldGVycyBs
b2FkUGFyYW1ldGVyczsKKyAgICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQgPSAwOworICAg
IGxvYWRQYXJhbWV0ZXJzLnN0cmluZyA9IGh0bWxTdHJpbmc7CisgICAgbG9hZFBhcmFtZXRlcnMu
YmFzZVVSTFN0cmluZyA9IGJhc2VVUkw7CisgICAgbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVV
UkxTdHJpbmcgPSB1bnJlYWNoYWJsZVVSTDsKKyAgICBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25h
bExvYWRFcnJvclVSTFN0cmluZyA9IG1fZmFpbGluZ1Byb3Zpc2lvbmFsTG9hZFVSTDsKKyAgICBs
b2FkUGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7CisgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1l
dGVycyhsb2FkUGFyYW1ldGVycyk7CisKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NU
b0Jhc2VVUkwoYmFzZVVSTCk7CiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNl
VVJMKHVucmVhY2hhYmxlVVJMKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGh0bWxTdHJpbmcsIGJhc2VVUkwsIHVucmVhY2hh
YmxlVVJMLCBtX2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkwsIFVzZXJEYXRhKHByb2Nlc3MoKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSkpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJuYXRlSFRNTFN0
cmluZyhsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNp
dmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCkBAIC0xMDUwLDcgKzEwOTUsMTQgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmxvYWRQbGFpblRleHRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEFQ
STo6T2JqZWN0KiB1c2VyRGEKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRl
LnRyYW5zYWN0aW9uKCk7CiAgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0
VVJMKHRyYW5zYWN0aW9uLCBibGFua1VSTCgpLnN0cmluZygpKTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFBsYWluVGV4dFN0cmluZyhzdHJpbmcsIFVzZXJE
YXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSkp
LCBtX3BhZ2VJRCk7CisgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CisgICAgbG9h
ZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gMDsKKyAgICBsb2FkUGFyYW1ldGVycy5zdHJpbmcg
PSBzdHJpbmc7CisgICAgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUgPSBBU0NJSUxpdGVyYWwoInRl
eHQvcGxhaW4iKTsKKyAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nl
c3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7CisgICAgYWRk
UGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CisKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTdHJpbmcobG9hZFBhcmFtZXRlcnMpLCBtX3Bh
Z2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0K
IApAQCAtMTA2NSw3ICsxMTE3LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2
ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAgICAgYXV0
byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1fcGFn
ZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtVUkwo
KS5zdHJpbmcoKSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxv
YWRXZWJBcmNoaXZlRGF0YSh3ZWJBcmNoaXZlRGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBVc2VyRGF0
YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpKSwg
bV9wYWdlSUQpOworICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQ
YXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IDA7CisgICAgbG9hZFBhcmFtZXRlcnMuZGF0YSA9IHdl
YkFyY2hpdmVEYXRhLT5kYXRhUmVmZXJlbmNlKCk7CisgICAgbG9hZFBhcmFtZXRlcnMuTUlNRVR5
cGUgPSBBU0NJSUxpdGVyYWwoImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSIpOworICAgIGxvYWRQ
YXJhbWV0ZXJzLmVuY29kaW5nTmFtZSA9IEFTQ0lJTGl0ZXJhbCgidXRmLTE2Iik7CisgICAgbG9h
ZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0
c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRl
cnMobG9hZFBhcmFtZXRlcnMpOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3Mt
PnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNDA2NjEzYTg0MzYzYTUwYTI5ODQxMzU5YjlmNWNkYTJi
MTAyNmRhNC4uMTBhNmE3NDI5ZWRkNzJjYzljNGIyM2NkZTA2MjQ5ZTFhYzY2MTIwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjA1LDYgKzIwNSw3IEBAIHN0
cnVjdCBBdHRyaWJ1dGVkU3RyaW5nOwogc3RydWN0IENvbG9yU3BhY2VEYXRhOwogc3RydWN0IEVk
aXRpbmdSYW5nZTsKIHN0cnVjdCBFZGl0b3JTdGF0ZTsKK3N0cnVjdCBMb2FkUGFyYW1ldGVyczsK
IHN0cnVjdCBQbGF0Zm9ybVBvcHVwTWVudURhdGE7CiBzdHJ1Y3QgUHJpbnRJbmZvOwogc3RydWN0
IFdlYlBvcHVwSXRlbTsKQEAgLTEzMzcsNiArMTMzOCw4IEBAIHByaXZhdGU6CiAKICAgICAvLyBE
aWN0aW9uYXJ5LgogICAgIHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgV2Vi
Q29yZTo6RGljdGlvbmFyeVBvcHVwSW5mbyYpOworCisgICAgdm9pZCBhZGRQbGF0Zm9ybUxvYWRQ
YXJhbWV0ZXJzKExvYWRQYXJhbWV0ZXJzJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFz
c2lzdGFudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNz
aXN0YW50LmgKaW5kZXggZTA1YWVlMDI1YjllZWY3Y2JmNGFmNWNiYjI5ZDY0Njg2NDFiODU4MS4u
YzZiNTRkZGJhNTFkODgyZGJiMmE1YjU3ODVjY2EwZDA2ZmJlZTRkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgKQEAg
LTI1LDEwICsyNSwxMCBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogCi0jaW1wb3J0ICJEYXRhRGV0
ZWN0b3JzVUlTUEkuaCIKICNpbXBvcnQgIkdlc3R1cmVUeXBlcy5oIgogI2ltcG9ydCAiV0tBY3Rp
b25TaGVldC5oIgogI2ltcG9ydCA8VUlLaXQvVUlQb3BvdmVyQ29udHJvbGxlci5oPgorI2ltcG9y
dCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3JzVUlTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDYyNjBkZTQ2MTFh
OGVhZGE1Y2MxNTI5YzEzM2M3NTFjNjgwNjNmYzUuLmIzZTQ5ODI1NDBiY2NhZTE5YjcxMjhjYTY0
OGRkM2E2MGIxMGI0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYg
UExBVEZPUk0oSU9TKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgotI2ltcG9ydCAiRGF0YURl
dGVjdG9yc1VJU1BJLmgiCiAjaW1wb3J0ICJFZGl0aW5nUmFuZ2UuaCIKICNpbXBvcnQgIk1hbmFn
ZWRDb25maWd1cmF0aW9uU1BJLmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50Lmgi
CkBAIC02NSw2ICs2NCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3Jz
Q29yZVNQSS5oPgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3JzVUlTUEkuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRmxvYXRRdWFkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUGF0aC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI3NjQ2NjE3NjMzNDYxMWYyYjAzMGU0NTll
ZjcxNmI4NmNlZGJhMzEuLmU2NjdlZTRmYWI5ZWY3ODY4NDE0MTAxNGE5Nzg1OTZkYTVjZDhjOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTU5Niw2ICs1OTYsOSBAQAogCQkyOUFEMzA5NjE2NEI0QzkzMDA3MkRFQTkgLyogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gKi87IH07CiAJCTI5Q0Q1NUFBMTI4RTI5NEYwMDEzM0M4
NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8q
IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggKi87IH07CiAJCTI5Q0Q1NUFCMTI4
RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0Q1NUE5MTI4RTI5
NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAqLzsgfTsK
KwkJMkQxMDg3NjAxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTA4NzVFMUQyQzU3M0Uw
MEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgKi87IH07CisJCTJEMTA4NzYxMUQyQzU3M0Uw
MEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQxMDg3NUYxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0
ZXJzLmggKi87IH07CisJCTJEMTA4NzYzMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVy
c0NvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQxMDg3NjIxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzQ29jb2EubW0gKi87IH07
CiAJCTJEMTI1QzVFMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTI1QzVDMTg1
N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJMkQxMjVD
NUYxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTI1QzVEMTg1N0VBMDUw
MDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gKi87IH07CiAJCTJEMUI1RDVE
MTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxQjVE
NUIxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CkBAIC0xNzM2LDcgKzE3MzksNiBAQAogCQlDRTExQUQ1MjFDQkM0ODJGMDA2
ODFFRTUgLyogQ29kZVNpZ25pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFMTFBRDUxMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oICov
OyB9OwogCQlDRTFBMEJEMjFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkND
MUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oICovOyB9OwogCQlDRTFB
MEJEMzFBNDhFNkM2MDA1NEVGNzQgLyogQ29yZVBERlNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCQ0QxQTQ4RTZDNjAwNTRFRjc0IC8qIENv
cmVQREZTUEkuaCAqLzsgfTsKLQkJQ0UxQTBCRDQxQTQ4RTZDNjAwNTRFRjc0IC8qIERhdGFEZXRl
Y3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0UxQTBCQ0UxQTQ4RTZDNjAwNTRFRjc0IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oICovOyB9
OwogCQlDRTFBMEJENTFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkNG
MUE0OEU2QzYwMDU0RUY3NCAvKiBNYW5hZ2VkQ29uZmlndXJhdGlvblNQSS5oICovOyB9OwogCQlD
RTFBMEJENjFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJEMDFBNDhFNkM2MDA1NEVGNzQgLyogVEND
U1BJLmggKi87IH07CiAJCUNFMUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQx
MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCAqLzsgfTsKQEAgLTI2MDEsNiArMjYw
Myw5IEBACiAJCTI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0QmFzZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRDAwMzUyMjFCQzc0MTQ4MDBEQTg3MTYgLyogRGVwcmVjYXRlZFBERlBsdWdp
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZXByZWNhdGVkUERGUGx1Z2lu
Lmg7IHBhdGggPSBQREYvRGVwcmVjYXRlZFBERlBsdWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRDAwMzUyMzFCQzc0MTQ4MDBEQTg3MTYgLyogRGVwcmVjYXRlZFBERlBsdWdp
bi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERlcHJlY2F0ZWRQ
REZQbHVnaW4ubW07IHBhdGggPSBQREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQxMDg3NUUxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJh
bWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRQYXJh
bWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQxMDg3NUYxRDJDNTcz
RTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExvYWRQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJE
MTA4NzYyMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29hLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9hZFBhcmFtZXRlcnNDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQxMjVDNUMxODU3RUEwNTAwM0JBM0NCIC8q
IFZpZXdHZXN0dXJlQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkQxMjVDNUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZXdHZXN0dXJlQ29udHJv
bGxlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQxQjVENUExODU4NjU5
OTAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWaWV3
R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zODQyLDcgKzM4NDcsNiBAQAogCQlDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29k
ZVNpZ25pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNpZ25pbmcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0
IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFzc2VydGlvblNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNFMUEwQkNEMUE0OEU2QzYwMDU0RUY3NCAvKiBDb3JlUERGU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvcmVQREZTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQ0UxQTBCQ0UxQTQ4RTZDNjAwNTRFRjc0IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhRGV0ZWN0b3JzVUlTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCQ0YxQTQ4RTZDNjAwNTRFRjc0IC8qIE1h
bmFnZWRDb25maWd1cmF0aW9uU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1hbmFnZWRDb25maWd1cmF0aW9uU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNFMUEwQkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVENDU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
MUEwQkQxMUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGV4dElucHV0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC00NDg0LDYgKzQ0ODgsOCBAQAogCQkJCUJDQ0Y2QjIzMTJDOTNFN0EwMDhGOUMzNSAv
KiBJbWFnZU9wdGlvbnMuaCAqLywKIAkJCQkxQTkyREMxMjEyRjhCQUI5MDAxN0FGNjUgLyogTGF5
ZXJUcmVlQ29udGV4dC5jcHAgKi8sCiAJCQkJMUE5MkRDMTAxMkY4QkE0NjAwMTdBRjY1IC8qIExh
eWVyVHJlZUNvbnRleHQuaCAqLywKKwkJCQkyRDEwODc1RTFEMkM1NzNFMDBCODVGODIgLyogTG9h
ZFBhcmFtZXRlcnMuY3BwICovLAorCQkJCTJEMTA4NzVGMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2Fk
UGFyYW1ldGVycy5oICovLAogCQkJCTJENTAzNjZBMUJDREUxNzkwMEUyMEJCMyAvKiBOYXRpdmVX
ZWJHZXN0dXJlRXZlbnQuaCAqLywKIAkJCQlDMDJCRkYxNTEyNTE0RkQ4MDA5Q0NCRUEgLyogTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudC5oICovLAogCQkJCTMxRUEyNUQzMTM0Rjc4RDYwMDVCMTQ1MiAv
KiBOYXRpdmVXZWJNb3VzZUV2ZW50LmggKi8sCkBAIC01MjM4LDYgKzUyNDQsNyBAQAogCQkJCTM3
QkVDNERFMTk0OTE0ODYwMDhCNDI4NiAvKiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1t
ICovLAogCQkJCUM1NUY5MTZDMUM1OTVFNDQwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0
LmggKi8sCiAJCQkJQzU1RjkxNkQxQzU5NUU0NDAwMjlFOTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1
bHQubW0gKi8sCisJCQkJMkQxMDg3NjIxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJz
Q29jb2EubW0gKi8sCiAJCQkJMUFCMUY3OEUxRDFCMzRBNjAwN0M5QkQxIC8qIFdlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tICovLAogCQkJCTM3QzRDMDkyMTgxNEIzQUYwMDM2ODhCOSAvKiBX
S05TQXJyYXkuaCAqLywKIAkJCQkzN0M0QzA5MTE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5
Lm1tICovLApAQCAtNzE2MCw3ICs3MTY3LDYgQEAKIAkJCQlDRTFBMEJDQzFBNDhFNkM2MDA1NEVG
NzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCAqLywKIAkJCQlDREEwNDFGMzFBQ0UyMTA1MDA0
QTEzRUMgLyogQmFja0JvYXJkU2VydmljZXNTUEkuaCAqLywKIAkJCQlDRTFBMEJDRDFBNDhFNkM2
MDA1NEVGNzQgLyogQ29yZVBERlNQSS5oICovLAotCQkJCUNFMUEwQkNFMUE0OEU2QzYwMDU0RUY3
NCAvKiBEYXRhRGV0ZWN0b3JzVUlTUEkuaCAqLywKIAkJCQlDRTFBMEJDRjFBNDhFNkM2MDA1NEVG
NzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCAqLywKIAkJCQk1NzlEMThCNzFDQ0ZFMzRC
MDBCMTk3NEMgLyogUGhvdG9zU1BJLmggKi8sCiAJCQkJQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0
IC8qIFRDQ1NQSS5oICovLApAQCAtNzQ2Myw3ICs3NDY5LDYgQEAKIAkJCQk1MTJBOTc2QTE4MEUw
OUI4MDAzOUExNDkgLyogRGF0YWJhc2VQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTEwMzJGMUUxODBGNzkxNzAwOTYxQkI3IC8qIERhdGFiYXNlVG9XZWJQcm9jZXNz
Q29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTVGOTE3MTFDNTk2NzZF
MDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0Ux
QTBCRDQxQTQ4RTZDNjAwNTRFRjc0IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFDNzUzODAxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzODkxQjZDMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNDI3MDIxQzIzRjg0QzAwRDQxMTgz
IC8qIERvd25sb2FkLmggaW4gSGVhZGVycyAqLywKQEAgLTc4NTUsNiArNzg2MCw3IEBACiAJCQkJ
N0M4NUZEN0MxOTM0MTVBODAwMDE3N0M0IC8qIFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTdDODVGRDgwMTkzNDE2NjUwMDAxNzdDNCAvKiBXZWJQcmVmZXJl
bmNlc0tleXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDU5OEFDMTEyQjdGREYwMEVDOEMyMyAv
KiBXZWJQcmVmZXJlbmNlc1N0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDEwODc2MTFEMkM1
NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMy
RDk3MTBGNDM3QUYwMDU4QzE1QSAvKiBXZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTA0M0EwOTEyNEQxMUE5MDBGRkJGQjUgLyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMDQzRjZBMTI1MTREOEIwMEZGQkZCNSAvKiBXZWJQcm9jZXNzQ29ubmVj
dGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTg4ODAsNiArODg4Niw3IEBACiAJCQkJ
QzU5QzRBNTgxOEI4MTE3NDAwN0JEQ0I2IC8qIEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxNUU3NzI3MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVl
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRTk2NkMxMTJGQUY1NzAwNkJDQzI0IC8qIEF0
dGFjaG1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkQxMDg3NjMxRDJDNjQxQjAwQjg1Rjgy
IC8qIExvYWRQYXJhbWV0ZXJzQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMUEzMTczNTEz
NENFQTgwMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMkY1ODk2MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMkY1ODk4MTJBODgzODgwMDYyOTUzMCAvKiBBdXRo
ZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MDYzLDYg
KzkwNzAsNyBAQAogCQkJCTFBMkQ4MkE2MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVjdFByb3h5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ4MkE4MTI3RjRFQUIwMDFFQjk2MiAvKiBOUFJl
bW90ZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIxNjFCMTExRjM3NjY0MDA4
QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJEMTA4
NzYwMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTIxNjJCMDExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBMkQ4NEE0MTI3RjZBRDEwMDFFQjk2MiAvKiBOUFZhcmlhbnRE
YXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOEFDQTE0MTY2NzBEODkwMDRDMTk0MSAvKiBP
YmpDT2JqZWN0R3JhcGgubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKaW5kZXggMmQ3MTJiYzcwZGUxYWVhNWIwYTQ2OTdlMTYyM2E4NTUyMzNjODQyZi4u
NmFmMDc2ZTgzZTMwYzRlYTdlZmI4N2U4OGIxYTQ1OWRkOTllNWVhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE2MjksNyArMTYyOSw3IEBAIFJlbW90ZUFYT2JqZWN0
UmVmIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKICAg
ICByZXR1cm4gd2ViUGFnZS0+YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpOwogfQogICAgIAot
TlNDYWNoZWRVUkxSZXNwb25zZSogV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndpbGxDYWNoZVJlc3Bv
bnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBOU0NhY2hlZFVS
TFJlc3BvbnNlKiByZXNwb25zZSkgY29uc3QKK05TQ2FjaGVkVVJMUmVzcG9uc2UgKldlYkZyYW1l
TG9hZGVyQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpIGNvbnN0CiB7
CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBh
Z2UpCkBAIC0xNjM4LDYgKzE2MzgsMTUgQEAgTlNDYWNoZWRVUkxSZXNwb25zZSogV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OndpbGxDYWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW4KICAgICBy
ZXR1cm4gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoKS5zaG91bGRD
YWNoZVJlc3BvbnNlKHdlYlBhZ2UsIG1fZnJhbWUsIGlkZW50aWZpZXIpID8gcmVzcG9uc2UgOiBu
aWw7CiB9CiAKK05TRGljdGlvbmFyeSAqV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRhdGFEZXRlY3Rp
b25Db250ZXh0KCkKK3sKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwor
ICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiB3ZWJQ
YWdlLT5kYXRhRGV0ZWN0aW9uQ29udGV4dCgpOworfQorCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09D
T0EpCiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEFsd2F5c1VzZVBsdWdpbkRv
Y3VtZW50KGNvbnN0IFN0cmluZyYgLyptaW1lVHlwZSovKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCmluZGV4IGUyMDc0MDQ1OTc4MTA1OWUwZThjMzMxMDgwYmNjYjkyMzIyMWE2
OTQuLmVlNmJlYmQ2ODQ5YWY1ZDJlNDhjM2Y5OTRlZGMyMjYzYjUxNjJlNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTIyMSw2ICsyMjEsOCBAQCBwcml2YXRlOgogICAgIFJl
bW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBvdmVycmlkZTsKICAg
ICAKICAgICBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShXZWJDb3JlOjpE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgTlNDYWNoZWRVUkxSZXNw
b25zZSopIGNvbnN0IG92ZXJyaWRlOworCisgICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9u
Q29udGV4dCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBib29sIHNob3VsZEFsd2F5c1VzZVBs
dWdpbkRvY3VtZW50KGNvbnN0IFN0cmluZyYgLyptaW1lVHlwZSovKSBjb25zdCBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA1
ODMxM2MxMTg0ZTU2ZDhjZjVmOWIzY2M0NDk4N2RmYzk4NWRmOTM3Li5mYWRmM2Y5OWMwNmMxMmE5
Y2Q3NTAwZWQyNjFhYjRlNTJkMzBhNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSW5qZWN0
ZWRCdW5kbGUuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIgog
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCIKKyNpbmNsdWRlICJMb2FkUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdp
bi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgpA
QCAtMTEzOSwyMSArMTE0MCwyMyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRVUkxJbkZyYW1lKGNvbnN0
IFN0cmluZyYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQogICAgIGZyYW1lLT5jb3JlRnJhbWUoKS0+
bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5jb3JlRnJhbWUoKSwgUmVzb3Vy
Y2VSZXF1ZXN0KFVSTChVUkwoKSwgdXJsKSksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZE5vdEFsbG93KSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3QodWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgdWludDY0X3Qg
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQor
dm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChjb25zdCBMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFt
ZXRlcnMpCiB7CiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXIodGhpcyk7
CiAKLSAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uSUQ7CisgICAgbV9wZW5k
aW5nTmF2aWdhdGlvbklEID0gbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEOwogCi0gICAgbV9z
YW5kYm94RXh0ZW5zaW9uVHJhY2tlci5iZWdpbkxvYWQobV9tYWluRnJhbWUuZ2V0KCksIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpOworICAgIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXIuYmVnaW5M
b2FkKG1fbWFpbkZyYW1lLmdldCgpLCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKTsKIAogICAgIC8vIExldCB0aGUgSW5qZWN0ZWRCdW5kbGUga25vdyB3ZSBhcmUgYWJvdXQg
dG8gc3RhcnQgdGhlIGxvYWQsIHBhc3NpbmcgdGhlIHVzZXIgZGF0YSBmcm9tIHRoZSBVSVByb2Nl
c3MKICAgICAvLyB0byBhbGwgdGhlIGNsaWVudCB0byBzZXQgdXAgYW55IG5lZWRlZCBzdGF0ZS4K
LSAgICBtX2xvYWRlckNsaWVudC53aWxsTG9hZFVSTFJlcXVlc3QodGhpcywgcmVxdWVzdCwgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LndpbGxMb2FkVVJMUmVxdWVzdCh0
aGlzLCBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7CisKKyAgICBtX2RhdGFEZXRlY3Rpb25Db250ZXh0ID0gbG9hZFBhcmFtZXRlcnMuZGF0
YURldGVjdGlvbkNvbnRleHQ7CiAKICAgICAvLyBJbml0YXRlIHRoZSBsb2FkIGluIFdlYkNvcmUu
Ci0gICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0KG1fbWFpbkZyYW1lLT5jb3Jl
RnJhbWUoKSwgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90
QWxsb3cpOwotICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgZXh0ZXJuYWxVUkxzUG9s
aWN5ID0gc3RhdGljX2Nhc3Q8U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeT4oc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1
ZXN0KG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCwgU2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOworICAgIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgZXh0ZXJuYWxVUkxzUG9saWN5ID0gc3RhdGljX2Nhc3Q8U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeT4obG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSk7CiAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5KGV4dGVybmFsVVJMc1BvbGljeSk7CiAKICAgICBjb3JlUGFnZSgpLT51c2Vy
SW5wdXRCcmlkZ2UoKS5sb2FkUmVxdWVzdChmcmFtZUxvYWRSZXF1ZXN0KTsKQEAgLTExNzksNyAr
MTE4Miw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlCiAgICAgbV9tYWluRnJhbWUtPmNvcmVG
cmFtZSgpLT5sb2FkZXIoKS5sb2FkKEZyYW1lTG9hZFJlcXVlc3QobV9tYWluRnJhbWUtPmNvcmVG
cmFtZSgpLCByZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RB
bGxvdywgc3Vic3RpdHV0ZURhdGEpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkU3RyaW5nKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVV
UkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZTo6bG9hZFN0cmluZ0lt
cGwodWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNo
YWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlmICghaHRtbFN0cmlu
Zy5pc051bGwoKSAmJiBodG1sU3RyaW5nLmlzOEJpdCgpKSB7CiAgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGh0bWxTdHJpbmcuY2hhcmFjdGVyczgoKSksIGh0bWxTdHJpbmcu
bGVuZ3RoKCkgKiBzaXplb2YoTENoYXIpKTsKQEAgLTExOTAsMzggKzExOTMsMzMgQEAgdm9pZCBX
ZWJQYWdlOjpsb2FkU3RyaW5nKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBo
dG1sU3RyaW5nLCBjb25zdAogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkRGF0YSh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTFN0cmluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdl
Ojpsb2FkRGF0YShjb25zdCBMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXRlcnMpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7
Ci0gICAgVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkg
OiBVUkwoVVJMKCksIGJhc2VVUkxTdHJpbmcpOwotICAgIGxvYWREYXRhSW1wbChuYXZpZ2F0aW9u
SUQsIHNoYXJlZEJ1ZmZlciwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgVVJMKCks
IHVzZXJEYXRhKTsKLX0KKyAgICBtX2RhdGFEZXRlY3Rpb25Db250ZXh0ID0gbG9hZFBhcmFtZXRl
cnMuZGF0YURldGVjdGlvbkNvbnRleHQ7CiAKLXZvaWQgV2ViUGFnZTo6bG9hZEhUTUxTdHJpbmco
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTFN0cmluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQotewotICAgIFVS
TCBiYXNlVVJMID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVS
TCgpLCBiYXNlVVJMU3RyaW5nKTsKLSAgICBsb2FkU3RyaW5nKG5hdmlnYXRpb25JRCwgaHRtbFN0
cmluZywgQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKSwgYmFzZVVSTCwgVVJMKCksIHVzZXJEYXRh
KTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRh
LmRhdGEoKSksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKKyAgICBVUkwgYmFzZVVSTCA9
IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVS
TChVUkwoKSwgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZyk7CisgICAgbG9hZERhdGFJbXBs
KGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgc2hhcmVkQnVmZmVyLCBsb2FkUGFyYW1ldGVy
cy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwg
bG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRBbHRlcm5h
dGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNl
VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCit2b2lkIFdlYlBhZ2U6OmxvYWRTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQ
YXJhbWV0ZXJzKQogewotICAgIFVSTCBiYXNlVVJMID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkg
PyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBiYXNlVVJMU3RyaW5nKTsKLSAgICBVUkwgdW5yZWFj
aGFibGVVUkwgPSB1bnJlYWNoYWJsZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6IFVSTChV
UkwoKSwgdW5yZWFjaGFibGVVUkxTdHJpbmcpOwotICAgIFVSTCBwcm92aXNpb25hbExvYWRFcnJv
clVSTCA9IHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDog
VVJMKFVSTCgpLCBwcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZyk7Ci0gICAgbV9tYWluRnJh
bWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zZXRQcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFu
ZGxlZFVSTChwcm92aXNpb25hbExvYWRFcnJvclVSTCk7Ci0gICAgbG9hZFN0cmluZygwLCBodG1s
U3RyaW5nLCBBU0NJSUxpdGVyYWwoInRleHQvaHRtbCIpLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVS
TCwgdXNlckRhdGEpOwotICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc2V0
UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwoeyB9KTsKLX0KKyAgICBtX2RhdGFE
ZXRlY3Rpb25Db250ZXh0ID0gbG9hZFBhcmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQ7CiAK
LXZvaWQgV2ViUGFnZTo6bG9hZFBsYWluVGV4dFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQotewotICAgIGxvYWRTdHJpbmcoMCwgc3RyaW5nLCBB
U0NJSUxpdGVyYWwoInRleHQvcGxhaW4iKSwgYmxhbmtVUkwoKSwgVVJMKCksIHVzZXJEYXRhKTsK
KyAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgp
ID8gYmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZyk7
CisgICAgbG9hZFN0cmluZ0ltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFy
YW1ldGVycy5zdHJpbmcsIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBiYXNlVVJMLCBVUkwoKSwg
bG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRXZWJBcmNo
aXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdlYkFyY2hpdmVEYXRhLCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5n
KGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPih3ZWJBcmNoaXZlRGF0YS5kYXRhKCkpLCB3ZWJBcmNoaXZlRGF0
YS5zaXplKCkgKiBzaXplb2YodWludDhfdCkpOwotICAgIGxvYWREYXRhSW1wbCgwLCBzaGFyZWRC
dWZmZXIsIEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIiksIEFTQ0lJTGl0
ZXJhbCgidXRmLTE2IiksIGJsYW5rVVJMKCksIFVSTCgpLCB1c2VyRGF0YSk7CisgICAgbV9kYXRh
RGV0ZWN0aW9uQ29udGV4dCA9IGxvYWRQYXJhbWV0ZXJzLmRhdGFEZXRlY3Rpb25Db250ZXh0Owor
CisgICAgVVJMIGJhc2VVUkwgPSBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nLmlzRW1wdHko
KSA/IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcp
OworICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLnVucmVhY2hhYmxlVVJM
U3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy51bnJl
YWNoYWJsZVVSTFN0cmluZyk7CisgICAgVVJMIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMID0gbG9h
ZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcuaXNFbXB0eSgpID8gVVJM
KCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3Ry
aW5nKTsKKyAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lv
bmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMKTsKKyAg
ICBsb2FkU3RyaW5nSW1wbCgwLCBsb2FkUGFyYW1ldGVycy5zdHJpbmcsIEFTQ0lJTGl0ZXJhbCgi
dGV4dC9odG1sIiksIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCBsb2FkUGFyYW1ldGVycy51c2Vy
RGF0YSk7CisgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zZXRQcm92aXNp
b25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCh7IH0pOwogfQogCiB2b2lkIFdlYlBhZ2U6Om5h
dmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBJbnRQ
b2ludCBkb2N1bWVudFBvaW50LCBJbnRQb2ludCBzY3JlZW5Qb2ludCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGZhZWIyNWQ3ODQ1N2U3NWNhNjFj
MjlmNmFlODBkZDZhODUzYzQ2MjQuLjI4YTc5ZTZmMTAzNDg3YWJiNGE5MTA5MDA5M2NmOTU5YWU2
MDEwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMTkyLDYgKzE5Miw3IEBAIHN0cnVjdCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU7CiBzdHJ1
Y3QgRWRpdGluZ1JhbmdlOwogc3RydWN0IEVkaXRvclN0YXRlOwogc3RydWN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uOworc3RydWN0IExvYWRQYXJhbWV0ZXJzOwogc3RydWN0IFBy
aW50SW5mbzsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmU7CkBAIC04NTMsNiArODU0LDggQEAgcHVibGljOgogICAgIGJvb2wgc2hv
dWxkVXNlUERGUGx1Z2luKCkgY29uc3Q7CiAgICAgYm9vbCBwZGZQbHVnaW5FbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9wZGZQbHVnaW5FbmFibGVkOyB9CiAgICAgdm9pZCBzZXRQREZQbHVnaW5F
bmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3BkZlBsdWdpbkVuYWJsZWQgPSBlbmFibGVkOyB9CisK
KyAgICBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhRGV0ZWN0aW9uQ29udGV4dC5nZXQoKTsgfQogI2VuZGlmCiAKICAgICB2b2lkIHNhdmVQ
REZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsb25nIHNpemUpOwpAQCAtOTk4LDE4ICsxMDAxLDE2IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIHNvdXJjZUZvckZyYW1lKFdlYkZyYW1lKik7CiAKICAgICB2b2lkIGxvYWREYXRh
SW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgbG9hZFN0cmluZyh1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmYWlsaW5nVVJMLCBjb25z
dCBVc2VyRGF0YSYpOworICAgIHZvaWQgbG9hZFN0cmluZ0ltcGwodWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNl
ckRhdGEmKTsKIAogICAgIGJvb2wgcGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJik7CiAKICAgICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZSgpOwotICAg
IHZvaWQgbG9hZFJlcXVlc3QodWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCB1aW50NjRf
dCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZv
aWQgbG9hZERhdGEodWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwg
Y29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgbG9hZEhU
TUxTdHJpbmcodWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGxvYWRB
bHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBTdHJpbmcmIHBy
b3Zpc2lvbmFsTG9hZEVycm9yVVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgbG9hZFBs
YWluVGV4dFN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQg
bG9hZFdlYkFyY2hpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFVzZXJE
YXRhJik7CisgICAgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBMb2FkUGFyYW1ldGVycyYpOworICAg
IHZvaWQgbG9hZERhdGEoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIGxvYWRTdHJp
bmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3Ry
aW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dp
dGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9j
dW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogICAgIHZvaWQgcmVs
b2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwog
ICAgIHZvaWQgZ29Gb3J3YXJkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwpAQCAt
MTI4MCw2ICsxMjgxLDggQEAgcHJpdmF0ZToKIAogICAgIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOwogCisgICAgUmV0YWluUHRyPE5T
RGljdGlvbmFyeT4gbV9kYXRhRGV0ZWN0aW9uQ29udGV4dDsKKwogI2VsaWYgSEFWRShBQ0NFU1NJ
QklMSVRZKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpKQogICAgIEdSZWZQdHI8
V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3Q+IG1fYWNjZXNzaWJpbGl0eU9iamVjdDsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCAzZGU0Zjc1ZWY0OWM2NjRhNjc3YzY3YjBhNDI1ODFjYTdiYWIyZmIz
Li5iZTU0NmMxYzhmMjBiYTBmYTFhNGUzNjM4MzYwYzg0ZDI1ZjAyNTY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpA
QCAtMTMyLDEyICsxMzIsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7
CiAgICAgVHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAogICAgIExvYWRVUkxJbkZyYW1lKFN0
cmluZyB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgTG9hZFJlcXVlc3QodWludDY0X3QgbmF2
aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgdWludDY0X3Qgc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAg
ICBMb2FkRGF0YSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
LCBTdHJpbmcgTUlNRVR5cGUsIFN0cmluZyBlbmNvZGluZywgU3RyaW5nIGJhc2VVUkwsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgTG9hZEhUTUxTdHJpbmcodWludDY0X3QgbmF2aWdh
dGlvbklELCBTdHJpbmcgaHRtbFN0cmluZywgU3RyaW5nIGJhc2VVUkwsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCi0gICAgTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoU3RyaW5nIGh0bWxTdHJp
bmcsIFN0cmluZyBiYXNlVVJMLCBTdHJpbmcgdW5yZWFjaGFibGVVUkwsIFN0cmluZyBwcm92aXNp
b25hbExvYWRFcnJvclVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBMb2FkUGxh
aW5UZXh0U3RyaW5nKFN0cmluZyBzdHJpbmcsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0g
ICAgTG9hZFdlYkFyY2hpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSB3ZWJBcmNoaXZlRGF0YSwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBMb2FkUmVxdWVzdChzdHJ1Y3QgV2ViS2l0
OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKKyAgICBMb2FkRGF0YShzdHJ1Y3QgV2Vi
S2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKKyAgICBMb2FkU3RyaW5nKHN0cnVj
dCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQorICAgIExvYWRBbHRlcm5h
dGVIVE1MU3RyaW5nKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJz
KQorCiAgICAgTmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soU3RyaW5nIHVybCwg
V2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVu
UG9pbnQpCiAKICAgICBSZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHJlbG9hZEZy
b21PcmlnaW4sIGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxNjAyOTA5YmU4MDg0Yjg1OTAzZDY4
NWRhMjEzN2Q1N2M0ZGUzZGIwLi40MjJmZGE0MTY5ODAzNWZkNzBmODIwZTAyOThjNGI0NzZhYmUx
MGE4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTYtMDctMDYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRW1haWwgZnJvbSBKdW5lIDFzdCBjb250YWluaW5nIHRleHQg
J1RvZGF5IEAgNzoxMFBNJyBpcyBsaW5raWZpZWQsIGJ1dCBzaG91bGRuJ3QgYmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTQ5OAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjY3MTk5MDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5p
Zy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L0RhdGFEZXRlY3Rpb24ubW06IEFkZGVkLgorICAgICAgICAoLVtEYXRhRGV0ZWN0aW9uTmF2aWdh
dGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1b
RGF0YURldGVjdGlvblVJRGVsZWdhdGUgX2RhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldzpd
KToKKyAgICAgICAgKGV4cGVjdExpbmtDb3VudCk6CisgICAgICAgIChURVNUKToKKyAgICAgICAg
QWRkIGEgdGVzdCBlbnN1cmluZyB0aGF0IFJlZmVyZW5jZURhdGUgaW4gdGhlIERhdGFEZXRlY3Rv
cnMgY29udGV4dCBpcyByZXNwZWN0ZWQKKyAgICAgICAgd2hlbiBkZWNpZGluZyB3aGF0IHRvIGxp
bmtpZnkuCisKIDIwMTYtMDctMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIERhdGFiYXNlIHByb2Nlc3MgY3Jhc2hlcyBkZWxldGluZyBhIGNvcnJ1cHQgU1FM
aXRlIGRhdGFiYXNlIGZpbGUgKG51bGwgZGVyZWYpLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA0ZmY3OTAyNDZhNzE1ZTI2YjM1MDI2NTIzN2I4NGJlZjZhYWM4NjMwLi5iYTQ1NTA2ZjY5ZDNh
M2RhNTdjOWE4ZDY2ZjY1OGJiM2M2MmM0Y2ZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NDksNiArNDksNyBAQAogCQkyRDAwMDY1RjFDMUY1ODlBMDA4OEU2QTcgLyogV0tQREZWaWV3UmVz
aXplQ3Jhc2gubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDAwMDY1RDFDMUY1ODk0MDA4OEU2QTcgLyogV0tQREZWaWV3UmVzaXplQ3Jhc2gubW0gKi87
IH07CiAJCTJEMTY0NkUyMUQxODYyQ0QwMDAxNUExQSAvKiBEZWZlcnJlZFZpZXdJbldpbmRvd1N0
YXRlQ2hhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQxNjQ2RTExRDE4NjJDRDAwMDE1QTFBIC8qIERlZmVycmVkVmlld0luV2luZG93U3RhdGVD
aGFuZ2UubW0gKi87IH07CiAJCTJENTFBMEM3MUM4QkYwMEMwMDc2NUM0NSAvKiBET01IVE1MVmlk
ZW9FbGVtZW50V3JhcHBlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJENTFBMEM1MUM4QkYwMDQwMDc2NUM0NSAvKiBET01IVE1MVmlkZW9FbGVtZW50
V3JhcHBlci5tbSAqLzsgfTsKKwkJMkRDNENGNzcxRDJEOUREODAwRUNDQzk0IC8qIERhdGFEZXRl
Y3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REM0Q0Y3NjFEMkQ5REQ4MDBFQ0NDOTQgLyogRGF0YURldGVjdGlvbi5tbSAqLzsgfTsKIAkJMkRE
N0QzQUYxNzgyMjdCMzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDdE
M0FFMTc4MjI3QUMwMDI2RTFFMyAvKiBsb3RzLW9mLXRleHQtdmVydGljYWwtbHIuaHRtbCAqLzsg
fTsKIAkJMkU3NzY1Q0QxNkM0RDgwQTAwQkEyQkIxIC8qIG1haW5JT1MubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc3NjVDQzE2QzREODBBMDBCQTJC
QjEgLyogbWFpbklPUy5tbSAqLzsgfTsKIAkJMkU3NzY1Q0YxNkM0RDgxMTAwQkEyQkIxIC8qIG1h
aW5NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTc3NjVDRTE2QzREODExMDBCQTJCQjEgLyogbWFpbk1hYy5tbSAqLzsgfTsKQEAgLTY2MCw2ICs2
NjEsNyBAQAogCQkyRDY0MEI1NDE3ODc1REZGMDBCRkFGOTkgLyogU2Nyb2xsUGlubmluZ0JlaGF2
aW9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxQaW5u
aW5nQmVoYXZpb3JzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4MTA0Q0Ix
QkVDMTNFNzAwMjBEQTQ2IC8qIEZpbmRJblBhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBGaW5kSW5QYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDlBNTNBRTFCMzFGQThEMDA3NEQ1QUEgLyogU2hyaW5rVG9GaXQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaHJpbmtUb0ZpdC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRDNENGNzYxRDJEOUREODAwRUNDQzk0IC8qIERhdGFEZXRl
Y3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRhRGV0
ZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREQzNTUzNTFCRDA4Mzc4
MDA1REY0QTcgLyogQXV0b0xheW91dEludGVncmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b0xheW91dEludGVncmF0aW9uLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyREQ3RDNBOTE3ODIwNUQwMDAyNkUxRTMgLyogUmVzaXplUmV2
ZXJzZVBhZ2luYXRlZFdlYlZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVzaXplUmV2ZXJzZVBhZ2luYXRlZFdlYlZpZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyREQ3RDNBRTE3ODIyN0FDMDAyNkUxRTMgLyogbG90cy1vZi10ZXh0LXZl
cnRpY2FsLWxyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibG90cy1vZi10ZXh0LXZlcnRpY2FsLWxyLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE2Niw2ICsxMTY4LDcgQEAKIAkJCQlB
MTRGQzU4NjFCODk5MUI2MDBEMTA3RUIgLyogQ29udGVudEZpbHRlcmluZy5tbSAqLywKIAkJCQlB
MTRGQzU4OTFCODk5MjcxMDBEMTA3RUIgLyogQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbSAqLywK
IAkJCQkxQUFEMTlGNTFDN0NFMjAzMDA4MzFFNDcgLyogQ29kaW5nLm1tICovLAorCQkJCTJEQzRD
Rjc2MUQyRDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0aW9uLm1tICovLAogCQkJCUExQTRGRTVE
MThERDNEQjcwMEI1RUE4QSAvKiBEb3dubG9hZC5tbSAqLywKIAkJCQkyRDgxMDRDQjFCRUMxM0U3
MDAyMERBNDYgLyogRmluZEluUGFnZS5tbSAqLywKIAkJCQkyRDFGRTBBRjFBRDQ2NUMxMDA2Q0Q5
RTYgLyogRml4ZWRMYXlvdXRTaXplLm1tICovLApAQCAtMjEyOCw2ICsyMTMxLDcgQEAKIAkJCQk3
NjQzMjJENzFCNjFDQ0MzMDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA1MUE0MTFBRTYwMDQ0N0M0QyAvKiBOZXdGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdGMjUxQTQxMUFGNjAwNDQ3QzRDIC8qIE9wZW5BbmRDbG9zZVdpbmRvdy5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTJEQzRDRjc3MUQyRDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0aW9uLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDcxQTQxMUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkQmFz
aWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQzExRDBBNjUyRjAwRkVCQ0YzIC8qIFBy
b3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDgxQTQx
MUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvRGF0YURldGVjdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzEyNmJjYTlh
MWU1NmRlOGU4OWNlNzhhMGY1ZjMwNTUxNzAwMmE2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtMCww
ICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2ltcG9ydCAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgPFdlYktpdC9X
ZWJLaXQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVE
CisKK3N0YXRpYyBib29sIGZpbmlzaGVkTG9hZGluZzsKK3N0YXRpYyBib29sIHJhblNjcmlwdDsK
KworQGludGVyZmFjZSBEYXRhRGV0ZWN0aW9uTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3Qg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gRGF0YURldGVj
dGlvbk5hdmlnYXRpb25EZWxlZ2F0ZQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgorewor
ICAgIGZpbmlzaGVkTG9hZGluZyA9IHRydWU7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBEYXRh
RGV0ZWN0aW9uVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGU+CisKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZXRhaW4pIE5TRGF0ZSAqcmVmZXJlbmNlRGF0ZTsKKworQGVuZAorCitA
aW1wbGVtZW50YXRpb24gRGF0YURldGVjdGlvblVJRGVsZWdhdGUKKworLSAoTlNEaWN0aW9uYXJ5
ICopX2RhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwor
eworICAgIGlmICghX3JlZmVyZW5jZURhdGUpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBy
ZXR1cm4gQHsKKyAgICAgICAgQCJSZWZlcmVuY2VEYXRlIjogX3JlZmVyZW5jZURhdGUKKyAgICB9
OworfQorCitAZW5kCisKK3ZvaWQgZXhwZWN0TGlua0NvdW50KFdLV2ViVmlldyAqd2ViVmlldywg
TlNTdHJpbmcgKkhUTUxTdHJpbmcsIHVuc2lnbmVkIGxpbmtDb3VudCkKK3sKKyAgICBbd2ViVmll
dyBsb2FkSFRNTFN0cmluZzpIVE1MU3RyaW5nIGJhc2VVUkw6bmlsXTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWRMb2FkaW5nKTsKKyAgICBmaW5pc2hlZExvYWRpbmcg
PSBmYWxzZTsKKworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCdhJykubGVuZ3RoIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHZh
bHVlLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfRVEobGlua0NvdW50LCBbdmFs
dWUgdW5zaWduZWRJbnRWYWx1ZV0pOworICAgICAgICByYW5TY3JpcHQgPSB0cnVlOworICAgIH1d
OworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyYW5TY3JpcHQpOworICAgIHJhblNj
cmlwdCA9IGZhbHNlOworfQorCitURVNUKFdlYktpdDIsIERhdGFEZXRlY3Rpb25SZWZlcmVuY2VE
YXRlKQoreworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBbY29uZmlndXJhdGlvbiBzZXREYXRhRGV0ZWN0b3JUeXBlczpXS0RhdGFEZXRlY3RvclR5cGVD
YWxlbmRhckV2ZW50XTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgUmV0YWlu
UHRyPERhdGFEZXRlY3Rpb25OYXZpZ2F0aW9uRGVsZWdhdGU+IG5hdmlnYXRpb25EZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tEYXRhRGV0ZWN0aW9uTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7
CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKV07CisKKyAgICBSZXRhaW5QdHI8RGF0YURldGVjdGlvblVJRGVsZWdhdGU+IFVJRGVsZWdh
dGUgPSBhZG9wdE5TKFtbRGF0YURldGVjdGlvblVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAg
ICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOlVJRGVsZWdhdGUuZ2V0KCldOworCisgICAgZXhwZWN0
TGlua0NvdW50KHdlYlZpZXcuZ2V0KCksIEAidG9tb3Jyb3cgYXQgNlBNIiwgMSk7CisgICAgZXhw
ZWN0TGlua0NvdW50KHdlYlZpZXcuZ2V0KCksIEAieWVzdGVyZGF5IGF0IDZQTSIsIDApOworCisg
ICAgTlNUaW1lSW50ZXJ2YWwgd2VlayA9IDYwICogNjAgKiAyNCAqIDc7CisKKyAgICBbVUlEZWxl
Z2F0ZSBzZXRSZWZlcmVuY2VEYXRlOltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5v
dzotd2Vla11dOworICAgIGV4cGVjdExpbmtDb3VudCh3ZWJWaWV3LmdldCgpLCBAInRvbW9ycm93
IGF0IDZQTSIsIDApOworICAgIGV4cGVjdExpbmtDb3VudCh3ZWJWaWV3LmdldCgpLCBAInllc3Rl
cmRheSBhdCA2UE0iLCAwKTsKKworICAgIFtVSURlbGVnYXRlIHNldFJlZmVyZW5jZURhdGU6W05T
RGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93OndlZWtdXTsKKyAgICBleHBlY3RMaW5r
Q291bnQod2ViVmlldy5nZXQoKSwgQCJ0b21vcnJvdyBhdCA2UE0iLCAxKTsKKyAgICBleHBlY3RM
aW5rQ291bnQod2ViVmlldy5nZXQoKSwgQCJ5ZXN0ZXJkYXkgYXQgNlBNIiwgMSk7Cit9CisKKyNl
bmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282973</attachid>
            <date>2016-07-06 17:59:08 -0700</date>
            <delta_ts>2016-07-06 18:08:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159498-20160706175836.patch</filename>
            <type>text/plain</type>
            <size>80711</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYyMDU4ZWExYTkwMTky
NzU4MzFhNTcyMjJjZTRhNDY5NDRkZTJmNS4uMTUyYTljZDc0MDkzZDc0MDljYjM3NjVjZWNkODBh
ZWU1NTMxZDExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA3LTA2ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEVtYWlsIGZyb20g
SnVuZSAxc3QgY29udGFpbmluZyB0ZXh0ICdUb2RheSBAIDc6MTBQTScgaXMgbGlua2lmaWVkLCBi
dXQgc2hvdWxkbid0IGJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTk0OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NzE5OTAzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0OiBXZWJL
aXQyLkRhdGFEZXRlY3Rpb25SZWZlcmVuY2VEYXRlCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5n
ZSk6CisgICAgICAgIEV4dHJhY3QgdGhlIHJlZmVyZW5jZSBkYXRlIGZyb20gdGhlIERhdGFEZXRl
Y3RvcnMgY29udGV4dCBkaWN0aW9uYXJ5IGlmIGl0IGV4aXN0cywKKyAgICAgICAgYW5kIHBhc3Mg
aXQgYWxvbmcgdG8gRGF0YURldGVjdG9ycy4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVG
b3JUaGlzRnJhbWUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICBQbHVtYiB0aGUgRGF0YURldGVjdG9ycyBjb250ZXh0IGRpY3Rpb25hcnkgdGhyb3VnaCBm
cm9tIFdlYlBhZ2UuCisKIDIwMTYtMDctMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIERhdGFiYXNlIHByb2Nlc3MgY3Jhc2hlcyBkZWxldGluZyBhIGNvcnJ1
cHQgU1FMaXRlIGRhdGFiYXNlIGZpbGUgKG51bGwgZGVyZWYpLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDBkZmY1
MTgzYzMwNGNhZDk4MzM3OWQ2OGY3NWVhNzEzZjllN2M4YzguLjkwZGNhNzYzZTVhOTg5NDBjMzJm
OTZiNjU1OTYxOWIxZmEyYzU0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAxNi0w
Ny0wNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBF
bWFpbCBmcm9tIEp1bmUgMXN0IGNvbnRhaW5pbmcgdGV4dCAnVG9kYXkgQCA3OjEwUE0nIGlzIGxp
bmtpZmllZCwgYnV0IHNob3VsZG4ndCBiZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NDk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjcxOTkw
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogU2hhcmVk
L0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpM
b2FkUGFyYW1ldGVyczo6cGxhdGZvcm1FbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFy
YW1ldGVyczo6cGxhdGZvcm1EZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Mb2FkUGFyYW1ldGVy
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICBBZGQgYSBzdHJ1Y3QgdGhhdCBr
bm93cyBob3cgdG8gZW5jb2RlIGFsbCBvZiB0aGUgZGlmZmVyZW50IHBhcmFtZXRlcnMKKyAgICAg
ICAgdG8gYWxsIG9mIHRoZSBMb2FkKiBtZXNzYWdlcywgaW5jbHVkaW5nIHRoZSBwbGF0Zm9ybS1z
cGVjaWZpYyBEYXRhRGV0ZWN0b3JzIHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBTaGFyZWQvbWFj
L0FyZ3VtZW50Q29kZXJzTWFjLmg6CisgICAgICAgICogU2hhcmVkL21hYy9Bcmd1bWVudENvZGVy
c01hYy5tbToKKyAgICAgICAgKElQQzo6dHlwZUZyb21PYmplY3QpOgorICAgICAgICAoSVBDOjpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGUpOgorICAgICAgICBBZGQgTlNVUkwgY29kZXJz
IHRoYXQgZGVmZXIgdG8gdGhlIENGVVJMIGNvZGVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRhdGFEZXRlY3Rpb25D
b250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURl
bGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpkYXRhRGV0ZWN0aW9uQ29udGV4dCk6CisgICAgICAgIEFkZCBBUElVSUNsaWVudCBtZXRo
b2RzIHRvIHJldHJpZXZlIHRoZSBEYXRhRGV0ZWN0b3JzIGNvbnRleHQgZGljdGlvbmFyeS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKToKKyAgICAg
ICAgQWRkIHRoZSBEYXRhRGV0ZWN0b3JzIGNvbnRleHQgZGljdGlvbmFyeSB0byB0aGUgZ2l2ZW4g
TG9hZFBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRhdGFEZXRlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGF0YURldGVjdGlv
bkNvbnRleHQpOgorICAgICAgICBTdG9yZSB0aGUgZGF0YURldGVjdGlvbkNvbnRleHQgb24gV2Vi
UGFnZSwgYW5kIG1ha2UgaXQgYWNjZXNzaWJsZSB0byBXZWJDb3JlCisgICAgICAgIHZpYSB0aGUg
RnJhbWVMb2FkZXJDbGllbnQgKGl0IGlzIHVzZWQgaW4gRnJhbWVMb2FkZXIgd2hlbiB0aGUgbG9h
ZCBjb21wbGV0ZXMpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmxvYWRGaWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEhUTUxT
dHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1M
U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUGxhaW5UZXh0U3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRTdHJpbmdJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkSFRNTFN0cmluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRQbGFpblRleHRTdHJpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkV2ViQXJjaGl2ZURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAg
ICBBZG9wdCBMb2FkUGFyYW1ldGVycywgdGFraW5nIHRoaXMgb3Bwb3J0dW5pdHkgdG8gcmVkdWNl
IHRoZSBudW1iZXIgb2YgdmVyeSBzaW1pbGFyIG1lc3NhZ2VzLgorICAgICAgICBXZSBjYW4gdGFr
ZSB0aGlzIGZ1cnRoZXIgKHdlIHNob3VsZCBiZSBhYmxlIHRvIGdldCBpdCBkb3duIHRvIGp1c3Qg
TG9hZFJlcXVlc3QKKyAgICAgICAgYW5kIExvYWREYXRhKSBpbiB0aGUgZnV0dXJlLiBXaGVuIGFu
eSBsb2FkIG9jY3VycywgZ3JhYiB0aGUgY2xpZW50J3MgRGF0YURldGVjdG9yc2UKKyAgICAgICAg
Y29udGV4dCBkaWN0aW9uYXJ5IGFuZCBzZW5kIGl0IGFsb25nIHdpdGggdGhlIGxvYWQgcmVxdWVz
dCwgc3RvcmluZyBpdCBpbiBXZWJQYWdlLgorCiAyMDE2LTA3LTA0ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ29vcmRpbmF0ZWQgR3JhcGhp
Y3NdIE1vZGVybml6ZSBhbmQgY2xlYW51cCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDUy
M2MyZjM2NjEwNDNjZGNhMDY3NWEyMjVkNmYyY2EzNmJmMjY3MC4uYjExODBjNmU4OWZiODUyNGNm
MzNhMzQ3MTJiODQ1ODU3NzAyMjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0NCw2ICsxMjQ0LDcgQEAKIAkJMkQ5N0Yw
NDgxOURENDE0MDAwMUVFOUMzIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBQUUzMkQxOURDQUY2MDAwRTAw
MkQyIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5oICovOyB9OwogCQkyRDlGMEUxMzE0RkYxQ0JG
MDBCQTBGRjcgLyogbGluZWFyU1JHQi5pY2MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUYwRTEyMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdC
LmljYyAqLzsgfTsKIAkJMkRCOUM0QUExQjMyMzFGNDAwNzBGMjdGIC8qIE5TRXZlbnRTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQjlDNEE5MUIz
MjMxRjQwMDcwRjI3RiAvKiBOU0V2ZW50U1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkRDNENGNzkxRDJERDk4OTAwRUNDQzk0IC8qIERhdGFE
ZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRDNENGNzgxRDJERDk4OTAwRUNDQzk0IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEQ0I4Mzc5
MTlGOTlCQkEwMEE3RkJFNCAvKiBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRENCODM3NzE5Rjk5QkJBMDBB
N0ZCRTQgLyogTlNTaGFyaW5nU2VydmljZVBpY2tlclNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEQ0I4MzdBMTlGOTlCQkEwMEE3RkJFNCAv
KiBOU1NoYXJpbmdTZXJ2aWNlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRENCODM3ODE5Rjk5QkJBMDBBN0ZCRTQgLyogTlNTaGFyaW5nU2Vydmlj
ZVNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJEREI5N0Y0MTlGOUFFQ0EwMDIwMjVEOCAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkREQjk3RjMxOUY5QUVDQTAwMjAy
NUQ4IC8qIE5TRXh0ZW5zaW9uU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTg4MTIsNiArODgxMyw3IEBACiAJCTJEQUFFMzJDMTlEQ0FGNjAw
MEUwMDJEMiAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRBQUUzMkQxOURDQUY2MDAwRTAwMkQyIC8qIE1vY2tQYWdlT3Zl
cmxheUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrUGFnZU92
ZXJsYXlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRCOUM0QTkxQjMy
MzFGNDAwNzBGMjdGIC8qIE5TRXZlbnRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTlNFdmVudFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREM0Q0Y3
ODFEMkREOTg5MDBFQ0NDOTQgLyogRGF0YURldGVjdG9yc1VJU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRlY3RvcnNVSVNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyRENCODM3NzE5Rjk5QkJBMDBBN0ZCRTQgLyogTlNTaGFyaW5nU2Vydmlj
ZVBpY2tlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQ0I4Mzc4
MTlGOTlCQkEwMEE3RkJFNCAvKiBOU1NoYXJpbmdTZXJ2aWNlU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5TU2hhcmluZ1NlcnZpY2VTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkREQjk3RjMxOUY5QUVDQTAwMjAyNUQ4IC8qIE5TRXh0ZW5zaW9uU1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TRXh0ZW5zaW9uU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDE3MCw2ICsyMDE3Miw3IEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNFMTI1MjQyMUExNkMwMUEwMDg2NDQ4
MCAvKiBDb3JlVUlTUEkuaCAqLywKKwkJCQkyREM0Q0Y3ODFEMkREOTg5MDBFQ0NDOTQgLyogRGF0
YURldGVjdG9yc1VJU1BJLmggKi8sCiAJCQkJQ0VDMzM3QUUxQTQ2MDg2RDAwOUI4NTIzIC8qIEdy
YXBoaWNzU2VydmljZXNTUEkuaCAqLywKIAkJCQk3QzRDOTZFMjFBRDQ0QUJGMDAzNjVBNTAgLyog
TGF1bmNoU2VydmljZXNTUEkuaCAqLywKIAkJCQlDRTEyNTI0MDFBMTZCMUI2MDA4NjQ0ODAgLyog
TWVkaWFQbGF5ZXJTUEkuaCAqLywKQEAgLTI2OTIwLDYgKzI2OTIzLDcgQEAKIAkJCQk3QzlEQkZF
RTFBOUM0OUIxMDAwRDZCMjUgLyogSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0NDYxNDM4MENENjg5QzUwMEZBREE3NSAvKiBKU0hUTUxBdWRpb0VsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3QjExMEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxC
YXNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRDNENGNzkxRDJERDk4OTAwRUNDQzk0
IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFBMjMwQTFD
REFCNDAwQjQyQjI1IC8qIEpTSFRNTEJvZHlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUUyQUEyNTBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MQlJFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODBFN0U5RjBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MQnV0dG9uRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5oCmluZGV4IDk0OWU1YmY3YjM5ODg4ODc3MTM2YmY3Y2QzM2U4NjI2ZWViMjNjNjAuLjc3
NTlkMTk5Y2E0ZWNmZjA1MjQxOWJkYjMwMzJmOGUzZDdkYmNmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAKIE9C
SkNfQ0xBU1MgRERBY3Rpb25Db250ZXh0OwogT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFT
UyBOU0RpY3Rpb25hcnk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsNyArNTgsNyBA
QCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBkZXRlY3RJdGVtQXJvdW5kSGl0VGVzdFJlc3VsdChj
b25zdCBIaXRUZXN0UmVzdWx0JiwgRmxvYXRSZWN0JiBkZXRlY3RlZERhdGFCb3VuZGluZ0JveCwg
UmVmUHRyPFJhbmdlPiYgZGV0ZWN0ZWREYXRhUmFuZ2UpOwogI2VuZGlmCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIE5TQXJyYXkgKmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4m
IGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBOU0FycmF5ICpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0
UmFuZ2UsIERhdGFEZXRlY3RvclR5cGVzLCBOU0RpY3Rpb25hcnkgKmNvbnRleHQpOwogI2lmIFBM
QVRGT1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0RhdGFEZXRlY3Rv
ckxpbmsoRWxlbWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZGF0YURl
dGVjdG9ySWRlbnRpZmllcihFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggMTM4MzNlZTE5OTY4MmMzYjUwYzExMGQ3NjNmNDVm
MDg0NzU5NTM1Yi4uZDA4MDViZjkzYTM2NDU3NzBhNGE1NWYxYjNjM2Q4OTFlMDBiOGUzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtMjks
NiArMjksNyBAQAogI2ltcG9ydCAiQXR0ci5oIgogI2ltcG9ydCAiQ1NTU3R5bGVEZWNsYXJhdGlv
bi5oIgogI2ltcG9ydCAiRGF0YURldGVjdG9yc1NQSS5oIgorI2ltcG9ydCAiRGF0YURldGVjdG9y
c1VJU1BJLmgiCiAjaW1wb3J0ICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgogI2ltcG9ydCAi
RWxlbWVudFRyYXZlcnNhbC5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCkBAIC00MjksNyArNDMw
LDcgQEAgc3RhdGljIGlubGluZSBDRkNvbXBhcmlzb25SZXN1bHQgcXVlcnlPZmZzZXRDb21wYXJl
KEREUXVlcnlPZmZzZXQgbzEsIEREUXVlcnlPZmYKICAgICByZXR1cm4ga0NGQ29tcGFyZUVxdWFs
VG87CiB9CiAKLU5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJl
ZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMgdHlwZXMpCitOU0Fy
cmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBj
b250ZXh0UmFuZ2UsIERhdGFEZXRlY3RvclR5cGVzIHR5cGVzLCBOU0RpY3Rpb25hcnkgKmNvbnRl
eHQpCiB7CiAgICAgUmV0YWluUHRyPEREU2Nhbm5lclJlZj4gc2Nhbm5lciA9IGFkb3B0Q0Yoc29m
dExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVyQ3JlYXRlKEREU2Nhbm5lclR5cGVTdGFu
ZGFyZCwgMCwgbnVsbHB0cikpOwogICAgIFJldGFpblB0cjxERFNjYW5RdWVyeVJlZj4gc2NhblF1
ZXJ5ID0gYWRvcHRDRihzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNjYW5RdWVyeUNyZWF0
ZShOVUxMKSk7CkBAIC00NDMsMTUgKzQ0NCwxNSBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpk
ZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQog
ICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgYWRkIGEgdGltZW91dCB0byB0aGlzIGNhbGwgdG8gbWFr
ZSBzdXJlIGl0IGRvZXNuJ3QgdGFrZSB0b28gbXVjaCB0aW1lLgogICAgIGlmICghc29mdExpbmtf
RGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVyU2NhblF1ZXJ5KHNjYW5uZXIuZ2V0KCksIHNjYW5R
dWVyeS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8
Q0ZBcnJheVJlZj4gc2Nhbm5lclJlc3VsdHMgPSBhZG9wdENGKHNvZnRMaW5rX0RhdGFEZXRlY3Rv
cnNDb3JlX0REU2Nhbm5lckNvcHlSZXN1bHRzV2l0aE9wdGlvbnMoc2Nhbm5lci5nZXQoKSwgZ2V0
X0RhdGFEZXRlY3RvcnNDb3JlX0REU2Nhbm5lckNvcHlSZXN1bHRzT3B0aW9uc0ZvclBhc3NpdmVV
c2UoKSB8IEREU2Nhbm5lckNvcHlSZXN1bHRzT3B0aW9uc0NvYWxlc2NlU2lnbmF0dXJlcykpOwog
ICAgIGlmICghc2Nhbm5lclJlc3VsdHMpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisKICAg
ICBDRkluZGV4IHJlc3VsdENvdW50ID0gQ0ZBcnJheUdldENvdW50KHNjYW5uZXJSZXN1bHRzLmdl
dCgpKTsKICAgICBpZiAoIXJlc3VsdENvdW50KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAor
CiAgICAgVmVjdG9yPFJldGFpblB0cjxERFJlc3VsdFJlZj4+IGFsbFJlc3VsdHM7CiAgICAgVmVj
dG9yPFJldGFpblB0cjxOU0luZGV4UGF0aD4+IGluZGV4UGF0aHM7CiAgICAgTlNJbnRlZ2VyIGN1
cnJlbnRUb3BMZXZlbEluZGV4ID0gMDsKQEAgLTUxOSw3ICs1MjAsNyBAQCBOU0FycmF5ICpEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFu
Z2UsIERhdGFEZQogICAgIH0KICAgICAKICAgICBhdXRvIHR6ID0gYWRvcHRDRihDRlRpbWVab25l
Q29weURlZmF1bHQoKSk7Ci0gICAgTlNEYXRlICpyZWZlcmVuY2VEYXRlID0gW05TRGF0ZSBkYXRl
XTsKKyAgICBOU0RhdGUgKnJlZmVyZW5jZURhdGUgPSBbY29udGV4dCBvYmplY3RGb3JLZXk6Z2V0
a0RhdGFEZXRlY3RvcnNSZWZlcmVuY2VEYXRlS2V5KCldID86IFtOU0RhdGUgZGF0ZV07CiAgICAg
VGV4dCogbGFzdFRleHROb2RlVG9VcGRhdGUgPSBudWxscHRyOwogICAgIFN0cmluZyBsYXN0Tm9k
ZUNvbnRlbnQ7CiAgICAgc2l6ZV90IGNvbnRlbnRPZmZzZXQgPSAwOwpAQCAtNjUyLDcgKzY1Myw3
IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxS
YW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURlCiB9CiAKICNlbHNlCi1OU0FycmF5ICpEYXRhRGV0
ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiwgRGF0YURldGVjdG9y
VHlwZXMpCitOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQ
dHI8UmFuZ2U+JiwgRGF0YURldGVjdG9yVHlwZXMsIE5TRGljdGlvbmFyeSAqKQogewogICAgIHJl
dHVybiBuaWw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA3MzBj
MGI4MDE5MjA5MTY3NzM4NWUwMmFjNWNlOWEyNGM2ODM4MDFmLi5iMzIyNzQyZDUyMDEwZDgxODNi
ZTdjMmZhOTJkMTUzOThjMmQ1Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTIzMTAsNyArMjMxMCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBs
ZXRlRm9yVGhpc0ZyYW1lKCkKICAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygp
LmRhdGFEZXRlY3RvclR5cGVzKCkgIT0gRGF0YURldGVjdG9yVHlwZU5vbmUgJiYgZG9jdW1lbnQp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50RWxlbWVudCA9IGRvY3Vt
ZW50LT5kb2N1bWVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiBkb2N1bWVudFJhbmdlID0gbWFrZVJhbmdlKGZpcnN0UG9zaXRpb25Jbk5vZGUoZG9j
dW1lbnRFbGVtZW50KSwgbGFzdFBvc2l0aW9uSW5Ob2RlKGRvY3VtZW50RWxlbWVudCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShkb2N1bWVudFJhbmdlLCBtX2ZyYW1lLnNl
dHRpbmdzKCkuZGF0YURldGVjdG9yVHlwZXMoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9mcmFtZS5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250
ZW50SW5SYW5nZShkb2N1bWVudFJhbmdlLCBtX2ZyYW1lLnNldHRpbmdzKCkuZGF0YURldGVjdG9y
VHlwZXMoKSwgbV9jbGllbnQuZGF0YURldGVjdGlvbkNvbnRleHQoKSkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2NsaWVudC5kaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24obV9mcmFt
ZS5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpKTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5OTJlNWM4NTIyNWM0ODJh
NzNlYzIxYzZlM2NhNTFiZjkzNDI5N2QxLi5kODZjNjQ4NzA4ODBmY2ExZDA1ZjM3MTliYmFjMWQ5
OWJkZWQzNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtNTQsNiArNTQsNyBAQCB0eXBlZGVmIHZvaWQqIFJlbW90ZUFYT2JqZWN0UmVmOwogI2lmIFBM
QVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU0FycmF5OwogT0JKQ19DTEFTUyBOU0NhY2hlZFVS
TFJlc3BvbnNlOworT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CiBPQkpDX0NMQVNTIE5TVmlldzsK
ICNlbmRpZgogCkBAIC0yOTIsNiArMjkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBBbGxvdyBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0byByZXRyaWV2ZSBhIEZyYW1lIHBh
cmVudCBpZiB0aGVyZSdzIG5vIFBsYXRmb3JtV2lkZ2V0LgogICAgICAgICB2aXJ0dWFsIFJlbW90
ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBjb25z
dCA9IDA7CisgICAgICAgIHZpcnR1YWwgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9uQ29udGV4
dCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNF
KENGTkVUV09SSykKICAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2Fj
aGVSZXNwb25zZSAtIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcy
NTc+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9EYXRhRGV0
ZWN0b3JzVUlTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvRGF0YURldGVj
dG9yc1VJU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYwMzg4OTAxNGMzN2JiMjYyOWM1Yzg5YmFiMDExYTU5
NzFiYjgyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9p
b3MvRGF0YURldGVjdG9yc1VJU1BJLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
ZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL1NvZnRMaW5raW5nLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1w
b3J0IDxEYXRhRGV0ZWN0b3JzVUkvRERBY3Rpb24uaD4KKyNpbXBvcnQgPERhdGFEZXRlY3RvcnNV
SS9ERERldGVjdGlvbkNvbnRyb2xsZXIuaD4KKworI2Vsc2UKKworQGludGVyZmFjZSBEREFjdGlv
biA6IE5TT2JqZWN0CitAZW5kCisKK0BpbnRlcmZhY2UgRERBY3Rpb24gKCkKKy0gKEJPT0wpaGFz
VXNlckludGVyZmFjZTsKKy0gKE5TU3RyaW5nICopbG9jYWxpemVkTmFtZTsKK0Bwcm9wZXJ0eSAo
cmVhZG9ubHkpIE5TU3RyaW5nICphY3Rpb25VVEk7CitAZW5kCisKK0Bwcm90b2NvbCBERERldGVj
dGlvbkNvbnRyb2xsZXJJbnRlcmFjdGlvbkRlbGVnYXRlIDxOU09iamVjdD4KK0BlbmQKKworQGlu
dGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgOiBOU09iamVjdCA8VUlBY3Rpb25TaGVldERl
bGVnYXRlPgorQGVuZAorCitAaW50ZXJmYWNlIERERGV0ZWN0aW9uQ29udHJvbGxlciAoKQorKyAo
REREZXRlY3Rpb25Db250cm9sbGVyICopc2hhcmVkQ29udHJvbGxlcjsKKysgKE5TQXJyYXkgKil0
YXBBbmRIb2xkU2NoZW1lczsKKy0gKHZvaWQpcGVyZm9ybUFjdGlvbjooRERBY3Rpb24gKilhY3Rp
b24gZnJvbUFsZXJ0Q29udHJvbGxlcjooVUlBbGVydENvbnRyb2xsZXIgKilhbGVydENvbnRyb2xs
ZXIgaW50ZXJhY3Rpb25EZWxlZ2F0ZTooaWQgPERERGV0ZWN0aW9uQ29udHJvbGxlckludGVyYWN0
aW9uRGVsZWdhdGU+KWludGVyYWN0aW9uRGVsZWdhdGU7CitAZW5kCisKKyNlbmRpZgorCitAaW50
ZXJmYWNlIERERGV0ZWN0aW9uQ29udHJvbGxlciAoRGV0YWlsc1RvQmVSZW1vdmVkKQorLy8gRklY
TUU6IFRoaXMgd2lsbCBiZSByZW1vdmVkIGFzIHNvb24gYXMgPHJkYXI6Ly9wcm9ibGVtLzE2MzQ2
OTEzPiBpcyBmaXhlZC4KKy0gKE5TQXJyYXkgKilhY3Rpb25zRm9yQW5jaG9yOihpZClhbmNob3Ig
dXJsOihOU1VSTCAqKXRhcmdldFVSTCBmb3JGcmFtZTooaWQpZnJhbWU7CitAZW5kCisKK1NPRlRf
TElOS19QUklWQVRFX0ZSQU1FV09SSyhEYXRhRGV0ZWN0b3JzVUkpCitTT0ZUX0xJTktfQ0xBU1Mo
RGF0YURldGVjdG9yc1VJLCBERERldGVjdGlvbkNvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ09OU1RB
TlQoRGF0YURldGVjdG9yc1VJLCBrRGF0YURldGVjdG9yc0xlYWRpbmdUZXh0LCBjb25zdCBOU1N0
cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKERhdGFEZXRlY3RvcnNVSSwga0RhdGFEZXRlY3Rv
cnNUcmFpbGluZ1RleHQsIGNvbnN0IE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoRGF0
YURldGVjdG9yc1VJLCBrRGF0YURldGVjdG9yc1JlZmVyZW5jZURhdGUsIGNvbnN0IE5TU3RyaW5n
ICopCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lv
cy9EYXRhRGV0ZWN0b3JzVUlTUEkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3NwaS9pb3Mv
RGF0YURldGVjdG9yc1VJU1BJLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyYWE1
OTVkYTkwMDdmYTg5OTJlYjdhNDM1ZGVmM2U3Yzc2YzZlZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lv
cy9EYXRhRGV0ZWN0b3JzVUlTUEkuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgotI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0
TGlua2luZy5oPgotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotI2ltcG9ydCA8RGF0
YURldGVjdG9yc1VJL0REQWN0aW9uLmg+Ci0jaW1wb3J0IDxEYXRhRGV0ZWN0b3JzVUkvREREZXRl
Y3Rpb25Db250cm9sbGVyLmg+Ci0KLSNlbHNlCi0KLUBpbnRlcmZhY2UgRERBY3Rpb24gOiBOU09i
amVjdAotQGVuZAotCi1AaW50ZXJmYWNlIEREQWN0aW9uICgpCi0tIChCT09MKWhhc1VzZXJJbnRl
cmZhY2U7Ci0tIChOU1N0cmluZyAqKWxvY2FsaXplZE5hbWU7Ci1AcHJvcGVydHkgKHJlYWRvbmx5
KSBOU1N0cmluZyAqYWN0aW9uVVRJOwotQGVuZAotCi1AcHJvdG9jb2wgREREZXRlY3Rpb25Db250
cm9sbGVySW50ZXJhY3Rpb25EZWxlZ2F0ZSA8TlNPYmplY3Q+Ci1AZW5kCi0KLUBpbnRlcmZhY2Ug
REREZXRlY3Rpb25Db250cm9sbGVyIDogTlNPYmplY3QgPFVJQWN0aW9uU2hlZXREZWxlZ2F0ZT4K
LUBlbmQKLQotQGludGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgKCkKLSsgKERERGV0ZWN0
aW9uQ29udHJvbGxlciAqKXNoYXJlZENvbnRyb2xsZXI7Ci0rIChOU0FycmF5ICopdGFwQW5kSG9s
ZFNjaGVtZXM7Ci0tICh2b2lkKXBlcmZvcm1BY3Rpb246KEREQWN0aW9uICopYWN0aW9uIGZyb21B
bGVydENvbnRyb2xsZXI6KFVJQWxlcnRDb250cm9sbGVyICopYWxlcnRDb250cm9sbGVyIGludGVy
YWN0aW9uRGVsZWdhdGU6KGlkIDxERERldGVjdGlvbkNvbnRyb2xsZXJJbnRlcmFjdGlvbkRlbGVn
YXRlPilpbnRlcmFjdGlvbkRlbGVnYXRlOwotQGVuZAotCi0jZW5kaWYKLQotQGludGVyZmFjZSBE
RERldGVjdGlvbkNvbnRyb2xsZXIgKERldGFpbHNUb0JlUmVtb3ZlZCkKLS8vIEZJWE1FOiBUaGlz
IHdpbGwgYmUgcmVtb3ZlZCBhcyBzb29uIGFzIDxyZGFyOi8vcHJvYmxlbS8xNjM0NjkxMz4gaXMg
Zml4ZWQuCi0tIChOU0FycmF5ICopYWN0aW9uc0ZvckFuY2hvcjooaWQpYW5jaG9yIHVybDooTlNV
UkwgKil0YXJnZXRVUkwgZm9yRnJhbWU6KGlkKWZyYW1lOwotQGVuZAotCi1TT0ZUX0xJTktfUFJJ
VkFURV9GUkFNRVdPUksoRGF0YURldGVjdG9yc1VJKQotU09GVF9MSU5LX0NMQVNTKERhdGFEZXRl
Y3RvcnNVSSwgREREZXRlY3Rpb25Db250cm9sbGVyKQotU09GVF9MSU5LX0NPTlNUQU5UKERhdGFE
ZXRlY3RvcnNVSSwga0RhdGFEZXRlY3RvcnNMZWFkaW5nVGV4dCwgY29uc3QgTlNTdHJpbmcgKikK
LVNPRlRfTElOS19DT05TVEFOVChEYXRhRGV0ZWN0b3JzVUksIGtEYXRhRGV0ZWN0b3JzVHJhaWxp
bmdUZXh0LCBjb25zdCBOU1N0cmluZyAqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29jb2EvTG9hZFBhcmFtZXRlcnNDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWRlMDFkMDFlZTJhZWY0
NTQ0OTBiOGM1ZjkyNjY2MjlmZmM3Y2MwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW0KQEAgLTAsMCArMSw1MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb2FkUGFyYW1ldGVy
cy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyc01h
Yy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordm9pZCBMb2FkUGFyYW1ldGVyczo6cGxhdGZvcm1FbmNvZGUoSVBDOjpBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGF0
YURldGVjdGlvbkNvbnRleHQuZ2V0KCkpOworfQorCitib29sIExvYWRQYXJhbWV0ZXJzOjpwbGF0
Zm9ybURlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMm
IGRhdGEpCit7CisgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhLmRhdGFEZXRlY3Rp
b25Db250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TG9hZFBhcmFtZXRlcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMGYxMzQ1ZjhkNTZjZGM4NTlmMTllMjY1
YWVlODNmOWVhZDJkMzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCisKKyNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgTG9h
ZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
K3sKKyAgICBlbmNvZGVyIDw8IG5hdmlnYXRpb25JRDsKKyAgICBlbmNvZGVyIDw8IHJlcXVlc3Q7
CisgICAgZW5jb2RlciA8PCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwg
ZGF0YTsKKyAgICBlbmNvZGVyIDw8IHN0cmluZzsKKyAgICBlbmNvZGVyIDw8IE1JTUVUeXBlOwor
ICAgIGVuY29kZXIgPDwgZW5jb2RpbmdOYW1lOworICAgIGVuY29kZXIgPDwgYmFzZVVSTFN0cmlu
ZzsKKyAgICBlbmNvZGVyIDw8IHVucmVhY2hhYmxlVVJMU3RyaW5nOworICAgIGVuY29kZXIgPDwg
cHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmc7CisgICAgZW5jb2RlciA8PCBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OworICAgIGVuY29kZXIgPDwgdXNlckRhdGE7CisKKyAgICBwbGF0
Zm9ybUVuY29kZShlbmNvZGVyKTsKK30KKworYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQ
Qzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYgZGF0YSkKK3sKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubmF2aWdhdGlvbklEKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnJlcXVlc3QpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGF0YS5kYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhLnN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5NSU1FVHlwZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5lbmNvZGluZ05hbWUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuYmFzZVVSTFN0
cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGF0YS51bnJlYWNoYWJsZVVSTFN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnVzZXJEYXRhKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFwbGF0Zm9ybURlY29kZShkZWNvZGVyLCBkYXRhKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09D
T0EpCisKK3ZvaWQgTG9hZFBhcmFtZXRlcnM6OnBsYXRmb3JtRW5jb2RlKElQQzo6QXJndW1lbnRF
bmNvZGVyJikgY29uc3QKK3sKK30KKworYm9vbCBMb2FkUGFyYW1ldGVyczo6cGxhdGZvcm1EZWNv
ZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBMb2FkUGFyYW1ldGVycyYpCit7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCisKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTG9hZFBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY5OWQxNWNlMDdhZThmYjc5NzM0NzI2MjYxYmQ5OTA4NzkzZDkxMDIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDc0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMb2FkUGFyYW1ldGVyc19oCisjZGVmaW5lIExvYWRQ
YXJhbWV0ZXJzX2gKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiVXNlckRhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgorCitPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKKworbmFtZXNw
YWNlIElQQyB7CitjbGFzcyBBcmd1bWVudERlY29kZXI7CitjbGFzcyBBcmd1bWVudEVuY29kZXI7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgTG9hZFBhcmFtZXRlcnMgeworICAg
IHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgTG9hZFBhcmFtZXRlcnMmKTsKKworICAg
IHZvaWQgcGxhdGZvcm1FbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKKyAgICBz
dGF0aWMgYm9vbCBwbGF0Zm9ybURlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYsIExvYWRQYXJh
bWV0ZXJzJik7CisKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQ7CisKKyAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZTsKKworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOworICAg
IFN0cmluZyBzdHJpbmc7CisgICAgU3RyaW5nIE1JTUVUeXBlOworICAgIFN0cmluZyBlbmNvZGlu
Z05hbWU7CisKKyAgICBTdHJpbmcgYmFzZVVSTFN0cmluZzsKKyAgICBTdHJpbmcgdW5yZWFjaGFi
bGVVUkxTdHJpbmc7CisgICAgU3RyaW5nIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nOwor
CisgICAgdWludDY0X3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBVc2VyRGF0
YSB1c2VyRGF0YTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxOU0RpY3Rp
b25hcnk+IGRhdGFEZXRlY3Rpb25Db250ZXh0OworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIExvYWRQYXJhbWV0ZXJzX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMuaAppbmRleCA0ZTJkYTc2MTkzMTUzZWQ4ZDgw
OWQxODdlMDUyMzE1YzliNzFmN2I0Li5jZWE1ZjAxZDg4YTQ3M2FkNjA2ZDQ0NjEyODQ3MTkxY2Nk
NjJkZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29k
ZXJzTWFjLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01h
Yy5oCkBAIC0zNyw2ICszNyw3IEBAIE9CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OwogT0JKQ19DTEFT
UyBOU0ZvbnQ7CiBPQkpDX0NMQVNTIE5TTnVtYmVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKK09C
SkNfQ0xBU1MgTlNVUkw7CiAKIG5hbWVzcGFjZSBJUEMgewogCkBAIC04Nyw2ICs4OCwxMCBAQCBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBSZXRhaW5QdHI8TlNEYXRlPiYpOwogdm9pZCBl
bmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgTlNEYXRhICopOwogYm9vbCBkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyJiwgUmV0YWluUHRyPE5TRGF0YT4mKTsKIAorLy8gTlNVUkwKK3ZvaWQgZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciYsIE5TVVJMICopOworYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwg
UmV0YWluUHRyPE5TVVJMPiYpOworCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogI2VuZGlmIC8vIEFy
Z3VtZW50Q29kZXJzTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
QXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50
Q29kZXJzTWFjLm1tCmluZGV4IDY0MGU3ZWRkMzQ0MTM5ZGIyMTlhZDFjMzEwNzMwY2ZhMzNmZTk5
ZTEuLjI1NThiNDE4MzNlNjU0MGE0ZTNmMWJjMTRmNjBiZGI4YzI5MGMyZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5tbQpAQCAtNTUsNiArNTUs
NyBAQCBlbnVtIE5TVHlwZSB7CiAgICAgTlNTdHJpbmdUeXBlLAogICAgIE5TRGF0ZVR5cGUsCiAg
ICAgTlNEYXRhVHlwZSwKKyAgICBOU1VSTFR5cGUsCiAgICAgVW5rbm93biwKIH07CiAKQEAgLTg0
LDYgKzg1LDggQEAgc3RhdGljIE5TVHlwZSB0eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCiAgICAg
ICAgIHJldHVybiBOU0RhdGVUeXBlOwogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05T
RGF0YSBjbGFzc11dKQogICAgICAgICByZXR1cm4gTlNEYXRhVHlwZTsKKyAgICBpZiAoW29iamVj
dCBpc0tpbmRPZkNsYXNzOltOU1VSTCBjbGFzc11dKQorICAgICAgICByZXR1cm4gTlNVUkxUeXBl
OwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFVua25vd247CkBAIC0x
MjYsNiArMTI5LDkgQEAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBpZCBv
YmplY3QpCiAgICAgY2FzZSBOU0RhdGFUeXBlOgogICAgICAgICBlbmNvZGUoZW5jb2Rlciwgc3Rh
dGljX2Nhc3Q8TlNEYXRhICo+KG9iamVjdCkpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBO
U1VSTFR5cGU6CisgICAgICAgIGVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxOU1VSTCAqPihv
YmplY3QpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVW5rbm93bjoKICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtMjA3LDYgKzIxMywxMyBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29k
ZXImIGRlY29kZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsdCkKICAgICAgICAgcmVzdWx0ID0gZGF0
YTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIGNhc2UgTlNVUkxUeXBlOiB7Cisg
ICAgICAgIFJldGFpblB0cjxOU1VSTD4gVVJMOworICAgICAgICBpZiAoIWRlY29kZShkZWNvZGVy
LCBVUkwpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXN1bHQgPSBVUkw7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICBjYXNlIFVua25vd246CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MDUsNCAr
NTE4LDE5IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRy
PE5TRGF0YT4mIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBlbmNvZGUoQXJn
dW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBOU1VSTCAqVVJMKQoreworICAgIGVuY29kZShlbmNvZGVy
LCAoQ0ZVUkxSZWYpVVJMKTsKK30KKworYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNv
ZGVyLCBSZXRhaW5QdHI8TlNVUkw+JiByZXN1bHQpCit7CisgICAgUmV0YWluUHRyPENGVVJMUmVm
PiBVUkw7CisgICAgaWYgKCFkZWNvZGUoZGVjb2RlciwgVVJMKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmVzdWx0ID0gYWRvcHROUygoTlNVUkwgKilVUkwubGVha1JlZigpKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggNmE4ZmFjZGY2OThmMGU0NjRiMGZhYzg4
NzBlNzgyMDRkNmYzODY3ZC4uMTFiYjQyMTFkMDMyOWE2NDRjOTNkOTFjZmE3OGMyZmJhMmZhNDhj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMTY0
LDYgKzE2NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxlVGFwQXND
bGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIHsgfQogICAgIHZpcnR1YWwgVUlWaWV3Q29u
dHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQog
I2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBOU0RpY3Rpb25hcnkgKmRh
dGFEZXRlY3Rpb25Db250ZXh0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IEFQSTo6T2JqZWN0KikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5oCmluZGV4IDA4M2MxZjkzNjMzYjgzM2FlZjlkYzM1ZjNmMmM3YWE3ZDBiYmQ5ZTQu
LmQyYWQ2OThiYmVmNmE1MTA4Y2NmMWUxMjAzNmM3Yzc4MjhiMzgxNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtOTcsNyArOTcsMTAgQEAgcHJp
dmF0ZToKICAgICAgICAgUmV0YWluUHRyPE5TQXJyYXk+IGFjdGlvbnNGb3JFbGVtZW50KF9XS0Fj
dGl2YXRlZEVsZW1lbnRJbmZvICosIFJldGFpblB0cjxOU0FycmF5PiBkZWZhdWx0QWN0aW9ucykg
b3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkTm90SGFuZGxlVGFwQXNDbGljayhjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOwogICAgICAgICBVSVZpZXdDb250cm9sbGVyICpwcmVz
ZW50aW5nVmlld0NvbnRyb2xsZXIoKSBvdmVycmlkZTsKLSNlbmRpZgorI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKKworICAgICAgICBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkg
b3ZlcnJpZGU7CisKICAgICAgICAgdm9pZCBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2Vk
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAogICAgICAgICBVSURlbGVnYXRl
JiBtX3VpRGVsZWdhdGU7CkBAIC0xMzAsNiArMTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9v
bCB3ZWJWaWV3RGlkTm90SGFuZGxlVGFwQXNDbGlja0F0UG9pbnQgOiAxOwogICAgICAgICBib29s
IHByZXNlbnRpbmdWaWV3Q29udHJvbGxlckZvcldlYlZpZXcgOiAxOwogI2VuZGlmCisgICAgICAg
IGJvb2wgZGF0YURldGVjdGlvbkNvbnRleHRGb3JXZWJWaWV3IDogMTsKICAgICAgICAgYm9vbCB3
ZWJWaWV3SW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZCA6IDE7CiAKICNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUubW0KaW5kZXggMmJlZDQ0OTE2YWZhZmJmMDQ3ZGU5YmM0YTBmYjAxNGE4ZGNkZTI2MC4uNDQw
OTUzN2FmOTlhZTY1ZDcwMDVjODA1YmMyMGEzNzRhYmMxNzY1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEwMSw2ICsxMDEsNyBAQCB2b2lk
IFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogICAg
IG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWROb3RIYW5kbGVUYXBBc0NsaWNrQXRQb2ludCA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZE5vdEhh
bmRsZVRhcEFzQ2xpY2tBdFBvaW50OildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnByZXNlbnRp
bmdWaWV3Q29udHJvbGxlckZvcldlYlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihfcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyRm9yV2ViVmlldzopXTsKICNlbmRp
ZgorICAgIG1fZGVsZWdhdGVNZXRob2RzLmRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldyA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kYXRhRGV0ZWN0aW9uQ29u
dGV4dEZvcldlYlZpZXc6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0ltYWdlT3JN
ZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkOildOwogCiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC00NDEsNiArNDQyLDE4IEBAIFVJVmlld0NvbnRy
b2xsZXIgKlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKQog
CiAjZW5kaWYKIAorTlNEaWN0aW9uYXJ5ICpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGF0YURldGVj
dGlvbkNvbnRleHQoKQoreworICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2Rz
LmRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7Cisg
ICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
W3N0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oZGVsZWdhdGUpIF9kYXRhRGV0
ZWN0aW9uQ29udGV4dEZvcldlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlld107Cit9CisKIHZv
aWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3SW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdl
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbQppbmRleCAxMGZiYzdlZWYyM2RlNWVhYjAzOGRhNjRiOWI5ZDRlMjM1OTlkYjg4Li41
MDYzOWU1Mzc1MzVmYTJmY2VhZjA4YzcxZjRmZjQ0YWI4ZWRlZDE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0yNCw5
ICsyNCwxMiBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViUHJvY2Vz
c1Byb3h5LmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKIAorI2ltcG9ydCAiQVBJVUlDbGll
bnQuaCIKICNpbXBvcnQgIkRhdGFEZXRlY3Rpb25SZXN1bHQuaCIKKyNpbXBvcnQgIkxvYWRQYXJh
bWV0ZXJzLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKIAogI2ltcG9ydCA8V2ViQ29y
ZS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+
CkBAIC02OCw0ICs3MSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50RmlsdGVyRGlkQmxv
Y2tMb2FkRm9yRnJhbWUoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlCiB9CiAjZW5kaWYKIAor
dm9pZCBXZWJQYWdlUHJveHk6OmFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMoTG9hZFBhcmFtZXRl
cnMmIGxvYWRQYXJhbWV0ZXJzKQoreworICAgIGxvYWRQYXJhbWV0ZXJzLmRhdGFEZXRlY3Rpb25D
b250ZXh0ID0gbV91aUNsaWVudC0+ZGF0YURldGVjdGlvbkNvbnRleHQoKTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1YjA1ZDJmYWRjOTUy
NGQ2MTBmZGEzMWYzMmIxMGI5MTY4YjgxZGE2Li42MGE3NGZkY2M3NmYxMjRhMzgwODQ0YWI3ZDQ3
YjM3NmEwODExMTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNs
dWRlICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNo
ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oIgogI2luY2x1ZGUgIk5h
dGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKQEAgLTkwNiw2ICs5MDcsMTIgQEAgYm9vbCBXZWJQYWdl
UHJveHk6Om1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgVVJMJiB1
cmwsIFNhbmRib3gKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkK
K3ZvaWQgV2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKExvYWRQYXJhbWV0
ZXJzJikKK3sKK30KKyNlbmRpZgorCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCkBAIC05MjAsMTEgKzkyNywx
NyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAg
ICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwogCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5
YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShyZXF1ZXN0LnVybCgpLCBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKKyAg
ICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQo
KTsKKyAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICBsb2FkUGFyYW1l
dGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gKHVpbnQ2NF90KXNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k7CisgICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0
YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwor
ICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNp
b25IYW5kbGUocmVxdWVzdC51cmwoKSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSk7CiAgICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pCiAgICAgICAgIG1fcHJvY2Vzcy0+d2ls
bEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRSZXF1ZXN0KG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpLCByZXF1ZXN0LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCAodWludDY0X3Qpc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBhZGRQbGF0
Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKKworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJ
RCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAg
IHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwpAQCAtOTU5LDEwICs5NzIsMTYgQEAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVVUkxTdHJpbmcsIGNvbnMKIAogICAgIFN0cmluZyByZXNvdXJjZURpcmVjdG9yeVBhdGggPSBy
ZXNvdXJjZURpcmVjdG9yeVVSTC5maWxlU3lzdGVtUGF0aCgpOwogCi0gICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlKHJlc291cmNlRGlyZWN0b3J5UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6
UmVhZE9ubHksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIExvYWRQYXJhbWV0ZXJzIGxv
YWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRp
b24tPm5hdmlnYXRpb25JRCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSBmaWxlVVJM
OworICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSAodWlu
dDY0X3QpU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3c7CisgICAg
bG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2Jq
ZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOworICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZShyZXNvdXJjZURpcmVjdG9yeVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJlYWRP
bmx5LCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBhZGRQbGF0
Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKKwogICAgIG1fcHJvY2Vzcy0+YXNz
dW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChyZXNvdXJjZURpcmVjdG9yeVVSTCk7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKSwgZmlsZVVSTCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgKHVpbnQ2NF90KVNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBVc2VyRGF0YShwcm9j
ZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3Qo
bG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVz
c1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwpAQCAt
OTgyLDggKzEwMDEsMTcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojps
b2FkRGF0YShBUEk6OkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgTUkKICAgICBpZiAoIWlzVmFs
aWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAorICAgIExvYWRQYXJhbWV0
ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmRhdGEgPSBkYXRh
LT5kYXRhUmVmZXJlbmNlKCk7CisgICAgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUgPSBNSU1FVHlw
ZTsKKyAgICBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUgPSBlbmNvZGluZzsKKyAgICBsb2Fk
UGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nID0gYmFzZVVSTDsKKyAgICBsb2FkUGFyYW1ldGVycy51
c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhKS5nZXQoKSk7CisgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1l
dGVycyk7CisKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVS
TCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShuYXZp
Z2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgZGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBNSU1FVHlwZSwg
ZW5jb2RpbmcsIGJhc2VVUkwsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKHVzZXJEYXRhKS5nZXQoKSkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsK
ICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0
dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CkBAIC0xMDA0LDggKzEwMzIsMTYgQEAgUmVmUHRyPEFQ
STo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyhjb25zdCBTdHJpbmcm
IGh0bWxTdHJpbmcsIGMKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dl
YlByb2Nlc3MoKTsKIAorICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxv
YWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOwor
ICAgIGxvYWRQYXJhbWV0ZXJzLnN0cmluZyA9IGh0bWxTdHJpbmc7CisgICAgbG9hZFBhcmFtZXRl
cnMuZW5jb2RpbmdOYW1lID0gQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKTsKKyAgICBsb2FkUGFy
YW1ldGVycy5iYXNlVVJMU3RyaW5nID0gYmFzZVVSTDsKKyAgICBsb2FkUGFyYW1ldGVycy51c2Vy
RGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhKS5nZXQoKSk7CisgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVy
cyk7CisKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVSTCk7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkSFRNTFN0cmluZyhu
YXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaHRtbFN0cmluZywgYmFzZVVSTCwgVXNlckRhdGEo
cHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKSksIG1f
cGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTdHJp
bmcobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZl
bmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwpA
QCAtMTAzMyw5ICsxMDY5LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRN
TFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAgaWYgKG1f
bWFpbkZyYW1lKQogICAgICAgICBtX21haW5GcmFtZS0+c2V0VW5yZWFjaGFibGVVUkwodW5yZWFj
aGFibGVVUkwpOwogCisgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CisgICAgbG9h
ZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gMDsKKyAgICBsb2FkUGFyYW1ldGVycy5zdHJpbmcg
PSBodG1sU3RyaW5nOworICAgIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcgPSBiYXNlVVJM
OworICAgIGxvYWRQYXJhbWV0ZXJzLnVucmVhY2hhYmxlVVJMU3RyaW5nID0gdW5yZWFjaGFibGVV
Ukw7CisgICAgbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcgPSBt
X2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkw7CisgICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEg
PSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSku
Z2V0KCkpOworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwor
CiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGJhc2VVUkwpOwogICAg
IG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCh1bnJlYWNoYWJsZVVSTCk7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJuYXRlSFRNTFN0
cmluZyhodG1sU3RyaW5nLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCwgbV9mYWlsaW5nUHJvdmlz
aW9uYWxMb2FkVVJMLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcobG9hZFBhcmFtZXRlcnMpLCBt
X3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsK
IH0KIApAQCAtMTA1MCw3ICsxMDk1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUGxhaW5U
ZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBBUEk6Ok9iamVjdCogdXNlckRhCiAgICAg
YXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1f
cGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtV
UkwoKS5zdHJpbmcoKSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkxvYWRQbGFpblRleHRTdHJpbmcoc3RyaW5nLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdlSUQpOworICAgIExvYWRQ
YXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25J
RCA9IDA7CisgICAgbG9hZFBhcmFtZXRlcnMuc3RyaW5nID0gc3RyaW5nOworICAgIGxvYWRQYXJh
bWV0ZXJzLk1JTUVUeXBlID0gQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIik7CisgICAgbG9hZFBh
cmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1Rv
SGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMo
bG9hZFBhcmFtZXRlcnMpOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpMb2FkU3RyaW5nKGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+
cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKQEAgLTEwNjUsNyArMTExNywxNSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJj
aGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VM
b2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQ
SVJlcXVlc3RVUkwodHJhbnNhY3Rpb24sIGJsYW5rVVJMKCkuc3RyaW5nKCkpOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkV2ViQXJjaGl2ZURhdGEod2ViQXJj
aGl2ZURhdGEtPmRhdGFSZWZlcmVuY2UoKSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBMb2FkUGFy
YW1ldGVycyBsb2FkUGFyYW1ldGVyczsKKyAgICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQg
PSAwOworICAgIGxvYWRQYXJhbWV0ZXJzLmRhdGEgPSB3ZWJBcmNoaXZlRGF0YS0+ZGF0YVJlZmVy
ZW5jZSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlID0gQVNDSUlMaXRlcmFsKCJhcHBs
aWNhdGlvbi94LXdlYmFyY2hpdmUiKTsKKyAgICBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUg
PSBBU0NJSUxpdGVyYWwoInV0Zi0xNiIpOworICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0g
VXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdl
dCgpKTsKKyAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKKwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEobG9hZFBhcmFt
ZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCku
c3RhcnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDQwNjYxM2E4NDM2M2E1MGEyOTg0MTM1OWI5ZjVjZGEyYjEwMjZkYTQuLjEwYTZhNzQyOWVkZDcy
Y2M5YzRiMjNjZGUwNjI0OWUxYWM2NjEyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTIwNSw2ICsyMDUsNyBAQCBzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsK
IHN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIHN0cnVjdCBFZGl0aW5nUmFuZ2U7CiBzdHJ1Y3QgRWRp
dG9yU3RhdGU7CitzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1l
bnVEYXRhOwogc3RydWN0IFByaW50SW5mbzsKIHN0cnVjdCBXZWJQb3B1cEl0ZW07CkBAIC0xMzM3
LDYgKzEzMzgsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gRGljdGlvbmFyeS4KICAgICB2b2lkIGRp
ZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cElu
Zm8mKTsKKworICAgIHZvaWQgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhMb2FkUGFyYW1ldGVy
cyYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5oCmluZGV4IGUwNWFlZTAy
NWI5ZWVmN2NiZjRhZjVjYmIyOWQ2NDY4NjQxYjg1ODEuLmM2YjU0ZGRiYTUxZDg4MmRiYjJhNWI1
Nzg1Y2NhMGQwNmZiZWU0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5oCkBAIC0yNSwxMCArMjUsMTAgQEAKIAogI2lm
IFBMQVRGT1JNKElPUykKIAotI2ltcG9ydCAiRGF0YURldGVjdG9yc1VJU1BJLmgiCiAjaW1wb3J0
ICJHZXN0dXJlVHlwZXMuaCIKICNpbXBvcnQgIldLQWN0aW9uU2hlZXQuaCIKICNpbXBvcnQgPFVJ
S2l0L1VJUG9wb3ZlckNvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdG9y
c1VJU1BJLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQppbmRleCA2MjYwZGU0NjExYThlYWRhNWNjMTUyOWMxMzNjNzUxYzY4
MDYzZmM1Li5iM2U0OTgyNTQwYmNjYWUxOWI3MTI4Y2E2NDhkZDNhNjBiMTBiNGU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQpAQCAtMjksNyArMjksNiBAQAogI2lmIFBMQVRGT1JNKElPUykKIAogI2ltcG9y
dCAiQVBJVUlDbGllbnQuaCIKLSNpbXBvcnQgIkRhdGFEZXRlY3RvcnNVSVNQSS5oIgogI2ltcG9y
dCAiRWRpdGluZ1JhbmdlLmgiCiAjaW1wb3J0ICJNYW5hZ2VkQ29uZmlndXJhdGlvblNQSS5oIgog
I2ltcG9ydCAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgpAQCAtNjUsNiArNjQsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db3JlR3JhcGhpY3NTUEku
aD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdG9yc0NvcmVTUEkuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvRGF0YURldGVjdG9yc1VJU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UXVhZC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhdGgu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBiNzY0NjYxNzYzMzQ2MTFmMmIwMzBlNDU5ZWY3MTZiODZjZWRiYTMxLi5lNjY3ZWU0
ZmFiOWVmNzg2ODQxNDEwMTRhOTc4NTk2ZGE1Y2Q4YzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01OTYsNiArNTk2LDkgQEAK
IAkJMjlBRDMwOTYxNjRCNEM5MzAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlB
RDMwOTUxNjRCNEM5MzAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1t
ICovOyB9OwogCQkyOUNENTVBQTEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI5Q0Q1NUE4MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0QmFzZS5oICovOyB9OwogCQkyOUNENTVBQjEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyOUNENTVBOTEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gKi87IH07CisJCTJEMTA4NzYwMUQyQzU3M0UwMEI4
NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDEwODc1RTFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRl
cnMuY3BwICovOyB9OworCQkyRDEwODc2MTFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTA4
NzVGMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5oICovOyB9OworCQkyRDEwODc2
MzFEMkM2NDFCMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnNDb2NvYS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTA4NzYyMUQyQzY0MUIwMEI4NUY4
MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29hLm1tICovOyB9OwogCQkyRDEyNUM1RTE4NTdFQTA1MDAz
QkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDEyNUM1QzE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dl
c3R1cmVDb250cm9sbGVyLmggKi87IH07CiAJCTJEMTI1QzVGMTg1N0VBMDUwMDNCQTNDQiAvKiBW
aWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDEyNUM1RDE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVD
b250cm9sbGVyTWFjLm1tICovOyB9OwogCQkyRDFCNUQ1RDE4NTg2OUM4MDA2QzY1OTYgLyogVmll
d0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMUI1RDVCMTg1ODY5QzgwMDZDNjU5NiAvKiBW
aWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwpAQCAtMTczNiw3
ICsxNzM5LDYgQEAKIAkJQ0UxMUFENTIxQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTExQUQ1MTFD
QkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLzsgfTsKIAkJQ0UxQTBCRDIxQTQ4RTZD
NjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyogQXNz
ZXJ0aW9uU2VydmljZXNTUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDMxQTQ4RTZDNjAwNTRFRjc0IC8q
IENvcmVQREZTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFMUEwQkNEMUE0OEU2QzYwMDU0RUY3NCAvKiBDb3JlUERGU1BJLmggKi87IH07Ci0JCUNF
MUEwQkQ0MUE0OEU2QzYwMDU0RUY3NCAvKiBEYXRhRGV0ZWN0b3JzVUlTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkNFMUE0OEU2QzYwMDU0
RUY3NCAvKiBEYXRhRGV0ZWN0b3JzVUlTUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDUxQTQ4RTZDNjAw
NTRFRjc0IC8qIE1hbmFnZWRDb25maWd1cmF0aW9uU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJDRjFBNDhFNkM2MDA1NEVGNzQgLyogTWFu
YWdlZENvbmZpZ3VyYXRpb25TUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDYxQTQ4RTZDNjAwNTRFRjc0
IC8qIFRDQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovOyB9OwogCQlDRTFBMEJE
NzFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJEMTFBNDhFNkM2MDA1NEVGNzQgLyogVGV4
dElucHV0U1BJLmggKi87IH07CkBAIC0yNjAxLDYgKzI2MDMsOSBAQAogCQkyOUNENTVBOTEyOEUy
OTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0QmFzZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQwMDM1MjIxQkM3
NDE0ODAwREE4NzE2IC8qIERlcHJlY2F0ZWRQREZQbHVnaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRGVwcmVjYXRlZFBERlBsdWdpbi5oOyBwYXRoID0gUERGL0RlcHJlY2F0
ZWRQREZQbHVnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQwMDM1MjMxQkM3
NDE0ODAwREE4NzE2IC8qIERlcHJlY2F0ZWRQREZQbHVnaW4ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEZXByZWNhdGVkUERGUGx1Z2luLm1tOyBwYXRoID0gUERG
L0RlcHJlY2F0ZWRQREZQbHVnaW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJE
MTA4NzVFMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTJEMTA4NzVGMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1l
dGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2FkUGFyYW1ldGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDEwODc2MjFEMkM2NDFCMDBCODVGODIg
LyogTG9hZFBhcmFtZXRlcnNDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IExvYWRQYXJhbWV0ZXJzQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJEMTI1QzVDMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld0dlc3R1cmVDb250cm9sbGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMTI1QzVEMTg1N0VBMDUwMDNCQTND
QiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEMUI1RDVBMTg1ODY1OTkwMDZDNjU5NiAvKiBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzg0Miw3ICszODQ3LDYgQEAK
IAkJQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVTaWduaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFMUEwQkNDMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3NlcnRpb25TZXJ2aWNlc1NQ
SS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJDRDFBNDhFNkM2MDA1NEVG
NzQgLyogQ29yZVBERlNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3Jl
UERGU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNFMUEwQkNFMUE0OEU2QzYw
MDU0RUY3NCAvKiBEYXRhRGV0ZWN0b3JzVUlTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGF0YURldGVjdG9yc1VJU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFMUEwQkNGMUE0OEU2QzYwMDU0RUY3NCAvKiBNYW5hZ2VkQ29uZmlndXJhdGlvblNQSS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYW5hZ2VkQ29uZmlndXJhdGlvblNQ
SS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJEMDFBNDhFNkM2MDA1NEVG
NzQgLyogVENDU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRDQ1NQSS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJEMTFBNDhFNkM2MDA1NEVGNzQg
LyogVGV4dElucHV0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJ
bnB1dFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ4NCw2ICs0NDg4LDgg
QEAKIAkJCQlCQ0NGNkIyMzEyQzkzRTdBMDA4RjlDMzUgLyogSW1hZ2VPcHRpb25zLmggKi8sCiAJ
CQkJMUE5MkRDMTIxMkY4QkFCOTAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuY3BwICovLAog
CQkJCTFBOTJEQzEwMTJGOEJBNDYwMDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0LmggKi8sCisJ
CQkJMkQxMDg3NUUxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCAqLywKKwkJ
CQkyRDEwODc1RjFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuaCAqLywKIAkJCQky
RDUwMzY2QTFCQ0RFMTc5MDBFMjBCQjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2ZW50LmggKi8sCiAJ
CQkJQzAyQkZGMTUxMjUxNEZEODAwOUNDQkVBIC8qIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCAq
LywKIAkJCQkzMUVBMjVEMzEzNEY3OEQ2MDA1QjE0NTIgLyogTmF0aXZlV2ViTW91c2VFdmVudC5o
ICovLApAQCAtNTIzOCw2ICs1MjQ0LDcgQEAKIAkJCQkzN0JFQzRERTE5NDkxNDg2MDA4QjQyODYg
LyogQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5tbSAqLywKIAkJCQlDNTVGOTE2QzFDNTk1
RTQ0MDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5oICovLAogCQkJCUM1NUY5MTZEMUM1
OTVFNDQwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tICovLAorCQkJCTJEMTA4NzYy
MUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29hLm1tICovLAogCQkJCTFBQjFG
NzhFMUQxQjM0QTYwMDdDOUJEMSAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSAqLywK
IAkJCQkzN0M0QzA5MjE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5LmggKi8sCiAJCQkJMzdD
NEMwOTExODE0QjNBRjAwMzY4OEI5IC8qIFdLTlNBcnJheS5tbSAqLywKQEAgLTcxNjAsNyArNzE2
Nyw2IEBACiAJCQkJQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2Vz
U1BJLmggKi8sCiAJCQkJQ0RBMDQxRjMxQUNFMjEwNTAwNEExM0VDIC8qIEJhY2tCb2FyZFNlcnZp
Y2VzU1BJLmggKi8sCiAJCQkJQ0UxQTBCQ0QxQTQ4RTZDNjAwNTRFRjc0IC8qIENvcmVQREZTUEku
aCAqLywKLQkJCQlDRTFBMEJDRTFBNDhFNkM2MDA1NEVGNzQgLyogRGF0YURldGVjdG9yc1VJU1BJ
LmggKi8sCiAJCQkJQ0UxQTBCQ0YxQTQ4RTZDNjAwNTRFRjc0IC8qIE1hbmFnZWRDb25maWd1cmF0
aW9uU1BJLmggKi8sCiAJCQkJNTc5RDE4QjcxQ0NGRTM0QjAwQjE5NzRDIC8qIFBob3Rvc1NQSS5o
ICovLAogCQkJCUNFMUEwQkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCAqLywKQEAgLTc0
NjMsNyArNzQ2OSw2IEBACiAJCQkJNTEyQTk3NkExODBFMDlCODAwMzlBMTQ5IC8qIERhdGFiYXNl
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDMyRjFFMTgwRjc5
MTcwMDk2MUJCNyAvKiBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzU1RjkxNzExQzU5Njc2RTAwMjlFOTJEIC8qIERhdGFEZXRlY3Rp
b25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAotCQkJCUNFMUEwQkQ0MUE0OEU2QzYwMDU0RUY3NCAv
KiBEYXRhRGV0ZWN0b3JzVUlTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzc1MzgwMTgzQkU1
MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Mzg5MUI2
QzFBNjhDMzBCMDAzMEYzODYgLyogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDMTQyNzAyMUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZC5oIGluIEhlYWRl
cnMgKi8sCkBAIC03ODU1LDYgKzc4NjAsNyBAQAogCQkJCTdDODVGRDdDMTkzNDE1QTgwMDAxNzdD
NCAvKiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzg1
RkQ4MDE5MzQxNjY1MDAwMTc3QzQgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0Q1OThBQzExMkI3RkRGMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXNTdG9yZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMkQxMDg3NjExRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJh
bWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkQ5NzEwRjQzN0FGMDA1OEMxNUEgLyog
V2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwNDNBMDkxMjREMTFBOTAwRkZCRkI1
IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTA0M0Y2QTEy
NTE0RDhCMDBGRkJGQjUgLyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC04ODgwLDYgKzg4ODYsNyBAQAogCQkJCUM1OUM0QTU4MThCODExNzQwMDdCRENC
NiAvKiBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTVF
NzcyNzE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDRUU5NjZDMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTJEMTA4NzYzMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29h
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFBMzE3MzUxMzRDRUE4MDAwN0M5QTRGIC8qIEF0dHJp
YnV0ZWRTdHJpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTJGNTg5NjEyQTg4Mzg4MDA2Mjk1
MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MTJGNTg5ODEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTA2Myw2ICs5MDcwLDcgQEAKIAkJCQkxQTJEODJB
NjEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQTJEODJBODEyN0Y0RUFCMDAxRUI5NjIgLyogTlBSZW1vdGVPYmplY3RNYXAuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUEyMTYxQjExMUYzNzY2NDAwOEFEMEY1IC8qIE5QUnVudGltZU9iamVj
dE1hcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyRDEwODc2MDFEMkM1NzNFMDBCODVGODIgLyog
TG9hZFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyMTYyQjAxMUYzODk3MTAw
OEFEMEY1IC8qIE5QUnVudGltZVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJE
ODRBNDEyN0Y2QUQxMDAxRUI5NjIgLyogTlBWYXJpYW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzhBQ0ExNDE2NjcwRDg5MDA0QzE5NDEgLyogT2JqQ09iamVjdEdyYXBoLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDJkNzEyYmM3
MGRlMWFlYTViMGE0Njk3ZTE2MjNhODU1MjMzYzg0MmYuLjZhZjA3NmU4M2UzMGM0ZWE3ZWZiODdl
ODhiMWE0NTlkZDk5ZTVlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC0xNjI5LDcgKzE2MjksNyBAQCBSZW1vdGVBWE9iamVjdFJlZiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiAgICAgcmV0dXJuIHdlYlBhZ2UtPmFjY2Vz
c2liaWxpdHlSZW1vdGVPYmplY3QoKTsKIH0KICAgICAKLU5TQ2FjaGVkVVJMUmVzcG9uc2UqIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpIGNv
bnN0CitOU0NhY2hlZFVSTFJlc3BvbnNlICpXZWJGcmFtZUxvYWRlckNsaWVudDo6d2lsbENhY2hl
UmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE5TQ2Fj
aGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKSBjb25zdAogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpAQCAtMTYzOCw2ICsxNjM4LDE1
IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsQ2FjaGVS
ZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuCiAgICAgcmV0dXJuIHdlYlBhZ2UtPmluamVjdGVk
QnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KCkuc2hvdWxkQ2FjaGVSZXNwb25zZSh3ZWJQYWdlLCBt
X2ZyYW1lLCBpZGVudGlmaWVyKSA/IHJlc3BvbnNlIDogbmlsOwogfQogCitOU0RpY3Rpb25hcnkg
KldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkYXRhRGV0ZWN0aW9uQ29udGV4dCgpCit7CisgICAgV2Vi
UGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXdlYlBhZ2UpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gd2ViUGFnZS0+ZGF0YURldGVjdGlvbkNvbnRl
eHQoKTsKK30KKwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiBib29sIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpzaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudChjb25zdCBTdHJpbmcmIC8q
bWltZVR5cGUqLykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBlMjA3
NDA0NTk3ODEwNTllMGU4YzMzMTA4MGJjY2I5MjMyMjFhNjk0Li5lZTZiZWJkNjg0OWFmNWQyZTQ4
YzNmOTk0ZWRjMjI2M2I1MTYyZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0yMjEsNiArMjIxLDggQEAgcHJpdmF0ZToKICAgICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3Np
YmlsaXR5UmVtb3RlT2JqZWN0KCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgTlNDYWNoZWRVUkxSZXNw
b25zZSogd2lsbENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBjb25zdCBvdmVycmlkZTsK
KworICAgIE5TRGljdGlvbmFyeSAqZGF0YURldGVjdGlvbkNvbnRleHQoKSBvdmVycmlkZTsKICNl
bmRpZgogCiAgICAgYm9vbCBzaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudChjb25zdCBTdHJp
bmcmIC8qbWltZVR5cGUqLykgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTgzMTNjMTE4NGU1NmQ4Y2Y1ZjliM2Nj
NDQ5ODdkZmM5ODVkZjkzNy4uZmFkZjNmOTljMDZjMTJhOWNkNzUwMGVkMjYxYWI0ZTUyZDMwYTY1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkLmgiCisjaW5jbHVkZSAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKICNpbmNsdWRlICJOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKQEAgLTExMzksMjEgKzExNDAsMjMgQEAg
dm9pZCBXZWJQYWdlOjpsb2FkVVJMSW5GcmFtZShjb25zdCBTdHJpbmcmIHVybCwgdWludDY0X3Qg
ZnJhbWVJRCkKICAgICBmcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWQoRnJhbWVMb2Fk
UmVxdWVzdChmcmFtZS0+Y29yZUZyYW1lKCksIFJlc291cmNlUmVxdWVzdChVUkwoVVJMKCksIHVy
bCkpLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdykpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHVpbnQ2NF90IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3ksIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZTo6bG9hZFJlcXVl
c3QoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQogewogICAgIFNlbmRTdG9w
UmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyKHRoaXMpOwogCi0gICAgbV9wZW5kaW5nTmF2aWdh
dGlvbklEID0gbmF2aWdhdGlvbklEOworICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IGxvYWRQ
YXJhbWV0ZXJzLm5hdmlnYXRpb25JRDsKIAotICAgIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXIu
YmVnaW5Mb2FkKG1fbWFpbkZyYW1lLmdldCgpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAg
ICBtX3NhbmRib3hFeHRlbnNpb25UcmFja2VyLmJlZ2luTG9hZChtX21haW5GcmFtZS5nZXQoKSwg
bG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICAvLyBMZXQgdGhl
IEluamVjdGVkQnVuZGxlIGtub3cgd2UgYXJlIGFib3V0IHRvIHN0YXJ0IHRoZSBsb2FkLCBwYXNz
aW5nIHRoZSB1c2VyIGRhdGEgZnJvbSB0aGUgVUlQcm9jZXNzCiAgICAgLy8gdG8gYWxsIHRoZSBj
bGllbnQgdG8gc2V0IHVwIGFueSBuZWVkZWQgc3RhdGUuCi0gICAgbV9sb2FkZXJDbGllbnQud2ls
bExvYWRVUkxSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBt
X2xvYWRlckNsaWVudC53aWxsTG9hZFVSTFJlcXVlc3QodGhpcywgbG9hZFBhcmFtZXRlcnMucmVx
dWVzdCwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhs
b2FkUGFyYW1ldGVycy51c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworCisgICAgbV9kYXRhRGV0
ZWN0aW9uQ29udGV4dCA9IGxvYWRQYXJhbWV0ZXJzLmRhdGFEZXRlY3Rpb25Db250ZXh0OwogCiAg
ICAgLy8gSW5pdGF0ZSB0aGUgbG9hZCBpbiBXZWJDb3JlLgotICAgIEZyYW1lTG9hZFJlcXVlc3Qg
ZnJhbWVMb2FkUmVxdWVzdChtX21haW5GcmFtZS0+Y29yZUZyYW1lKCksIHJlcXVlc3QsIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKLSAgICBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IGV4dGVybmFsVVJMc1BvbGljeSA9IHN0YXRpY19jYXN0PFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k+KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwor
ICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdChtX21haW5GcmFtZS0+Y29yZUZy
YW1lKCksIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IGV4
dGVybmFsVVJMc1BvbGljeSA9IHN0YXRpY19jYXN0PFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k+KGxvYWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIGZy
YW1lTG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShleHRlcm5hbFVS
THNQb2xpY3kpOwogCiAgICAgY29yZVBhZ2UoKS0+dXNlcklucHV0QnJpZGdlKCkubG9hZFJlcXVl
c3QoZnJhbWVMb2FkUmVxdWVzdCk7CkBAIC0xMTc5LDcgKzExODIsNyBAQCB2b2lkIFdlYlBhZ2U6
OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzaGFyZQogICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZChG
cmFtZUxvYWRSZXF1ZXN0KG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVxdWVzdCwgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIHN1YnN0aXR1dGVEYXRhKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFN0cmluZyh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgVVJM
JiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCit2b2lkIFdlYlBhZ2U6OmxvYWRTdHJpbmdJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIWh0bWxTdHJpbmcuaXNOdWxsKCkgJiYgaHRtbFN0cmlu
Zy5pczhCaXQoKSkgewogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihodG1s
U3RyaW5nLmNoYXJhY3RlcnM4KCkpLCBodG1sU3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKExDaGFy
KSk7CkBAIC0xMTkwLDM4ICsxMTkzLDMzIEBAIHZvaWQgV2ViUGFnZTo6bG9hZFN0cmluZyh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QKICAgICB9
CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGEodWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZTo6bG9hZERhdGEoY29uc3QgTG9hZFBh
cmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOwotICAgIFVSTCBiYXNlVVJMID0gYmFz
ZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBiYXNlVVJMU3Ry
aW5nKTsKLSAgICBsb2FkRGF0YUltcGwobmF2aWdhdGlvbklELCBzaGFyZWRCdWZmZXIsIE1JTUVU
eXBlLCBlbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCB1c2VyRGF0YSk7Ci19CisgICAgbV9k
YXRhRGV0ZWN0aW9uQ29udGV4dCA9IGxvYWRQYXJhbWV0ZXJzLmRhdGFEZXRlY3Rpb25Db250ZXh0
OwogCi12b2lkIFdlYlBhZ2U6OmxvYWRIVE1MU3RyaW5nKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKLXsKLSAgICBVUkwgYmFzZVVSTCA9IGJhc2VVUkxTdHJp
bmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgYmFzZVVSTFN0cmluZyk7Ci0g
ICAgbG9hZFN0cmluZyhuYXZpZ2F0aW9uSUQsIGh0bWxTdHJpbmcsIEFTQ0lJTGl0ZXJhbCgidGV4
dC9odG1sIiksIGJhc2VVUkwsIFVSTCgpLCB1c2VyRGF0YSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4obG9hZFBhcmFtZXRlcnMuZGF0YS5kYXRhKCkpLCBsb2FkUGFyYW1ldGVy
cy5kYXRhLnNpemUoKSk7CisgICAgVVJMIGJhc2VVUkwgPSBsb2FkUGFyYW1ldGVycy5iYXNlVVJM
U3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJz
LmJhc2VVUkxTdHJpbmcpOworICAgIGxvYWREYXRhSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0
aW9uSUQsIHNoYXJlZEJ1ZmZlciwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJhbWV0
ZXJzLmVuY29kaW5nTmFtZSwgYmFzZVVSTCwgVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRh
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBTdHJp
bmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgY29uc3QgU3RyaW5n
JiB1bnJlYWNoYWJsZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbExvYWRFcnJv
clVSTFN0cmluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlOjpsb2Fk
U3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKIHsKLSAgICBVUkwg
YmFzZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVSTChVUkwo
KSwgYmFzZVVSTFN0cmluZyk7Ci0gICAgVVJMIHVucmVhY2hhYmxlVVJMID0gdW5yZWFjaGFibGVV
UkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIHVucmVhY2hhYmxlVVJMU3Ry
aW5nKTsKLSAgICBVUkwgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwgPSBwcm92aXNpb25hbExvYWRF
cnJvclVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwgcHJvdmlzaW9uYWxM
b2FkRXJyb3JVUkxTdHJpbmcpOwotICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVy
KCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwocHJvdmlzaW9uYWxMb2Fk
RXJyb3JVUkwpOwotICAgIGxvYWRTdHJpbmcoMCwgaHRtbFN0cmluZywgQVNDSUlMaXRlcmFsKCJ0
ZXh0L2h0bWwiKSwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIHVzZXJEYXRhKTsKLSAgICBtX21h
aW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVp
bmdIYW5kbGVkVVJMKHsgfSk7Ci19CisgICAgbV9kYXRhRGV0ZWN0aW9uQ29udGV4dCA9IGxvYWRQ
YXJhbWV0ZXJzLmRhdGFEZXRlY3Rpb25Db250ZXh0OwogCi12b2lkIFdlYlBhZ2U6OmxvYWRQbGFp
blRleHRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKLXsKLSAgICBsb2FkU3RyaW5nKDAsIHN0cmluZywgQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWlu
IiksIGJsYW5rVVJMKCksIFVSTCgpLCB1c2VyRGF0YSk7CisgICAgVVJMIGJhc2VVUkwgPSBsb2Fk
UGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBVUkwoVVJM
KCksIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcpOworICAgIGxvYWRTdHJpbmdJbXBsKGxv
YWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc3RyaW5nLCBsb2FkUGFy
YW1ldGVycy5NSU1FVHlwZSwgYmFzZVVSTCwgVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRh
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkV2ViQXJjaGl2ZURhdGEoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiB3ZWJBcmNoaXZlRGF0YSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9p
ZCBXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYg
bG9hZFBhcmFtZXRlcnMpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4od2Vi
QXJjaGl2ZURhdGEuZGF0YSgpKSwgd2ViQXJjaGl2ZURhdGEuc2l6ZSgpICogc2l6ZW9mKHVpbnQ4
X3QpKTsKLSAgICBsb2FkRGF0YUltcGwoMCwgc2hhcmVkQnVmZmVyLCBBU0NJSUxpdGVyYWwoImFw
cGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSIpLCBBU0NJSUxpdGVyYWwoInV0Zi0xNiIpLCBibGFua1VS
TCgpLCBVUkwoKSwgdXNlckRhdGEpOworICAgIG1fZGF0YURldGVjdGlvbkNvbnRleHQgPSBsb2Fk
UGFyYW1ldGVycy5kYXRhRGV0ZWN0aW9uQ29udGV4dDsKKworICAgIFVSTCBiYXNlVVJMID0gbG9h
ZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVS
TCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBVUkwgdW5yZWFjaGFibGVV
UkwgPSBsb2FkUGFyYW1ldGVycy51bnJlYWNoYWJsZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwo
KSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVVUkxTdHJpbmcpOworICAg
IFVSTCBwcm92aXNpb25hbExvYWRFcnJvclVSTCA9IGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFs
TG9hZEVycm9yVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFy
YW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZyk7CisgICAgbV9tYWluRnJhbWUt
PmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zZXRQcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxl
ZFVSTChwcm92aXNpb25hbExvYWRFcnJvclVSTCk7CisgICAgbG9hZFN0cmluZ0ltcGwoMCwgbG9h
ZFBhcmFtZXRlcnMuc3RyaW5nLCBBU0NJSUxpdGVyYWwoInRleHQvaHRtbCIpLCBiYXNlVVJMLCB1
bnJlYWNoYWJsZVVSTCwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOworICAgIG1fbWFpbkZyYW1l
LT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRs
ZWRVUkwoeyB9KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11
bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgSW50UG9pbnQgZG9jdW1lbnRQb2ludCwgSW50
UG9pbnQgc2NyZWVuUG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCBmYWViMjVkNzg0NTdlNzVjYTYxYzI5ZjZhZTgwZGQ2YTg1M2M0NjI0Li4y
OGE3OWU2ZjEwMzQ4N2FiYjRhOTEwOTAwOTNjZjk1OWFlNjAxMDgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE5Miw2ICsxOTIsNyBAQCBzdHJ1
Y3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOwogc3RydWN0IEVkaXRpbmdSYW5nZTsKIHN0cnVj
dCBFZGl0b3JTdGF0ZTsKIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjsK
K3N0cnVjdCBMb2FkUGFyYW1ldGVyczsKIHN0cnVjdCBQcmludEluZm87CiBzdHJ1Y3QgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwpAQCAtODUz
LDYgKzg1NCw4IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFVzZVBERlBsdWdpbigpIGNvbnN0
OwogICAgIGJvb2wgcGRmUGx1Z2luRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGRmUGx1Z2lu
RW5hYmxlZDsgfQogICAgIHZvaWQgc2V0UERGUGx1Z2luRW5hYmxlZChib29sIGVuYWJsZWQpIHsg
bV9wZGZQbHVnaW5FbmFibGVkID0gZW5hYmxlZDsgfQorCisgICAgTlNEaWN0aW9uYXJ5ICpkYXRh
RGV0ZWN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YURldGVjdGlvbkNvbnRleHQu
Z2V0KCk7IH0KICNlbmRpZgogCiAgICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
dGluZ1VSTFN0cmluZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKTsK
QEAgLTk5OCwxOCArMTAwMSwxNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBzb3VyY2VGb3JGcmFt
ZShXZWJGcmFtZSopOwogCiAgICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlv
bklELCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJh
c2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmKTsK
LSAgICB2b2lkIGxvYWRTdHJpbmcodWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lk
IGxvYWRTdHJpbmdJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJik7CiAKICAgICBib29sIHBs
YXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgLy8g
QWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoKTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0KHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgdWludDY0X3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGxvYWREYXRhKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1F
VHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwg
Y29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkws
IGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25z
dCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5n
JiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbExvYWRFcnJvclVSTCwg
Y29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGxvYWRQbGFpblRleHRTdHJpbmcoY29uc3QgU3Ry
aW5nJiwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGxvYWRXZWJBcmNoaXZlRGF0YShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgbG9hZFJl
cXVlc3QoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIGxvYWREYXRhKGNvbnN0IExv
YWRQYXJhbWV0ZXJzJik7CisgICAgdm9pZCBsb2FkU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJz
Jik7CisgICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVy
cyYpOwogICAgIHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3Qg
U3RyaW5nJiB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6Oklu
dFBvaW50IHNjcmVlblBvaW50KTsKICAgICB2b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBj
b25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICAgICB2b2lkIGdvRm9yd2FyZCh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90KTsKQEAgLTEyODAsNiArMTI4MSw4IEBAIHByaXZh
dGU6CiAKICAgICBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIG1fdmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3RvcjsKIAorICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IG1fZGF0YURldGVj
dGlvbkNvbnRleHQ7CisKICNlbGlmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgKFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oRUZMKSkKICAgICBHUmVmUHRyPFdlYlBhZ2VBY2Nlc3NpYmlsaXR5T2Jq
ZWN0PiBtX2FjY2Vzc2liaWxpdHlPYmplY3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggM2RlNGY3
NWVmNDljNjY0YTY3N2M2N2IwYTQyNTgxY2E3YmFiMmZiMy4uYmU1NDZjMWM4ZjIwYmEwZmExYTRl
MzYzODM2MGM4NGQyNWYwMjU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTEzMiwxMiArMTMyLDExIEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFRyeVJlc3RvcmVTY3JvbGxQ
b3NpdGlvbigpCiAKICAgICBMb2FkVVJMSW5GcmFtZShTdHJpbmcgdXJsLCB1aW50NjRfdCBmcmFt
ZUlEKQotICAgIExvYWRSZXF1ZXN0KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNh
bmRib3hFeHRlbnNpb25IYW5kbGUsIHVpbnQ2NF90IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3ksIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgTG9hZERhdGEodWludDY0X3QgbmF2
aWdhdGlvbklELCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgU3RyaW5nIE1JTUVUeXBlLCBTdHJp
bmcgZW5jb2RpbmcsIFN0cmluZyBiYXNlVVJMLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQot
ICAgIExvYWRIVE1MU3RyaW5nKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIGh0bWxTdHJp
bmcsIFN0cmluZyBiYXNlVVJMLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIExvYWRB
bHRlcm5hdGVIVE1MU3RyaW5nKFN0cmluZyBodG1sU3RyaW5nLCBTdHJpbmcgYmFzZVVSTCwgU3Ry
aW5nIHVucmVhY2hhYmxlVVJMLCBTdHJpbmcgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgTG9hZFBsYWluVGV4dFN0cmluZyhTdHJpbmcgc3Ry
aW5nLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIExvYWRXZWJBcmNoaXZlRGF0YShJ
UEM6OkRhdGFSZWZlcmVuY2Ugd2ViQXJjaGl2ZURhdGEsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCisgICAgTG9hZFJlcXVlc3Qoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBh
cmFtZXRlcnMpCisgICAgTG9hZERhdGEoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9h
ZFBhcmFtZXRlcnMpCisgICAgTG9hZFN0cmluZyhzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVy
cyBsb2FkUGFyYW1ldGVycykKKyAgICBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhzdHJ1Y3QgV2Vi
S2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKKwogICAgIE5hdmlnYXRlVG9QREZM
aW5rV2l0aFNpbXVsYXRlZENsaWNrKFN0cmluZyB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3Vt
ZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KQogCiAgICAgUmVsb2FkKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRC
bG9ja2Vyc0VuYWJsZWQsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggMTYwMjkwOWJlODA4NGI4NTkwM2Q2ODVkYTIxMzdkNTdjNGRlM2RiMC4uNDIy
ZmRhNDE2OTgwMzVmZDcwZjgyMGUwMjk4YzRiNDc2YWJlMTBhOCAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE2LTA3
LTA2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEVt
YWlsIGZyb20gSnVuZSAxc3QgY29udGFpbmluZyB0ZXh0ICdUb2RheSBAIDc6MTBQTScgaXMgbGlu
a2lmaWVkLCBidXQgc2hvdWxkbid0IGJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTk0OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NzE5OTAz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOiBBZGRl
ZC4KKyAgICAgICAgKC1bRGF0YURldGVjdGlvbk5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRp
ZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW0RhdGFEZXRlY3Rpb25VSURlbGVnYXRl
IF9kYXRhRGV0ZWN0aW9uQ29udGV4dEZvcldlYlZpZXc6XSk6CisgICAgICAgIChleHBlY3RMaW5r
Q291bnQpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgIEFkZCBhIHRlc3QgZW5zdXJpbmcgdGhh
dCBSZWZlcmVuY2VEYXRlIGluIHRoZSBEYXRhRGV0ZWN0b3JzIGNvbnRleHQgaXMgcmVzcGVjdGVk
CisgICAgICAgIHdoZW4gZGVjaWRpbmcgd2hhdCB0byBsaW5raWZ5LgorCiAyMDE2LTA3LTA1ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBEYXRhYmFzZSBwcm9j
ZXNzIGNyYXNoZXMgZGVsZXRpbmcgYSBjb3JydXB0IFNRTGl0ZSBkYXRhYmFzZSBmaWxlIChudWxs
IGRlcmVmKS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGZmNzkwMjQ2YTcxNWUyNmIzNTAy
NjUyMzdiODRiZWY2YWFjODYzMC4uYmE0NTUwNmY2OWQzYTNkYTU3YzlhOGQ2NmY2NThiYjNjNjJj
NGNmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ5LDYgKzQ5LDcgQEAKIAkJMkQwMDA2
NUYxQzFGNTg5QTAwODhFNkE3IC8qIFdLUERGVmlld1Jlc2l6ZUNyYXNoLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQwMDA2NUQxQzFGNTg5NDAwODhF
NkE3IC8qIFdLUERGVmlld1Jlc2l6ZUNyYXNoLm1tICovOyB9OwogCQkyRDE2NDZFMjFEMTg2MkNE
MDAwMTVBMUEgLyogRGVmZXJyZWRWaWV3SW5XaW5kb3dTdGF0ZUNoYW5nZS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTY0NkUxMUQxODYyQ0QwMDAx
NUExQSAvKiBEZWZlcnJlZFZpZXdJbldpbmRvd1N0YXRlQ2hhbmdlLm1tICovOyB9OwogCQkyRDUx
QTBDNzFDOEJGMDBDMDA3NjVDNDUgLyogRE9NSFRNTFZpZGVvRWxlbWVudFdyYXBwZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUxQTBDNTFDOEJG
MDA0MDA3NjVDNDUgLyogRE9NSFRNTFZpZGVvRWxlbWVudFdyYXBwZXIubW0gKi87IH07CisJCTJE
QzRDRjc3MUQyRDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRDNENGNzYxRDJEOUREODAwRUNDQzk0
IC8qIERhdGFEZXRlY3Rpb24ubW0gKi87IH07CiAJCTJERDdEM0FGMTc4MjI3QjMwMDI2RTFFMyAv
KiBsb3RzLW9mLXRleHQtdmVydGljYWwtbHIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ3RDNBRTE3ODIyN0FDMDAyNkUxRTMgLyog
bG90cy1vZi10ZXh0LXZlcnRpY2FsLWxyLmh0bWwgKi87IH07CiAJCTJFNzc2NUNEMTZDNEQ4MEEw
MEJBMkJCMSAvKiBtYWluSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkU3NzY1Q0MxNkM0RDgwQTAwQkEyQkIxIC8qIG1haW5JT1MubW0gKi87IH07
CiAJCTJFNzc2NUNGMTZDNEQ4MTEwMEJBMkJCMSAvKiBtYWluTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3NzY1Q0UxNkM0RDgxMTAwQkEyQkIx
IC8qIG1haW5NYWMubW0gKi87IH07CkBAIC02NjAsNiArNjYxLDcgQEAKIAkJMkQ2NDBCNTQxNzg3
NURGRjAwQkZBRjk5IC8qIFNjcm9sbFBpbm5pbmdCZWhhdmlvcnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsUGlubmluZ0JlaGF2aW9ycy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEODEwNENCMUJFQzEzRTcwMDIwREE0NiAvKiBGaW5k
SW5QYWdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmluZElu
UGFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ5QTUzQUUxQjMxRkE4RDAw
NzRENUFBIC8qIFNocmlua1RvRml0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gU2hyaW5rVG9GaXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJE
QzRDRjc2MUQyRDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YURldGVjdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkREMzU1MzUxQkQwODM3ODAwNURGNEE3IC8qIEF1dG9MYXlvdXRJ
bnRlZ3JhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1
dG9MYXlvdXRJbnRlZ3JhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRE
N0QzQTkxNzgyMDVEMDAwMjZFMUUzIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc2l6ZVJldmVyc2VQYWdp
bmF0ZWRXZWJWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkREN0QzQUUx
NzgyMjdBQzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gImxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTExNjYsNiArMTE2OCw3IEBACiAJCQkJQTE0RkM1ODYxQjg5OTFCNjAwRDEwN0VC
IC8qIENvbnRlbnRGaWx0ZXJpbmcubW0gKi8sCiAJCQkJQTE0RkM1ODkxQjg5OTI3MTAwRDEwN0VC
IC8qIENvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0gKi8sCiAJCQkJMUFBRDE5RjUxQzdDRTIwMzAw
ODMxRTQ3IC8qIENvZGluZy5tbSAqLywKKwkJCQkyREM0Q0Y3NjFEMkQ5REQ4MDBFQ0NDOTQgLyog
RGF0YURldGVjdGlvbi5tbSAqLywKIAkJCQlBMUE0RkU1RDE4REQzREI3MDBCNUVBOEEgLyogRG93
bmxvYWQubW0gKi8sCiAJCQkJMkQ4MTA0Q0IxQkVDMTNFNzAwMjBEQTQ2IC8qIEZpbmRJblBhZ2Uu
bW0gKi8sCiAJCQkJMkQxRkUwQUYxQUQ0NjVDMTAwNkNEOUU2IC8qIEZpeGVkTGF5b3V0U2l6ZS5t
bSAqLywKQEAgLTIxMjgsNiArMjEzMSw3IEBACiAJCQkJNzY0MzIyRDcxQjYxQ0NDMzAwMjRGODAx
IC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0YwNTFBNDExQUU2MDA0NDdDNEMgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
RnJhbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjI1MUE0MTFBRjYwMDQ0N0M0QyAv
KiBPcGVuQW5kQ2xvc2VXaW5kb3cubW0gaW4gU291cmNlcyAqLywKKwkJCQkyREM0Q0Y3NzFEMkQ5
REQ4MDBFQ0NDOTQgLyogRGF0YURldGVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RjA3MUE0MTFBRTYwMDQ0N0M0QyAvKiBQYWdlTG9hZEJhc2ljLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDODNFMEMxMUQwQTY1MkYwMEZFQkNGMyAvKiBQcm92aXNpb25hbFVSTE5vdENoYW5nZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA4MUE0MTFBRTYwMDQ0N0M0QyAvKiBQYWdlTG9h
ZERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRGF0YURl
dGVjdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0RhdGFE
ZXRlY3Rpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE0MzEyOTg2NzAyMWM5MmYxYzM4MGMyOTU5OGYyNzU4
Y2M1MTM3MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisj
aW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCisKK3N0
YXRpYyBib29sIGZpbmlzaGVkTG9hZGluZzsKK3N0YXRpYyBib29sIHJhblNjcmlwdDsKKworQGlu
dGVyZmFjZSBEYXRhRGV0ZWN0aW9uTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2
aWdhdGlvbkRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gRGF0YURldGVjdGlvbk5h
dmlnYXRpb25EZWxlZ2F0ZQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgoreworICAgIGZp
bmlzaGVkTG9hZGluZyA9IHRydWU7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBEYXRhRGV0ZWN0
aW9uVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGU+CisKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZXRhaW4pIE5TRGF0ZSAqcmVmZXJlbmNlRGF0ZTsKKworQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gRGF0YURldGVjdGlvblVJRGVsZWdhdGUKKworLSAoTlNEaWN0aW9uYXJ5ICopX2Rh
dGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldworeworICAg
IGlmICghX3JlZmVyZW5jZURhdGUpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4g
QHsKKyAgICAgICAgQCJSZWZlcmVuY2VEYXRlIjogX3JlZmVyZW5jZURhdGUKKyAgICB9OworfQor
CitAZW5kCisKK3ZvaWQgZXhwZWN0TGlua0NvdW50KFdLV2ViVmlldyAqd2ViVmlldywgTlNTdHJp
bmcgKkhUTUxTdHJpbmcsIHVuc2lnbmVkIGxpbmtDb3VudCkKK3sKKyAgICBbd2ViVmlldyBsb2Fk
SFRNTFN0cmluZzpIVE1MU3RyaW5nIGJhc2VVUkw6bmlsXTsKKworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZmluaXNoZWRMb2FkaW5nKTsKKyAgICBmaW5pc2hlZExvYWRpbmcgPSBmYWxz
ZTsKKworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdhJykubGVuZ3RoIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHZhbHVlLCBO
U0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfRVEobGlua0NvdW50LCBbdmFsdWUgdW5z
aWduZWRJbnRWYWx1ZV0pOworICAgICAgICByYW5TY3JpcHQgPSB0cnVlOworICAgIH1dOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyYW5TY3JpcHQpOworICAgIHJhblNjcmlwdCA9
IGZhbHNlOworfQorCitURVNUKFdlYktpdDIsIERhdGFEZXRlY3Rpb25SZWZlcmVuY2VEYXRlKQor
eworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXREYXRhRGV0ZWN0b3JUeXBlczpXS0RhdGFEZXRlY3RvclR5cGVDYWxlbmRh
ckV2ZW50XTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgUmV0YWluUHRyPERh
dGFEZXRlY3Rpb25OYXZpZ2F0aW9uRGVsZWdhdGU+IG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tEYXRhRGV0ZWN0aW9uTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07
CisKKyAgICBSZXRhaW5QdHI8RGF0YURldGVjdGlvblVJRGVsZWdhdGU+IFVJRGVsZWdhdGUgPSBh
ZG9wdE5TKFtbRGF0YURldGVjdGlvblVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2Vi
VmlldyBzZXRVSURlbGVnYXRlOlVJRGVsZWdhdGUuZ2V0KCldOworCisgICAgZXhwZWN0TGlua0Nv
dW50KHdlYlZpZXcuZ2V0KCksIEAidG9tb3Jyb3cgYXQgNlBNIiwgMSk7CisgICAgZXhwZWN0TGlu
a0NvdW50KHdlYlZpZXcuZ2V0KCksIEAieWVzdGVyZGF5IGF0IDZQTSIsIDApOworCisgICAgTlNU
aW1lSW50ZXJ2YWwgd2VlayA9IDYwICogNjAgKiAyNCAqIDc7CisKKyAgICBbVUlEZWxlZ2F0ZSBz
ZXRSZWZlcmVuY2VEYXRlOltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdzotd2Vl
a11dOworICAgIGV4cGVjdExpbmtDb3VudCh3ZWJWaWV3LmdldCgpLCBAInRvbW9ycm93IGF0IDZQ
TSIsIDApOworICAgIGV4cGVjdExpbmtDb3VudCh3ZWJWaWV3LmdldCgpLCBAInllc3RlcmRheSBh
dCA2UE0iLCAwKTsKKworICAgIFtVSURlbGVnYXRlIHNldFJlZmVyZW5jZURhdGU6W05TRGF0ZSBk
YXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93OndlZWtdXTsKKyAgICBleHBlY3RMaW5rQ291bnQo
d2ViVmlldy5nZXQoKSwgQCJ0b21vcnJvdyBhdCA2UE0iLCAxKTsKKyAgICBleHBlY3RMaW5rQ291
bnQod2ViVmlldy5nZXQoKSwgQCJ5ZXN0ZXJkYXkgYXQgNlBNIiwgMSk7Cit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282976</attachid>
            <date>2016-07-06 18:08:26 -0700</date>
            <delta_ts>2016-07-06 18:13:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159498-20160706180753.patch</filename>
            <type>text/plain</type>
            <size>87010</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYyMDU4ZWExYTkwMTky
NzU4MzFhNTcyMjJjZTRhNDY5NDRkZTJmNS4uMTUyYTljZDc0MDkzZDc0MDljYjM3NjVjZWNkODBh
ZWU1NTMxZDExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA3LTA2ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEVtYWlsIGZyb20g
SnVuZSAxc3QgY29udGFpbmluZyB0ZXh0ICdUb2RheSBAIDc6MTBQTScgaXMgbGlua2lmaWVkLCBi
dXQgc2hvdWxkbid0IGJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTk0OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NzE5OTAzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0OiBXZWJL
aXQyLkRhdGFEZXRlY3Rpb25SZWZlcmVuY2VEYXRlCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5n
ZSk6CisgICAgICAgIEV4dHJhY3QgdGhlIHJlZmVyZW5jZSBkYXRlIGZyb20gdGhlIERhdGFEZXRl
Y3RvcnMgY29udGV4dCBkaWN0aW9uYXJ5IGlmIGl0IGV4aXN0cywKKyAgICAgICAgYW5kIHBhc3Mg
aXQgYWxvbmcgdG8gRGF0YURldGVjdG9ycy4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVG
b3JUaGlzRnJhbWUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICBQbHVtYiB0aGUgRGF0YURldGVjdG9ycyBjb250ZXh0IGRpY3Rpb25hcnkgdGhyb3VnaCBm
cm9tIFdlYlBhZ2UuCisKIDIwMTYtMDctMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIERhdGFiYXNlIHByb2Nlc3MgY3Jhc2hlcyBkZWxldGluZyBhIGNvcnJ1
cHQgU1FMaXRlIGRhdGFiYXNlIGZpbGUgKG51bGwgZGVyZWYpLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDBkZmY1
MTgzYzMwNGNhZDk4MzM3OWQ2OGY3NWVhNzEzZjllN2M4YzguLjkwZGNhNzYzZTVhOTg5NDBjMzJm
OTZiNjU1OTYxOWIxZmEyYzU0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAxNi0w
Ny0wNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBF
bWFpbCBmcm9tIEp1bmUgMXN0IGNvbnRhaW5pbmcgdGV4dCAnVG9kYXkgQCA3OjEwUE0nIGlzIGxp
bmtpZmllZCwgYnV0IHNob3VsZG4ndCBiZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NDk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjcxOTkw
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogU2hhcmVk
L0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpM
b2FkUGFyYW1ldGVyczo6cGxhdGZvcm1FbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFy
YW1ldGVyczo6cGxhdGZvcm1EZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Mb2FkUGFyYW1ldGVy
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICBBZGQgYSBzdHJ1Y3QgdGhhdCBr
bm93cyBob3cgdG8gZW5jb2RlIGFsbCBvZiB0aGUgZGlmZmVyZW50IHBhcmFtZXRlcnMKKyAgICAg
ICAgdG8gYWxsIG9mIHRoZSBMb2FkKiBtZXNzYWdlcywgaW5jbHVkaW5nIHRoZSBwbGF0Zm9ybS1z
cGVjaWZpYyBEYXRhRGV0ZWN0b3JzIHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBTaGFyZWQvbWFj
L0FyZ3VtZW50Q29kZXJzTWFjLmg6CisgICAgICAgICogU2hhcmVkL21hYy9Bcmd1bWVudENvZGVy
c01hYy5tbToKKyAgICAgICAgKElQQzo6dHlwZUZyb21PYmplY3QpOgorICAgICAgICAoSVBDOjpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGUpOgorICAgICAgICBBZGQgTlNVUkwgY29kZXJz
IHRoYXQgZGVmZXIgdG8gdGhlIENGVVJMIGNvZGVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRhdGFEZXRlY3Rpb25D
b250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURl
bGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpkYXRhRGV0ZWN0aW9uQ29udGV4dCk6CisgICAgICAgIEFkZCBBUElVSUNsaWVudCBtZXRo
b2RzIHRvIHJldHJpZXZlIHRoZSBEYXRhRGV0ZWN0b3JzIGNvbnRleHQgZGljdGlvbmFyeS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKToKKyAgICAg
ICAgQWRkIHRoZSBEYXRhRGV0ZWN0b3JzIGNvbnRleHQgZGljdGlvbmFyeSB0byB0aGUgZ2l2ZW4g
TG9hZFBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRhdGFEZXRlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGF0YURldGVjdGlv
bkNvbnRleHQpOgorICAgICAgICBTdG9yZSB0aGUgZGF0YURldGVjdGlvbkNvbnRleHQgb24gV2Vi
UGFnZSwgYW5kIG1ha2UgaXQgYWNjZXNzaWJsZSB0byBXZWJDb3JlCisgICAgICAgIHZpYSB0aGUg
RnJhbWVMb2FkZXJDbGllbnQgKGl0IGlzIHVzZWQgaW4gRnJhbWVMb2FkZXIgd2hlbiB0aGUgbG9h
ZCBjb21wbGV0ZXMpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmxvYWRGaWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEhUTUxT
dHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1M
U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUGxhaW5UZXh0U3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRTdHJpbmdJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkSFRNTFN0cmluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRQbGFpblRleHRTdHJpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkV2ViQXJjaGl2ZURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAg
ICBBZG9wdCBMb2FkUGFyYW1ldGVycywgdGFraW5nIHRoaXMgb3Bwb3J0dW5pdHkgdG8gcmVkdWNl
IHRoZSBudW1iZXIgb2YgdmVyeSBzaW1pbGFyIG1lc3NhZ2VzLgorICAgICAgICBXZSBjYW4gdGFr
ZSB0aGlzIGZ1cnRoZXIgKHdlIHNob3VsZCBiZSBhYmxlIHRvIGdldCBpdCBkb3duIHRvIGp1c3Qg
TG9hZFJlcXVlc3QKKyAgICAgICAgYW5kIExvYWREYXRhKSBpbiB0aGUgZnV0dXJlLiBXaGVuIGFu
eSBsb2FkIG9jY3VycywgZ3JhYiB0aGUgY2xpZW50J3MgRGF0YURldGVjdG9yc2UKKyAgICAgICAg
Y29udGV4dCBkaWN0aW9uYXJ5IGFuZCBzZW5kIGl0IGFsb25nIHdpdGggdGhlIGxvYWQgcmVxdWVz
dCwgc3RvcmluZyBpdCBpbiBXZWJQYWdlLgorCiAyMDE2LTA3LTA0ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ29vcmRpbmF0ZWQgR3JhcGhp
Y3NdIE1vZGVybml6ZSBhbmQgY2xlYW51cCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDUy
M2MyZjM2NjEwNDNjZGNhMDY3NWEyMjVkNmYyY2EzNmJmMjY3MC4uYjExODBjNmU4OWZiODUyNGNm
MzNhMzQ3MTJiODQ1ODU3NzAyMjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0NCw2ICsxMjQ0LDcgQEAKIAkJMkQ5N0Yw
NDgxOURENDE0MDAwMUVFOUMzIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBQUUzMkQxOURDQUY2MDAwRTAw
MkQyIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5oICovOyB9OwogCQkyRDlGMEUxMzE0RkYxQ0JG
MDBCQTBGRjcgLyogbGluZWFyU1JHQi5pY2MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUYwRTEyMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdC
LmljYyAqLzsgfTsKIAkJMkRCOUM0QUExQjMyMzFGNDAwNzBGMjdGIC8qIE5TRXZlbnRTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQjlDNEE5MUIz
MjMxRjQwMDcwRjI3RiAvKiBOU0V2ZW50U1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkRDNENGNzkxRDJERDk4OTAwRUNDQzk0IC8qIERhdGFE
ZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRDNENGNzgxRDJERDk4OTAwRUNDQzk0IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEQ0I4Mzc5
MTlGOTlCQkEwMEE3RkJFNCAvKiBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRENCODM3NzE5Rjk5QkJBMDBB
N0ZCRTQgLyogTlNTaGFyaW5nU2VydmljZVBpY2tlclNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEQ0I4MzdBMTlGOTlCQkEwMEE3RkJFNCAv
KiBOU1NoYXJpbmdTZXJ2aWNlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRENCODM3ODE5Rjk5QkJBMDBBN0ZCRTQgLyogTlNTaGFyaW5nU2Vydmlj
ZVNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJEREI5N0Y0MTlGOUFFQ0EwMDIwMjVEOCAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkREQjk3RjMxOUY5QUVDQTAwMjAy
NUQ4IC8qIE5TRXh0ZW5zaW9uU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTg4MTIsNiArODgxMyw3IEBACiAJCTJEQUFFMzJDMTlEQ0FGNjAw
MEUwMDJEMiAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRBQUUzMkQxOURDQUY2MDAwRTAwMkQyIC8qIE1vY2tQYWdlT3Zl
cmxheUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrUGFnZU92
ZXJsYXlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRCOUM0QTkxQjMy
MzFGNDAwNzBGMjdGIC8qIE5TRXZlbnRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTlNFdmVudFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREM0Q0Y3
ODFEMkREOTg5MDBFQ0NDOTQgLyogRGF0YURldGVjdG9yc1VJU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRlY3RvcnNVSVNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyRENCODM3NzE5Rjk5QkJBMDBBN0ZCRTQgLyogTlNTaGFyaW5nU2Vydmlj
ZVBpY2tlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQ0I4Mzc4
MTlGOTlCQkEwMEE3RkJFNCAvKiBOU1NoYXJpbmdTZXJ2aWNlU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5TU2hhcmluZ1NlcnZpY2VTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkREQjk3RjMxOUY5QUVDQTAwMjAyNUQ4IC8qIE5TRXh0ZW5zaW9uU1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TRXh0ZW5zaW9uU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDE3MCw2ICsyMDE3Miw3IEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNFMTI1MjQyMUExNkMwMUEwMDg2NDQ4
MCAvKiBDb3JlVUlTUEkuaCAqLywKKwkJCQkyREM0Q0Y3ODFEMkREOTg5MDBFQ0NDOTQgLyogRGF0
YURldGVjdG9yc1VJU1BJLmggKi8sCiAJCQkJQ0VDMzM3QUUxQTQ2MDg2RDAwOUI4NTIzIC8qIEdy
YXBoaWNzU2VydmljZXNTUEkuaCAqLywKIAkJCQk3QzRDOTZFMjFBRDQ0QUJGMDAzNjVBNTAgLyog
TGF1bmNoU2VydmljZXNTUEkuaCAqLywKIAkJCQlDRTEyNTI0MDFBMTZCMUI2MDA4NjQ0ODAgLyog
TWVkaWFQbGF5ZXJTUEkuaCAqLywKQEAgLTI2OTIwLDYgKzI2OTIzLDcgQEAKIAkJCQk3QzlEQkZF
RTFBOUM0OUIxMDAwRDZCMjUgLyogSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0NDYxNDM4MENENjg5QzUwMEZBREE3NSAvKiBKU0hUTUxBdWRpb0VsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3QjExMEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxC
YXNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRDNENGNzkxRDJERDk4OTAwRUNDQzk0
IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFBMjMwQTFD
REFCNDAwQjQyQjI1IC8qIEpTSFRNTEJvZHlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUUyQUEyNTBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MQlJFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODBFN0U5RjBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MQnV0dG9uRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5oCmluZGV4IDk0OWU1YmY3YjM5ODg4ODc3MTM2YmY3Y2QzM2U4NjI2ZWViMjNjNjAuLjc3
NTlkMTk5Y2E0ZWNmZjA1MjQxOWJkYjMwMzJmOGUzZDdkYmNmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAKIE9C
SkNfQ0xBU1MgRERBY3Rpb25Db250ZXh0OwogT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFT
UyBOU0RpY3Rpb25hcnk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsNyArNTgsNyBA
QCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBkZXRlY3RJdGVtQXJvdW5kSGl0VGVzdFJlc3VsdChj
b25zdCBIaXRUZXN0UmVzdWx0JiwgRmxvYXRSZWN0JiBkZXRlY3RlZERhdGFCb3VuZGluZ0JveCwg
UmVmUHRyPFJhbmdlPiYgZGV0ZWN0ZWREYXRhUmFuZ2UpOwogI2VuZGlmCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIE5TQXJyYXkgKmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4m
IGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBOU0FycmF5ICpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0
UmFuZ2UsIERhdGFEZXRlY3RvclR5cGVzLCBOU0RpY3Rpb25hcnkgKmNvbnRleHQpOwogI2lmIFBM
QVRGT1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0RhdGFEZXRlY3Rv
ckxpbmsoRWxlbWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZGF0YURl
dGVjdG9ySWRlbnRpZmllcihFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggMTM4MzNlZTE5OTY4MmMzYjUwYzExMGQ3NjNmNDVm
MDg0NzU5NTM1Yi4uZDA4MDViZjkzYTM2NDU3NzBhNGE1NWYxYjNjM2Q4OTFlMDBiOGUzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtMjks
NiArMjksNyBAQAogI2ltcG9ydCAiQXR0ci5oIgogI2ltcG9ydCAiQ1NTU3R5bGVEZWNsYXJhdGlv
bi5oIgogI2ltcG9ydCAiRGF0YURldGVjdG9yc1NQSS5oIgorI2ltcG9ydCAiRGF0YURldGVjdG9y
c1VJU1BJLmgiCiAjaW1wb3J0ICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgogI2ltcG9ydCAi
RWxlbWVudFRyYXZlcnNhbC5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCkBAIC00MjksNyArNDMw
LDcgQEAgc3RhdGljIGlubGluZSBDRkNvbXBhcmlzb25SZXN1bHQgcXVlcnlPZmZzZXRDb21wYXJl
KEREUXVlcnlPZmZzZXQgbzEsIEREUXVlcnlPZmYKICAgICByZXR1cm4ga0NGQ29tcGFyZUVxdWFs
VG87CiB9CiAKLU5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJl
ZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMgdHlwZXMpCitOU0Fy
cmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBj
b250ZXh0UmFuZ2UsIERhdGFEZXRlY3RvclR5cGVzIHR5cGVzLCBOU0RpY3Rpb25hcnkgKmNvbnRl
eHQpCiB7CiAgICAgUmV0YWluUHRyPEREU2Nhbm5lclJlZj4gc2Nhbm5lciA9IGFkb3B0Q0Yoc29m
dExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVyQ3JlYXRlKEREU2Nhbm5lclR5cGVTdGFu
ZGFyZCwgMCwgbnVsbHB0cikpOwogICAgIFJldGFpblB0cjxERFNjYW5RdWVyeVJlZj4gc2NhblF1
ZXJ5ID0gYWRvcHRDRihzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNjYW5RdWVyeUNyZWF0
ZShOVUxMKSk7CkBAIC00NDMsMTUgKzQ0NCwxNSBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpk
ZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQog
ICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgYWRkIGEgdGltZW91dCB0byB0aGlzIGNhbGwgdG8gbWFr
ZSBzdXJlIGl0IGRvZXNuJ3QgdGFrZSB0b28gbXVjaCB0aW1lLgogICAgIGlmICghc29mdExpbmtf
RGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVyU2NhblF1ZXJ5KHNjYW5uZXIuZ2V0KCksIHNjYW5R
dWVyeS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8
Q0ZBcnJheVJlZj4gc2Nhbm5lclJlc3VsdHMgPSBhZG9wdENGKHNvZnRMaW5rX0RhdGFEZXRlY3Rv
cnNDb3JlX0REU2Nhbm5lckNvcHlSZXN1bHRzV2l0aE9wdGlvbnMoc2Nhbm5lci5nZXQoKSwgZ2V0
X0RhdGFEZXRlY3RvcnNDb3JlX0REU2Nhbm5lckNvcHlSZXN1bHRzT3B0aW9uc0ZvclBhc3NpdmVV
c2UoKSB8IEREU2Nhbm5lckNvcHlSZXN1bHRzT3B0aW9uc0NvYWxlc2NlU2lnbmF0dXJlcykpOwog
ICAgIGlmICghc2Nhbm5lclJlc3VsdHMpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisKICAg
ICBDRkluZGV4IHJlc3VsdENvdW50ID0gQ0ZBcnJheUdldENvdW50KHNjYW5uZXJSZXN1bHRzLmdl
dCgpKTsKICAgICBpZiAoIXJlc3VsdENvdW50KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAor
CiAgICAgVmVjdG9yPFJldGFpblB0cjxERFJlc3VsdFJlZj4+IGFsbFJlc3VsdHM7CiAgICAgVmVj
dG9yPFJldGFpblB0cjxOU0luZGV4UGF0aD4+IGluZGV4UGF0aHM7CiAgICAgTlNJbnRlZ2VyIGN1
cnJlbnRUb3BMZXZlbEluZGV4ID0gMDsKQEAgLTUxOSw3ICs1MjAsNyBAQCBOU0FycmF5ICpEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFu
Z2UsIERhdGFEZQogICAgIH0KICAgICAKICAgICBhdXRvIHR6ID0gYWRvcHRDRihDRlRpbWVab25l
Q29weURlZmF1bHQoKSk7Ci0gICAgTlNEYXRlICpyZWZlcmVuY2VEYXRlID0gW05TRGF0ZSBkYXRl
XTsKKyAgICBOU0RhdGUgKnJlZmVyZW5jZURhdGUgPSBbY29udGV4dCBvYmplY3RGb3JLZXk6Z2V0
a0RhdGFEZXRlY3RvcnNSZWZlcmVuY2VEYXRlS2V5KCldID86IFtOU0RhdGUgZGF0ZV07CiAgICAg
VGV4dCogbGFzdFRleHROb2RlVG9VcGRhdGUgPSBudWxscHRyOwogICAgIFN0cmluZyBsYXN0Tm9k
ZUNvbnRlbnQ7CiAgICAgc2l6ZV90IGNvbnRlbnRPZmZzZXQgPSAwOwpAQCAtNjUyLDcgKzY1Myw3
IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxS
YW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURlCiB9CiAKICNlbHNlCi1OU0FycmF5ICpEYXRhRGV0
ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiwgRGF0YURldGVjdG9y
VHlwZXMpCitOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQ
dHI8UmFuZ2U+JiwgRGF0YURldGVjdG9yVHlwZXMsIE5TRGljdGlvbmFyeSAqKQogewogICAgIHJl
dHVybiBuaWw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA3MzBj
MGI4MDE5MjA5MTY3NzM4NWUwMmFjNWNlOWEyNGM2ODM4MDFmLi5iMzIyNzQyZDUyMDEwZDgxODNi
ZTdjMmZhOTJkMTUzOThjMmQ1Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTIzMTAsNyArMjMxMCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBs
ZXRlRm9yVGhpc0ZyYW1lKCkKICAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygp
LmRhdGFEZXRlY3RvclR5cGVzKCkgIT0gRGF0YURldGVjdG9yVHlwZU5vbmUgJiYgZG9jdW1lbnQp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50RWxlbWVudCA9IGRvY3Vt
ZW50LT5kb2N1bWVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiBkb2N1bWVudFJhbmdlID0gbWFrZVJhbmdlKGZpcnN0UG9zaXRpb25Jbk5vZGUoZG9j
dW1lbnRFbGVtZW50KSwgbGFzdFBvc2l0aW9uSW5Ob2RlKGRvY3VtZW50RWxlbWVudCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShkb2N1bWVudFJhbmdlLCBtX2ZyYW1lLnNl
dHRpbmdzKCkuZGF0YURldGVjdG9yVHlwZXMoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9mcmFtZS5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250
ZW50SW5SYW5nZShkb2N1bWVudFJhbmdlLCBtX2ZyYW1lLnNldHRpbmdzKCkuZGF0YURldGVjdG9y
VHlwZXMoKSwgbV9jbGllbnQuZGF0YURldGVjdGlvbkNvbnRleHQoKSkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2NsaWVudC5kaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24obV9mcmFt
ZS5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpKTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5OTJlNWM4NTIyNWM0ODJh
NzNlYzIxYzZlM2NhNTFiZjkzNDI5N2QxLi5kODZjNjQ4NzA4ODBmY2ExZDA1ZjM3MTliYmFjMWQ5
OWJkZWQzNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtNTQsNiArNTQsNyBAQCB0eXBlZGVmIHZvaWQqIFJlbW90ZUFYT2JqZWN0UmVmOwogI2lmIFBM
QVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU0FycmF5OwogT0JKQ19DTEFTUyBOU0NhY2hlZFVS
TFJlc3BvbnNlOworT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CiBPQkpDX0NMQVNTIE5TVmlldzsK
ICNlbmRpZgogCkBAIC0yOTIsNiArMjkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBBbGxvdyBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0byByZXRyaWV2ZSBhIEZyYW1lIHBh
cmVudCBpZiB0aGVyZSdzIG5vIFBsYXRmb3JtV2lkZ2V0LgogICAgICAgICB2aXJ0dWFsIFJlbW90
ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBjb25z
dCA9IDA7CisgICAgICAgIHZpcnR1YWwgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9uQ29udGV4
dCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNF
KENGTkVUV09SSykKICAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2Fj
aGVSZXNwb25zZSAtIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcy
NTc+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9EYXRhRGV0
ZWN0b3JzVUlTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvRGF0YURldGVj
dG9yc1VJU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYwMzg4OTAxNGMzN2JiMjYyOWM1Yzg5YmFiMDExYTU5
NzFiYjgyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9p
b3MvRGF0YURldGVjdG9yc1VJU1BJLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
ZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL1NvZnRMaW5raW5nLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1w
b3J0IDxEYXRhRGV0ZWN0b3JzVUkvRERBY3Rpb24uaD4KKyNpbXBvcnQgPERhdGFEZXRlY3RvcnNV
SS9ERERldGVjdGlvbkNvbnRyb2xsZXIuaD4KKworI2Vsc2UKKworQGludGVyZmFjZSBEREFjdGlv
biA6IE5TT2JqZWN0CitAZW5kCisKK0BpbnRlcmZhY2UgRERBY3Rpb24gKCkKKy0gKEJPT0wpaGFz
VXNlckludGVyZmFjZTsKKy0gKE5TU3RyaW5nICopbG9jYWxpemVkTmFtZTsKK0Bwcm9wZXJ0eSAo
cmVhZG9ubHkpIE5TU3RyaW5nICphY3Rpb25VVEk7CitAZW5kCisKK0Bwcm90b2NvbCBERERldGVj
dGlvbkNvbnRyb2xsZXJJbnRlcmFjdGlvbkRlbGVnYXRlIDxOU09iamVjdD4KK0BlbmQKKworQGlu
dGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgOiBOU09iamVjdCA8VUlBY3Rpb25TaGVldERl
bGVnYXRlPgorQGVuZAorCitAaW50ZXJmYWNlIERERGV0ZWN0aW9uQ29udHJvbGxlciAoKQorKyAo
REREZXRlY3Rpb25Db250cm9sbGVyICopc2hhcmVkQ29udHJvbGxlcjsKKysgKE5TQXJyYXkgKil0
YXBBbmRIb2xkU2NoZW1lczsKKy0gKHZvaWQpcGVyZm9ybUFjdGlvbjooRERBY3Rpb24gKilhY3Rp
b24gZnJvbUFsZXJ0Q29udHJvbGxlcjooVUlBbGVydENvbnRyb2xsZXIgKilhbGVydENvbnRyb2xs
ZXIgaW50ZXJhY3Rpb25EZWxlZ2F0ZTooaWQgPERERGV0ZWN0aW9uQ29udHJvbGxlckludGVyYWN0
aW9uRGVsZWdhdGU+KWludGVyYWN0aW9uRGVsZWdhdGU7CitAZW5kCisKKyNlbmRpZgorCitAaW50
ZXJmYWNlIERERGV0ZWN0aW9uQ29udHJvbGxlciAoRGV0YWlsc1RvQmVSZW1vdmVkKQorLy8gRklY
TUU6IFRoaXMgd2lsbCBiZSByZW1vdmVkIGFzIHNvb24gYXMgPHJkYXI6Ly9wcm9ibGVtLzE2MzQ2
OTEzPiBpcyBmaXhlZC4KKy0gKE5TQXJyYXkgKilhY3Rpb25zRm9yQW5jaG9yOihpZClhbmNob3Ig
dXJsOihOU1VSTCAqKXRhcmdldFVSTCBmb3JGcmFtZTooaWQpZnJhbWU7CitAZW5kCisKK1NPRlRf
TElOS19QUklWQVRFX0ZSQU1FV09SSyhEYXRhRGV0ZWN0b3JzVUkpCitTT0ZUX0xJTktfQ0xBU1Mo
RGF0YURldGVjdG9yc1VJLCBERERldGVjdGlvbkNvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ09OU1RB
TlQoRGF0YURldGVjdG9yc1VJLCBrRGF0YURldGVjdG9yc0xlYWRpbmdUZXh0LCBjb25zdCBOU1N0
cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKERhdGFEZXRlY3RvcnNVSSwga0RhdGFEZXRlY3Rv
cnNUcmFpbGluZ1RleHQsIGNvbnN0IE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoRGF0
YURldGVjdG9yc1VJLCBrRGF0YURldGVjdG9yc1JlZmVyZW5jZURhdGUsIGNvbnN0IE5TU3RyaW5n
ICopCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lv
cy9EYXRhRGV0ZWN0b3JzVUlTUEkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3NwaS9pb3Mv
RGF0YURldGVjdG9yc1VJU1BJLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyYWE1
OTVkYTkwMDdmYTg5OTJlYjdhNDM1ZGVmM2U3Yzc2YzZlZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lv
cy9EYXRhRGV0ZWN0b3JzVUlTUEkuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgotI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0
TGlua2luZy5oPgotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotI2ltcG9ydCA8RGF0
YURldGVjdG9yc1VJL0REQWN0aW9uLmg+Ci0jaW1wb3J0IDxEYXRhRGV0ZWN0b3JzVUkvREREZXRl
Y3Rpb25Db250cm9sbGVyLmg+Ci0KLSNlbHNlCi0KLUBpbnRlcmZhY2UgRERBY3Rpb24gOiBOU09i
amVjdAotQGVuZAotCi1AaW50ZXJmYWNlIEREQWN0aW9uICgpCi0tIChCT09MKWhhc1VzZXJJbnRl
cmZhY2U7Ci0tIChOU1N0cmluZyAqKWxvY2FsaXplZE5hbWU7Ci1AcHJvcGVydHkgKHJlYWRvbmx5
KSBOU1N0cmluZyAqYWN0aW9uVVRJOwotQGVuZAotCi1AcHJvdG9jb2wgREREZXRlY3Rpb25Db250
cm9sbGVySW50ZXJhY3Rpb25EZWxlZ2F0ZSA8TlNPYmplY3Q+Ci1AZW5kCi0KLUBpbnRlcmZhY2Ug
REREZXRlY3Rpb25Db250cm9sbGVyIDogTlNPYmplY3QgPFVJQWN0aW9uU2hlZXREZWxlZ2F0ZT4K
LUBlbmQKLQotQGludGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgKCkKLSsgKERERGV0ZWN0
aW9uQ29udHJvbGxlciAqKXNoYXJlZENvbnRyb2xsZXI7Ci0rIChOU0FycmF5ICopdGFwQW5kSG9s
ZFNjaGVtZXM7Ci0tICh2b2lkKXBlcmZvcm1BY3Rpb246KEREQWN0aW9uICopYWN0aW9uIGZyb21B
bGVydENvbnRyb2xsZXI6KFVJQWxlcnRDb250cm9sbGVyICopYWxlcnRDb250cm9sbGVyIGludGVy
YWN0aW9uRGVsZWdhdGU6KGlkIDxERERldGVjdGlvbkNvbnRyb2xsZXJJbnRlcmFjdGlvbkRlbGVn
YXRlPilpbnRlcmFjdGlvbkRlbGVnYXRlOwotQGVuZAotCi0jZW5kaWYKLQotQGludGVyZmFjZSBE
RERldGVjdGlvbkNvbnRyb2xsZXIgKERldGFpbHNUb0JlUmVtb3ZlZCkKLS8vIEZJWE1FOiBUaGlz
IHdpbGwgYmUgcmVtb3ZlZCBhcyBzb29uIGFzIDxyZGFyOi8vcHJvYmxlbS8xNjM0NjkxMz4gaXMg
Zml4ZWQuCi0tIChOU0FycmF5ICopYWN0aW9uc0ZvckFuY2hvcjooaWQpYW5jaG9yIHVybDooTlNV
UkwgKil0YXJnZXRVUkwgZm9yRnJhbWU6KGlkKWZyYW1lOwotQGVuZAotCi1TT0ZUX0xJTktfUFJJ
VkFURV9GUkFNRVdPUksoRGF0YURldGVjdG9yc1VJKQotU09GVF9MSU5LX0NMQVNTKERhdGFEZXRl
Y3RvcnNVSSwgREREZXRlY3Rpb25Db250cm9sbGVyKQotU09GVF9MSU5LX0NPTlNUQU5UKERhdGFE
ZXRlY3RvcnNVSSwga0RhdGFEZXRlY3RvcnNMZWFkaW5nVGV4dCwgY29uc3QgTlNTdHJpbmcgKikK
LVNPRlRfTElOS19DT05TVEFOVChEYXRhRGV0ZWN0b3JzVUksIGtEYXRhRGV0ZWN0b3JzVHJhaWxp
bmdUZXh0LCBjb25zdCBOU1N0cmluZyAqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29jb2EvTG9hZFBhcmFtZXRlcnNDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWRlMDFkMDFlZTJhZWY0
NTQ0OTBiOGM1ZjkyNjY2MjlmZmM3Y2MwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW0KQEAgLTAsMCArMSw1MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb2FkUGFyYW1ldGVy
cy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyc01h
Yy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordm9pZCBMb2FkUGFyYW1ldGVyczo6cGxhdGZvcm1FbmNvZGUoSVBDOjpBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGF0
YURldGVjdGlvbkNvbnRleHQuZ2V0KCkpOworfQorCitib29sIExvYWRQYXJhbWV0ZXJzOjpwbGF0
Zm9ybURlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMm
IGRhdGEpCit7CisgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhLmRhdGFEZXRlY3Rp
b25Db250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TG9hZFBhcmFtZXRlcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMGYxMzQ1ZjhkNTZjZGM4NTlmMTllMjY1
YWVlODNmOWVhZDJkMzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCisKKyNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgTG9h
ZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
K3sKKyAgICBlbmNvZGVyIDw8IG5hdmlnYXRpb25JRDsKKyAgICBlbmNvZGVyIDw8IHJlcXVlc3Q7
CisgICAgZW5jb2RlciA8PCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwg
ZGF0YTsKKyAgICBlbmNvZGVyIDw8IHN0cmluZzsKKyAgICBlbmNvZGVyIDw8IE1JTUVUeXBlOwor
ICAgIGVuY29kZXIgPDwgZW5jb2RpbmdOYW1lOworICAgIGVuY29kZXIgPDwgYmFzZVVSTFN0cmlu
ZzsKKyAgICBlbmNvZGVyIDw8IHVucmVhY2hhYmxlVVJMU3RyaW5nOworICAgIGVuY29kZXIgPDwg
cHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmc7CisgICAgZW5jb2RlciA8PCBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OworICAgIGVuY29kZXIgPDwgdXNlckRhdGE7CisKKyAgICBwbGF0
Zm9ybUVuY29kZShlbmNvZGVyKTsKK30KKworYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQ
Qzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYgZGF0YSkKK3sKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubmF2aWdhdGlvbklEKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnJlcXVlc3QpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGF0YS5kYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhLnN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5NSU1FVHlwZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5lbmNvZGluZ05hbWUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuYmFzZVVSTFN0
cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGF0YS51bnJlYWNoYWJsZVVSTFN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnVzZXJEYXRhKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFwbGF0Zm9ybURlY29kZShkZWNvZGVyLCBkYXRhKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09D
T0EpCisKK3ZvaWQgTG9hZFBhcmFtZXRlcnM6OnBsYXRmb3JtRW5jb2RlKElQQzo6QXJndW1lbnRF
bmNvZGVyJikgY29uc3QKK3sKK30KKworYm9vbCBMb2FkUGFyYW1ldGVyczo6cGxhdGZvcm1EZWNv
ZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBMb2FkUGFyYW1ldGVycyYpCit7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCisKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTG9hZFBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY5OWQxNWNlMDdhZThmYjc5NzM0NzI2MjYxYmQ5OTA4NzkzZDkxMDIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDc0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMb2FkUGFyYW1ldGVyc19oCisjZGVmaW5lIExvYWRQ
YXJhbWV0ZXJzX2gKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiVXNlckRhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgorCitPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKKworbmFtZXNw
YWNlIElQQyB7CitjbGFzcyBBcmd1bWVudERlY29kZXI7CitjbGFzcyBBcmd1bWVudEVuY29kZXI7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgTG9hZFBhcmFtZXRlcnMgeworICAg
IHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgTG9hZFBhcmFtZXRlcnMmKTsKKworICAg
IHZvaWQgcGxhdGZvcm1FbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKKyAgICBz
dGF0aWMgYm9vbCBwbGF0Zm9ybURlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYsIExvYWRQYXJh
bWV0ZXJzJik7CisKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQ7CisKKyAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZTsKKworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOworICAg
IFN0cmluZyBzdHJpbmc7CisgICAgU3RyaW5nIE1JTUVUeXBlOworICAgIFN0cmluZyBlbmNvZGlu
Z05hbWU7CisKKyAgICBTdHJpbmcgYmFzZVVSTFN0cmluZzsKKyAgICBTdHJpbmcgdW5yZWFjaGFi
bGVVUkxTdHJpbmc7CisgICAgU3RyaW5nIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nOwor
CisgICAgdWludDY0X3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBVc2VyRGF0
YSB1c2VyRGF0YTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxOU0RpY3Rp
b25hcnk+IGRhdGFEZXRlY3Rpb25Db250ZXh0OworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIExvYWRQYXJhbWV0ZXJzX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMuaAppbmRleCA0ZTJkYTc2MTkzMTUzZWQ4ZDgw
OWQxODdlMDUyMzE1YzliNzFmN2I0Li5jZWE1ZjAxZDg4YTQ3M2FkNjA2ZDQ0NjEyODQ3MTkxY2Nk
NjJkZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29k
ZXJzTWFjLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01h
Yy5oCkBAIC0zNyw2ICszNyw3IEBAIE9CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OwogT0JKQ19DTEFT
UyBOU0ZvbnQ7CiBPQkpDX0NMQVNTIE5TTnVtYmVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKK09C
SkNfQ0xBU1MgTlNVUkw7CiAKIG5hbWVzcGFjZSBJUEMgewogCkBAIC04Nyw2ICs4OCwxMCBAQCBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBSZXRhaW5QdHI8TlNEYXRlPiYpOwogdm9pZCBl
bmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgTlNEYXRhICopOwogYm9vbCBkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyJiwgUmV0YWluUHRyPE5TRGF0YT4mKTsKIAorLy8gTlNVUkwKK3ZvaWQgZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciYsIE5TVVJMICopOworYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwg
UmV0YWluUHRyPE5TVVJMPiYpOworCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogI2VuZGlmIC8vIEFy
Z3VtZW50Q29kZXJzTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
QXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50
Q29kZXJzTWFjLm1tCmluZGV4IDY0MGU3ZWRkMzQ0MTM5ZGIyMTlhZDFjMzEwNzMwY2ZhMzNmZTk5
ZTEuLjI1NThiNDE4MzNlNjU0MGE0ZTNmMWJjMTRmNjBiZGI4YzI5MGMyZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5tbQpAQCAtNTUsNiArNTUs
NyBAQCBlbnVtIE5TVHlwZSB7CiAgICAgTlNTdHJpbmdUeXBlLAogICAgIE5TRGF0ZVR5cGUsCiAg
ICAgTlNEYXRhVHlwZSwKKyAgICBOU1VSTFR5cGUsCiAgICAgVW5rbm93biwKIH07CiAKQEAgLTg0
LDYgKzg1LDggQEAgc3RhdGljIE5TVHlwZSB0eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCiAgICAg
ICAgIHJldHVybiBOU0RhdGVUeXBlOwogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05T
RGF0YSBjbGFzc11dKQogICAgICAgICByZXR1cm4gTlNEYXRhVHlwZTsKKyAgICBpZiAoW29iamVj
dCBpc0tpbmRPZkNsYXNzOltOU1VSTCBjbGFzc11dKQorICAgICAgICByZXR1cm4gTlNVUkxUeXBl
OwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFVua25vd247CkBAIC0x
MjYsNiArMTI5LDkgQEAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBpZCBv
YmplY3QpCiAgICAgY2FzZSBOU0RhdGFUeXBlOgogICAgICAgICBlbmNvZGUoZW5jb2Rlciwgc3Rh
dGljX2Nhc3Q8TlNEYXRhICo+KG9iamVjdCkpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBO
U1VSTFR5cGU6CisgICAgICAgIGVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxOU1VSTCAqPihv
YmplY3QpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVW5rbm93bjoKICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtMjA3LDYgKzIxMywxMyBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29k
ZXImIGRlY29kZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsdCkKICAgICAgICAgcmVzdWx0ID0gZGF0
YTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIGNhc2UgTlNVUkxUeXBlOiB7Cisg
ICAgICAgIFJldGFpblB0cjxOU1VSTD4gVVJMOworICAgICAgICBpZiAoIWRlY29kZShkZWNvZGVy
LCBVUkwpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXN1bHQgPSBVUkw7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICBjYXNlIFVua25vd246CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MDUsNCAr
NTE4LDE5IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRy
PE5TRGF0YT4mIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBlbmNvZGUoQXJn
dW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBOU1VSTCAqVVJMKQoreworICAgIGVuY29kZShlbmNvZGVy
LCAoQ0ZVUkxSZWYpVVJMKTsKK30KKworYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNv
ZGVyLCBSZXRhaW5QdHI8TlNVUkw+JiByZXN1bHQpCit7CisgICAgUmV0YWluUHRyPENGVVJMUmVm
PiBVUkw7CisgICAgaWYgKCFkZWNvZGUoZGVjb2RlciwgVVJMKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmVzdWx0ID0gYWRvcHROUygoTlNVUkwgKilVUkwubGVha1JlZigpKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggNmE4ZmFjZGY2OThmMGU0NjRiMGZhYzg4
NzBlNzgyMDRkNmYzODY3ZC4uMTFiYjQyMTFkMDMyOWE2NDRjOTNkOTFjZmE3OGMyZmJhMmZhNDhj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMTY0
LDYgKzE2NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxlVGFwQXND
bGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIHsgfQogICAgIHZpcnR1YWwgVUlWaWV3Q29u
dHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQog
I2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBOU0RpY3Rpb25hcnkgKmRh
dGFEZXRlY3Rpb25Db250ZXh0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IEFQSTo6T2JqZWN0KikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5oCmluZGV4IDA4M2MxZjkzNjMzYjgzM2FlZjlkYzM1ZjNmMmM3YWE3ZDBiYmQ5ZTQu
LmQyYWQ2OThiYmVmNmE1MTA4Y2NmMWUxMjAzNmM3Yzc4MjhiMzgxNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtOTcsNyArOTcsMTAgQEAgcHJp
dmF0ZToKICAgICAgICAgUmV0YWluUHRyPE5TQXJyYXk+IGFjdGlvbnNGb3JFbGVtZW50KF9XS0Fj
dGl2YXRlZEVsZW1lbnRJbmZvICosIFJldGFpblB0cjxOU0FycmF5PiBkZWZhdWx0QWN0aW9ucykg
b3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkTm90SGFuZGxlVGFwQXNDbGljayhjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOwogICAgICAgICBVSVZpZXdDb250cm9sbGVyICpwcmVz
ZW50aW5nVmlld0NvbnRyb2xsZXIoKSBvdmVycmlkZTsKLSNlbmRpZgorI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKKworICAgICAgICBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkg
b3ZlcnJpZGU7CisKICAgICAgICAgdm9pZCBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2Vk
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAogICAgICAgICBVSURlbGVnYXRl
JiBtX3VpRGVsZWdhdGU7CkBAIC0xMzAsNiArMTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9v
bCB3ZWJWaWV3RGlkTm90SGFuZGxlVGFwQXNDbGlja0F0UG9pbnQgOiAxOwogICAgICAgICBib29s
IHByZXNlbnRpbmdWaWV3Q29udHJvbGxlckZvcldlYlZpZXcgOiAxOwogI2VuZGlmCisgICAgICAg
IGJvb2wgZGF0YURldGVjdGlvbkNvbnRleHRGb3JXZWJWaWV3IDogMTsKICAgICAgICAgYm9vbCB3
ZWJWaWV3SW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZCA6IDE7CiAKICNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUubW0KaW5kZXggMmJlZDQ0OTE2YWZhZmJmMDQ3ZGU5YmM0YTBmYjAxNGE4ZGNkZTI2MC4uNDQw
OTUzN2FmOTlhZTY1ZDcwMDVjODA1YmMyMGEzNzRhYmMxNzY1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEwMSw2ICsxMDEsNyBAQCB2b2lk
IFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogICAg
IG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWROb3RIYW5kbGVUYXBBc0NsaWNrQXRQb2ludCA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZE5vdEhh
bmRsZVRhcEFzQ2xpY2tBdFBvaW50OildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnByZXNlbnRp
bmdWaWV3Q29udHJvbGxlckZvcldlYlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihfcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyRm9yV2ViVmlldzopXTsKICNlbmRp
ZgorICAgIG1fZGVsZWdhdGVNZXRob2RzLmRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldyA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kYXRhRGV0ZWN0aW9uQ29u
dGV4dEZvcldlYlZpZXc6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0ltYWdlT3JN
ZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkOildOwogCiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC00NDEsNiArNDQyLDE4IEBAIFVJVmlld0NvbnRy
b2xsZXIgKlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKQog
CiAjZW5kaWYKIAorTlNEaWN0aW9uYXJ5ICpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGF0YURldGVj
dGlvbkNvbnRleHQoKQoreworICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2Rz
LmRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7Cisg
ICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
W3N0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oZGVsZWdhdGUpIF9kYXRhRGV0
ZWN0aW9uQ29udGV4dEZvcldlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlld107Cit9CisKIHZv
aWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3SW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdl
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbQppbmRleCAxMGZiYzdlZWYyM2RlNWVhYjAzOGRhNjRiOWI5ZDRlMjM1OTlkYjg4Li41
MDYzOWU1Mzc1MzVmYTJmY2VhZjA4YzcxZjRmZjQ0YWI4ZWRlZDE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0yNCw5
ICsyNCwxMiBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViUHJvY2Vz
c1Byb3h5LmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKIAorI2ltcG9ydCAiQVBJVUlDbGll
bnQuaCIKICNpbXBvcnQgIkRhdGFEZXRlY3Rpb25SZXN1bHQuaCIKKyNpbXBvcnQgIkxvYWRQYXJh
bWV0ZXJzLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKIAogI2ltcG9ydCA8V2ViQ29y
ZS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+
CkBAIC02OCw0ICs3MSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50RmlsdGVyRGlkQmxv
Y2tMb2FkRm9yRnJhbWUoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlCiB9CiAjZW5kaWYKIAor
dm9pZCBXZWJQYWdlUHJveHk6OmFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMoTG9hZFBhcmFtZXRl
cnMmIGxvYWRQYXJhbWV0ZXJzKQoreworICAgIGxvYWRQYXJhbWV0ZXJzLmRhdGFEZXRlY3Rpb25D
b250ZXh0ID0gbV91aUNsaWVudC0+ZGF0YURldGVjdGlvbkNvbnRleHQoKTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1YjA1ZDJmYWRjOTUy
NGQ2MTBmZGEzMWYzMmIxMGI5MTY4YjgxZGE2Li42MGE3NGZkY2M3NmYxMjRhMzgwODQ0YWI3ZDQ3
YjM3NmEwODExMTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNs
dWRlICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNo
ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oIgogI2luY2x1ZGUgIk5h
dGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKQEAgLTkwNiw2ICs5MDcsMTIgQEAgYm9vbCBXZWJQYWdl
UHJveHk6Om1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgVVJMJiB1
cmwsIFNhbmRib3gKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkK
K3ZvaWQgV2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKExvYWRQYXJhbWV0
ZXJzJikKK3sKK30KKyNlbmRpZgorCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCkBAIC05MjAsMTEgKzkyNywx
NyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAg
ICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwogCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5
YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShyZXF1ZXN0LnVybCgpLCBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKKyAg
ICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQo
KTsKKyAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICBsb2FkUGFyYW1l
dGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gKHVpbnQ2NF90KXNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k7CisgICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0
YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwor
ICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNp
b25IYW5kbGUocmVxdWVzdC51cmwoKSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSk7CiAgICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pCiAgICAgICAgIG1fcHJvY2Vzcy0+d2ls
bEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRSZXF1ZXN0KG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpLCByZXF1ZXN0LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCAodWludDY0X3Qpc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBhZGRQbGF0
Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKKworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJ
RCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAg
IHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwpAQCAtOTU5LDEwICs5NzIsMTYgQEAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVVUkxTdHJpbmcsIGNvbnMKIAogICAgIFN0cmluZyByZXNvdXJjZURpcmVjdG9yeVBhdGggPSBy
ZXNvdXJjZURpcmVjdG9yeVVSTC5maWxlU3lzdGVtUGF0aCgpOwogCi0gICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlKHJlc291cmNlRGlyZWN0b3J5UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6
UmVhZE9ubHksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIExvYWRQYXJhbWV0ZXJzIGxv
YWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRp
b24tPm5hdmlnYXRpb25JRCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSBmaWxlVVJM
OworICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSAodWlu
dDY0X3QpU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3c7CisgICAg
bG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2Jq
ZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOworICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZShyZXNvdXJjZURpcmVjdG9yeVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJlYWRP
bmx5LCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBhZGRQbGF0
Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKKwogICAgIG1fcHJvY2Vzcy0+YXNz
dW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChyZXNvdXJjZURpcmVjdG9yeVVSTCk7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKSwgZmlsZVVSTCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgKHVpbnQ2NF90KVNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBVc2VyRGF0YShwcm9j
ZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3Qo
bG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVz
c1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwpAQCAt
OTgyLDggKzEwMDEsMTcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojps
b2FkRGF0YShBUEk6OkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgTUkKICAgICBpZiAoIWlzVmFs
aWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAorICAgIExvYWRQYXJhbWV0
ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmRhdGEgPSBkYXRh
LT5kYXRhUmVmZXJlbmNlKCk7CisgICAgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUgPSBNSU1FVHlw
ZTsKKyAgICBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUgPSBlbmNvZGluZzsKKyAgICBsb2Fk
UGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nID0gYmFzZVVSTDsKKyAgICBsb2FkUGFyYW1ldGVycy51
c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhKS5nZXQoKSk7CisgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1l
dGVycyk7CisKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVS
TCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShuYXZp
Z2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgZGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBNSU1FVHlwZSwg
ZW5jb2RpbmcsIGJhc2VVUkwsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKHVzZXJEYXRhKS5nZXQoKSkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsK
ICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0
dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CkBAIC0xMDA0LDggKzEwMzIsMTYgQEAgUmVmUHRyPEFQ
STo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyhjb25zdCBTdHJpbmcm
IGh0bWxTdHJpbmcsIGMKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dl
YlByb2Nlc3MoKTsKIAorICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxv
YWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOwor
ICAgIGxvYWRQYXJhbWV0ZXJzLnN0cmluZyA9IGh0bWxTdHJpbmc7CisgICAgbG9hZFBhcmFtZXRl
cnMuZW5jb2RpbmdOYW1lID0gQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKTsKKyAgICBsb2FkUGFy
YW1ldGVycy5iYXNlVVJMU3RyaW5nID0gYmFzZVVSTDsKKyAgICBsb2FkUGFyYW1ldGVycy51c2Vy
RGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhKS5nZXQoKSk7CisgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVy
cyk7CisKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVSTCk7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkSFRNTFN0cmluZyhu
YXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaHRtbFN0cmluZywgYmFzZVVSTCwgVXNlckRhdGEo
cHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKSksIG1f
cGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTdHJp
bmcobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZl
bmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwpA
QCAtMTAzMyw5ICsxMDY5LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRN
TFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAgaWYgKG1f
bWFpbkZyYW1lKQogICAgICAgICBtX21haW5GcmFtZS0+c2V0VW5yZWFjaGFibGVVUkwodW5yZWFj
aGFibGVVUkwpOwogCisgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CisgICAgbG9h
ZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gMDsKKyAgICBsb2FkUGFyYW1ldGVycy5zdHJpbmcg
PSBodG1sU3RyaW5nOworICAgIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcgPSBiYXNlVVJM
OworICAgIGxvYWRQYXJhbWV0ZXJzLnVucmVhY2hhYmxlVVJMU3RyaW5nID0gdW5yZWFjaGFibGVV
Ukw7CisgICAgbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcgPSBt
X2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkw7CisgICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEg
PSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSku
Z2V0KCkpOworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwor
CiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGJhc2VVUkwpOwogICAg
IG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCh1bnJlYWNoYWJsZVVSTCk7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJuYXRlSFRNTFN0
cmluZyhodG1sU3RyaW5nLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCwgbV9mYWlsaW5nUHJvdmlz
aW9uYWxMb2FkVVJMLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcobG9hZFBhcmFtZXRlcnMpLCBt
X3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsK
IH0KIApAQCAtMTA1MCw3ICsxMDk1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUGxhaW5U
ZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBBUEk6Ok9iamVjdCogdXNlckRhCiAgICAg
YXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1f
cGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtV
UkwoKS5zdHJpbmcoKSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkxvYWRQbGFpblRleHRTdHJpbmcoc3RyaW5nLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdlSUQpOworICAgIExvYWRQ
YXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25J
RCA9IDA7CisgICAgbG9hZFBhcmFtZXRlcnMuc3RyaW5nID0gc3RyaW5nOworICAgIGxvYWRQYXJh
bWV0ZXJzLk1JTUVUeXBlID0gQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIik7CisgICAgbG9hZFBh
cmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1Rv
SGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMo
bG9hZFBhcmFtZXRlcnMpOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpMb2FkU3RyaW5nKGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+
cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKQEAgLTEwNjUsNyArMTExNywxNSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJj
aGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VM
b2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQ
SVJlcXVlc3RVUkwodHJhbnNhY3Rpb24sIGJsYW5rVVJMKCkuc3RyaW5nKCkpOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkV2ViQXJjaGl2ZURhdGEod2ViQXJj
aGl2ZURhdGEtPmRhdGFSZWZlcmVuY2UoKSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBMb2FkUGFy
YW1ldGVycyBsb2FkUGFyYW1ldGVyczsKKyAgICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQg
PSAwOworICAgIGxvYWRQYXJhbWV0ZXJzLmRhdGEgPSB3ZWJBcmNoaXZlRGF0YS0+ZGF0YVJlZmVy
ZW5jZSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlID0gQVNDSUlMaXRlcmFsKCJhcHBs
aWNhdGlvbi94LXdlYmFyY2hpdmUiKTsKKyAgICBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUg
PSBBU0NJSUxpdGVyYWwoInV0Zi0xNiIpOworICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0g
VXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdl
dCgpKTsKKyAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKKwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEobG9hZFBhcmFt
ZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCku
c3RhcnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDQwNjYxM2E4NDM2M2E1MGEyOTg0MTM1OWI5ZjVjZGEyYjEwMjZkYTQuLmQzMDZlYzg0ODUyMTIz
ZDYxNzY4NzgxYjc0YTM4OGY4NGUxNWI2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTIwNSw2ICsyMDUsNyBAQCBzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsK
IHN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIHN0cnVjdCBFZGl0aW5nUmFuZ2U7CiBzdHJ1Y3QgRWRp
dG9yU3RhdGU7CitzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1l
bnVEYXRhOwogc3RydWN0IFByaW50SW5mbzsKIHN0cnVjdCBXZWJQb3B1cEl0ZW07CkBAIC0zNjcs
NiArMzY4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbG9zZVBhZ2UoYm9vbCBzdG9wUmVzcG9u
c2l2ZW5lc3NUaW1lcik7CiAKKyAgICB2b2lkIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMoTG9h
ZFBhcmFtZXRlcnMmKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkUmVxdWVzdChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hv
dWxkQWxsb3dFeHRlcm5hbFNjaGVtZXMsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIp
OwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVVSTCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTCwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhID0gbnVsbHB0cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZERhdGEo
QVBJOjpEYXRhKiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
ZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVl
dEFzc2lzdGFudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0
QXNzaXN0YW50LmgKaW5kZXggZTA1YWVlMDI1YjllZWY3Y2JmNGFmNWNiYjI5ZDY0Njg2NDFiODU4
MS4uYzZiNTRkZGJhNTFkODgyZGJiMmE1YjU3ODVjY2EwZDA2ZmJlZTRkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgK
QEAgLTI1LDEwICsyNSwxMCBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogCi0jaW1wb3J0ICJEYXRh
RGV0ZWN0b3JzVUlTUEkuaCIKICNpbXBvcnQgIkdlc3R1cmVUeXBlcy5oIgogI2ltcG9ydCAiV0tB
Y3Rpb25TaGVldC5oIgogI2ltcG9ydCA8VUlLaXQvVUlQb3BvdmVyQ29udHJvbGxlci5oPgorI2lt
cG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3JzVUlTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDYyNjBkZTQ2
MTFhOGVhZGE1Y2MxNTI5YzEzM2M3NTFjNjgwNjNmYzUuLmIzZTQ5ODI1NDBiY2NhZTE5YjcxMjhj
YTY0OGRkM2E2MGIxMGI0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0yOSw3ICsyOSw2IEBACiAj
aWYgUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgotI2ltcG9ydCAiRGF0
YURldGVjdG9yc1VJU1BJLmgiCiAjaW1wb3J0ICJFZGl0aW5nUmFuZ2UuaCIKICNpbXBvcnQgIk1h
bmFnZWRDb25maWd1cmF0aW9uU1BJLmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50
LmgiCkBAIC02NSw2ICs2NCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0
b3JzQ29yZVNQSS5oPgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3JzVUlTUEkuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRmxvYXRRdWFkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGF0aC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI3NjQ2NjE3NjMzNDYxMWYyYjAzMGU0
NTllZjcxNmI4NmNlZGJhMzEuLmZhNjhhYTE3NGYyZmFhNjU2N2E2NTU5MTAyOGRhYWFkMDk0NTdj
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTU5Niw2ICs1OTYsOSBAQAogCQkyOUFEMzA5NjE2NEI0QzkzMDA3MkRFQTkgLyog
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gKi87IH07CiAJCTI5Q0Q1NUFBMTI4RTI5NEYwMDEz
M0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1
IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggKi87IH07CiAJCTI5Q0Q1NUFC
MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0Q1NUE5MTI4
RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAqLzsg
fTsKKwkJMkQxMDg3NjAxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTA4NzVFMUQyQzU3
M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgKi87IH07CisJCTJEMTA4NzYxMUQyQzU3
M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxMDg3NUYxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJh
bWV0ZXJzLmggKi87IH07CisJCTJEMTA4NzYzMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1l
dGVyc0NvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQxMDg3NjIxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzQ29jb2EubW0gKi87
IH07CiAJCTJEMTI1QzVFMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTI1QzVD
MTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJMkQx
MjVDNUYxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTI1QzVEMTg1N0VB
MDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gKi87IH07CiAJCTJEMUI1
RDVEMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQx
QjVENUIxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CkBAIC02ODcsNiArNjkwLDcgQEAKIAkJMkRBRjA2RDYxOEJEMUE0NzAw
ODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUYwNkQ0MThCRDFBNDcwMDgxQ0VCMSAv
KiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggKi87IH07CiAJCTJEQUYwNkQ3MThCRDFB
NDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjA2RDUxOEJEMUE0NzAwODFD
RUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gKi87IH07CiAJCTJEQUY0RkZC
MUI2MzYxODEwMDYwMTNENiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjRGRkExQjYzNjE4MTAwNjAx
M0Q2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAgKi87IH07CisJCTJEQzRDRjdCMUQyREUy
NEIwMEVDQ0M5NCAvKiBXZWJQYWdlQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyREM0Q0Y3QTFEMkRFMjRCMDBFQ0NDOTQgLyogV2ViUGFnZUNv
Y29hLm1tICovOyB9OwogCQkyREM2RDlDMzE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29u
dGVudFByb3ZpZGVyUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEQzZEOUMxMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50
UHJvdmlkZXJSZWdpc3RyeS5oICovOyB9OwogCQkyREM2RDlDNDE4QzQ0QTYxMDA0M0JBRDQgLyog
V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyogV0tX
ZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gKi87IH07CiAJCTJERDEyQTA4MUE4MTc3
RjMwMDJDNzRFNiAvKiBXS1BhZ2VSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkREMTJBMDcxQTgxNzdGMzAwMkM3
NEU2IC8qIFdLUGFnZVJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzYsNyArMTc0MCw2IEBACiAJCUNF
MTFBRDUyMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8q
IENvZGVTaWduaW5nLmggKi87IH07CiAJCUNFMUEwQkQyMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3Nl
cnRpb25TZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJ
LmggKi87IH07CiAJCUNFMUEwQkQzMUE0OEU2QzYwMDU0RUY3NCAvKiBDb3JlUERGU1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJDRDFBNDhF
NkM2MDA1NEVGNzQgLyogQ29yZVBERlNQSS5oICovOyB9OwotCQlDRTFBMEJENDFBNDhFNkM2MDA1
NEVGNzQgLyogRGF0YURldGVjdG9yc1VJU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJDRTFBNDhFNkM2MDA1NEVGNzQgLyogRGF0YURldGVj
dG9yc1VJU1BJLmggKi87IH07CiAJCUNFMUEwQkQ1MUE0OEU2QzYwMDU0RUY3NCAvKiBNYW5hZ2Vk
Q29uZmlndXJhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0UxQTBCQ0YxQTQ4RTZDNjAwNTRFRjc0IC8qIE1hbmFnZWRDb25maWd1cmF0aW9u
U1BJLmggKi87IH07CiAJCUNFMUEwQkQ2MUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQwMUE0OEU2
QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDcxQTQ4RTZDNjAwNTRFRjc0
IC8qIFRleHRJbnB1dFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oICovOyB9
OwpAQCAtMjYwMSw2ICsyNjA0LDkgQEAKIAkJMjlDRDU1QTkxMjhFMjk0RjAwMTMzQzg1IC8qIFdL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMDAzNTIyMUJDNzQxNDgwMERBODcxNiAvKiBE
ZXByZWNhdGVkUERGUGx1Z2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERl
cHJlY2F0ZWRQREZQbHVnaW4uaDsgcGF0aCA9IFBERi9EZXByZWNhdGVkUERGUGx1Z2luLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMDAzNTIzMUJDNzQxNDgwMERBODcxNiAvKiBE
ZXByZWNhdGVkUERGUGx1Z2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gRGVwcmVjYXRlZFBERlBsdWdpbi5tbTsgcGF0aCA9IFBERi9EZXByZWNhdGVkUERGUGx1
Z2luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDEwODc1RTFEMkM1NzNFMDBC
ODVGODIgLyogTG9hZFBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTG9hZFBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyRDEwODc1RjFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9hZFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkQxMDg3NjIxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJz
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2FkUGFy
YW1ldGVyc0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDEyNUM1QzE4
NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdHZXN0dXJlQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDEyNUM1RDE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVD
b250cm9sbGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
Vmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDFCNUQ1QTE4NTg2NTk5MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MDMsNiArMjcwOSw3IEBACiAJCTJEQUYwNkQ1MThCRDFB
NDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5tbTsgcGF0aCA9IGlvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyREFGMDZEODE4QkQyM0JBMDA4MUNFQjEgLyogU21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyLm1lc3NhZ2VzLmluOyBwYXRoID0gaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQUY0
RkZBMUI2MzYxODEwMDYwMTNENiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRDNENGN0ExRDJERTI0QjAwRUNDQzk0IC8q
IFdlYlBhZ2VDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYlBhZ2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRDNkQ5QzEx
OEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJl
Z2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQzZEOUMyMThDNDRBNjEw
MDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJl
Z2lzdHJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREQxMkEwNzFBODE3N0Yz
MDAyQzc0RTYgLyogV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4NDIsNyArMzg0OSw2IEBACiAJCUNFMTFBRDUx
MUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb2RlU2lnbmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXNzZXJ0aW9uU2VydmljZXNTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCQ0QxQTQ4RTZDNjAwNTRFRjc0IC8qIENvcmVQ
REZTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZVBERlNQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRTFBMEJDRTFBNDhFNkM2MDA1NEVGNzQgLyog
RGF0YURldGVjdG9yc1VJU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERh
dGFEZXRlY3RvcnNVSVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJD
RjFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUQ0NTUEkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1
dFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0SW5wdXRTUEkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0ODQsNiArNDQ5MCw4IEBACiAJCQkJQkND
RjZCMjMxMkM5M0U3QTAwOEY5QzM1IC8qIEltYWdlT3B0aW9ucy5oICovLAogCQkJCTFBOTJEQzEy
MTJGOEJBQjkwMDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0LmNwcCAqLywKIAkJCQkxQTkyREMx
MDEyRjhCQTQ2MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29udGV4dC5oICovLAorCQkJCTJEMTA4NzVF
MUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgKi8sCisJCQkJMkQxMDg3NUYx
RDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmggKi8sCiAJCQkJMkQ1MDM2NkExQkNE
RTE3OTAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oICovLAogCQkJCUMwMkJGRjE1
MTI1MTRGRDgwMDlDQ0JFQSAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkJMzFF
QTI1RDMxMzRGNzhENjAwNUIxNDUyIC8qIE5hdGl2ZVdlYk1vdXNlRXZlbnQuaCAqLywKQEAgLTQ4
OTksNiArNDkwNyw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyRDI5RUNDRTE5MkYyQzJFMDA5
ODRCNzggLyogUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJCQkJ
MkQyOUVDQ0YxOTJGMkMyRTAwOTg0Qjc4IC8qIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNo
TW9uaXRvci5tbSAqLywKKwkJCQkyREM0Q0Y3QTFEMkRFMjRCMDBFQ0NDOTQgLyogV2ViUGFnZUNv
Y29hLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC01MjM4LDYgKzUyNDcsNyBAQAogCQkJCTM3QkVDNERFMTk0OTE0ODYwMDhCNDI4
NiAvKiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tICovLAogCQkJCUM1NUY5MTZDMUM1
OTVFNDQwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0LmggKi8sCiAJCQkJQzU1RjkxNkQx
QzU5NUU0NDAwMjlFOTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQubW0gKi8sCisJCQkJMkQxMDg3
NjIxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzQ29jb2EubW0gKi8sCiAJCQkJMUFC
MUY3OEUxRDFCMzRBNjAwN0M5QkQxIC8qIFdlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tICov
LAogCQkJCTM3QzRDMDkyMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkuaCAqLywKIAkJCQkz
N0M0QzA5MTE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5Lm1tICovLApAQCAtNzE2MCw3ICs3
MTcwLDYgQEAKIAkJCQlDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2Vydmlj
ZXNTUEkuaCAqLywKIAkJCQlDREEwNDFGMzFBQ0UyMTA1MDA0QTEzRUMgLyogQmFja0JvYXJkU2Vy
dmljZXNTUEkuaCAqLywKIAkJCQlDRTFBMEJDRDFBNDhFNkM2MDA1NEVGNzQgLyogQ29yZVBERlNQ
SS5oICovLAotCQkJCUNFMUEwQkNFMUE0OEU2QzYwMDU0RUY3NCAvKiBEYXRhRGV0ZWN0b3JzVUlT
UEkuaCAqLywKIAkJCQlDRTFBMEJDRjFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3Vy
YXRpb25TUEkuaCAqLywKIAkJCQk1NzlEMThCNzFDQ0ZFMzRCMDBCMTk3NEMgLyogUGhvdG9zU1BJ
LmggKi8sCiAJCQkJQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovLApAQCAt
NzQ2Myw3ICs3NDcyLDYgQEAKIAkJCQk1MTJBOTc2QTE4MEUwOUI4MDAzOUExNDkgLyogRGF0YWJh
c2VQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwMzJGMUUxODBG
NzkxNzAwOTYxQkI3IC8qIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDNTVGOTE3MTFDNTk2NzZFMDAyOUU5MkQgLyogRGF0YURldGVj
dGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0UxQTBCRDQxQTQ4RTZDNjAwNTRFRjc0
IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNzUzODAxODNC
RTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzODkx
QjZDMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUMxNDI3MDIxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkLmggaW4gSGVh
ZGVycyAqLywKQEAgLTc4NTUsNiArNzg2Myw3IEBACiAJCQkJN0M4NUZEN0MxOTM0MTVBODAwMDE3
N0M0IC8qIFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdD
ODVGRDgwMTkzNDE2NjUwMDAxNzdDNCAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDRDU5OEFDMTEyQjdGREYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0b3Jl
LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDEwODc2MTFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBh
cmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDk3MTBGNDM3QUYwMDU4QzE1QSAv
KiBXZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTA0M0EwOTEyNEQxMUE5MDBGRkJG
QjUgLyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQzRjZB
MTI1MTREOEIwMEZGQkZCNSAvKiBXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTg4ODAsNiArODg4OSw3IEBACiAJCQkJQzU5QzRBNTgxOEI4MTE3NDAwN0JE
Q0I2IC8qIEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
NUU3NzI3MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNFRTk2NkMxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMkQxMDg3NjMxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzQ29j
b2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMUEzMTczNTEzNENFQTgwMDA3QzlBNEYgLyogQXR0
cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMkY1ODk2MTJBODgzODgwMDYy
OTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMkY1ODk4MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04OTQwLDYgKzg5NTAsNyBAQAogCQkJCTFBNjQy
Mjk5MTJERDAyOTIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzI2NTIxNjExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQ
cm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTY0MjMwODEyREQwOUVCMDBDQUFFMkMgLyog
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQky
REM0Q0Y3QjFEMkRFMjRCMDBFQ0NDOTQgLyogV2ViUGFnZUNvY29hLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJOENGRUNFOTQxNDkwRjE0MDAwMkFBQTMyIC8qIEVkaXRvclN0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQjE1QTg0MTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxp
dGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUE1NzVGQTE0OTZCNTI2MDBBNEVFMDYgLyog
RXZlbnREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTA2Myw2ICs5MDc0LDcgQEAK
IAkJCQkxQTJEODJBNjEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RQcm94eS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTJEODJBODEyN0Y0RUFCMDAxRUI5NjIgLyogTlBSZW1vdGVPYmplY3RN
YXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyMTYxQjExMUYzNzY2NDAwOEFEMEY1IC8qIE5Q
UnVudGltZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyRDEwODc2MDFEMkM1NzNF
MDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyMTYy
QjAxMUYzODk3MTAwOEFEMEY1IC8qIE5QUnVudGltZVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTJEODRBNDEyN0Y2QUQxMDAxRUI5NjIgLyogTlBWYXJpYW50RGF0YS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzhBQ0ExNDE2NjcwRDg5MDA0QzE5NDEgLyogT2JqQ09iamVjdEdy
YXBoLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDJkNzEyYmM3MGRlMWFlYTViMGE0Njk3ZTE2MjNhODU1MjMzYzg0MmYuLjZhZjA3NmU4M2Uz
MGM0ZWE3ZWZiODdlODhiMWE0NTlkZDk5ZTVlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCkBAIC0xNjI5LDcgKzE2MjksNyBAQCBSZW1vdGVBWE9iamVjdFJlZiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiAgICAgcmV0dXJuIHdl
YlBhZ2UtPmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsKIH0KICAgICAKLU5TQ2FjaGVkVVJM
UmVzcG9uc2UqIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgTlNDYWNoZWRVUkxSZXNwb25zZSog
cmVzcG9uc2UpIGNvbnN0CitOU0NhY2hlZFVSTFJlc3BvbnNlICpXZWJGcmFtZUxvYWRlckNsaWVu
dDo6d2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKSBjb25zdAogewogICAgIFdlYlBh
Z2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpAQCAtMTYz
OCw2ICsxNjM4LDE1IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuCiAgICAgcmV0dXJuIHdlYlBh
Z2UtPmluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KCkuc2hvdWxkQ2FjaGVSZXNwb25z
ZSh3ZWJQYWdlLCBtX2ZyYW1lLCBpZGVudGlmaWVyKSA/IHJlc3BvbnNlIDogbmlsOwogfQogCitO
U0RpY3Rpb25hcnkgKldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkYXRhRGV0ZWN0aW9uQ29udGV4dCgp
Cit7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXdl
YlBhZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gd2ViUGFnZS0+ZGF0YURl
dGVjdGlvbkNvbnRleHQoKTsKK30KKwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiBib29s
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudChjb25z
dCBTdHJpbmcmIC8qbWltZVR5cGUqLykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCBlMjA3NDA0NTk3ODEwNTllMGU4YzMzMTA4MGJjY2I5MjMyMjFhNjk0Li5lZTZiZWJk
Njg0OWFmNWQyZTQ4YzNmOTk0ZWRjMjI2M2I1MTYyZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0yMjEsNiArMjIxLDggQEAgcHJpdmF0ZToKICAgICBSZW1vdGVBWE9iamVj
dFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgTlND
YWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBjb25z
dCBvdmVycmlkZTsKKworICAgIE5TRGljdGlvbmFyeSAqZGF0YURldGVjdGlvbkNvbnRleHQoKSBv
dmVycmlkZTsKICNlbmRpZgogCiAgICAgYm9vbCBzaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVu
dChjb25zdCBTdHJpbmcmIC8qbWltZVR5cGUqLykgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OGFlYzY0ZDU5NTA5NjE5MzY4MzFiZWU1YzI0ZjU5N2Y1ODYwOTk3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYlBhZ2VDb2NvYS5tbQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJXZWJQYWdlLmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdl
YlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0
ZXJzJiBsb2FkUGFyYW1ldGVycykKK3sKKyAgICBtX2RhdGFEZXRlY3Rpb25Db250ZXh0ID0gbG9h
ZFBhcmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTgzMTNjMTE4NGU1NmQ4Y2Y1ZjliM2Nj
NDQ5ODdkZmM5ODVkZjkzNy4uNzBiMTJhZGMwYzhlOTA3NGQ0NzBkNTkwODFiMDIzYTNmZmEyMDg5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkLmgiCisjaW5jbHVkZSAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKICNpbmNsdWRlICJOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKQEAgLTExMzksMjEgKzExNDAsMjkgQEAg
dm9pZCBXZWJQYWdlOjpsb2FkVVJMSW5GcmFtZShjb25zdCBTdHJpbmcmIHVybCwgdWludDY0X3Qg
ZnJhbWVJRCkKICAgICBmcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWQoRnJhbWVMb2Fk
UmVxdWVzdChmcmFtZS0+Y29yZUZyYW1lKCksIFJlc291cmNlUmVxdWVzdChVUkwoVVJMKCksIHVy
bCkpLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdykpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHVpbnQ2NF90IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3ksIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2
b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQ
YXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKK3sKK30KKyNlbmRpZgorCit2b2lkIFdlYlBhZ2U6
OmxvYWRSZXF1ZXN0KGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKIHsKICAg
ICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcih0aGlzKTsKIAotICAgIG1fcGVu
ZGluZ05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKKyAgICBtX3BlbmRpbmdOYXZpZ2F0aW9u
SUQgPSBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQ7CiAKLSAgICBtX3NhbmRib3hFeHRlbnNp
b25UcmFja2VyLmJlZ2luTG9hZChtX21haW5GcmFtZS5nZXQoKSwgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSk7CisgICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci5iZWdpbkxvYWQobV9tYWluRnJh
bWUuZ2V0KCksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogCiAgICAg
Ly8gTGV0IHRoZSBJbmplY3RlZEJ1bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0aGUg
bG9hZCwgcGFzc2luZyB0aGUgdXNlciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcwogICAgIC8vIHRv
IGFsbCB0aGUgY2xpZW50IHRvIHNldCB1cCBhbnkgbmVlZGVkIHN0YXRlLgotICAgIG1fbG9hZGVy
Q2xpZW50LndpbGxMb2FkVVJMUmVxdWVzdCh0aGlzLCByZXF1ZXN0LCBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KSk7CisgICAgbV9sb2FkZXJDbGllbnQud2lsbExvYWRVUkxSZXF1ZXN0KHRoaXMsIGxvYWRQYXJh
bWV0ZXJzLnJlcXVlc3QsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHMobG9hZFBhcmFtZXRlcnMudXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKworICAg
IHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAogICAg
IC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4KLSAgICBGcmFtZUxvYWRSZXF1ZXN0IGZy
YW1lTG9hZFJlcXVlc3QobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZXF1ZXN0LCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0gICAgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBleHRlcm5hbFVSTHNQb2xpY3kgPSBzdGF0aWNfY2FzdDxTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5PihzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAg
ICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QobV9tYWluRnJhbWUtPmNvcmVGcmFt
ZSgpLCBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OjpTaG91bGROb3RBbGxvdyk7CisgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBleHRl
cm5hbFVSTHNQb2xpY3kgPSBzdGF0aWNfY2FzdDxTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
Pihsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKICAgICBmcmFt
ZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koZXh0ZXJuYWxVUkxz
UG9saWN5KTsKIAogICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLmxvYWRSZXF1ZXN0
KGZyYW1lTG9hZFJlcXVlc3QpOwpAQCAtMTE3OSw3ICsxMTg4LDcgQEAgdm9pZCBXZWJQYWdlOjps
b2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2hhcmUKICAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWQoRnJh
bWVMb2FkUmVxdWVzdChtX21haW5GcmFtZS0+Y29yZUZyYW1lKCksIHJlcXVlc3QsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBzdWJzdGl0dXRlRGF0YSkpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmxvYWRTdHJpbmcodWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFVSTCYg
YmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhKQordm9pZCBXZWJQYWdlOjpsb2FkU3RyaW5nSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3Qg
VVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCiB7CiAgICAgaWYgKCFodG1sU3RyaW5nLmlzTnVsbCgpICYmIGh0bWxTdHJpbmcu
aXM4Qml0KCkpIHsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaHRtbFN0
cmluZy5jaGFyYWN0ZXJzOCgpKSwgaHRtbFN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihMQ2hhcikp
OwpAQCAtMTE5MCwzOCArMTE5OSwzMyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRTdHJpbmcodWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0CiAgICAgfQog
fQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRhKGNvbnN0IExvYWRQYXJh
bWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKLSAgICBVUkwgYmFzZVVSTCA9IGJhc2VV
UkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgYmFzZVVSTFN0cmlu
Zyk7Ci0gICAgbG9hZERhdGFJbXBsKG5hdmlnYXRpb25JRCwgc2hhcmVkQnVmZmVyLCBNSU1FVHlw
ZSwgZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgdXNlckRhdGEpOwotfQorICAgIHBsYXRm
b3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAotdm9pZCBXZWJQ
YWdlOjpsb2FkSFRNTFN0cmluZyh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
aHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCi17Ci0gICAgVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/
IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGJhc2VVUkxTdHJpbmcpOwotICAgIGxvYWRTdHJpbmco
bmF2aWdhdGlvbklELCBodG1sU3RyaW5nLCBBU0NJSUxpdGVyYWwoInRleHQvaHRtbCIpLCBiYXNl
VVJMLCBVUkwoKSwgdXNlckRhdGEpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkp
OworICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5
KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5n
KTsKKyAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBzaGFyZWRC
dWZmZXIsIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05h
bWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZTo6bG9hZFN0cmluZyhjb25zdCBM
b2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXRlcnMpCiB7Ci0gICAgVVJMIGJhc2VVUkwgPSBiYXNl
VVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGJhc2VVUkxTdHJp
bmcpOwotICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9IHVucmVhY2hhYmxlVVJMU3RyaW5nLmlzRW1w
dHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCB1bnJlYWNoYWJsZVVSTFN0cmluZyk7Ci0gICAgVVJM
IHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMID0gcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcu
aXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3Ry
aW5nKTsKLSAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lv
bmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMKTsKLSAg
ICBsb2FkU3RyaW5nKDAsIGh0bWxTdHJpbmcsIEFTQ0lJTGl0ZXJhbCgidGV4dC9odG1sIiksIGJh
c2VVUkwsIHVucmVhY2hhYmxlVVJMLCB1c2VyRGF0YSk7Ci0gICAgbV9tYWluRnJhbWUtPmNvcmVG
cmFtZSgpLT5sb2FkZXIoKS5zZXRQcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCh7
IH0pOwotfQorICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0
ZXJzKTsKIAotdm9pZCBXZWJQYWdlOjpsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCi17Ci0gICAgbG9hZFN0cmluZygwLCBz
dHJpbmcsIEFTQ0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIpLCBibGFua1VSTCgpLCBVUkwoKSwgdXNl
ckRhdGEpOworICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5p
c0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJM
U3RyaW5nKTsKKyAgICBsb2FkU3RyaW5nSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQs
IGxvYWRQYXJhbWV0ZXJzLnN0cmluZywgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGJhc2VVUkws
IFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9h
ZFdlYkFyY2hpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2ViQXJjaGl2ZURhdGEs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhU
TUxTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHdlYkFyY2hpdmVEYXRhLmRhdGEoKSksIHdlYkFy
Y2hpdmVEYXRhLnNpemUoKSAqIHNpemVvZih1aW50OF90KSk7Ci0gICAgbG9hZERhdGFJbXBsKDAs
IHNoYXJlZEJ1ZmZlciwgQVNDSUlMaXRlcmFsKCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiKSwg
QVNDSUlMaXRlcmFsKCJ1dGYtMTYiKSwgYmxhbmtVUkwoKSwgVVJMKCksIHVzZXJEYXRhKTsKKyAg
ICBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CisKKyAg
ICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8g
YmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZyk7Cisg
ICAgVVJMIHVucmVhY2hhYmxlVVJMID0gbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVVUkxTdHJp
bmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVucmVhY2hh
YmxlVVJMU3RyaW5nKTsKKyAgICBVUkwgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwgPSBsb2FkUGFy
YW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6
IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcp
OworICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxM
b2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwocHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwpOworICAgIGxv
YWRTdHJpbmdJbXBsKDAsIGxvYWRQYXJhbWV0ZXJzLnN0cmluZywgQVNDSUlMaXRlcmFsKCJ0ZXh0
L2h0bWwiKSwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRh
KTsKKyAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lvbmFs
TG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKHsgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bmF2aWdh
dGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIEludFBvaW50
IGRvY3VtZW50UG9pbnQsIEludFBvaW50IHNjcmVlblBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZmFlYjI1ZDc4NDU3ZTc1Y2E2MWMyOWY2
YWU4MGRkNmE4NTNjNDYyNC4uYWU1MWNmZWUzZWRmMzc3MzU2NGFlZTRjODVkYzFiZGI4MDY3YTZh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0x
OTIsNiArMTkyLDcgQEAgc3RydWN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTsKIHN0cnVjdCBF
ZGl0aW5nUmFuZ2U7CiBzdHJ1Y3QgRWRpdG9yU3RhdGU7CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb247CitzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUHJpbnRJ
bmZvOwogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZTsKQEAgLTg1Myw2ICs4NTQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRV
c2VQREZQbHVnaW4oKSBjb25zdDsKICAgICBib29sIHBkZlBsdWdpbkVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX3BkZlBsdWdpbkVuYWJsZWQ7IH0KICAgICB2b2lkIHNldFBERlBsdWdpbkVuYWJs
ZWQoYm9vbCBlbmFibGVkKSB7IG1fcGRmUGx1Z2luRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKworICAg
IE5TRGljdGlvbmFyeSAqZGF0YURldGVjdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGFEZXRlY3Rpb25Db250ZXh0LmdldCgpOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgc2F2ZVBERlRv
RmlsZUluRG93bmxvYWRzRm9sZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxvbmcgc2l6ZSk7CkBAIC05OTgsMTggKzEwMDEsMTcgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAogICAgIHZvaWQgbG9hZERhdGFJbXBs
KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29u
c3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZhaWxpbmdVUkws
IGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkU3RyaW5nKHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVz
ZXJEYXRhJik7CisgICAgdm9pZCBsb2FkU3RyaW5nSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0
YSYpOwogCiAgICAgYm9vbCBwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKCk7Ci0gICAgdm9p
ZCBsb2FkUmVxdWVzdCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIHVpbnQ2NF90IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBs
b2FkRGF0YSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25z
dCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkSFRNTFN0
cmluZyh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29u
c3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgbG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJh
c2VVUkwsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFN0cmluZyYgcHJvdmlz
aW9uYWxMb2FkRXJyb3JVUkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkUGxhaW5U
ZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2Fk
V2ViQXJjaGl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgVXNlckRhdGEm
KTsKKyAgICB2b2lkIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQ
YXJhbWV0ZXJzJik7CisgICAgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBMb2FkUGFyYW1ldGVycyYp
OworICAgIHZvaWQgbG9hZERhdGEoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIGxv
YWRTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIGxvYWRBbHRlcm5hdGVI
VE1MU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERG
TGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9p
bnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogICAgIHZv
aWQgcmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBi
b29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYpOwogICAgIHZvaWQgZ29Gb3J3YXJkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3Qp
OwpAQCAtMTI4MCw2ICsxMjgyLDggQEAgcHJpdmF0ZToKIAogICAgIFZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOwogCisgICAgUmV0YWlu
UHRyPE5TRGljdGlvbmFyeT4gbV9kYXRhRGV0ZWN0aW9uQ29udGV4dDsKKwogI2VsaWYgSEFWRShB
Q0NFU1NJQklMSVRZKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpKQogICAgIEdS
ZWZQdHI8V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3Q+IG1fYWNjZXNzaWJpbGl0eU9iamVjdDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgppbmRleCAzZGU0Zjc1ZWY0OWM2NjRhNjc3YzY3YjBhNDI1ODFjYTdi
YWIyZmIzLi5iZTU0NmMxYzhmMjBiYTBmYTFhNGUzNjM4MzYwYzg0ZDI1ZjAyNTY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgpAQCAtMTMyLDEyICsxMzIsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNl
aXZlciB7CiAgICAgVHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAogICAgIExvYWRVUkxJbkZy
YW1lKFN0cmluZyB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgTG9hZFJlcXVlc3QodWludDY0
X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgdWludDY0
X3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKLSAgICBMb2FkRGF0YSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIElQQzo6RGF0YVJlZmVyZW5j
ZSBkYXRhLCBTdHJpbmcgTUlNRVR5cGUsIFN0cmluZyBlbmNvZGluZywgU3RyaW5nIGJhc2VVUkws
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgTG9hZEhUTUxTdHJpbmcodWludDY0X3Qg
bmF2aWdhdGlvbklELCBTdHJpbmcgaHRtbFN0cmluZywgU3RyaW5nIGJhc2VVUkwsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpCi0gICAgTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoU3RyaW5nIGh0
bWxTdHJpbmcsIFN0cmluZyBiYXNlVVJMLCBTdHJpbmcgdW5yZWFjaGFibGVVUkwsIFN0cmluZyBw
cm92aXNpb25hbExvYWRFcnJvclVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBM
b2FkUGxhaW5UZXh0U3RyaW5nKFN0cmluZyBzdHJpbmcsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCi0gICAgTG9hZFdlYkFyY2hpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSB3ZWJBcmNoaXZl
RGF0YSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBMb2FkUmVxdWVzdChzdHJ1Y3Qg
V2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKKyAgICBMb2FkRGF0YShzdHJ1
Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKKyAgICBMb2FkU3RyaW5n
KHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQorICAgIExvYWRB
bHRlcm5hdGVIVE1MU3RyaW5nKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJh
bWV0ZXJzKQorCiAgICAgTmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soU3RyaW5n
IHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQg
c2NyZWVuUG9pbnQpCiAKICAgICBSZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHJl
bG9hZEZyb21PcmlnaW4sIGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxNjAyOTA5YmU4MDg0Yjg1
OTAzZDY4NWRhMjEzN2Q1N2M0ZGUzZGIwLi40MjJmZGE0MTY5ODAzNWZkNzBmODIwZTAyOThjNGI0
NzZhYmUxMGE4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTYtMDctMDYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRW1haWwgZnJvbSBKdW5lIDFzdCBjb250YWluaW5n
IHRleHQgJ1RvZGF5IEAgNzoxMFBNJyBpcyBsaW5raWZpZWQsIGJ1dCBzaG91bGRuJ3QgYmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTQ5OAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjY3MTk5MDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Ft
IFdlaW5pZy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL0RhdGFEZXRlY3Rpb24ubW06IEFkZGVkLgorICAgICAgICAoLVtEYXRhRGV0ZWN0aW9u
TmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAg
ICAgKC1bRGF0YURldGVjdGlvblVJRGVsZWdhdGUgX2RhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2Vi
VmlldzpdKToKKyAgICAgICAgKGV4cGVjdExpbmtDb3VudCk6CisgICAgICAgIChURVNUKToKKyAg
ICAgICAgQWRkIGEgdGVzdCBlbnN1cmluZyB0aGF0IFJlZmVyZW5jZURhdGUgaW4gdGhlIERhdGFE
ZXRlY3RvcnMgY29udGV4dCBpcyByZXNwZWN0ZWQKKyAgICAgICAgd2hlbiBkZWNpZGluZyB3aGF0
IHRvIGxpbmtpZnkuCisKIDIwMTYtMDctMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIERhdGFiYXNlIHByb2Nlc3MgY3Jhc2hlcyBkZWxldGluZyBhIGNvcnJ1
cHQgU1FMaXRlIGRhdGFiYXNlIGZpbGUgKG51bGwgZGVyZWYpLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA0ZmY3OTAyNDZhNzE1ZTI2YjM1MDI2NTIzN2I4NGJlZjZhYWM4NjMwLi5iYTQ1NTA2
ZjY5ZDNhM2RhNTdjOWE4ZDY2ZjY1OGJiM2M2MmM0Y2ZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDksNiArNDksNyBAQAogCQkyRDAwMDY1RjFDMUY1ODlBMDA4OEU2QTcgLyogV0tQREZW
aWV3UmVzaXplQ3Jhc2gubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDAwMDY1RDFDMUY1ODk0MDA4OEU2QTcgLyogV0tQREZWaWV3UmVzaXplQ3Jhc2gu
bW0gKi87IH07CiAJCTJEMTY0NkUyMUQxODYyQ0QwMDAxNUExQSAvKiBEZWZlcnJlZFZpZXdJbldp
bmRvd1N0YXRlQ2hhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQxNjQ2RTExRDE4NjJDRDAwMDE1QTFBIC8qIERlZmVycmVkVmlld0luV2luZG93
U3RhdGVDaGFuZ2UubW0gKi87IH07CiAJCTJENTFBMEM3MUM4QkYwMEMwMDc2NUM0NSAvKiBET01I
VE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJENTFBMEM1MUM4QkYwMDQwMDc2NUM0NSAvKiBET01IVE1MVmlkZW9F
bGVtZW50V3JhcHBlci5tbSAqLzsgfTsKKwkJMkRDNENGNzcxRDJEOUREODAwRUNDQzk0IC8qIERh
dGFEZXRlY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyREM0Q0Y3NjFEMkQ5REQ4MDBFQ0NDOTQgLyogRGF0YURldGVjdGlvbi5tbSAqLzsgfTsK
IAkJMkREN0QzQUYxNzgyMjdCMzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJERDdEM0FFMTc4MjI3QUMwMDI2RTFFMyAvKiBsb3RzLW9mLXRleHQtdmVydGljYWwtbHIuaHRt
bCAqLzsgfTsKIAkJMkU3NzY1Q0QxNkM0RDgwQTAwQkEyQkIxIC8qIG1haW5JT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc3NjVDQzE2QzREODBB
MDBCQTJCQjEgLyogbWFpbklPUy5tbSAqLzsgfTsKIAkJMkU3NzY1Q0YxNkM0RDgxMTAwQkEyQkIx
IC8qIG1haW5NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTc3NjVDRTE2QzREODExMDBCQTJCQjEgLyogbWFpbk1hYy5tbSAqLzsgfTsKQEAgLTY2
MCw2ICs2NjEsNyBAQAogCQkyRDY0MEI1NDE3ODc1REZGMDBCRkFGOTkgLyogU2Nyb2xsUGlubmlu
Z0JlaGF2aW9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3Jv
bGxQaW5uaW5nQmVoYXZpb3JzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4
MTA0Q0IxQkVDMTNFNzAwMjBEQTQ2IC8qIEZpbmRJblBhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaW5kSW5QYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRDlBNTNBRTFCMzFGQThEMDA3NEQ1QUEgLyogU2hyaW5rVG9GaXQubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaHJpbmtUb0ZpdC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRDNENGNzYxRDJEOUREODAwRUNDQzk0IC8qIERh
dGFEZXRlY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
YXRhRGV0ZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREQzNTUzNTFC
RDA4Mzc4MDA1REY0QTcgLyogQXV0b0xheW91dEludGVncmF0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b0xheW91dEludGVncmF0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREQ3RDNBOTE3ODIwNUQwMDAyNkUxRTMgLyogUmVz
aXplUmV2ZXJzZVBhZ2luYXRlZFdlYlZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVzaXplUmV2ZXJzZVBhZ2luYXRlZFdlYlZpZXcuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyREQ3RDNBRTE3ODIyN0FDMDAyNkUxRTMgLyogbG90cy1vZi10
ZXh0LXZlcnRpY2FsLWxyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibG90cy1vZi10ZXh0LXZlcnRpY2FsLWxy
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE2Niw2ICsxMTY4LDcgQEAK
IAkJCQlBMTRGQzU4NjFCODk5MUI2MDBEMTA3RUIgLyogQ29udGVudEZpbHRlcmluZy5tbSAqLywK
IAkJCQlBMTRGQzU4OTFCODk5MjcxMDBEMTA3RUIgLyogQ29udGVudEZpbHRlcmluZ1BsdWdJbi5t
bSAqLywKIAkJCQkxQUFEMTlGNTFDN0NFMjAzMDA4MzFFNDcgLyogQ29kaW5nLm1tICovLAorCQkJ
CTJEQzRDRjc2MUQyRDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0aW9uLm1tICovLAogCQkJCUEx
QTRGRTVEMThERDNEQjcwMEI1RUE4QSAvKiBEb3dubG9hZC5tbSAqLywKIAkJCQkyRDgxMDRDQjFC
RUMxM0U3MDAyMERBNDYgLyogRmluZEluUGFnZS5tbSAqLywKIAkJCQkyRDFGRTBBRjFBRDQ2NUMx
MDA2Q0Q5RTYgLyogRml4ZWRMYXlvdXRTaXplLm1tICovLApAQCAtMjEyOCw2ICsyMTMxLDcgQEAK
IAkJCQk3NjQzMjJENzFCNjFDQ0MzMDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmli
dXRlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA1MUE0MTFBRTYwMDQ0N0M0QyAvKiBO
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdGMjUxQTQxMUFGNjAwNDQ3QzRDIC8qIE9wZW5BbmRDbG9zZVdpbmRvdy5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTJEQzRDRjc3MUQyRDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0aW9u
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDcxQTQxMUFFNjAwNDQ3QzRDIC8qIFBhZ2VM
b2FkQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQzExRDBBNjUyRjAwRkVCQ0Yz
IC8qIFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdG
MDgxQTQxMUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdl
Rm9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRGF0YURldGVjdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTQz
MTI5ODY3MDIxYzkyZjFjMzgwYzI5NTk4ZjI3NThjYzUxMzcyCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRGF0YURldGVjdGlvbi5tbQpA
QCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lt
cG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgPFdl
YktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQSV9F
TkFCTEVEICYmIFBMQVRGT1JNKElPUykKKworc3RhdGljIGJvb2wgZmluaXNoZWRMb2FkaW5nOwor
c3RhdGljIGJvb2wgcmFuU2NyaXB0OworCitAaW50ZXJmYWNlIERhdGFEZXRlY3Rpb25OYXZpZ2F0
aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CitAZW5kCisKK0Bp
bXBsZW1lbnRhdGlvbiBEYXRhRGV0ZWN0aW9uTmF2aWdhdGlvbkRlbGVnYXRlCisKKy0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmln
YXRpb24gKiluYXZpZ2F0aW9uCit7CisgICAgZmluaXNoZWRMb2FkaW5nID0gdHJ1ZTsKK30KKwor
QGVuZAorCitAaW50ZXJmYWNlIERhdGFEZXRlY3Rpb25VSURlbGVnYXRlIDogTlNPYmplY3QgPFdL
VUlEZWxlZ2F0ZT4KKworQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgTlNEYXRlICpyZWZl
cmVuY2VEYXRlOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBEYXRhRGV0ZWN0aW9uVUlEZWxl
Z2F0ZQorCistIChOU0RpY3Rpb25hcnkgKilfZGF0YURldGVjdGlvbkNvbnRleHRGb3JXZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgaWYgKCFfcmVmZXJlbmNlRGF0ZSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBAeworICAgICAgICBAIlJlZmVyZW5jZURhdGUi
OiBfcmVmZXJlbmNlRGF0ZQorICAgIH07Cit9CisKK0BlbmQKKwordm9pZCBleHBlY3RMaW5rQ291
bnQoV0tXZWJWaWV3ICp3ZWJWaWV3LCBOU1N0cmluZyAqSFRNTFN0cmluZywgdW5zaWduZWQgbGlu
a0NvdW50KQoreworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkhUTUxTdHJpbmcgYmFzZVVS
TDpuaWxdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZExvYWRpbmcp
OworICAgIGZpbmlzaGVkTG9hZGluZyA9IGZhbHNlOworCisgICAgW3dlYlZpZXcgZXZhbHVhdGVK
YXZhU2NyaXB0OkAiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKS5sZW5ndGgiIGNv
bXBsZXRpb25IYW5kbGVyOl4oaWQgdmFsdWUsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVY
UEVDVF9FUShsaW5rQ291bnQsIFt2YWx1ZSB1bnNpZ25lZEludFZhbHVlXSk7CisgICAgICAgIHJh
blNjcmlwdCA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnJhblNjcmlwdCk7CisgICAgcmFuU2NyaXB0ID0gZmFsc2U7Cit9CisKK1RFU1QoV2ViS2l0Miwg
RGF0YURldGVjdGlvblJlZmVyZW5jZURhdGUpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldERhdGFEZXRlY3RvclR5
cGVzOldLRGF0YURldGVjdG9yVHlwZUNhbGVuZGFyRXZlbnRdOworCisgICAgUmV0YWluUHRyPFdL
V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CisKKyAgICBSZXRhaW5QdHI8RGF0YURldGVjdGlvbk5hdmlnYXRpb25EZWxlZ2F0
ZT4gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0RhdGFEZXRlY3Rpb25OYXZpZ2F0aW9u
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKKworICAgIFJldGFpblB0cjxEYXRhRGV0ZWN0
aW9uVUlEZWxlZ2F0ZT4gVUlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEYXRhRGV0ZWN0aW9uVUlEZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6VUlEZWxlZ2F0
ZS5nZXQoKV07CisKKyAgICBleHBlY3RMaW5rQ291bnQod2ViVmlldy5nZXQoKSwgQCJ0b21vcnJv
dyBhdCA2UE0iLCAxKTsKKyAgICBleHBlY3RMaW5rQ291bnQod2ViVmlldy5nZXQoKSwgQCJ5ZXN0
ZXJkYXkgYXQgNlBNIiwgMCk7CisKKyAgICBOU1RpbWVJbnRlcnZhbCB3ZWVrID0gNjAgKiA2MCAq
IDI0ICogNzsKKworICAgIFtVSURlbGVnYXRlIHNldFJlZmVyZW5jZURhdGU6W05TRGF0ZSBkYXRl
V2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93Oi13ZWVrXV07CisgICAgZXhwZWN0TGlua0NvdW50KHdl
YlZpZXcuZ2V0KCksIEAidG9tb3Jyb3cgYXQgNlBNIiwgMCk7CisgICAgZXhwZWN0TGlua0NvdW50
KHdlYlZpZXcuZ2V0KCksIEAieWVzdGVyZGF5IGF0IDZQTSIsIDApOworCisgICAgW1VJRGVsZWdh
dGUgc2V0UmVmZXJlbmNlRGF0ZTpbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2VOb3c6
d2Vla11dOworICAgIGV4cGVjdExpbmtDb3VudCh3ZWJWaWV3LmdldCgpLCBAInRvbW9ycm93IGF0
IDZQTSIsIDEpOworICAgIGV4cGVjdExpbmtDb3VudCh3ZWJWaWV3LmdldCgpLCBAInllc3RlcmRh
eSBhdCA2UE0iLCAxKTsKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282977</attachid>
            <date>2016-07-06 18:13:03 -0700</date>
            <delta_ts>2016-07-06 18:23:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159498-20160706181231.patch</filename>
            <type>text/plain</type>
            <size>87013</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYyMDU4ZWExYTkwMTky
NzU4MzFhNTcyMjJjZTRhNDY5NDRkZTJmNS4uMTUyYTljZDc0MDkzZDc0MDljYjM3NjVjZWNkODBh
ZWU1NTMxZDExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA3LTA2ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEVtYWlsIGZyb20g
SnVuZSAxc3QgY29udGFpbmluZyB0ZXh0ICdUb2RheSBAIDc6MTBQTScgaXMgbGlua2lmaWVkLCBi
dXQgc2hvdWxkbid0IGJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTk0OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NzE5OTAzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0OiBXZWJL
aXQyLkRhdGFEZXRlY3Rpb25SZWZlcmVuY2VEYXRlCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5n
ZSk6CisgICAgICAgIEV4dHJhY3QgdGhlIHJlZmVyZW5jZSBkYXRlIGZyb20gdGhlIERhdGFEZXRl
Y3RvcnMgY29udGV4dCBkaWN0aW9uYXJ5IGlmIGl0IGV4aXN0cywKKyAgICAgICAgYW5kIHBhc3Mg
aXQgYWxvbmcgdG8gRGF0YURldGVjdG9ycy4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVG
b3JUaGlzRnJhbWUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICBQbHVtYiB0aGUgRGF0YURldGVjdG9ycyBjb250ZXh0IGRpY3Rpb25hcnkgdGhyb3VnaCBm
cm9tIFdlYlBhZ2UuCisKIDIwMTYtMDctMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIERhdGFiYXNlIHByb2Nlc3MgY3Jhc2hlcyBkZWxldGluZyBhIGNvcnJ1
cHQgU1FMaXRlIGRhdGFiYXNlIGZpbGUgKG51bGwgZGVyZWYpLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDBkZmY1
MTgzYzMwNGNhZDk4MzM3OWQ2OGY3NWVhNzEzZjllN2M4YzguLjkwZGNhNzYzZTVhOTg5NDBjMzJm
OTZiNjU1OTYxOWIxZmEyYzU0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAxNi0w
Ny0wNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBF
bWFpbCBmcm9tIEp1bmUgMXN0IGNvbnRhaW5pbmcgdGV4dCAnVG9kYXkgQCA3OjEwUE0nIGlzIGxp
bmtpZmllZCwgYnV0IHNob3VsZG4ndCBiZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NDk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjcxOTkw
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogU2hhcmVk
L0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpM
b2FkUGFyYW1ldGVyczo6cGxhdGZvcm1FbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFy
YW1ldGVyczo6cGxhdGZvcm1EZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Mb2FkUGFyYW1ldGVy
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICBBZGQgYSBzdHJ1Y3QgdGhhdCBr
bm93cyBob3cgdG8gZW5jb2RlIGFsbCBvZiB0aGUgZGlmZmVyZW50IHBhcmFtZXRlcnMKKyAgICAg
ICAgdG8gYWxsIG9mIHRoZSBMb2FkKiBtZXNzYWdlcywgaW5jbHVkaW5nIHRoZSBwbGF0Zm9ybS1z
cGVjaWZpYyBEYXRhRGV0ZWN0b3JzIHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBTaGFyZWQvbWFj
L0FyZ3VtZW50Q29kZXJzTWFjLmg6CisgICAgICAgICogU2hhcmVkL21hYy9Bcmd1bWVudENvZGVy
c01hYy5tbToKKyAgICAgICAgKElQQzo6dHlwZUZyb21PYmplY3QpOgorICAgICAgICAoSVBDOjpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGUpOgorICAgICAgICBBZGQgTlNVUkwgY29kZXJz
IHRoYXQgZGVmZXIgdG8gdGhlIENGVVJMIGNvZGVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRhdGFEZXRlY3Rpb25D
b250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURl
bGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpkYXRhRGV0ZWN0aW9uQ29udGV4dCk6CisgICAgICAgIEFkZCBBUElVSUNsaWVudCBtZXRo
b2RzIHRvIHJldHJpZXZlIHRoZSBEYXRhRGV0ZWN0b3JzIGNvbnRleHQgZGljdGlvbmFyeS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKToKKyAgICAg
ICAgQWRkIHRoZSBEYXRhRGV0ZWN0b3JzIGNvbnRleHQgZGljdGlvbmFyeSB0byB0aGUgZ2l2ZW4g
TG9hZFBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRhdGFEZXRlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGF0YURldGVjdGlv
bkNvbnRleHQpOgorICAgICAgICBTdG9yZSB0aGUgZGF0YURldGVjdGlvbkNvbnRleHQgb24gV2Vi
UGFnZSwgYW5kIG1ha2UgaXQgYWNjZXNzaWJsZSB0byBXZWJDb3JlCisgICAgICAgIHZpYSB0aGUg
RnJhbWVMb2FkZXJDbGllbnQgKGl0IGlzIHVzZWQgaW4gRnJhbWVMb2FkZXIgd2hlbiB0aGUgbG9h
ZCBjb21wbGV0ZXMpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmxvYWRGaWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEhUTUxT
dHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1M
U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUGxhaW5UZXh0U3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRTdHJpbmdJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkSFRNTFN0cmluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRQbGFpblRleHRTdHJpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkV2ViQXJjaGl2ZURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAg
ICBBZG9wdCBMb2FkUGFyYW1ldGVycywgdGFraW5nIHRoaXMgb3Bwb3J0dW5pdHkgdG8gcmVkdWNl
IHRoZSBudW1iZXIgb2YgdmVyeSBzaW1pbGFyIG1lc3NhZ2VzLgorICAgICAgICBXZSBjYW4gdGFr
ZSB0aGlzIGZ1cnRoZXIgKHdlIHNob3VsZCBiZSBhYmxlIHRvIGdldCBpdCBkb3duIHRvIGp1c3Qg
TG9hZFJlcXVlc3QKKyAgICAgICAgYW5kIExvYWREYXRhKSBpbiB0aGUgZnV0dXJlLiBXaGVuIGFu
eSBsb2FkIG9jY3VycywgZ3JhYiB0aGUgY2xpZW50J3MgRGF0YURldGVjdG9yc2UKKyAgICAgICAg
Y29udGV4dCBkaWN0aW9uYXJ5IGFuZCBzZW5kIGl0IGFsb25nIHdpdGggdGhlIGxvYWQgcmVxdWVz
dCwgc3RvcmluZyBpdCBpbiBXZWJQYWdlLgorCiAyMDE2LTA3LTA0ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ29vcmRpbmF0ZWQgR3JhcGhp
Y3NdIE1vZGVybml6ZSBhbmQgY2xlYW51cCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDUy
M2MyZjM2NjEwNDNjZGNhMDY3NWEyMjVkNmYyY2EzNmJmMjY3MC4uYjExODBjNmU4OWZiODUyNGNm
MzNhMzQ3MTJiODQ1ODU3NzAyMjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0NCw2ICsxMjQ0LDcgQEAKIAkJMkQ5N0Yw
NDgxOURENDE0MDAwMUVFOUMzIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBQUUzMkQxOURDQUY2MDAwRTAw
MkQyIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5oICovOyB9OwogCQkyRDlGMEUxMzE0RkYxQ0JG
MDBCQTBGRjcgLyogbGluZWFyU1JHQi5pY2MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUYwRTEyMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdC
LmljYyAqLzsgfTsKIAkJMkRCOUM0QUExQjMyMzFGNDAwNzBGMjdGIC8qIE5TRXZlbnRTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQjlDNEE5MUIz
MjMxRjQwMDcwRjI3RiAvKiBOU0V2ZW50U1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkRDNENGNzkxRDJERDk4OTAwRUNDQzk0IC8qIERhdGFE
ZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRDNENGNzgxRDJERDk4OTAwRUNDQzk0IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEQ0I4Mzc5
MTlGOTlCQkEwMEE3RkJFNCAvKiBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRENCODM3NzE5Rjk5QkJBMDBB
N0ZCRTQgLyogTlNTaGFyaW5nU2VydmljZVBpY2tlclNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEQ0I4MzdBMTlGOTlCQkEwMEE3RkJFNCAv
KiBOU1NoYXJpbmdTZXJ2aWNlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRENCODM3ODE5Rjk5QkJBMDBBN0ZCRTQgLyogTlNTaGFyaW5nU2Vydmlj
ZVNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJEREI5N0Y0MTlGOUFFQ0EwMDIwMjVEOCAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkREQjk3RjMxOUY5QUVDQTAwMjAy
NUQ4IC8qIE5TRXh0ZW5zaW9uU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTg4MTIsNiArODgxMyw3IEBACiAJCTJEQUFFMzJDMTlEQ0FGNjAw
MEUwMDJEMiAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRBQUUzMkQxOURDQUY2MDAwRTAwMkQyIC8qIE1vY2tQYWdlT3Zl
cmxheUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrUGFnZU92
ZXJsYXlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRCOUM0QTkxQjMy
MzFGNDAwNzBGMjdGIC8qIE5TRXZlbnRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTlNFdmVudFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREM0Q0Y3
ODFEMkREOTg5MDBFQ0NDOTQgLyogRGF0YURldGVjdG9yc1VJU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRlY3RvcnNVSVNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyRENCODM3NzE5Rjk5QkJBMDBBN0ZCRTQgLyogTlNTaGFyaW5nU2Vydmlj
ZVBpY2tlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQ0I4Mzc4
MTlGOTlCQkEwMEE3RkJFNCAvKiBOU1NoYXJpbmdTZXJ2aWNlU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5TU2hhcmluZ1NlcnZpY2VTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkREQjk3RjMxOUY5QUVDQTAwMjAyNUQ4IC8qIE5TRXh0ZW5zaW9uU1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TRXh0ZW5zaW9uU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDE3MCw2ICsyMDE3Miw3IEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNFMTI1MjQyMUExNkMwMUEwMDg2NDQ4
MCAvKiBDb3JlVUlTUEkuaCAqLywKKwkJCQkyREM0Q0Y3ODFEMkREOTg5MDBFQ0NDOTQgLyogRGF0
YURldGVjdG9yc1VJU1BJLmggKi8sCiAJCQkJQ0VDMzM3QUUxQTQ2MDg2RDAwOUI4NTIzIC8qIEdy
YXBoaWNzU2VydmljZXNTUEkuaCAqLywKIAkJCQk3QzRDOTZFMjFBRDQ0QUJGMDAzNjVBNTAgLyog
TGF1bmNoU2VydmljZXNTUEkuaCAqLywKIAkJCQlDRTEyNTI0MDFBMTZCMUI2MDA4NjQ0ODAgLyog
TWVkaWFQbGF5ZXJTUEkuaCAqLywKQEAgLTI2OTIwLDYgKzI2OTIzLDcgQEAKIAkJCQk3QzlEQkZF
RTFBOUM0OUIxMDAwRDZCMjUgLyogSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0NDYxNDM4MENENjg5QzUwMEZBREE3NSAvKiBKU0hUTUxBdWRpb0VsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3QjExMEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxC
YXNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRDNENGNzkxRDJERDk4OTAwRUNDQzk0
IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFBMjMwQTFD
REFCNDAwQjQyQjI1IC8qIEpTSFRNTEJvZHlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUUyQUEyNTBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MQlJFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODBFN0U5RjBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MQnV0dG9uRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5oCmluZGV4IDk0OWU1YmY3YjM5ODg4ODc3MTM2YmY3Y2QzM2U4NjI2ZWViMjNjNjAuLjc3
NTlkMTk5Y2E0ZWNmZjA1MjQxOWJkYjMwMzJmOGUzZDdkYmNmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAKIE9C
SkNfQ0xBU1MgRERBY3Rpb25Db250ZXh0OwogT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFT
UyBOU0RpY3Rpb25hcnk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsNyArNTgsNyBA
QCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBkZXRlY3RJdGVtQXJvdW5kSGl0VGVzdFJlc3VsdChj
b25zdCBIaXRUZXN0UmVzdWx0JiwgRmxvYXRSZWN0JiBkZXRlY3RlZERhdGFCb3VuZGluZ0JveCwg
UmVmUHRyPFJhbmdlPiYgZGV0ZWN0ZWREYXRhUmFuZ2UpOwogI2VuZGlmCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIE5TQXJyYXkgKmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4m
IGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBOU0FycmF5ICpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0
UmFuZ2UsIERhdGFEZXRlY3RvclR5cGVzLCBOU0RpY3Rpb25hcnkgKmNvbnRleHQpOwogI2lmIFBM
QVRGT1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0RhdGFEZXRlY3Rv
ckxpbmsoRWxlbWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZGF0YURl
dGVjdG9ySWRlbnRpZmllcihFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggMTM4MzNlZTE5OTY4MmMzYjUwYzExMGQ3NjNmNDVm
MDg0NzU5NTM1Yi4uZDA4MDViZjkzYTM2NDU3NzBhNGE1NWYxYjNjM2Q4OTFlMDBiOGUzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtMjks
NiArMjksNyBAQAogI2ltcG9ydCAiQXR0ci5oIgogI2ltcG9ydCAiQ1NTU3R5bGVEZWNsYXJhdGlv
bi5oIgogI2ltcG9ydCAiRGF0YURldGVjdG9yc1NQSS5oIgorI2ltcG9ydCAiRGF0YURldGVjdG9y
c1VJU1BJLmgiCiAjaW1wb3J0ICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgogI2ltcG9ydCAi
RWxlbWVudFRyYXZlcnNhbC5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCkBAIC00MjksNyArNDMw
LDcgQEAgc3RhdGljIGlubGluZSBDRkNvbXBhcmlzb25SZXN1bHQgcXVlcnlPZmZzZXRDb21wYXJl
KEREUXVlcnlPZmZzZXQgbzEsIEREUXVlcnlPZmYKICAgICByZXR1cm4ga0NGQ29tcGFyZUVxdWFs
VG87CiB9CiAKLU5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJl
ZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMgdHlwZXMpCitOU0Fy
cmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBj
b250ZXh0UmFuZ2UsIERhdGFEZXRlY3RvclR5cGVzIHR5cGVzLCBOU0RpY3Rpb25hcnkgKmNvbnRl
eHQpCiB7CiAgICAgUmV0YWluUHRyPEREU2Nhbm5lclJlZj4gc2Nhbm5lciA9IGFkb3B0Q0Yoc29m
dExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVyQ3JlYXRlKEREU2Nhbm5lclR5cGVTdGFu
ZGFyZCwgMCwgbnVsbHB0cikpOwogICAgIFJldGFpblB0cjxERFNjYW5RdWVyeVJlZj4gc2NhblF1
ZXJ5ID0gYWRvcHRDRihzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNjYW5RdWVyeUNyZWF0
ZShOVUxMKSk7CkBAIC00NDMsMTUgKzQ0NCwxNSBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpk
ZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQog
ICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgYWRkIGEgdGltZW91dCB0byB0aGlzIGNhbGwgdG8gbWFr
ZSBzdXJlIGl0IGRvZXNuJ3QgdGFrZSB0b28gbXVjaCB0aW1lLgogICAgIGlmICghc29mdExpbmtf
RGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVyU2NhblF1ZXJ5KHNjYW5uZXIuZ2V0KCksIHNjYW5R
dWVyeS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8
Q0ZBcnJheVJlZj4gc2Nhbm5lclJlc3VsdHMgPSBhZG9wdENGKHNvZnRMaW5rX0RhdGFEZXRlY3Rv
cnNDb3JlX0REU2Nhbm5lckNvcHlSZXN1bHRzV2l0aE9wdGlvbnMoc2Nhbm5lci5nZXQoKSwgZ2V0
X0RhdGFEZXRlY3RvcnNDb3JlX0REU2Nhbm5lckNvcHlSZXN1bHRzT3B0aW9uc0ZvclBhc3NpdmVV
c2UoKSB8IEREU2Nhbm5lckNvcHlSZXN1bHRzT3B0aW9uc0NvYWxlc2NlU2lnbmF0dXJlcykpOwog
ICAgIGlmICghc2Nhbm5lclJlc3VsdHMpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisKICAg
ICBDRkluZGV4IHJlc3VsdENvdW50ID0gQ0ZBcnJheUdldENvdW50KHNjYW5uZXJSZXN1bHRzLmdl
dCgpKTsKICAgICBpZiAoIXJlc3VsdENvdW50KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAor
CiAgICAgVmVjdG9yPFJldGFpblB0cjxERFJlc3VsdFJlZj4+IGFsbFJlc3VsdHM7CiAgICAgVmVj
dG9yPFJldGFpblB0cjxOU0luZGV4UGF0aD4+IGluZGV4UGF0aHM7CiAgICAgTlNJbnRlZ2VyIGN1
cnJlbnRUb3BMZXZlbEluZGV4ID0gMDsKQEAgLTUxOSw3ICs1MjAsNyBAQCBOU0FycmF5ICpEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFu
Z2UsIERhdGFEZQogICAgIH0KICAgICAKICAgICBhdXRvIHR6ID0gYWRvcHRDRihDRlRpbWVab25l
Q29weURlZmF1bHQoKSk7Ci0gICAgTlNEYXRlICpyZWZlcmVuY2VEYXRlID0gW05TRGF0ZSBkYXRl
XTsKKyAgICBOU0RhdGUgKnJlZmVyZW5jZURhdGUgPSBbY29udGV4dCBvYmplY3RGb3JLZXk6Z2V0
a0RhdGFEZXRlY3RvcnNSZWZlcmVuY2VEYXRlS2V5KCldID86IFtOU0RhdGUgZGF0ZV07CiAgICAg
VGV4dCogbGFzdFRleHROb2RlVG9VcGRhdGUgPSBudWxscHRyOwogICAgIFN0cmluZyBsYXN0Tm9k
ZUNvbnRlbnQ7CiAgICAgc2l6ZV90IGNvbnRlbnRPZmZzZXQgPSAwOwpAQCAtNjUyLDcgKzY1Myw3
IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxS
YW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURlCiB9CiAKICNlbHNlCi1OU0FycmF5ICpEYXRhRGV0
ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiwgRGF0YURldGVjdG9y
VHlwZXMpCitOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQ
dHI8UmFuZ2U+JiwgRGF0YURldGVjdG9yVHlwZXMsIE5TRGljdGlvbmFyeSAqKQogewogICAgIHJl
dHVybiBuaWw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA3MzBj
MGI4MDE5MjA5MTY3NzM4NWUwMmFjNWNlOWEyNGM2ODM4MDFmLi5iMzIyNzQyZDUyMDEwZDgxODNi
ZTdjMmZhOTJkMTUzOThjMmQ1Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTIzMTAsNyArMjMxMCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBs
ZXRlRm9yVGhpc0ZyYW1lKCkKICAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygp
LmRhdGFEZXRlY3RvclR5cGVzKCkgIT0gRGF0YURldGVjdG9yVHlwZU5vbmUgJiYgZG9jdW1lbnQp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50RWxlbWVudCA9IGRvY3Vt
ZW50LT5kb2N1bWVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiBkb2N1bWVudFJhbmdlID0gbWFrZVJhbmdlKGZpcnN0UG9zaXRpb25Jbk5vZGUoZG9j
dW1lbnRFbGVtZW50KSwgbGFzdFBvc2l0aW9uSW5Ob2RlKGRvY3VtZW50RWxlbWVudCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShkb2N1bWVudFJhbmdlLCBtX2ZyYW1lLnNl
dHRpbmdzKCkuZGF0YURldGVjdG9yVHlwZXMoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9mcmFtZS5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250
ZW50SW5SYW5nZShkb2N1bWVudFJhbmdlLCBtX2ZyYW1lLnNldHRpbmdzKCkuZGF0YURldGVjdG9y
VHlwZXMoKSwgbV9jbGllbnQuZGF0YURldGVjdGlvbkNvbnRleHQoKSkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2NsaWVudC5kaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24obV9mcmFt
ZS5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpKTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5OTJlNWM4NTIyNWM0ODJh
NzNlYzIxYzZlM2NhNTFiZjkzNDI5N2QxLi5kODZjNjQ4NzA4ODBmY2ExZDA1ZjM3MTliYmFjMWQ5
OWJkZWQzNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtNTQsNiArNTQsNyBAQCB0eXBlZGVmIHZvaWQqIFJlbW90ZUFYT2JqZWN0UmVmOwogI2lmIFBM
QVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU0FycmF5OwogT0JKQ19DTEFTUyBOU0NhY2hlZFVS
TFJlc3BvbnNlOworT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CiBPQkpDX0NMQVNTIE5TVmlldzsK
ICNlbmRpZgogCkBAIC0yOTIsNiArMjkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBBbGxvdyBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0byByZXRyaWV2ZSBhIEZyYW1lIHBh
cmVudCBpZiB0aGVyZSdzIG5vIFBsYXRmb3JtV2lkZ2V0LgogICAgICAgICB2aXJ0dWFsIFJlbW90
ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBjb25z
dCA9IDA7CisgICAgICAgIHZpcnR1YWwgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9uQ29udGV4
dCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNF
KENGTkVUV09SSykKICAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2Fj
aGVSZXNwb25zZSAtIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcy
NTc+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9EYXRhRGV0
ZWN0b3JzVUlTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvRGF0YURldGVj
dG9yc1VJU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzViNGNkM2RiYjRjNDg5NWZkN2ZiZDM5OWRhMzZmYjBl
NjhhNDJiYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9p
b3MvRGF0YURldGVjdG9yc1VJU1BJLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
ZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL1NvZnRMaW5raW5nLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1w
b3J0IDxEYXRhRGV0ZWN0b3JzVUkvRERBY3Rpb24uaD4KKyNpbXBvcnQgPERhdGFEZXRlY3RvcnNV
SS9ERERldGVjdGlvbkNvbnRyb2xsZXIuaD4KKworI2Vsc2UKKworQGludGVyZmFjZSBEREFjdGlv
biA6IE5TT2JqZWN0CitAZW5kCisKK0BpbnRlcmZhY2UgRERBY3Rpb24gKCkKKy0gKEJPT0wpaGFz
VXNlckludGVyZmFjZTsKKy0gKE5TU3RyaW5nICopbG9jYWxpemVkTmFtZTsKK0Bwcm9wZXJ0eSAo
cmVhZG9ubHkpIE5TU3RyaW5nICphY3Rpb25VVEk7CitAZW5kCisKK0Bwcm90b2NvbCBERERldGVj
dGlvbkNvbnRyb2xsZXJJbnRlcmFjdGlvbkRlbGVnYXRlIDxOU09iamVjdD4KK0BlbmQKKworQGlu
dGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgOiBOU09iamVjdCA8VUlBY3Rpb25TaGVldERl
bGVnYXRlPgorQGVuZAorCitAaW50ZXJmYWNlIERERGV0ZWN0aW9uQ29udHJvbGxlciAoKQorKyAo
REREZXRlY3Rpb25Db250cm9sbGVyICopc2hhcmVkQ29udHJvbGxlcjsKKysgKE5TQXJyYXkgKil0
YXBBbmRIb2xkU2NoZW1lczsKKy0gKHZvaWQpcGVyZm9ybUFjdGlvbjooRERBY3Rpb24gKilhY3Rp
b24gZnJvbUFsZXJ0Q29udHJvbGxlcjooVUlBbGVydENvbnRyb2xsZXIgKilhbGVydENvbnRyb2xs
ZXIgaW50ZXJhY3Rpb25EZWxlZ2F0ZTooaWQgPERERGV0ZWN0aW9uQ29udHJvbGxlckludGVyYWN0
aW9uRGVsZWdhdGU+KWludGVyYWN0aW9uRGVsZWdhdGU7CitAZW5kCisKKyNlbmRpZgorCitAaW50
ZXJmYWNlIERERGV0ZWN0aW9uQ29udHJvbGxlciAoRGV0YWlsc1RvQmVSZW1vdmVkKQorLy8gRklY
TUU6IFRoaXMgd2lsbCBiZSByZW1vdmVkIGFzIHNvb24gYXMgPHJkYXI6Ly9wcm9ibGVtLzE2MzQ2
OTEzPiBpcyBmaXhlZC4KKy0gKE5TQXJyYXkgKilhY3Rpb25zRm9yQW5jaG9yOihpZClhbmNob3Ig
dXJsOihOU1VSTCAqKXRhcmdldFVSTCBmb3JGcmFtZTooaWQpZnJhbWU7CitAZW5kCisKK1NPRlRf
TElOS19QUklWQVRFX0ZSQU1FV09SSyhEYXRhRGV0ZWN0b3JzVUkpCitTT0ZUX0xJTktfQ0xBU1Mo
RGF0YURldGVjdG9yc1VJLCBERERldGVjdGlvbkNvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ09OU1RB
TlQoRGF0YURldGVjdG9yc1VJLCBrRGF0YURldGVjdG9yc0xlYWRpbmdUZXh0LCBjb25zdCBOU1N0
cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKERhdGFEZXRlY3RvcnNVSSwga0RhdGFEZXRlY3Rv
cnNUcmFpbGluZ1RleHQsIGNvbnN0IE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoRGF0
YURldGVjdG9yc1VJLCBrRGF0YURldGVjdG9yc1JlZmVyZW5jZURhdGVLZXksIGNvbnN0IE5TU3Ry
aW5nICopCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3Bp
L2lvcy9EYXRhRGV0ZWN0b3JzVUlTUEkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3NwaS9p
b3MvRGF0YURldGVjdG9yc1VJU1BJLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcy
YWE1OTVkYTkwMDdmYTg5OTJlYjdhNDM1ZGVmM2U3Yzc2YzZlZTEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3Bp
L2lvcy9EYXRhRGV0ZWN0b3JzVUlTUEkuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgotI2ltcG9ydCA8V2ViQ29yZS9T
b2Z0TGlua2luZy5oPgotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotI2ltcG9ydCA8
RGF0YURldGVjdG9yc1VJL0REQWN0aW9uLmg+Ci0jaW1wb3J0IDxEYXRhRGV0ZWN0b3JzVUkvRERE
ZXRlY3Rpb25Db250cm9sbGVyLmg+Ci0KLSNlbHNlCi0KLUBpbnRlcmZhY2UgRERBY3Rpb24gOiBO
U09iamVjdAotQGVuZAotCi1AaW50ZXJmYWNlIEREQWN0aW9uICgpCi0tIChCT09MKWhhc1VzZXJJ
bnRlcmZhY2U7Ci0tIChOU1N0cmluZyAqKWxvY2FsaXplZE5hbWU7Ci1AcHJvcGVydHkgKHJlYWRv
bmx5KSBOU1N0cmluZyAqYWN0aW9uVVRJOwotQGVuZAotCi1AcHJvdG9jb2wgREREZXRlY3Rpb25D
b250cm9sbGVySW50ZXJhY3Rpb25EZWxlZ2F0ZSA8TlNPYmplY3Q+Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgREREZXRlY3Rpb25Db250cm9sbGVyIDogTlNPYmplY3QgPFVJQWN0aW9uU2hlZXREZWxlZ2F0
ZT4KLUBlbmQKLQotQGludGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgKCkKLSsgKERERGV0
ZWN0aW9uQ29udHJvbGxlciAqKXNoYXJlZENvbnRyb2xsZXI7Ci0rIChOU0FycmF5ICopdGFwQW5k
SG9sZFNjaGVtZXM7Ci0tICh2b2lkKXBlcmZvcm1BY3Rpb246KEREQWN0aW9uICopYWN0aW9uIGZy
b21BbGVydENvbnRyb2xsZXI6KFVJQWxlcnRDb250cm9sbGVyICopYWxlcnRDb250cm9sbGVyIGlu
dGVyYWN0aW9uRGVsZWdhdGU6KGlkIDxERERldGVjdGlvbkNvbnRyb2xsZXJJbnRlcmFjdGlvbkRl
bGVnYXRlPilpbnRlcmFjdGlvbkRlbGVnYXRlOwotQGVuZAotCi0jZW5kaWYKLQotQGludGVyZmFj
ZSBERERldGVjdGlvbkNvbnRyb2xsZXIgKERldGFpbHNUb0JlUmVtb3ZlZCkKLS8vIEZJWE1FOiBU
aGlzIHdpbGwgYmUgcmVtb3ZlZCBhcyBzb29uIGFzIDxyZGFyOi8vcHJvYmxlbS8xNjM0NjkxMz4g
aXMgZml4ZWQuCi0tIChOU0FycmF5ICopYWN0aW9uc0ZvckFuY2hvcjooaWQpYW5jaG9yIHVybDoo
TlNVUkwgKil0YXJnZXRVUkwgZm9yRnJhbWU6KGlkKWZyYW1lOwotQGVuZAotCi1TT0ZUX0xJTktf
UFJJVkFURV9GUkFNRVdPUksoRGF0YURldGVjdG9yc1VJKQotU09GVF9MSU5LX0NMQVNTKERhdGFE
ZXRlY3RvcnNVSSwgREREZXRlY3Rpb25Db250cm9sbGVyKQotU09GVF9MSU5LX0NPTlNUQU5UKERh
dGFEZXRlY3RvcnNVSSwga0RhdGFEZXRlY3RvcnNMZWFkaW5nVGV4dCwgY29uc3QgTlNTdHJpbmcg
KikKLVNPRlRfTElOS19DT05TVEFOVChEYXRhRGV0ZWN0b3JzVUksIGtEYXRhRGV0ZWN0b3JzVHJh
aWxpbmdUZXh0LCBjb25zdCBOU1N0cmluZyAqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29jb2EvTG9hZFBhcmFtZXRlcnNDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWRlMDFkMDFlZTJh
ZWY0NTQ0OTBiOGM1ZjkyNjY2MjlmZmM3Y2MwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW0KQEAgLTAsMCArMSw1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb2FkUGFyYW1l
dGVycy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVy
c01hYy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordm9pZCBMb2FkUGFyYW1ldGVyczo6cGxhdGZvcm1FbmNvZGUoSVBDOjpBcmd1
bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgSVBDOjplbmNvZGUoZW5jb2Rlciwg
ZGF0YURldGVjdGlvbkNvbnRleHQuZ2V0KCkpOworfQorCitib29sIExvYWRQYXJhbWV0ZXJzOjpw
bGF0Zm9ybURlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRl
cnMmIGRhdGEpCit7CisgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhLmRhdGFEZXRl
Y3Rpb25Db250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTG9hZFBhcmFtZXRlcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMGYxMzQ1ZjhkNTZjZGM4NTlmMTll
MjY1YWVlODNmOWVhZDJkMzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCisKKyNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQg
TG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKK3sKKyAgICBlbmNvZGVyIDw8IG5hdmlnYXRpb25JRDsKKyAgICBlbmNvZGVyIDw8IHJlcXVl
c3Q7CisgICAgZW5jb2RlciA8PCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIg
PDwgZGF0YTsKKyAgICBlbmNvZGVyIDw8IHN0cmluZzsKKyAgICBlbmNvZGVyIDw8IE1JTUVUeXBl
OworICAgIGVuY29kZXIgPDwgZW5jb2RpbmdOYW1lOworICAgIGVuY29kZXIgPDwgYmFzZVVSTFN0
cmluZzsKKyAgICBlbmNvZGVyIDw8IHVucmVhY2hhYmxlVVJMU3RyaW5nOworICAgIGVuY29kZXIg
PDwgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmc7CisgICAgZW5jb2RlciA8PCBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OworICAgIGVuY29kZXIgPDwgdXNlckRhdGE7CisKKyAgICBw
bGF0Zm9ybUVuY29kZShlbmNvZGVyKTsKK30KKworYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYgZGF0YSkKK3sK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubmF2aWdhdGlvbklEKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnJlcXVlc3QpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YS5kYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkYXRhLnN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5NSU1FVHlwZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5lbmNvZGluZ05hbWUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuYmFzZVVS
TFN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZGF0YS51bnJlYWNoYWJsZVVSTFN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmlu
ZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0
YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnVzZXJEYXRhKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFwbGF0Zm9ybURlY29kZShkZWNvZGVyLCBkYXRhKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNpZiAhUExBVEZPUk0o
Q09DT0EpCisKK3ZvaWQgTG9hZFBhcmFtZXRlcnM6OnBsYXRmb3JtRW5jb2RlKElQQzo6QXJndW1l
bnRFbmNvZGVyJikgY29uc3QKK3sKK30KKworYm9vbCBMb2FkUGFyYW1ldGVyczo6cGxhdGZvcm1E
ZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBMb2FkUGFyYW1ldGVycyYpCit7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCisKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTG9hZFBhcmFt
ZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY5OWQxNWNlMDdhZThmYjc5NzM0NzI2MjYxYmQ5OTA4NzkzZDkxMDIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtMCwwICsx
LDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMb2FkUGFyYW1ldGVyc19oCisjZGVmaW5lIExv
YWRQYXJhbWV0ZXJzX2gKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJT
YW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiVXNlckRhdGEuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgorCitPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKKworbmFt
ZXNwYWNlIElQQyB7CitjbGFzcyBBcmd1bWVudERlY29kZXI7CitjbGFzcyBBcmd1bWVudEVuY29k
ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgTG9hZFBhcmFtZXRlcnMgewor
ICAgIHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgTG9hZFBhcmFtZXRlcnMmKTsKKwor
ICAgIHZvaWQgcGxhdGZvcm1FbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKKyAg
ICBzdGF0aWMgYm9vbCBwbGF0Zm9ybURlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYsIExvYWRQ
YXJhbWV0ZXJzJik7CisKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQ7CisKKyAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKKworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwor
ICAgIFN0cmluZyBzdHJpbmc7CisgICAgU3RyaW5nIE1JTUVUeXBlOworICAgIFN0cmluZyBlbmNv
ZGluZ05hbWU7CisKKyAgICBTdHJpbmcgYmFzZVVSTFN0cmluZzsKKyAgICBTdHJpbmcgdW5yZWFj
aGFibGVVUkxTdHJpbmc7CisgICAgU3RyaW5nIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5n
OworCisgICAgdWludDY0X3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBVc2Vy
RGF0YSB1c2VyRGF0YTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxOU0Rp
Y3Rpb25hcnk+IGRhdGFEZXRlY3Rpb25Db250ZXh0OworI2VuZGlmCit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIExvYWRQYXJhbWV0ZXJzX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMuaAppbmRleCA0ZTJkYTc2MTkzMTUzZWQ4
ZDgwOWQxODdlMDUyMzE1YzliNzFmN2I0Li5jZWE1ZjAxZDg4YTQ3M2FkNjA2ZDQ0NjEyODQ3MTkx
Y2NkNjJkZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50
Q29kZXJzTWFjLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVy
c01hYy5oCkBAIC0zNyw2ICszNyw3IEBAIE9CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OwogT0JKQ19D
TEFTUyBOU0ZvbnQ7CiBPQkpDX0NMQVNTIE5TTnVtYmVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsK
K09CSkNfQ0xBU1MgTlNVUkw7CiAKIG5hbWVzcGFjZSBJUEMgewogCkBAIC04Nyw2ICs4OCwxMCBA
QCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBSZXRhaW5QdHI8TlNEYXRlPiYpOwogdm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgTlNEYXRhICopOwogYm9vbCBkZWNvZGUoQXJndW1l
bnREZWNvZGVyJiwgUmV0YWluUHRyPE5TRGF0YT4mKTsKIAorLy8gTlNVUkwKK3ZvaWQgZW5jb2Rl
KEFyZ3VtZW50RW5jb2RlciYsIE5TVVJMICopOworYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVy
JiwgUmV0YWluUHRyPE5TVVJMPiYpOworCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogI2VuZGlmIC8v
IEFyZ3VtZW50Q29kZXJzTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3Vt
ZW50Q29kZXJzTWFjLm1tCmluZGV4IDY0MGU3ZWRkMzQ0MTM5ZGIyMTlhZDFjMzEwNzMwY2ZhMzNm
ZTk5ZTEuLjI1NThiNDE4MzNlNjU0MGE0ZTNmMWJjMTRmNjBiZGI4YzI5MGMyZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5tbQpAQCAtNTUsNiAr
NTUsNyBAQCBlbnVtIE5TVHlwZSB7CiAgICAgTlNTdHJpbmdUeXBlLAogICAgIE5TRGF0ZVR5cGUs
CiAgICAgTlNEYXRhVHlwZSwKKyAgICBOU1VSTFR5cGUsCiAgICAgVW5rbm93biwKIH07CiAKQEAg
LTg0LDYgKzg1LDggQEAgc3RhdGljIE5TVHlwZSB0eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCiAg
ICAgICAgIHJldHVybiBOU0RhdGVUeXBlOwogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6
W05TRGF0YSBjbGFzc11dKQogICAgICAgICByZXR1cm4gTlNEYXRhVHlwZTsKKyAgICBpZiAoW29i
amVjdCBpc0tpbmRPZkNsYXNzOltOU1VSTCBjbGFzc11dKQorICAgICAgICByZXR1cm4gTlNVUkxU
eXBlOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFVua25vd247CkBA
IC0xMjYsNiArMTI5LDkgQEAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBp
ZCBvYmplY3QpCiAgICAgY2FzZSBOU0RhdGFUeXBlOgogICAgICAgICBlbmNvZGUoZW5jb2Rlciwg
c3RhdGljX2Nhc3Q8TlNEYXRhICo+KG9iamVjdCkpOwogICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBOU1VSTFR5cGU6CisgICAgICAgIGVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxOU1VSTCAq
PihvYmplY3QpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVW5rbm93bjoKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtMjA3LDYgKzIxMywxMyBAQCBib29sIGRlY29kZShBcmd1bWVudERl
Y29kZXImIGRlY29kZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsdCkKICAgICAgICAgcmVzdWx0ID0g
ZGF0YTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIGNhc2UgTlNVUkxUeXBlOiB7
CisgICAgICAgIFJldGFpblB0cjxOU1VSTD4gVVJMOworICAgICAgICBpZiAoIWRlY29kZShkZWNv
ZGVyLCBVUkwpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXN1bHQgPSBV
Ukw7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICBjYXNlIFVua25vd246CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MDUs
NCArNTE4LDE5IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmV0YWlu
UHRyPE5TRGF0YT4mIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBOU1VSTCAqVVJMKQoreworICAgIGVuY29kZShlbmNv
ZGVyLCAoQ0ZVUkxSZWYpVVJMKTsKK30KKworYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBk
ZWNvZGVyLCBSZXRhaW5QdHI8TlNVUkw+JiByZXN1bHQpCit7CisgICAgUmV0YWluUHRyPENGVVJM
UmVmPiBVUkw7CisgICAgaWYgKCFkZWNvZGUoZGVjb2RlciwgVVJMKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmVzdWx0ID0gYWRvcHROUygoTlNVUkwgKilVUkwubGVha1JlZigpKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggNmE4ZmFjZGY2OThmMGU0NjRiMGZh
Yzg4NzBlNzgyMDRkNmYzODY3ZC4uMTFiYjQyMTFkMDMyOWE2NDRjOTNkOTFjZmE3OGMyZmJhMmZh
NDhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAt
MTY0LDYgKzE2NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxlVGFw
QXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIHsgfQogICAgIHZpcnR1YWwgVUlWaWV3
Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCkgeyByZXR1cm4gbnVsbHB0cjsg
fQogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBOU0RpY3Rpb25hcnkg
KmRhdGFEZXRlY3Rpb25Db250ZXh0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbihXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIEFQSTo6T2JqZWN0KikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5oCmluZGV4IDA4M2MxZjkzNjMzYjgzM2FlZjlkYzM1ZjNmMmM3YWE3ZDBiYmQ5
ZTQuLmQyYWQ2OThiYmVmNmE1MTA4Y2NmMWUxMjAzNmM3Yzc4MjhiMzgxNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtOTcsNyArOTcsMTAgQEAg
cHJpdmF0ZToKICAgICAgICAgUmV0YWluUHRyPE5TQXJyYXk+IGFjdGlvbnNGb3JFbGVtZW50KF9X
S0FjdGl2YXRlZEVsZW1lbnRJbmZvICosIFJldGFpblB0cjxOU0FycmF5PiBkZWZhdWx0QWN0aW9u
cykgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkTm90SGFuZGxlVGFwQXNDbGljayhjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOwogICAgICAgICBVSVZpZXdDb250cm9sbGVyICpw
cmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKSBvdmVycmlkZTsKLSNlbmRpZgorI2VuZGlmIC8vIFBM
QVRGT1JNKElPUykKKworICAgICAgICBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0
KCkgb3ZlcnJpZGU7CisKICAgICAgICAgdm9pZCBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFu
Z2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAogICAgICAgICBVSURlbGVn
YXRlJiBtX3VpRGVsZWdhdGU7CkBAIC0xMzAsNiArMTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Ym9vbCB3ZWJWaWV3RGlkTm90SGFuZGxlVGFwQXNDbGlja0F0UG9pbnQgOiAxOwogICAgICAgICBi
b29sIHByZXNlbnRpbmdWaWV3Q29udHJvbGxlckZvcldlYlZpZXcgOiAxOwogI2VuZGlmCisgICAg
ICAgIGJvb2wgZGF0YURldGVjdGlvbkNvbnRleHRGb3JXZWJWaWV3IDogMTsKICAgICAgICAgYm9v
bCB3ZWJWaWV3SW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZCA6IDE7CiAKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW0KaW5kZXggMmJlZDQ0OTE2YWZhZmJmMDQ3ZGU5YmM0YTBmYjAxNGE4ZGNkZTI2MC4u
NDQwOTUzN2FmOTlhZTY1ZDcwMDVjODA1YmMyMGEzNzRhYmMxNzY1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEwMSw2ICsxMDEsNyBAQCB2
b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQog
ICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWROb3RIYW5kbGVUYXBBc0NsaWNrQXRQb2lu
dCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZE5v
dEhhbmRsZVRhcEFzQ2xpY2tBdFBvaW50OildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnByZXNl
bnRpbmdWaWV3Q29udHJvbGxlckZvcldlYlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihfcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyRm9yV2ViVmlldzopXTsKICNl
bmRpZgorICAgIG1fZGVsZWdhdGVNZXRob2RzLmRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmll
dyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kYXRhRGV0ZWN0aW9u
Q29udGV4dEZvcldlYlZpZXc6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0ltYWdl
T3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkOildOwog
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC00NDEsNiArNDQyLDE4IEBAIFVJVmlld0Nv
bnRyb2xsZXIgKlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIo
KQogCiAjZW5kaWYKIAorTlNEaWN0aW9uYXJ5ICpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGF0YURl
dGVjdGlvbkNvbnRleHQoKQoreworICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRo
b2RzLmRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldykKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7
CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4gW3N0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oZGVsZWdhdGUpIF9kYXRh
RGV0ZWN0aW9uQ29udGV4dEZvcldlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlld107Cit9CisK
IHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5n
ZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkKIHsKICAgICBpZiAoIW1fdWlEZWxl
Z2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3SW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hh
bmdlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQppbmRleCAxMGZiYzdlZWYyM2RlNWVhYjAzOGRhNjRiOWI5ZDRlMjM1OTlkYjg4
Li41MDYzOWU1Mzc1MzVmYTJmY2VhZjA4YzcxZjRmZjQ0YWI4ZWRlZDE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0y
NCw5ICsyNCwxMiBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKIAorI2ltcG9ydCAiQVBJVUlD
bGllbnQuaCIKICNpbXBvcnQgIkRhdGFEZXRlY3Rpb25SZXN1bHQuaCIKKyNpbXBvcnQgIkxvYWRQ
YXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKIAogI2ltcG9ydCA8V2Vi
Q29yZS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NG
Lmg+CkBAIC02OCw0ICs3MSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50RmlsdGVyRGlk
QmxvY2tMb2FkRm9yRnJhbWUoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlCiB9CiAjZW5kaWYK
IAordm9pZCBXZWJQYWdlUHJveHk6OmFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMoTG9hZFBhcmFt
ZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQoreworICAgIGxvYWRQYXJhbWV0ZXJzLmRhdGFEZXRlY3Rp
b25Db250ZXh0ID0gbV91aUNsaWVudC0+ZGF0YURldGVjdGlvbkNvbnRleHQoKTsKK30KKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1YjA1ZDJmYWRj
OTUyNGQ2MTBmZGEzMWYzMmIxMGI5MTY4YjgxZGE2Li42MGE3NGZkY2M3NmYxMjRhMzgwODQ0YWI3
ZDQ3YjM3NmEwODExMTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKICNp
bmNsdWRlICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJFdmVudERpc3Bh
dGNoZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oIgogI2luY2x1ZGUg
Ik5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKQEAgLTkwNiw2ICs5MDcsMTIgQEAgYm9vbCBXZWJQ
YWdlUHJveHk6Om1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgVVJM
JiB1cmwsIFNhbmRib3gKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmICFQTEFURk9STShDT0NP
QSkKK3ZvaWQgV2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKExvYWRQYXJh
bWV0ZXJzJikKK3sKK30KKyNlbmRpZgorCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdl
UHJveHk6OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6
Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCkBAIC05MjAsMTEgKzky
NywxNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdAogICAgIGlmICghaXNWYWxpZCgpKQogICAg
ICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwogCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0g
bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShyZXF1ZXN0LnVybCgpLCBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsK
KyAgICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9u
SUQoKTsKKyAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICBsb2FkUGFy
YW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gKHVpbnQ2NF90KXNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k7CisgICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2Vy
RGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkp
OworICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRl
bnNpb25IYW5kbGUocmVxdWVzdC51cmwoKSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSk7CiAgICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pCiAgICAgICAgIG1fcHJvY2Vzcy0+
d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRSZXF1ZXN0KG5hdmlnYXRpb24tPm5h
dmlnYXRpb25JRCgpLCByZXF1ZXN0LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCAodWludDY0X3Qp
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9y
bU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBhZGRQ
bGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKKworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3Bh
Z2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAog
ICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwpAQCAtOTU5LDEwICs5NzIsMTYgQEAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVVUkxTdHJpbmcsIGNvbnMKIAogICAgIFN0cmluZyByZXNvdXJjZURpcmVjdG9yeVBhdGgg
PSByZXNvdXJjZURpcmVjdG9yeVVSTC5maWxlU3lzdGVtUGF0aCgpOwogCi0gICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlKHJlc291cmNlRGlyZWN0b3J5UGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6UmVhZE9ubHksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIExvYWRQYXJhbWV0ZXJz
IGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmln
YXRpb24tPm5hdmlnYXRpb25JRCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSBmaWxl
VVJMOworICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSAo
dWludDY0X3QpU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3c7Cisg
ICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOworICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZShyZXNvdXJjZURpcmVjdG9yeVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJl
YWRPbmx5LCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBhZGRQ
bGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKKwogICAgIG1fcHJvY2Vzcy0+
YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChyZXNvdXJjZURpcmVjdG9yeVVSTCk7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChuYXZpZ2F0aW9uLT5u
YXZpZ2F0aW9uSUQoKSwgZmlsZVVSTCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgKHVpbnQ2NF90
KVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBVc2VyRGF0YShw
cm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9w
YWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVl
c3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZl
bmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwpA
QCAtOTgyLDggKzEwMDEsMTcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
Ojpsb2FkRGF0YShBUEk6OkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgTUkKICAgICBpZiAoIWlz
VmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAorICAgIExvYWRQYXJh
bWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9
IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmRhdGEgPSBk
YXRhLT5kYXRhUmVmZXJlbmNlKCk7CisgICAgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUgPSBNSU1F
VHlwZTsKKyAgICBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUgPSBlbmNvZGluZzsKKyAgICBs
b2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nID0gYmFzZVVSTDsKKyAgICBsb2FkUGFyYW1ldGVy
cy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KHVzZXJEYXRhKS5nZXQoKSk7CisgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFy
YW1ldGVycyk7CisKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFz
ZVVSTCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShu
YXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgZGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBNSU1FVHlw
ZSwgZW5jb2RpbmcsIGJhc2VVUkwsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3Rz
VG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlE
KTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAg
cmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CkBAIC0xMDA0LDggKzEwMzIsMTYgQEAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyhjb25zdCBTdHJp
bmcmIGh0bWxTdHJpbmcsIGMKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hU
b1dlYlByb2Nlc3MoKTsKIAorICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAg
IGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgp
OworICAgIGxvYWRQYXJhbWV0ZXJzLnN0cmluZyA9IGh0bWxTdHJpbmc7CisgICAgbG9hZFBhcmFt
ZXRlcnMuZW5jb2RpbmdOYW1lID0gQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKTsKKyAgICBsb2Fk
UGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nID0gYmFzZVVSTDsKKyAgICBsb2FkUGFyYW1ldGVycy51
c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhKS5nZXQoKSk7CisgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1l
dGVycyk7CisKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVS
TCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkSFRNTFN0cmlu
ZyhuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaHRtbFN0cmluZywgYmFzZVVSTCwgVXNlckRh
dGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKSks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRT
dHJpbmcobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25z
aXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24p
OwpAQCAtMTAzMyw5ICsxMDY5LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRl
SFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAgaWYg
KG1fbWFpbkZyYW1lKQogICAgICAgICBtX21haW5GcmFtZS0+c2V0VW5yZWFjaGFibGVVUkwodW5y
ZWFjaGFibGVVUkwpOwogCisgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CisgICAg
bG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gMDsKKyAgICBsb2FkUGFyYW1ldGVycy5zdHJp
bmcgPSBodG1sU3RyaW5nOworICAgIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcgPSBiYXNl
VVJMOworICAgIGxvYWRQYXJhbWV0ZXJzLnVucmVhY2hhYmxlVVJMU3RyaW5nID0gdW5yZWFjaGFi
bGVVUkw7CisgICAgbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcg
PSBtX2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkw7CisgICAgbG9hZFBhcmFtZXRlcnMudXNlckRh
dGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0
YSkuZ2V0KCkpOworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMp
OworCiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGJhc2VVUkwpOwog
ICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCh1bnJlYWNoYWJsZVVSTCk7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJuYXRlSFRN
TFN0cmluZyhodG1sU3RyaW5nLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCwgbV9mYWlsaW5nUHJv
dmlzaW9uYWxMb2FkVVJMLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFu
ZGxlcyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcobG9hZFBhcmFtZXRlcnMp
LCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQo
KTsKIH0KIApAQCAtMTA1MCw3ICsxMDk1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUGxh
aW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBBUEk6Ok9iamVjdCogdXNlckRhCiAg
ICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAg
IG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmxh
bmtVUkwoKS5zdHJpbmcoKSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkxvYWRQbGFpblRleHRTdHJpbmcoc3RyaW5nLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdlSUQpOworICAgIExv
YWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRp
b25JRCA9IDA7CisgICAgbG9hZFBhcmFtZXRlcnMuc3RyaW5nID0gc3RyaW5nOworICAgIGxvYWRQ
YXJhbWV0ZXJzLk1JTUVUeXBlID0gQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIik7CisgICAgbG9h
ZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0
c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRl
cnMobG9hZFBhcmFtZXRlcnMpOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb2FkU3RyaW5nKGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vz
cy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKQEAgLTEwNjUsNyArMTExNywx
NSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2Vi
QXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3Bh
Z2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGlu
Z0FQSVJlcXVlc3RVUkwodHJhbnNhY3Rpb24sIGJsYW5rVVJMKCkuc3RyaW5nKCkpOwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkV2ViQXJjaGl2ZURhdGEod2Vi
QXJjaGl2ZURhdGEtPmRhdGFSZWZlcmVuY2UoKSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9y
bU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBMb2Fk
UGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKKyAgICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9u
SUQgPSAwOworICAgIGxvYWRQYXJhbWV0ZXJzLmRhdGEgPSB3ZWJBcmNoaXZlRGF0YS0+ZGF0YVJl
ZmVyZW5jZSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlID0gQVNDSUlMaXRlcmFsKCJh
cHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiKTsKKyAgICBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05h
bWUgPSBBU0NJSUxpdGVyYWwoInV0Zi0xNiIpOworICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRh
ID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEp
LmdldCgpKTsKKyAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsK
KworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEobG9hZFBh
cmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVy
KCkuc3RhcnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDQwNjYxM2E4NDM2M2E1MGEyOTg0MTM1OWI5ZjVjZGEyYjEwMjZkYTQuLmQzMDZlYzg0ODUy
MTIzZDYxNzY4NzgxYjc0YTM4OGY4NGUxNWI2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTIwNSw2ICsyMDUsNyBAQCBzdHJ1Y3QgQXR0cmlidXRlZFN0cmlu
ZzsKIHN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIHN0cnVjdCBFZGl0aW5nUmFuZ2U7CiBzdHJ1Y3Qg
RWRpdG9yU3RhdGU7CitzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhOwogc3RydWN0IFByaW50SW5mbzsKIHN0cnVjdCBXZWJQb3B1cEl0ZW07CkBAIC0z
NjcsNiArMzY4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbG9zZVBhZ2UoYm9vbCBzdG9wUmVz
cG9uc2l2ZW5lc3NUaW1lcik7CiAKKyAgICB2b2lkIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMo
TG9hZFBhcmFtZXRlcnMmKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkUmVxdWVz
dChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6
U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXMsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxw
dHIpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVVSTCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZERh
dGEoQVBJOjpEYXRhKiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNv
ZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxs
cHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25T
aGVldEFzc2lzdGFudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNo
ZWV0QXNzaXN0YW50LmgKaW5kZXggZTA1YWVlMDI1YjllZWY3Y2JmNGFmNWNiYjI5ZDY0Njg2NDFi
ODU4MS4uYzZiNTRkZGJhNTFkODgyZGJiMmE1YjU3ODVjY2EwZDA2ZmJlZTRkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50
LmgKQEAgLTI1LDEwICsyNSwxMCBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogCi0jaW1wb3J0ICJE
YXRhRGV0ZWN0b3JzVUlTUEkuaCIKICNpbXBvcnQgIkdlc3R1cmVUeXBlcy5oIgogI2ltcG9ydCAi
V0tBY3Rpb25TaGVldC5oIgogI2ltcG9ydCA8VUlLaXQvVUlQb3BvdmVyQ29udHJvbGxlci5oPgor
I2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3JzVUlTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDYyNjBk
ZTQ2MTFhOGVhZGE1Y2MxNTI5YzEzM2M3NTFjNjgwNjNmYzUuLmIzZTQ5ODI1NDBiY2NhZTE5Yjcx
MjhjYTY0OGRkM2E2MGIxMGI0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0yOSw3ICsyOSw2IEBA
CiAjaWYgUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgotI2ltcG9ydCAi
RGF0YURldGVjdG9yc1VJU1BJLmgiCiAjaW1wb3J0ICJFZGl0aW5nUmFuZ2UuaCIKICNpbXBvcnQg
Ik1hbmFnZWRDb25maWd1cmF0aW9uU1BJLmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2
ZW50LmgiCkBAIC02NSw2ICs2NCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0
ZWN0b3JzQ29yZVNQSS5oPgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3JzVUlTUEkuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRRdWFkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9h
cmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF0aC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI3NjQ2NjE3NjMzNDYxMWYyYjAz
MGU0NTllZjcxNmI4NmNlZGJhMzEuLmZhNjhhYTE3NGYyZmFhNjU2N2E2NTU5MTAyOGRhYWFkMDk0
NTdjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTU5Niw2ICs1OTYsOSBAQAogCQkyOUFEMzA5NjE2NEI0QzkzMDA3MkRFQTkg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gKi87IH07CiAJCTI5Q0Q1NUFBMTI4RTI5NEYw
MDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRDU1QTgxMjhFMjk0RjAwMTMz
Qzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggKi87IH07CiAJCTI5Q0Q1
NUFCMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0Q1NUE5
MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAq
LzsgfTsKKwkJMkQxMDg3NjAxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTA4NzVFMUQy
QzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgKi87IH07CisJCTJEMTA4NzYxMUQy
QzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxMDg3NUYxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQ
YXJhbWV0ZXJzLmggKi87IH07CisJCTJEMTA4NzYzMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFy
YW1ldGVyc0NvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkQxMDg3NjIxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzQ29jb2EubW0g
Ki87IH07CiAJCTJEMTI1QzVFMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTI1
QzVDMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJ
MkQxMjVDNUYxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTI1QzVEMTg1
N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gKi87IH07CiAJCTJE
MUI1RDVEMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQxQjVENUIxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CkBAIC02ODcsNiArNjkwLDcgQEAKIAkJMkRBRjA2RDYxOEJEMUE0
NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUYwNkQ0MThCRDFBNDcwMDgxQ0VC
MSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggKi87IH07CiAJCTJEQUYwNkQ3MThC
RDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjA2RDUxOEJEMUE0NzAw
ODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gKi87IH07CiAJCTJEQUY0
RkZCMUI2MzYxODEwMDYwMTNENiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjRGRkExQjYzNjE4MTAw
NjAxM0Q2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAgKi87IH07CisJCTJEQzRDRjdCMUQy
REUyNEIwMEVDQ0M5NCAvKiBXZWJQYWdlQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREM0Q0Y3QTFEMkRFMjRCMDBFQ0NDOTQgLyogV2ViUGFn
ZUNvY29hLm1tICovOyB9OwogCQkyREM2RDlDMzE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3
Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEQzZEOUMxMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250
ZW50UHJvdmlkZXJSZWdpc3RyeS5oICovOyB9OwogCQkyREM2RDlDNDE4QzQ0QTYxMDA0M0JBRDQg
LyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyog
V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gKi87IH07CiAJCTJERDEyQTA4MUE4
MTc3RjMwMDJDNzRFNiAvKiBXS1BhZ2VSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkREMTJBMDcxQTgxNzdGMzAw
MkM3NEU2IC8qIFdLUGFnZVJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzYsNyArMTc0MCw2IEBACiAJ
CUNFMTFBRDUyMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1
IC8qIENvZGVTaWduaW5nLmggKi87IH07CiAJCUNFMUEwQkQyMUE0OEU2QzYwMDU0RUY3NCAvKiBB
c3NlcnRpb25TZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2Vz
U1BJLmggKi87IH07CiAJCUNFMUEwQkQzMUE0OEU2QzYwMDU0RUY3NCAvKiBDb3JlUERGU1BJLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJDRDFB
NDhFNkM2MDA1NEVGNzQgLyogQ29yZVBERlNQSS5oICovOyB9OwotCQlDRTFBMEJENDFBNDhFNkM2
MDA1NEVGNzQgLyogRGF0YURldGVjdG9yc1VJU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJDRTFBNDhFNkM2MDA1NEVGNzQgLyogRGF0YURl
dGVjdG9yc1VJU1BJLmggKi87IH07CiAJCUNFMUEwQkQ1MUE0OEU2QzYwMDU0RUY3NCAvKiBNYW5h
Z2VkQ29uZmlndXJhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UxQTBCQ0YxQTQ4RTZDNjAwNTRFRjc0IC8qIE1hbmFnZWRDb25maWd1cmF0
aW9uU1BJLmggKi87IH07CiAJCUNFMUEwQkQ2MUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQwMUE0
OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDcxQTQ4RTZDNjAwNTRF
Rjc0IC8qIFRleHRJbnB1dFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oICov
OyB9OwpAQCAtMjYwMSw2ICsyNjA0LDkgQEAKIAkJMjlDRDU1QTkxMjhFMjk0RjAwMTMzQzg1IC8q
IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMDAzNTIyMUJDNzQxNDgwMERBODcxNiAv
KiBEZXByZWNhdGVkUERGUGx1Z2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERlcHJlY2F0ZWRQREZQbHVnaW4uaDsgcGF0aCA9IFBERi9EZXByZWNhdGVkUERGUGx1Z2luLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMDAzNTIzMUJDNzQxNDgwMERBODcxNiAv
KiBEZXByZWNhdGVkUERGUGx1Z2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gRGVwcmVjYXRlZFBERlBsdWdpbi5tbTsgcGF0aCA9IFBERi9EZXByZWNhdGVkUERG
UGx1Z2luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDEwODc1RTFEMkM1NzNF
MDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTG9hZFBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyRDEwODc1RjFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9hZFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMkQxMDg3NjIxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0
ZXJzQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2Fk
UGFyYW1ldGVyc0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDEyNUM1
QzE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdHZXN0dXJlQ29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRDEyNUM1RDE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1
cmVDb250cm9sbGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDFCNUQ1QTE4NTg2NTk5MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MDMsNiArMjcwOSw3IEBACiAJCTJEQUYwNkQ1MThC
RDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlci5tbTsgcGF0aCA9IGlvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREFGMDZEODE4QkQyM0JBMDA4MUNFQjEgLyogU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluOyBwYXRoID0gaW9zL1NtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJE
QUY0RkZBMUI2MzYxODEwMDYwMTNENiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlld0dlc3R1cmVDb250cm9sbGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRDNENGN0ExRDJERTI0QjAwRUNDQzk0
IC8qIFdlYlBhZ2VDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYlBhZ2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRDNkQ5
QzExOEM0NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViVmlld0NvbnRlbnRQcm92aWRl
clJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQzZEOUMyMThDNDRB
NjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0NvbnRlbnRQcm92aWRl
clJlZ2lzdHJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREQxMkEwNzFBODE3
N0YzMDAyQzc0RTYgLyogV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4NDIsNyArMzg0OSw2IEBACiAJCUNFMTFB
RDUxMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb2RlU2lnbmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXNzZXJ0aW9uU2VydmljZXNTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCQ0QxQTQ4RTZDNjAwNTRFRjc0IC8qIENv
cmVQREZTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZVBERlNQSS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRTFBMEJDRTFBNDhFNkM2MDA1NEVGNzQg
LyogRGF0YURldGVjdG9yc1VJU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERhdGFEZXRlY3RvcnNVSVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFB
MEJDRjFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRD
Q1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUQ0NTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJ
bnB1dFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0SW5wdXRTUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0ODQsNiArNDQ5MCw4IEBACiAJCQkJ
QkNDRjZCMjMxMkM5M0U3QTAwOEY5QzM1IC8qIEltYWdlT3B0aW9ucy5oICovLAogCQkJCTFBOTJE
QzEyMTJGOEJBQjkwMDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0LmNwcCAqLywKIAkJCQkxQTky
REMxMDEyRjhCQTQ2MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29udGV4dC5oICovLAorCQkJCTJEMTA4
NzVFMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgKi8sCisJCQkJMkQxMDg3
NUYxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmggKi8sCiAJCQkJMkQ1MDM2NkEx
QkNERTE3OTAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oICovLAogCQkJCUMwMkJG
RjE1MTI1MTRGRDgwMDlDQ0JFQSAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkJ
MzFFQTI1RDMxMzRGNzhENjAwNUIxNDUyIC8qIE5hdGl2ZVdlYk1vdXNlRXZlbnQuaCAqLywKQEAg
LTQ4OTksNiArNDkwNyw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyRDI5RUNDRTE5MkYyQzJF
MDA5ODRCNzggLyogUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJ
CQkJMkQyOUVDQ0YxOTJGMkMyRTAwOTg0Qjc4IC8qIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZy
ZXNoTW9uaXRvci5tbSAqLywKKwkJCQkyREM0Q0Y3QTFEMkRFMjRCMDBFQ0NDOTQgLyogV2ViUGFn
ZUNvY29hLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC01MjM4LDYgKzUyNDcsNyBAQAogCQkJCTM3QkVDNERFMTk0OTE0ODYwMDhC
NDI4NiAvKiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tICovLAogCQkJCUM1NUY5MTZD
MUM1OTVFNDQwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0LmggKi8sCiAJCQkJQzU1Rjkx
NkQxQzU5NUU0NDAwMjlFOTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQubW0gKi8sCisJCQkJMkQx
MDg3NjIxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzQ29jb2EubW0gKi8sCiAJCQkJ
MUFCMUY3OEUxRDFCMzRBNjAwN0M5QkQxIC8qIFdlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
ICovLAogCQkJCTM3QzRDMDkyMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkuaCAqLywKIAkJ
CQkzN0M0QzA5MTE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5Lm1tICovLApAQCAtNzE2MCw3
ICs3MTcwLDYgQEAKIAkJCQlDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2Vy
dmljZXNTUEkuaCAqLywKIAkJCQlDREEwNDFGMzFBQ0UyMTA1MDA0QTEzRUMgLyogQmFja0JvYXJk
U2VydmljZXNTUEkuaCAqLywKIAkJCQlDRTFBMEJDRDFBNDhFNkM2MDA1NEVGNzQgLyogQ29yZVBE
RlNQSS5oICovLAotCQkJCUNFMUEwQkNFMUE0OEU2QzYwMDU0RUY3NCAvKiBEYXRhRGV0ZWN0b3Jz
VUlTUEkuaCAqLywKIAkJCQlDRTFBMEJDRjFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZp
Z3VyYXRpb25TUEkuaCAqLywKIAkJCQk1NzlEMThCNzFDQ0ZFMzRCMDBCMTk3NEMgLyogUGhvdG9z
U1BJLmggKi8sCiAJCQkJQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovLApA
QCAtNzQ2Myw3ICs3NDcyLDYgQEAKIAkJCQk1MTJBOTc2QTE4MEUwOUI4MDAzOUExNDkgLyogRGF0
YWJhc2VQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwMzJGMUUx
ODBGNzkxNzAwOTYxQkI3IC8qIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTVGOTE3MTFDNTk2NzZFMDAyOUU5MkQgLyogRGF0YURl
dGVjdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0UxQTBCRDQxQTQ4RTZDNjAwNTRF
Rjc0IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNzUzODAx
ODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
ODkxQjZDMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUMxNDI3MDIxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkLmggaW4g
SGVhZGVycyAqLywKQEAgLTc4NTUsNiArNzg2Myw3IEBACiAJCQkJN0M4NUZEN0MxOTM0MTVBODAw
MDE3N0M0IC8qIFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdDODVGRDgwMTkzNDE2NjUwMDAxNzdDNCAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRDU5OEFDMTEyQjdGREYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0
b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDEwODc2MTFEMkM1NzNFMDBCODVGODIgLyogTG9h
ZFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDk3MTBGNDM3QUYwMDU4QzE1
QSAvKiBXZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTA0M0EwOTEyNEQxMUE5MDBG
RkJGQjUgLyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQz
RjZBMTI1MTREOEIwMEZGQkZCNSAvKiBXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKQEAgLTg4ODAsNiArODg4OSw3IEBACiAJCQkJQzU5QzRBNTgxOEI4MTE3NDAw
N0JEQ0I2IC8qIEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxNUU3NzI3MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNFRTk2NkMxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMkQxMDg3NjMxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJz
Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMUEzMTczNTEzNENFQTgwMDA3QzlBNEYgLyog
QXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMkY1ODk2MTJBODgzODgw
MDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxMkY1ODk4MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04OTQwLDYgKzg5NTAsNyBAQAogCQkJCTFB
NjQyMjk5MTJERDAyOTIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzI2NTIxNjExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0Fy
ZWFQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTY0MjMwODEyREQwOUVCMDBDQUFFMkMg
LyogRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkyREM0Q0Y3QjFEMkRFMjRCMDBFQ0NDOTQgLyogV2ViUGFnZUNvY29hLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOENGRUNFOTQxNDkwRjE0MDAwMkFBQTMyIC8qIEVkaXRvclN0YXRlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxQjE1QTg0MTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0
aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUE1NzVGQTE0OTZCNTI2MDBBNEVFMDYg
LyogRXZlbnREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTA2Myw2ICs5MDc0LDcg
QEAKIAkJCQkxQTJEODJBNjEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTJEODJBODEyN0Y0RUFCMDAxRUI5NjIgLyogTlBSZW1vdGVPYmpl
Y3RNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyMTYxQjExMUYzNzY2NDAwOEFEMEY1IC8q
IE5QUnVudGltZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyRDEwODc2MDFEMkM1
NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEy
MTYyQjAxMUYzODk3MTAwOEFEMEY1IC8qIE5QUnVudGltZVV0aWxpdGllcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTJEODRBNDEyN0Y2QUQxMDAxRUI5NjIgLyogTlBWYXJpYW50RGF0YS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzhBQ0ExNDE2NjcwRDg5MDA0QzE5NDEgLyogT2JqQ09iamVj
dEdyYXBoLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDJkNzEyYmM3MGRlMWFlYTViMGE0Njk3ZTE2MjNhODU1MjMzYzg0MmYuLjZhZjA3NmU4
M2UzMGM0ZWE3ZWZiODdlODhiMWE0NTlkZDk5ZTVlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0xNjI5LDcgKzE2MjksNyBAQCBSZW1vdGVBWE9iamVjdFJlZiBXZWJG
cmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiAgICAgcmV0dXJu
IHdlYlBhZ2UtPmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsKIH0KICAgICAKLU5TQ2FjaGVk
VVJMUmVzcG9uc2UqIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZShEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgTlNDYWNoZWRVUkxSZXNwb25z
ZSogcmVzcG9uc2UpIGNvbnN0CitOU0NhY2hlZFVSTFJlc3BvbnNlICpXZWJGcmFtZUxvYWRlckNs
aWVudDo6d2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKSBjb25zdAogewogICAgIFdl
YlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpAQCAt
MTYzOCw2ICsxNjM4LDE1IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojp3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuCiAgICAgcmV0dXJuIHdl
YlBhZ2UtPmluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KCkuc2hvdWxkQ2FjaGVSZXNw
b25zZSh3ZWJQYWdlLCBtX2ZyYW1lLCBpZGVudGlmaWVyKSA/IHJlc3BvbnNlIDogbmlsOwogfQog
CitOU0RpY3Rpb25hcnkgKldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkYXRhRGV0ZWN0aW9uQ29udGV4
dCgpCit7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAo
IXdlYlBhZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gd2ViUGFnZS0+ZGF0
YURldGVjdGlvbkNvbnRleHQoKTsKK30KKwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiBi
b29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudChj
b25zdCBTdHJpbmcmIC8qbWltZVR5cGUqLykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCBlMjA3NDA0NTk3ODEwNTllMGU4YzMzMTA4MGJjY2I5MjMyMjFhNjk0Li5lZTZi
ZWJkNjg0OWFmNWQyZTQ4YzNmOTk0ZWRjMjI2M2I1MTYyZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCkBAIC0yMjEsNiArMjIxLDggQEAgcHJpdmF0ZToKICAgICBSZW1vdGVBWE9i
amVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgb3ZlcnJpZGU7CiAgICAgCiAgICAg
TlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBj
b25zdCBvdmVycmlkZTsKKworICAgIE5TRGljdGlvbmFyeSAqZGF0YURldGVjdGlvbkNvbnRleHQo
KSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgYm9vbCBzaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1
bWVudChjb25zdCBTdHJpbmcmIC8qbWltZVR5cGUqLykgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29h
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45OGFlYzY0ZDU5NTA5NjE5MzY4MzFiZWU1YzI0ZjU5N2Y1ODYwOTk3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJQYWdlLmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lk
IFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJh
bWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKK3sKKyAgICBtX2RhdGFEZXRlY3Rpb25Db250ZXh0ID0g
bG9hZFBhcmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQ7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTgzMTNjMTE4NGU1NmQ4Y2Y1Zjli
M2NjNDQ5ODdkZmM5ODVkZjkzNy4uNzBiMTJhZGMwYzhlOTA3NGQ0NzBkNTkwODFiMDIzYTNmZmEy
MDg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkLmgiCisjaW5jbHVkZSAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKICNpbmNsdWRlICJOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKQEAgLTExMzksMjEgKzExNDAsMjkg
QEAgdm9pZCBXZWJQYWdlOjpsb2FkVVJMSW5GcmFtZShjb25zdCBTdHJpbmcmIHVybCwgdWludDY0
X3QgZnJhbWVJRCkKICAgICBmcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWQoRnJhbWVM
b2FkUmVxdWVzdChmcmFtZS0+Y29yZUZyYW1lKCksIFJlc291cmNlUmVxdWVzdChVUkwoVVJMKCks
IHVybCkpLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdykpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHVpbnQ2NF90IHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3ksIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyNpZiAhUExBVEZPUk0oQ09DT0Ep
Cit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExv
YWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKK3sKK30KKyNlbmRpZgorCit2b2lkIFdlYlBh
Z2U6OmxvYWRSZXF1ZXN0KGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKIHsK
ICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcih0aGlzKTsKIAotICAgIG1f
cGVuZGluZ05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKKyAgICBtX3BlbmRpbmdOYXZpZ2F0
aW9uSUQgPSBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQ7CiAKLSAgICBtX3NhbmRib3hFeHRl
bnNpb25UcmFja2VyLmJlZ2luTG9hZChtX21haW5GcmFtZS5nZXQoKSwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSk7CisgICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci5iZWdpbkxvYWQobV9tYWlu
RnJhbWUuZ2V0KCksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogCiAg
ICAgLy8gTGV0IHRoZSBJbmplY3RlZEJ1bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0
aGUgbG9hZCwgcGFzc2luZyB0aGUgdXNlciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcwogICAgIC8v
IHRvIGFsbCB0aGUgY2xpZW50IHRvIHNldCB1cCBhbnkgbmVlZGVkIHN0YXRlLgotICAgIG1fbG9h
ZGVyQ2xpZW50LndpbGxMb2FkVVJMUmVxdWVzdCh0aGlzLCByZXF1ZXN0LCBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQud2lsbExvYWRVUkxSZXF1ZXN0KHRoaXMsIGxvYWRQ
YXJhbWV0ZXJzLnJlcXVlc3QsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHMobG9hZFBhcmFtZXRlcnMudXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKwor
ICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAog
ICAgIC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4KLSAgICBGcmFtZUxvYWRSZXF1ZXN0
IGZyYW1lTG9hZFJlcXVlc3QobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZXF1ZXN0LCBTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0gICAgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSBleHRlcm5hbFVSTHNQb2xpY3kgPSBzdGF0aWNfY2FzdDxTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5PihzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsK
KyAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QobV9tYWluRnJhbWUtPmNvcmVG
cmFtZSgpLCBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBl
eHRlcm5hbFVSTHNQb2xpY3kgPSBzdGF0aWNfY2FzdDxTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5Pihsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKICAgICBm
cmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koZXh0ZXJuYWxV
UkxzUG9saWN5KTsKIAogICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLmxvYWRSZXF1
ZXN0KGZyYW1lTG9hZFJlcXVlc3QpOwpAQCAtMTE3OSw3ICsxMTg4LDcgQEAgdm9pZCBXZWJQYWdl
Ojpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2hhcmUKICAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWQo
RnJhbWVMb2FkUmVxdWVzdChtX21haW5GcmFtZS0+Y29yZUZyYW1lKCksIHJlcXVlc3QsIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBzdWJzdGl0dXRlRGF0YSkp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRTdHJpbmcodWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFVS
TCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQordm9pZCBXZWJQYWdlOjpsb2FkU3RyaW5nSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29u
c3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFodG1sU3RyaW5nLmlzTnVsbCgpICYmIGh0bWxTdHJp
bmcuaXM4Qml0KCkpIHsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaHRt
bFN0cmluZy5jaGFyYWN0ZXJzOCgpKSwgaHRtbFN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihMQ2hh
cikpOwpAQCAtMTE5MCwzOCArMTE5OSwzMyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRTdHJpbmcodWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0CiAgICAg
fQogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRhKGNvbnN0IExvYWRQ
YXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKLSAgICBVUkwgYmFzZVVSTCA9IGJh
c2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgYmFzZVVSTFN0
cmluZyk7Ci0gICAgbG9hZERhdGFJbXBsKG5hdmlnYXRpb25JRCwgc2hhcmVkQnVmZmVyLCBNSU1F
VHlwZSwgZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgdXNlckRhdGEpOwotfQorICAgIHBs
YXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAotdm9pZCBX
ZWJQYWdlOjpsb2FkSFRNTFN0cmluZyh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmlu
ZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCi17Ci0gICAgVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHko
KSA/IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGJhc2VVUkxTdHJpbmcpOwotICAgIGxvYWRTdHJp
bmcobmF2aWdhdGlvbklELCBodG1sU3RyaW5nLCBBU0NJSUxpdGVyYWwoInRleHQvaHRtbCIpLCBi
YXNlVVJMLCBVUkwoKSwgdXNlckRhdGEpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXpl
KCkpOworICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0Vt
cHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3Ry
aW5nKTsKKyAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBzaGFy
ZWRCdWZmZXIsIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVycy5lbmNvZGlu
Z05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFi
bGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZTo6bG9hZFN0cmluZyhjb25z
dCBMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXRlcnMpCiB7Ci0gICAgVVJMIGJhc2VVUkwgPSBi
YXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGJhc2VVUkxT
dHJpbmcpOwotICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9IHVucmVhY2hhYmxlVVJMU3RyaW5nLmlz
RW1wdHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCB1bnJlYWNoYWJsZVVSTFN0cmluZyk7Ci0gICAg
VVJMIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMID0gcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJp
bmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJM
U3RyaW5nKTsKLSAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zp
c2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMKTsK
LSAgICBsb2FkU3RyaW5nKDAsIGh0bWxTdHJpbmcsIEFTQ0lJTGl0ZXJhbCgidGV4dC9odG1sIiks
IGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCB1c2VyRGF0YSk7Ci0gICAgbV9tYWluRnJhbWUtPmNv
cmVGcmFtZSgpLT5sb2FkZXIoKS5zZXRQcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVS
TCh7IH0pOwotfQorICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJh
bWV0ZXJzKTsKIAotdm9pZCBXZWJQYWdlOjpsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCi17Ci0gICAgbG9hZFN0cmluZygw
LCBzdHJpbmcsIEFTQ0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIpLCBibGFua1VSTCgpLCBVUkwoKSwg
dXNlckRhdGEpOworICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmlu
Zy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNl
VVJMU3RyaW5nKTsKKyAgICBsb2FkU3RyaW5nSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9u
SUQsIGxvYWRQYXJhbWV0ZXJzLnN0cmluZywgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGJhc2VV
UkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
bG9hZFdlYkFyY2hpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2ViQXJjaGl2ZURh
dGEsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0
ZUhUTUxTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQogewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHdlYkFyY2hpdmVEYXRhLmRhdGEoKSksIHdl
YkFyY2hpdmVEYXRhLnNpemUoKSAqIHNpemVvZih1aW50OF90KSk7Ci0gICAgbG9hZERhdGFJbXBs
KDAsIHNoYXJlZEJ1ZmZlciwgQVNDSUlMaXRlcmFsKCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUi
KSwgQVNDSUlMaXRlcmFsKCJ1dGYtMTYiKSwgYmxhbmtVUkwoKSwgVVJMKCksIHVzZXJEYXRhKTsK
KyAgICBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CisK
KyAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgp
ID8gYmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZyk7
CisgICAgVVJMIHVucmVhY2hhYmxlVVJMID0gbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVVUkxT
dHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVucmVh
Y2hhYmxlVVJMU3RyaW5nKTsKKyAgICBVUkwgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwgPSBsb2Fk
UGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwo
KSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJp
bmcpOworICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9u
YWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwocHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwpOworICAg
IGxvYWRTdHJpbmdJbXBsKDAsIGxvYWRQYXJhbWV0ZXJzLnN0cmluZywgQVNDSUlMaXRlcmFsKCJ0
ZXh0L2h0bWwiKSwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIGxvYWRQYXJhbWV0ZXJzLnVzZXJE
YXRhKTsKKyAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lv
bmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKHsgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bmF2
aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIEludFBv
aW50IGRvY3VtZW50UG9pbnQsIEludFBvaW50IHNjcmVlblBvaW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZmFlYjI1ZDc4NDU3ZTc1Y2E2MWMy
OWY2YWU4MGRkNmE4NTNjNDYyNC4uYWU1MWNmZWUzZWRmMzc3MzU2NGFlZTRjODVkYzFiZGI4MDY3
YTZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC0xOTIsNiArMTkyLDcgQEAgc3RydWN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTsKIHN0cnVj
dCBFZGl0aW5nUmFuZ2U7CiBzdHJ1Y3QgRWRpdG9yU3RhdGU7CiBzdHJ1Y3QgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb247CitzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUHJp
bnRJbmZvOwogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZTsKQEAgLTg1Myw2ICs4NTQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91
bGRVc2VQREZQbHVnaW4oKSBjb25zdDsKICAgICBib29sIHBkZlBsdWdpbkVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX3BkZlBsdWdpbkVuYWJsZWQ7IH0KICAgICB2b2lkIHNldFBERlBsdWdpbkVu
YWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fcGRmUGx1Z2luRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKwor
ICAgIE5TRGljdGlvbmFyeSAqZGF0YURldGVjdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X2RhdGFEZXRlY3Rpb25Db250ZXh0LmdldCgpOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgc2F2ZVBE
RlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxvbmcgc2l6ZSk7CkBAIC05OTgsMTggKzEwMDEsMTcgQEAgcHJpdmF0ZToKICAg
ICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAogICAgIHZvaWQgbG9hZERhdGFJ
bXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZhaWxpbmdV
UkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkU3RyaW5nKHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZhaWxpbmdVUkwsIGNvbnN0
IFVzZXJEYXRhJik7CisgICAgdm9pZCBsb2FkU3RyaW5nSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2Vy
RGF0YSYpOwogCiAgICAgYm9vbCBwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBXZWJD
b3JlOjpVUkwmKTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKCk7Ci0gICAg
dm9pZCBsb2FkUmVxdWVzdCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIHVpbnQ2NF90
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9p
ZCBsb2FkRGF0YSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkSFRN
TFN0cmluZyh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywg
Y29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgbG9hZEFs
dGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFN0cmluZyYgcHJv
dmlzaW9uYWxMb2FkRXJyb3JVUkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkUGxh
aW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBs
b2FkV2ViQXJjaGl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgVXNlckRh
dGEmKTsKKyAgICB2b2lkIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExv
YWRQYXJhbWV0ZXJzJik7CisgICAgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBMb2FkUGFyYW1ldGVy
cyYpOworICAgIHZvaWQgbG9hZERhdGEoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsKKyAgICB2b2lk
IGxvYWRTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIGxvYWRBbHRlcm5h
dGVIVE1MU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRv
UERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50
UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogICAg
IHZvaWQgcmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCByZWxvYWRGcm9tT3JpZ2lu
LCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYpOwogICAgIHZvaWQgZ29Gb3J3YXJkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0
X3QpOwpAQCAtMTI4MCw2ICsxMjgyLDggQEAgcHJpdmF0ZToKIAogICAgIFZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOwogCisgICAgUmV0
YWluUHRyPE5TRGljdGlvbmFyeT4gbV9kYXRhRGV0ZWN0aW9uQ29udGV4dDsKKwogI2VsaWYgSEFW
RShBQ0NFU1NJQklMSVRZKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpKQogICAg
IEdSZWZQdHI8V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3Q+IG1fYWNjZXNzaWJpbGl0eU9iamVj
dDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAzZGU0Zjc1ZWY0OWM2NjRhNjc3YzY3YjBhNDI1ODFj
YTdiYWIyZmIzLi5iZTU0NmMxYzhmMjBiYTBmYTFhNGUzNjM4MzYwYzg0ZDI1ZjAyNTY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgpAQCAtMTMyLDEyICsxMzIsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgVHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAogICAgIExvYWRVUkxJ
bkZyYW1lKFN0cmluZyB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgTG9hZFJlcXVlc3QodWlu
dDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgdWlu
dDY0X3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgV2ViS2l0OjpVc2VyRGF0YSB1c2Vy
RGF0YSkKLSAgICBMb2FkRGF0YSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhLCBTdHJpbmcgTUlNRVR5cGUsIFN0cmluZyBlbmNvZGluZywgU3RyaW5nIGJhc2VV
UkwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgTG9hZEhUTUxTdHJpbmcodWludDY0
X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgaHRtbFN0cmluZywgU3RyaW5nIGJhc2VVUkwsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoU3RyaW5n
IGh0bWxTdHJpbmcsIFN0cmluZyBiYXNlVVJMLCBTdHJpbmcgdW5yZWFjaGFibGVVUkwsIFN0cmlu
ZyBwcm92aXNpb25hbExvYWRFcnJvclVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAg
ICBMb2FkUGxhaW5UZXh0U3RyaW5nKFN0cmluZyBzdHJpbmcsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEpCi0gICAgTG9hZFdlYkFyY2hpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSB3ZWJBcmNo
aXZlRGF0YSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBMb2FkUmVxdWVzdChzdHJ1
Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKKyAgICBMb2FkRGF0YShz
dHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKKyAgICBMb2FkU3Ry
aW5nKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQorICAgIExv
YWRBbHRlcm5hdGVIVE1MU3RyaW5nKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQ
YXJhbWV0ZXJzKQorCiAgICAgTmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soU3Ry
aW5nIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9p
bnQgc2NyZWVuUG9pbnQpCiAKICAgICBSZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCBib29s
IHJlbG9hZEZyb21PcmlnaW4sIGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxNjAyOTA5YmU4MDg0
Yjg1OTAzZDY4NWRhMjEzN2Q1N2M0ZGUzZGIwLi40MjJmZGE0MTY5ODAzNWZkNzBmODIwZTAyOThj
NGI0NzZhYmUxMGE4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTYtMDctMDYgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRW1haWwgZnJvbSBKdW5lIDFzdCBjb250YWlu
aW5nIHRleHQgJ1RvZGF5IEAgNzoxMFBNJyBpcyBsaW5raWZpZWQsIGJ1dCBzaG91bGRuJ3QgYmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTQ5OAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjY3MTk5MDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2FtIFdlaW5pZy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL0RhdGFEZXRlY3Rpb24ubW06IEFkZGVkLgorICAgICAgICAoLVtEYXRhRGV0ZWN0
aW9uTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAg
ICAgICAgKC1bRGF0YURldGVjdGlvblVJRGVsZWdhdGUgX2RhdGFEZXRlY3Rpb25Db250ZXh0Rm9y
V2ViVmlldzpdKToKKyAgICAgICAgKGV4cGVjdExpbmtDb3VudCk6CisgICAgICAgIChURVNUKToK
KyAgICAgICAgQWRkIGEgdGVzdCBlbnN1cmluZyB0aGF0IFJlZmVyZW5jZURhdGUgaW4gdGhlIERh
dGFEZXRlY3RvcnMgY29udGV4dCBpcyByZXNwZWN0ZWQKKyAgICAgICAgd2hlbiBkZWNpZGluZyB3
aGF0IHRvIGxpbmtpZnkuCisKIDIwMTYtMDctMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIERhdGFiYXNlIHByb2Nlc3MgY3Jhc2hlcyBkZWxldGluZyBhIGNv
cnJ1cHQgU1FMaXRlIGRhdGFiYXNlIGZpbGUgKG51bGwgZGVyZWYpLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA0ZmY3OTAyNDZhNzE1ZTI2YjM1MDI2NTIzN2I4NGJlZjZhYWM4NjMwLi5iYTQ1
NTA2ZjY5ZDNhM2RhNTdjOWE4ZDY2ZjY1OGJiM2M2MmM0Y2ZjIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNDksNiArNDksNyBAQAogCQkyRDAwMDY1RjFDMUY1ODlBMDA4OEU2QTcgLyogV0tQ
REZWaWV3UmVzaXplQ3Jhc2gubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDAwMDY1RDFDMUY1ODk0MDA4OEU2QTcgLyogV0tQREZWaWV3UmVzaXplQ3Jh
c2gubW0gKi87IH07CiAJCTJEMTY0NkUyMUQxODYyQ0QwMDAxNUExQSAvKiBEZWZlcnJlZFZpZXdJ
bldpbmRvd1N0YXRlQ2hhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQxNjQ2RTExRDE4NjJDRDAwMDE1QTFBIC8qIERlZmVycmVkVmlld0luV2lu
ZG93U3RhdGVDaGFuZ2UubW0gKi87IH07CiAJCTJENTFBMEM3MUM4QkYwMEMwMDc2NUM0NSAvKiBE
T01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJENTFBMEM1MUM4QkYwMDQwMDc2NUM0NSAvKiBET01IVE1MVmlk
ZW9FbGVtZW50V3JhcHBlci5tbSAqLzsgfTsKKwkJMkRDNENGNzcxRDJEOUREODAwRUNDQzk0IC8q
IERhdGFEZXRlY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyREM0Q0Y3NjFEMkQ5REQ4MDBFQ0NDOTQgLyogRGF0YURldGVjdGlvbi5tbSAqLzsg
fTsKIAkJMkREN0QzQUYxNzgyMjdCMzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1s
ci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJERDdEM0FFMTc4MjI3QUMwMDI2RTFFMyAvKiBsb3RzLW9mLXRleHQtdmVydGljYWwtbHIu
aHRtbCAqLzsgfTsKIAkJMkU3NzY1Q0QxNkM0RDgwQTAwQkEyQkIxIC8qIG1haW5JT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc3NjVDQzE2QzRE
ODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSAqLzsgfTsKIAkJMkU3NzY1Q0YxNkM0RDgxMTAwQkEy
QkIxIC8qIG1haW5NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTc3NjVDRTE2QzREODExMDBCQTJCQjEgLyogbWFpbk1hYy5tbSAqLzsgfTsKQEAg
LTY2MCw2ICs2NjEsNyBAQAogCQkyRDY0MEI1NDE3ODc1REZGMDBCRkFGOTkgLyogU2Nyb2xsUGlu
bmluZ0JlaGF2aW9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
Y3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkQ4MTA0Q0IxQkVDMTNFNzAwMjBEQTQ2IC8qIEZpbmRJblBhZ2UubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaW5kSW5QYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyRDlBNTNBRTFCMzFGQThEMDA3NEQ1QUEgLyogU2hyaW5rVG9GaXQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaHJpbmtUb0ZpdC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRDNENGNzYxRDJEOUREODAwRUNDQzk0IC8q
IERhdGFEZXRlY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBEYXRhRGV0ZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREQzNTUz
NTFCRDA4Mzc4MDA1REY0QTcgLyogQXV0b0xheW91dEludGVncmF0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b0xheW91dEludGVncmF0aW9uLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREQ3RDNBOTE3ODIwNUQwMDAyNkUxRTMgLyog
UmVzaXplUmV2ZXJzZVBhZ2luYXRlZFdlYlZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVzaXplUmV2ZXJzZVBhZ2luYXRlZFdlYlZpZXcuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyREQ3RDNBRTE3ODIyN0FDMDAyNkUxRTMgLyogbG90cy1v
Zi10ZXh0LXZlcnRpY2FsLWxyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibG90cy1vZi10ZXh0LXZlcnRpY2Fs
LWxyLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE2Niw2ICsxMTY4LDcg
QEAKIAkJCQlBMTRGQzU4NjFCODk5MUI2MDBEMTA3RUIgLyogQ29udGVudEZpbHRlcmluZy5tbSAq
LywKIAkJCQlBMTRGQzU4OTFCODk5MjcxMDBEMTA3RUIgLyogQ29udGVudEZpbHRlcmluZ1BsdWdJ
bi5tbSAqLywKIAkJCQkxQUFEMTlGNTFDN0NFMjAzMDA4MzFFNDcgLyogQ29kaW5nLm1tICovLAor
CQkJCTJEQzRDRjc2MUQyRDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0aW9uLm1tICovLAogCQkJ
CUExQTRGRTVEMThERDNEQjcwMEI1RUE4QSAvKiBEb3dubG9hZC5tbSAqLywKIAkJCQkyRDgxMDRD
QjFCRUMxM0U3MDAyMERBNDYgLyogRmluZEluUGFnZS5tbSAqLywKIAkJCQkyRDFGRTBBRjFBRDQ2
NUMxMDA2Q0Q5RTYgLyogRml4ZWRMYXlvdXRTaXplLm1tICovLApAQCAtMjEyOCw2ICsyMTMxLDcg
QEAKIAkJCQk3NjQzMjJENzFCNjFDQ0MzMDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0
cmlidXRlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA1MUE0MTFBRTYwMDQ0N0M0QyAv
KiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdGMjUxQTQxMUFGNjAwNDQ3QzRDIC8qIE9wZW5BbmRDbG9zZVdpbmRvdy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTJEQzRDRjc3MUQyRDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDcxQTQxMUFFNjAwNDQ3QzRDIC8qIFBh
Z2VMb2FkQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQzExRDBBNjUyRjAwRkVC
Q0YzIC8qIFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdGMDgxQTQxMUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5Q
YWdlRm9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRGF0YURldGVjdGlvbi5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
MTQzMTI5ODY3MDIxYzkyZjFjMzgwYzI5NTk4ZjI3NThjYzUxMzcyCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRGF0YURldGVjdGlvbi5t
bQpAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQg
PFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQ
SV9FTkFCTEVEICYmIFBMQVRGT1JNKElPUykKKworc3RhdGljIGJvb2wgZmluaXNoZWRMb2FkaW5n
Oworc3RhdGljIGJvb2wgcmFuU2NyaXB0OworCitAaW50ZXJmYWNlIERhdGFEZXRlY3Rpb25OYXZp
Z2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBEYXRhRGV0ZWN0aW9uTmF2aWdhdGlvbkRlbGVnYXRlCisKKy0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05h
dmlnYXRpb24gKiluYXZpZ2F0aW9uCit7CisgICAgZmluaXNoZWRMb2FkaW5nID0gdHJ1ZTsKK30K
KworQGVuZAorCitAaW50ZXJmYWNlIERhdGFEZXRlY3Rpb25VSURlbGVnYXRlIDogTlNPYmplY3Qg
PFdLVUlEZWxlZ2F0ZT4KKworQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgTlNEYXRlICpy
ZWZlcmVuY2VEYXRlOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBEYXRhRGV0ZWN0aW9uVUlE
ZWxlZ2F0ZQorCistIChOU0RpY3Rpb25hcnkgKilfZGF0YURldGVjdGlvbkNvbnRleHRGb3JXZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgaWYgKCFfcmVmZXJlbmNlRGF0ZSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBAeworICAgICAgICBAIlJlZmVyZW5jZURh
dGUiOiBfcmVmZXJlbmNlRGF0ZQorICAgIH07Cit9CisKK0BlbmQKKwordm9pZCBleHBlY3RMaW5r
Q291bnQoV0tXZWJWaWV3ICp3ZWJWaWV3LCBOU1N0cmluZyAqSFRNTFN0cmluZywgdW5zaWduZWQg
bGlua0NvdW50KQoreworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkhUTUxTdHJpbmcgYmFz
ZVVSTDpuaWxdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZExvYWRp
bmcpOworICAgIGZpbmlzaGVkTG9hZGluZyA9IGZhbHNlOworCisgICAgW3dlYlZpZXcgZXZhbHVh
dGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKS5sZW5ndGgi
IGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgdmFsdWUsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAg
IEVYUEVDVF9FUShsaW5rQ291bnQsIFt2YWx1ZSB1bnNpZ25lZEludFZhbHVlXSk7CisgICAgICAg
IHJhblNjcmlwdCA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJhblNjcmlwdCk7CisgICAgcmFuU2NyaXB0ID0gZmFsc2U7Cit9CisKK1RFU1QoV2ViS2l0
MiwgRGF0YURldGVjdGlvblJlZmVyZW5jZURhdGUpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmll
d0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldERhdGFEZXRlY3Rv
clR5cGVzOldLRGF0YURldGVjdG9yVHlwZUNhbGVuZGFyRXZlbnRdOworCisgICAgUmV0YWluUHRy
PFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CisKKyAgICBSZXRhaW5QdHI8RGF0YURldGVjdGlvbk5hdmlnYXRpb25EZWxl
Z2F0ZT4gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0RhdGFEZXRlY3Rpb25OYXZpZ2F0
aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVs
ZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKKworICAgIFJldGFpblB0cjxEYXRhRGV0
ZWN0aW9uVUlEZWxlZ2F0ZT4gVUlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEYXRhRGV0ZWN0aW9uVUlE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6VUlEZWxl
Z2F0ZS5nZXQoKV07CisKKyAgICBleHBlY3RMaW5rQ291bnQod2ViVmlldy5nZXQoKSwgQCJ0b21v
cnJvdyBhdCA2UE0iLCAxKTsKKyAgICBleHBlY3RMaW5rQ291bnQod2ViVmlldy5nZXQoKSwgQCJ5
ZXN0ZXJkYXkgYXQgNlBNIiwgMCk7CisKKyAgICBOU1RpbWVJbnRlcnZhbCB3ZWVrID0gNjAgKiA2
MCAqIDI0ICogNzsKKworICAgIFtVSURlbGVnYXRlIHNldFJlZmVyZW5jZURhdGU6W05TRGF0ZSBk
YXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93Oi13ZWVrXV07CisgICAgZXhwZWN0TGlua0NvdW50
KHdlYlZpZXcuZ2V0KCksIEAidG9tb3Jyb3cgYXQgNlBNIiwgMCk7CisgICAgZXhwZWN0TGlua0Nv
dW50KHdlYlZpZXcuZ2V0KCksIEAieWVzdGVyZGF5IGF0IDZQTSIsIDApOworCisgICAgW1VJRGVs
ZWdhdGUgc2V0UmVmZXJlbmNlRGF0ZTpbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2VO
b3c6d2Vla11dOworICAgIGV4cGVjdExpbmtDb3VudCh3ZWJWaWV3LmdldCgpLCBAInRvbW9ycm93
IGF0IDZQTSIsIDEpOworICAgIGV4cGVjdExpbmtDb3VudCh3ZWJWaWV3LmdldCgpLCBAInllc3Rl
cmRheSBhdCA2UE0iLCAxKTsKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282978</attachid>
            <date>2016-07-06 18:23:28 -0700</date>
            <delta_ts>2016-07-06 20:04:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159498-20160706182256.patch</filename>
            <type>text/plain</type>
            <size>87544</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYyMDU4ZWExYTkwMTky
NzU4MzFhNTcyMjJjZTRhNDY5NDRkZTJmNS4uMTUyYTljZDc0MDkzZDc0MDljYjM3NjVjZWNkODBh
ZWU1NTMxZDExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA3LTA2ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEVtYWlsIGZyb20g
SnVuZSAxc3QgY29udGFpbmluZyB0ZXh0ICdUb2RheSBAIDc6MTBQTScgaXMgbGlua2lmaWVkLCBi
dXQgc2hvdWxkbid0IGJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTk0OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NzE5OTAzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0OiBXZWJL
aXQyLkRhdGFEZXRlY3Rpb25SZWZlcmVuY2VEYXRlCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5n
ZSk6CisgICAgICAgIEV4dHJhY3QgdGhlIHJlZmVyZW5jZSBkYXRlIGZyb20gdGhlIERhdGFEZXRl
Y3RvcnMgY29udGV4dCBkaWN0aW9uYXJ5IGlmIGl0IGV4aXN0cywKKyAgICAgICAgYW5kIHBhc3Mg
aXQgYWxvbmcgdG8gRGF0YURldGVjdG9ycy4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVG
b3JUaGlzRnJhbWUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICBQbHVtYiB0aGUgRGF0YURldGVjdG9ycyBjb250ZXh0IGRpY3Rpb25hcnkgdGhyb3VnaCBm
cm9tIFdlYlBhZ2UuCisKIDIwMTYtMDctMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIERhdGFiYXNlIHByb2Nlc3MgY3Jhc2hlcyBkZWxldGluZyBhIGNvcnJ1
cHQgU1FMaXRlIGRhdGFiYXNlIGZpbGUgKG51bGwgZGVyZWYpLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDBkZmY1
MTgzYzMwNGNhZDk4MzM3OWQ2OGY3NWVhNzEzZjllN2M4YzguLjkwZGNhNzYzZTVhOTg5NDBjMzJm
OTZiNjU1OTYxOWIxZmEyYzU0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAxNi0w
Ny0wNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBF
bWFpbCBmcm9tIEp1bmUgMXN0IGNvbnRhaW5pbmcgdGV4dCAnVG9kYXkgQCA3OjEwUE0nIGlzIGxp
bmtpZmllZCwgYnV0IHNob3VsZG4ndCBiZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NDk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjcxOTkw
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogU2hhcmVk
L0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpM
b2FkUGFyYW1ldGVyczo6cGxhdGZvcm1FbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFy
YW1ldGVyczo6cGxhdGZvcm1EZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Mb2FkUGFyYW1ldGVy
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICBBZGQgYSBzdHJ1Y3QgdGhhdCBr
bm93cyBob3cgdG8gZW5jb2RlIGFsbCBvZiB0aGUgZGlmZmVyZW50IHBhcmFtZXRlcnMKKyAgICAg
ICAgdG8gYWxsIG9mIHRoZSBMb2FkKiBtZXNzYWdlcywgaW5jbHVkaW5nIHRoZSBwbGF0Zm9ybS1z
cGVjaWZpYyBEYXRhRGV0ZWN0b3JzIHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBTaGFyZWQvbWFj
L0FyZ3VtZW50Q29kZXJzTWFjLmg6CisgICAgICAgICogU2hhcmVkL21hYy9Bcmd1bWVudENvZGVy
c01hYy5tbToKKyAgICAgICAgKElQQzo6dHlwZUZyb21PYmplY3QpOgorICAgICAgICAoSVBDOjpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGUpOgorICAgICAgICBBZGQgTlNVUkwgY29kZXJz
IHRoYXQgZGVmZXIgdG8gdGhlIENGVVJMIGNvZGVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRhdGFEZXRlY3Rpb25D
b250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURl
bGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpkYXRhRGV0ZWN0aW9uQ29udGV4dCk6CisgICAgICAgIEFkZCBBUElVSUNsaWVudCBtZXRo
b2RzIHRvIHJldHJpZXZlIHRoZSBEYXRhRGV0ZWN0b3JzIGNvbnRleHQgZGljdGlvbmFyeS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKToKKyAgICAg
ICAgQWRkIHRoZSBEYXRhRGV0ZWN0b3JzIGNvbnRleHQgZGljdGlvbmFyeSB0byB0aGUgZ2l2ZW4g
TG9hZFBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRhdGFEZXRlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGF0YURldGVjdGlv
bkNvbnRleHQpOgorICAgICAgICBTdG9yZSB0aGUgZGF0YURldGVjdGlvbkNvbnRleHQgb24gV2Vi
UGFnZSwgYW5kIG1ha2UgaXQgYWNjZXNzaWJsZSB0byBXZWJDb3JlCisgICAgICAgIHZpYSB0aGUg
RnJhbWVMb2FkZXJDbGllbnQgKGl0IGlzIHVzZWQgaW4gRnJhbWVMb2FkZXIgd2hlbiB0aGUgbG9h
ZCBjb21wbGV0ZXMpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmxvYWRGaWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEhUTUxT
dHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1M
U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUGxhaW5UZXh0U3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRTdHJpbmdJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkSFRNTFN0cmluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRQbGFpblRleHRTdHJpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkV2ViQXJjaGl2ZURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAg
ICBBZG9wdCBMb2FkUGFyYW1ldGVycywgdGFraW5nIHRoaXMgb3Bwb3J0dW5pdHkgdG8gcmVkdWNl
IHRoZSBudW1iZXIgb2YgdmVyeSBzaW1pbGFyIG1lc3NhZ2VzLgorICAgICAgICBXZSBjYW4gdGFr
ZSB0aGlzIGZ1cnRoZXIgKHdlIHNob3VsZCBiZSBhYmxlIHRvIGdldCBpdCBkb3duIHRvIGp1c3Qg
TG9hZFJlcXVlc3QKKyAgICAgICAgYW5kIExvYWREYXRhKSBpbiB0aGUgZnV0dXJlLiBXaGVuIGFu
eSBsb2FkIG9jY3VycywgZ3JhYiB0aGUgY2xpZW50J3MgRGF0YURldGVjdG9yc2UKKyAgICAgICAg
Y29udGV4dCBkaWN0aW9uYXJ5IGFuZCBzZW5kIGl0IGFsb25nIHdpdGggdGhlIGxvYWQgcmVxdWVz
dCwgc3RvcmluZyBpdCBpbiBXZWJQYWdlLgorCiAyMDE2LTA3LTA0ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ29vcmRpbmF0ZWQgR3JhcGhp
Y3NdIE1vZGVybml6ZSBhbmQgY2xlYW51cCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDUy
M2MyZjM2NjEwNDNjZGNhMDY3NWEyMjVkNmYyY2EzNmJmMjY3MC4uYjExODBjNmU4OWZiODUyNGNm
MzNhMzQ3MTJiODQ1ODU3NzAyMjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0NCw2ICsxMjQ0LDcgQEAKIAkJMkQ5N0Yw
NDgxOURENDE0MDAwMUVFOUMzIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBQUUzMkQxOURDQUY2MDAwRTAw
MkQyIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5oICovOyB9OwogCQkyRDlGMEUxMzE0RkYxQ0JG
MDBCQTBGRjcgLyogbGluZWFyU1JHQi5pY2MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUYwRTEyMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdC
LmljYyAqLzsgfTsKIAkJMkRCOUM0QUExQjMyMzFGNDAwNzBGMjdGIC8qIE5TRXZlbnRTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQjlDNEE5MUIz
MjMxRjQwMDcwRjI3RiAvKiBOU0V2ZW50U1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkRDNENGNzkxRDJERDk4OTAwRUNDQzk0IC8qIERhdGFE
ZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRDNENGNzgxRDJERDk4OTAwRUNDQzk0IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEQ0I4Mzc5
MTlGOTlCQkEwMEE3RkJFNCAvKiBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRENCODM3NzE5Rjk5QkJBMDBB
N0ZCRTQgLyogTlNTaGFyaW5nU2VydmljZVBpY2tlclNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEQ0I4MzdBMTlGOTlCQkEwMEE3RkJFNCAv
KiBOU1NoYXJpbmdTZXJ2aWNlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRENCODM3ODE5Rjk5QkJBMDBBN0ZCRTQgLyogTlNTaGFyaW5nU2Vydmlj
ZVNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJEREI5N0Y0MTlGOUFFQ0EwMDIwMjVEOCAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkREQjk3RjMxOUY5QUVDQTAwMjAy
NUQ4IC8qIE5TRXh0ZW5zaW9uU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTg4MTIsNiArODgxMyw3IEBACiAJCTJEQUFFMzJDMTlEQ0FGNjAw
MEUwMDJEMiAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRBQUUzMkQxOURDQUY2MDAwRTAwMkQyIC8qIE1vY2tQYWdlT3Zl
cmxheUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrUGFnZU92
ZXJsYXlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRCOUM0QTkxQjMy
MzFGNDAwNzBGMjdGIC8qIE5TRXZlbnRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTlNFdmVudFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREM0Q0Y3
ODFEMkREOTg5MDBFQ0NDOTQgLyogRGF0YURldGVjdG9yc1VJU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRlY3RvcnNVSVNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyRENCODM3NzE5Rjk5QkJBMDBBN0ZCRTQgLyogTlNTaGFyaW5nU2Vydmlj
ZVBpY2tlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQ0I4Mzc4
MTlGOTlCQkEwMEE3RkJFNCAvKiBOU1NoYXJpbmdTZXJ2aWNlU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5TU2hhcmluZ1NlcnZpY2VTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkREQjk3RjMxOUY5QUVDQTAwMjAyNUQ4IC8qIE5TRXh0ZW5zaW9uU1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TRXh0ZW5zaW9uU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDE3MCw2ICsyMDE3Miw3IEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNFMTI1MjQyMUExNkMwMUEwMDg2NDQ4
MCAvKiBDb3JlVUlTUEkuaCAqLywKKwkJCQkyREM0Q0Y3ODFEMkREOTg5MDBFQ0NDOTQgLyogRGF0
YURldGVjdG9yc1VJU1BJLmggKi8sCiAJCQkJQ0VDMzM3QUUxQTQ2MDg2RDAwOUI4NTIzIC8qIEdy
YXBoaWNzU2VydmljZXNTUEkuaCAqLywKIAkJCQk3QzRDOTZFMjFBRDQ0QUJGMDAzNjVBNTAgLyog
TGF1bmNoU2VydmljZXNTUEkuaCAqLywKIAkJCQlDRTEyNTI0MDFBMTZCMUI2MDA4NjQ0ODAgLyog
TWVkaWFQbGF5ZXJTUEkuaCAqLywKQEAgLTI2OTIwLDYgKzI2OTIzLDcgQEAKIAkJCQk3QzlEQkZF
RTFBOUM0OUIxMDAwRDZCMjUgLyogSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0NDYxNDM4MENENjg5QzUwMEZBREE3NSAvKiBKU0hUTUxBdWRpb0VsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3QjExMEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxC
YXNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRDNENGNzkxRDJERDk4OTAwRUNDQzk0
IC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFBMjMwQTFD
REFCNDAwQjQyQjI1IC8qIEpTSFRNTEJvZHlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUUyQUEyNTBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MQlJFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODBFN0U5RjBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MQnV0dG9uRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5oCmluZGV4IDk0OWU1YmY3YjM5ODg4ODc3MTM2YmY3Y2QzM2U4NjI2ZWViMjNjNjAuLjc3
NTlkMTk5Y2E0ZWNmZjA1MjQxOWJkYjMwMzJmOGUzZDdkYmNmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAKIE9C
SkNfQ0xBU1MgRERBY3Rpb25Db250ZXh0OwogT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFT
UyBOU0RpY3Rpb25hcnk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsNyArNTgsNyBA
QCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBkZXRlY3RJdGVtQXJvdW5kSGl0VGVzdFJlc3VsdChj
b25zdCBIaXRUZXN0UmVzdWx0JiwgRmxvYXRSZWN0JiBkZXRlY3RlZERhdGFCb3VuZGluZ0JveCwg
UmVmUHRyPFJhbmdlPiYgZGV0ZWN0ZWREYXRhUmFuZ2UpOwogI2VuZGlmCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIE5TQXJyYXkgKmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4m
IGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBOU0FycmF5ICpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0
UmFuZ2UsIERhdGFEZXRlY3RvclR5cGVzLCBOU0RpY3Rpb25hcnkgKmNvbnRleHQpOwogI2lmIFBM
QVRGT1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0RhdGFEZXRlY3Rv
ckxpbmsoRWxlbWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZGF0YURl
dGVjdG9ySWRlbnRpZmllcihFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggMTM4MzNlZTE5OTY4MmMzYjUwYzExMGQ3NjNmNDVm
MDg0NzU5NTM1Yi4uZDA4MDViZjkzYTM2NDU3NzBhNGE1NWYxYjNjM2Q4OTFlMDBiOGUzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtMjks
NiArMjksNyBAQAogI2ltcG9ydCAiQXR0ci5oIgogI2ltcG9ydCAiQ1NTU3R5bGVEZWNsYXJhdGlv
bi5oIgogI2ltcG9ydCAiRGF0YURldGVjdG9yc1NQSS5oIgorI2ltcG9ydCAiRGF0YURldGVjdG9y
c1VJU1BJLmgiCiAjaW1wb3J0ICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgogI2ltcG9ydCAi
RWxlbWVudFRyYXZlcnNhbC5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCkBAIC00MjksNyArNDMw
LDcgQEAgc3RhdGljIGlubGluZSBDRkNvbXBhcmlzb25SZXN1bHQgcXVlcnlPZmZzZXRDb21wYXJl
KEREUXVlcnlPZmZzZXQgbzEsIEREUXVlcnlPZmYKICAgICByZXR1cm4ga0NGQ29tcGFyZUVxdWFs
VG87CiB9CiAKLU5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJl
ZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMgdHlwZXMpCitOU0Fy
cmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBj
b250ZXh0UmFuZ2UsIERhdGFEZXRlY3RvclR5cGVzIHR5cGVzLCBOU0RpY3Rpb25hcnkgKmNvbnRl
eHQpCiB7CiAgICAgUmV0YWluUHRyPEREU2Nhbm5lclJlZj4gc2Nhbm5lciA9IGFkb3B0Q0Yoc29m
dExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVyQ3JlYXRlKEREU2Nhbm5lclR5cGVTdGFu
ZGFyZCwgMCwgbnVsbHB0cikpOwogICAgIFJldGFpblB0cjxERFNjYW5RdWVyeVJlZj4gc2NhblF1
ZXJ5ID0gYWRvcHRDRihzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNjYW5RdWVyeUNyZWF0
ZShOVUxMKSk7CkBAIC00NDMsMTUgKzQ0NCwxNSBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpk
ZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQog
ICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgYWRkIGEgdGltZW91dCB0byB0aGlzIGNhbGwgdG8gbWFr
ZSBzdXJlIGl0IGRvZXNuJ3QgdGFrZSB0b28gbXVjaCB0aW1lLgogICAgIGlmICghc29mdExpbmtf
RGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVyU2NhblF1ZXJ5KHNjYW5uZXIuZ2V0KCksIHNjYW5R
dWVyeS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8
Q0ZBcnJheVJlZj4gc2Nhbm5lclJlc3VsdHMgPSBhZG9wdENGKHNvZnRMaW5rX0RhdGFEZXRlY3Rv
cnNDb3JlX0REU2Nhbm5lckNvcHlSZXN1bHRzV2l0aE9wdGlvbnMoc2Nhbm5lci5nZXQoKSwgZ2V0
X0RhdGFEZXRlY3RvcnNDb3JlX0REU2Nhbm5lckNvcHlSZXN1bHRzT3B0aW9uc0ZvclBhc3NpdmVV
c2UoKSB8IEREU2Nhbm5lckNvcHlSZXN1bHRzT3B0aW9uc0NvYWxlc2NlU2lnbmF0dXJlcykpOwog
ICAgIGlmICghc2Nhbm5lclJlc3VsdHMpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisKICAg
ICBDRkluZGV4IHJlc3VsdENvdW50ID0gQ0ZBcnJheUdldENvdW50KHNjYW5uZXJSZXN1bHRzLmdl
dCgpKTsKICAgICBpZiAoIXJlc3VsdENvdW50KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAor
CiAgICAgVmVjdG9yPFJldGFpblB0cjxERFJlc3VsdFJlZj4+IGFsbFJlc3VsdHM7CiAgICAgVmVj
dG9yPFJldGFpblB0cjxOU0luZGV4UGF0aD4+IGluZGV4UGF0aHM7CiAgICAgTlNJbnRlZ2VyIGN1
cnJlbnRUb3BMZXZlbEluZGV4ID0gMDsKQEAgLTUxOSw3ICs1MjAsNyBAQCBOU0FycmF5ICpEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFu
Z2UsIERhdGFEZQogICAgIH0KICAgICAKICAgICBhdXRvIHR6ID0gYWRvcHRDRihDRlRpbWVab25l
Q29weURlZmF1bHQoKSk7Ci0gICAgTlNEYXRlICpyZWZlcmVuY2VEYXRlID0gW05TRGF0ZSBkYXRl
XTsKKyAgICBOU0RhdGUgKnJlZmVyZW5jZURhdGUgPSBbY29udGV4dCBvYmplY3RGb3JLZXk6Z2V0
a0RhdGFEZXRlY3RvcnNSZWZlcmVuY2VEYXRlS2V5KCldID86IFtOU0RhdGUgZGF0ZV07CiAgICAg
VGV4dCogbGFzdFRleHROb2RlVG9VcGRhdGUgPSBudWxscHRyOwogICAgIFN0cmluZyBsYXN0Tm9k
ZUNvbnRlbnQ7CiAgICAgc2l6ZV90IGNvbnRlbnRPZmZzZXQgPSAwOwpAQCAtNjUyLDcgKzY1Myw3
IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxS
YW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURlCiB9CiAKICNlbHNlCi1OU0FycmF5ICpEYXRhRGV0
ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiwgRGF0YURldGVjdG9y
VHlwZXMpCitOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQ
dHI8UmFuZ2U+JiwgRGF0YURldGVjdG9yVHlwZXMsIE5TRGljdGlvbmFyeSAqKQogewogICAgIHJl
dHVybiBuaWw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA3MzBj
MGI4MDE5MjA5MTY3NzM4NWUwMmFjNWNlOWEyNGM2ODM4MDFmLi5iMzIyNzQyZDUyMDEwZDgxODNi
ZTdjMmZhOTJkMTUzOThjMmQ1Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTIzMTAsNyArMjMxMCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBs
ZXRlRm9yVGhpc0ZyYW1lKCkKICAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygp
LmRhdGFEZXRlY3RvclR5cGVzKCkgIT0gRGF0YURldGVjdG9yVHlwZU5vbmUgJiYgZG9jdW1lbnQp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50RWxlbWVudCA9IGRvY3Vt
ZW50LT5kb2N1bWVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiBkb2N1bWVudFJhbmdlID0gbWFrZVJhbmdlKGZpcnN0UG9zaXRpb25Jbk5vZGUoZG9j
dW1lbnRFbGVtZW50KSwgbGFzdFBvc2l0aW9uSW5Ob2RlKGRvY3VtZW50RWxlbWVudCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShkb2N1bWVudFJhbmdlLCBtX2ZyYW1lLnNl
dHRpbmdzKCkuZGF0YURldGVjdG9yVHlwZXMoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9mcmFtZS5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250
ZW50SW5SYW5nZShkb2N1bWVudFJhbmdlLCBtX2ZyYW1lLnNldHRpbmdzKCkuZGF0YURldGVjdG9y
VHlwZXMoKSwgbV9jbGllbnQuZGF0YURldGVjdGlvbkNvbnRleHQoKSkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2NsaWVudC5kaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24obV9mcmFt
ZS5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpKTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5OTJlNWM4NTIyNWM0ODJh
NzNlYzIxYzZlM2NhNTFiZjkzNDI5N2QxLi5kODZjNjQ4NzA4ODBmY2ExZDA1ZjM3MTliYmFjMWQ5
OWJkZWQzNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtNTQsNiArNTQsNyBAQCB0eXBlZGVmIHZvaWQqIFJlbW90ZUFYT2JqZWN0UmVmOwogI2lmIFBM
QVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU0FycmF5OwogT0JKQ19DTEFTUyBOU0NhY2hlZFVS
TFJlc3BvbnNlOworT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CiBPQkpDX0NMQVNTIE5TVmlldzsK
ICNlbmRpZgogCkBAIC0yOTIsNiArMjkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBBbGxvdyBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0byByZXRyaWV2ZSBhIEZyYW1lIHBh
cmVudCBpZiB0aGVyZSdzIG5vIFBsYXRmb3JtV2lkZ2V0LgogICAgICAgICB2aXJ0dWFsIFJlbW90
ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBjb25z
dCA9IDA7CisgICAgICAgIHZpcnR1YWwgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9uQ29udGV4
dCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNF
KENGTkVUV09SSykKICAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2Fj
aGVSZXNwb25zZSAtIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcy
NTc+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9EYXRhRGV0
ZWN0b3JzVUlTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvRGF0YURldGVj
dG9yc1VJU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzViNGNkM2RiYjRjNDg5NWZkN2ZiZDM5OWRhMzZmYjBl
NjhhNDJiYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9p
b3MvRGF0YURldGVjdG9yc1VJU1BJLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
ZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL1NvZnRMaW5raW5nLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1w
b3J0IDxEYXRhRGV0ZWN0b3JzVUkvRERBY3Rpb24uaD4KKyNpbXBvcnQgPERhdGFEZXRlY3RvcnNV
SS9ERERldGVjdGlvbkNvbnRyb2xsZXIuaD4KKworI2Vsc2UKKworQGludGVyZmFjZSBEREFjdGlv
biA6IE5TT2JqZWN0CitAZW5kCisKK0BpbnRlcmZhY2UgRERBY3Rpb24gKCkKKy0gKEJPT0wpaGFz
VXNlckludGVyZmFjZTsKKy0gKE5TU3RyaW5nICopbG9jYWxpemVkTmFtZTsKK0Bwcm9wZXJ0eSAo
cmVhZG9ubHkpIE5TU3RyaW5nICphY3Rpb25VVEk7CitAZW5kCisKK0Bwcm90b2NvbCBERERldGVj
dGlvbkNvbnRyb2xsZXJJbnRlcmFjdGlvbkRlbGVnYXRlIDxOU09iamVjdD4KK0BlbmQKKworQGlu
dGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgOiBOU09iamVjdCA8VUlBY3Rpb25TaGVldERl
bGVnYXRlPgorQGVuZAorCitAaW50ZXJmYWNlIERERGV0ZWN0aW9uQ29udHJvbGxlciAoKQorKyAo
REREZXRlY3Rpb25Db250cm9sbGVyICopc2hhcmVkQ29udHJvbGxlcjsKKysgKE5TQXJyYXkgKil0
YXBBbmRIb2xkU2NoZW1lczsKKy0gKHZvaWQpcGVyZm9ybUFjdGlvbjooRERBY3Rpb24gKilhY3Rp
b24gZnJvbUFsZXJ0Q29udHJvbGxlcjooVUlBbGVydENvbnRyb2xsZXIgKilhbGVydENvbnRyb2xs
ZXIgaW50ZXJhY3Rpb25EZWxlZ2F0ZTooaWQgPERERGV0ZWN0aW9uQ29udHJvbGxlckludGVyYWN0
aW9uRGVsZWdhdGU+KWludGVyYWN0aW9uRGVsZWdhdGU7CitAZW5kCisKKyNlbmRpZgorCitAaW50
ZXJmYWNlIERERGV0ZWN0aW9uQ29udHJvbGxlciAoRGV0YWlsc1RvQmVSZW1vdmVkKQorLy8gRklY
TUU6IFRoaXMgd2lsbCBiZSByZW1vdmVkIGFzIHNvb24gYXMgPHJkYXI6Ly9wcm9ibGVtLzE2MzQ2
OTEzPiBpcyBmaXhlZC4KKy0gKE5TQXJyYXkgKilhY3Rpb25zRm9yQW5jaG9yOihpZClhbmNob3Ig
dXJsOihOU1VSTCAqKXRhcmdldFVSTCBmb3JGcmFtZTooaWQpZnJhbWU7CitAZW5kCisKK1NPRlRf
TElOS19QUklWQVRFX0ZSQU1FV09SSyhEYXRhRGV0ZWN0b3JzVUkpCitTT0ZUX0xJTktfQ0xBU1Mo
RGF0YURldGVjdG9yc1VJLCBERERldGVjdGlvbkNvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ09OU1RB
TlQoRGF0YURldGVjdG9yc1VJLCBrRGF0YURldGVjdG9yc0xlYWRpbmdUZXh0LCBjb25zdCBOU1N0
cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKERhdGFEZXRlY3RvcnNVSSwga0RhdGFEZXRlY3Rv
cnNUcmFpbGluZ1RleHQsIGNvbnN0IE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoRGF0
YURldGVjdG9yc1VJLCBrRGF0YURldGVjdG9yc1JlZmVyZW5jZURhdGVLZXksIGNvbnN0IE5TU3Ry
aW5nICopCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCBjZWY5ZThkN2U2NzIzNDRl
NDY5NzBjNzEwYmU0YWZiYjY2ODJiZWI5Li5mZDJmYzhiMDQzY2ZhZGZmYmQzYmJhYzRiNzExZWY3
ZTBhZDFjZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtMjQwLDYgKzI0MCw3IEBAIHNldChX
ZWJLaXQyX1NPVVJDRVMKICAgICBTaGFyZWQvRWRpdG9yU3RhdGUuY3BwCiAgICAgU2hhcmVkL0Zv
bnRJbmZvLmNwcAogICAgIFNoYXJlZC9MYXllclRyZWVDb250ZXh0LmNwcAorICAgIFNoYXJlZC9M
b2FkUGFyYW1ldGVycy5jcHAKICAgICBTaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCiAg
ICAgU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAKICAgICBTaGFyZWQvUHJpbnRJbmZv
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9EYXRhRGV0
ZWN0b3JzVUlTUEkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3NwaS9pb3MvRGF0YURldGVj
dG9yc1VJU1BJLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyYWE1OTVkYTkwMDdm
YTg5OTJlYjdhNDM1ZGVmM2U3Yzc2YzZlZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9EYXRhRGV0
ZWN0b3JzVUlTUEkuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgotI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5o
PgotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotI2ltcG9ydCA8RGF0YURldGVjdG9y
c1VJL0REQWN0aW9uLmg+Ci0jaW1wb3J0IDxEYXRhRGV0ZWN0b3JzVUkvREREZXRlY3Rpb25Db250
cm9sbGVyLmg+Ci0KLSNlbHNlCi0KLUBpbnRlcmZhY2UgRERBY3Rpb24gOiBOU09iamVjdAotQGVu
ZAotCi1AaW50ZXJmYWNlIEREQWN0aW9uICgpCi0tIChCT09MKWhhc1VzZXJJbnRlcmZhY2U7Ci0t
IChOU1N0cmluZyAqKWxvY2FsaXplZE5hbWU7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBOU1N0cmlu
ZyAqYWN0aW9uVVRJOwotQGVuZAotCi1AcHJvdG9jb2wgREREZXRlY3Rpb25Db250cm9sbGVySW50
ZXJhY3Rpb25EZWxlZ2F0ZSA8TlNPYmplY3Q+Ci1AZW5kCi0KLUBpbnRlcmZhY2UgREREZXRlY3Rp
b25Db250cm9sbGVyIDogTlNPYmplY3QgPFVJQWN0aW9uU2hlZXREZWxlZ2F0ZT4KLUBlbmQKLQot
QGludGVyZmFjZSBERERldGVjdGlvbkNvbnRyb2xsZXIgKCkKLSsgKERERGV0ZWN0aW9uQ29udHJv
bGxlciAqKXNoYXJlZENvbnRyb2xsZXI7Ci0rIChOU0FycmF5ICopdGFwQW5kSG9sZFNjaGVtZXM7
Ci0tICh2b2lkKXBlcmZvcm1BY3Rpb246KEREQWN0aW9uICopYWN0aW9uIGZyb21BbGVydENvbnRy
b2xsZXI6KFVJQWxlcnRDb250cm9sbGVyICopYWxlcnRDb250cm9sbGVyIGludGVyYWN0aW9uRGVs
ZWdhdGU6KGlkIDxERERldGVjdGlvbkNvbnRyb2xsZXJJbnRlcmFjdGlvbkRlbGVnYXRlPilpbnRl
cmFjdGlvbkRlbGVnYXRlOwotQGVuZAotCi0jZW5kaWYKLQotQGludGVyZmFjZSBERERldGVjdGlv
bkNvbnRyb2xsZXIgKERldGFpbHNUb0JlUmVtb3ZlZCkKLS8vIEZJWE1FOiBUaGlzIHdpbGwgYmUg
cmVtb3ZlZCBhcyBzb29uIGFzIDxyZGFyOi8vcHJvYmxlbS8xNjM0NjkxMz4gaXMgZml4ZWQuCi0t
IChOU0FycmF5ICopYWN0aW9uc0ZvckFuY2hvcjooaWQpYW5jaG9yIHVybDooTlNVUkwgKil0YXJn
ZXRVUkwgZm9yRnJhbWU6KGlkKWZyYW1lOwotQGVuZAotCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFN
RVdPUksoRGF0YURldGVjdG9yc1VJKQotU09GVF9MSU5LX0NMQVNTKERhdGFEZXRlY3RvcnNVSSwg
REREZXRlY3Rpb25Db250cm9sbGVyKQotU09GVF9MSU5LX0NPTlNUQU5UKERhdGFEZXRlY3RvcnNV
SSwga0RhdGFEZXRlY3RvcnNMZWFkaW5nVGV4dCwgY29uc3QgTlNTdHJpbmcgKikKLVNPRlRfTElO
S19DT05TVEFOVChEYXRhRGV0ZWN0b3JzVUksIGtEYXRhRGV0ZWN0b3JzVHJhaWxpbmdUZXh0LCBj
b25zdCBOU1N0cmluZyAqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29h
L0xvYWRQYXJhbWV0ZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvTG9h
ZFBhcmFtZXRlcnNDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWRlMDFkMDFlZTJhZWY0NTQ0OTBiOGM1
ZjkyNjY2MjlmZmM3Y2MwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW0KQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb2FkUGFyYW1ldGVycy5oIgorCisj
aWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyc01hYy5oIgorI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dm9pZCBMb2FkUGFyYW1ldGVyczo6cGxhdGZvcm1FbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGF0YURldGVjdGlv
bkNvbnRleHQuZ2V0KCkpOworfQorCitib29sIExvYWRQYXJhbWV0ZXJzOjpwbGF0Zm9ybURlY29k
ZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCit7
CisgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhLmRhdGFEZXRlY3Rpb25Db250ZXh0
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTG9hZFBhcmFt
ZXRlcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMGYxMzQ1ZjhkNTZjZGM4NTlmMTllMjY1YWVlODNmOWVh
ZDJkMzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTG9hZFBhcmFt
ZXRlcnMuY3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgTG9hZFBhcmFtZXRl
cnM6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IG5hdmlnYXRpb25JRDsKKyAgICBlbmNvZGVyIDw8IHJlcXVlc3Q7CisgICAgZW5j
b2RlciA8PCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwgZGF0YTsKKyAg
ICBlbmNvZGVyIDw8IHN0cmluZzsKKyAgICBlbmNvZGVyIDw8IE1JTUVUeXBlOworICAgIGVuY29k
ZXIgPDwgZW5jb2RpbmdOYW1lOworICAgIGVuY29kZXIgPDwgYmFzZVVSTFN0cmluZzsKKyAgICBl
bmNvZGVyIDw8IHVucmVhY2hhYmxlVVJMU3RyaW5nOworICAgIGVuY29kZXIgPDwgcHJvdmlzaW9u
YWxMb2FkRXJyb3JVUkxTdHJpbmc7CisgICAgZW5jb2RlciA8PCBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5OworICAgIGVuY29kZXIgPDwgdXNlckRhdGE7CisKKyAgICBwbGF0Zm9ybUVuY29k
ZShlbmNvZGVyKTsKK30KKworYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1l
bnREZWNvZGVyJiBkZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYgZGF0YSkKK3sKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGEubmF2aWdhdGlvbklEKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnJlcXVlc3QpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGF0YS5kYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLnN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YS5NSU1FVHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5lbmNvZGluZ05hbWUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuYmFzZVVSTFN0cmluZykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS51bnJl
YWNoYWJsZVVSTFN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YS5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhLnVzZXJEYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFwbGF0Zm9ybURlY29kZShkZWNvZGVyLCBkYXRhKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK3Zv
aWQgTG9hZFBhcmFtZXRlcnM6OnBsYXRmb3JtRW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikg
Y29uc3QKK3sKK30KKworYm9vbCBMb2FkUGFyYW1ldGVyczo6cGxhdGZvcm1EZWNvZGUoSVBDOjpB
cmd1bWVudERlY29kZXImLCBMb2FkUGFyYW1ldGVycyYpCit7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCisKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5OWQxNWNl
MDdhZThmYjc5NzM0NzI2MjYxYmQ5OTA4NzkzZDkxMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDc0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBMb2FkUGFyYW1ldGVyc19oCisjZGVmaW5lIExvYWRQYXJhbWV0ZXJz
X2gKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTYW5kYm94RXh0ZW5z
aW9uLmgiCisjaW5jbHVkZSAiVXNlckRhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgorCitPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKKworbmFtZXNwYWNlIElQQyB7
CitjbGFzcyBBcmd1bWVudERlY29kZXI7CitjbGFzcyBBcmd1bWVudEVuY29kZXI7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgTG9hZFBhcmFtZXRlcnMgeworICAgIHZvaWQgZW5j
b2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KElQQzo6QXJndW1lbnREZWNvZGVyJiwgTG9hZFBhcmFtZXRlcnMmKTsKKworICAgIHZvaWQgcGxh
dGZvcm1FbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgYm9v
bCBwbGF0Zm9ybURlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYsIExvYWRQYXJhbWV0ZXJzJik7
CisKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQ7CisKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdDsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZTsKKworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOworICAgIFN0cmluZyBz
dHJpbmc7CisgICAgU3RyaW5nIE1JTUVUeXBlOworICAgIFN0cmluZyBlbmNvZGluZ05hbWU7CisK
KyAgICBTdHJpbmcgYmFzZVVSTFN0cmluZzsKKyAgICBTdHJpbmcgdW5yZWFjaGFibGVVUkxTdHJp
bmc7CisgICAgU3RyaW5nIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nOworCisgICAgdWlu
dDY0X3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBVc2VyRGF0YSB1c2VyRGF0
YTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGRh
dGFEZXRlY3Rpb25Db250ZXh0OworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIExvYWRQYXJhbWV0ZXJzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvQXJndW1lbnRDb2RlcnNNYWMuaAppbmRleCA0ZTJkYTc2MTkzMTUzZWQ4ZDgwOWQxODdlMDUy
MzE1YzliNzFmN2I0Li5jZWE1ZjAxZDg4YTQ3M2FkNjA2ZDQ0NjEyODQ3MTkxY2NkNjJkZDI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5oCkBAIC0z
Nyw2ICszNyw3IEBAIE9CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OwogT0JKQ19DTEFTUyBOU0ZvbnQ7
CiBPQkpDX0NMQVNTIE5TTnVtYmVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKK09CSkNfQ0xBU1Mg
TlNVUkw7CiAKIG5hbWVzcGFjZSBJUEMgewogCkBAIC04Nyw2ICs4OCwxMCBAQCBib29sIGRlY29k
ZShBcmd1bWVudERlY29kZXImLCBSZXRhaW5QdHI8TlNEYXRlPiYpOwogdm9pZCBlbmNvZGUoQXJn
dW1lbnRFbmNvZGVyJiwgTlNEYXRhICopOwogYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwg
UmV0YWluUHRyPE5TRGF0YT4mKTsKIAorLy8gTlNVUkwKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciYsIE5TVVJMICopOworYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgUmV0YWluUHRy
PE5TVVJMPiYpOworCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogI2VuZGlmIC8vIEFyZ3VtZW50Q29k
ZXJzTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRD
b2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFj
Lm1tCmluZGV4IDY0MGU3ZWRkMzQ0MTM5ZGIyMTlhZDFjMzEwNzMwY2ZhMzNmZTk5ZTEuLjI1NThi
NDE4MzNlNjU0MGE0ZTNmMWJjMTRmNjBiZGI4YzI5MGMyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5tbQpAQCAtNTUsNiArNTUsNyBAQCBlbnVt
IE5TVHlwZSB7CiAgICAgTlNTdHJpbmdUeXBlLAogICAgIE5TRGF0ZVR5cGUsCiAgICAgTlNEYXRh
VHlwZSwKKyAgICBOU1VSTFR5cGUsCiAgICAgVW5rbm93biwKIH07CiAKQEAgLTg0LDYgKzg1LDgg
QEAgc3RhdGljIE5TVHlwZSB0eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCiAgICAgICAgIHJldHVy
biBOU0RhdGVUeXBlOwogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFz
c11dKQogICAgICAgICByZXR1cm4gTlNEYXRhVHlwZTsKKyAgICBpZiAoW29iamVjdCBpc0tpbmRP
ZkNsYXNzOltOU1VSTCBjbGFzc11dKQorICAgICAgICByZXR1cm4gTlNVUkxUeXBlOwogCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFVua25vd247CkBAIC0xMjYsNiArMTI5
LDkgQEAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBpZCBvYmplY3QpCiAg
ICAgY2FzZSBOU0RhdGFUeXBlOgogICAgICAgICBlbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8
TlNEYXRhICo+KG9iamVjdCkpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBOU1VSTFR5cGU6
CisgICAgICAgIGVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxOU1VSTCAqPihvYmplY3QpKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVW5rbm93bjoKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMjA3LDYgKzIxMywxMyBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29k
ZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsdCkKICAgICAgICAgcmVzdWx0ID0gZGF0YTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIGNhc2UgTlNVUkxUeXBlOiB7CisgICAgICAgIFJl
dGFpblB0cjxOU1VSTD4gVVJMOworICAgICAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBVUkwpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXN1bHQgPSBVUkw7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KICAgICBjYXNlIFVua25vd246CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MDUsNCArNTE4LDE5IEBA
IGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPE5TRGF0YT4m
IHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNv
ZGVyJiBlbmNvZGVyLCBOU1VSTCAqVVJMKQoreworICAgIGVuY29kZShlbmNvZGVyLCAoQ0ZVUkxS
ZWYpVVJMKTsKK30KKworYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXRh
aW5QdHI8TlNVUkw+JiByZXN1bHQpCit7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBVUkw7Cisg
ICAgaWYgKCFkZWNvZGUoZGVjb2RlciwgVVJMKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmVzdWx0ID0gYWRvcHROUygoTlNVUkwgKilVUkwubGVha1JlZigpKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggNmE4ZmFjZGY2OThmMGU0NjRiMGZhYzg4NzBlNzgyMDRk
NmYzODY3ZC4uMTFiYjQyMTFkMDMyOWE2NDRjOTNkOTFjZmE3OGMyZmJhMmZhNDhjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMTY0LDYgKzE2NCw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxlVGFwQXNDbGljayhjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYpIHsgfQogICAgIHZpcnR1YWwgVUlWaWV3Q29udHJvbGxlciAq
cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rp
b25Db250ZXh0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6T2Jq
ZWN0KikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CmluZGV4IDA4M2MxZjkzNjMzYjgzM2FlZjlkYzM1ZjNmMmM3YWE3ZDBiYmQ5ZTQuLmQyYWQ2OThi
YmVmNmE1MTA4Y2NmMWUxMjAzNmM3Yzc4MjhiMzgxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtOTcsNyArOTcsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgUmV0YWluUHRyPE5TQXJyYXk+IGFjdGlvbnNGb3JFbGVtZW50KF9XS0FjdGl2YXRlZEVs
ZW1lbnRJbmZvICosIFJldGFpblB0cjxOU0FycmF5PiBkZWZhdWx0QWN0aW9ucykgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgZGlkTm90SGFuZGxlVGFwQXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYpIG92ZXJyaWRlOwogICAgICAgICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmll
d0NvbnRyb2xsZXIoKSBvdmVycmlkZTsKLSNlbmRpZgorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
KworICAgICAgICBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkgb3ZlcnJpZGU7
CisKICAgICAgICAgdm9pZCBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAogICAgICAgICBVSURlbGVnYXRlJiBtX3VpRGVs
ZWdhdGU7CkBAIC0xMzAsNiArMTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3
RGlkTm90SGFuZGxlVGFwQXNDbGlja0F0UG9pbnQgOiAxOwogICAgICAgICBib29sIHByZXNlbnRp
bmdWaWV3Q29udHJvbGxlckZvcldlYlZpZXcgOiAxOwogI2VuZGlmCisgICAgICAgIGJvb2wgZGF0
YURldGVjdGlvbkNvbnRleHRGb3JXZWJWaWV3IDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3SW1h
Z2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZCA6IDE7CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5k
ZXggMmJlZDQ0OTE2YWZhZmJmMDQ3ZGU5YmM0YTBmYjAxNGE4ZGNkZTI2MC4uNDQwOTUzN2FmOTlh
ZTY1ZDcwMDVjODA1YmMyMGEzNzRhYmMxNzY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEwMSw2ICsxMDEsNyBAQCB2b2lkIFVJRGVsZWdh
dGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgIG1fZGVsZWdh
dGVNZXRob2RzLndlYlZpZXdEaWROb3RIYW5kbGVUYXBBc0NsaWNrQXRQb2ludCA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZE5vdEhhbmRsZVRhcEFz
Q2xpY2tBdFBvaW50OildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLnByZXNlbnRpbmdWaWV3Q29u
dHJvbGxlckZvcldlYlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyRm9yV2ViVmlldzopXTsKICNlbmRpZgorICAgIG1f
ZGVsZWdhdGVNZXRob2RzLmRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldyA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kYXRhRGV0ZWN0aW9uQ29udGV4dEZvcldl
YlZpZXc6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0ltYWdlT3JNZWRpYURvY3Vt
ZW50U2l6ZUNoYW5nZWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViVmlldzppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkOildOwogCiAjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpCkBAIC00NDEsNiArNDQyLDE4IEBAIFVJVmlld0NvbnRyb2xsZXIgKlVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKQogCiAjZW5kaWYK
IAorTlNEaWN0aW9uYXJ5ICpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGF0YURldGVjdGlvbkNvbnRl
eHQoKQoreworICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmRhdGFEZXRl
Y3Rpb25Db250ZXh0Rm9yV2ViVmlldykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBh
dXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFk
ZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gW3N0YXRpY19j
YXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oZGVsZWdhdGUpIF9kYXRhRGV0ZWN0aW9uQ29u
dGV4dEZvcldlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlld107Cit9CisKIHZvaWQgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3SW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpp
bmRleCAxMGZiYzdlZWYyM2RlNWVhYjAzOGRhNjRiOWI5ZDRlMjM1OTlkYjg4Li41MDYzOWU1Mzc1
MzVmYTJmY2VhZjA4YzcxZjRmZjQ0YWI4ZWRlZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0yNCw5ICsyNCwxMiBA
QAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKIAorI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKICNp
bXBvcnQgIkRhdGFEZXRlY3Rpb25SZXN1bHQuaCIKKyNpbXBvcnQgIkxvYWRQYXJhbWV0ZXJzLmgi
CisjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKIAogI2ltcG9ydCA8V2ViQ29yZS9TZWFyY2hQ
b3B1cE1lbnVDb2NvYS5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CkBAIC02OCw0
ICs3MSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkRm9y
RnJhbWUoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlCiB9CiAjZW5kaWYKIAordm9pZCBXZWJQ
YWdlUHJveHk6OmFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMoTG9hZFBhcmFtZXRlcnMmIGxvYWRQ
YXJhbWV0ZXJzKQoreworICAgIGxvYWRQYXJhbWV0ZXJzLmRhdGFEZXRlY3Rpb25Db250ZXh0ID0g
bV91aUNsaWVudC0+ZGF0YURldGVjdGlvbkNvbnRleHQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1YjA1ZDJmYWRjOTUyNGQ2MTBmZGEz
MWYzMmIxMGI5MTY4YjgxZGE2Li42MGE3NGZkY2M3NmYxMjRhMzgwODQ0YWI3ZDQ3YjM3NmEwODEx
MTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTUs
NiArNTUsNyBAQAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNsdWRlICJEcmF3
aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXJNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQuaCIKQEAgLTkwNiw2ICs5MDcsMTIgQEAgYm9vbCBXZWJQYWdlUHJveHk6Om1h
eWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNhbmRi
b3gKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKExvYWRQYXJhbWV0ZXJzJikKK3sK
K30KKyNlbmRpZgorCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpCiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCkBAIC05MjAsMTEgKzkyNywxNyBAQCBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZWF0dGFj
aFRvV2ViUHJvY2VzcygpOwogCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGU7Ci0gICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFs
aXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShyZXF1ZXN0LnVybCgpLCBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKTsKKyAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKKyAgICBsb2FkUGFy
YW1ldGVycy5uYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKTsKKyAgICBs
b2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICBsb2FkUGFyYW1ldGVycy5zaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gKHVpbnQ2NF90KXNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k7CisgICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNz
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOworICAgIGJvb2wg
Y3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUo
cmVxdWVzdC51cmwoKSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAg
ICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pCiAgICAgICAgIG1fcHJvY2Vzcy0+d2lsbEFjcXVpcmVV
bml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRSZXF1ZXN0KG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgp
LCByZXF1ZXN0LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCAodWludDY0X3Qpc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXModXNlckRhdGEpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBhZGRQbGF0Zm9ybUxvYWRQ
YXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAg
bV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBX
VEZNb3ZlKG5hdmlnYXRpb24pOwpAQCAtOTU5LDEwICs5NzIsMTYgQEAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJp
bmcsIGNvbnMKIAogICAgIFN0cmluZyByZXNvdXJjZURpcmVjdG9yeVBhdGggPSByZXNvdXJjZURp
cmVjdG9yeVVSTC5maWxlU3lzdGVtUGF0aCgpOwogCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlKHJlc291cmNlRGlyZWN0b3J5UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHks
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0
ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSBmaWxlVVJMOworICAgIGxv
YWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSAodWludDY0X3QpU2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3c7CisgICAgbG9hZFBhcmFt
ZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFu
ZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOworICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZShyZXNvdXJjZURpcmVjdG9yeVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJlYWRPbmx5LCBsb2Fk
UGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBhZGRQbGF0Zm9ybUxvYWRQ
YXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKKwogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFj
Y2Vzc1RvQmFzZVVSTChyZXNvdXJjZURpcmVjdG9yeVVSTCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQo
KSwgZmlsZVVSTCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgKHVpbnQ2NF90KVNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBVc2VyRGF0YShwcm9jZXNzKCkudHJh
bnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdlSUQpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFt
ZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCku
c3RhcnQoKTsKIAogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwpAQCAtOTgyLDggKzEw
MDEsMTcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShB
UEk6OkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgTUkKICAgICBpZiAoIWlzVmFsaWQoKSkKICAg
ICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAorICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQ
YXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24t
Pm5hdmlnYXRpb25JRCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmRhdGEgPSBkYXRhLT5kYXRhUmVm
ZXJlbmNlKCk7CisgICAgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUgPSBNSU1FVHlwZTsKKyAgICBs
b2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUgPSBlbmNvZGluZzsKKyAgICBsb2FkUGFyYW1ldGVy
cy5iYXNlVVJMU3RyaW5nID0gYmFzZVVSTDsKKyAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9
IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5n
ZXQoKSk7CisgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CisK
ICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVSTCk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShuYXZpZ2F0aW9uLT5u
YXZpZ2F0aW9uSUQoKSwgZGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBNSU1FVHlwZSwgZW5jb2Rpbmcs
IGJhc2VVUkwsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhKS5nZXQoKSkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKICAgICBtX3By
b2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIFdURk1v
dmUobmF2aWdhdGlvbik7CkBAIC0xMDA0LDggKzEwMzIsMTYgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJp
bmcsIGMKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3Mo
KTsKIAorICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0
ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOworICAgIGxvYWRQ
YXJhbWV0ZXJzLnN0cmluZyA9IGh0bWxTdHJpbmc7CisgICAgbG9hZFBhcmFtZXRlcnMuZW5jb2Rp
bmdOYW1lID0gQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKTsKKyAgICBsb2FkUGFyYW1ldGVycy5i
YXNlVVJMU3RyaW5nID0gYmFzZVVSTDsKKyAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9IFVz
ZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQo
KSk7CisgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CisKICAg
ICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVSTCk7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkSFRNTFN0cmluZyhuYXZpZ2F0aW9u
LT5uYXZpZ2F0aW9uSUQoKSwgaHRtbFN0cmluZywgYmFzZVVSTCwgVXNlckRhdGEocHJvY2Vzcygp
LnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKSksIG1fcGFnZUlEKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTdHJpbmcobG9hZFBh
cmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVy
KCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwpAQCAtMTAzMyw5
ICsxMDY5LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhj
b25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAgaWYgKG1fbWFpbkZyYW1l
KQogICAgICAgICBtX21haW5GcmFtZS0+c2V0VW5yZWFjaGFibGVVUkwodW5yZWFjaGFibGVVUkwp
OwogCisgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CisgICAgbG9hZFBhcmFtZXRl
cnMubmF2aWdhdGlvbklEID0gMDsKKyAgICBsb2FkUGFyYW1ldGVycy5zdHJpbmcgPSBodG1sU3Ry
aW5nOworICAgIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcgPSBiYXNlVVJMOworICAgIGxv
YWRQYXJhbWV0ZXJzLnVucmVhY2hhYmxlVVJMU3RyaW5nID0gdW5yZWFjaGFibGVVUkw7CisgICAg
bG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcgPSBtX2ZhaWxpbmdQ
cm92aXNpb25hbExvYWRVUkw7CisgICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0
YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwor
ICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOworCiAgICAgbV9w
cm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGJhc2VVUkwpOwogICAgIG1fcHJvY2Vz
cy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCh1bnJlYWNoYWJsZVVSTCk7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhodG1s
U3RyaW5nLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCwgbV9mYWlsaW5nUHJvdmlzaW9uYWxMb2Fk
VVJMLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0
YSkuZ2V0KCkpKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7
CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIApAQCAt
MTA1MCw3ICsxMDk1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUGxhaW5UZXh0U3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBBUEk6Ok9iamVjdCogdXNlckRhCiAgICAgYXV0byB0cmFu
c2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1fcGFnZUxvYWRT
dGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtVUkwoKS5zdHJp
bmcoKSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRQbGFp
blRleHRTdHJpbmcoc3RyaW5nLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1Rv
SGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdlSUQpOworICAgIExvYWRQYXJhbWV0ZXJz
IGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IDA7Cisg
ICAgbG9hZFBhcmFtZXRlcnMuc3RyaW5nID0gc3RyaW5nOworICAgIGxvYWRQYXJhbWV0ZXJzLk1J
TUVUeXBlID0gQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIik7CisgICAgbG9hZFBhcmFtZXRlcnMu
dXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1
c2VyRGF0YSkuZ2V0KCkpOworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFt
ZXRlcnMpOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU3Ry
aW5nKGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKQEAgLTEwNjUsNyArMTExNywxNSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEs
IEFQSTo6T2JqZWN0KiB1cwogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUu
dHJhbnNhY3Rpb24oKTsKICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3RV
UkwodHJhbnNhY3Rpb24sIGJsYW5rVVJMKCkuc3RyaW5nKCkpOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkV2ViQXJjaGl2ZURhdGEod2ViQXJjaGl2ZURhdGEt
PmRhdGFSZWZlcmVuY2UoKSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXModXNlckRhdGEpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBMb2FkUGFyYW1ldGVycyBs
b2FkUGFyYW1ldGVyczsKKyAgICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQgPSAwOworICAg
IGxvYWRQYXJhbWV0ZXJzLmRhdGEgPSB3ZWJBcmNoaXZlRGF0YS0+ZGF0YVJlZmVyZW5jZSgpOwor
ICAgIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlID0gQVNDSUlMaXRlcmFsKCJhcHBsaWNhdGlvbi94
LXdlYmFyY2hpdmUiKTsKKyAgICBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUgPSBBU0NJSUxp
dGVyYWwoInV0Zi0xNiIpOworICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEo
cHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKKyAg
ICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKKworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEobG9hZFBhcmFtZXRlcnMpLCBt
X3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDQwNjYxM2E4
NDM2M2E1MGEyOTg0MTM1OWI5ZjVjZGEyYjEwMjZkYTQuLmQzMDZlYzg0ODUyMTIzZDYxNzY4Nzgx
Yjc0YTM4OGY4NGUxNWI2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTIwNSw2ICsyMDUsNyBAQCBzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKIHN0cnVjdCBD
b2xvclNwYWNlRGF0YTsKIHN0cnVjdCBFZGl0aW5nUmFuZ2U7CiBzdHJ1Y3QgRWRpdG9yU3RhdGU7
CitzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOwog
c3RydWN0IFByaW50SW5mbzsKIHN0cnVjdCBXZWJQb3B1cEl0ZW07CkBAIC0zNjcsNiArMzY4LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBjbG9zZVBhZ2UoYm9vbCBzdG9wUmVzcG9uc2l2ZW5lc3NU
aW1lcik7CiAKKyAgICB2b2lkIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMoTG9hZFBhcmFtZXRl
cnMmKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkUmVxdWVzdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3dF
eHRlcm5hbFNjaGVtZXMsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAgIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTCwgY29u
c3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0g
bnVsbHB0cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZERhdGEoQVBJOjpEYXRh
KiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFu
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50
LmgKaW5kZXggZTA1YWVlMDI1YjllZWY3Y2JmNGFmNWNiYjI5ZDY0Njg2NDFiODU4MS4uYzZiNTRk
ZGJhNTFkODgyZGJiMmE1YjU3ODVjY2EwZDA2ZmJlZTRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgKQEAgLTI1LDEw
ICsyNSwxMCBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogCi0jaW1wb3J0ICJEYXRhRGV0ZWN0b3Jz
VUlTUEkuaCIKICNpbXBvcnQgIkdlc3R1cmVUeXBlcy5oIgogI2ltcG9ydCAiV0tBY3Rpb25TaGVl
dC5oIgogI2ltcG9ydCA8VUlLaXQvVUlQb3BvdmVyQ29udHJvbGxlci5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9EYXRhRGV0ZWN0b3JzVUlTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDYyNjBkZTQ2MTFhOGVhZGE1
Y2MxNTI5YzEzM2M3NTFjNjgwNjNmYzUuLmIzZTQ5ODI1NDBiY2NhZTE5YjcxMjhjYTY0OGRkM2E2
MGIxMGI0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgUExBVEZP
Uk0oSU9TKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgotI2ltcG9ydCAiRGF0YURldGVjdG9y
c1VJU1BJLmgiCiAjaW1wb3J0ICJFZGl0aW5nUmFuZ2UuaCIKICNpbXBvcnQgIk1hbmFnZWRDb25m
aWd1cmF0aW9uU1BJLmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCkBAIC02
NSw2ICs2NCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3JzQ29yZVNQ
SS5oPgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3JzVUlTUEkuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRmxvYXRRdWFkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGF0aC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI3NjQ2NjE3NjMzNDYxMWYyYjAzMGU0NTllZjcxNmI4
NmNlZGJhMzEuLmZhNjhhYTE3NGYyZmFhNjU2N2E2NTU5MTAyOGRhYWFkMDk0NTdjZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTU5Niw2ICs1OTYsOSBAQAogCQkyOUFEMzA5NjE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyOUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHlNYWMubW0gKi87IH07CiAJCTI5Q0Q1NUFBMTI4RTI5NEYwMDEzM0M4NSAvKiBX
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggKi87IH07CiAJCTI5Q0Q1NUFCMTI4RTI5NEYw
MDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0Q1NUE5MTI4RTI5NEYwMDEz
M0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAqLzsgfTsKKwkJMkQx
MDg3NjAxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTA4NzVFMUQyQzU3M0UwMEI4NUY4
MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgKi87IH07CisJCTJEMTA4NzYxMUQyQzU3M0UwMEI4NUY4
MiAvKiBMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQxMDg3NUYxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmgg
Ki87IH07CisJCTJEMTA4NzYzMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29h
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxMDg3
NjIxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzQ29jb2EubW0gKi87IH07CiAJCTJE
MTI1QzVFMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTI1QzVDMTg1N0VBMDUw
MDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJMkQxMjVDNUYxODU3
RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTI1QzVEMTg1N0VBMDUwMDNCQTND
QiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gKi87IH07CiAJCTJEMUI1RDVEMTg1ODY5
QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxQjVENUIxODU4
NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CkBAIC02ODcsNiArNjkwLDcgQEAKIAkJMkRBRjA2RDYxOEJEMUE0NzAwODFDRUIxIC8q
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUYwNkQ0MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyLmggKi87IH07CiAJCTJEQUYwNkQ3MThCRDFBNDcwMDgxQ0VC
MSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjA2RDUxOEJEMUE0NzAwODFDRUIxIC8qIFNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gKi87IH07CiAJCTJEQUY0RkZCMUI2MzYxODEw
MDYwMTNENiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjRGRkExQjYzNjE4MTAwNjAxM0Q2IC8qIFZp
ZXdHZXN0dXJlQ29udHJvbGxlci5jcHAgKi87IH07CisJCTJEQzRDRjdCMUQyREUyNEIwMEVDQ0M5
NCAvKiBXZWJQYWdlQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyREM0Q0Y3QTFEMkRFMjRCMDBFQ0NDOTQgLyogV2ViUGFnZUNvY29hLm1tICov
OyB9OwogCQkyREM2RDlDMzE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3Zp
ZGVyUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEQzZEOUMxMThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJS
ZWdpc3RyeS5oICovOyB9OwogCQkyREM2RDlDNDE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3
Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29u
dGVudFByb3ZpZGVyUmVnaXN0cnkubW0gKi87IH07CiAJCTJERDEyQTA4MUE4MTc3RjMwMDJDNzRF
NiAvKiBXS1BhZ2VSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkREMTJBMDcxQTgxNzdGMzAwMkM3NEU2IC8qIFdL
UGFnZVJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzYsNyArMTc0MCw2IEBACiAJCUNFMTFBRDUyMUNC
QzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWdu
aW5nLmggKi87IH07CiAJCUNFMUEwQkQyMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2
aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggKi87IH07
CiAJCUNFMUEwQkQzMUE0OEU2QzYwMDU0RUY3NCAvKiBDb3JlUERGU1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJDRDFBNDhFNkM2MDA1NEVG
NzQgLyogQ29yZVBERlNQSS5oICovOyB9OwotCQlDRTFBMEJENDFBNDhFNkM2MDA1NEVGNzQgLyog
RGF0YURldGVjdG9yc1VJU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTFBMEJDRTFBNDhFNkM2MDA1NEVGNzQgLyogRGF0YURldGVjdG9yc1VJU1BJ
LmggKi87IH07CiAJCUNFMUEwQkQ1MUE0OEU2QzYwMDU0RUY3NCAvKiBNYW5hZ2VkQ29uZmlndXJh
dGlvblNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0UxQTBCQ0YxQTQ4RTZDNjAwNTRFRjc0IC8qIE1hbmFnZWRDb25maWd1cmF0aW9uU1BJLmggKi87
IH07CiAJCUNFMUEwQkQ2MUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQwMUE0OEU2QzYwMDU0RUY3
NCAvKiBUQ0NTUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDcxQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJ
bnB1dFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oICovOyB9OwpAQCAtMjYw
MSw2ICsyNjA0LDkgQEAKIAkJMjlDRDU1QTkxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEMDAzNTIyMUJDNzQxNDgwMERBODcxNiAvKiBEZXByZWNhdGVk
UERGUGx1Z2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERlcHJlY2F0ZWRQ
REZQbHVnaW4uaDsgcGF0aCA9IFBERi9EZXByZWNhdGVkUERGUGx1Z2luLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEMDAzNTIzMUJDNzQxNDgwMERBODcxNiAvKiBEZXByZWNhdGVk
UERGUGx1Z2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRGVw
cmVjYXRlZFBERlBsdWdpbi5tbTsgcGF0aCA9IFBERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDEwODc1RTFEMkM1NzNFMDBCODVGODIgLyog
TG9hZFBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TG9hZFBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDEwODc1
RjFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTG9hZFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMkQxMDg3NjIxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzQ29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2FkUGFyYW1ldGVyc0Nv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDEyNUM1QzE4NTdFQTA1MDAz
QkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZpZXdHZXN0dXJlQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRDEyNUM1RDE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVy
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlld0dlc3R1
cmVDb250cm9sbGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDFCNUQ1
QTE4NTg2NTk5MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI3MDMsNiArMjcwOSw3IEBACiAJCTJEQUYwNkQ1MThCRDFBNDcwMDgxQ0VC
MSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbTsgcGF0
aCA9IGlvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyREFGMDZEODE4QkQyM0JBMDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyLm1lc3NhZ2VzLmluOyBwYXRoID0gaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQUY0RkZBMUI2MzYx
ODEwMDYwMTNENiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRDNENGN0ExRDJERTI0QjAwRUNDQzk0IC8qIFdlYlBhZ2VD
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBhZ2VD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRDNkQ5QzExOEM0NEE2MTAw
NDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQzZEOUMyMThDNDRBNjEwMDQzQkFENCAv
KiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREQxMkEwNzFBODE3N0YzMDAyQzc0RTYg
LyogV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTM4NDIsNyArMzg0OSw2IEBACiAJCUNFMTFBRDUxMUNCQzQ4MkYw
MDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb2RlU2lnbmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJDQzFB
NDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXNzZXJ0aW9uU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCQ0QxQTQ4RTZDNjAwNTRFRjc0IC8qIENvcmVQREZTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZVBERlNQSS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlDRTFBMEJDRTFBNDhFNkM2MDA1NEVGNzQgLyogRGF0YURldGVj
dG9yc1VJU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRlY3Rv
cnNVSVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJDRjFBNDhFNkM2
MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUQ0NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0SW5wdXRTUEkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0ODQsNiArNDQ5MCw4IEBACiAJCQkJQkNDRjZCMjMxMkM5
M0U3QTAwOEY5QzM1IC8qIEltYWdlT3B0aW9ucy5oICovLAogCQkJCTFBOTJEQzEyMTJGOEJBQjkw
MDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0LmNwcCAqLywKIAkJCQkxQTkyREMxMDEyRjhCQTQ2
MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29udGV4dC5oICovLAorCQkJCTJEMTA4NzVFMUQyQzU3M0Uw
MEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgKi8sCisJCQkJMkQxMDg3NUYxRDJDNTczRTAw
Qjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmggKi8sCiAJCQkJMkQ1MDM2NkExQkNERTE3OTAwRTIw
QkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oICovLAogCQkJCUMwMkJGRjE1MTI1MTRGRDgw
MDlDQ0JFQSAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkJMzFFQTI1RDMxMzRG
NzhENjAwNUIxNDUyIC8qIE5hdGl2ZVdlYk1vdXNlRXZlbnQuaCAqLywKQEAgLTQ4OTksNiArNDkw
Nyw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyRDI5RUNDRTE5MkYyQzJFMDA5ODRCNzggLyog
UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJCQkJMkQyOUVDQ0Yx
OTJGMkMyRTAwOTg0Qjc4IC8qIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5t
bSAqLywKKwkJCQkyREM0Q0Y3QTFEMkRFMjRCMDBFQ0NDOTQgLyogV2ViUGFnZUNvY29hLm1tICov
LAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC01MjM4LDYgKzUyNDcsNyBAQAogCQkJCTM3QkVDNERFMTk0OTE0ODYwMDhCNDI4NiAvKiBDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tICovLAogCQkJCUM1NUY5MTZDMUM1OTVFNDQwMDI5
RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0LmggKi8sCiAJCQkJQzU1RjkxNkQxQzU5NUU0NDAw
MjlFOTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQubW0gKi8sCisJCQkJMkQxMDg3NjIxRDJDNjQx
QjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzQ29jb2EubW0gKi8sCiAJCQkJMUFCMUY3OEUxRDFC
MzRBNjAwN0M5QkQxIC8qIFdlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tICovLAogCQkJCTM3
QzRDMDkyMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkuaCAqLywKIAkJCQkzN0M0QzA5MTE4
MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5Lm1tICovLApAQCAtNzE2MCw3ICs3MTcwLDYgQEAK
IAkJCQlDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCAq
LywKIAkJCQlDREEwNDFGMzFBQ0UyMTA1MDA0QTEzRUMgLyogQmFja0JvYXJkU2VydmljZXNTUEku
aCAqLywKIAkJCQlDRTFBMEJDRDFBNDhFNkM2MDA1NEVGNzQgLyogQ29yZVBERlNQSS5oICovLAot
CQkJCUNFMUEwQkNFMUE0OEU2QzYwMDU0RUY3NCAvKiBEYXRhRGV0ZWN0b3JzVUlTUEkuaCAqLywK
IAkJCQlDRTFBMEJDRjFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEku
aCAqLywKIAkJCQk1NzlEMThCNzFDQ0ZFMzRCMDBCMTk3NEMgLyogUGhvdG9zU1BJLmggKi8sCiAJ
CQkJQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovLApAQCAtNzQ2Myw3ICs3
NDcyLDYgQEAKIAkJCQk1MTJBOTc2QTE4MEUwOUI4MDAzOUExNDkgLyogRGF0YWJhc2VQcm9jZXNz
UHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwMzJGMUUxODBGNzkxNzAwOTYx
QkI3IC8qIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDNTVGOTE3MTFDNTk2NzZFMDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3Vs
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0UxQTBCRDQxQTQ4RTZDNjAwNTRFRjc0IC8qIERhdGFE
ZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNzUzODAxODNCRTUwRjAwNzJD
QjE1IC8qIERhdGFSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzODkxQjZDMUE2OEMz
MEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUMxNDI3MDIxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkLmggaW4gSGVhZGVycyAqLywK
QEAgLTc4NTUsNiArNzg2Myw3IEBACiAJCQkJN0M4NUZEN0MxOTM0MTVBODAwMDE3N0M0IC8qIFdl
YlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDODVGRDgwMTkz
NDE2NjUwMDAxNzdDNCAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRDU5OEFDMTEyQjdGREYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkyRDEwODc2MTFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDk3MTBGNDM3QUYwMDU4QzE1QSAvKiBXZWJQcm9j
ZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTA0M0EwOTEyNEQxMUE5MDBGRkJGQjUgLyogV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQzRjZBMTI1MTREOEIw
MEZGQkZCNSAvKiBXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
QEAgLTg4ODAsNiArODg4OSw3IEBACiAJCQkJQzU5QzRBNTgxOEI4MTE3NDAwN0JEQ0I2IC8qIEFz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNUU3NzI3MTgz
REQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNF
RTk2NkMxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMkQxMDg3NjMxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzQ29jb2EubW0gaW4g
U291cmNlcyAqLywKIAkJCQlFMUEzMTczNTEzNENFQTgwMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0
cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMkY1ODk2MTJBODgzODgwMDYyOTUzMCAvKiBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMkY1
ODk4MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC04OTQwLDYgKzg5NTAsNyBAQAogCQkJCTFBNjQyMjk5MTJERDAy
OTIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzI2NTIxNjExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQTY0MjMwODEyREQwOUVCMDBDQUFFMkMgLyogRHJhd2luZ0Fy
ZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyREM0Q0Y3QjFE
MkRFMjRCMDBFQ0NDOTQgLyogV2ViUGFnZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOENG
RUNFOTQxNDkwRjE0MDAwMkFBQTMyIC8qIEVkaXRvclN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxQjE1QTg0MTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUE1NzVGQTE0OTZCNTI2MDBBNEVFMDYgLyogRXZlbnREaXNw
YXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTA2Myw2ICs5MDc0LDcgQEAKIAkJCQkxQTJE
ODJBNjEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RQcm94eS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTJEODJBODEyN0Y0RUFCMDAxRUI5NjIgLyogTlBSZW1vdGVPYmplY3RNYXAuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUEyMTYxQjExMUYzNzY2NDAwOEFEMEY1IC8qIE5QUnVudGltZU9i
amVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyRDEwODc2MDFEMkM1NzNFMDBCODVGODIg
LyogTG9hZFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyMTYyQjAxMUYzODk3
MTAwOEFEMEY1IC8qIE5QUnVudGltZVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTJEODRBNDEyN0Y2QUQxMDAxRUI5NjIgLyogTlBWYXJpYW50RGF0YS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzhBQ0ExNDE2NjcwRDg5MDA0QzE5NDEgLyogT2JqQ09iamVjdEdyYXBoLm1tIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDJkNzEy
YmM3MGRlMWFlYTViMGE0Njk3ZTE2MjNhODU1MjMzYzg0MmYuLjZhZjA3NmU4M2UzMGM0ZWE3ZWZi
ODdlODhiMWE0NTlkZDk5ZTVlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CkBAIC0xNjI5LDcgKzE2MjksNyBAQCBSZW1vdGVBWE9iamVjdFJlZiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiAgICAgcmV0dXJuIHdlYlBhZ2UtPmFj
Y2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsKIH0KICAgICAKLU5TQ2FjaGVkVVJMUmVzcG9uc2Uq
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2Up
IGNvbnN0CitOU0NhY2hlZFVSTFJlc3BvbnNlICpXZWJGcmFtZUxvYWRlckNsaWVudDo6d2lsbENh
Y2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE5T
Q2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKSBjb25zdAogewogICAgIFdlYlBhZ2UqIHdlYlBh
Z2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpAQCAtMTYzOCw2ICsxNjM4
LDE1IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsQ2Fj
aGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuCiAgICAgcmV0dXJuIHdlYlBhZ2UtPmluamVj
dGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KCkuc2hvdWxkQ2FjaGVSZXNwb25zZSh3ZWJQYWdl
LCBtX2ZyYW1lLCBpZGVudGlmaWVyKSA/IHJlc3BvbnNlIDogbmlsOwogfQogCitOU0RpY3Rpb25h
cnkgKldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkYXRhRGV0ZWN0aW9uQ29udGV4dCgpCit7CisgICAg
V2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXdlYlBhZ2UpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gd2ViUGFnZS0+ZGF0YURldGVjdGlvbkNv
bnRleHQoKTsKK30KKwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiBib29sIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpzaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudChjb25zdCBTdHJpbmcm
IC8qbWltZVR5cGUqLykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBl
MjA3NDA0NTk3ODEwNTllMGU4YzMzMTA4MGJjY2I5MjMyMjFhNjk0Li5lZTZiZWJkNjg0OWFmNWQy
ZTQ4YzNmOTk0ZWRjMjI2M2I1MTYyZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CkBAIC0yMjEsNiArMjIxLDggQEAgcHJpdmF0ZToKICAgICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nl
c3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgTlNDYWNoZWRVUkxS
ZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBjb25zdCBvdmVycmlk
ZTsKKworICAgIE5TRGljdGlvbmFyeSAqZGF0YURldGVjdGlvbkNvbnRleHQoKSBvdmVycmlkZTsK
ICNlbmRpZgogCiAgICAgYm9vbCBzaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudChjb25zdCBT
dHJpbmcmIC8qbWltZVR5cGUqLykgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45MTg0NDY2MWIzMzJiM2UxN2UyMjI1MjhmZjRmYmMyM2VmM2ZjODE3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VD
b2NvYS5tbQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJXZWJQYWdlLmgiCisKKyNpbXBvcnQgIkxvYWRQYXJhbWV0ZXJzLmgiCisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0
ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKK3sKKyAgICBtX2RhdGFE
ZXRlY3Rpb25Db250ZXh0ID0gbG9hZFBhcmFtZXRlcnMuZGF0YURldGVjdGlvbkNvbnRleHQ7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTgz
MTNjMTE4NGU1NmQ4Y2Y1ZjliM2NjNDQ5ODdkZmM5ODVkZjkzNy4uNzBiMTJhZGMwYzhlOTA3NGQ0
NzBkNTkwODFiMDIzYTNmZmEyMDg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCIKICNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgiCisjaW5jbHVkZSAiTG9hZFBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4u
aCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKQEAg
LTExMzksMjEgKzExNDAsMjkgQEAgdm9pZCBXZWJQYWdlOjpsb2FkVVJMSW5GcmFtZShjb25zdCBT
dHJpbmcmIHVybCwgdWludDY0X3QgZnJhbWVJRCkKICAgICBmcmFtZS0+Y29yZUZyYW1lKCktPmxv
YWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChmcmFtZS0+Y29yZUZyYW1lKCksIFJlc291cmNl
UmVxdWVzdChVUkwoVVJMKCksIHVybCkpLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGROb3RBbGxvdykpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHVpbnQ2NF90IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQ
YXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKK3sKK30KKyNl
bmRpZgorCit2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBs
b2FkUGFyYW1ldGVycykKIHsKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBl
cih0aGlzKTsKIAotICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKKyAg
ICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQ7CiAK
LSAgICBtX3NhbmRib3hFeHRlbnNpb25UcmFja2VyLmJlZ2luTG9hZChtX21haW5GcmFtZS5nZXQo
KSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tl
ci5iZWdpbkxvYWQobV9tYWluRnJhbWUuZ2V0KCksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRl
bnNpb25IYW5kbGUpOwogCiAgICAgLy8gTGV0IHRoZSBJbmplY3RlZEJ1bmRsZSBrbm93IHdlIGFy
ZSBhYm91dCB0byBzdGFydCB0aGUgbG9hZCwgcGFzc2luZyB0aGUgdXNlciBkYXRhIGZyb20gdGhl
IFVJUHJvY2VzcwogICAgIC8vIHRvIGFsbCB0aGUgY2xpZW50IHRvIHNldCB1cCBhbnkgbmVlZGVk
IHN0YXRlLgotICAgIG1fbG9hZGVyQ2xpZW50LndpbGxMb2FkVVJMUmVxdWVzdCh0aGlzLCByZXF1
ZXN0LCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQud2lsbExvYWRVUkxS
ZXF1ZXN0KHRoaXMsIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QsIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMobG9hZFBhcmFtZXRlcnMudXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKKworICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxv
YWRQYXJhbWV0ZXJzKTsKIAogICAgIC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4KLSAg
ICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QobV9tYWluRnJhbWUtPmNvcmVGcmFt
ZSgpLCByZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxv
dyk7Ci0gICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBleHRlcm5hbFVSTHNQb2xpY3kg
PSBzdGF0aWNfY2FzdDxTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5PihzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3Qo
bV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBleHRlcm5hbFVSTHNQb2xpY3kgPSBzdGF0aWNfY2FzdDxTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5Pihsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3koZXh0ZXJuYWxVUkxzUG9saWN5KTsKIAogICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1
dEJyaWRnZSgpLmxvYWRSZXF1ZXN0KGZyYW1lTG9hZFJlcXVlc3QpOwpAQCAtMTE3OSw3ICsxMTg4
LDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmUKICAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1l
KCktPmxvYWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChtX21haW5GcmFtZS0+Y29yZUZyYW1l
KCksIHJlcXVlc3QsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93
LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRTdHJpbmcodWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
TUlNRVR5cGUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlOjpsb2FkU3RyaW5nSW1wbCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxl
VVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFodG1sU3RyaW5nLmlz
TnVsbCgpICYmIGh0bWxTdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oaHRtbFN0cmluZy5jaGFyYWN0ZXJzOCgpKSwgaHRtbFN0cmluZy5sZW5n
dGgoKSAqIHNpemVvZihMQ2hhcikpOwpAQCAtMTE5MCwzOCArMTE5OSwzMyBAQCB2b2lkIFdlYlBh
Z2U6OmxvYWRTdHJpbmcodWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIGh0bWxT
dHJpbmcsIGNvbnN0CiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhKHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBi
YXNlVVJMU3RyaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2U6Omxv
YWREYXRhKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKLSAg
ICBVUkwgYmFzZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVS
TChVUkwoKSwgYmFzZVVSTFN0cmluZyk7Ci0gICAgbG9hZERhdGFJbXBsKG5hdmlnYXRpb25JRCwg
c2hhcmVkQnVmZmVyLCBNSU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgdXNl
ckRhdGEpOwotfQorICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJh
bWV0ZXJzKTsKIAotdm9pZCBXZWJQYWdlOjpsb2FkSFRNTFN0cmluZyh1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3Ry
aW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCi17Ci0gICAgVVJMIGJhc2VVUkwgPSBiYXNl
VVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGJhc2VVUkxTdHJp
bmcpOwotICAgIGxvYWRTdHJpbmcobmF2aWdhdGlvbklELCBodG1sU3RyaW5nLCBBU0NJSUxpdGVy
YWwoInRleHQvaHRtbCIpLCBiYXNlVVJMLCBVUkwoKSwgdXNlckRhdGEpOworICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9hZFBh
cmFtZXRlcnMuZGF0YS5zaXplKCkpOworICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMu
YmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFy
YW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMu
bmF2aWdhdGlvbklELCBzaGFyZWRCdWZmZXIsIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2Fk
UGFyYW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51
c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29u
c3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgdW5yZWFjaGFibGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxM
b2FkRXJyb3JVUkxTdHJpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFn
ZTo6bG9hZFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXRlcnMpCiB7Ci0g
ICAgVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBV
UkwoVVJMKCksIGJhc2VVUkxTdHJpbmcpOwotICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9IHVucmVh
Y2hhYmxlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCB1bnJlYWNoYWJs
ZVVSTFN0cmluZyk7Ci0gICAgVVJMIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMID0gcHJvdmlzaW9u
YWxMb2FkRXJyb3JVUkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIHByb3Zp
c2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nKTsKLSAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCkt
PmxvYWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKHByb3Zpc2lv
bmFsTG9hZEVycm9yVVJMKTsKLSAgICBsb2FkU3RyaW5nKDAsIGh0bWxTdHJpbmcsIEFTQ0lJTGl0
ZXJhbCgidGV4dC9odG1sIiksIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCB1c2VyRGF0YSk7Ci0g
ICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zZXRQcm92aXNpb25hbExvYWRF
cnJvckJlaW5nSGFuZGxlZFVSTCh7IH0pOwotfQorICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQ
YXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAotdm9pZCBXZWJQYWdlOjpsb2FkUGxhaW5UZXh0
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCi17
Ci0gICAgbG9hZFN0cmluZygwLCBzdHJpbmcsIEFTQ0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIpLCBi
bGFua1VSTCgpLCBVUkwoKSwgdXNlckRhdGEpOworICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFt
ZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBs
b2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBsb2FkU3RyaW5nSW1wbChsb2FkUGFy
YW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnN0cmluZywgbG9hZFBhcmFtZXRl
cnMuTUlNRVR5cGUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSk7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFdlYkFyY2hpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgd2ViQXJjaGl2ZURhdGEsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2Vi
UGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQ
YXJhbWV0ZXJzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHdlYkFyY2hp
dmVEYXRhLmRhdGEoKSksIHdlYkFyY2hpdmVEYXRhLnNpemUoKSAqIHNpemVvZih1aW50OF90KSk7
Ci0gICAgbG9hZERhdGFJbXBsKDAsIHNoYXJlZEJ1ZmZlciwgQVNDSUlMaXRlcmFsKCJhcHBsaWNh
dGlvbi94LXdlYmFyY2hpdmUiKSwgQVNDSUlMaXRlcmFsKCJ1dGYtMTYiKSwgYmxhbmtVUkwoKSwg
VVJMKCksIHVzZXJEYXRhKTsKKyAgICBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhs
b2FkUGFyYW1ldGVycyk7CisKKyAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VV
UkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRl
cnMuYmFzZVVSTFN0cmluZyk7CisgICAgVVJMIHVucmVhY2hhYmxlVVJMID0gbG9hZFBhcmFtZXRl
cnMudW5yZWFjaGFibGVVUkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIGxv
YWRQYXJhbWV0ZXJzLnVucmVhY2hhYmxlVVJMU3RyaW5nKTsKKyAgICBVUkwgcHJvdmlzaW9uYWxM
b2FkRXJyb3JVUkwgPSBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmlu
Zy5pc0VtcHR5KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9u
YWxMb2FkRXJyb3JVUkxTdHJpbmcpOworICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9h
ZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwocHJvdmlzaW9uYWxM
b2FkRXJyb3JVUkwpOworICAgIGxvYWRTdHJpbmdJbXBsKDAsIGxvYWRQYXJhbWV0ZXJzLnN0cmlu
ZywgQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKSwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIGxv
YWRQYXJhbWV0ZXJzLnVzZXJEYXRhKTsKKyAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxv
YWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKHsgfSk7CiB9CiAK
IHZvaWQgV2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3Qg
U3RyaW5nJiB1cmwsIEludFBvaW50IGRvY3VtZW50UG9pbnQsIEludFBvaW50IHNjcmVlblBvaW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZmFl
YjI1ZDc4NDU3ZTc1Y2E2MWMyOWY2YWU4MGRkNmE4NTNjNDYyNC4uYWU1MWNmZWUzZWRmMzc3MzU2
NGFlZTRjODVkYzFiZGI4MDY3YTZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC0xOTIsNiArMTkyLDcgQEAgc3RydWN0IEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZTsKIHN0cnVjdCBFZGl0aW5nUmFuZ2U7CiBzdHJ1Y3QgRWRpdG9yU3RhdGU7CiBz
dHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb247CitzdHJ1Y3QgTG9hZFBhcmFt
ZXRlcnM7CiBzdHJ1Y3QgUHJpbnRJbmZvOwogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKQEAgLTg1Myw2ICs4NTQsOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBzaG91bGRVc2VQREZQbHVnaW4oKSBjb25zdDsKICAgICBib29sIHBkZlBs
dWdpbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3BkZlBsdWdpbkVuYWJsZWQ7IH0KICAgICB2
b2lkIHNldFBERlBsdWdpbkVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fcGRmUGx1Z2luRW5hYmxl
ZCA9IGVuYWJsZWQ7IH0KKworICAgIE5TRGljdGlvbmFyeSAqZGF0YURldGVjdGlvbkNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2RhdGFEZXRlY3Rpb25Db250ZXh0LmdldCgpOyB9CiAjZW5kaWYK
IAogICAgIHZvaWQgc2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CkBAIC05OTgsMTggKzEwMDEs
MTcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAog
ICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nTmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkU3Ry
aW5nKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwm
IGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBsb2FkU3RyaW5nSW1wbCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgTUlNRVR5
cGUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmYWls
aW5nVVJMLCBjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgYm9vbCBwbGF0Zm9ybUhhc0xvY2FsRGF0
YUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lk
IHRyeUNsb3NlKCk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYsIHVpbnQ2NF90IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGNvbnN0IFVz
ZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkRGF0YSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFVzZXJEYXRhJik7
Ci0gICAgdm9pZCBsb2FkSFRNTFN0cmluZyh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0
cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBVc2VyRGF0YSYp
OwotICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkws
IGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwsIGNvbnN0IFVzZXJEYXRhJik7
Ci0gICAgdm9pZCBsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVzZXJE
YXRhJik7Ci0gICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQ
YXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CisgICAgdm9pZCBsb2FkUmVxdWVzdChj
b25zdCBMb2FkUGFyYW1ldGVycyYpOworICAgIHZvaWQgbG9hZERhdGEoY29uc3QgTG9hZFBhcmFt
ZXRlcnMmKTsKKyAgICB2b2lkIGxvYWRTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsKKyAg
ICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CiAg
ICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcm
IHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQg
c2NyZWVuUG9pbnQpOwogICAgIHZvaWQgcmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9v
bCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogICAgIHZvaWQgZ29Gb3J3YXJkKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgdWludDY0X3QpOwpAQCAtMTI4MCw2ICsxMjgyLDggQEAgcHJpdmF0ZToKIAog
ICAgIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yOwogCisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gbV9kYXRhRGV0ZWN0aW9uQ29u
dGV4dDsKKwogI2VsaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShFRkwpKQogICAgIEdSZWZQdHI8V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3Q+IG1f
YWNjZXNzaWJpbGl0eU9iamVjdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAzZGU0Zjc1ZWY0OWM2
NjRhNjc3YzY3YjBhNDI1ODFjYTdiYWIyZmIzLi5iZTU0NmMxYzhmMjBiYTBmYTFhNGUzNjM4MzYw
Yzg0ZDI1ZjAyNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTMyLDEyICsxMzIsMTEgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9u
KCkKIAogICAgIExvYWRVUkxJbkZyYW1lKFN0cmluZyB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCi0g
ICAgTG9hZFJlcXVlc3QodWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgdWludDY0X3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgV2Vi
S2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBMb2FkRGF0YSh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBTdHJpbmcgTUlNRVR5cGUsIFN0cmluZyBlbmNv
ZGluZywgU3RyaW5nIGJhc2VVUkwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgTG9h
ZEhUTUxTdHJpbmcodWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgaHRtbFN0cmluZywgU3Ry
aW5nIGJhc2VVUkwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgTG9hZEFsdGVybmF0
ZUhUTUxTdHJpbmcoU3RyaW5nIGh0bWxTdHJpbmcsIFN0cmluZyBiYXNlVVJMLCBTdHJpbmcgdW5y
ZWFjaGFibGVVUkwsIFN0cmluZyBwcm92aXNpb25hbExvYWRFcnJvclVSTCwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKLSAgICBMb2FkUGxhaW5UZXh0U3RyaW5nKFN0cmluZyBzdHJpbmcsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgTG9hZFdlYkFyY2hpdmVEYXRhKElQQzo6RGF0
YVJlZmVyZW5jZSB3ZWJBcmNoaXZlRGF0YSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAg
ICBMb2FkUmVxdWVzdChzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVy
cykKKyAgICBMb2FkRGF0YShzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1l
dGVycykKKyAgICBMb2FkU3RyaW5nKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQ
YXJhbWV0ZXJzKQorICAgIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKHN0cnVjdCBXZWJLaXQ6Okxv
YWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQorCiAgICAgTmF2aWdhdGVUb1BERkxpbmtXaXRo
U2ltdWxhdGVkQ2xpY2soU3RyaW5nIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2lu
dCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpCiAKICAgICBSZWxvYWQodWludDY0X3Qg
bmF2aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGJvb2wgY29udGVudEJsb2NrZXJz
RW5hYmxlZCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAxNjAyOTA5YmU4MDg0Yjg1OTAzZDY4NWRhMjEzN2Q1N2M0ZGUzZGIwLi40MjJmZGE0MTY5
ODAzNWZkNzBmODIwZTAyOThjNGI0NzZhYmUxMGE4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTYtMDctMDYgIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRW1haWwgZnJv
bSBKdW5lIDFzdCBjb250YWluaW5nIHRleHQgJ1RvZGF5IEAgNzoxMFBNJyBpcyBsaW5raWZpZWQs
IGJ1dCBzaG91bGRuJ3QgYmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTQ5OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjY3MTk5MDM+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0RhdGFEZXRlY3Rpb24ubW06IEFkZGVkLgorICAg
ICAgICAoLVtEYXRhRGV0ZWN0aW9uTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNo
TmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1bRGF0YURldGVjdGlvblVJRGVsZWdhdGUgX2RhdGFE
ZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldzpdKToKKyAgICAgICAgKGV4cGVjdExpbmtDb3VudCk6
CisgICAgICAgIChURVNUKToKKyAgICAgICAgQWRkIGEgdGVzdCBlbnN1cmluZyB0aGF0IFJlZmVy
ZW5jZURhdGUgaW4gdGhlIERhdGFEZXRlY3RvcnMgY29udGV4dCBpcyByZXNwZWN0ZWQKKyAgICAg
ICAgd2hlbiBkZWNpZGluZyB3aGF0IHRvIGxpbmtpZnkuCisKIDIwMTYtMDctMDUgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIERhdGFiYXNlIHByb2Nlc3MgY3Jh
c2hlcyBkZWxldGluZyBhIGNvcnJ1cHQgU1FMaXRlIGRhdGFiYXNlIGZpbGUgKG51bGwgZGVyZWYp
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ZmY3OTAyNDZhNzE1ZTI2YjM1MDI2NTIzN2I4
NGJlZjZhYWM4NjMwLi5iYTQ1NTA2ZjY5ZDNhM2RhNTdjOWE4ZDY2ZjY1OGJiM2M2MmM0Y2ZjIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDksNiArNDksNyBAQAogCQkyRDAwMDY1RjFDMUY1
ODlBMDA4OEU2QTcgLyogV0tQREZWaWV3UmVzaXplQ3Jhc2gubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDAwMDY1RDFDMUY1ODk0MDA4OEU2QTcgLyog
V0tQREZWaWV3UmVzaXplQ3Jhc2gubW0gKi87IH07CiAJCTJEMTY0NkUyMUQxODYyQ0QwMDAxNUEx
QSAvKiBEZWZlcnJlZFZpZXdJbldpbmRvd1N0YXRlQ2hhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxNjQ2RTExRDE4NjJDRDAwMDE1QTFBIC8q
IERlZmVycmVkVmlld0luV2luZG93U3RhdGVDaGFuZ2UubW0gKi87IH07CiAJCTJENTFBMEM3MUM4
QkYwMEMwMDc2NUM0NSAvKiBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENTFBMEM1MUM4QkYwMDQwMDc2
NUM0NSAvKiBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSAqLzsgfTsKKwkJMkRDNENGNzcx
RDJEOUREODAwRUNDQzk0IC8qIERhdGFEZXRlY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREM0Q0Y3NjFEMkQ5REQ4MDBFQ0NDOTQgLyogRGF0
YURldGVjdGlvbi5tbSAqLzsgfTsKIAkJMkREN0QzQUYxNzgyMjdCMzAwMjZFMUUzIC8qIGxvdHMt
b2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDdEM0FFMTc4MjI3QUMwMDI2RTFFMyAvKiBsb3RzLW9m
LXRleHQtdmVydGljYWwtbHIuaHRtbCAqLzsgfTsKIAkJMkU3NzY1Q0QxNkM0RDgwQTAwQkEyQkIx
IC8qIG1haW5JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTc3NjVDQzE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSAqLzsgfTsKIAkJMkU3
NzY1Q0YxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc3NjVDRTE2QzREODExMDBCQTJCQjEgLyogbWFp
bk1hYy5tbSAqLzsgfTsKQEAgLTY2MCw2ICs2NjEsNyBAQAogCQkyRDY0MEI1NDE3ODc1REZGMDBC
RkFGOTkgLyogU2Nyb2xsUGlubmluZ0JlaGF2aW9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4MTA0Q0IxQkVDMTNFNzAwMjBEQTQ2IC8qIEZpbmRJblBhZ2Uu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaW5kSW5QYWdlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDlBNTNBRTFCMzFGQThEMDA3NEQ1QUEg
LyogU2hyaW5rVG9GaXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTaHJpbmtUb0ZpdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRDNENGNzYx
RDJEOUREODAwRUNDQzk0IC8qIERhdGFEZXRlY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBEYXRhRGV0ZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyREQzNTUzNTFCRDA4Mzc4MDA1REY0QTcgLyogQXV0b0xheW91dEludGVncmF0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b0xheW91
dEludGVncmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREQ3RDNBOTE3
ODIwNUQwMDAyNkUxRTMgLyogUmVzaXplUmV2ZXJzZVBhZ2luYXRlZFdlYlZpZXcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzaXplUmV2ZXJzZVBhZ2luYXRlZFdl
YlZpZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREQ3RDNBRTE3ODIyN0FD
MDAyNkUxRTMgLyogbG90cy1vZi10ZXh0LXZlcnRpY2FsLWxyLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibG90
cy1vZi10ZXh0LXZlcnRpY2FsLWxyLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTE2Niw2ICsxMTY4LDcgQEAKIAkJCQlBMTRGQzU4NjFCODk5MUI2MDBEMTA3RUIgLyogQ29u
dGVudEZpbHRlcmluZy5tbSAqLywKIAkJCQlBMTRGQzU4OTFCODk5MjcxMDBEMTA3RUIgLyogQ29u
dGVudEZpbHRlcmluZ1BsdWdJbi5tbSAqLywKIAkJCQkxQUFEMTlGNTFDN0NFMjAzMDA4MzFFNDcg
LyogQ29kaW5nLm1tICovLAorCQkJCTJEQzRDRjc2MUQyRDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0
ZWN0aW9uLm1tICovLAogCQkJCUExQTRGRTVEMThERDNEQjcwMEI1RUE4QSAvKiBEb3dubG9hZC5t
bSAqLywKIAkJCQkyRDgxMDRDQjFCRUMxM0U3MDAyMERBNDYgLyogRmluZEluUGFnZS5tbSAqLywK
IAkJCQkyRDFGRTBBRjFBRDQ2NUMxMDA2Q0Q5RTYgLyogRml4ZWRMYXlvdXRTaXplLm1tICovLApA
QCAtMjEyOCw2ICsyMTMxLDcgQEAKIAkJCQk3NjQzMjJENzFCNjFDQ0MzMDAyNEY4MDEgLyogV29y
ZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA1
MUE0MTFBRTYwMDQ0N0M0QyAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMjUxQTQxMUFGNjAwNDQ3QzRDIC8qIE9wZW5B
bmRDbG9zZVdpbmRvdy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJEQzRDRjc3MUQyRDlERDgwMEVD
Q0M5NCAvKiBEYXRhRGV0ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDcxQTQx
MUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0UwQzExRDBBNjUyRjAwRkVCQ0YzIC8qIFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NDRTdGMDgxQTQxMUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkRGlkQ2hh
bmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9EYXRhRGV0ZWN0aW9u
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRGF0YURldGVjdGlv
bi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMTQzMTI5ODY3MDIxYzkyZjFjMzgwYzI5NTk4ZjI3NThjYzUxMzcy
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvRGF0YURldGVjdGlvbi5tbQpAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQg
IlRlc3QuaCIKKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKElPUykKKworc3RhdGljIGJv
b2wgZmluaXNoZWRMb2FkaW5nOworc3RhdGljIGJvb2wgcmFuU2NyaXB0OworCitAaW50ZXJmYWNl
IERhdGFEZXRlY3Rpb25OYXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBEYXRhRGV0ZWN0aW9uTmF2aWdhdGlv
bkRlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5p
c2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCit7CisgICAgZmluaXNoZWRM
b2FkaW5nID0gdHJ1ZTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIERhdGFEZXRlY3Rpb25VSURl
bGVnYXRlIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZT4KKworQHByb3BlcnR5IChub25hdG9taWMs
IHJldGFpbikgTlNEYXRlICpyZWZlcmVuY2VEYXRlOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBEYXRhRGV0ZWN0aW9uVUlEZWxlZ2F0ZQorCistIChOU0RpY3Rpb25hcnkgKilfZGF0YURldGVj
dGlvbkNvbnRleHRGb3JXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgaWYgKCFf
cmVmZXJlbmNlRGF0ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBAeworICAg
ICAgICBAIlJlZmVyZW5jZURhdGUiOiBfcmVmZXJlbmNlRGF0ZQorICAgIH07Cit9CisKK0BlbmQK
Kwordm9pZCBleHBlY3RMaW5rQ291bnQoV0tXZWJWaWV3ICp3ZWJWaWV3LCBOU1N0cmluZyAqSFRN
TFN0cmluZywgdW5zaWduZWQgbGlua0NvdW50KQoreworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3Ry
aW5nOkhUTUxTdHJpbmcgYmFzZVVSTDpuaWxdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZmaW5pc2hlZExvYWRpbmcpOworICAgIGZpbmlzaGVkTG9hZGluZyA9IGZhbHNlOworCisg
ICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ2EnKS5sZW5ndGgiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgdmFsdWUsIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9FUShsaW5rQ291bnQsIFt2YWx1ZSB1bnNpZ25lZElu
dFZhbHVlXSk7CisgICAgICAgIHJhblNjcmlwdCA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJhblNjcmlwdCk7CisgICAgcmFuU2NyaXB0ID0gZmFsc2U7
Cit9CisKK1RFU1QoV2ViS2l0MiwgRGF0YURldGVjdGlvblJlZmVyZW5jZURhdGUpCit7CisgICAg
UmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0
aW9uIHNldERhdGFEZXRlY3RvclR5cGVzOldLRGF0YURldGVjdG9yVHlwZUNhbGVuZGFyRXZlbnRd
OworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBSZXRhaW5QdHI8RGF0YURldGVj
dGlvbk5hdmlnYXRpb25EZWxlZ2F0ZT4gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0Rh
dGFEZXRlY3Rpb25OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKKworICAg
IFJldGFpblB0cjxEYXRhRGV0ZWN0aW9uVUlEZWxlZ2F0ZT4gVUlEZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tEYXRhRGV0ZWN0aW9uVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNl
dFVJRGVsZWdhdGU6VUlEZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBleHBlY3RMaW5rQ291bnQod2Vi
Vmlldy5nZXQoKSwgQCJ0b21vcnJvdyBhdCA2UE0iLCAxKTsKKyAgICBleHBlY3RMaW5rQ291bnQo
d2ViVmlldy5nZXQoKSwgQCJ5ZXN0ZXJkYXkgYXQgNlBNIiwgMCk7CisKKyAgICBOU1RpbWVJbnRl
cnZhbCB3ZWVrID0gNjAgKiA2MCAqIDI0ICogNzsKKworICAgIFtVSURlbGVnYXRlIHNldFJlZmVy
ZW5jZURhdGU6W05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93Oi13ZWVrXV07Cisg
ICAgZXhwZWN0TGlua0NvdW50KHdlYlZpZXcuZ2V0KCksIEAidG9tb3Jyb3cgYXQgNlBNIiwgMCk7
CisgICAgZXhwZWN0TGlua0NvdW50KHdlYlZpZXcuZ2V0KCksIEAieWVzdGVyZGF5IGF0IDZQTSIs
IDApOworCisgICAgW1VJRGVsZWdhdGUgc2V0UmVmZXJlbmNlRGF0ZTpbTlNEYXRlIGRhdGVXaXRo
VGltZUludGVydmFsU2luY2VOb3c6d2Vla11dOworICAgIGV4cGVjdExpbmtDb3VudCh3ZWJWaWV3
LmdldCgpLCBAInRvbW9ycm93IGF0IDZQTSIsIDEpOworICAgIGV4cGVjdExpbmtDb3VudCh3ZWJW
aWV3LmdldCgpLCBAInllc3RlcmRheSBhdCA2UE0iLCAxKTsKK30KKworI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>