<?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>169168</bug_id>
          
          <creation_ts>2017-03-04 06:45:27 -0800</creation_ts>
          <short_desc>[WK2] Add a UI delegate SPI hook to enable or disable navigation on drop</short_desc>
          <delta_ts>2017-03-31 09:36:36 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>170346</dependson>
          <blocked>170163</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1283424</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-04 06:45:27 -0800</bug_when>
    <thetext>Add a UI delegate SPI hook to enable or disable navigation on drop</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283425</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-04 06:46:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/30688374&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283426</commentid>
    <comment_count>2</comment_count>
      <attachid>303393</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-04 07:09:07 -0800</bug_when>
    <thetext>Created attachment 303393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283427</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-04 07:11:05 -0800</bug_when>
    <thetext>Attachment 303393 did not pass style-queue:


ERROR: Source/WebCore/platform/DragData.cpp:42:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/DragData.cpp:53:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/mac/DragDataMac.mm:96:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/mac/DragDataMac.mm:109:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 4 in 8 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>1283780</commentid>
    <comment_count>4</comment_count>
      <attachid>303517</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-06 08:57:44 -0800</bug_when>
    <thetext>Created attachment 303517
Fix Mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283781</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-06 09:00:31 -0800</bug_when>
    <thetext>Attachment 303517 did not pass style-queue:


ERROR: Source/WebCore/platform/DragData.cpp:42:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/DragData.cpp:53:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/mac/DragDataMac.mm:93:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/mac/DragDataMac.mm:109:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 4 in 8 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>1283787</commentid>
    <comment_count>6</comment_count>
      <attachid>303517</attachid>
    <who name="">mitz</who>
    <bug_when>2017-03-06 09:06:05 -0800</bug_when>
    <thetext>Comment on attachment 303517
Fix Mac build

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:68
&gt; +- (BOOL)_webViewEnableNavigationOnDrop:(WKWebView *)webView WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));

I think it’s more common to use the word “should” with a verb phrase rather than “enable” with a noun phrase in this sort of delegate method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283790</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-06 09:11:12 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 303517 [details]
&gt; Fix Mac build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=303517&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:68
&gt; &gt; +- (BOOL)_webViewEnableNavigationOnDrop:(WKWebView *)webView WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; I think it’s more common to use the word “should” with a verb phrase rather
&gt; than “enable” with a noun phrase in this sort of delegate method.

Sounds good -- what about _webViewShouldEnableNavigationOnDrop? I considered making it _webViewShouldNavigateOnDrop just now, but I don&apos;t think that conveys drop behavior as faithfully as _webViewShouldEnableNavigationOnDrop, since returning YES does not guarantee that dropping a link will trigger navigation in the case that the page handles the drop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283792</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-03-06 09:16:20 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Comment on attachment 303517 [details]
&gt; &gt; Fix Mac build
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=303517&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:68
&gt; &gt; &gt; +- (BOOL)_webViewEnableNavigationOnDrop:(WKWebView *)webView WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; &gt; 
&gt; &gt; I think it’s more common to use the word “should” with a verb phrase rather
&gt; &gt; than “enable” with a noun phrase in this sort of delegate method.
&gt; 
&gt; Sounds good -- what about _webViewShouldEnableNavigationOnDrop? I considered
&gt; making it _webViewShouldNavigateOnDrop just now, but I don&apos;t think that
&gt; conveys drop behavior as faithfully as _webViewShouldEnableNavigationOnDrop,
&gt; since returning YES does not guarantee that dropping a link will trigger
&gt; navigation in the case that the page handles the drop.

I understand now that returning YES doesn’t mean navigation will be attempted (can we avoid asking in case it won’t?) but still I feel like “enable” is the wrong word to use here. Perhaps “allow” works better? But maybe it’s just me. Let’s see what other folks think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284364</commentid>
    <comment_count>9</comment_count>
      <attachid>303665</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-07 09:37:30 -0800</bug_when>
    <thetext>Created attachment 303665
Plumb drag destination actions through DragData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284365</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-07 09:39:20 -0800</bug_when>
    <thetext>Attachment 303665 did not pass style-queue:


ERROR: Source/WebKit2/Shared/API/Cocoa/_WKDragDestinationAction.h:28:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/DragData.cpp:42:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/DragData.cpp:53:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/mac/DragDataMac.mm:93:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/mac/DragDataMac.mm:109:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 5 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284368</commentid>
    <comment_count>11</comment_count>
      <attachid>303665</attachid>
    <who name="">mitz</who>
    <bug_when>2017-03-07 09:47:54 -0800</bug_when>
    <thetext>Comment on attachment 303665
Plumb drag destination actions through DragData

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

&gt; Source/WebKit2/ChangeLog:17
&gt; +        * Shared/API/Cocoa/_WKDragDestinationAction.h:

The leading underscore is inconsistent with how we normally name headers, which follows the name of the principal declaration in the header.

&gt; Source/WebKit2/Shared/API/Cocoa/_WKDragDestinationAction.h:33
&gt; +    WKDragDestinationActionAny     = UINT_MAX

Is UINT_MAX the right value to use for something that’s typed NSUInteger.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:69
&gt; +- (WKDragDestinationAction)_webView:(WKWebView *)webView dragDestinationActionMaskForDraggingInfo:(void*)draggingInfo WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));

Can the argument type be more specific than void* here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284378</commentid>
    <comment_count>12</comment_count>
      <attachid>303665</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-07 10:06:13 -0800</bug_when>
    <thetext>Comment on attachment 303665
Plumb drag destination actions through DragData

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

&gt;&gt; Source/WebKit2/ChangeLog:17
&gt;&gt; +        * Shared/API/Cocoa/_WKDragDestinationAction.h:
&gt; 
&gt; The leading underscore is inconsistent with how we normally name headers, which follows the name of the principal declaration in the header.

Got it -- will rename to WKDragDestinationAction.h

&gt;&gt; Source/WebKit2/Shared/API/Cocoa/_WKDragDestinationAction.h:33
&gt;&gt; +    WKDragDestinationActionAny     = UINT_MAX
&gt; 
&gt; Is UINT_MAX the right value to use for something that’s typed NSUInteger.

Good catch. NSUIntegerMax seems more appropriate here.

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:69
&gt;&gt; +- (WKDragDestinationAction)_webView:(WKWebView *)webView dragDestinationActionMaskForDraggingInfo:(void*)draggingInfo WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; Can the argument type be more specific than void* here?

id would certainly be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284417</commentid>
    <comment_count>13</comment_count>
      <attachid>303679</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-07 10:59:27 -0800</bug_when>
    <thetext>Created attachment 303679
Address feedback + fix builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284418</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-07 11:00:49 -0800</bug_when>
    <thetext>Attachment 303679 did not pass style-queue:


ERROR: Source/WebKit/mac/DefaultDelegates/WebDefaultUIDelegate.mm:29:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit/mac/DefaultDelegates/WebDefaultUIDelegate.mm:71:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/Shared/API/Cocoa/WKDragDestinationAction.h:28:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 29 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>1284458</commentid>
    <comment_count>15</comment_count>
      <attachid>303694</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-07 11:52:33 -0800</bug_when>
    <thetext>Created attachment 303694
Additional build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284461</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-07 11:54:56 -0800</bug_when>
    <thetext>Attachment 303694 did not pass style-queue:


ERROR: Source/WebKit/mac/DefaultDelegates/WebDefaultUIDelegate.mm:29:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit/mac/DefaultDelegates/WebDefaultUIDelegate.mm:71:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/Shared/API/Cocoa/WKDragDestinationAction.h:32:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 29 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>1284482</commentid>
    <comment_count>17</comment_count>
      <attachid>303698</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-07 12:24:16 -0800</bug_when>
    <thetext>Created attachment 303698
Fix the windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284483</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-07 12:26:18 -0800</bug_when>
    <thetext>Attachment 303698 did not pass style-queue:


ERROR: Source/WebKit/mac/DefaultDelegates/WebDefaultUIDelegate.mm:29:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit/mac/DefaultDelegates/WebDefaultUIDelegate.mm:71:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/Shared/API/Cocoa/WKDragDestinationAction.h:32:  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>1284498</commentid>
    <comment_count>19</comment_count>
      <attachid>303702</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-07 12:42:27 -0800</bug_when>
    <thetext>Created attachment 303702
Fix 32-bit Mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284500</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-07 12:44:18 -0800</bug_when>
    <thetext>Attachment 303702 did not pass style-queue:


ERROR: Source/WebKit/mac/DefaultDelegates/WebDefaultUIDelegate.mm:29:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit/mac/DefaultDelegates/WebDefaultUIDelegate.mm:71:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/Shared/API/Cocoa/WKDragDestinationAction.h:32:  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>1285013</commentid>
    <comment_count>21</comment_count>
      <attachid>303702</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-03-08 14:13:56 -0800</bug_when>
    <thetext>Comment on attachment 303702
Fix 32-bit Mac build

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

&gt; Source/WebCore/page/DragClient.h:49
&gt; -    virtual DragDestinationAction actionMaskForDrag(const DragData&amp;) = 0;
&gt; +    virtual DragDestinationAction actionMaskForDrag(DragDataRef platformData) = 0;

It&apos;d be even better if we could get rid of this altogether now that it&apos;s not called by WebCore anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285324</commentid>
    <comment_count>22</comment_count>
      <attachid>303702</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-09 08:32:59 -0800</bug_when>
    <thetext>Comment on attachment 303702
Fix 32-bit Mac build

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

&gt;&gt; Source/WebCore/page/DragClient.h:49
&gt;&gt; +    virtual DragDestinationAction actionMaskForDrag(DragDataRef platformData) = 0;
&gt; 
&gt; It&apos;d be even better if we could get rid of this altogether now that it&apos;s not called by WebCore anymore.

Good idea! I&apos;ll remove this. We can access the UI delegate forwarder directly in WebView instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285417</commentid>
    <comment_count>23</comment_count>
      <attachid>303940</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-09 11:32:32 -0800</bug_when>
    <thetext>Created attachment 303940
Remove WebDragClient::actionMaskForDrag</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285418</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 11:34:48 -0800</bug_when>
    <thetext>Attachment 303940 did not pass style-queue:


ERROR: Source/WebKit/mac/DefaultDelegates/WebDefaultUIDelegate.mm:29:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit/mac/DefaultDelegates/WebDefaultUIDelegate.mm:71:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/Shared/API/Cocoa/WKDragDestinationAction.h:32:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 23 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>1285560</commentid>
    <comment_count>25</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-09 13:51:59 -0800</bug_when>
    <thetext>Landed in &lt;https://trac.webkit.org/changeset/213662&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285561</commentid>
    <comment_count>26</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-09 13:52:33 -0800</bug_when>
    <thetext>^ Please disregard the above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292398</commentid>
    <comment_count>27</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-29 08:45:33 -0700</bug_when>
    <thetext>Committed &lt;https://trac.webkit.org/changeset/214403/webkit&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303393</attachid>
            <date>2017-03-04 07:09:07 -0800</date>
            <delta_ts>2017-03-06 08:57:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169168-20170304070843.patch</filename>
            <type>text/plain</type>
            <size>10662</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI4MjE1ZjFhMjY2NTAz
ZjI1NDQyOGQxOWZhMGRhNGJhMGY0YjE0Mi4uZmU2MjNmYTRlNWFlZTg4OWZkZGFkYTc1YTUxZTQ5
OWQxZjk0ZjY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTAzLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBh
IFVJIGRlbGVnYXRlIFNQSSBob29rIHRvIGVuYWJsZSBvciBkaXNhYmxlIG5hdmlnYXRpb24gb24g
ZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY4ODM3ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgZmxhZyBvbiBE
cmFnRGF0YSB0aGF0IGNhbiBkaXNhbGxvdyB1bmhhbmRsZWQgZHJvcHMgZnJvbSB0cmlnZ2VyaW5n
IG5hdmlnYXRpb24uIFRlc3RzIHRvIGJlIGFkZGVkCisgICAgICAgIGluIGEgbGF0ZXIgcGF0Y2gu
CisKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKToKKworICAgICAgICBSZXNwZWN0IHRo
ZSB2YWx1ZSBvZiBEcmFnRGF0YTo6ZW5hYmxlTmF2aWdhdGlvbk9uRHJvcCBieSByZXR1cm5pbmcg
RHJhZ09wZXJhdGlvbk5vbmUgaWYgbmF2aWdhdGlvbiBvbiBkcm9wIGlzCisgICAgICAgIG5vdCBl
bmFibGVkLgorCisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0RhdGE6OkRyYWdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5o
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmVuYWJsZU5hdmlnYXRpb25PbkRyb3ApOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisKIDIwMTctMDMtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBY3R1YWxseSBmaXggV2luZG93cyBi
dWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCBkMjViMjE3ZjI3MjNiNzc5MDkxN2ZkODViMjE4N2E4MmQwMTky
M2I3Li41YTEwMjg2ZDc3Mjg0ZDdhYmJhNTQ2ZjgxYjVkMDQ1YWI2ZTY2MTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDMtMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIGEgVUkgZGVsZWdhdGUgU1BJIGhvb2sg
dG8gZW5hYmxlIG9yIGRpc2FibGUgbmF2aWdhdGlvbiBvbiBkcm9wCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkxNjgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzMwNjg4Mzc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNlcmlhbGl6ZSB0aGUgbmV3IG1lbWJlciBvZiBEcmFnRGF0YSwgbV9lbmFibGVO
YXZpZ2F0aW9uT25Ecm9wLCBvdmVyIElQQywgYW5kIGFsc28gYWRkIGEgaG9vayB0byBjYWxsIG91
dCB0byBhCisgICAgICAgIFVJIGRlbGVnYXRlIGZvciB0aGlzIGJlaGF2aW9yLgorCisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PERyYWdEYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlE
ZWxlZ2F0ZVByaXZhdGUuaDoKKwogMjAxNy0wMy0wMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIC1bV0tXZWJWaWV3IGFkanVzdGVkRGF0
YUludGVyYWN0aW9uSXRlbVByb3ZpZGVyczpdIHdpdGggYSBVSSBkZWxlZ2F0ZSBtZXRob2QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNThlMTdmZGQxNDQ4ODY4Y2Jj
YzlkN2M1NTczMDZiMjY3NjVjYWM3MS4uZTJjMjNmOGEzODIyNDMzMzZhNDE3MDA2YTBmOTAyMGI0
MGQ5Y2UxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTQyNCw2
ICs0MjQsOSBAQCBEcmFnU291cmNlQWN0aW9uIERyYWdDb250cm9sbGVyOjpkZWxlZ2F0ZURyYWdT
b3VyY2VBY3Rpb24oY29uc3QgSW50UG9pbnQmIHJvb3RWaQogCiBEcmFnT3BlcmF0aW9uIERyYWdD
b250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsK
KyAgICBpZiAoIWRyYWdEYXRhLmVuYWJsZU5hdmlnYXRpb25PbkRyb3AoKSkKKyAgICAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lOworCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9wYWdl
Lm1haW5GcmFtZSgpLmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpKTsK
IAogICAgIGJvb2wgcGx1Z2luRG9jdW1lbnRBY2NlcHRzRHJhZ3MgPSBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmNwcAppbmRleCBhYjY3YzY2NmRhODEwZTk1N2Q4ZmUzZTk5NjFi
ZWRkMTgzNDZhMzhhLi44YWIxYTI1OWE1OWQxYTM2ZGMxNDI0NTAwODQ4MWE4NmEzM2NjZDkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCkBAIC0zMywyMiArMzMsMjQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogRHJhZ0RhdGE6OkRyYWdE
YXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29u
c3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCAKLSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9w
ZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzKQorICAgIERyYWdPcGVyYXRp
b24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIGJvb2wg
ZW5hYmxlTmF2aWdhdGlvbk9uRHJvcCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9z
aXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9w
bGF0Zm9ybURyYWdEYXRhKGRhdGEpCiAgICAgLCBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
ayhzb3VyY2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9hcHBsaWNhdGlvbkZsYWdzKGZsYWdzKQor
ICAgICwgbV9lbmFibGVOYXZpZ2F0aW9uT25Ecm9wKGVuYWJsZU5hdmlnYXRpb25PbkRyb3ApCiB7
ICAKIH0KIAogRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLAotICAgIERy
YWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxh
Z3MpCisgICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRp
b25GbGFncyBmbGFncywgYm9vbCBlbmFibGVOYXZpZ2F0aW9uT25Ecm9wKQogICAgIDogbV9jbGll
bnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFs
UG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEoMCkKICAgICAsIG1fZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spCiAgICAgLCBtX2FwcGxpY2F0
aW9uRmxhZ3MoZmxhZ3MpCisgICAgLCBtX2VuYWJsZU5hdmlnYXRpb25PbkRyb3AoZW5hYmxlTmF2
aWdhdGlvbk9uRHJvcCkKIHsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgK
aW5kZXggM2NmMTFlN2RhMDE0OWVmNDc5MDQ3M2Y1ODVkYTc5MDk1MmI3ODQyNy4uMzdkYmM4NzA0
NjMwZmRkYTk2OWQ1ODcxMzZlNmVkODM5YjdmN2JkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
RGF0YS5oCkBAIC03OCw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICBlbnVtIEZpbGVuYW1lQ29udmVy
c2lvblBvbGljeSB7IERvTm90Q29udmVydEZpbGVuYW1lcywgQ29udmVydEZpbGVuYW1lcyB9Owog
CiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRo
ZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUg
dG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9u
ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFn
ZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdB
cHBsaWNhdGlvbk5vbmUpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRhUmVm
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGlj
YXRpb25Ob25lLCBib29sIGVuYWJsZU5hdmlnYXRpb25PbkRyb3AgPSB0cnVlKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9u
ZSwgYm9vbCBlbmFibGVOYXZpZ2F0aW9uT25Ecm9wID0gdHJ1ZSk7CiAgICAgLy8gVGhpcyBjb25z
dHJ1Y3RvciBzaG91bGQgdXNlZCBvbmx5IGJ5IFdlYktpdDIgSVBDIGJlY2F1c2UgRHJhZ0RhdGEK
ICAgICAvLyBpcyBpbml0aWFsaXplZCBieSB0aGUgZGVjb2RlciBhbmQgbm90IGluIHRoZSBjb25z
dHJ1Y3Rvci4KICAgICBEcmFnRGF0YSgpIHsgfQpAQCAtMTA3LDYgKzEwNyw3IEBAIHB1YmxpYzoK
ICAgICB1bnNpZ25lZCBudW1iZXJPZkZpbGVzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGaWxlTmFt
ZXMoVmVjdG9yPFN0cmluZz4mIGZpbGVOYW1lcykgeyBtX2ZpbGVOYW1lcyA9IFdURk1vdmUoZmls
ZU5hbWVzKTsgfQogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlTmFtZXMoKSBjb25zdCB7
IHJldHVybiBtX2ZpbGVOYW1lczsgfQorICAgIGJvb2wgZW5hYmxlTmF2aWdhdGlvbk9uRHJvcCgp
IGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlTmF2aWdhdGlvbk9uRHJvcDsgfQogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUoKSBjb25zdCB7IHJldHVy
biBtX3Bhc3RlYm9hcmROYW1lOyB9CiAgICAgYm9vbCBjb250YWluc1Byb21pc2UoKSBjb25zdDsK
QEAgLTEzMiw2ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIERyYWdPcGVyYXRpb24gbV9kcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2s7CiAgICAgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgbV9hcHBsaWNh
dGlvbkZsYWdzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZU5hbWVzOworICAgIGJvb2wgbV9l
bmFibGVOYXZpZ2F0aW9uT25Ecm9wOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFN0cmluZyBt
X3Bhc3RlYm9hcmROYW1lOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJh
Z0RhdGFNYWMubW0KaW5kZXggOThkN2I3ZmUxNThlMjc5NmZlMmM1YmQ4OTRiYmM3NDUwYmM4YjRl
My4uNjA3YjdhMjc0Y2NhMTg0MjIwMmIyYTE4M2QwNTY5NGYwNmMwYjAxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpAQCAtODQsNyArODQsNyBAQCBzdGF0
aWMgaW5saW5lIFN0cmluZyB0aWZmUGFzdGVib2FyZFR5cGUoKQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIAotICAgIERy
YWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxh
Z3MpCisgICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRp
b25GbGFncyBmbGFncywgYm9vbCBlbmFibGVOYXZpZ2F0aW9uT25Ecm9wKQogICAgIDogbV9jbGll
bnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFs
UG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEoZGF0YSkKQEAgLTkzLDE4ICs5Mywy
MCBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQbwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1f
cGFzdGVib2FyZE5hbWUoW1ttX3BsYXRmb3JtRHJhZ0RhdGEgZHJhZ2dpbmdQYXN0ZWJvYXJkXSBu
YW1lXSkKICNlbHNlCisgICAgLCBtX2VuYWJsZU5hdmlnYXRpb25PbkRyb3AoZW5hYmxlTmF2aWdh
dGlvbk9uRHJvcCkKICAgICAsIG1fcGFzdGVib2FyZE5hbWUoImRhdGEgaW50ZXJhY3Rpb24gcGFz
dGVib2FyZCIpCiAjZW5kaWYKIHsKIH0KIAogRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmlu
ZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwKLSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJh
dGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzKQorICAgIERyYWdPcGVyYXRpb24g
c291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIGJvb2wgZW5h
YmxlTmF2aWdhdGlvbk9uRHJvcCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRp
b24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0
Zm9ybURyYWdEYXRhKDApCiAgICAgLCBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayhzb3Vy
Y2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9hcHBsaWNhdGlvbkZsYWdzKGZsYWdzKQorICAgICwg
bV9lbmFibGVOYXZpZ2F0aW9uT25Ecm9wKGVuYWJsZU5hdmlnYXRpb25PbkRyb3ApCiAgICAgLCBt
X3Bhc3RlYm9hcmROYW1lKGRyYWdTdG9yYWdlTmFtZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjE2NmFiNmVhMTUxNjE5
Y2Q5N2FmMWI3M2I2YTQ5NWFlNzA5OGYyYy4uYWQ5Mjc4ZTE4ZjQ5MWNmZmFlMzk1NTcwOTU2Yjg1
MGQzYzkxYTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKQEAgLTEyMjQsNiArMTIyNCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxEcmFn
RGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEp
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEuZmlsZU5hbWVzKCk7
CiAjZW5kaWYKKyAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLmVuYWJsZU5hdmlnYXRpb25PbkRyb3Ao
KTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIERyYWdEYXRhJiBkcmFnRGF0YSkKQEAgLTEyNTUsNyArMTI1NiwxMSBAQCBib29sIEFy
Z3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0RhdGEm
IGRyYWdEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAotICAgIGRyYWdEYXRh
ID0gRHJhZ0RhdGEocGFzdGVib2FyZE5hbWUsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlv
biwgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzKTsKKyAgICBi
b29sIGVuYWJsZU5hdmlnYXRpb25PbkRyb3A7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbmFi
bGVOYXZpZ2F0aW9uT25Ecm9wKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZHJhZ0Rh
dGEgPSBEcmFnRGF0YShwYXN0ZWJvYXJkTmFtZSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0
aW9uLCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3MsIGVuYWJs
ZU5hdmlnYXRpb25PbkRyb3ApOwogICAgIGRyYWdEYXRhLnNldEZpbGVOYW1lcyhmaWxlTmFtZXMp
OwogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDM2MWE1Y2FkZGFmNDA4
NzZmMWYxYWVkODk3OWM4YWVjOGUwYjJmN2YuLmM4NzJlNDg0NDczZTQxMzNhZjMyOTQ5MGY4NzE5
OTRjY2U3OGM3NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC02NSw2ICs2NSw3IEBAIHN0cnVjdCBV
SUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNoZWNr
VXNlck1lZGlhUGVybWlzc2lvbkZvclVSTDooTlNVUkwgKil1cmwgbWFpbkZyYW1lVVJMOihOU1VS
TCAqKW1haW5GcmFtZVVSTCBmcmFtZUlkZW50aWZpZXI6KE5TVUludGVnZXIpZnJhbWVJZGVudGlm
aWVyIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0aG9y
aXplZCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfd2ViVmlld0RpZEJlZ2luQ2FwdHVyZVNlc3Np
b246KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV93ZWJWaWV3RGlkRW5kQ2FwdHVyZVNlc3Np
b246KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistIChCT09MKV93ZWJWaWV3RW5hYmxlTmF2aWdhdGlvbk9u
RHJvcDooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAtIChCT09MKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNob3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0Zv
ckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBXS19BUElfQVZBSUxB
QkxFKGlvcyg5LjApKTsKIC0gKE5TQXJyYXkgKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBhY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50IGRl
ZmF1bHRBY3Rpb25zOihOU0FycmF5PF9XS0VsZW1lbnRBY3Rpb24gKj4gKilkZWZhdWx0QWN0aW9u
czsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303517</attachid>
            <date>2017-03-06 08:57:44 -0800</date>
            <delta_ts>2017-03-07 09:37:27 -0800</delta_ts>
            <desc>Fix Mac build</desc>
            <filename>bug-169168-20170306085719.patch</filename>
            <type>text/plain</type>
            <size>10690</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI4MjE1ZjFhMjY2NTAz
ZjI1NDQyOGQxOWZhMGRhNGJhMGY0YjE0Mi4uZmU2MjNmYTRlNWFlZTg4OWZkZGFkYTc1YTUxZTQ5
OWQxZjk0ZjY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTAzLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBh
IFVJIGRlbGVnYXRlIFNQSSBob29rIHRvIGVuYWJsZSBvciBkaXNhYmxlIG5hdmlnYXRpb24gb24g
ZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY4ODM3ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgZmxhZyBvbiBE
cmFnRGF0YSB0aGF0IGNhbiBkaXNhbGxvdyB1bmhhbmRsZWQgZHJvcHMgZnJvbSB0cmlnZ2VyaW5n
IG5hdmlnYXRpb24uIFRlc3RzIHRvIGJlIGFkZGVkCisgICAgICAgIGluIGEgbGF0ZXIgcGF0Y2gu
CisKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKToKKworICAgICAgICBSZXNwZWN0IHRo
ZSB2YWx1ZSBvZiBEcmFnRGF0YTo6ZW5hYmxlTmF2aWdhdGlvbk9uRHJvcCBieSByZXR1cm5pbmcg
RHJhZ09wZXJhdGlvbk5vbmUgaWYgbmF2aWdhdGlvbiBvbiBkcm9wIGlzCisgICAgICAgIG5vdCBl
bmFibGVkLgorCisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0RhdGE6OkRyYWdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5o
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmVuYWJsZU5hdmlnYXRpb25PbkRyb3ApOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisKIDIwMTctMDMtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBY3R1YWxseSBmaXggV2luZG93cyBi
dWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCBkMjViMjE3ZjI3MjNiNzc5MDkxN2ZkODViMjE4N2E4MmQwMTky
M2I3Li41YTEwMjg2ZDc3Mjg0ZDdhYmJhNTQ2ZjgxYjVkMDQ1YWI2ZTY2MTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDMtMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIGEgVUkgZGVsZWdhdGUgU1BJIGhvb2sg
dG8gZW5hYmxlIG9yIGRpc2FibGUgbmF2aWdhdGlvbiBvbiBkcm9wCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkxNjgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzMwNjg4Mzc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNlcmlhbGl6ZSB0aGUgbmV3IG1lbWJlciBvZiBEcmFnRGF0YSwgbV9lbmFibGVO
YXZpZ2F0aW9uT25Ecm9wLCBvdmVyIElQQywgYW5kIGFsc28gYWRkIGEgaG9vayB0byBjYWxsIG91
dCB0byBhCisgICAgICAgIFVJIGRlbGVnYXRlIGZvciB0aGlzIGJlaGF2aW9yLgorCisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PERyYWdEYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlE
ZWxlZ2F0ZVByaXZhdGUuaDoKKwogMjAxNy0wMy0wMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIC1bV0tXZWJWaWV3IGFkanVzdGVkRGF0
YUludGVyYWN0aW9uSXRlbVByb3ZpZGVyczpdIHdpdGggYSBVSSBkZWxlZ2F0ZSBtZXRob2QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNThlMTdmZGQxNDQ4ODY4Y2Jj
YzlkN2M1NTczMDZiMjY3NjVjYWM3MS4uZTJjMjNmOGEzODIyNDMzMzZhNDE3MDA2YTBmOTAyMGI0
MGQ5Y2UxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTQyNCw2
ICs0MjQsOSBAQCBEcmFnU291cmNlQWN0aW9uIERyYWdDb250cm9sbGVyOjpkZWxlZ2F0ZURyYWdT
b3VyY2VBY3Rpb24oY29uc3QgSW50UG9pbnQmIHJvb3RWaQogCiBEcmFnT3BlcmF0aW9uIERyYWdD
b250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsK
KyAgICBpZiAoIWRyYWdEYXRhLmVuYWJsZU5hdmlnYXRpb25PbkRyb3AoKSkKKyAgICAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lOworCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9wYWdl
Lm1haW5GcmFtZSgpLmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpKTsK
IAogICAgIGJvb2wgcGx1Z2luRG9jdW1lbnRBY2NlcHRzRHJhZ3MgPSBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmNwcAppbmRleCBhYjY3YzY2NmRhODEwZTk1N2Q4ZmUzZTk5NjFi
ZWRkMTgzNDZhMzhhLi44YWIxYTI1OWE1OWQxYTM2ZGMxNDI0NTAwODQ4MWE4NmEzM2NjZDkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCkBAIC0zMywyMiArMzMsMjQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogRHJhZ0RhdGE6OkRyYWdE
YXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29u
c3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCAKLSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9w
ZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzKQorICAgIERyYWdPcGVyYXRp
b24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIGJvb2wg
ZW5hYmxlTmF2aWdhdGlvbk9uRHJvcCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9z
aXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9w
bGF0Zm9ybURyYWdEYXRhKGRhdGEpCiAgICAgLCBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
ayhzb3VyY2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9hcHBsaWNhdGlvbkZsYWdzKGZsYWdzKQor
ICAgICwgbV9lbmFibGVOYXZpZ2F0aW9uT25Ecm9wKGVuYWJsZU5hdmlnYXRpb25PbkRyb3ApCiB7
ICAKIH0KIAogRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLAotICAgIERy
YWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxh
Z3MpCisgICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRp
b25GbGFncyBmbGFncywgYm9vbCBlbmFibGVOYXZpZ2F0aW9uT25Ecm9wKQogICAgIDogbV9jbGll
bnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFs
UG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEoMCkKICAgICAsIG1fZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spCiAgICAgLCBtX2FwcGxpY2F0
aW9uRmxhZ3MoZmxhZ3MpCisgICAgLCBtX2VuYWJsZU5hdmlnYXRpb25PbkRyb3AoZW5hYmxlTmF2
aWdhdGlvbk9uRHJvcCkKIHsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgK
aW5kZXggM2NmMTFlN2RhMDE0OWVmNDc5MDQ3M2Y1ODVkYTc5MDk1MmI3ODQyNy4uMzdkYmM4NzA0
NjMwZmRkYTk2OWQ1ODcxMzZlNmVkODM5YjdmN2JkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
RGF0YS5oCkBAIC03OCw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICBlbnVtIEZpbGVuYW1lQ29udmVy
c2lvblBvbGljeSB7IERvTm90Q29udmVydEZpbGVuYW1lcywgQ29udmVydEZpbGVuYW1lcyB9Owog
CiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRo
ZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUg
dG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9u
ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFn
ZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdB
cHBsaWNhdGlvbk5vbmUpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRhUmVm
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGlj
YXRpb25Ob25lLCBib29sIGVuYWJsZU5hdmlnYXRpb25PbkRyb3AgPSB0cnVlKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9u
ZSwgYm9vbCBlbmFibGVOYXZpZ2F0aW9uT25Ecm9wID0gdHJ1ZSk7CiAgICAgLy8gVGhpcyBjb25z
dHJ1Y3RvciBzaG91bGQgdXNlZCBvbmx5IGJ5IFdlYktpdDIgSVBDIGJlY2F1c2UgRHJhZ0RhdGEK
ICAgICAvLyBpcyBpbml0aWFsaXplZCBieSB0aGUgZGVjb2RlciBhbmQgbm90IGluIHRoZSBjb25z
dHJ1Y3Rvci4KICAgICBEcmFnRGF0YSgpIHsgfQpAQCAtMTA3LDYgKzEwNyw3IEBAIHB1YmxpYzoK
ICAgICB1bnNpZ25lZCBudW1iZXJPZkZpbGVzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGaWxlTmFt
ZXMoVmVjdG9yPFN0cmluZz4mIGZpbGVOYW1lcykgeyBtX2ZpbGVOYW1lcyA9IFdURk1vdmUoZmls
ZU5hbWVzKTsgfQogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlTmFtZXMoKSBjb25zdCB7
IHJldHVybiBtX2ZpbGVOYW1lczsgfQorICAgIGJvb2wgZW5hYmxlTmF2aWdhdGlvbk9uRHJvcCgp
IGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlTmF2aWdhdGlvbk9uRHJvcDsgfQogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUoKSBjb25zdCB7IHJldHVy
biBtX3Bhc3RlYm9hcmROYW1lOyB9CiAgICAgYm9vbCBjb250YWluc1Byb21pc2UoKSBjb25zdDsK
QEAgLTEzMiw2ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIERyYWdPcGVyYXRpb24gbV9kcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2s7CiAgICAgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgbV9hcHBsaWNh
dGlvbkZsYWdzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZU5hbWVzOworICAgIGJvb2wgbV9l
bmFibGVOYXZpZ2F0aW9uT25Ecm9wOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFN0cmluZyBt
X3Bhc3RlYm9hcmROYW1lOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJh
Z0RhdGFNYWMubW0KaW5kZXggOThkN2I3ZmUxNThlMjc5NmZlMmM1YmQ4OTRiYmM3NDUwYmM4YjRl
My4uM2QzMmRjM2I2ODMwMzY1OTcyMjQwZjViODk3YTkxMjk1MGM4Zjg3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpAQCAtODQsMTIgKzg0LDEzIEBAIHN0
YXRpYyBpbmxpbmUgU3RyaW5nIHRpZmZQYXN0ZWJvYXJkVHlwZSgpCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIERyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgCi0gICAg
RHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBm
bGFncykKKyAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNh
dGlvbkZsYWdzIGZsYWdzLCBib29sIGVuYWJsZU5hdmlnYXRpb25PbkRyb3ApCiAgICAgOiBtX2Ns
aWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9i
YWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YShkYXRhKQogICAgICwgbV9kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soc291cmNlT3BlcmF0aW9uTWFzaykKICAgICAsIG1fYXBw
bGljYXRpb25GbGFncyhmbGFncykKKyAgICAsIG1fZW5hYmxlTmF2aWdhdGlvbk9uRHJvcChlbmFi
bGVOYXZpZ2F0aW9uT25Ecm9wKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fcGFzdGVib2Fy
ZE5hbWUoW1ttX3BsYXRmb3JtRHJhZ0RhdGEgZHJhZ2dpbmdQYXN0ZWJvYXJkXSBuYW1lXSkKICNl
bHNlCkBAIC05OSwxMiArMTAwLDEzIEBAIERyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBk
YXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvCiB9CiAKIERy
YWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sCi0g
ICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFn
cyBmbGFncykKKyAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBs
aWNhdGlvbkZsYWdzIGZsYWdzLCBib29sIGVuYWJsZU5hdmlnYXRpb25PbkRyb3ApCiAgICAgOiBt
X2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihn
bG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YSgwKQogICAgICwgbV9kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soc291cmNlT3BlcmF0aW9uTWFzaykKICAgICAsIG1fYXBw
bGljYXRpb25GbGFncyhmbGFncykKKyAgICAsIG1fZW5hYmxlTmF2aWdhdGlvbk9uRHJvcChlbmFi
bGVOYXZpZ2F0aW9uT25Ecm9wKQogICAgICwgbV9wYXN0ZWJvYXJkTmFtZShkcmFnU3RvcmFnZU5h
bWUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCmluZGV4IDYxNjZhYjZlYTE1MTYxOWNkOTdhZjFiNzNiNmE0OTVhZTcwOThmMmMuLmFk
OTI3OGUxOGY0OTFjZmZhZTM5NTU3MDk1NmI4NTBkM2M5MWE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMjI0LDYgKzEyMjQs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBlbmNv
ZGVyIDw8IGRyYWdEYXRhLmZpbGVOYW1lcygpOwogI2VuZGlmCisgICAgZW5jb2RlciA8PCBkcmFn
RGF0YS5lbmFibGVOYXZpZ2F0aW9uT25Ecm9wKCk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxE
cmFnRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEcmFnRGF0YSYgZHJhZ0RhdGEpCkBA
IC0xMjU1LDcgKzEyNTYsMTEgQEAgYm9vbCBBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogI2VuZGlmCiAKLSAgICBkcmFnRGF0YSA9IERyYWdEYXRhKHBhc3RlYm9hcmROYW1lLCBj
bGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
aywgYXBwbGljYXRpb25GbGFncyk7CisgICAgYm9vbCBlbmFibGVOYXZpZ2F0aW9uT25Ecm9wOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW5hYmxlTmF2aWdhdGlvbk9uRHJvcCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGRyYWdEYXRhID0gRHJhZ0RhdGEocGFzdGVib2FyZE5hbWUs
IGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrLCBhcHBsaWNhdGlvbkZsYWdzLCBlbmFibGVOYXZpZ2F0aW9uT25Ecm9wKTsKICAgICBkcmFn
RGF0YS5zZXRGaWxlTmFtZXMoZmlsZU5hbWVzKTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVBy
aXZhdGUuaAppbmRleCAzNjFhNWNhZGRhZjQwODc2ZjFmMWFlZDg5NzljOGFlYzhlMGIyZjdmLi5j
ODcyZTQ4NDQ3M2U0MTMzYWYzMjk0OTBmODcxOTk0Y2NlNzhjNzY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUu
aApAQCAtNjUsNiArNjUsNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JVUkw6KE5T
VVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVVUkwgZnJhbWVJZGVudGlm
aWVyOihOU1VJbnRlZ2VyKWZyYW1lSWRlbnRpZmllciBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TU3RyaW5nICpzYWx0LCBCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQp
X3dlYlZpZXdEaWRCZWdpbkNhcHR1cmVTZXNzaW9uOihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9p
ZClfd2ViVmlld0RpZEVuZENhcHR1cmVTZXNzaW9uOihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAoQk9P
TClfd2ViVmlld0VuYWJsZU5hdmlnYXRpb25PbkRyb3A6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAjaWYg
VEFSR0VUX09TX0lQSE9ORQogLSAoQk9PTClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBz
aG91bGRJbmNsdWRlQXBwTGlua0FjdGlvbnNGb3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50
SW5mbyAqKWVsZW1lbnQgV0tfQVBJX0FWQUlMQUJMRShpb3MoOS4wKSk7CiAtIChOU0FycmF5ICop
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2
YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBkZWZhdWx0QWN0aW9uczooTlNBcnJheTxfV0tFbGVt
ZW50QWN0aW9uICo+ICopZGVmYXVsdEFjdGlvbnM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303665</attachid>
            <date>2017-03-07 09:37:30 -0800</date>
            <delta_ts>2017-03-07 10:59:22 -0800</delta_ts>
            <desc>Plumb drag destination actions through DragData</desc>
            <filename>bug-169168-20170307093703.patch</filename>
            <type>text/plain</type>
            <size>37237</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI4MjE1ZjFhMjY2NTAz
ZjI1NDQyOGQxOWZhMGRhNGJhMGY0YjE0Mi4uYjY5N2I3YjU4ODNhNWE1MzI4MGM0MTU3MjdlM2M0
MmUyYjY0Y2Q3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTAzLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBh
IFVJIGRlbGVnYXRlIFNQSSBob29rIHRvIGVuYWJsZSBvciBkaXNhYmxlIG5hdmlnYXRpb24gb24g
ZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY4ODM3ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBjbGllbnQgaG9va3MgZm9y
IHRoZSBkcmFnIGRlc3RpbmF0aW9uIGFjdGlvbiBpbiBXZWJDb3JlIHRvIGFzayBmb3IgdGhlIGRy
YWcgZGVzdGluYXRpb24gYWN0aW9uIG1hc2sKKyAgICAgICAgdXBvbiBpbml0aWFsaXppbmcgdGhl
IERyYWdEYXRhLiBJbiBEcmFnQ29udHJvbGxlciwgcmF0aGVyIHRoYW4gc2V0dGluZyBtX2RyYWdE
ZXN0aW5hdGlvbkFjdGlvbiB0byB0aGUgcmVzdWx0IG9mCisgICAgICAgIG1fY2xpZW50LmFjdGlv
bk1hc2tGb3JEcmFnLCB3ZSBpbnN0ZWFkIHNldCBpdCB0byB0aGUgRHJhZ0RhdGEncyBkZXN0aW5h
dGlvbiBhY3Rpb24uCisKKyAgICAgICAgVGVzdHMgdG8gY29tZSBpbiBhIGZ1dHVyZSBwYXRjaC4K
KworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIHBhZ2UvRHJh
Z0NsaWVudC5oOgorCisgICAgICAgIFJhdGhlciB0aGFuIHBhc3MgaW4gYSBEcmFnRGF0YSwgcGFz
cyBpbiBvbmx5IHRoZSBwbGF0Zm9ybSBkYXRhIHRoYXQgd2UgbmVlZCB0byBoYW5kIHRvIHRoZSBk
ZWxlZ2F0ZS4gVGhpcyBpcworICAgICAgICBiZWNhdXNlIHdlIG5vdyBhc2sgZm9yIGRyYWcgZGVz
dGluYXRpb24gYWN0aW9ucyBwcmlvciB0byBjcmVhdGluZyB0aGUgRHJhZ0RhdGEuCisKKyAgICAg
ICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250
cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZCk6CisKKyAgICAgICAgVXBkYXRlIHRoZSBhdmFp
bGFibGUgZHJhZyBkZXN0aW5hdGlvbiBhY3Rpb25zIGluIFdlYkNvcmUgdXNpbmcgdGhlIGRlc3Rp
bmF0aW9uIGFjdGlvbnMgc3RvcmVkIGluIERyYWdEYXRhIHJhdGhlcgorICAgICAgICB0aGFuIGNh
bGxpbmcgb3V0IHRvIHRoZSBjbGllbnQgZGVsZWdhdGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9E
cmFnRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpvcGVy
YXRvciA9KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorCiAyMDE3LTAzLTAxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWN0dWFsbHkgZml4
IFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNTAxZjA5M2ZmM2ZiM2JhODFmZDEz
ZTY1OWExYzgxNGJkNjRiMDExNy4uM2M4MDg5ZmFiMDlhNzFlZDJkYTk5NDQ2MzQ4ODJjYmE4YmNj
MjNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTAzLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBh
IFVJIGRlbGVnYXRlIFNQSSBob29rIHRvIGVuYWJsZSBvciBkaXNhYmxlIG5hdmlnYXRpb24gb24g
ZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY4ODM3ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcnMgV2ViRHJhZ0NsaWVudDo6
YWN0aW9uTWFza0ZvckRyYWcgdG8gdGFrZSBwbGF0Zm9ybSBkYXRhIG9ubHksIHJhdGhlciB0aGFu
IHRoZSBlbnRpcmUgRHJhZ0RhdGEuIFNlZSB0aGUKKyAgICAgICAgV2ViQ29yZSBDaGFuZ2VMb2cg
ZW50cnkgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2Vi
RGVmYXVsdFVJRGVsZWdhdGUubToKKyAgICAgICAgKC1bV2ViRGVmYXVsdFVJRGVsZWdhdGUgd2Vi
VmlldzpkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOl0pOgorICAgICAg
ICAqIE1pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcpOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBkcmFnZ2luZ0VudGVy
ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdVcGRhdGVkOl0pOgorCiAyMDE3LTAz
LTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxMzI1OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkMjViMjE3
ZjI3MjNiNzc5MDkxN2ZkODViMjE4N2E4MmQwMTkyM2I3Li40MjYwMTJjOTUxNTE3N2JlNmFjYjFm
ZWQxN2FiYmRiOWRlMmRkNWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTctMDMt
MDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dL
Ml0gQWRkIGEgVUkgZGVsZWdhdGUgU1BJIGhvb2sgdG8gZW5hYmxlIG9yIGRpc2FibGUgbmF2aWdh
dGlvbiBvbiBkcm9wCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjkxNjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwNjg4Mzc0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgY3VzdG9taXpp
bmcgdGhlIHNldCBvZiBhbGxvd2VkIGFjdGlvbnMgb24gZHJvcCBpbiBXZWJLaXQyIGJ5IGludHJv
ZHVjaW5nIGEgbmV3IG1ldGhvZCB0byBXS1VJRGVsZWdhdGVQcml2YXRlCisgICAgICAgIHRoYXQg
cmV0dXJucyBhIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGdpdmVuIHBsYXRmb3JtIGRyYWdnaW5n
IGluZm8uIFRoZXNlIGZsYWdzIGFyZSB0aGVuIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUKKyAgICAg
ICAgRHJhZ0RhdGEgc2VudCBvdmVyIHRvIHRoZSB3ZWIgcHJvY2Vzcywgd2hlcmUgdGhleSB1cGRh
dGUgRHJhZ0NvbnRyb2xsZXIncyB2aWV3IG9mIHRoZSBhbGxvd2VkIGRlc3RpbmF0aW9uIGFjdGlv
bnMuCisKKyAgICAgICAgTW92aW5nIGZvcndhcmQsIHRoZSBkZWZhdWx0IGFjdGlvbiBtYXNrIGZv
ciBXS1dlYlZpZXdzIHdpbGwgaW5jbHVkZSBldmVyeXRoaW5nIGV4Y2VwdCBXS0RyYWdEZXN0aW5h
dGlvbkFjdGlvbkxvYWQsCisgICAgICAgIHRob3VnaCBmb3IgYXBwbGNpYXRpb25zIGxpbmtlZCBv
biBvciBiZWZvcmUgMTAuMTIsIHdlIHdpbGwgc3RpbGwgZGVmYXVsdCB0byBXS0RyYWdEZXN0aW5h
dGlvbkFjdGlvbkFueSB0byBtaXRpZ2F0ZQorICAgICAgICBhbnkgY29tcGF0aWJpbGl0eSByaXNr
LgorCisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnRGVzdGluYXRpb25BY3Rpb24u
aDoKKworICAgICAgICBJbnRyb2R1Y2UgV0syIGNsaWVudC1mYWNpbmcgdmVyc2lvbnMgb2YgV2Vi
Q29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGZsYWdzLgorCisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RHJh
Z0RhdGE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6
ZGVjb2RlKToKKworICAgICAgICBTZXJpYWxpemUgRHJhZ0RhdGEncyBkZXN0aW5hdGlvbiBhY3Rp
b25zIHdoZW4gc2VuZGluZyBEcmFnRGF0YSBvdmVyIElQQy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3dlYl9kcmFnRGVz
dGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86XSk6CisKKyAgICAgICAgRm9yIFdLV2ViVmll
dywgYWxsb3cgYWxsIGRyYWcgZGVzdGluYXRpb24gYWN0aW9ucyBleGNlcHQgZm9yIGxvYWRpbmcg
KGkuZS4gZHJvcC10by1uYXZpZ2F0ZSkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZv
ckRyYWdnaW5nSW5mbzpdKToKKworICAgICAgICBGb3IgV0tWaWV3LCBhbGxvdyBhbGwgdHlwZXMg
b2YgZHJhZyBkZXN0aW5hdGlvbiBhY3Rpb25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1ZlcnNpb25DaGVja3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6YWN0aW9u
TWFza0ZvckRyYWcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oOgorCiAyMDE3LTAzLTAxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgLVtXS1dlYlZpZXcgYWRqdXN0ZWREYXRhSW50ZXJh
Y3Rpb25JdGVtUHJvdmlkZXJzOl0gd2l0aCBhIFVJIGRlbGVnYXRlIG1ldGhvZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBhZmM4NTZhNTQzOWYyZWE2MzQ0ZjRhOWQ0
MDA3Y2E3MWE1MGJlZDc1Li4zYWY5N2Y5Yjg3MWQ2MGE2MWNiMTgyOTdlYjViNDM3ZDdkOTI3N2E2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTI5LDcgKzEyOSw3
IEBAIGNsYXNzIEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgZmluYWwgOiBwdWJsaWMgRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQgewogY2xhc3MgRW1wdHlEcmFnQ2xpZW50IGZpbmFsIDogcHVi
bGljIERyYWdDbGllbnQgewogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rp
b24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBEcmFnRGF0YSYpIGZpbmFsIHsgfQogICAg
IHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0
IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJikgZmluYWwgeyB9Ci0gICAgRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKGNvbnN0IERyYWdEYXRhJikgZmluYWwgeyByZXR1cm4g
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsgfQorICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBh
Y3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YVJlZikgZmluYWwgeyByZXR1cm4gRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTm9uZTsgfQogICAgIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1h
c2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGZpbmFsIHsgcmV0dXJuIERyYWdTb3VyY2VBY3Rp
b25Ob25lOyB9CiAgICAgdm9pZCBzdGFydERyYWcoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYs
IGNvbnN0IEludFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIERhdGFUcmFuc2ZlciYsIEZyYW1l
JiwgRHJhZ1NvdXJjZUFjdGlvbikgZmluYWwgeyB9CiAgICAgdm9pZCBkcmFnQ29udHJvbGxlckRl
c3Ryb3llZCgpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGllbnQuaAppbmRleCBiMDIyMDdk
OGMzNGZjM2ExMTY4MDRjNWEwNDZkZDU3OTRlZmY2ZGEwLi4xOTYyNGRkZWQyNmM4NDAzMzMwMjg5
N2Q5ZGFmNmM5YmYwMmUwYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGllbnQuaApAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgorI2luY2x1
ZGUgIkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiRHJhZ0l0ZW0uaCIKICNpbmNsdWRlICJGbG9hdFBv
aW50LmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKQEAgLTMzLDcgKzM0LDYgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIERhdGFUcmFuc2ZlcjsKLWNsYXNzIERyYWdEYXRhOwog
Y2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW1hZ2U7CkBAIC00Niw3ICs0Niw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlv
bkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNvbnN0IERyYWdEYXRhJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlv
biwgY29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBEcmFn
RGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0ZvckRyYWcoY29uc3QgRHJhZ0RhdGEmKSA9IDA7
CisgICAgdmlydHVhbCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0ZvckRyYWcoRHJh
Z0RhdGFSZWYgcGxhdGZvcm1EYXRhKSA9IDA7CiAgICAgdmlydHVhbCBEcmFnU291cmNlQWN0aW9u
IGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHJvb3RWaWV3UG9p
bnQpID0gMDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKERyYWdJbWFnZSwgY29u
c3QgSW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9zLCBj
b25zdCBGbG9hdFBvaW50JiBkcmFnSW1hZ2VBbmNob3IsIERhdGFUcmFuc2ZlciYsIEZyYW1lJiwg
RHJhZ1NvdXJjZUFjdGlvbikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cAppbmRleCA1OGUxN2ZkZDE0NDg4NjhjYmNjOWQ3YzU1NzMwNmIyNjc2NWNhYzcxLi5lYmJkODk3
ZWNhZDA0MDRmOTQ3OWIzOWNkOGY2ZWFjMDExYWNkZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0Nv
bnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkK
IHsKICAgICBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVu
dEF0UG9pbnQoZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSkpOwogCi0gICAgbV9kcmFnRGVzdGlu
YXRpb25BY3Rpb24gPSBtX2NsaWVudC5hY3Rpb25NYXNrRm9yRHJhZyhkcmFnRGF0YSk7CisgICAg
bV9kcmFnRGVzdGluYXRpb25BY3Rpb24gPSBkcmFnRGF0YS5kcmFnRGVzdGluYXRpb25BY3Rpb24o
KTsKICAgICBpZiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb24gPT0gRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTm9uZSkgewogICAgICAgICBjbGVhckRyYWdDYXJldCgpOyAvLyBGSVhNRTogV2h5IG5vdCBj
YWxsIG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQobnVsbHB0cik/CiAgICAgICAgIHJldHVybiBEcmFn
T3BlcmF0aW9uTm9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcAppbmRleCBhYjY3
YzY2NmRhODEwZTk1N2Q4ZmUzZTk5NjFiZWRkMTgzNDZhMzhhLi5iYzEyMTNjODI3NjE5MDljNmNj
MDhkMzNkOWE5OTdmMTllMjI0NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3Bw
CkBAIC0zMywyMiArMzMsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JN
KENPQ09BKQogRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCAKLSAg
ICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdz
IGZsYWdzKQorICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxp
Y2F0aW9uRmxhZ3MgZmxhZ3MsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBkZXN0aW5hdGlvbkFjdGlv
bikKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2Jh
bFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKGRhdGEp
CiAgICAgLCBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNr
KQogICAgICwgbV9hcHBsaWNhdGlvbkZsYWdzKGZsYWdzKQorICAgICwgbV9kcmFnRGVzdGluYXRp
b25BY3Rpb24oZGVzdGluYXRpb25BY3Rpb24pCiB7ICAKIH0KIAogRHJhZ0RhdGE6OkRyYWdEYXRh
KGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50
UG9pbnQmIGdsb2JhbFBvc2l0aW9uLAotICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9u
TWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MpCisgICAgRHJhZ09wZXJhdGlvbiBzb3Vy
Y2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uIGRlc3RpbmF0aW9uQWN0aW9uKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGll
bnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAg
LCBtX3BsYXRmb3JtRHJhZ0RhdGEoMCkKICAgICAsIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spCiAgICAgLCBtX2FwcGxpY2F0aW9uRmxhZ3MoZmxhZ3Mp
CisgICAgLCBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbihkZXN0aW5hdGlvbkFjdGlvbikKIHsKIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggM2NmMTFlN2RhMDE0OWVm
NDc5MDQ3M2Y1ODVkYTc5MDk1MmI3ODQyNy4uMTk1NzIxYjFmZGEzZWM4OGUyOGZlZjhlMzMyNmM5
NjU5NWNmNDIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC03OCw4ICs3OCw4
IEBAIHB1YmxpYzoKICAgICBlbnVtIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSB7IERvTm90Q29u
dmVydEZpbGVuYW1lcywgQ29udmVydEZpbGVuYW1lcyB9OwogCiAgICAgLy8gY2xpZW50UG9zaXRp
b24gaXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhpbiB0
aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAgICBXRUJDT1JF
X0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdB
cHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3Bl
cmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOworICAg
IFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xp
ZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlv
biwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lLCBEcmFnRGVzdGlu
YXRpb25BY3Rpb24gYWN0aW9ucyA9IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5v
bmUsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25zID0gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
QW55KTsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHNob3VsZCB1c2VkIG9ubHkgYnkgV2ViS2l0
MiBJUEMgYmVjYXVzZSBEcmFnRGF0YQogICAgIC8vIGlzIGluaXRpYWxpemVkIGJ5IHRoZSBkZWNv
ZGVyIGFuZCBub3QgaW4gdGhlIGNvbnN0cnVjdG9yLgogICAgIERyYWdEYXRhKCkgeyB9CkBAIC0x
MDUsNiArMTA1LDcgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnNDb2xvcigpIGNvbnN0Owog
ICAgIGJvb2wgY29udGFpbnNGaWxlcygpIGNvbnN0OwogICAgIHVuc2lnbmVkIG51bWJlck9mRmls
ZXMoKSBjb25zdDsKKyAgICBEcmFnRGVzdGluYXRpb25BY3Rpb24gZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnRGVzdGluYXRpb25BY3Rpb247IH0KICAgICB2b2lk
IHNldEZpbGVOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZmlsZU5hbWVzKSB7IG1fZmlsZU5hbWVzID0g
V1RGTW92ZShmaWxlTmFtZXMpOyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVOYW1l
cygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZU5hbWVzOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBA
IC0xMjEsNiArMTIyLDcgQEAgcHVibGljOgogICAgICAgICBtX3BsYXRmb3JtRHJhZ0RhdGEgPSBk
YXRhLm1fcGxhdGZvcm1EcmFnRGF0YTsKICAgICAgICAgbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2sgPSBkYXRhLm1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOwogICAgICAgICBtX2Fw
cGxpY2F0aW9uRmxhZ3MgPSBkYXRhLm1fYXBwbGljYXRpb25GbGFnczsKKyAgICAgICAgbV9kcmFn
RGVzdGluYXRpb25BY3Rpb24gPSBkYXRhLm1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOwogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogI2VuZGlmCkBAIC0xMzIsNiArMTM0LDcgQEAgcHJpdmF0
ZToKICAgICBEcmFnT3BlcmF0aW9uIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOwogICAg
IERyYWdBcHBsaWNhdGlvbkZsYWdzIG1fYXBwbGljYXRpb25GbGFnczsKICAgICBWZWN0b3I8U3Ry
aW5nPiBtX2ZpbGVOYW1lczsKKyAgICBEcmFnRGVzdGluYXRpb25BY3Rpb24gbV9kcmFnRGVzdGlu
YXRpb25BY3Rpb247CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU3RyaW5nIG1fcGFzdGVib2Fy
ZE5hbWU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
cmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5t
bQppbmRleCA5OGQ3YjdmZTE1OGUyNzk2ZmUyYzViZDg5NGJiYzc0NTBiYzhiNGUzLi4yNDZiZTNi
ZjMwMDBjMjQwM2M4N2I5ZjM5NzhkYWFiZGMxZTk1ZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC04NCwxMiArODQsMTMgQEAgc3RhdGljIGlubGlu
ZSBTdHJpbmcgdGlmZlBhc3RlYm9hcmRUeXBlKCkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRHJh
Z0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCAKLSAgICBEcmFnT3BlcmF0
aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzKQorICAg
IERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3Mg
ZmxhZ3MsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBkZXN0aW5hdGlvbkFjdGlvbikKICAgICA6IG1f
Y2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGds
b2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKGRhdGEpCiAgICAgLCBtX2Ry
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9h
cHBsaWNhdGlvbkZsYWdzKGZsYWdzKQorICAgICwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb24oZGVz
dGluYXRpb25BY3Rpb24pCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9wYXN0ZWJvYXJkTmFt
ZShbW21fcGxhdGZvcm1EcmFnRGF0YSBkcmFnZ2luZ1Bhc3RlYm9hcmRdIG5hbWVdKQogI2Vsc2UK
QEAgLTk5LDEyICsxMDAsMTMgQEAgRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG8KIH0KIAogRHJhZ0Rh
dGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwKLSAgICBE
cmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZs
YWdzKQorICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0
aW9uRmxhZ3MgZmxhZ3MsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBkZXN0aW5hdGlvbkFjdGlvbikK
ICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBv
c2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCiAgICAg
LCBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNrKQogICAg
ICwgbV9hcHBsaWNhdGlvbkZsYWdzKGZsYWdzKQorICAgICwgbV9kcmFnRGVzdGluYXRpb25BY3Rp
b24oZGVzdGluYXRpb25BY3Rpb24pCiAgICAgLCBtX3Bhc3RlYm9hcmROYW1lKGRyYWdTdG9yYWdl
TmFtZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RlZmF1bHREZWxlZ2F0
ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RlZmF1bHREZWxl
Z2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubQppbmRleCAzZTc5NDJiZTM5MzJlMGVkZmEyZTc1
MTM0MzIwOThkMTA1YTk0OGQzLi5kMjBhMDY1M2QyZDI4ZDE0ZmMxYzVhZTIxNzczMGQzOTE4MmFj
YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRl
ZmF1bHRVSURlbGVnYXRlLm0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvRGVmYXVsdERlbGVnYXRl
cy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tCkBAIC0zNCw2ICszNCw3IEBACiAKICNpZiAhUExBVEZP
Uk0oSU9TKQogI2ltcG9ydCAiV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLmgiCisjaW1wb3J0
ICJXZWJLaXRWZXJzaW9uQ2hlY2tzLmgiCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKQEAg
LTIyMiw3ICsyMjMsMTAgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHByaW50
RnJhbWVWaWV3OihXZWJGcmFtZVZpZXcgKilmcmFtZVZpZXcKICNpZiAhUExBVEZPUk0oSU9TKQog
LSAoTlNVSW50ZWdlcil3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5m
bwogewotICAgIHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25Bbnk7CisgICAgaWYgKCFs
aW5rZWRPbk9yQWZ0ZXIoU0RLVmVyc2lvbjo6Rmlyc3RXaXRoRHJvcFRvTmF2aWdhdGVEaXNhbGxv
d2VkQnlEZWZhdWx0KSkKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkFu
eTsKKworICAgIHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkgJiB+V2ViRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTG9hZDsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2Vi
VmlldyB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbjooV2ViRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKWFjdGlvbiBmb3JEcmFnZ2luZ0luZm86KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dp
bmdJbmZvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdFZlcnNpb25D
aGVja3MuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oCmlu
ZGV4IDBmNjA2ZTI4NDQwNTJiODFhODUzYmMwZGM2ZTE0NGZmODI3ZDk5YjMuLjAwMzJjYTkyZGE2
ZTA5MGY3ODI5ODU2YzQ4ZGQ0M2IwNTZiYWQ3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oCkBAIC04Myw2ICs4Myw4IEBACiBlbnVtIGNsYXNzIFNE
S1ZlcnNpb24gOiB1aW50MzJfdCB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIEZpcnN0VG9FeGNs
dWRlTG9jYWxTdG9yYWdlRnJvbUJhY2t1cCA9IERZTERfSU9TX1ZFUlNJT05fMTFfMCwKKyNlbHNl
CisgICAgRmlyc3RXaXRoRHJvcFRvTmF2aWdhdGVEaXNhbGxvd2VkQnlEZWZhdWx0ID0gRFlMRF9N
QUNPU1hfVkVSU0lPTl8xMF8xMwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggZmE0NGE3ZjY1ZTgzOTc0MTA4
MmIyNWYyOGMxNmI0YzI4YTllZThhMi4uZDhlZWQ1OTE3YTlkZjc5MWZjMWVlNDU5ODI4MTdlNDQ5
ZDFkOWVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxQZXJm
b3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwg
Y29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxQZXJmb3Jt
RHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYpIG92ZXJyaWRlOwotICAgIFdlYkNv
cmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBXZWJDb3Jl
OjpEcmFnRGF0YSYpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlv
biBhY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YVJlZiBwbGF0Zm9ybURhdGEpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICBXZWJDb3Jl
OjpEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KSBvdmVycmlkZTsKICAgICB2b2lkIHN0YXJ0RHJh
ZyhXZWJDb3JlOjpEcmFnSW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkcmFnUG9zLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkRy
YWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KaW5kZXggZWM0ZDY4M2ZhZGYyZjZlNmJjZGM1NDQx
ZTg3MzZlOWIyNTc4YjdhOC4uNmUwYjMxNDkzZmYzMDIxYmQyOTcyMTYxZTliZDZiMDdmZWQ4Yjcx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50Lm1tCkBAIC03OSw5ICs3OSw5IEBAIHN0YXRpYyBXZWJIVE1MVmlldyAqZ2V0VG9wSFRNTFZp
ZXcoRnJhbWUqIGZyYW1lKQogICAgIHJldHVybiAoV2ViSFRNTFZpZXcqKVtba2l0KCZmcmFtZS0+
cGFnZSgpLT5tYWluRnJhbWUoKSkgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwogfQogCi1XZWJD
b3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRy
YWcoY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhKQorV2ViQ29yZTo6RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uIFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKERyYWdEYXRhUmVm
IHBsYXRmb3JtRGF0YSkKIHsKLSAgICByZXR1cm4gKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFj
dGlvbilbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcg
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnRGF0YS5wbGF0Zm9y
bURhdGEoKV07CisgICAgcmV0dXJuIChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24pW1tt
X3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IGRyYWdEZXN0
aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86cGxhdGZvcm1EYXRhXTsKIH0KIAogdm9p
ZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3Jl
OjpEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYg
ZHJhZ0RhdGEpCkBAIC0xODEsNyArMTgxLDcgQEAgYm9vbCBXZWJEcmFnQ2xpZW50Ojp1c2VMZWdh
Y3lEcmFnQ2xpZW50KCkKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9Ci1XZWJDb3JlOjpEcmFnRGVz
dGluYXRpb25BY3Rpb24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoY29uc3QgV2Vi
Q29yZTo6RHJhZ0RhdGEmKQorV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIFdlYkRyYWdD
bGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKERyYWdEYXRhUmVmKQogewogICAgIHJldHVybiBEcmFn
RGVzdGluYXRpb25BY3Rpb25Ob25lOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CmluZGV4IDA3MGQwMzU1ODkyOGQxODZlOGRhZjUxNzc1ZjExM2FmM2ZiZTU1OWQuLjdhNzM1MWFh
NzQzOWRlNjY4OTU2ZTBmODYwYjc1MDhjNDgyYTA0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTYzOTIsOCArNjM5MiwxMCBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCBiYWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3RvcktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlP
bAogewogICAgIEludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25d
KTsKICAgICBJbnRQb2ludCBnbG9iYWwoZ2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2lu
Z0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwotICAgIERyYWdEYXRhIGRyYWdEYXRhKGRyYWdn
aW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KFtkcmFn
Z2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9u
RmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7Ci0gICAgcmV0dXJuIGNvcmUoc2VsZiktPmRyYWdDb250cm9s
bGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOworCisgICAgYXV0byYgY29udHJvbGxlciA9IGNv
cmUoc2VsZiktPmRyYWdDb250cm9sbGVyKCk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dp
bmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oW2RyYWdn
aW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25G
bGFnczpkcmFnZ2luZ0luZm9dLCBjb250cm9sbGVyLmNsaWVudCgpLmFjdGlvbk1hc2tGb3JEcmFn
KGRyYWdnaW5nSW5mbykpOworICAgIHJldHVybiBjb250cm9sbGVyLmRyYWdFbnRlcmVkKGRyYWdE
YXRhKTsKIH0KIAogLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nVXBkYXRlZDooaWQgPE5TRHJh
Z2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KQEAgLTY0MDQsOCArNjQwNiwxMCBAQCBzdGF0aWMgTlNT
dHJpbmcgKiBjb25zdCBiYWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3RvcktleSA9IEAiTlNCYWNr
aW5nUHJvcGVydHlPbAogCiAgICAgSW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dp
bmdMb2NhdGlvbl0pOwogICAgIEludFBvaW50IGdsb2JhbChnbG9iYWxQb2ludChbZHJhZ2dpbmdJ
bmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgRHJhZ0RhdGEgZHJh
Z0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJh
dGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYg
YXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKLSAgICByZXR1cm4gcGFnZS0+ZHJhZ0Nv
bnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7CisKKyAgICBhdXRvJiBjb250cm9sbGVy
ID0gY29yZShzZWxmKS0+ZHJhZ0NvbnRyb2xsZXIoKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YShk
cmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihb
ZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNh
dGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIGNvbnRyb2xsZXIuY2xpZW50KCkuYWN0aW9uTWFza0Zv
ckRyYWcoZHJhZ2dpbmdJbmZvKSk7CisgICAgcmV0dXJuIGNvbnRyb2xsZXIuZHJhZ1VwZGF0ZWQo
ZHJhZ0RhdGEpOwogfQogCiAtICh2b2lkKWRyYWdnaW5nRXhpdGVkOihpZCA8TlNEcmFnZ2luZ0lu
Zm8+KWRyYWdnaW5nSW5mbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9D
b2NvYS9fV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvQ29jb2EvX1dLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc5NjNkN2E4
NmM5NWMyZTMxNWVhNDUyMGY1ZWViYjMyYTlmZGRmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmgKQEAg
LTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBXS19BUElfRU5BQkxFRAorCit0eXBlZGVm
IE5TX09QVElPTlMoTlNVSW50ZWdlciwgV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pIHsKKyAgICBX
S0RyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmUgICAgPSAwLAorICAgIFdLRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uREhUTUwgICA9IDEsCisgICAgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25FZGl0ICAgID0g
MiwKKyAgICBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQgICAgPSA0LAorICAgIFdLRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uQW55ICAgICA9IFVJTlRfTUFYCit9IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjE2NmFiNmVh
MTUxNjE5Y2Q5N2FmMWI3M2I2YTQ5NWFlNzA5OGYyYy4uMWQwZGI2ZGRiZGU5YjgyNTMxODg4Yzdj
MDk5MmYyNmUwZWFiMjg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKQEAgLTEyMjQsNiArMTIyNCw3IEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxEcmFnRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBEcmFnRGF0YSYgZHJh
Z0RhdGEpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEuZmlsZU5h
bWVzKCk7CiAjZW5kaWYKKyAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLmRyYWdEZXN0aW5hdGlvbkFj
dGlvbigpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRyYWdEYXRhKQpAQCAtMTI1NSw3ICsxMjU2LDExIEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEcmFn
RGF0YSYgZHJhZ0RhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCi0gICAgZHJh
Z0RhdGEgPSBEcmFnRGF0YShwYXN0ZWJvYXJkTmFtZSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBv
c2l0aW9uLCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3MpOwor
ICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBkZXN0aW5hdGlvbkFjdGlvbjsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlRW51bShkZXN0aW5hdGlvbkFjdGlvbikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGRyYWdEYXRhID0gRHJhZ0RhdGEocGFzdGVib2FyZE5hbWUsIGNsaWVudFBvc2l0
aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBhcHBsaWNh
dGlvbkZsYWdzLCBkZXN0aW5hdGlvbkFjdGlvbik7CiAgICAgZHJhZ0RhdGEuc2V0RmlsZU5hbWVz
KGZpbGVOYW1lcyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggMzYx
YTVjYWRkYWY0MDg3NmYxZjFhZWQ4OTc5YzhhZWM4ZTBiMmY3Zi4uZjA0M2ExNWEyMGM5YjU0M2Nm
OGY2OTIzMmZhMzM5NzQzNmM1ZDkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2ltcG9ydCA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYktp
dC9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0RyYWdEZXN0
aW5hdGlvbkFjdGlvbi5oPgogCiBAY2xhc3MgVUlJdGVtUHJvdmlkZXI7CiBAY2xhc3MgVUlTY3Jv
bGxWaWV3OwpAQCAtNjUsNiArNjYsNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JV
Ukw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVVUkwgZnJhbWVJ
ZGVudGlmaWVyOihOU1VJbnRlZ2VyKWZyYW1lSWRlbnRpZmllciBkZWNpc2lvbkhhbmRsZXI6KHZv
aWQgKF4pKE5TU3RyaW5nICpzYWx0LCBCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0g
KHZvaWQpX3dlYlZpZXdEaWRCZWdpbkNhcHR1cmVTZXNzaW9uOihXS1dlYlZpZXcgKil3ZWJWaWV3
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
LSAodm9pZClfd2ViVmlld0RpZEVuZENhcHR1cmVTZXNzaW9uOihXS1dlYlZpZXcgKil3ZWJWaWV3
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
LSAoV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzoodm9pZCopZHJhZ2dpbmdJ
bmZvIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogI2lmIFRBUkdFVF9PU19JUEhPTkUKIC0gKEJPT0wpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVk
RWxlbWVudEluZm8gKillbGVtZW50IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDkuMCkpOwogLSAoTlNB
cnJheSAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGFjdGlvbnNGb3JFbGVtZW50Oihf
V0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgZGVmYXVsdEFjdGlvbnM6KE5TQXJyYXk8
X1dLRWxlbWVudEFjdGlvbiAqPiAqKWRlZmF1bHRBY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBhNjk4NmQyZWZiZWVmOWI0
YzM5MGMxZGE4NTlhYzFhMzRiZDEyNTNiLi5lYzJiN2I5ZGQyMGVmNjE2Y2UxMWVjNjRmM2Q0MGJj
ZjY3M2I4NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQpAQCAtNDUsNiArNDUsNyBAQAogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCIKICNpbXBvcnQg
IlVJRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlZlcnNpb25DaGVja3MuaCIKICNpbXBvcnQgIlZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oIgogI2ltcG9ydCAiVmlld1NuYXBzaG90U3RvcmUuaCIKICNpbXBv
cnQgIldLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCIKQEAgLTM0NTIsNiArMzQ1MywyMiBAQCBX
RUJDT1JFX0NPTU1BTkQoeWFua0FuZFNlbGVjdCkKIHsKIH0KIAorI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCisKKy0gKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKV93ZWJfZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uRm9yRHJhZ2dpbmdJbmZvOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwor
eworICAgIGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPiB1aURlbGVnYXRlID0gKGlkIDxXS1VJRGVs
ZWdhdGVQcml2YXRlPilbc2VsZiBVSURlbGVnYXRlXTsKKyAgICBpZiAoW3VpRGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrRm9yRHJhZ2dpbmdJbmZvOildKQorICAgICAgICByZXR1cm4gW3VpRGVsZWdhdGUgX3dlYlZp
ZXc6c2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5n
SW5mb107CisKKyAgICBpZiAoIWxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNES1ZlcnNpb246OkZp
cnN0V2l0aERyb3BUb05hdmlnYXRlRGlzYWxsb3dlZEJ5RGVmYXVsdCkpCisgICAgICAgIHJldHVy
biBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKKworICAgIHJldHVybiBXS0RyYWdEZXN0aW5h
dGlvbkFjdGlvbkFueSAmIH5XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQ7Cit9CisKKyNlbmRp
ZgorCiAtICh2b2lkKV93ZWJfZGlzbWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxkV2luZG93cwogewog
ICAgIF9pbXBsLT5kaXNtaXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzRnJvbVZpZXdPbmx5
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5kZXggYzAz
YThjMzcxMWY1YWRiNzg0NzQ1MGQ2Y2UyNTdjMmJkNjkxMDNkMy4uYTZjNDM1N2YyOWMwMWU1NTQ5
YmZjYWM0YTUwZTU4NDAxMjQxZTA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQpAQCAtNDAsNiArNDAsNyBAQAogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNL
ZXlzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCAiV2ViVmlld0ltcGwu
aCIKKyNpbXBvcnQgIl9XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oIgogI2ltcG9ydCAiX1dLTGlu
a0ljb25QYXJhbWV0ZXJzSW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCkBA
IC0xMDA4LDYgKzEwMDksMTUgQEAgU29tZSBvdGhlciBlZGl0aW5nLXJlbGF0ZWQgbWV0aG9kcyBz
dGlsbCB1bmltcGxlbWVudGVkOgogICAgIFtzZWxmIF9kaWRDaGFuZ2VDb250ZW50U2l6ZTpuZXdT
aXplXTsKIH0KIAorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCisKKy0gKFdLRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKV93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOihpZCA8
TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbworeworICAgIHJldHVybiBXS0RyYWdEZXN0aW5h
dGlvbkFjdGlvbkFueTsKK30KKworI2VuZGlmCisKIC0gKHZvaWQpX3dlYl9kaXNtaXNzQ29udGVu
dFJlbGF0aXZlQ2hpbGRXaW5kb3dzCiB7CiAgICAgW3NlbGYgX2Rpc21pc3NDb250ZW50UmVsYXRp
dmVDaGlsZFdpbmRvd3NdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1ZlcnNpb25DaGVja3MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9WZXJz
aW9uQ2hlY2tzLmgKaW5kZXggMzA1Mjk1YzlkZGNjNTNmODhiYWFlMmY4YjU2NGQ2YTFiODMxYzNh
My4uNTAyYWRmNmVmMDYwYTdiYmU5ZDlkNWFiNGViNjgwZjgzZDJjNGMxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oCkBAIC0zOCw2ICszOCw3
IEBAIGVudW0gY2xhc3MgU0RLVmVyc2lvbiA6IHVpbnQzMl90IHsKICNlbGlmIFBMQVRGT1JNKE1B
QykKICAgICBGaXJzdFdpdGhOZXR3b3JrQ2FjaGUgPSBEWUxEX01BQ09TWF9WRVJTSU9OXzEwXzEx
LAogICAgIEZpcnN0V2l0aEV4Y2VwdGlvbnNGb3JEdXBsaWNhdGVDb21wbGV0aW9uSGFuZGxlckNh
bGxzID0gRFlMRF9NQUNPU1hfVkVSU0lPTl8xMF8xMywKKyAgICBGaXJzdFdpdGhEcm9wVG9OYXZp
Z2F0ZURpc2FsbG93ZWRCeURlZmF1bHQgPSBEWUxEX01BQ09TWF9WRVJTSU9OXzEwXzEzCiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgK
aW5kZXggNjkyYTkyNGFjZjRiZDlmMWQ3Y2RiMWE4ZDVkODliNzZiYmYzM2E0ZS4uNzgwYTJkYmE0
YWZjNjczYzM4MWEwMDg4ZmI1YmQzYzc2ZmU2NDc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJQ
bHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUuaCIKICNpbmNsdWRlICJXS0xheW91dE1vZGUuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJfV0tEcmFnRGVzdGluYXRpb25B
Y3Rpb24uaCIKICNpbmNsdWRlICJfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRJbmRpY2F0b3JXaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KQEAgLTkxLDYgKzkyLDEwIEBAIE9CSkNfQ0xBU1Mg
V2ViUGxheWJhY2tDb250cm9sc01hbmFnZXI7CiAKIC0gKHZvaWQpX3dlYl9kaWRDaGFuZ2VDb250
ZW50U2l6ZTooTlNTaXplKW5ld1NpemU7CiAKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorLSAo
V0tEcmFnRGVzdGluYXRpb25BY3Rpb24pX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFn
Z2luZ0luZm86KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvOworI2VuZGlmCisKIEBv
cHRpb25hbAogLSAodm9pZClfd2ViX2RpZEFkZE1lZGlhQ29udHJvbHNNYW5hZ2VyOihpZCljb250
cm9sc01hbmFnZXI7CiAtICh2b2lkKV93ZWJfZGlkUmVtb3ZlTWVkaWFDb250cm9sc01hbmFnZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXgg
ZWNhOWVhNGZkNTc1YWM1OTY0MTY1YTNjYmQ4MDA2MjI2YjgzZmY3MC4uZGE1MmIyNmQ4MmI3MjMx
ZWEwMzc5N2NjMzcwMjJlODcxNzFmZTA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMzU3Nyw3ICszNTc3LDggQEAgTlNEcmFnT3BlcmF0
aW9uIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFn
Z2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVy
dFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAg
IFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0lu
Zm8uZHJhZ2dpbmdMb2NhdGlvbiwgbV92aWV3LndpbmRvdykpOwotICAgIFdlYkNvcmU6OkRyYWdE
YXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcsIGRyYWdnaW5nSW5mbykpOwor
ICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uPihbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9y
RHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdE
YXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBh
cHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcsIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5h
dGlvbkFjdGlvbik7CiAKICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigp
OwogICAgIG1fcGFnZS0+ZHJhZ0VudGVyZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2lu
Z1Bhc3RlYm9hcmQubmFtZSk7CkBAIC0zNTg4LDcgKzM1ODksOCBAQCBOU0RyYWdPcGVyYXRpb24g
V2ViVmlld0ltcGw6OmRyYWdnaW5nVXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5n
SW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9p
bnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5k
cmFnZ2luZ0xvY2F0aW9uLCBtX3ZpZXcud2luZG93KSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEg
ZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
ayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldywgZHJhZ2dpbmdJbmZvKSk7CisgICAg
YXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb24gPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnRGVz
dGluYXRpb25BY3Rpb24+KFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFn
Z2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEo
ZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxp
Y2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldywgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKTsKICAgICBtX3BhZ2UtPmRyYWdVcGRhdGVkKGRyYWdEYXRhLCBkcmFnZ2luZ0luZm8u
ZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwogCiAgICAgTlNJbnRlZ2VyIG51bWJlck9mVmFsaWRJ
dGVtc0ZvckRyb3AgPSBtX3BhZ2UtPmN1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGJjMmUxZjRjMGY3ODJjYTIzMTZjNDlmMmM5MWE3YjljZWQ5NWNjZmUuLjdlZmFm
ZWFiMjQxNTYzNjU4OTE5ZDE5YmQ5YTcyMTJjNDhjZjQ5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5NjEsNiArMTk2MSw3
IEBACiAJCUVEODJBN0YyMTI4QzZGQUYwMDQ0NzdCMyAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIyRjBGRjEy
ODlGQ0Q5MDA4NUU3NEYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVEQ0E3MUI3MTI4RERBOEMwMDIwMUIy
NiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjJGMTAwMTI4OUZDRDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBh
Z2VPdmVybGF5LmNwcCAqLzsgfTsKIAkJRjAzNjk3ODgxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNv
bG9yUGlja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgKi87IH07
CisJCUY0MDlCQTE4MUU2RTY0QkMwMDlEQTI4RSAvKiBfV0tEcmFnRGVzdGluYXRpb25BY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDlCQTE3
MUU2RTY0QjMwMDlEQTI4RSAvKiBfV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDMzNzA5NzFFNEQ3MkVE
MDAwNTJCMEUgLyogX1dLVGVzdGluZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDMzNzA5NjFFNEQ2QTQ0MDAwNTJCMEUgLyogX1dLVGVz
dGluZ0RlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRjYxMTNFMjUxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVzZXJDb250ZW50VVJMUGF0
dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjYx
MTNFMjQxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oICovOyB9
OwogCQlGNjExM0UyODEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjYxMTNF
MjYxMjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCAqLzsgfTsK
QEAgLTQyMjYsNiArNDIyNyw3IEBACiAJCUU0RTg2NDhFMUIxNjczRkIwMEM4MkY0MCAvKiBWZXJz
aW9uQ2hlY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlcnNpb25DaGVj
a3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRFODY0OEYxQjE2NzNGQjAwQzgy
RjQwIC8qIFZlcnNpb25DaGVja3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBWZXJzaW9uQ2hlY2tzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
MDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGNDA5QkExNzFFNkU2NEIzMDA5REEyOEUgLyogX1dLRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0Ry
YWdEZXN0aW5hdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMz
NzA5NjFFNEQ2QTQ0MDAwNTJCMEUgLyogX1dLVGVzdGluZ0RlbGVnYXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Rlc3RpbmdEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNjExM0UyNDEyNkNFMTgyMDA1N0QwQTcgLyogQVBJVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVVzZXJD
b250ZW50VVJMUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNjExM0Uy
NjEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTU5OSw2ICs1NjAxLDcgQEAKIAkJMzdE
RkE2RkUxODEwQkIyRDAwMUY0QTlGIC8qIENvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlGNDA5QkExNzFFNkU2NEIzMDA5REEyOEUgLyogX1dLRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uLmggKi8sCiAJCQkJMzczRDEyMjExOEE0NzMwMTAwNjZEOUNDIC8q
IF9XS0ZyYW1lSGFuZGxlLmggKi8sCiAJCQkJMzczRDEyMjAxOEE0NzMwMTAwNjZEOUNDIC8qIF9X
S0ZyYW1lSGFuZGxlLm1tICovLAogCQkJCTM3M0QxMjI2MThBNDczRjYwMDY2RDlDQyAvKiBfV0tG
cmFtZUhhbmRsZUludGVybmFsLmggKi8sCkBAIC04MDE2LDYgKzgwMTksNyBAQAogCQkJCUJDRUU5
NjZEMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MUEzMTczMjEzNENFQTZDMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0cmluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTEyRjU4OTcxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0MDlCQTE4MUU2RTY0QkMwMDlEQTI4RSAv
KiBfV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1ODk5
MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxOEU4RUY5MTZCMjA5MUMwMEU5MTQyOSAvKiBBdXRoZW50aWNhdGlv
bk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1OEEzMTJBODgzQUQwMDYyOTUzMCAv
KiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmNwcAppbmRleCAwZjE2YmU5YTU3NjgwY2ZmYjEwY2NkYjU1ZGEzMTczMTJmYzY1YzQ5
Li43ZmQzOTI1NTE2M2M0YzIxZjQzNGNkMGQ1ODIyZjFmZGExNzI4NjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9y
bURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQKIHsKIH0K
IAotRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFn
KGNvbnN0IERyYWdEYXRhJikKK0RyYWdEZXN0aW5hdGlvbkFjdGlvbiBXZWJEcmFnQ2xpZW50Ojph
Y3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YVJlZikKIHsKICAgICByZXR1cm4gRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uQW55OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCBhOTZlZTgxNjIwMzYyZTNlYTky
MzU1NzI4NzAyZGI2ZDJlMzcwZWVhLi5mYjgwZjY1ZTdhMGU3MGNmNmNlZWNhNjQ1OWQ2MTgwMmJl
ZGY2NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3Vy
Y2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVy
Jikgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1h
c2tGb3JEcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJikgb3ZlcnJpZGU7CisgICAgV2ViQ29y
ZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKERyYWdEYXRhUmVmKSBv
dmVycmlkZTsKICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25N
YXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OkRyYWdJbWFnZSwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGV2
ZW50UG9zLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBkcmFnSW1hZ2VBbmNob3IsIFdlYkNv
cmU6OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFj
dGlvbikgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303679</attachid>
            <date>2017-03-07 10:59:27 -0800</date>
            <delta_ts>2017-03-07 11:52:28 -0800</delta_ts>
            <desc>Address feedback + fix builds</desc>
            <filename>bug-169168-20170307105900.patch</filename>
            <type>text/plain</type>
            <size>61134</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI4MjE1ZjFhMjY2NTAz
ZjI1NDQyOGQxOWZhMGRhNGJhMGY0YjE0Mi4uYjY5N2I3YjU4ODNhNWE1MzI4MGM0MTU3MjdlM2M0
MmUyYjY0Y2Q3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTAzLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBh
IFVJIGRlbGVnYXRlIFNQSSBob29rIHRvIGVuYWJsZSBvciBkaXNhYmxlIG5hdmlnYXRpb24gb24g
ZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY4ODM3ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBjbGllbnQgaG9va3MgZm9y
IHRoZSBkcmFnIGRlc3RpbmF0aW9uIGFjdGlvbiBpbiBXZWJDb3JlIHRvIGFzayBmb3IgdGhlIGRy
YWcgZGVzdGluYXRpb24gYWN0aW9uIG1hc2sKKyAgICAgICAgdXBvbiBpbml0aWFsaXppbmcgdGhl
IERyYWdEYXRhLiBJbiBEcmFnQ29udHJvbGxlciwgcmF0aGVyIHRoYW4gc2V0dGluZyBtX2RyYWdE
ZXN0aW5hdGlvbkFjdGlvbiB0byB0aGUgcmVzdWx0IG9mCisgICAgICAgIG1fY2xpZW50LmFjdGlv
bk1hc2tGb3JEcmFnLCB3ZSBpbnN0ZWFkIHNldCBpdCB0byB0aGUgRHJhZ0RhdGEncyBkZXN0aW5h
dGlvbiBhY3Rpb24uCisKKyAgICAgICAgVGVzdHMgdG8gY29tZSBpbiBhIGZ1dHVyZSBwYXRjaC4K
KworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIHBhZ2UvRHJh
Z0NsaWVudC5oOgorCisgICAgICAgIFJhdGhlciB0aGFuIHBhc3MgaW4gYSBEcmFnRGF0YSwgcGFz
cyBpbiBvbmx5IHRoZSBwbGF0Zm9ybSBkYXRhIHRoYXQgd2UgbmVlZCB0byBoYW5kIHRvIHRoZSBk
ZWxlZ2F0ZS4gVGhpcyBpcworICAgICAgICBiZWNhdXNlIHdlIG5vdyBhc2sgZm9yIGRyYWcgZGVz
dGluYXRpb24gYWN0aW9ucyBwcmlvciB0byBjcmVhdGluZyB0aGUgRHJhZ0RhdGEuCisKKyAgICAg
ICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250
cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZCk6CisKKyAgICAgICAgVXBkYXRlIHRoZSBhdmFp
bGFibGUgZHJhZyBkZXN0aW5hdGlvbiBhY3Rpb25zIGluIFdlYkNvcmUgdXNpbmcgdGhlIGRlc3Rp
bmF0aW9uIGFjdGlvbnMgc3RvcmVkIGluIERyYWdEYXRhIHJhdGhlcgorICAgICAgICB0aGFuIGNh
bGxpbmcgb3V0IHRvIHRoZSBjbGllbnQgZGVsZWdhdGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9E
cmFnRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpvcGVy
YXRvciA9KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorCiAyMDE3LTAzLTAxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWN0dWFsbHkgZml4
IFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3ODI2YjBhMjQ4YzMyNWY4ZWYyNzUxZDdhOWM2
NTYxMDM0OWU4ZWYuLmYyODMzZTgzN2UyNWE4YmY1ODNjNGI4NDUyNGZlOTk3MDU4ODExOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDMtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIGEgVUkgZGVsZWdhdGUgU1BJ
IGhvb2sgdG8gZW5hYmxlIG9yIGRpc2FibGUgbmF2aWdhdGlvbiBvbiBkcm9wCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkxNjgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzMwNjg4Mzc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNlZSBXZWJLaXQgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuIFJl
bmFtZXMgV2ViRGVmYXVsdFVJRGVsZWdhdGUubSA9PiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbS4K
KworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE3LTAy
LTI3ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFi
bGUgU1VQUE9SVFNfVEVYVF9CQVNFRF9BUEkgaW4gV2ViS2l0TGVnYWN5IGZvciBpT1MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCA1MDFmMDkzZmYzZmIzYmE4MWZkMTNlNjU5YTFjODE0YmQ2NGIwMTE3Li5i
NjQ5MzZmMTllYWJkYzczZGQ0OTFmYTg4MjNmNmE0YjJlODk1NTM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjkgQEAKKzIwMTctMDMtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIGEgVUkgZGVsZWdhdGUgU1BJIGhvb2sg
dG8gZW5hYmxlIG9yIGRpc2FibGUgbmF2aWdhdGlvbiBvbiBkcm9wCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkxNjgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzMwNjg4Mzc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlZmFjdG9ycyBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJhZyB0byB0
YWtlIHBsYXRmb3JtIGRhdGEgb25seSwgcmF0aGVyIHRoYW4gdGhlIGVudGlyZSBEcmFnRGF0YS4g
U2VlIHRoZQorICAgICAgICBXZWJDb3JlIENoYW5nZUxvZyBlbnRyeSBmb3IgbW9yZSBkZXRhaWxz
LiBBbHNvIHJlbmFtZXMgV2ViRGVmYXVsdFVJRGVsZWdhdGUubSB0byBXZWJEZWZhdWx0VUlEZWxl
Z2F0ZS5tbSwgc2luY2UKKyAgICAgICAgd2UgbmVlZCB0byBpbXBvcnQgYSBDKysgaGVhZGVyIGZv
ciBsaW5rZWRPbk9yQWZ0ZXIoKS4KKworICAgICAgICBUaGUgZGVmYXVsdCBkZWxlZ2F0ZSBpbXBs
ZW1lbnRhdGlvbiBvZiB3ZWJWaWV3OmRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2lu
Z0luZm86IG5vdyBjaGVja3MgaWYgdGhlIGN1cnJlbnQKKyAgICAgICAgYXBwbGljYXRpb24gaXMg
bGlua2luZyBhZ2FpbnN0IDEwLjEyIG9yIGVhcmxpZXIsIGFuZCBpZiBzbywgd2lsbCBhbGxvdyBh
bnkgZHJhZyBkZXN0aW5hdGlvbiBhY3Rpb24gaW5zdGVhZCBvZgorICAgICAgICB0aGUgbmV3IGRl
ZmF1bHQgdmFsdWUgb2YgZXZlcnl0aGluZyBidXQgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZC4K
KworICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW06IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRV
SURlbGVnYXRlLm0uCisgICAgICAgICgtW1dlYkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXc6ZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpdKToKKyAgICAgICAgKiBNaXNj
L1dlYktpdFZlcnNpb25DaGVja3MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbToKKyAg
ICAgICAgKFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpdKToKKwogMjAxNy0wMy0wMSAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTMyNTkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMGZlMzE3N2E0
N2ExY2Y2NjU0OTA1YTYzZWYxYTRjYzIzNzVkNDFhZS4uNWFhYTM0MGVlZmU5MGYyZGJmZWFhMGI0
OGE2YmI0YjM5MDU3OGNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3
LTAzLTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFtXSzJdIEFkZCBhIFVJIGRlbGVnYXRlIFNQSSBob29rIHRvIGVuYWJsZSBvciBkaXNhYmxlIG5h
dmlnYXRpb24gb24gZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY5MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY4ODM3ND4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaW5vciB0d2VhayB0
byBhZGp1c3QgZm9yIGEgY2hhbmdlZCBpbnRlcmZhY2UuIFNlZSBXZWJLaXQgYW5kIFdlYkNvcmUg
Q2hhbmdlTG9ncyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFz
a0ZvckRyYWcpOgorCiAyMDE3LTAzLTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWN0dWFsbHkgZml4IFdpbmRvd3MgYnVpbGQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggZDI1YjIxN2YyNzIzYjc3OTA5MTdmZDg1YjIxODdhODJkMDE5MjNiNy4uYjY2NjFl
YTc4MmZjM2U5MTg1YjYzOGFjMGFjYmJkNmJkYTQ1MGJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDUwIEBACisyMDE3LTAzLTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIFtXSzJdIEFkZCBhIFVJIGRlbGVnYXRlIFNQSSBob29rIHRvIGVuYWJsZSBv
ciBkaXNhYmxlIG5hdmlnYXRpb24gb24gZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY4
ODM3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
dXBwb3J0IGN1c3RvbWl6aW5nIHRoZSBzZXQgb2YgYWxsb3dlZCBhY3Rpb25zIG9uIGRyb3AgaW4g
V2ViS2l0MiBieSBpbnRyb2R1Y2luZyBhIG5ldyBtZXRob2QgdG8gV0tVSURlbGVnYXRlUHJpdmF0
ZQorICAgICAgICB0aGF0IHJldHVybnMgYSBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbiBnaXZlbiBw
bGF0Zm9ybSBkcmFnZ2luZyBpbmZvLiBUaGVzZSBmbGFncyBhcmUgdGhlbiB1c2VkIHRvIGluaXRp
YWxpemUgdGhlCisgICAgICAgIERyYWdEYXRhIHNlbnQgb3ZlciB0byB0aGUgd2ViIHByb2Nlc3Ms
IHdoZXJlIHRoZXkgdXBkYXRlIERyYWdDb250cm9sbGVyJ3MgdmlldyBvZiB0aGUgYWxsb3dlZCBk
ZXN0aW5hdGlvbiBhY3Rpb25zLgorCisgICAgICAgIE1vdmluZyBmb3J3YXJkLCB0aGUgZGVmYXVs
dCBhY3Rpb24gbWFzayBmb3IgV0tXZWJWaWV3cyB3aWxsIGluY2x1ZGUgZXZlcnl0aGluZyBleGNl
cHQgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkLAorICAgICAgICB0aG91Z2ggZm9yIGFwcGxj
aWF0aW9ucyBsaW5rZWQgb24gb3IgYmVmb3JlIDEwLjEyLCB3ZSB3aWxsIHN0aWxsIGRlZmF1bHQg
dG8gV0tEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkgdG8gbWl0aWdhdGUKKyAgICAgICAgYW55IGNv
bXBhdGliaWxpdHkgcmlzay4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tEcmFnRGVz
dGluYXRpb25BY3Rpb24uaDoKKworICAgICAgICBJbnRyb2R1Y2UgV0syIGNsaWVudC1mYWNpbmcg
dmVyc2lvbnMgb2YgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGZsYWdzLgorCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPERyYWdEYXRhPjo6ZGVjb2RlKToKKworICAgICAgICBTZXJpYWxpemUgRHJhZ0RhdGEncyBk
ZXN0aW5hdGlvbiBhY3Rpb25zIHdoZW4gc2VuZGluZyBEcmFnRGF0YSBvdmVyIElQQy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86XSk6CisKKyAgICAg
ICAgRm9yIFdLV2ViVmlldywgYWxsb3cgYWxsIGRyYWcgZGVzdGluYXRpb24gYWN0aW9ucyBleGNl
cHQgZm9yIGxvYWRpbmcgKGkuZS4gZHJvcC10by1uYXZpZ2F0ZSkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBfd2ViX2RyYWdEZXN0
aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpdKToKKworICAgICAgICBGb3IgV0tWaWV3LCBh
bGxvdyBhbGwgdHlwZXMgb2YgZHJhZyBkZXN0aW5hdGlvbiBhY3Rpb25zLgorCisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKToKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRHJh
Z0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgorCiAyMDE3LTAzLTAxICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgLVtXS1dlYlZpZXcgYWRq
dXN0ZWREYXRhSW50ZXJhY3Rpb25JdGVtUHJvdmlkZXJzOl0gd2l0aCBhIFVJIGRlbGVnYXRlIG1l
dGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBhZmM4NTZhNTQz
OWYyZWE2MzQ0ZjRhOWQ0MDA3Y2E3MWE1MGJlZDc1Li4zYWY5N2Y5Yjg3MWQ2MGE2MWNiMTgyOTdl
YjViNDM3ZDdkOTI3N2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApA
QCAtMTI5LDcgKzEyOSw3IEBAIGNsYXNzIEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgZmlu
YWwgOiBwdWJsaWMgRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgewogY2xhc3MgRW1wdHlEcmFnQ2xp
ZW50IGZpbmFsIDogcHVibGljIERyYWdDbGllbnQgewogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFn
RGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBEcmFnRGF0YSYp
IGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3Vy
Y2VBY3Rpb24sIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJikgZmluYWwgeyB9Ci0gICAg
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKGNvbnN0IERyYWdEYXRhJikg
ZmluYWwgeyByZXR1cm4gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsgfQorICAgIERyYWdEZXN0
aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YVJlZikgZmluYWwgeyByZXR1
cm4gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsgfQogICAgIERyYWdTb3VyY2VBY3Rpb24gZHJh
Z1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGZpbmFsIHsgcmV0dXJu
IERyYWdTb3VyY2VBY3Rpb25Ob25lOyB9CiAgICAgdm9pZCBzdGFydERyYWcoRHJhZ0ltYWdlLCBj
b25zdCBJbnRQb2ludCYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIERhdGFU
cmFuc2ZlciYsIEZyYW1lJiwgRHJhZ1NvdXJjZUFjdGlvbikgZmluYWwgeyB9CiAgICAgdm9pZCBk
cmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGllbnQu
aAppbmRleCBiMDIyMDdkOGMzNGZjM2ExMTY4MDRjNWEwNDZkZDU3OTRlZmY2ZGEwLi4xOTYyNGRk
ZWQyNmM4NDAzMzMwMjg5N2Q5ZGFmNmM5YmYwMmUwYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGll
bnQuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJEcmFnQWN0
aW9ucy5oIgorI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiRHJhZ0l0ZW0uaCIKICNp
bmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKQEAgLTMzLDcgKzM0
LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIERhdGFUcmFuc2ZlcjsKLWNs
YXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW1hZ2U7
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9y
bURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNvbnN0IERyYWdE
YXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24o
RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImKSA9IDA7Ci0g
ICAgdmlydHVhbCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0ZvckRyYWcoY29uc3Qg
RHJhZ0RhdGEmKSA9IDA7CisgICAgdmlydHVhbCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9u
TWFza0ZvckRyYWcoRHJhZ0RhdGFSZWYgcGxhdGZvcm1EYXRhKSA9IDA7CiAgICAgdmlydHVhbCBE
cmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9p
bnQmIHJvb3RWaWV3UG9pbnQpID0gMDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFn
KERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29uc3QgSW50UG9p
bnQmIGV2ZW50UG9zLCBjb25zdCBGbG9hdFBvaW50JiBkcmFnSW1hZ2VBbmNob3IsIERhdGFUcmFu
c2ZlciYsIEZyYW1lJiwgRHJhZ1NvdXJjZUFjdGlvbikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAppbmRleCA1OGUxN2ZkZDE0NDg4NjhjYmNjOWQ3YzU1NzMwNmIyNjc2
NWNhYzcxLi5lYmJkODk3ZWNhZDA0MDRmOTQ3OWIzOWNkOGY2ZWFjMDExYWNkZDg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIERyYWdP
cGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdE
YXRhJiBkcmFnRGF0YSkKIHsKICAgICBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG1fcGFnZS5tYWlu
RnJhbWUoKS5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSkpOwogCi0g
ICAgbV9kcmFnRGVzdGluYXRpb25BY3Rpb24gPSBtX2NsaWVudC5hY3Rpb25NYXNrRm9yRHJhZyhk
cmFnRGF0YSk7CisgICAgbV9kcmFnRGVzdGluYXRpb25BY3Rpb24gPSBkcmFnRGF0YS5kcmFnRGVz
dGluYXRpb25BY3Rpb24oKTsKICAgICBpZiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb24gPT0gRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTm9uZSkgewogICAgICAgICBjbGVhckRyYWdDYXJldCgpOyAvLyBG
SVhNRTogV2h5IG5vdCBjYWxsIG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQobnVsbHB0cik/CiAgICAg
ICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRh
LmNwcAppbmRleCBhYjY3YzY2NmRhODEwZTk1N2Q4ZmUzZTk5NjFiZWRkMTgzNDZhMzhhLi5iNDI4
YzM3MzkzZmVjZDRhMWE4ODA1ODBmZWQ2OGViOWJjZTRjNGEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0RhdGEuY3BwCkBAIC0zMiwyMyArMzIsMjMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogI2lmICFQTEFURk9STShDT0NPQSkKLURyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBk
YXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFn
QXBwbGljYXRpb25GbGFncyBmbGFncykKK0RyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBk
YXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGlj
YXRpb25GbGFncyBmbGFncywgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGRlc3RpbmF0aW9uQWN0aW9u
KQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFs
UG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEoZGF0YSkK
ICAgICAsIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2sp
CiAgICAgLCBtX2FwcGxpY2F0aW9uRmxhZ3MoZmxhZ3MpCisgICAgLCBtX2RyYWdEZXN0aW5hdGlv
bkFjdGlvbihkZXN0aW5hdGlvbkFjdGlvbikKIHsgIAogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEo
Y29uc3QgU3RyaW5nJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25N
YXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncykKK0RyYWdEYXRhOjpEcmFnRGF0YShjb25z
dCBTdHJpbmcmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50
JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFn
QXBwbGljYXRpb25GbGFncyBmbGFncywgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGRlc3RpbmF0aW9u
QWN0aW9uKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1f
Z2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEo
MCkKICAgICAsIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1h
c2spCiAgICAgLCBtX2FwcGxpY2F0aW9uRmxhZ3MoZmxhZ3MpCisgICAgLCBtX2RyYWdEZXN0aW5h
dGlvbkFjdGlvbihkZXN0aW5hdGlvbkFjdGlvbikKIHsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdEYXRhLmgKaW5kZXggM2NmMTFlN2RhMDE0OWVmNDc5MDQ3M2Y1ODVkYTc5MDk1MmI3
ODQyNy4uMTk1NzIxYjFmZGEzZWM4OGUyOGZlZjhlMzMyNmM5NjU5NWNmNDIyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC03OCw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICBlbnVt
IEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSB7IERvTm90Q29udmVydEZpbGVuYW1lcywgQ29udmVy
dEZpbGVuYW1lcyB9OwogCiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUgdGhl
IHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0
aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFn
RGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJh
Z0FwcGxpY2F0aW9uTm9uZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgU3Ry
aW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29u
c3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRp
b25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdE
YXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IElu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgPSBEcmFnQXBwbGljYXRpb25Ob25lLCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9ucyA9
IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEo
Y29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3Np
dGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFn
QXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIERyYWdEZXN0aW5hdGlvbkFj
dGlvbiBhY3Rpb25zID0gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55KTsKICAgICAvLyBUaGlzIGNv
bnN0cnVjdG9yIHNob3VsZCB1c2VkIG9ubHkgYnkgV2ViS2l0MiBJUEMgYmVjYXVzZSBEcmFnRGF0
YQogICAgIC8vIGlzIGluaXRpYWxpemVkIGJ5IHRoZSBkZWNvZGVyIGFuZCBub3QgaW4gdGhlIGNv
bnN0cnVjdG9yLgogICAgIERyYWdEYXRhKCkgeyB9CkBAIC0xMDUsNiArMTA1LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgY29udGFpbnNDb2xvcigpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNGaWxl
cygpIGNvbnN0OwogICAgIHVuc2lnbmVkIG51bWJlck9mRmlsZXMoKSBjb25zdDsKKyAgICBEcmFn
RGVzdGluYXRpb25BY3Rpb24gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9kcmFnRGVzdGluYXRpb25BY3Rpb247IH0KICAgICB2b2lkIHNldEZpbGVOYW1lcyhWZWN0b3I8
U3RyaW5nPiYgZmlsZU5hbWVzKSB7IG1fZmlsZU5hbWVzID0gV1RGTW92ZShmaWxlTmFtZXMpOyB9
CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmlsZU5hbWVzOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMjEsNiArMTIyLDcgQEAgcHVi
bGljOgogICAgICAgICBtX3BsYXRmb3JtRHJhZ0RhdGEgPSBkYXRhLm1fcGxhdGZvcm1EcmFnRGF0
YTsKICAgICAgICAgbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sgPSBkYXRhLm1fZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrOwogICAgICAgICBtX2FwcGxpY2F0aW9uRmxhZ3MgPSBkYXRh
Lm1fYXBwbGljYXRpb25GbGFnczsKKyAgICAgICAgbV9kcmFnRGVzdGluYXRpb25BY3Rpb24gPSBk
YXRhLm1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAg
fQogI2VuZGlmCkBAIC0xMzIsNiArMTM0LDcgQEAgcHJpdmF0ZToKICAgICBEcmFnT3BlcmF0aW9u
IG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOwogICAgIERyYWdBcHBsaWNhdGlvbkZsYWdz
IG1fYXBwbGljYXRpb25GbGFnczsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVOYW1lczsKKyAg
ICBEcmFnRGVzdGluYXRpb25BY3Rpb24gbV9kcmFnRGVzdGluYXRpb25BY3Rpb247CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgU3RyaW5nIG1fcGFzdGVib2FyZE5hbWU7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCA5OGQ3YjdmZTE1OGUy
Nzk2ZmUyYzViZDg5NGJiYzc0NTBiYzhiNGUzLi5jZjc4YjRhOTQ5MjBhMmM1NTlmODY2NmQ4MzRl
YmM1OTZmNDdhYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJh
Z0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFj
Lm1tCkBAIC04MywxMyArODMsMTMgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdGlmZlBhc3RlYm9h
cmRUeXBlKCkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJh
Z0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIAotICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9u
TWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MpCitEcmFnRGF0YTo6RHJhZ0RhdGEoRHJh
Z0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywg
RHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBkZXN0aW5h
dGlvbkFjdGlvbikKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAg
LCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdE
YXRhKGRhdGEpCiAgICAgLCBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVy
YXRpb25NYXNrKQogICAgICwgbV9hcHBsaWNhdGlvbkZsYWdzKGZsYWdzKQorICAgICwgbV9kcmFn
RGVzdGluYXRpb25BY3Rpb24oZGVzdGluYXRpb25BY3Rpb24pCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgICwgbV9wYXN0ZWJvYXJkTmFtZShbW21fcGxhdGZvcm1EcmFnRGF0YSBkcmFnZ2luZ1Bhc3Rl
Ym9hcmRdIG5hbWVdKQogI2Vsc2UKQEAgLTk4LDEzICs5OCwxMyBAQCBEcmFnRGF0YTo6RHJhZ0Rh
dGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25z
dCBJbnRQbwogewogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3Rv
cmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLAotICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywg
RHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MpCitEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3Ry
aW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29u
c3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlv
bk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBEcmFnRGVzdGluYXRpb25BY3Rpb24g
ZGVzdGluYXRpb25BY3Rpb24pCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9u
KQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZv
cm1EcmFnRGF0YSgwKQogICAgICwgbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soc291cmNl
T3BlcmF0aW9uTWFzaykKICAgICAsIG1fYXBwbGljYXRpb25GbGFncyhmbGFncykKKyAgICAsIG1f
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKGRlc3RpbmF0aW9uQWN0aW9uKQogICAgICwgbV9wYXN0ZWJv
YXJkTmFtZShkcmFnU3RvcmFnZU5hbWUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjZjFlNDYxNTgyNGMwMTBkZWI4NmZhYWU1
ZDM4N2Q2NTE0ZDJhNWFlLi44YTEyOGJhYTkyOWJhNzdlNGNkYzk3MDI1ZjVhODYxY2JhOTAwMjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTMyOSw3ICszMjksNyBAQAogCQk5Mzk4MTEwNjA4MjRCRjAxMDA4REYwMzggLyogV2ViRnJh
bWVWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFBOEI1MkYwNDI4MkI1OTAwQ0EyRDNBIC8qIFdlYkZyYW1lVmlldy5tbSAqLzsgfTsKIAkJOTM5
ODExMDcwODI0QkYwMTAwOERGMDM4IC8qIFdlYlZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE4QjU3QTA0MjgzNEY3MDBDQTJEM0EgLyogV2Vi
Vmlldy5tbSAqLzsgfTsKIAkJOTM5ODExMDgwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBvbGljeURl
bGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE0NDNGOUIwNDI5MzkyQjAwQ0EyRDNBIC8qIFdlYlBvbGljeURlbGVnYXRlLm1tICovOyB9Owot
CQk5Mzk4MTEwQTA4MjRCRjAxMDA4REYwMzggLyogV2ViRGVmYXVsdFVJRGVsZWdhdGUubSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUUyN0QwMDQ1OENB
NEIwMENBMkQzQSAvKiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tICovOyB9OworCQk5Mzk4MTEwQTA4
MjRCRjAxMDA4REYwMzggLyogV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFMjdEMDA0NThDQTRCMDBDQTJEM0Eg
LyogV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0gKi87IH07CiAJCTkzOTgxMTEyMDgyNEJGMDEwMDhE
RjAzOCAvKiBXZWJOU1VSTEV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJFNkRDMzlBMDRDNjJDNEUwMDREMEVGNiAvKiBXZWJOU1VSTEV4dHJh
cy5tbSAqLzsgfTsKIAkJOTM5ODExMTMwODI0QkYwMTAwOERGMDM4IC8qIFdlYkhpc3RvcnkubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NURBMjYwODA1
MkNDMTg3MDBBOTdCMzEgLyogV2ViSGlzdG9yeS5tbSAqLzsgfTsKIAkJOTM5ODExMTUwODI0QkYw
MTAwOERGMDM4IC8qIFdlYk5TRGF0YUV4dHJhcy5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkVDRDE0MkEwNTY1ODMwQTAwNUJCMDlDIC8qIFdlYk5TRGF0
YUV4dHJhcy5tICovOyB9OwpAQCAtOTY2LDcgKzk2Niw3IEBACiAJCTUxNThGNkVFMTA2RDg2MkEw
MEFGNDU3QyAvKiBXZWJIaXN0b3J5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViSGlzdG9yeURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNUUyN0NDMDQ1OEM4NjUwMENBMkQzQSAvKiBXZWJVSURlbGVnYXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVJRGVsZWdhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
CiAJCTUxNUUyN0NGMDQ1OENBNEIwMENBMkQzQSAvKiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEZWZh
dWx0VUlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKLQkJNTE1RTI3RDAwNDU4Q0E0QjAwQ0EyRDNBIC8qIFdlYkRlZmF1bHRV
SURlbGVnYXRlLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2Jq
YzsgcGF0aCA9IFdlYkRlZmF1bHRVSURlbGVnYXRlLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk1MTVFMjdEMDA0NThDQTRCMDBDQTJE
M0EgLyogV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJ
CTUxNkYyOTZGMDNBNkM0NUEwMENBMkQzQSAvKiBXZWJIaXN0b3J5SXRlbUludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkhpc3Rv
cnlJdGVtSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTUxODVGNjI1MTA3MTJCODAwMDdBQTM5MyAvKiBXZWJOYXZpZ2F0
aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOYXZpZ2F0aW9u
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg1RjYyNzEwNzEyQjk3MDA3
QUEzOTMgLyogV2ViTmF2aWdhdGlvbkRhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJOYXZpZ2F0aW9uRGF0YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE5NTAsNyArMTk1MCw3IEBACiAJCQkJNTE1MkZBREYwMzNGQzUwNDAwQ0EyQUNE
IC8qIFdlYkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5oICovLAogCQkJCTUxNTJGQUUwMDMzRkM1MDQw
MENBMkFDRCAvKiBXZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUubSAqLywKIAkJCQk1MTVFMjdDRjA0
NThDQTRCMDBDQTJEM0EgLyogV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCAqLywKLQkJCQk1MTVFMjdE
MDA0NThDQTRCMDBDQTJEM0EgLyogV2ViRGVmYXVsdFVJRGVsZWdhdGUubSAqLywKKwkJCQk1MTVF
MjdEMDA0NThDQTRCMDBDQTJEM0EgLyogV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0gKi8sCiAJCQkp
OwogCQkJbmFtZSA9ICJEZWZhdWx0IERlbGVnYXRlcyI7CiAJCQlwYXRoID0gbWFjL0RlZmF1bHRE
ZWxlZ2F0ZXM7CkBAIC0zNTc4LDcgKzM1NzgsNyBAQAogCQkJCUExMEMxRDFCMTgyMDJGOUMwMDM2
ODgzQSAvKiBXZWJEZWZhdWx0RnJhbWVMb2FkRGVsZWdhdGUubSBpbiBTb3VyY2VzICovLAogCQkJ
CTkzOTgxMEYwMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUubSBp
biBTb3VyY2VzICovLAogCQkJCUExMEMxRDFEMTgyMDJGOUMwMDM2ODgzQSAvKiBXZWJEZWZhdWx0
UmVzb3VyY2VMb2FkRGVsZWdhdGUubSBpbiBTb3VyY2VzICovLAotCQkJCTkzOTgxMTBBMDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tIGluIFNvdXJjZXMgKi8sCisJCQkJ
OTM5ODExMEEwODI0QkYwMTAwOERGMDM4IC8qIFdlYkRlZmF1bHRVSURlbGVnYXRlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTEwQzFEMUYxODIwMkY5QzAwMzY4ODNBIC8qIFdlYkRlZmF1bHRVSUtp
dERlbGVnYXRlLm0gaW4gU291cmNlcyAqLywKIAkJCQlCQzU0MkM0MzBGRDc3NjZGMDBEOEFCNUQg
LyogV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1OThBRDkyMjEyMDFDRjEwMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb24ubW0gaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RlZmF1bHREZWxlZ2F0
ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RlZmF1bHREZWxl
Z2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggM2U3OTQyYmUzOTMyZTBlZGZhMmU3NTEzNDMyMDk4ZDEwNWE5NDhkMy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9EZWZh
dWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm0KKysrIC9kZXYvbnVsbApAQCAtMSwy
NzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2ltcG9ydCAiV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCIKLQotI2ltcG9ydCAiV2ViVHlw
ZXNJbnRlcm5hbC5oIgotI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIKLSNpbXBvcnQg
IldlYlZpZXcuaCIKLQotI2lmICFQTEFURk9STShJT1MpCi0jaW1wb3J0ICJXZWJKYXZhU2NyaXB0
VGV4dElucHV0UGFuZWwuaCIKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oSU9TKQotI2ltcG9ydCA8
V2ViQ29yZS9XQUtXaW5kb3cuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV0tWaWV3UHJpdmF0ZS5oPgot
I2VuZGlmCi0KLSNpZiAhUExBVEZPUk0oSU9TKQotQGludGVyZmFjZSBOU0FwcGxpY2F0aW9uIChE
ZWNsYXJhdGlvblN0b2xlbkZyb21BcHBLaXQpCi0tICh2b2lkKV9jeWNsZVdpbmRvd3NSZXZlcnNl
ZDooQk9PTClyZXZlcnNlZDsKLUBlbmQKLSNlbmRpZgotCi1AaW1wbGVtZW50YXRpb24gV2ViRGVm
YXVsdFVJRGVsZWdhdGUKLQotc3RhdGljIFdlYkRlZmF1bHRVSURlbGVnYXRlICpzaGFyZWREZWxl
Z2F0ZSA9IG5pbDsKLQotLy8gUmV0dXJuIGEgb2JqZWN0IHdpdGggdmFuaWxsYSBpbXBsZW1lbnRh
dGlvbnMgb2YgdGhlIHByb3RvY29sJ3MgbWV0aG9kcwotLy8gTm90ZSB0aGlzIGZlYXR1cmUgcmVs
aWVzIG9uIG91ciBkZWZhdWx0IGRlbGVnYXRlIGJlaW5nIHN0YXRlbGVzcy4gIFRoaXMKLS8vIGlz
IHByb2JhYmx5IGFuIGludmFsaWQgYXNzdW1wdGlvbiBmb3IgdGhlIFdlYlVJRGVsZWdhdGUuCi0v
LyBJZiB3ZSBhZGQgYW55IHJlYWwgZnVuY3Rpb25hbGl0eSB0byB0aGlzIGRlZmF1bHQgZGVsZWdh
dGUgd2UgcHJvYmFibHkKLS8vIHdvbid0IGJlIGFibGUgdG8gdXNlIGEgc2luZ2xldG9uLgotKyAo
V2ViRGVmYXVsdFVJRGVsZWdhdGUgKilzaGFyZWRVSURlbGVnYXRlCi17Ci0gICAgaWYgKCFzaGFy
ZWREZWxlZ2F0ZSkgewotICAgICAgICBzaGFyZWREZWxlZ2F0ZSA9IFtbV2ViRGVmYXVsdFVJRGVs
ZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIH0KLSAgICByZXR1cm4gc2hhcmVkRGVsZWdhdGU7Ci19
Ci0KLS0gKFdlYlZpZXcgKil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IGNyZWF0ZVdlYlZpZXdXaXRo
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3aW5kb3dGZWF0dXJlczooTlNEaWN0aW9u
YXJ5ICopZmVhdHVyZXMKLXsKLSAgICAvLyBJZiB0aGUgbmV3IEFQSSBtZXRob2QgZG9lc24ndCBl
eGlzdCwgZmFsbGJhY2sgdG8gdGhlIG9sZCB2ZXJzaW9uIG9mIGNyZWF0ZVdlYlZpZXdXaXRoUmVx
dWVzdAotICAgIC8vIGZvciBiYWNrd2FyZHMgY29tcGF0YWJpbGl0eQotICAgIGlmICghW1t3diBV
SURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2Vi
Vmlld1dpdGhSZXF1ZXN0OndpbmRvd0ZlYXR1cmVzOildICYmIFtbd3YgVUlEZWxlZ2F0ZV0gcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVz
dDopXSkKLSAgICAgICAgcmV0dXJuIFtbd3YgVUlEZWxlZ2F0ZV0gd2ViVmlldzp3diBjcmVhdGVX
ZWJWaWV3V2l0aFJlcXVlc3Q6cmVxdWVzdF07Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotI2lmIFBM
QVRGT1JNKElPUykKLS0gKFdlYlZpZXcgKil3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGNyZWF0
ZVdlYlZpZXdXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB1c2VyR2VzdHVyZToo
Qk9PTCl1c2VyR2VzdHVyZQotewotICAgIHJldHVybiBuaWw7Ci19Ci0jZW5kaWYKLQotLSAodm9p
ZCl3ZWJWaWV3U2hvdzogKFdlYlZpZXcgKil3dgotewotfQotCi0tICh2b2lkKXdlYlZpZXdDbG9z
ZTogKFdlYlZpZXcgKil3dgotewotI2lmICFQTEFURk9STShJT1MpCi0gICAgW1t3diB3aW5kb3dd
IGNsb3NlXTsKLSNlbmRpZgotfQotCi0tICh2b2lkKXdlYlZpZXdGb2N1czogKFdlYlZpZXcgKil3
dgotewotI2lmICFQTEFURk9STShJT1MpCi0gICAgW1t3diB3aW5kb3ddIG1ha2VLZXlBbmRPcmRl
ckZyb250Ond2XTsKLSNlbmRpZgotfQotCi0tICh2b2lkKXdlYlZpZXdVbmZvY3VzOiAoV2ViVmll
dyAqKXd2Ci17Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBpZiAoW1t3diB3aW5kb3ddIGlzS2V5
V2luZG93XSB8fCBbW1t3diB3aW5kb3ddIGF0dGFjaGVkU2hlZXRdIGlzS2V5V2luZG93XSkgewot
ICAgICAgICBbTlNBcHAgX2N5Y2xlV2luZG93c1JldmVyc2VkOkZBTFNFXTsKLSAgICB9Ci0jZW5k
aWYKLX0KLQotLSAoTlNSZXNwb25kZXIgKil3ZWJWaWV3Rmlyc3RSZXNwb25kZXI6IChXZWJWaWV3
ICopd3YKLXsKLSAgICByZXR1cm4gW1t3diB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXTsKLX0KLQot
LSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IG1ha2VGaXJzdFJlc3BvbmRlcjooTlNSZXNw
b25kZXIgKilyZXNwb25kZXIKLXsKLSAgICBbW3d2IHdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVy
OnJlc3BvbmRlcl07Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzogKFdlYlZpZXcgKil3diBzZXRTdGF0
dXNUZXh0OihOU1N0cmluZyAqKXRleHQKLXsKLX0KLQotLSAoTlNTdHJpbmcgKil3ZWJWaWV3U3Rh
dHVzVGV4dDogKFdlYlZpZXcgKil3dgotewotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKHZvaWQp
d2ViVmlldzogKFdlYlZpZXcgKil3diBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDooTlNEaWN0aW9u
YXJ5ICopZWxlbWVudEluZm9ybWF0aW9uIG1vZGlmaWVyRmxhZ3M6KE5TVUludGVnZXIpbW9kaWZp
ZXJGbGFncwotewotfQotCi0tIChCT09MKXdlYlZpZXdBcmVUb29sYmFyc1Zpc2libGU6IChXZWJW
aWV3ICopd3YKLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzogKFdlYlZp
ZXcgKil3diBzZXRUb29sYmFyc1Zpc2libGU6KEJPT0wpdmlzaWJsZQotewotfQotCi0tIChCT09M
KXdlYlZpZXdJc1N0YXR1c0JhclZpc2libGU6IChXZWJWaWV3ICopd3YKLXsKLSAgICByZXR1cm4g
Tk87Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzogKFdlYlZpZXcgKil3diBzZXRTdGF0dXNCYXJWaXNp
YmxlOihCT09MKXZpc2libGUKLXsKLX0KLQotLSAoQk9PTCl3ZWJWaWV3SXNSZXNpemFibGU6IChX
ZWJWaWV3ICopd3YKLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIE5POwotI2Vsc2UK
LSAgICByZXR1cm4gW1t3diB3aW5kb3ddIHNob3dzUmVzaXplSW5kaWNhdG9yXTsKLSNlbmRpZgot
fQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0UmVzaXphYmxlOihCT09MKXJl
c2l6YWJsZQotewotI2lmICFQTEFURk9STShJT1MpCi0gICAgLy8gRklYTUU6IFRoaXMgZG9lc24n
dCBhY3R1YWxseSBjaGFuZ2UgdGhlIHJlc2l6YWJpbGl0eSBvZiB0aGUgd2luZG93LAotICAgIC8v
IG9ubHkgdmlzaWJpbGl0eSBvZiB0aGUgaW5kaWNhdG9yLgotICAgIFtbd3Ygd2luZG93XSBzZXRT
aG93c1Jlc2l6ZUluZGljYXRvcjpyZXNpemFibGVdOwotI2VuZGlmCi19Ci0KLS0gKHZvaWQpd2Vi
VmlldzogKFdlYlZpZXcgKil3diBzZXRGcmFtZTooTlNSZWN0KWZyYW1lCi17Ci0jaWYgIVBMQVRG
T1JNKElPUykKLSAgICBbW3d2IHdpbmRvd10gc2V0RnJhbWU6ZnJhbWUgZGlzcGxheTpZRVNdOwot
I2VuZGlmCi19Ci0KLS0gKE5TUmVjdCl3ZWJWaWV3RnJhbWU6IChXZWJWaWV3ICopd3YKLXsKLSAg
ICBOU1dpbmRvdyAqd2luZG93ID0gW3d2IHdpbmRvd107Ci0gICAgcmV0dXJuIHdpbmRvdyA9PSBu
aWwgPyBOU1plcm9SZWN0IDogW3dpbmRvdyBmcmFtZV07Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzog
KFdlYlZpZXcgKil3diBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmlu
ZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQotewotICAgIC8v
IEZJWE1FOiBXZSB3YW50IGEgZGVmYXVsdCBoZXJlLCBidXQgdGhhdCB3b3VsZCBhZGQgbG9jYWxp
emVkIHN0cmluZ3MuCi19Ci0KLS0gKEJPT0wpd2ViVmlldzogKFdlYlZpZXcgKil3diBydW5KYXZh
U2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0
ZWRCeUZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCi17Ci0gICAgLy8gRklYTUU6IFdlIHdhbnQgYSBk
ZWZhdWx0IGhlcmUsIGJ1dCB0aGF0IHdvdWxkIGFkZCBsb2NhbGl6ZWQgc3RyaW5ncy4KLSAgICBy
ZXR1cm4gTk87Ci19Ci0KLS0gKE5TU3RyaW5nICopd2ViVmlldzogKFdlYlZpZXcgKil3diBydW5K
YXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OihOU1N0cmluZyAqKXByb21wdCBkZWZh
dWx0VGV4dDooTlNTdHJpbmcgKilkZWZhdWx0VGV4dCBpbml0aWF0ZWRCeUZyYW1lOihXZWJGcmFt
ZSAqKWZyYW1lCi17Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBXZWJKYXZhU2NyaXB0VGV4dElu
cHV0UGFuZWwgKnBhbmVsID0gW1tXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwgYWxsb2NdIGlu
aXRXaXRoUHJvbXB0OnByb21wdCB0ZXh0OmRlZmF1bHRUZXh0XTsKLSAgICBbcGFuZWwgc2hvd1dp
bmRvdzpuaWxdOwotICAgIE5TU3RyaW5nICpyZXN1bHQ7Ci0gICAgaWYgKFtOU0FwcCBydW5Nb2Rh
bEZvcldpbmRvdzpbcGFuZWwgd2luZG93XV0pIHsKLSAgICAgICAgcmVzdWx0ID0gW3BhbmVsIHRl
eHRdOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlc3VsdCA9IG5pbDsKLSAgICB9Ci0gICAgW1tw
YW5lbCB3aW5kb3ddIGNsb3NlXTsKLSAgICBbcGFuZWwgcmVsZWFzZV07Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLSNlbHNlCi0gICAgcmV0dXJuIG5pbDsKLSNlbmRpZgotfQotCi0tICh2b2lkKXdlYlZp
ZXc6IChXZWJWaWV3ICopd3YgcnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0
ZW5lcjooaWQ8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+KXJlc3VsdExpc3RlbmVyCi17Ci0g
ICAgLy8gRklYTUU6IFdlIHdhbnQgYSBkZWZhdWx0IGhlcmUsIGJ1dCB0aGF0IHdvdWxkIGFkZCBs
b2NhbGl6ZWQgc3RyaW5ncy4KLX0KLQotLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVy
IHByaW50RnJhbWVWaWV3OihXZWJGcmFtZVZpZXcgKilmcmFtZVZpZXcKLXsKLX0KLQotCi0jaWYg
IVBMQVRGT1JNKElPUykKLS0gKE5TVUludGVnZXIpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcg
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzooaWQgPE5TRHJhZ2dpbmdJ
bmZvPilkcmFnZ2luZ0luZm8KLXsKLSAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
QW55OwotfQotCi0tICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IHdpbGxQZXJmb3Jt
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOihXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24pYWN0aW9uIGZv
ckRyYWdnaW5nSW5mbzooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KLXsKLX0KLQot
LSAoTlNVSW50ZWdlcil3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkcmFnU291cmNlQWN0aW9u
TWFza0ZvclBvaW50OihOU1BvaW50KXBvaW50Ci17Ci0gICAgcmV0dXJuIFdlYkRyYWdTb3VyY2VB
Y3Rpb25Bbnk7Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgd2lsbFBl
cmZvcm1EcmFnU291cmNlQWN0aW9uOihXZWJEcmFnU291cmNlQWN0aW9uKWFjdGlvbiBmcm9tUG9p
bnQ6KE5TUG9pbnQpcG9pbnQgd2l0aFBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9h
cmQKLXsKLX0KLQotLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHdpbGxQb3B1cE1l
bnU6KE5TTWVudSAqKW1lbnUKLXsKLX0KLSNlbmRpZgotCi0tICh2b2lkKXdlYlZpZXc6KFdlYlZp
ZXcgKilzZW5kZXIgZGlkRHJhd1JlY3Q6KE5TUmVjdClyZWN0Ci17Ci19Ci0KLS0gKHZvaWQpd2Vi
VmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRTY3JvbGxEb2N1bWVudEluRnJhbWVWaWV3OihXZWJG
cmFtZVZpZXcgKilmcmFtZVZpZXcKLXsKLX0KLQotLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmln
aW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIHRvdGFsU3BhY2VOZWVkZWQ6KE5TVUludGVn
ZXIpdG90YWxTcGFjZU5lZWRlZAotewotfQotCi0tIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKilz
ZW5kZXIgc2hvdWxkUmVwbGFjZVVwbG9hZEZpbGU6KE5TU3RyaW5nICopcGF0aCB1c2luZ0dlbmVy
YXRlZEZpbGVuYW1lOihOU1N0cmluZyAqKilmaWxlbmFtZQotewotICAgIHJldHVybiBOTzsKLX0K
LQotLSAoTlNTdHJpbmcgKil3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGdlbmVyYXRlUmVwbGFj
ZW1lbnRGaWxlOihOU1N0cmluZyAqKXBhdGgKLXsKLSAgICByZXR1cm4gbmlsOwotfQotCi0jaWYg
UExBVEZPUk0oSU9TKQotLSAodm9pZCl3ZWJWaWV3U3VwcG9ydGVkT3JpZW50YXRpb25zVXBkYXRl
ZDooV2ViVmlldyAqKXNlbmRlcgotewotfQotI2VuZGlmCi0KLUBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRl
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYyZTJhODM5NTA3NzM3Nzc1MGYwNmU1NWFiYWQ2YjY5MGU4ODZmY2MK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dl
YkRlZmF1bHRVSURlbGVnYXRlLm1tCkBAIC0wLDAgKzEsMjc1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJEZWZhdWx0VUlE
ZWxlZ2F0ZS5oIgorCisjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCisjaW1wb3J0ICJXZWJV
SURlbGVnYXRlUHJpdmF0ZS5oIgorI2ltcG9ydCAiV2ViVmlldy5oIgorCisjaWYgIVBMQVRGT1JN
KElPUykKKyNpbXBvcnQgIldlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5oIgorI2ltcG9ydCAi
V2ViS2l0VmVyc2lvbkNoZWNrcy5oIgorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1MpCisjaW1w
b3J0IDxXZWJDb3JlL1dBS1dpbmRvdy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XS1ZpZXdQcml2YXRl
Lmg+CisjZW5kaWYKKworI2lmICFQTEFURk9STShJT1MpCitAaW50ZXJmYWNlIE5TQXBwbGljYXRp
b24gKERlY2xhcmF0aW9uU3RvbGVuRnJvbUFwcEtpdCkKKy0gKHZvaWQpX2N5Y2xlV2luZG93c1Jl
dmVyc2VkOihCT09MKXJldmVyc2VkOworQGVuZAorI2VuZGlmCisKK0BpbXBsZW1lbnRhdGlvbiBX
ZWJEZWZhdWx0VUlEZWxlZ2F0ZQorCitzdGF0aWMgV2ViRGVmYXVsdFVJRGVsZWdhdGUgKnNoYXJl
ZERlbGVnYXRlID0gbmlsOworCisvLyBSZXR1cm4gYSBvYmplY3Qgd2l0aCB2YW5pbGxhIGltcGxl
bWVudGF0aW9ucyBvZiB0aGUgcHJvdG9jb2wncyBtZXRob2RzCisvLyBOb3RlIHRoaXMgZmVhdHVy
ZSByZWxpZXMgb24gb3VyIGRlZmF1bHQgZGVsZWdhdGUgYmVpbmcgc3RhdGVsZXNzLiBUaGlzCisv
LyBpcyBwcm9iYWJseSBhbiBpbnZhbGlkIGFzc3VtcHRpb24gZm9yIHRoZSBXZWJVSURlbGVnYXRl
LgorLy8gSWYgd2UgYWRkIGFueSByZWFsIGZ1bmN0aW9uYWxpdHkgdG8gdGhpcyBkZWZhdWx0IGRl
bGVnYXRlIHdlIHByb2JhYmx5CisvLyB3b24ndCBiZSBhYmxlIHRvIHVzZSBhIHNpbmdsZXRvbi4K
KysgKFdlYkRlZmF1bHRVSURlbGVnYXRlICopc2hhcmVkVUlEZWxlZ2F0ZQoreworICAgIGlmICgh
c2hhcmVkRGVsZWdhdGUpCisgICAgICAgIHNoYXJlZERlbGVnYXRlID0gW1tXZWJEZWZhdWx0VUlE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF07CisgICAgcmV0dXJuIHNoYXJlZERlbGVnYXRlOworfQorCist
IChXZWJWaWV3ICopd2ViVmlldzogKFdlYlZpZXcgKil3diBjcmVhdGVXZWJWaWV3V2l0aFJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2luZG93RmVhdHVyZXM6KE5TRGljdGlvbmFyeSAq
KWZlYXR1cmVzCit7CisgICAgLy8gSWYgdGhlIG5ldyBBUEkgbWV0aG9kIGRvZXNuJ3QgZXhpc3Qs
IGZhbGxiYWNrIHRvIHRoZSBvbGQgdmVyc2lvbiBvZiBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3QK
KyAgICAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdGFiaWxpdHkKKyAgICBpZiAoIVtbd3YgVUlEZWxl
Z2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdX
aXRoUmVxdWVzdDp3aW5kb3dGZWF0dXJlczopXSAmJiBbW3d2IFVJRGVsZWdhdGVdIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6KV0p
CisgICAgICAgIHJldHVybiBbW3d2IFVJRGVsZWdhdGVdIHdlYlZpZXc6d3YgY3JlYXRlV2ViVmll
d1dpdGhSZXF1ZXN0OnJlcXVlc3RdOworICAgIHJldHVybiBuaWw7Cit9CisKKyNpZiBQTEFURk9S
TShJT1MpCistIChXZWJWaWV3ICopd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBjcmVhdGVXZWJW
aWV3V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgdXNlckdlc3R1cmU6KEJPT0wp
dXNlckdlc3R1cmUKK3sKKyAgICByZXR1cm4gbmlsOworfQorI2VuZGlmCisKKy0gKHZvaWQpd2Vi
Vmlld1Nob3c6IChXZWJWaWV3ICopd3YKK3sKK30KKworLSAodm9pZCl3ZWJWaWV3Q2xvc2U6IChX
ZWJWaWV3ICopd3YKK3sKKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIFtbd3Ygd2luZG93XSBjbG9z
ZV07CisjZW5kaWYKK30KKworLSAodm9pZCl3ZWJWaWV3Rm9jdXM6IChXZWJWaWV3ICopd3YKK3sK
KyNpZiAhUExBVEZPUk0oSU9TKQorICAgIFtbd3Ygd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9u
dDp3dl07CisjZW5kaWYKK30KKworLSAodm9pZCl3ZWJWaWV3VW5mb2N1czogKFdlYlZpZXcgKil3
dgoreworI2lmICFQTEFURk9STShJT1MpCisgICAgaWYgKFtbd3Ygd2luZG93XSBpc0tleVdpbmRv
d10gfHwgW1tbd3Ygd2luZG93XSBhdHRhY2hlZFNoZWV0XSBpc0tleVdpbmRvd10pCisgICAgICAg
IFtOU0FwcCBfY3ljbGVXaW5kb3dzUmV2ZXJzZWQ6RkFMU0VdOworI2VuZGlmCit9CisKKy0gKE5T
UmVzcG9uZGVyICopd2ViVmlld0ZpcnN0UmVzcG9uZGVyOiAoV2ViVmlldyAqKXd2Cit7CisgICAg
cmV0dXJuIFtbd3Ygd2luZG93XSBmaXJzdFJlc3BvbmRlcl07Cit9CisKKy0gKHZvaWQpd2ViVmll
dzogKFdlYlZpZXcgKil3diBtYWtlRmlyc3RSZXNwb25kZXI6KE5TUmVzcG9uZGVyICopcmVzcG9u
ZGVyCit7CisgICAgW1t3diB3aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpyZXNwb25kZXJdOwor
fQorCistICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0U3RhdHVzVGV4dDooTlNTdHJp
bmcgKil0ZXh0Cit7Cit9CisKKy0gKE5TU3RyaW5nICopd2ViVmlld1N0YXR1c1RleHQ6IChXZWJW
aWV3ICopd3YKK3sKKyAgICByZXR1cm4gbmlsOworfQorCistICh2b2lkKXdlYlZpZXc6IChXZWJW
aWV3ICopd3YgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnRJ
bmZvcm1hdGlvbiBtb2RpZmllckZsYWdzOihOU1VJbnRlZ2VyKW1vZGlmaWVyRmxhZ3MKK3sKK30K
KworLSAoQk9PTCl3ZWJWaWV3QXJlVG9vbGJhcnNWaXNpYmxlOiAoV2ViVmlldyAqKXd2Cit7Cisg
ICAgcmV0dXJuIE5POworfQorCistICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0VG9v
bGJhcnNWaXNpYmxlOihCT09MKXZpc2libGUKK3sKK30KKworLSAoQk9PTCl3ZWJWaWV3SXNTdGF0
dXNCYXJWaXNpYmxlOiAoV2ViVmlldyAqKXd2Cit7CisgICAgcmV0dXJuIE5POworfQorCistICh2
b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0U3RhdHVzQmFyVmlzaWJsZTooQk9PTCl2aXNp
YmxlCit7Cit9CisKKy0gKEJPT0wpd2ViVmlld0lzUmVzaXphYmxlOiAoV2ViVmlldyAqKXd2Cit7
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiBOTzsKKyNlbHNlCisgICAgcmV0dXJuIFtb
d3Ygd2luZG93XSBzaG93c1Jlc2l6ZUluZGljYXRvcl07CisjZW5kaWYKK30KKworLSAodm9pZCl3
ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHNldFJlc2l6YWJsZTooQk9PTClyZXNpemFibGUKK3sKKyNp
ZiAhUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgY2hh
bmdlIHRoZSByZXNpemFiaWxpdHkgb2YgdGhlIHdpbmRvdywKKyAgICAvLyBvbmx5IHZpc2liaWxp
dHkgb2YgdGhlIGluZGljYXRvci4KKyAgICBbW3d2IHdpbmRvd10gc2V0U2hvd3NSZXNpemVJbmRp
Y2F0b3I6cmVzaXphYmxlXTsKKyNlbmRpZgorfQorCistICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3
ICopd3Ygc2V0RnJhbWU6KE5TUmVjdClmcmFtZQoreworI2lmICFQTEFURk9STShJT1MpCisgICAg
W1t3diB3aW5kb3ddIHNldEZyYW1lOmZyYW1lIGRpc3BsYXk6WUVTXTsKKyNlbmRpZgorfQorCist
IChOU1JlY3Qpd2ViVmlld0ZyYW1lOiAoV2ViVmlldyAqKXd2Cit7CisgICAgTlNXaW5kb3cgKndp
bmRvdyA9IFt3diB3aW5kb3ddOworICAgIHJldHVybiB3aW5kb3cgPT0gbmlsID8gTlNaZXJvUmVj
dCA6IFt3aW5kb3cgZnJhbWVdOworfQorCistICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Yg
cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGlu
aXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKK3sKKyAgICAvLyBGSVhNRTogV2Ugd2Fu
dCBhIGRlZmF1bHQgaGVyZSwgYnV0IHRoYXQgd291bGQgYWRkIGxvY2FsaXplZCBzdHJpbmdzLgor
fQorCistIChCT09MKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdENvbmZpcm1Q
YW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV2Vi
RnJhbWUgKilmcmFtZQoreworICAgIC8vIEZJWE1FOiBXZSB3YW50IGEgZGVmYXVsdCBoZXJlLCBi
dXQgdGhhdCB3b3VsZCBhZGQgbG9jYWxpemVkIHN0cmluZ3MuCisgICAgcmV0dXJuIE5POworfQor
CistIChOU1N0cmluZyAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdFRleHRJ
bnB1dFBhbmVsV2l0aFByb21wdDooTlNTdHJpbmcgKilwcm9tcHQgZGVmYXVsdFRleHQ6KE5TU3Ry
aW5nICopZGVmYXVsdFRleHQgaW5pdGlhdGVkQnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQorewor
I2lmICFQTEFURk9STShJT1MpCisgICAgV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsICpwYW5l
bCA9IFtbV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsIGFsbG9jXSBpbml0V2l0aFByb21wdDpw
cm9tcHQgdGV4dDpkZWZhdWx0VGV4dF07CisgICAgW3BhbmVsIHNob3dXaW5kb3c6bmlsXTsKKyAg
ICBOU1N0cmluZyAqcmVzdWx0OworICAgIGlmIChbTlNBcHAgcnVuTW9kYWxGb3JXaW5kb3c6W3Bh
bmVsIHdpbmRvd11dKQorICAgICAgICByZXN1bHQgPSBbcGFuZWwgdGV4dF07CisgICAgZWxzZQor
ICAgICAgICByZXN1bHQgPSBuaWw7CisgICAgW1twYW5lbCB3aW5kb3ddIGNsb3NlXTsKKyAgICBb
cGFuZWwgcmVsZWFzZV07CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNlCisgICAgcmV0dXJuIG5p
bDsKKyNlbmRpZgorfQorCistICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuT3BlblBh
bmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjooaWQ8V2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXI+KXJlc3VsdExpc3RlbmVyCit7CisgICAgLy8gRklYTUU6IFdlIHdhbnQgYSBkZWZh
dWx0IGhlcmUsIGJ1dCB0aGF0IHdvdWxkIGFkZCBsb2NhbGl6ZWQgc3RyaW5ncy4KK30KKworLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHByaW50RnJhbWVWaWV3OihXZWJGcmFtZVZp
ZXcgKilmcmFtZVZpZXcKK3sKK30KKworCisjaWYgIVBMQVRGT1JNKElPUykKKy0gKE5TVUludGVn
ZXIpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0Zv
ckRyYWdnaW5nSW5mbzooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KK3sKKyAgICBp
ZiAoIWxpbmtlZE9uT3JBZnRlcihTREtWZXJzaW9uOjpGaXJzdFdpdGhEcm9wVG9OYXZpZ2F0ZURp
c2FsbG93ZWRCeURlZmF1bHQpKQorICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uQW55OworCisgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSAmIH5XZWJE
cmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkOworfQorCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcg
Kil3ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOihXZWJEcmFnRGVzdGlu
YXRpb25BY3Rpb24pYWN0aW9uIGZvckRyYWdnaW5nSW5mbzooaWQgPE5TRHJhZ2dpbmdJbmZvPilk
cmFnZ2luZ0luZm8KK3sKK30KKworLSAoTlNVSW50ZWdlcil3ZWJWaWV3OihXZWJWaWV3ICopd2Vi
VmlldyBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50OihOU1BvaW50KXBvaW50Cit7CisgICAg
cmV0dXJuIFdlYkRyYWdTb3VyY2VBY3Rpb25Bbnk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXdlYlZpZXcgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uOihXZWJEcmFnU291cmNl
QWN0aW9uKWFjdGlvbiBmcm9tUG9pbnQ6KE5TUG9pbnQpcG9pbnQgd2l0aFBhc3RlYm9hcmQ6KE5T
UGFzdGVib2FyZCAqKXBhc3RlYm9hcmQKK3sKK30KKworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIHdpbGxQb3B1cE1lbnU6KE5TTWVudSAqKW1lbnUKK3sKK30KKyNlbmRpZgorCist
ICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRHJhd1JlY3Q6KE5TUmVjdClyZWN0
Cit7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRTY3JvbGxEb2N1
bWVudEluRnJhbWVWaWV3OihXZWJGcmFtZVZpZXcgKilmcmFtZVZpZXcKK3sKK30KKworLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhRm9yU2VjdXJpdHlPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIHRvdGFs
U3BhY2VOZWVkZWQ6KE5TVUludGVnZXIpdG90YWxTcGFjZU5lZWRlZAoreworfQorCistIChCT09M
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgc2hvdWxkUmVwbGFjZVVwbG9hZEZpbGU6KE5TU3Ry
aW5nICopcGF0aCB1c2luZ0dlbmVyYXRlZEZpbGVuYW1lOihOU1N0cmluZyAqKilmaWxlbmFtZQor
eworICAgIHJldHVybiBOTzsKK30KKworLSAoTlNTdHJpbmcgKil3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlOihOU1N0cmluZyAqKXBhdGgKK3sKKyAgICBy
ZXR1cm4gbmlsOworfQorCisjaWYgUExBVEZPUk0oSU9TKQorLSAodm9pZCl3ZWJWaWV3U3VwcG9y
dGVkT3JpZW50YXRpb25zVXBkYXRlZDooV2ViVmlldyAqKXNlbmRlcgoreworfQorI2VuZGlmCisK
K0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNo
ZWNrcy5oIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgKaW5k
ZXggMGY2MDZlMjg0NDA1MmI4MWE4NTNiYzBkYzZlMTQ0ZmY4MjdkOTliMy4uMDAzMmNhOTJkYTZl
MDkwZjc4Mjk4NTZjNDhkZDQzYjA1NmJhZDdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlz
Yy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgKQEAgLTgzLDYgKzgzLDggQEAKIGVudW0gY2xhc3MgU0RL
VmVyc2lvbiA6IHVpbnQzMl90IHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgRmlyc3RUb0V4Y2x1
ZGVMb2NhbFN0b3JhZ2VGcm9tQmFja3VwID0gRFlMRF9JT1NfVkVSU0lPTl8xMV8wLAorI2Vsc2UK
KyAgICBGaXJzdFdpdGhEcm9wVG9OYXZpZ2F0ZURpc2FsbG93ZWRCeURlZmF1bHQgPSBEWUxEX01B
Q09TWF9WRVJTSU9OXzEwXzEzCiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCBmYTQ0YTdmNjVlODM5NzQxMDgy
YjI1ZjI4YzE2YjRjMjhhOWVlOGEyLi5kOGVlZDU5MTdhOWRmNzkxZmMxZWU0NTk4MjgxN2U0NDlk
MWQ5ZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2lsbFBlcmZv
cm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBj
b25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbFBlcmZvcm1E
cmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJikgb3ZlcnJpZGU7Ci0gICAgV2ViQ29y
ZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKGNvbnN0IFdlYkNvcmU6
OkRyYWdEYXRhJikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
IGFjdGlvbk1hc2tGb3JEcmFnKERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0YSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnREcmFn
KFdlYkNvcmU6OkRyYWdJbWFnZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRyYWdQb3MsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBldmVudFBvcywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6RHJh
Z1NvdXJjZUFjdGlvbikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQppbmRleCBlYzRkNjgzZmFkZjJmNmU2YmNkYzU0NDFl
ODczNmU5YjI1NzhiN2E4Li42ZTBiMzE0OTNmZjMwMjFiZDI5NzIxNjFlOWJkNmIwN2ZlZDhiNzE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQubW0KQEAgLTc5LDkgKzc5LDkgQEAgc3RhdGljIFdlYkhUTUxWaWV3ICpnZXRUb3BIVE1MVmll
dyhGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIChXZWJIVE1MVmlldyopW1traXQoJmZyYW1lLT5w
YWdlKCktPm1haW5GcmFtZSgpKSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CiB9CiAKLVdlYkNv
cmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJh
Zyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYgZHJhZ0RhdGEpCitXZWJDb3JlOjpEcmFnRGVzdGlu
YXRpb25BY3Rpb24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoRHJhZ0RhdGFSZWYg
cGxhdGZvcm1EYXRhKQogewotICAgIHJldHVybiAoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKVtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBk
cmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdEYXRhLnBsYXRmb3Jt
RGF0YSgpXTsKKyAgICByZXR1cm4gKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbilbW21f
d2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpwbGF0Zm9ybURhdGFdOwogfQogCiB2b2lk
IFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6
OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiBk
cmFnRGF0YSkKQEAgLTE4MSw3ICsxODEsNyBAQCBib29sIFdlYkRyYWdDbGllbnQ6OnVzZUxlZ2Fj
eURyYWdDbGllbnQoKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KLVdlYkNvcmU6OkRyYWdEZXN0
aW5hdGlvbkFjdGlvbiBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBXZWJD
b3JlOjpEcmFnRGF0YSYpCitXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gV2ViRHJhZ0Ns
aWVudDo6YWN0aW9uTWFza0ZvckRyYWcoRHJhZ0RhdGFSZWYpCiB7CiAgICAgcmV0dXJuIERyYWdE
ZXN0aW5hdGlvbkFjdGlvbk5vbmU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
aW5kZXggMDcwZDAzNTU4OTI4ZDE4NmU4ZGFmNTE3NzVmMTEzYWYzZmJlNTU5ZC4uN2E3MzUxYWE3
NDM5ZGU2Njg5NTZlMGY4NjBiNzUwOGM0ODJhMDRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQpAQCAtNjM5Miw4ICs2MzkyLDEwIEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0
IGJhY2tpbmdQcm9wZXJ0eU9sZFNjYWxlRmFjdG9yS2V5ID0gQCJOU0JhY2tpbmdQcm9wZXJ0eU9s
CiB7CiAgICAgSW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0p
OwogICAgIEludFBvaW50IGdsb2JhbChnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5n
TG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dp
bmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oW2RyYWdn
aW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25G
bGFnczpkcmFnZ2luZ0luZm9dKTsKLSAgICByZXR1cm4gY29yZShzZWxmKS0+ZHJhZ0NvbnRyb2xs
ZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CisKKyAgICBhdXRvJiBjb250cm9sbGVyID0gY29y
ZShzZWxmKS0+ZHJhZ0NvbnRyb2xsZXIoKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2lu
Z0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihbZHJhZ2dp
bmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZs
YWdzOmRyYWdnaW5nSW5mb10sIGNvbnRyb2xsZXIuY2xpZW50KCkuYWN0aW9uTWFza0ZvckRyYWco
ZHJhZ2dpbmdJbmZvKSk7CisgICAgcmV0dXJuIGNvbnRyb2xsZXIuZHJhZ0VudGVyZWQoZHJhZ0Rh
dGEpOwogfQogCiAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdVcGRhdGVkOihpZCA8TlNEcmFn
Z2luZ0luZm8+KWRyYWdnaW5nSW5mbwpAQCAtNjQwNCw4ICs2NDA2LDEwIEBAIHN0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IGJhY2tpbmdQcm9wZXJ0eU9sZFNjYWxlRmFjdG9yS2V5ID0gQCJOU0JhY2tp
bmdQcm9wZXJ0eU9sCiAKICAgICBJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2lu
Z0xvY2F0aW9uXSk7CiAgICAgSW50UG9pbnQgZ2xvYmFsKGdsb2JhbFBvaW50KFtkcmFnZ2luZ0lu
Zm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKLSAgICBEcmFnRGF0YSBkcmFn
RGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0
aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBh
cHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOwotICAgIHJldHVybiBwYWdlLT5kcmFnQ29u
dHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKKworICAgIGF1dG8mIGNvbnRyb2xsZXIg
PSBjb3JlKHNlbGYpLT5kcmFnQ29udHJvbGxlcigpOworICAgIERyYWdEYXRhIGRyYWdEYXRhKGRy
YWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KFtk
cmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0
aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgY29udHJvbGxlci5jbGllbnQoKS5hY3Rpb25NYXNrRm9y
RHJhZyhkcmFnZ2luZ0luZm8pKTsKKyAgICByZXR1cm4gY29udHJvbGxlci5kcmFnVXBkYXRlZChk
cmFnRGF0YSk7CiB9CiAKIC0gKHZvaWQpZHJhZ2dpbmdFeGl0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5m
bz4pZHJhZ2dpbmdJbmZvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuY3BwCmluZGV4IGRlYjAwZDcyYTMwYTgzN2Y1NWUyMzk2OTk4OGMwYzFi
ZGI0NzRiNmYuLmFmODgwZDNmOTUzN2NhYzFkMDc0MDU3OWJlZDE4ODU0M2M3NWVmNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3Bw
CkBAIC02NCwxNCArNjQsMTQgQEAgV2ViRHJhZ0NsaWVudDo6V2ViRHJhZ0NsaWVudChXZWJWaWV3
KiB3ZWJWaWV3KQogICAgIEFTU0VSVCh3ZWJWaWV3KTsKIH0KIAotRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uIFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFn
RGF0YSkKK0RyYWdEZXN0aW5hdGlvbkFjdGlvbiBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9y
RHJhZyhEcmFnRGF0YVJlZiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgQ09NUHRyPElXZWJVSURlbGVn
YXRlPiBkZWxlZ2F0ZVJlZiA9IDA7CiAgICAgLy9EZWZhdWx0IGJlaGF2aW91ciAoZWcuIG5vIGRl
bGVnYXRlLCBvciBjYWxsYmFjayBub3QgaW1wbGVtZW50ZWQpIGlzIHRvIGFsbG93CiAgICAgLy9h
bnkgYWN0aW9uCiAgICAgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIG1hc2sgPSBXZWJEcmFnRGVz
dGluYXRpb25BY3Rpb25Bbnk7CiAgICAgaWYgKFNVQ0NFRURFRChtX3dlYlZpZXctPnVpRGVsZWdh
dGUoJmRlbGVnYXRlUmVmKSkpCi0gICAgICAgIGRlbGVnYXRlUmVmLT5kcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvKG1fd2ViVmlldywgZHJhZ0RhdGEucGxhdGZvcm1EYXRh
KCksICZtYXNrKTsKKyAgICAgICAgZGVsZWdhdGVSZWYtPmRyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2tGb3JEcmFnZ2luZ0luZm8obV93ZWJWaWV3LCBwbGF0Zm9ybURhdGEsICZtYXNrKTsKIAogICAg
IHJldHVybiAoRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKW1hc2s7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzJjNjZkMjU3ZjkwNDQ0Yjk3YmViOGFjODQxZDEwMzQxMmNmNmEzMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvV0tEcmFnRGVz
dGluYXRpb25BY3Rpb24uaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFdLX0FQ
SV9FTkFCTEVECisKK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBXS0RyYWdEZXN0aW5h
dGlvbkFjdGlvbikgeworICAgIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZSAgICA9IDAsCisg
ICAgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25ESFRNTCAgID0gMSwKKyAgICBXS0RyYWdEZXN0aW5h
dGlvbkFjdGlvbkVkaXQgICAgPSAyLAorICAgIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCAg
ICA9IDQsCisgICAgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkgICAgID0gTlNVSW50ZWdlck1h
eAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCmluZGV4IDYxNjZhYjZlYTE1MTYxOWNkOTdhZjFiNzNiNmE0OTVhZTcwOThmMmMu
LjFkMGRiNmRkYmRlOWI4MjUzMTg4OGM3YzA5OTJmMjZlMGVhYjI4NWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMjI0LDYgKzEy
MjQsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBl
bmNvZGVyIDw8IGRyYWdEYXRhLmZpbGVOYW1lcygpOwogI2VuZGlmCisgICAgZW5jb2RlciA8PCBk
cmFnRGF0YS5kcmFnRGVzdGluYXRpb25BY3Rpb24oKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVy
PERyYWdEYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERyYWdEYXRhJiBkcmFnRGF0YSkK
QEAgLTEyNTUsNyArMTI1NiwxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAjZW5kaWYKIAotICAgIGRyYWdEYXRhID0gRHJhZ0RhdGEocGFzdGVib2FyZE5hbWUs
IGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrLCBhcHBsaWNhdGlvbkZsYWdzKTsKKyAgICBEcmFnRGVzdGluYXRpb25BY3Rpb24gZGVzdGlu
YXRpb25BY3Rpb247CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oZGVzdGluYXRpb25BY3Rp
b24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkcmFnRGF0YSA9IERyYWdEYXRhKHBh
c3RlYm9hcmROYW1lLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzaywgYXBwbGljYXRpb25GbGFncywgZGVzdGluYXRpb25BY3Rpb24pOwog
ICAgIGRyYWdEYXRhLnNldEZpbGVOYW1lcyhmaWxlTmFtZXMpOwogCiAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURl
bGVnYXRlUHJpdmF0ZS5oCmluZGV4IDM2MWE1Y2FkZGFmNDA4NzZmMWYxYWVkODk3OWM4YWVjOGUw
YjJmN2YuLjUxMWE0YzRmNTI1OWM5ZmJkODUxODk1YjNmODNlYzYzZWVlMjhiZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRl
UHJpdmF0ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCisjaW1w
b3J0IDxXZWJLaXQvV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaD4KICNpbXBvcnQgPFdlYktpdC9X
S1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLQWN0aXZhdGVkRWxlbWVudElu
Zm8uaD4KIApAQCAtNjUsNiArNjYsNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JV
Ukw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVVUkwgZnJhbWVJ
ZGVudGlmaWVyOihOU1VJbnRlZ2VyKWZyYW1lSWRlbnRpZmllciBkZWNpc2lvbkhhbmRsZXI6KHZv
aWQgKF4pKE5TU3RyaW5nICpzYWx0LCBCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0g
KHZvaWQpX3dlYlZpZXdEaWRCZWdpbkNhcHR1cmVTZXNzaW9uOihXS1dlYlZpZXcgKil3ZWJWaWV3
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
LSAodm9pZClfd2ViVmlld0RpZEVuZENhcHR1cmVTZXNzaW9uOihXS1dlYlZpZXcgKil3ZWJWaWV3
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
LSAoV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzooaWQpZHJhZ2dpbmdJbmZv
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
I2lmIFRBUkdFVF9PU19JUEhPTkUKIC0gKEJPT0wpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxl
bWVudEluZm8gKillbGVtZW50IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDkuMCkpOwogLSAoTlNBcnJh
eSAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGFjdGlvbnNGb3JFbGVtZW50OihfV0tB
Y3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgZGVmYXVsdEFjdGlvbnM6KE5TQXJyYXk8X1dL
RWxlbWVudEFjdGlvbiAqPiAqKWRlZmF1bHRBY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBhNjk4NmQyZWZiZWVmOWI0YzM5
MGMxZGE4NTlhYzFhMzRiZDEyNTNiLi5lYzJiN2I5ZGQyMGVmNjE2Y2UxMWVjNjRmM2Q0MGJjZjY3
M2I4NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQpAQCAtNDUsNiArNDUsNyBAQAogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0cnku
aCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCIKICNpbXBvcnQgIlVJ
RGVsZWdhdGUuaCIKKyNpbXBvcnQgIlZlcnNpb25DaGVja3MuaCIKICNpbXBvcnQgIlZpZXdHZXN0
dXJlQ29udHJvbGxlci5oIgogI2ltcG9ydCAiVmlld1NuYXBzaG90U3RvcmUuaCIKICNpbXBvcnQg
IldLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCIKQEAgLTM0NTIsNiArMzQ1MywyMiBAQCBXRUJD
T1JFX0NPTU1BTkQoeWFua0FuZFNlbGVjdCkKIHsKIH0KIAorI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCisKKy0gKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKV93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uRm9yRHJhZ2dpbmdJbmZvOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbworewor
ICAgIGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPiB1aURlbGVnYXRlID0gKGlkIDxXS1VJRGVsZWdh
dGVQcml2YXRlPilbc2VsZiBVSURlbGVnYXRlXTsKKyAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNr
Rm9yRHJhZ2dpbmdJbmZvOildKQorICAgICAgICByZXR1cm4gW3VpRGVsZWdhdGUgX3dlYlZpZXc6
c2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5m
b107CisKKyAgICBpZiAoIWxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNES1ZlcnNpb246OkZpcnN0
V2l0aERyb3BUb05hdmlnYXRlRGlzYWxsb3dlZEJ5RGVmYXVsdCkpCisgICAgICAgIHJldHVybiBX
S0RyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKKworICAgIHJldHVybiBXS0RyYWdEZXN0aW5hdGlv
bkFjdGlvbkFueSAmIH5XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQ7Cit9CisKKyNlbmRpZgor
CiAtICh2b2lkKV93ZWJfZGlzbWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxkV2luZG93cwogewogICAg
IF9pbXBsLT5kaXNtaXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzRnJvbVZpZXdPbmx5KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5kZXggYzAzYThj
MzcxMWY1YWRiNzg0NzQ1MGQ2Y2UyNTdjMmJkNjkxMDNkMy4uMTNkYTFjY2U1YTIxYjk3OGZkYjU3
MTViNzEwYTYyZmQ0MGU1MWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiQVBJSWNvbkxvYWRpbmdDbGll
bnQuaCIKICNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJXS0Jyb3dz
aW5nQ29udGV4dEdyb3VwUHJpdmF0ZS5oIgorI2ltcG9ydCAiV0tEcmFnRGVzdGluYXRpb25BY3Rp
b24uaCIKICNpbXBvcnQgIldLTlNEYXRhLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NHcm91cFByaXZh
dGUuaCIKICNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKQEAgLTEwMDgsNiArMTAw
OSwxNSBAQCBTb21lIG90aGVyIGVkaXRpbmctcmVsYXRlZCBtZXRob2RzIHN0aWxsIHVuaW1wbGVt
ZW50ZWQ6CiAgICAgW3NlbGYgX2RpZENoYW5nZUNvbnRlbnRTaXplOm5ld1NpemVdOwogfQogCisj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKKworLSAoV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pX3dl
Yl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86KGlkIDxOU0RyYWdnaW5nSW5m
bz4pZHJhZ2dpbmdJbmZvCit7CisgICAgcmV0dXJuIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55
OworfQorCisjZW5kaWYKKwogLSAodm9pZClfd2ViX2Rpc21pc3NDb250ZW50UmVsYXRpdmVDaGls
ZFdpbmRvd3MKIHsKICAgICBbc2VsZiBfZGlzbWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxkV2luZG93
c107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNo
ZWNrcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MuaApp
bmRleCAzMDUyOTVjOWRkY2M1M2Y4OGJhYWUyZjhiNTY0ZDZhMWI4MzFjM2EzLi41MDJhZGY2ZWYw
NjBhN2JiZTlkOWQ1YWI0ZWI2ODBmODNkMmM0YzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9WZXJzaW9uQ2hlY2tzLmgKQEAgLTM4LDYgKzM4LDcgQEAgZW51bSBjbGFz
cyBTREtWZXJzaW9uIDogdWludDMyX3QgewogI2VsaWYgUExBVEZPUk0oTUFDKQogICAgIEZpcnN0
V2l0aE5ldHdvcmtDYWNoZSA9IERZTERfTUFDT1NYX1ZFUlNJT05fMTBfMTEsCiAgICAgRmlyc3RX
aXRoRXhjZXB0aW9uc0ZvckR1cGxpY2F0ZUNvbXBsZXRpb25IYW5kbGVyQ2FsbHMgPSBEWUxEX01B
Q09TWF9WRVJTSU9OXzEwXzEzLAorICAgIEZpcnN0V2l0aERyb3BUb05hdmlnYXRlRGlzYWxsb3dl
ZEJ5RGVmYXVsdCA9IERZTERfTUFDT1NYX1ZFUlNJT05fMTBfMTMKICNlbmRpZgogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCA2OTJhOTI0
YWNmNGJkOWYxZDdjZGIxYThkNWQ4OWI3NmJiZjMzYTRlLi4xYWE0Y2VjMmE1ZDI0NzJkOTA3MWNk
MTllMjRlYWU0M2MyOTc5NTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwuaApAQCAtMjksNiArMjksNyBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2lu
Y2x1ZGUgIlBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5oIgorI2luY2x1ZGUgIldLRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiV0tMYXlvdXRNb2RlLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlLmgiCkBA
IC05MSw2ICs5MiwxMCBAQCBPQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyOwog
CiAtICh2b2lkKV93ZWJfZGlkQ2hhbmdlQ29udGVudFNpemU6KE5TU2l6ZSluZXdTaXplOwogCisj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKKy0gKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKV93ZWJf
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOihpZCA8TlNEcmFnZ2luZ0luZm8+
KWRyYWdnaW5nSW5mbzsKKyNlbmRpZgorCiBAb3B0aW9uYWwKIC0gKHZvaWQpX3dlYl9kaWRBZGRN
ZWRpYUNvbnRyb2xzTWFuYWdlcjooaWQpY29udHJvbHNNYW5hZ2VyOwogLSAodm9pZClfd2ViX2Rp
ZFJlbW92ZU1lZGlhQ29udHJvbHNNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGVjYTllYTRmZDU3NWFjNTk2NDE2NWEzY2JkODAw
NjIyNmI4M2ZmNzAuLmRhNTJiMjZkODJiNzIzMWVhMDM3OTdjYzM3MDIyZTg3MTcxZmUwN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTM1
NzcsNyArMzU3Nyw4IEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFbnRl
cmVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6Oklu
dFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdM
b2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2Vi
Q29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIG1fdmlldy53
aW5kb3cpKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNs
aWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2lu
Z0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRy
YWcobV92aWV3LCBkcmFnZ2luZ0luZm8pKTsKKyAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlv
biA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4oW21fdmlldyBf
d2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsK
KyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xv
YmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3
LCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVzdGluYXRpb25BY3Rpb24pOwogCiAgICAgbV9wYWdlLT5y
ZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKICAgICBtX3BhZ2UtPmRyYWdFbnRlcmVkKGRy
YWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwpAQCAtMzU4OCw3
ICszNTg5LDggQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQo
aWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50UG9p
bnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0
aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3Jl
OjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgbV92aWV3LndpbmRv
dykpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50
LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5m
by5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyht
X3ZpZXcsIGRyYWdnaW5nSW5mbykpOworICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPihbbV92aWV3IF93ZWJf
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAg
IFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWws
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcsIGRy
YWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbik7CiAgICAgbV9wYWdlLT5kcmFnVXBk
YXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lKTsKIAog
ICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9wYWdlLT5jdXJyZW50
RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYzJlMWY0YzBmNzgyY2EyMzE2
YzQ5ZjJjOTFhN2I5Y2VkOTVjY2ZlLi44YTIwZDAwOTA1Mzg0OThlM2YxMTFjMWE0M2JiOTVhNjk3
NWIyZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xOTYxLDYgKzE5NjEsNyBAQAogCQlFRDgyQTdGMjEyOEM2RkFGMDA0NDc3
QjMgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUEyMkYwRkYxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFn
ZU92ZXJsYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFRENBNzFCNzEyOEREQThDMDAyMDFCMjYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIyRjEwMDEy
ODlGQ0Q5MDA4NUU3NEYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgKi87IH07CiAJCUYwMzY5
Nzg4MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUg
LyogV2ViQ29sb3JQaWNrZXIuY3BwICovOyB9OworCQlGNDA5QkExODFFNkU2NEJDMDA5REEyOEUg
LyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDlCQTE3MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0
aW5hdGlvbkFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUY0MzM3MDk3MUU0RDcyRUQwMDA1MkIwRSAvKiBfV0tUZXN0aW5nRGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzM3MDk2
MUU0RDZBNDQwMDA1MkIwRSAvKiBfV0tUZXN0aW5nRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNjExM0UyNTEyNkNFMTgyMDA1N0Qw
QTcgLyogQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjExM0UyNDEyNkNFMTgyMDA1N0QwQTcgLyogQVBJVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmggKi87IH07CiAJCUY2MTEzRTI4MTI2Q0UxOUIwMDU3RDBBNyAv
KiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNjExM0UyNjEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29u
dGVudFVSTFBhdHRlcm4uY3BwICovOyB9OwpAQCAtNDIyNiw2ICs0MjI3LDcgQEAKIAkJRTRFODY0
OEUxQjE2NzNGQjAwQzgyRjQwIC8qIFZlcnNpb25DaGVja3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVmVyc2lvbkNoZWNrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNEU4NjQ4RjFCMTY3M0ZCMDBDODJGNDAgLyogVmVyc2lvbkNoZWNrcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZlcnNpb25DaGVja3MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJD
b2xvclBpY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJD
b2xvclBpY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MDlCQTE3MUU2
RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDMzNzA5NjFFNEQ2QTQ0MDAwNTJCMEUgLyogX1dLVGVzdGlu
Z0RlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Rlc3RpbmdE
ZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNjExM0UyNDEyNkNFMTgy
MDA1N0QwQTcgLyogQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNjExM0UyNjEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tV
c2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTYzMiw2ICs1NjM0LDcgQEAKIAkJCQkzNzNEMTIyNDE4QTQ3M0IzMDA2NkQ5Q0MgLyogV0tCcm93
c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oICovLAogCQkJCTM3QTcwOUE2MUUzRUEwRkQwMENB
NTk2OSAvKiBXS0RhdGFEZXRlY3RvclR5cGVzLmggKi8sCiAJCQkJMzdBNzA5QTgxRTNFQTQwQzAw
Q0E1OTY5IC8qIFdLRGF0YURldGVjdG9yVHlwZXNJbnRlcm5hbC5oICovLAorCQkJCUY0MDlCQTE3
MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oICovLAogCQkJCTM3
REZBNkZGMTgxMEJCOTIwMDFGNEE5RiAvKiBXS0ZvdW5kYXRpb24uaCAqLywKIAkJCQkxQTlFMzI5
OTE4MjJFMUNDMDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3QuaCAqLywKIAkJCQkxQTlFMzI5ODE4
MjJFMUNDMDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3QubW0gKi8sCkBAIC04MDE2LDYgKzgwMTks
NyBAQAogCQkJCUJDRUU5NjZEMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMUEzMTczMjEzNENFQTZDMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0cmlu
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OTcxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0MDlCQTE4MUU2
RTY0QkMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTEyRjU4OTkxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25M
aXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4RThFRjkxNkIyMDkxQzAwRTkxNDI5IC8q
IEF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4QTMxMkE4
ODNBRDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCmluZGV4IDBmMTZiZTlhNTc2ODBjZmZiMTBjY2RiNTVk
YTMxNzMxMmZjNjVjNDkuLjdmZDM5MjU1MTYzYzRjMjFmNDM0Y2QwZDU4MjJmMWZkYTE3Mjg2OTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFdlYkRyYWdDbGll
bnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25zdCBJ
bnRQb2ludAogewogfQogCi1EcmFnRGVzdGluYXRpb25BY3Rpb24gV2ViRHJhZ0NsaWVudDo6YWN0
aW9uTWFza0ZvckRyYWcoY29uc3QgRHJhZ0RhdGEmKQorRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIFdl
YkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKERyYWdEYXRhUmVmKQogewogICAgIHJldHVy
biBEcmFnRGVzdGluYXRpb25BY3Rpb25Bbnk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IGE5NmVl
ODE2MjAzNjJlM2VhOTIzNTU3Mjg3MDJkYjZkMmUzNzBlZWEuLmZiODBmNjVlN2EwZTcwY2Y2Y2Vl
Y2E2NDU5ZDYxODAyYmVkZjY2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC00NCw3ICs0NCw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFj
dGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdE
YXRhJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3Jl
OjpEYXRhVHJhbnNmZXImKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25B
Y3Rpb24gYWN0aW9uTWFza0ZvckRyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmKSBvdmVycmlk
ZTsKKyAgICBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0ZvckRyYWco
RHJhZ0RhdGFSZWYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gZHJh
Z1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgd2luZG93
UG9pbnQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6RHJhZ0ltYWdl
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGRyYWdJbWFn
ZUFuY2hvciwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3Jl
OjpEcmFnU291cmNlQWN0aW9uKSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303694</attachid>
            <date>2017-03-07 11:52:33 -0800</date>
            <delta_ts>2017-03-07 12:24:12 -0800</delta_ts>
            <desc>Additional build fixes</desc>
            <filename>bug-169168-20170307115206.patch</filename>
            <type>text/plain</type>
            <size>61206</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI4MjE1ZjFhMjY2NTAz
ZjI1NDQyOGQxOWZhMGRhNGJhMGY0YjE0Mi4uYjY5N2I3YjU4ODNhNWE1MzI4MGM0MTU3MjdlM2M0
MmUyYjY0Y2Q3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTAzLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBh
IFVJIGRlbGVnYXRlIFNQSSBob29rIHRvIGVuYWJsZSBvciBkaXNhYmxlIG5hdmlnYXRpb24gb24g
ZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY4ODM3ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBjbGllbnQgaG9va3MgZm9y
IHRoZSBkcmFnIGRlc3RpbmF0aW9uIGFjdGlvbiBpbiBXZWJDb3JlIHRvIGFzayBmb3IgdGhlIGRy
YWcgZGVzdGluYXRpb24gYWN0aW9uIG1hc2sKKyAgICAgICAgdXBvbiBpbml0aWFsaXppbmcgdGhl
IERyYWdEYXRhLiBJbiBEcmFnQ29udHJvbGxlciwgcmF0aGVyIHRoYW4gc2V0dGluZyBtX2RyYWdE
ZXN0aW5hdGlvbkFjdGlvbiB0byB0aGUgcmVzdWx0IG9mCisgICAgICAgIG1fY2xpZW50LmFjdGlv
bk1hc2tGb3JEcmFnLCB3ZSBpbnN0ZWFkIHNldCBpdCB0byB0aGUgRHJhZ0RhdGEncyBkZXN0aW5h
dGlvbiBhY3Rpb24uCisKKyAgICAgICAgVGVzdHMgdG8gY29tZSBpbiBhIGZ1dHVyZSBwYXRjaC4K
KworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIHBhZ2UvRHJh
Z0NsaWVudC5oOgorCisgICAgICAgIFJhdGhlciB0aGFuIHBhc3MgaW4gYSBEcmFnRGF0YSwgcGFz
cyBpbiBvbmx5IHRoZSBwbGF0Zm9ybSBkYXRhIHRoYXQgd2UgbmVlZCB0byBoYW5kIHRvIHRoZSBk
ZWxlZ2F0ZS4gVGhpcyBpcworICAgICAgICBiZWNhdXNlIHdlIG5vdyBhc2sgZm9yIGRyYWcgZGVz
dGluYXRpb24gYWN0aW9ucyBwcmlvciB0byBjcmVhdGluZyB0aGUgRHJhZ0RhdGEuCisKKyAgICAg
ICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250
cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZCk6CisKKyAgICAgICAgVXBkYXRlIHRoZSBhdmFp
bGFibGUgZHJhZyBkZXN0aW5hdGlvbiBhY3Rpb25zIGluIFdlYkNvcmUgdXNpbmcgdGhlIGRlc3Rp
bmF0aW9uIGFjdGlvbnMgc3RvcmVkIGluIERyYWdEYXRhIHJhdGhlcgorICAgICAgICB0aGFuIGNh
bGxpbmcgb3V0IHRvIHRoZSBjbGllbnQgZGVsZWdhdGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9E
cmFnRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpvcGVy
YXRvciA9KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorCiAyMDE3LTAzLTAxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWN0dWFsbHkgZml4
IFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3ODI2YjBhMjQ4YzMyNWY4ZWYyNzUxZDdhOWM2
NTYxMDM0OWU4ZWYuLmYyODMzZTgzN2UyNWE4YmY1ODNjNGI4NDUyNGZlOTk3MDU4ODExOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDMtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIGEgVUkgZGVsZWdhdGUgU1BJ
IGhvb2sgdG8gZW5hYmxlIG9yIGRpc2FibGUgbmF2aWdhdGlvbiBvbiBkcm9wCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkxNjgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzMwNjg4Mzc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNlZSBXZWJLaXQgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuIFJl
bmFtZXMgV2ViRGVmYXVsdFVJRGVsZWdhdGUubSA9PiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbS4K
KworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE3LTAy
LTI3ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFi
bGUgU1VQUE9SVFNfVEVYVF9CQVNFRF9BUEkgaW4gV2ViS2l0TGVnYWN5IGZvciBpT1MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCA1MDFmMDkzZmYzZmIzYmE4MWZkMTNlNjU5YTFjODE0YmQ2NGIwMTE3Li5i
NjQ5MzZmMTllYWJkYzczZGQ0OTFmYTg4MjNmNmE0YjJlODk1NTM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjkgQEAKKzIwMTctMDMtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIGEgVUkgZGVsZWdhdGUgU1BJIGhvb2sg
dG8gZW5hYmxlIG9yIGRpc2FibGUgbmF2aWdhdGlvbiBvbiBkcm9wCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkxNjgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzMwNjg4Mzc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlZmFjdG9ycyBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJhZyB0byB0
YWtlIHBsYXRmb3JtIGRhdGEgb25seSwgcmF0aGVyIHRoYW4gdGhlIGVudGlyZSBEcmFnRGF0YS4g
U2VlIHRoZQorICAgICAgICBXZWJDb3JlIENoYW5nZUxvZyBlbnRyeSBmb3IgbW9yZSBkZXRhaWxz
LiBBbHNvIHJlbmFtZXMgV2ViRGVmYXVsdFVJRGVsZWdhdGUubSB0byBXZWJEZWZhdWx0VUlEZWxl
Z2F0ZS5tbSwgc2luY2UKKyAgICAgICAgd2UgbmVlZCB0byBpbXBvcnQgYSBDKysgaGVhZGVyIGZv
ciBsaW5rZWRPbk9yQWZ0ZXIoKS4KKworICAgICAgICBUaGUgZGVmYXVsdCBkZWxlZ2F0ZSBpbXBs
ZW1lbnRhdGlvbiBvZiB3ZWJWaWV3OmRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2lu
Z0luZm86IG5vdyBjaGVja3MgaWYgdGhlIGN1cnJlbnQKKyAgICAgICAgYXBwbGljYXRpb24gaXMg
bGlua2luZyBhZ2FpbnN0IDEwLjEyIG9yIGVhcmxpZXIsIGFuZCBpZiBzbywgd2lsbCBhbGxvdyBh
bnkgZHJhZyBkZXN0aW5hdGlvbiBhY3Rpb24gaW5zdGVhZCBvZgorICAgICAgICB0aGUgbmV3IGRl
ZmF1bHQgdmFsdWUgb2YgZXZlcnl0aGluZyBidXQgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZC4K
KworICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW06IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRV
SURlbGVnYXRlLm0uCisgICAgICAgICgtW1dlYkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXc6ZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpdKToKKyAgICAgICAgKiBNaXNj
L1dlYktpdFZlcnNpb25DaGVja3MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbToKKyAg
ICAgICAgKFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpdKToKKwogMjAxNy0wMy0wMSAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTMyNTkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMGZlMzE3N2E0
N2ExY2Y2NjU0OTA1YTYzZWYxYTRjYzIzNzVkNDFhZS4uNWFhYTM0MGVlZmU5MGYyZGJmZWFhMGI0
OGE2YmI0YjM5MDU3OGNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3
LTAzLTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFtXSzJdIEFkZCBhIFVJIGRlbGVnYXRlIFNQSSBob29rIHRvIGVuYWJsZSBvciBkaXNhYmxlIG5h
dmlnYXRpb24gb24gZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY5MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY4ODM3ND4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaW5vciB0d2VhayB0
byBhZGp1c3QgZm9yIGEgY2hhbmdlZCBpbnRlcmZhY2UuIFNlZSBXZWJLaXQgYW5kIFdlYkNvcmUg
Q2hhbmdlTG9ncyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFz
a0ZvckRyYWcpOgorCiAyMDE3LTAzLTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWN0dWFsbHkgZml4IFdpbmRvd3MgYnVpbGQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggZDI1YjIxN2YyNzIzYjc3OTA5MTdmZDg1YjIxODdhODJkMDE5MjNiNy4uYjY2NjFl
YTc4MmZjM2U5MTg1YjYzOGFjMGFjYmJkNmJkYTQ1MGJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDUwIEBACisyMDE3LTAzLTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIFtXSzJdIEFkZCBhIFVJIGRlbGVnYXRlIFNQSSBob29rIHRvIGVuYWJsZSBv
ciBkaXNhYmxlIG5hdmlnYXRpb24gb24gZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY4
ODM3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
dXBwb3J0IGN1c3RvbWl6aW5nIHRoZSBzZXQgb2YgYWxsb3dlZCBhY3Rpb25zIG9uIGRyb3AgaW4g
V2ViS2l0MiBieSBpbnRyb2R1Y2luZyBhIG5ldyBtZXRob2QgdG8gV0tVSURlbGVnYXRlUHJpdmF0
ZQorICAgICAgICB0aGF0IHJldHVybnMgYSBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbiBnaXZlbiBw
bGF0Zm9ybSBkcmFnZ2luZyBpbmZvLiBUaGVzZSBmbGFncyBhcmUgdGhlbiB1c2VkIHRvIGluaXRp
YWxpemUgdGhlCisgICAgICAgIERyYWdEYXRhIHNlbnQgb3ZlciB0byB0aGUgd2ViIHByb2Nlc3Ms
IHdoZXJlIHRoZXkgdXBkYXRlIERyYWdDb250cm9sbGVyJ3MgdmlldyBvZiB0aGUgYWxsb3dlZCBk
ZXN0aW5hdGlvbiBhY3Rpb25zLgorCisgICAgICAgIE1vdmluZyBmb3J3YXJkLCB0aGUgZGVmYXVs
dCBhY3Rpb24gbWFzayBmb3IgV0tXZWJWaWV3cyB3aWxsIGluY2x1ZGUgZXZlcnl0aGluZyBleGNl
cHQgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkLAorICAgICAgICB0aG91Z2ggZm9yIGFwcGxj
aWF0aW9ucyBsaW5rZWQgb24gb3IgYmVmb3JlIDEwLjEyLCB3ZSB3aWxsIHN0aWxsIGRlZmF1bHQg
dG8gV0tEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkgdG8gbWl0aWdhdGUKKyAgICAgICAgYW55IGNv
bXBhdGliaWxpdHkgcmlzay4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tEcmFnRGVz
dGluYXRpb25BY3Rpb24uaDoKKworICAgICAgICBJbnRyb2R1Y2UgV0syIGNsaWVudC1mYWNpbmcg
dmVyc2lvbnMgb2YgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGZsYWdzLgorCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPERyYWdEYXRhPjo6ZGVjb2RlKToKKworICAgICAgICBTZXJpYWxpemUgRHJhZ0RhdGEncyBk
ZXN0aW5hdGlvbiBhY3Rpb25zIHdoZW4gc2VuZGluZyBEcmFnRGF0YSBvdmVyIElQQy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86XSk6CisKKyAgICAg
ICAgRm9yIFdLV2ViVmlldywgYWxsb3cgYWxsIGRyYWcgZGVzdGluYXRpb24gYWN0aW9ucyBleGNl
cHQgZm9yIGxvYWRpbmcgKGkuZS4gZHJvcC10by1uYXZpZ2F0ZSkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBfd2ViX2RyYWdEZXN0
aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpdKToKKworICAgICAgICBGb3IgV0tWaWV3LCBh
bGxvdyBhbGwgdHlwZXMgb2YgZHJhZyBkZXN0aW5hdGlvbiBhY3Rpb25zLgorCisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKToKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRHJh
Z0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgorCiAyMDE3LTAzLTAxICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgLVtXS1dlYlZpZXcgYWRq
dXN0ZWREYXRhSW50ZXJhY3Rpb25JdGVtUHJvdmlkZXJzOl0gd2l0aCBhIFVJIGRlbGVnYXRlIG1l
dGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBhZmM4NTZhNTQz
OWYyZWE2MzQ0ZjRhOWQ0MDA3Y2E3MWE1MGJlZDc1Li4zYWY5N2Y5Yjg3MWQ2MGE2MWNiMTgyOTdl
YjViNDM3ZDdkOTI3N2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApA
QCAtMTI5LDcgKzEyOSw3IEBAIGNsYXNzIEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgZmlu
YWwgOiBwdWJsaWMgRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgewogY2xhc3MgRW1wdHlEcmFnQ2xp
ZW50IGZpbmFsIDogcHVibGljIERyYWdDbGllbnQgewogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFn
RGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBEcmFnRGF0YSYp
IGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3Vy
Y2VBY3Rpb24sIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJikgZmluYWwgeyB9Ci0gICAg
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKGNvbnN0IERyYWdEYXRhJikg
ZmluYWwgeyByZXR1cm4gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsgfQorICAgIERyYWdEZXN0
aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YVJlZikgZmluYWwgeyByZXR1
cm4gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsgfQogICAgIERyYWdTb3VyY2VBY3Rpb24gZHJh
Z1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGZpbmFsIHsgcmV0dXJu
IERyYWdTb3VyY2VBY3Rpb25Ob25lOyB9CiAgICAgdm9pZCBzdGFydERyYWcoRHJhZ0ltYWdlLCBj
b25zdCBJbnRQb2ludCYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIERhdGFU
cmFuc2ZlciYsIEZyYW1lJiwgRHJhZ1NvdXJjZUFjdGlvbikgZmluYWwgeyB9CiAgICAgdm9pZCBk
cmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGllbnQu
aAppbmRleCBiMDIyMDdkOGMzNGZjM2ExMTY4MDRjNWEwNDZkZDU3OTRlZmY2ZGEwLi4xOTYyNGRk
ZWQyNmM4NDAzMzMwMjg5N2Q5ZGFmNmM5YmYwMmUwYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGll
bnQuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJEcmFnQWN0
aW9ucy5oIgorI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiRHJhZ0l0ZW0uaCIKICNp
bmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKQEAgLTMzLDcgKzM0
LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIERhdGFUcmFuc2ZlcjsKLWNs
YXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW1hZ2U7
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9y
bURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNvbnN0IERyYWdE
YXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24o
RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImKSA9IDA7Ci0g
ICAgdmlydHVhbCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0ZvckRyYWcoY29uc3Qg
RHJhZ0RhdGEmKSA9IDA7CisgICAgdmlydHVhbCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9u
TWFza0ZvckRyYWcoRHJhZ0RhdGFSZWYgcGxhdGZvcm1EYXRhKSA9IDA7CiAgICAgdmlydHVhbCBE
cmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9p
bnQmIHJvb3RWaWV3UG9pbnQpID0gMDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFn
KERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29uc3QgSW50UG9p
bnQmIGV2ZW50UG9zLCBjb25zdCBGbG9hdFBvaW50JiBkcmFnSW1hZ2VBbmNob3IsIERhdGFUcmFu
c2ZlciYsIEZyYW1lJiwgRHJhZ1NvdXJjZUFjdGlvbikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAppbmRleCA1OGUxN2ZkZDE0NDg4NjhjYmNjOWQ3YzU1NzMwNmIyNjc2
NWNhYzcxLi5lYmJkODk3ZWNhZDA0MDRmOTQ3OWIzOWNkOGY2ZWFjMDExYWNkZDg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIERyYWdP
cGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdE
YXRhJiBkcmFnRGF0YSkKIHsKICAgICBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG1fcGFnZS5tYWlu
RnJhbWUoKS5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSkpOwogCi0g
ICAgbV9kcmFnRGVzdGluYXRpb25BY3Rpb24gPSBtX2NsaWVudC5hY3Rpb25NYXNrRm9yRHJhZyhk
cmFnRGF0YSk7CisgICAgbV9kcmFnRGVzdGluYXRpb25BY3Rpb24gPSBkcmFnRGF0YS5kcmFnRGVz
dGluYXRpb25BY3Rpb24oKTsKICAgICBpZiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb24gPT0gRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTm9uZSkgewogICAgICAgICBjbGVhckRyYWdDYXJldCgpOyAvLyBG
SVhNRTogV2h5IG5vdCBjYWxsIG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQobnVsbHB0cik/CiAgICAg
ICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRh
LmNwcAppbmRleCBhYjY3YzY2NmRhODEwZTk1N2Q4ZmUzZTk5NjFiZWRkMTgzNDZhMzhhLi5iNDI4
YzM3MzkzZmVjZDRhMWE4ODA1ODBmZWQ2OGViOWJjZTRjNGEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0RhdGEuY3BwCkBAIC0zMiwyMyArMzIsMjMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogI2lmICFQTEFURk9STShDT0NPQSkKLURyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBk
YXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFn
QXBwbGljYXRpb25GbGFncyBmbGFncykKK0RyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBk
YXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGlj
YXRpb25GbGFncyBmbGFncywgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGRlc3RpbmF0aW9uQWN0aW9u
KQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFs
UG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEoZGF0YSkK
ICAgICAsIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2sp
CiAgICAgLCBtX2FwcGxpY2F0aW9uRmxhZ3MoZmxhZ3MpCisgICAgLCBtX2RyYWdEZXN0aW5hdGlv
bkFjdGlvbihkZXN0aW5hdGlvbkFjdGlvbikKIHsgIAogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEo
Y29uc3QgU3RyaW5nJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25N
YXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncykKK0RyYWdEYXRhOjpEcmFnRGF0YShjb25z
dCBTdHJpbmcmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50
JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFn
QXBwbGljYXRpb25GbGFncyBmbGFncywgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGRlc3RpbmF0aW9u
QWN0aW9uKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1f
Z2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEo
MCkKICAgICAsIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1h
c2spCiAgICAgLCBtX2FwcGxpY2F0aW9uRmxhZ3MoZmxhZ3MpCisgICAgLCBtX2RyYWdEZXN0aW5h
dGlvbkFjdGlvbihkZXN0aW5hdGlvbkFjdGlvbikKIHsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdEYXRhLmgKaW5kZXggM2NmMTFlN2RhMDE0OWVmNDc5MDQ3M2Y1ODVkYTc5MDk1MmI3
ODQyNy4uMTk1NzIxYjFmZGEzZWM4OGUyOGZlZjhlMzMyNmM5NjU5NWNmNDIyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC03OCw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICBlbnVt
IEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSB7IERvTm90Q29udmVydEZpbGVuYW1lcywgQ29udmVy
dEZpbGVuYW1lcyB9OwogCiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUgdGhl
IHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0
aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFn
RGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJh
Z0FwcGxpY2F0aW9uTm9uZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgU3Ry
aW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29u
c3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRp
b25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdE
YXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IElu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgPSBEcmFnQXBwbGljYXRpb25Ob25lLCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9ucyA9
IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEo
Y29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3Np
dGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFn
QXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIERyYWdEZXN0aW5hdGlvbkFj
dGlvbiBhY3Rpb25zID0gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55KTsKICAgICAvLyBUaGlzIGNv
bnN0cnVjdG9yIHNob3VsZCB1c2VkIG9ubHkgYnkgV2ViS2l0MiBJUEMgYmVjYXVzZSBEcmFnRGF0
YQogICAgIC8vIGlzIGluaXRpYWxpemVkIGJ5IHRoZSBkZWNvZGVyIGFuZCBub3QgaW4gdGhlIGNv
bnN0cnVjdG9yLgogICAgIERyYWdEYXRhKCkgeyB9CkBAIC0xMDUsNiArMTA1LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgY29udGFpbnNDb2xvcigpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNGaWxl
cygpIGNvbnN0OwogICAgIHVuc2lnbmVkIG51bWJlck9mRmlsZXMoKSBjb25zdDsKKyAgICBEcmFn
RGVzdGluYXRpb25BY3Rpb24gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9kcmFnRGVzdGluYXRpb25BY3Rpb247IH0KICAgICB2b2lkIHNldEZpbGVOYW1lcyhWZWN0b3I8
U3RyaW5nPiYgZmlsZU5hbWVzKSB7IG1fZmlsZU5hbWVzID0gV1RGTW92ZShmaWxlTmFtZXMpOyB9
CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmlsZU5hbWVzOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMjEsNiArMTIyLDcgQEAgcHVi
bGljOgogICAgICAgICBtX3BsYXRmb3JtRHJhZ0RhdGEgPSBkYXRhLm1fcGxhdGZvcm1EcmFnRGF0
YTsKICAgICAgICAgbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sgPSBkYXRhLm1fZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrOwogICAgICAgICBtX2FwcGxpY2F0aW9uRmxhZ3MgPSBkYXRh
Lm1fYXBwbGljYXRpb25GbGFnczsKKyAgICAgICAgbV9kcmFnRGVzdGluYXRpb25BY3Rpb24gPSBk
YXRhLm1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAg
fQogI2VuZGlmCkBAIC0xMzIsNiArMTM0LDcgQEAgcHJpdmF0ZToKICAgICBEcmFnT3BlcmF0aW9u
IG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOwogICAgIERyYWdBcHBsaWNhdGlvbkZsYWdz
IG1fYXBwbGljYXRpb25GbGFnczsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVOYW1lczsKKyAg
ICBEcmFnRGVzdGluYXRpb25BY3Rpb24gbV9kcmFnRGVzdGluYXRpb25BY3Rpb247CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgU3RyaW5nIG1fcGFzdGVib2FyZE5hbWU7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCA5OGQ3YjdmZTE1OGUy
Nzk2ZmUyYzViZDg5NGJiYzc0NTBiYzhiNGUzLi5jZjc4YjRhOTQ5MjBhMmM1NTlmODY2NmQ4MzRl
YmM1OTZmNDdhYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJh
Z0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFj
Lm1tCkBAIC04MywxMyArODMsMTMgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdGlmZlBhc3RlYm9h
cmRUeXBlKCkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJh
Z0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIAotICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9u
TWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MpCitEcmFnRGF0YTo6RHJhZ0RhdGEoRHJh
Z0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywg
RHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBkZXN0aW5h
dGlvbkFjdGlvbikKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAg
LCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdE
YXRhKGRhdGEpCiAgICAgLCBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVy
YXRpb25NYXNrKQogICAgICwgbV9hcHBsaWNhdGlvbkZsYWdzKGZsYWdzKQorICAgICwgbV9kcmFn
RGVzdGluYXRpb25BY3Rpb24oZGVzdGluYXRpb25BY3Rpb24pCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgICwgbV9wYXN0ZWJvYXJkTmFtZShbW21fcGxhdGZvcm1EcmFnRGF0YSBkcmFnZ2luZ1Bhc3Rl
Ym9hcmRdIG5hbWVdKQogI2Vsc2UKQEAgLTk4LDEzICs5OCwxMyBAQCBEcmFnRGF0YTo6RHJhZ0Rh
dGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25z
dCBJbnRQbwogewogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3Rv
cmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLAotICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywg
RHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MpCitEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3Ry
aW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29u
c3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlv
bk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBEcmFnRGVzdGluYXRpb25BY3Rpb24g
ZGVzdGluYXRpb25BY3Rpb24pCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9u
KQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZv
cm1EcmFnRGF0YSgwKQogICAgICwgbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soc291cmNl
T3BlcmF0aW9uTWFzaykKICAgICAsIG1fYXBwbGljYXRpb25GbGFncyhmbGFncykKKyAgICAsIG1f
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKGRlc3RpbmF0aW9uQWN0aW9uKQogICAgICwgbV9wYXN0ZWJv
YXJkTmFtZShkcmFnU3RvcmFnZU5hbWUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjZjFlNDYxNTgyNGMwMTBkZWI4NmZhYWU1
ZDM4N2Q2NTE0ZDJhNWFlLi44YTEyOGJhYTkyOWJhNzdlNGNkYzk3MDI1ZjVhODYxY2JhOTAwMjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTMyOSw3ICszMjksNyBAQAogCQk5Mzk4MTEwNjA4MjRCRjAxMDA4REYwMzggLyogV2ViRnJh
bWVWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFBOEI1MkYwNDI4MkI1OTAwQ0EyRDNBIC8qIFdlYkZyYW1lVmlldy5tbSAqLzsgfTsKIAkJOTM5
ODExMDcwODI0QkYwMTAwOERGMDM4IC8qIFdlYlZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE4QjU3QTA0MjgzNEY3MDBDQTJEM0EgLyogV2Vi
Vmlldy5tbSAqLzsgfTsKIAkJOTM5ODExMDgwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBvbGljeURl
bGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE0NDNGOUIwNDI5MzkyQjAwQ0EyRDNBIC8qIFdlYlBvbGljeURlbGVnYXRlLm1tICovOyB9Owot
CQk5Mzk4MTEwQTA4MjRCRjAxMDA4REYwMzggLyogV2ViRGVmYXVsdFVJRGVsZWdhdGUubSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUUyN0QwMDQ1OENB
NEIwMENBMkQzQSAvKiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tICovOyB9OworCQk5Mzk4MTEwQTA4
MjRCRjAxMDA4REYwMzggLyogV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFMjdEMDA0NThDQTRCMDBDQTJEM0Eg
LyogV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0gKi87IH07CiAJCTkzOTgxMTEyMDgyNEJGMDEwMDhE
RjAzOCAvKiBXZWJOU1VSTEV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJFNkRDMzlBMDRDNjJDNEUwMDREMEVGNiAvKiBXZWJOU1VSTEV4dHJh
cy5tbSAqLzsgfTsKIAkJOTM5ODExMTMwODI0QkYwMTAwOERGMDM4IC8qIFdlYkhpc3RvcnkubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NURBMjYwODA1
MkNDMTg3MDBBOTdCMzEgLyogV2ViSGlzdG9yeS5tbSAqLzsgfTsKIAkJOTM5ODExMTUwODI0QkYw
MTAwOERGMDM4IC8qIFdlYk5TRGF0YUV4dHJhcy5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkVDRDE0MkEwNTY1ODMwQTAwNUJCMDlDIC8qIFdlYk5TRGF0
YUV4dHJhcy5tICovOyB9OwpAQCAtOTY2LDcgKzk2Niw3IEBACiAJCTUxNThGNkVFMTA2RDg2MkEw
MEFGNDU3QyAvKiBXZWJIaXN0b3J5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViSGlzdG9yeURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNUUyN0NDMDQ1OEM4NjUwMENBMkQzQSAvKiBXZWJVSURlbGVnYXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVJRGVsZWdhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
CiAJCTUxNUUyN0NGMDQ1OENBNEIwMENBMkQzQSAvKiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEZWZh
dWx0VUlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKLQkJNTE1RTI3RDAwNDU4Q0E0QjAwQ0EyRDNBIC8qIFdlYkRlZmF1bHRV
SURlbGVnYXRlLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2Jq
YzsgcGF0aCA9IFdlYkRlZmF1bHRVSURlbGVnYXRlLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk1MTVFMjdEMDA0NThDQTRCMDBDQTJE
M0EgLyogV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJ
CTUxNkYyOTZGMDNBNkM0NUEwMENBMkQzQSAvKiBXZWJIaXN0b3J5SXRlbUludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkhpc3Rv
cnlJdGVtSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTUxODVGNjI1MTA3MTJCODAwMDdBQTM5MyAvKiBXZWJOYXZpZ2F0
aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOYXZpZ2F0aW9u
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg1RjYyNzEwNzEyQjk3MDA3
QUEzOTMgLyogV2ViTmF2aWdhdGlvbkRhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJOYXZpZ2F0aW9uRGF0YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE5NTAsNyArMTk1MCw3IEBACiAJCQkJNTE1MkZBREYwMzNGQzUwNDAwQ0EyQUNE
IC8qIFdlYkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5oICovLAogCQkJCTUxNTJGQUUwMDMzRkM1MDQw
MENBMkFDRCAvKiBXZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUubSAqLywKIAkJCQk1MTVFMjdDRjA0
NThDQTRCMDBDQTJEM0EgLyogV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCAqLywKLQkJCQk1MTVFMjdE
MDA0NThDQTRCMDBDQTJEM0EgLyogV2ViRGVmYXVsdFVJRGVsZWdhdGUubSAqLywKKwkJCQk1MTVF
MjdEMDA0NThDQTRCMDBDQTJEM0EgLyogV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0gKi8sCiAJCQkp
OwogCQkJbmFtZSA9ICJEZWZhdWx0IERlbGVnYXRlcyI7CiAJCQlwYXRoID0gbWFjL0RlZmF1bHRE
ZWxlZ2F0ZXM7CkBAIC0zNTc4LDcgKzM1NzgsNyBAQAogCQkJCUExMEMxRDFCMTgyMDJGOUMwMDM2
ODgzQSAvKiBXZWJEZWZhdWx0RnJhbWVMb2FkRGVsZWdhdGUubSBpbiBTb3VyY2VzICovLAogCQkJ
CTkzOTgxMEYwMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUubSBp
biBTb3VyY2VzICovLAogCQkJCUExMEMxRDFEMTgyMDJGOUMwMDM2ODgzQSAvKiBXZWJEZWZhdWx0
UmVzb3VyY2VMb2FkRGVsZWdhdGUubSBpbiBTb3VyY2VzICovLAotCQkJCTkzOTgxMTBBMDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tIGluIFNvdXJjZXMgKi8sCisJCQkJ
OTM5ODExMEEwODI0QkYwMTAwOERGMDM4IC8qIFdlYkRlZmF1bHRVSURlbGVnYXRlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTEwQzFEMUYxODIwMkY5QzAwMzY4ODNBIC8qIFdlYkRlZmF1bHRVSUtp
dERlbGVnYXRlLm0gaW4gU291cmNlcyAqLywKIAkJCQlCQzU0MkM0MzBGRDc3NjZGMDBEOEFCNUQg
LyogV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1OThBRDkyMjEyMDFDRjEwMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb24ubW0gaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RlZmF1bHREZWxlZ2F0
ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RlZmF1bHREZWxl
Z2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggM2U3OTQyYmUzOTMyZTBlZGZhMmU3NTEzNDMyMDk4ZDEwNWE5NDhkMy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9EZWZh
dWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm0KKysrIC9kZXYvbnVsbApAQCAtMSwy
NzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2ltcG9ydCAiV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCIKLQotI2ltcG9ydCAiV2ViVHlw
ZXNJbnRlcm5hbC5oIgotI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIKLSNpbXBvcnQg
IldlYlZpZXcuaCIKLQotI2lmICFQTEFURk9STShJT1MpCi0jaW1wb3J0ICJXZWJKYXZhU2NyaXB0
VGV4dElucHV0UGFuZWwuaCIKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oSU9TKQotI2ltcG9ydCA8
V2ViQ29yZS9XQUtXaW5kb3cuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV0tWaWV3UHJpdmF0ZS5oPgot
I2VuZGlmCi0KLSNpZiAhUExBVEZPUk0oSU9TKQotQGludGVyZmFjZSBOU0FwcGxpY2F0aW9uIChE
ZWNsYXJhdGlvblN0b2xlbkZyb21BcHBLaXQpCi0tICh2b2lkKV9jeWNsZVdpbmRvd3NSZXZlcnNl
ZDooQk9PTClyZXZlcnNlZDsKLUBlbmQKLSNlbmRpZgotCi1AaW1wbGVtZW50YXRpb24gV2ViRGVm
YXVsdFVJRGVsZWdhdGUKLQotc3RhdGljIFdlYkRlZmF1bHRVSURlbGVnYXRlICpzaGFyZWREZWxl
Z2F0ZSA9IG5pbDsKLQotLy8gUmV0dXJuIGEgb2JqZWN0IHdpdGggdmFuaWxsYSBpbXBsZW1lbnRh
dGlvbnMgb2YgdGhlIHByb3RvY29sJ3MgbWV0aG9kcwotLy8gTm90ZSB0aGlzIGZlYXR1cmUgcmVs
aWVzIG9uIG91ciBkZWZhdWx0IGRlbGVnYXRlIGJlaW5nIHN0YXRlbGVzcy4gIFRoaXMKLS8vIGlz
IHByb2JhYmx5IGFuIGludmFsaWQgYXNzdW1wdGlvbiBmb3IgdGhlIFdlYlVJRGVsZWdhdGUuCi0v
LyBJZiB3ZSBhZGQgYW55IHJlYWwgZnVuY3Rpb25hbGl0eSB0byB0aGlzIGRlZmF1bHQgZGVsZWdh
dGUgd2UgcHJvYmFibHkKLS8vIHdvbid0IGJlIGFibGUgdG8gdXNlIGEgc2luZ2xldG9uLgotKyAo
V2ViRGVmYXVsdFVJRGVsZWdhdGUgKilzaGFyZWRVSURlbGVnYXRlCi17Ci0gICAgaWYgKCFzaGFy
ZWREZWxlZ2F0ZSkgewotICAgICAgICBzaGFyZWREZWxlZ2F0ZSA9IFtbV2ViRGVmYXVsdFVJRGVs
ZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIH0KLSAgICByZXR1cm4gc2hhcmVkRGVsZWdhdGU7Ci19
Ci0KLS0gKFdlYlZpZXcgKil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IGNyZWF0ZVdlYlZpZXdXaXRo
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3aW5kb3dGZWF0dXJlczooTlNEaWN0aW9u
YXJ5ICopZmVhdHVyZXMKLXsKLSAgICAvLyBJZiB0aGUgbmV3IEFQSSBtZXRob2QgZG9lc24ndCBl
eGlzdCwgZmFsbGJhY2sgdG8gdGhlIG9sZCB2ZXJzaW9uIG9mIGNyZWF0ZVdlYlZpZXdXaXRoUmVx
dWVzdAotICAgIC8vIGZvciBiYWNrd2FyZHMgY29tcGF0YWJpbGl0eQotICAgIGlmICghW1t3diBV
SURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2Vi
Vmlld1dpdGhSZXF1ZXN0OndpbmRvd0ZlYXR1cmVzOildICYmIFtbd3YgVUlEZWxlZ2F0ZV0gcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVz
dDopXSkKLSAgICAgICAgcmV0dXJuIFtbd3YgVUlEZWxlZ2F0ZV0gd2ViVmlldzp3diBjcmVhdGVX
ZWJWaWV3V2l0aFJlcXVlc3Q6cmVxdWVzdF07Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotI2lmIFBM
QVRGT1JNKElPUykKLS0gKFdlYlZpZXcgKil3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGNyZWF0
ZVdlYlZpZXdXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB1c2VyR2VzdHVyZToo
Qk9PTCl1c2VyR2VzdHVyZQotewotICAgIHJldHVybiBuaWw7Ci19Ci0jZW5kaWYKLQotLSAodm9p
ZCl3ZWJWaWV3U2hvdzogKFdlYlZpZXcgKil3dgotewotfQotCi0tICh2b2lkKXdlYlZpZXdDbG9z
ZTogKFdlYlZpZXcgKil3dgotewotI2lmICFQTEFURk9STShJT1MpCi0gICAgW1t3diB3aW5kb3dd
IGNsb3NlXTsKLSNlbmRpZgotfQotCi0tICh2b2lkKXdlYlZpZXdGb2N1czogKFdlYlZpZXcgKil3
dgotewotI2lmICFQTEFURk9STShJT1MpCi0gICAgW1t3diB3aW5kb3ddIG1ha2VLZXlBbmRPcmRl
ckZyb250Ond2XTsKLSNlbmRpZgotfQotCi0tICh2b2lkKXdlYlZpZXdVbmZvY3VzOiAoV2ViVmll
dyAqKXd2Ci17Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBpZiAoW1t3diB3aW5kb3ddIGlzS2V5
V2luZG93XSB8fCBbW1t3diB3aW5kb3ddIGF0dGFjaGVkU2hlZXRdIGlzS2V5V2luZG93XSkgewot
ICAgICAgICBbTlNBcHAgX2N5Y2xlV2luZG93c1JldmVyc2VkOkZBTFNFXTsKLSAgICB9Ci0jZW5k
aWYKLX0KLQotLSAoTlNSZXNwb25kZXIgKil3ZWJWaWV3Rmlyc3RSZXNwb25kZXI6IChXZWJWaWV3
ICopd3YKLXsKLSAgICByZXR1cm4gW1t3diB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXTsKLX0KLQot
LSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IG1ha2VGaXJzdFJlc3BvbmRlcjooTlNSZXNw
b25kZXIgKilyZXNwb25kZXIKLXsKLSAgICBbW3d2IHdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVy
OnJlc3BvbmRlcl07Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzogKFdlYlZpZXcgKil3diBzZXRTdGF0
dXNUZXh0OihOU1N0cmluZyAqKXRleHQKLXsKLX0KLQotLSAoTlNTdHJpbmcgKil3ZWJWaWV3U3Rh
dHVzVGV4dDogKFdlYlZpZXcgKil3dgotewotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKHZvaWQp
d2ViVmlldzogKFdlYlZpZXcgKil3diBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDooTlNEaWN0aW9u
YXJ5ICopZWxlbWVudEluZm9ybWF0aW9uIG1vZGlmaWVyRmxhZ3M6KE5TVUludGVnZXIpbW9kaWZp
ZXJGbGFncwotewotfQotCi0tIChCT09MKXdlYlZpZXdBcmVUb29sYmFyc1Zpc2libGU6IChXZWJW
aWV3ICopd3YKLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzogKFdlYlZp
ZXcgKil3diBzZXRUb29sYmFyc1Zpc2libGU6KEJPT0wpdmlzaWJsZQotewotfQotCi0tIChCT09M
KXdlYlZpZXdJc1N0YXR1c0JhclZpc2libGU6IChXZWJWaWV3ICopd3YKLXsKLSAgICByZXR1cm4g
Tk87Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzogKFdlYlZpZXcgKil3diBzZXRTdGF0dXNCYXJWaXNp
YmxlOihCT09MKXZpc2libGUKLXsKLX0KLQotLSAoQk9PTCl3ZWJWaWV3SXNSZXNpemFibGU6IChX
ZWJWaWV3ICopd3YKLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIE5POwotI2Vsc2UK
LSAgICByZXR1cm4gW1t3diB3aW5kb3ddIHNob3dzUmVzaXplSW5kaWNhdG9yXTsKLSNlbmRpZgot
fQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0UmVzaXphYmxlOihCT09MKXJl
c2l6YWJsZQotewotI2lmICFQTEFURk9STShJT1MpCi0gICAgLy8gRklYTUU6IFRoaXMgZG9lc24n
dCBhY3R1YWxseSBjaGFuZ2UgdGhlIHJlc2l6YWJpbGl0eSBvZiB0aGUgd2luZG93LAotICAgIC8v
IG9ubHkgdmlzaWJpbGl0eSBvZiB0aGUgaW5kaWNhdG9yLgotICAgIFtbd3Ygd2luZG93XSBzZXRT
aG93c1Jlc2l6ZUluZGljYXRvcjpyZXNpemFibGVdOwotI2VuZGlmCi19Ci0KLS0gKHZvaWQpd2Vi
VmlldzogKFdlYlZpZXcgKil3diBzZXRGcmFtZTooTlNSZWN0KWZyYW1lCi17Ci0jaWYgIVBMQVRG
T1JNKElPUykKLSAgICBbW3d2IHdpbmRvd10gc2V0RnJhbWU6ZnJhbWUgZGlzcGxheTpZRVNdOwot
I2VuZGlmCi19Ci0KLS0gKE5TUmVjdCl3ZWJWaWV3RnJhbWU6IChXZWJWaWV3ICopd3YKLXsKLSAg
ICBOU1dpbmRvdyAqd2luZG93ID0gW3d2IHdpbmRvd107Ci0gICAgcmV0dXJuIHdpbmRvdyA9PSBu
aWwgPyBOU1plcm9SZWN0IDogW3dpbmRvdyBmcmFtZV07Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzog
KFdlYlZpZXcgKil3diBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmlu
ZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQotewotICAgIC8v
IEZJWE1FOiBXZSB3YW50IGEgZGVmYXVsdCBoZXJlLCBidXQgdGhhdCB3b3VsZCBhZGQgbG9jYWxp
emVkIHN0cmluZ3MuCi19Ci0KLS0gKEJPT0wpd2ViVmlldzogKFdlYlZpZXcgKil3diBydW5KYXZh
U2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0
ZWRCeUZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCi17Ci0gICAgLy8gRklYTUU6IFdlIHdhbnQgYSBk
ZWZhdWx0IGhlcmUsIGJ1dCB0aGF0IHdvdWxkIGFkZCBsb2NhbGl6ZWQgc3RyaW5ncy4KLSAgICBy
ZXR1cm4gTk87Ci19Ci0KLS0gKE5TU3RyaW5nICopd2ViVmlldzogKFdlYlZpZXcgKil3diBydW5K
YXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OihOU1N0cmluZyAqKXByb21wdCBkZWZh
dWx0VGV4dDooTlNTdHJpbmcgKilkZWZhdWx0VGV4dCBpbml0aWF0ZWRCeUZyYW1lOihXZWJGcmFt
ZSAqKWZyYW1lCi17Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBXZWJKYXZhU2NyaXB0VGV4dElu
cHV0UGFuZWwgKnBhbmVsID0gW1tXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwgYWxsb2NdIGlu
aXRXaXRoUHJvbXB0OnByb21wdCB0ZXh0OmRlZmF1bHRUZXh0XTsKLSAgICBbcGFuZWwgc2hvd1dp
bmRvdzpuaWxdOwotICAgIE5TU3RyaW5nICpyZXN1bHQ7Ci0gICAgaWYgKFtOU0FwcCBydW5Nb2Rh
bEZvcldpbmRvdzpbcGFuZWwgd2luZG93XV0pIHsKLSAgICAgICAgcmVzdWx0ID0gW3BhbmVsIHRl
eHRdOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlc3VsdCA9IG5pbDsKLSAgICB9Ci0gICAgW1tw
YW5lbCB3aW5kb3ddIGNsb3NlXTsKLSAgICBbcGFuZWwgcmVsZWFzZV07Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLSNlbHNlCi0gICAgcmV0dXJuIG5pbDsKLSNlbmRpZgotfQotCi0tICh2b2lkKXdlYlZp
ZXc6IChXZWJWaWV3ICopd3YgcnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0
ZW5lcjooaWQ8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+KXJlc3VsdExpc3RlbmVyCi17Ci0g
ICAgLy8gRklYTUU6IFdlIHdhbnQgYSBkZWZhdWx0IGhlcmUsIGJ1dCB0aGF0IHdvdWxkIGFkZCBs
b2NhbGl6ZWQgc3RyaW5ncy4KLX0KLQotLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVy
IHByaW50RnJhbWVWaWV3OihXZWJGcmFtZVZpZXcgKilmcmFtZVZpZXcKLXsKLX0KLQotCi0jaWYg
IVBMQVRGT1JNKElPUykKLS0gKE5TVUludGVnZXIpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcg
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzooaWQgPE5TRHJhZ2dpbmdJ
bmZvPilkcmFnZ2luZ0luZm8KLXsKLSAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
QW55OwotfQotCi0tICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IHdpbGxQZXJmb3Jt
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOihXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24pYWN0aW9uIGZv
ckRyYWdnaW5nSW5mbzooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KLXsKLX0KLQot
LSAoTlNVSW50ZWdlcil3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkcmFnU291cmNlQWN0aW9u
TWFza0ZvclBvaW50OihOU1BvaW50KXBvaW50Ci17Ci0gICAgcmV0dXJuIFdlYkRyYWdTb3VyY2VB
Y3Rpb25Bbnk7Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgd2lsbFBl
cmZvcm1EcmFnU291cmNlQWN0aW9uOihXZWJEcmFnU291cmNlQWN0aW9uKWFjdGlvbiBmcm9tUG9p
bnQ6KE5TUG9pbnQpcG9pbnQgd2l0aFBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9h
cmQKLXsKLX0KLQotLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHdpbGxQb3B1cE1l
bnU6KE5TTWVudSAqKW1lbnUKLXsKLX0KLSNlbmRpZgotCi0tICh2b2lkKXdlYlZpZXc6KFdlYlZp
ZXcgKilzZW5kZXIgZGlkRHJhd1JlY3Q6KE5TUmVjdClyZWN0Ci17Ci19Ci0KLS0gKHZvaWQpd2Vi
VmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRTY3JvbGxEb2N1bWVudEluRnJhbWVWaWV3OihXZWJG
cmFtZVZpZXcgKilmcmFtZVZpZXcKLXsKLX0KLQotLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmln
aW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIHRvdGFsU3BhY2VOZWVkZWQ6KE5TVUludGVn
ZXIpdG90YWxTcGFjZU5lZWRlZAotewotfQotCi0tIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKilz
ZW5kZXIgc2hvdWxkUmVwbGFjZVVwbG9hZEZpbGU6KE5TU3RyaW5nICopcGF0aCB1c2luZ0dlbmVy
YXRlZEZpbGVuYW1lOihOU1N0cmluZyAqKilmaWxlbmFtZQotewotICAgIHJldHVybiBOTzsKLX0K
LQotLSAoTlNTdHJpbmcgKil3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGdlbmVyYXRlUmVwbGFj
ZW1lbnRGaWxlOihOU1N0cmluZyAqKXBhdGgKLXsKLSAgICByZXR1cm4gbmlsOwotfQotCi0jaWYg
UExBVEZPUk0oSU9TKQotLSAodm9pZCl3ZWJWaWV3U3VwcG9ydGVkT3JpZW50YXRpb25zVXBkYXRl
ZDooV2ViVmlldyAqKXNlbmRlcgotewotfQotI2VuZGlmCi0KLUBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRl
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYyZTJhODM5NTA3NzM3Nzc1MGYwNmU1NWFiYWQ2YjY5MGU4ODZmY2MK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dl
YkRlZmF1bHRVSURlbGVnYXRlLm1tCkBAIC0wLDAgKzEsMjc1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJEZWZhdWx0VUlE
ZWxlZ2F0ZS5oIgorCisjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCisjaW1wb3J0ICJXZWJV
SURlbGVnYXRlUHJpdmF0ZS5oIgorI2ltcG9ydCAiV2ViVmlldy5oIgorCisjaWYgIVBMQVRGT1JN
KElPUykKKyNpbXBvcnQgIldlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5oIgorI2ltcG9ydCAi
V2ViS2l0VmVyc2lvbkNoZWNrcy5oIgorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1MpCisjaW1w
b3J0IDxXZWJDb3JlL1dBS1dpbmRvdy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XS1ZpZXdQcml2YXRl
Lmg+CisjZW5kaWYKKworI2lmICFQTEFURk9STShJT1MpCitAaW50ZXJmYWNlIE5TQXBwbGljYXRp
b24gKERlY2xhcmF0aW9uU3RvbGVuRnJvbUFwcEtpdCkKKy0gKHZvaWQpX2N5Y2xlV2luZG93c1Jl
dmVyc2VkOihCT09MKXJldmVyc2VkOworQGVuZAorI2VuZGlmCisKK0BpbXBsZW1lbnRhdGlvbiBX
ZWJEZWZhdWx0VUlEZWxlZ2F0ZQorCitzdGF0aWMgV2ViRGVmYXVsdFVJRGVsZWdhdGUgKnNoYXJl
ZERlbGVnYXRlID0gbmlsOworCisvLyBSZXR1cm4gYSBvYmplY3Qgd2l0aCB2YW5pbGxhIGltcGxl
bWVudGF0aW9ucyBvZiB0aGUgcHJvdG9jb2wncyBtZXRob2RzCisvLyBOb3RlIHRoaXMgZmVhdHVy
ZSByZWxpZXMgb24gb3VyIGRlZmF1bHQgZGVsZWdhdGUgYmVpbmcgc3RhdGVsZXNzLiBUaGlzCisv
LyBpcyBwcm9iYWJseSBhbiBpbnZhbGlkIGFzc3VtcHRpb24gZm9yIHRoZSBXZWJVSURlbGVnYXRl
LgorLy8gSWYgd2UgYWRkIGFueSByZWFsIGZ1bmN0aW9uYWxpdHkgdG8gdGhpcyBkZWZhdWx0IGRl
bGVnYXRlIHdlIHByb2JhYmx5CisvLyB3b24ndCBiZSBhYmxlIHRvIHVzZSBhIHNpbmdsZXRvbi4K
KysgKFdlYkRlZmF1bHRVSURlbGVnYXRlICopc2hhcmVkVUlEZWxlZ2F0ZQoreworICAgIGlmICgh
c2hhcmVkRGVsZWdhdGUpCisgICAgICAgIHNoYXJlZERlbGVnYXRlID0gW1tXZWJEZWZhdWx0VUlE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF07CisgICAgcmV0dXJuIHNoYXJlZERlbGVnYXRlOworfQorCist
IChXZWJWaWV3ICopd2ViVmlldzogKFdlYlZpZXcgKil3diBjcmVhdGVXZWJWaWV3V2l0aFJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2luZG93RmVhdHVyZXM6KE5TRGljdGlvbmFyeSAq
KWZlYXR1cmVzCit7CisgICAgLy8gSWYgdGhlIG5ldyBBUEkgbWV0aG9kIGRvZXNuJ3QgZXhpc3Qs
IGZhbGxiYWNrIHRvIHRoZSBvbGQgdmVyc2lvbiBvZiBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3QK
KyAgICAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdGFiaWxpdHkKKyAgICBpZiAoIVtbd3YgVUlEZWxl
Z2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdX
aXRoUmVxdWVzdDp3aW5kb3dGZWF0dXJlczopXSAmJiBbW3d2IFVJRGVsZWdhdGVdIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6KV0p
CisgICAgICAgIHJldHVybiBbW3d2IFVJRGVsZWdhdGVdIHdlYlZpZXc6d3YgY3JlYXRlV2ViVmll
d1dpdGhSZXF1ZXN0OnJlcXVlc3RdOworICAgIHJldHVybiBuaWw7Cit9CisKKyNpZiBQTEFURk9S
TShJT1MpCistIChXZWJWaWV3ICopd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBjcmVhdGVXZWJW
aWV3V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgdXNlckdlc3R1cmU6KEJPT0wp
dXNlckdlc3R1cmUKK3sKKyAgICByZXR1cm4gbmlsOworfQorI2VuZGlmCisKKy0gKHZvaWQpd2Vi
Vmlld1Nob3c6IChXZWJWaWV3ICopd3YKK3sKK30KKworLSAodm9pZCl3ZWJWaWV3Q2xvc2U6IChX
ZWJWaWV3ICopd3YKK3sKKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIFtbd3Ygd2luZG93XSBjbG9z
ZV07CisjZW5kaWYKK30KKworLSAodm9pZCl3ZWJWaWV3Rm9jdXM6IChXZWJWaWV3ICopd3YKK3sK
KyNpZiAhUExBVEZPUk0oSU9TKQorICAgIFtbd3Ygd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9u
dDp3dl07CisjZW5kaWYKK30KKworLSAodm9pZCl3ZWJWaWV3VW5mb2N1czogKFdlYlZpZXcgKil3
dgoreworI2lmICFQTEFURk9STShJT1MpCisgICAgaWYgKFtbd3Ygd2luZG93XSBpc0tleVdpbmRv
d10gfHwgW1tbd3Ygd2luZG93XSBhdHRhY2hlZFNoZWV0XSBpc0tleVdpbmRvd10pCisgICAgICAg
IFtOU0FwcCBfY3ljbGVXaW5kb3dzUmV2ZXJzZWQ6RkFMU0VdOworI2VuZGlmCit9CisKKy0gKE5T
UmVzcG9uZGVyICopd2ViVmlld0ZpcnN0UmVzcG9uZGVyOiAoV2ViVmlldyAqKXd2Cit7CisgICAg
cmV0dXJuIFtbd3Ygd2luZG93XSBmaXJzdFJlc3BvbmRlcl07Cit9CisKKy0gKHZvaWQpd2ViVmll
dzogKFdlYlZpZXcgKil3diBtYWtlRmlyc3RSZXNwb25kZXI6KE5TUmVzcG9uZGVyICopcmVzcG9u
ZGVyCit7CisgICAgW1t3diB3aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpyZXNwb25kZXJdOwor
fQorCistICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0U3RhdHVzVGV4dDooTlNTdHJp
bmcgKil0ZXh0Cit7Cit9CisKKy0gKE5TU3RyaW5nICopd2ViVmlld1N0YXR1c1RleHQ6IChXZWJW
aWV3ICopd3YKK3sKKyAgICByZXR1cm4gbmlsOworfQorCistICh2b2lkKXdlYlZpZXc6IChXZWJW
aWV3ICopd3YgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnRJ
bmZvcm1hdGlvbiBtb2RpZmllckZsYWdzOihOU1VJbnRlZ2VyKW1vZGlmaWVyRmxhZ3MKK3sKK30K
KworLSAoQk9PTCl3ZWJWaWV3QXJlVG9vbGJhcnNWaXNpYmxlOiAoV2ViVmlldyAqKXd2Cit7Cisg
ICAgcmV0dXJuIE5POworfQorCistICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0VG9v
bGJhcnNWaXNpYmxlOihCT09MKXZpc2libGUKK3sKK30KKworLSAoQk9PTCl3ZWJWaWV3SXNTdGF0
dXNCYXJWaXNpYmxlOiAoV2ViVmlldyAqKXd2Cit7CisgICAgcmV0dXJuIE5POworfQorCistICh2
b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0U3RhdHVzQmFyVmlzaWJsZTooQk9PTCl2aXNp
YmxlCit7Cit9CisKKy0gKEJPT0wpd2ViVmlld0lzUmVzaXphYmxlOiAoV2ViVmlldyAqKXd2Cit7
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiBOTzsKKyNlbHNlCisgICAgcmV0dXJuIFtb
d3Ygd2luZG93XSBzaG93c1Jlc2l6ZUluZGljYXRvcl07CisjZW5kaWYKK30KKworLSAodm9pZCl3
ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHNldFJlc2l6YWJsZTooQk9PTClyZXNpemFibGUKK3sKKyNp
ZiAhUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgY2hh
bmdlIHRoZSByZXNpemFiaWxpdHkgb2YgdGhlIHdpbmRvdywKKyAgICAvLyBvbmx5IHZpc2liaWxp
dHkgb2YgdGhlIGluZGljYXRvci4KKyAgICBbW3d2IHdpbmRvd10gc2V0U2hvd3NSZXNpemVJbmRp
Y2F0b3I6cmVzaXphYmxlXTsKKyNlbmRpZgorfQorCistICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3
ICopd3Ygc2V0RnJhbWU6KE5TUmVjdClmcmFtZQoreworI2lmICFQTEFURk9STShJT1MpCisgICAg
W1t3diB3aW5kb3ddIHNldEZyYW1lOmZyYW1lIGRpc3BsYXk6WUVTXTsKKyNlbmRpZgorfQorCist
IChOU1JlY3Qpd2ViVmlld0ZyYW1lOiAoV2ViVmlldyAqKXd2Cit7CisgICAgTlNXaW5kb3cgKndp
bmRvdyA9IFt3diB3aW5kb3ddOworICAgIHJldHVybiB3aW5kb3cgPT0gbmlsID8gTlNaZXJvUmVj
dCA6IFt3aW5kb3cgZnJhbWVdOworfQorCistICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Yg
cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGlu
aXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKK3sKKyAgICAvLyBGSVhNRTogV2Ugd2Fu
dCBhIGRlZmF1bHQgaGVyZSwgYnV0IHRoYXQgd291bGQgYWRkIGxvY2FsaXplZCBzdHJpbmdzLgor
fQorCistIChCT09MKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdENvbmZpcm1Q
YW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV2Vi
RnJhbWUgKilmcmFtZQoreworICAgIC8vIEZJWE1FOiBXZSB3YW50IGEgZGVmYXVsdCBoZXJlLCBi
dXQgdGhhdCB3b3VsZCBhZGQgbG9jYWxpemVkIHN0cmluZ3MuCisgICAgcmV0dXJuIE5POworfQor
CistIChOU1N0cmluZyAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdFRleHRJ
bnB1dFBhbmVsV2l0aFByb21wdDooTlNTdHJpbmcgKilwcm9tcHQgZGVmYXVsdFRleHQ6KE5TU3Ry
aW5nICopZGVmYXVsdFRleHQgaW5pdGlhdGVkQnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQorewor
I2lmICFQTEFURk9STShJT1MpCisgICAgV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsICpwYW5l
bCA9IFtbV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsIGFsbG9jXSBpbml0V2l0aFByb21wdDpw
cm9tcHQgdGV4dDpkZWZhdWx0VGV4dF07CisgICAgW3BhbmVsIHNob3dXaW5kb3c6bmlsXTsKKyAg
ICBOU1N0cmluZyAqcmVzdWx0OworICAgIGlmIChbTlNBcHAgcnVuTW9kYWxGb3JXaW5kb3c6W3Bh
bmVsIHdpbmRvd11dKQorICAgICAgICByZXN1bHQgPSBbcGFuZWwgdGV4dF07CisgICAgZWxzZQor
ICAgICAgICByZXN1bHQgPSBuaWw7CisgICAgW1twYW5lbCB3aW5kb3ddIGNsb3NlXTsKKyAgICBb
cGFuZWwgcmVsZWFzZV07CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNlCisgICAgcmV0dXJuIG5p
bDsKKyNlbmRpZgorfQorCistICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuT3BlblBh
bmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjooaWQ8V2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXI+KXJlc3VsdExpc3RlbmVyCit7CisgICAgLy8gRklYTUU6IFdlIHdhbnQgYSBkZWZh
dWx0IGhlcmUsIGJ1dCB0aGF0IHdvdWxkIGFkZCBsb2NhbGl6ZWQgc3RyaW5ncy4KK30KKworLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHByaW50RnJhbWVWaWV3OihXZWJGcmFtZVZp
ZXcgKilmcmFtZVZpZXcKK3sKK30KKworCisjaWYgIVBMQVRGT1JNKElPUykKKy0gKE5TVUludGVn
ZXIpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0Zv
ckRyYWdnaW5nSW5mbzooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KK3sKKyAgICBp
ZiAoIWxpbmtlZE9uT3JBZnRlcihTREtWZXJzaW9uOjpGaXJzdFdpdGhEcm9wVG9OYXZpZ2F0ZURp
c2FsbG93ZWRCeURlZmF1bHQpKQorICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uQW55OworCisgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSAmIH5XZWJE
cmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkOworfQorCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcg
Kil3ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOihXZWJEcmFnRGVzdGlu
YXRpb25BY3Rpb24pYWN0aW9uIGZvckRyYWdnaW5nSW5mbzooaWQgPE5TRHJhZ2dpbmdJbmZvPilk
cmFnZ2luZ0luZm8KK3sKK30KKworLSAoTlNVSW50ZWdlcil3ZWJWaWV3OihXZWJWaWV3ICopd2Vi
VmlldyBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50OihOU1BvaW50KXBvaW50Cit7CisgICAg
cmV0dXJuIFdlYkRyYWdTb3VyY2VBY3Rpb25Bbnk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXdlYlZpZXcgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uOihXZWJEcmFnU291cmNl
QWN0aW9uKWFjdGlvbiBmcm9tUG9pbnQ6KE5TUG9pbnQpcG9pbnQgd2l0aFBhc3RlYm9hcmQ6KE5T
UGFzdGVib2FyZCAqKXBhc3RlYm9hcmQKK3sKK30KKworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIHdpbGxQb3B1cE1lbnU6KE5TTWVudSAqKW1lbnUKK3sKK30KKyNlbmRpZgorCist
ICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRHJhd1JlY3Q6KE5TUmVjdClyZWN0
Cit7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRTY3JvbGxEb2N1
bWVudEluRnJhbWVWaWV3OihXZWJGcmFtZVZpZXcgKilmcmFtZVZpZXcKK3sKK30KKworLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhRm9yU2VjdXJpdHlPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIHRvdGFs
U3BhY2VOZWVkZWQ6KE5TVUludGVnZXIpdG90YWxTcGFjZU5lZWRlZAoreworfQorCistIChCT09M
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgc2hvdWxkUmVwbGFjZVVwbG9hZEZpbGU6KE5TU3Ry
aW5nICopcGF0aCB1c2luZ0dlbmVyYXRlZEZpbGVuYW1lOihOU1N0cmluZyAqKilmaWxlbmFtZQor
eworICAgIHJldHVybiBOTzsKK30KKworLSAoTlNTdHJpbmcgKil3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlOihOU1N0cmluZyAqKXBhdGgKK3sKKyAgICBy
ZXR1cm4gbmlsOworfQorCisjaWYgUExBVEZPUk0oSU9TKQorLSAodm9pZCl3ZWJWaWV3U3VwcG9y
dGVkT3JpZW50YXRpb25zVXBkYXRlZDooV2ViVmlldyAqKXNlbmRlcgoreworfQorI2VuZGlmCisK
K0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNo
ZWNrcy5oIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgKaW5k
ZXggMGY2MDZlMjg0NDA1MmI4MWE4NTNiYzBkYzZlMTQ0ZmY4MjdkOTliMy4uMDAzMmNhOTJkYTZl
MDkwZjc4Mjk4NTZjNDhkZDQzYjA1NmJhZDdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlz
Yy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgKQEAgLTgzLDYgKzgzLDggQEAKIGVudW0gY2xhc3MgU0RL
VmVyc2lvbiA6IHVpbnQzMl90IHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgRmlyc3RUb0V4Y2x1
ZGVMb2NhbFN0b3JhZ2VGcm9tQmFja3VwID0gRFlMRF9JT1NfVkVSU0lPTl8xMV8wLAorI2Vsc2UK
KyAgICBGaXJzdFdpdGhEcm9wVG9OYXZpZ2F0ZURpc2FsbG93ZWRCeURlZmF1bHQgPSBEWUxEX01B
Q09TWF9WRVJTSU9OXzEwXzEzCiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCBmYTQ0YTdmNjVlODM5NzQxMDgy
YjI1ZjI4YzE2YjRjMjhhOWVlOGEyLi5kOGVlZDU5MTdhOWRmNzkxZmMxZWU0NTk4MjgxN2U0NDlk
MWQ5ZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2lsbFBlcmZv
cm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBj
b25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbFBlcmZvcm1E
cmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJikgb3ZlcnJpZGU7Ci0gICAgV2ViQ29y
ZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKGNvbnN0IFdlYkNvcmU6
OkRyYWdEYXRhJikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
IGFjdGlvbk1hc2tGb3JEcmFnKERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0YSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnREcmFn
KFdlYkNvcmU6OkRyYWdJbWFnZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRyYWdQb3MsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBldmVudFBvcywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6RHJh
Z1NvdXJjZUFjdGlvbikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQppbmRleCBlYzRkNjgzZmFkZjJmNmU2YmNkYzU0NDFl
ODczNmU5YjI1NzhiN2E4Li42ZTBiMzE0OTNmZjMwMjFiZDI5NzIxNjFlOWJkNmIwN2ZlZDhiNzE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQubW0KQEAgLTc5LDkgKzc5LDkgQEAgc3RhdGljIFdlYkhUTUxWaWV3ICpnZXRUb3BIVE1MVmll
dyhGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIChXZWJIVE1MVmlldyopW1traXQoJmZyYW1lLT5w
YWdlKCktPm1haW5GcmFtZSgpKSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CiB9CiAKLVdlYkNv
cmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJh
Zyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYgZHJhZ0RhdGEpCitXZWJDb3JlOjpEcmFnRGVzdGlu
YXRpb25BY3Rpb24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoRHJhZ0RhdGFSZWYg
cGxhdGZvcm1EYXRhKQogewotICAgIHJldHVybiAoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKVtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBk
cmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdEYXRhLnBsYXRmb3Jt
RGF0YSgpXTsKKyAgICByZXR1cm4gKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbilbW21f
d2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpwbGF0Zm9ybURhdGFdOwogfQogCiB2b2lk
IFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6
OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiBk
cmFnRGF0YSkKQEAgLTE4MSw3ICsxODEsNyBAQCBib29sIFdlYkRyYWdDbGllbnQ6OnVzZUxlZ2Fj
eURyYWdDbGllbnQoKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KLVdlYkNvcmU6OkRyYWdEZXN0
aW5hdGlvbkFjdGlvbiBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBXZWJD
b3JlOjpEcmFnRGF0YSYpCitXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gV2ViRHJhZ0Ns
aWVudDo6YWN0aW9uTWFza0ZvckRyYWcoRHJhZ0RhdGFSZWYpCiB7CiAgICAgcmV0dXJuIERyYWdE
ZXN0aW5hdGlvbkFjdGlvbk5vbmU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
aW5kZXggMDcwZDAzNTU4OTI4ZDE4NmU4ZGFmNTE3NzVmMTEzYWYzZmJlNTU5ZC4uN2E3MzUxYWE3
NDM5ZGU2Njg5NTZlMGY4NjBiNzUwOGM0ODJhMDRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQpAQCAtNjM5Miw4ICs2MzkyLDEwIEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0
IGJhY2tpbmdQcm9wZXJ0eU9sZFNjYWxlRmFjdG9yS2V5ID0gQCJOU0JhY2tpbmdQcm9wZXJ0eU9s
CiB7CiAgICAgSW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0p
OwogICAgIEludFBvaW50IGdsb2JhbChnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5n
TG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dp
bmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oW2RyYWdn
aW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25G
bGFnczpkcmFnZ2luZ0luZm9dKTsKLSAgICByZXR1cm4gY29yZShzZWxmKS0+ZHJhZ0NvbnRyb2xs
ZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CisKKyAgICBhdXRvJiBjb250cm9sbGVyID0gY29y
ZShzZWxmKS0+ZHJhZ0NvbnRyb2xsZXIoKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2lu
Z0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihbZHJhZ2dp
bmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZs
YWdzOmRyYWdnaW5nSW5mb10sIGNvbnRyb2xsZXIuY2xpZW50KCkuYWN0aW9uTWFza0ZvckRyYWco
ZHJhZ2dpbmdJbmZvKSk7CisgICAgcmV0dXJuIGNvbnRyb2xsZXIuZHJhZ0VudGVyZWQoZHJhZ0Rh
dGEpOwogfQogCiAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdVcGRhdGVkOihpZCA8TlNEcmFn
Z2luZ0luZm8+KWRyYWdnaW5nSW5mbwpAQCAtNjQwNCw4ICs2NDA2LDEwIEBAIHN0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IGJhY2tpbmdQcm9wZXJ0eU9sZFNjYWxlRmFjdG9yS2V5ID0gQCJOU0JhY2tp
bmdQcm9wZXJ0eU9sCiAKICAgICBJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2lu
Z0xvY2F0aW9uXSk7CiAgICAgSW50UG9pbnQgZ2xvYmFsKGdsb2JhbFBvaW50KFtkcmFnZ2luZ0lu
Zm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKLSAgICBEcmFnRGF0YSBkcmFn
RGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0
aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBh
cHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOwotICAgIHJldHVybiBwYWdlLT5kcmFnQ29u
dHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKKworICAgIGF1dG8mIGNvbnRyb2xsZXIg
PSBjb3JlKHNlbGYpLT5kcmFnQ29udHJvbGxlcigpOworICAgIERyYWdEYXRhIGRyYWdEYXRhKGRy
YWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KFtk
cmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0
aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgY29udHJvbGxlci5jbGllbnQoKS5hY3Rpb25NYXNrRm9y
RHJhZyhkcmFnZ2luZ0luZm8pKTsKKyAgICByZXR1cm4gY29udHJvbGxlci5kcmFnVXBkYXRlZChk
cmFnRGF0YSk7CiB9CiAKIC0gKHZvaWQpZHJhZ2dpbmdFeGl0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5m
bz4pZHJhZ2dpbmdJbmZvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuY3BwCmluZGV4IGRlYjAwZDcyYTMwYTgzN2Y1NWUyMzk2OTk4OGMwYzFi
ZGI0NzRiNmYuLmFmODgwZDNmOTUzN2NhYzFkMDc0MDU3OWJlZDE4ODU0M2M3NWVmNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3Bw
CkBAIC02NCwxNCArNjQsMTQgQEAgV2ViRHJhZ0NsaWVudDo6V2ViRHJhZ0NsaWVudChXZWJWaWV3
KiB3ZWJWaWV3KQogICAgIEFTU0VSVCh3ZWJWaWV3KTsKIH0KIAotRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uIFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFn
RGF0YSkKK0RyYWdEZXN0aW5hdGlvbkFjdGlvbiBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9y
RHJhZyhEcmFnRGF0YVJlZiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgQ09NUHRyPElXZWJVSURlbGVn
YXRlPiBkZWxlZ2F0ZVJlZiA9IDA7CiAgICAgLy9EZWZhdWx0IGJlaGF2aW91ciAoZWcuIG5vIGRl
bGVnYXRlLCBvciBjYWxsYmFjayBub3QgaW1wbGVtZW50ZWQpIGlzIHRvIGFsbG93CiAgICAgLy9h
bnkgYWN0aW9uCiAgICAgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIG1hc2sgPSBXZWJEcmFnRGVz
dGluYXRpb25BY3Rpb25Bbnk7CiAgICAgaWYgKFNVQ0NFRURFRChtX3dlYlZpZXctPnVpRGVsZWdh
dGUoJmRlbGVnYXRlUmVmKSkpCi0gICAgICAgIGRlbGVnYXRlUmVmLT5kcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvKG1fd2ViVmlldywgZHJhZ0RhdGEucGxhdGZvcm1EYXRh
KCksICZtYXNrKTsKKyAgICAgICAgZGVsZWdhdGVSZWYtPmRyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2tGb3JEcmFnZ2luZ0luZm8obV93ZWJWaWV3LCBwbGF0Zm9ybURhdGEsICZtYXNrKTsKIAogICAg
IHJldHVybiAoRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKW1hc2s7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTE1ZjM2ODY2ZTg2ZGZlYTk3ZjZkOWE5ZTFiNmQyZDg3YTFhNWUxNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvV0tEcmFnRGVz
dGluYXRpb25BY3Rpb24uaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8
V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2Vy
LCBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbikgeworICAgIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
Tm9uZSAgICA9IDAsCisgICAgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25ESFRNTCAgID0gMSwKKyAg
ICBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQgICAgPSAyLAorICAgIFdLRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTG9hZCAgICA9IDQsCisgICAgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkgICAg
ID0gTlNVSW50ZWdlck1heAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDYxNjZhYjZlYTE1MTYxOWNkOTdhZjFiNzNi
NmE0OTVhZTcwOThmMmMuLjFkMGRiNmRkYmRlOWI4MjUzMTg4OGM3YzA5OTJmMjZlMGVhYjI4NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC0xMjI0LDYgKzEyMjQsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLmZpbGVOYW1lcygpOwogI2VuZGlmCisg
ICAgZW5jb2RlciA8PCBkcmFnRGF0YS5kcmFnRGVzdGluYXRpb25BY3Rpb24oKTsKIH0KIAogYm9v
bCBBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERyYWdE
YXRhJiBkcmFnRGF0YSkKQEAgLTEyNTUsNyArMTI1NiwxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8
RHJhZ0RhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRyYWdEYXRhKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAotICAgIGRyYWdEYXRhID0gRHJhZ0RhdGEo
cGFzdGVib2FyZE5hbWUsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzKTsKKyAgICBEcmFnRGVzdGluYXRp
b25BY3Rpb24gZGVzdGluYXRpb25BY3Rpb247CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0o
ZGVzdGluYXRpb25BY3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkcmFnRGF0
YSA9IERyYWdEYXRhKHBhc3RlYm9hcmROYW1lLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRp
b24sIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgYXBwbGljYXRpb25GbGFncywgZGVzdGlu
YXRpb25BY3Rpb24pOwogICAgIGRyYWdEYXRhLnNldEZpbGVOYW1lcyhmaWxlTmFtZXMpOwogCiAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDM2MWE1Y2FkZGFmNDA4NzZmMWYx
YWVkODk3OWM4YWVjOGUwYjJmN2YuLjUxMWE0YzRmNTI1OWM5ZmJkODUxODk1YjNmODNlYzYzZWVl
MjhiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
SURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBXS19BUElf
RU5BQkxFRAogCisjaW1wb3J0IDxXZWJLaXQvV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaD4KICNp
bXBvcnQgPFdlYktpdC9XS1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLQWN0
aXZhdGVkRWxlbWVudEluZm8uaD4KIApAQCAtNjUsNiArNjYsNyBAQCBzdHJ1Y3QgVUlFZGdlSW5z
ZXRzOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjaGVja1VzZXJNZWRp
YVBlcm1pc3Npb25Gb3JVUkw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWlu
RnJhbWVVUkwgZnJhbWVJZGVudGlmaWVyOihOU1VJbnRlZ2VyKWZyYW1lSWRlbnRpZmllciBkZWNp
c2lvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICpzYWx0LCBCT09MIGF1dGhvcml6ZWQpKWRl
Y2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIC0gKHZvaWQpX3dlYlZpZXdEaWRCZWdpbkNhcHR1cmVTZXNzaW9uOihXS1dl
YlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogLSAodm9pZClfd2ViVmlld0RpZEVuZENhcHR1cmVTZXNzaW9uOihXS1dl
YlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworLSAoV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzoo
aWQpZHJhZ2dpbmdJbmZvIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogI2lmIFRBUkdFVF9PU19JUEhPTkUKIC0gKEJPT0wpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVudDoo
X1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDku
MCkpOwogLSAoTlNBcnJheSAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGFjdGlvbnNG
b3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgZGVmYXVsdEFjdGlv
bnM6KE5TQXJyYXk8X1dLRWxlbWVudEFjdGlvbiAqPiAqKWRlZmF1bHRBY3Rpb25zOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBhNjk4
NmQyZWZiZWVmOWI0YzM5MGMxZGE4NTlhYzFhMzRiZDEyNTNiLi5lYzJiN2I5ZGQyMGVmNjE2Y2Ux
MWVjNjRmM2Q0MGJjZjY3M2I4NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNDUsNiArNDUsNyBAQAogI2ltcG9ydCAiUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMu
aCIKICNpbXBvcnQgIlVJRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlZlcnNpb25DaGVja3MuaCIKICNp
bXBvcnQgIlZpZXdHZXN0dXJlQ29udHJvbGxlci5oIgogI2ltcG9ydCAiVmlld1NuYXBzaG90U3Rv
cmUuaCIKICNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCIKQEAgLTM0NTIsNiAr
MzQ1MywyMiBAQCBXRUJDT1JFX0NPTU1BTkQoeWFua0FuZFNlbGVjdCkKIHsKIH0KIAorI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpCisKKy0gKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKV93ZWJfZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRy
YWdnaW5nSW5mbworeworICAgIGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPiB1aURlbGVnYXRlID0g
KGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilbc2VsZiBVSURlbGVnYXRlXTsKKyAgICBpZiAoW3Vp
RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOildKQorICAgICAgICByZXR1cm4gW3VpRGVs
ZWdhdGUgX3dlYlZpZXc6c2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJ
bmZvOmRyYWdnaW5nSW5mb107CisKKyAgICBpZiAoIWxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNE
S1ZlcnNpb246OkZpcnN0V2l0aERyb3BUb05hdmlnYXRlRGlzYWxsb3dlZEJ5RGVmYXVsdCkpCisg
ICAgICAgIHJldHVybiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKKworICAgIHJldHVybiBX
S0RyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSAmIH5XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQ7
Cit9CisKKyNlbmRpZgorCiAtICh2b2lkKV93ZWJfZGlzbWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxk
V2luZG93cwogewogICAgIF9pbXBsLT5kaXNtaXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dz
RnJvbVZpZXdPbmx5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0KaW5kZXggYzAzYThjMzcxMWY1YWRiNzg0NzQ1MGQ2Y2UyNTdjMmJkNjkxMDNkMy4uMTNkYTFj
Y2U1YTIxYjk3OGZkYjU3MTViNzEwYTYyZmQ0MGU1MWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiQVBJ
SWNvbkxvYWRpbmdDbGllbnQuaCIKICNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAj
aW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEdyb3VwUHJpdmF0ZS5oIgorI2ltcG9ydCAiV0tEcmFn
RGVzdGluYXRpb25BY3Rpb24uaCIKICNpbXBvcnQgIldLTlNEYXRhLmgiCiAjaW1wb3J0ICJXS1By
b2Nlc3NHcm91cFByaXZhdGUuaCIKICNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIK
QEAgLTEwMDgsNiArMTAwOSwxNSBAQCBTb21lIG90aGVyIGVkaXRpbmctcmVsYXRlZCBtZXRob2Rz
IHN0aWxsIHVuaW1wbGVtZW50ZWQ6CiAgICAgW3NlbGYgX2RpZENoYW5nZUNvbnRlbnRTaXplOm5l
d1NpemVdOwogfQogCisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKKworLSAoV0tEcmFnRGVzdGlu
YXRpb25BY3Rpb24pX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86KGlk
IDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCit7CisgICAgcmV0dXJuIFdLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uQW55OworfQorCisjZW5kaWYKKwogLSAodm9pZClfd2ViX2Rpc21pc3NDb250
ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3MKIHsKICAgICBbc2VsZiBfZGlzbWlzc0NvbnRlbnRSZWxh
dGl2ZUNoaWxkV2luZG93c107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvVmVyc2lvbkNoZWNrcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1Zl
cnNpb25DaGVja3MuaAppbmRleCAzMDUyOTVjOWRkY2M1M2Y4OGJhYWUyZjhiNTY0ZDZhMWI4MzFj
M2EzLi41MDJhZGY2ZWYwNjBhN2JiZTlkOWQ1YWI0ZWI2ODBmODNkMmM0YzEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9WZXJzaW9uQ2hlY2tzLmgKQEAgLTM4LDYgKzM4
LDcgQEAgZW51bSBjbGFzcyBTREtWZXJzaW9uIDogdWludDMyX3QgewogI2VsaWYgUExBVEZPUk0o
TUFDKQogICAgIEZpcnN0V2l0aE5ldHdvcmtDYWNoZSA9IERZTERfTUFDT1NYX1ZFUlNJT05fMTBf
MTEsCiAgICAgRmlyc3RXaXRoRXhjZXB0aW9uc0ZvckR1cGxpY2F0ZUNvbXBsZXRpb25IYW5kbGVy
Q2FsbHMgPSBEWUxEX01BQ09TWF9WRVJTSU9OXzEwXzEzLAorICAgIEZpcnN0V2l0aERyb3BUb05h
dmlnYXRlRGlzYWxsb3dlZEJ5RGVmYXVsdCA9IERZTERfTUFDT1NYX1ZFUlNJT05fMTBfMTMKICNl
bmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
aAppbmRleCA2OTJhOTI0YWNmNGJkOWYxZDdjZGIxYThkNWQ4OWI3NmJiZjMzYTRlLi4xYWE0Y2Vj
MmE1ZDI0NzJkOTA3MWNkMTllMjRlYWU0M2MyOTc5NTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtMjksNiArMjksNyBAQAogI2lmIFBMQVRG
T1JNKE1BQykKIAogI2luY2x1ZGUgIlBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5oIgorI2lu
Y2x1ZGUgIldLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiV0tMYXlvdXRNb2Rl
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiX1dLT3ZlcmxheVNjcm9s
bGJhclN0eWxlLmgiCkBAIC05MSw2ICs5MiwxMCBAQCBPQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyOwogCiAtICh2b2lkKV93ZWJfZGlkQ2hhbmdlQ29udGVudFNpemU6KE5TU2l6
ZSluZXdTaXplOwogCisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKKy0gKFdLRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKV93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOihpZCA8
TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbzsKKyNlbmRpZgorCiBAb3B0aW9uYWwKIC0gKHZv
aWQpX3dlYl9kaWRBZGRNZWRpYUNvbnRyb2xzTWFuYWdlcjooaWQpY29udHJvbHNNYW5hZ2VyOwog
LSAodm9pZClfd2ViX2RpZFJlbW92ZU1lZGlhQ29udHJvbHNNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGVjYTllYTRmZDU3NWFj
NTk2NDE2NWEzY2JkODAwNjIyNmI4M2ZmNzAuLmRhNTJiMjZkODJiNzIzMWVhMDM3OTdjYzM3MDIy
ZTg3MTcxZmUwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0KQEAgLTM1NzcsNyArMzU3Nyw4IEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1w
bDo6ZHJhZ2dpbmdFbnRlcmVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewog
ICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2lu
Z0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQ
b2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9j
YXRpb24sIG1fdmlldy53aW5kb3cpKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShk
cmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGlj
YXRpb25GbGFnc0ZvckRyYWcobV92aWV3LCBkcmFnZ2luZ0luZm8pKTsKKyAgICBhdXRvIGRyYWdE
ZXN0aW5hdGlvbkFjdGlvbiA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFj
dGlvbj4oW21fdmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpk
cmFnZ2luZ0luZm9dKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0lu
Zm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihk
cmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFn
c0ZvckRyYWcobV92aWV3LCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVzdGluYXRpb25BY3Rpb24pOwog
CiAgICAgbV9wYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKICAgICBtX3BhZ2Ut
PmRyYWdFbnRlcmVkKGRyYWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5h
bWUpOwpAQCAtMzU4OCw3ICszNTg5LDggQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpk
cmFnZ2luZ1VwZGF0ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5m
by5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50
IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlv
biwgbV92aWV3LndpbmRvdykpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdn
aW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlv
bkZsYWdzRm9yRHJhZyhtX3ZpZXcsIGRyYWdnaW5nSW5mbykpOworICAgIGF1dG8gZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
PihbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdn
aW5nSW5mb10pOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywg
Y2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdn
aW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9y
RHJhZyhtX3ZpZXcsIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbik7CiAgICAg
bV9wYWdlLT5kcmFnVXBkYXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVi
b2FyZC5uYW1lKTsKIAogICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0g
bV9wYWdlLT5jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYzJl
MWY0YzBmNzgyY2EyMzE2YzQ5ZjJjOTFhN2I5Y2VkOTVjY2ZlLi44YTIwZDAwOTA1Mzg0OThlM2Yx
MTFjMWE0M2JiOTVhNjk3NWIyZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xOTYxLDYgKzE5NjEsNyBAQAogCQlFRDgyQTdG
MjEyOEM2RkFGMDA0NDc3QjMgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMkYwRkYxMjg5RkNEOTAwODVFNzRG
IC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFRENBNzFCNzEyOEREQThDMDAyMDFCMjYgLyogV0tCdW5kbGVQ
YWdlT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTIyRjEwMDEyODlGQ0Q5MDA4NUU3NEYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAg
Ki87IH07CiAJCUYwMzY5Nzg4MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMDM2OTc4NzE1
RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovOyB9OworCQlGNDA5QkExODFF
NkU2NEJDMDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDlCQTE3MUU2RTY0QjMwMDlEQTI4
RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0MzM3MDk3MUU0RDcyRUQwMDA1MkIwRSAvKiBfV0tU
ZXN0aW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0MzM3MDk2MUU0RDZBNDQwMDA1MkIwRSAvKiBfV0tUZXN0aW5nRGVsZWdhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNjExM0Uy
NTEyNkNFMTgyMDA1N0QwQTcgLyogQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjExM0UyNDEyNkNFMTgyMDA1
N0QwQTcgLyogQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggKi87IH07CiAJCUY2MTEzRTI4MTI2
Q0UxOUIwMDU3RDBBNyAvKiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjExM0UyNjEyNkNFMTlCMDA1N0Qw
QTcgLyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwICovOyB9OwpAQCAtNDIyNiw2ICs0MjI3
LDcgQEAKIAkJRTRFODY0OEUxQjE2NzNGQjAwQzgyRjQwIC8qIFZlcnNpb25DaGVja3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVyc2lvbkNoZWNrcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNEU4NjQ4RjFCMTY3M0ZCMDBDODJGNDAgLyogVmVyc2lvbkNo
ZWNrcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZlcnNpb25D
aGVja3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYwMzY5Nzg3MTVGNEJGMDUw
MEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJDb2xvclBpY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUY0MDlCQTE3MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RyYWdEZXN0aW5hdGlvbkFjdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMzNzA5NjFFNEQ2QTQ0MDAwNTJC
MEUgLyogX1dLVGVzdGluZ0RlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS1Rlc3RpbmdEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NjExM0UyNDEyNkNFMTgyMDA1N0QwQTcgLyogQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNjExM0UyNjEyNkNFMTlCMDA1N0QwQTcg
LyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTYzMiw2ICs1NjM0LDcgQEAKIAkJCQkzNzNEMTIyNDE4QTQ3M0IzMDA2
NkQ5Q0MgLyogV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oICovLAogCQkJCTM3QTcw
OUE2MUUzRUEwRkQwMENBNTk2OSAvKiBXS0RhdGFEZXRlY3RvclR5cGVzLmggKi8sCiAJCQkJMzdB
NzA5QTgxRTNFQTQwQzAwQ0E1OTY5IC8qIFdLRGF0YURldGVjdG9yVHlwZXNJbnRlcm5hbC5oICov
LAorCQkJCUY0MDlCQTE3MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlv
bi5oICovLAogCQkJCTM3REZBNkZGMTgxMEJCOTIwMDFGNEE5RiAvKiBXS0ZvdW5kYXRpb24uaCAq
LywKIAkJCQkxQTlFMzI5OTE4MjJFMUNDMDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3QuaCAqLywK
IAkJCQkxQTlFMzI5ODE4MjJFMUNDMDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3QubW0gKi8sCkBA
IC04MDE2LDYgKzgwMTksNyBAQAogCQkJCUJDRUU5NjZEMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRh
Y2htZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUEzMTczMjEzNENFQTZDMDA3QzlBNEYgLyog
QXR0cmlidXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OTcxMkE4ODM4ODAw
NjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBpbiBIZWFkZXJzICovLAor
CQkJCUY0MDlCQTE4MUU2RTY0QkMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OTkxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4RThFRjkxNkIy
MDkxQzAwRTkxNDI5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTEyRjU4QTMxMkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCmluZGV4IDBmMTZiZTlhNTc2
ODBjZmZiMTBjY2RiNTVkYTMxNzMxMmZjNjVjNDkuLjdmZDM5MjU1MTYzYzRjMjFmNDM0Y2QwZDU4
MjJmMWZkYTE3Mjg2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCB2
b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNl
QWN0aW9uLCBjb25zdCBJbnRQb2ludAogewogfQogCi1EcmFnRGVzdGluYXRpb25BY3Rpb24gV2Vi
RHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoY29uc3QgRHJhZ0RhdGEmKQorRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uIFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKERyYWdEYXRhUmVm
KQogewogICAgIHJldHVybiBEcmFnRGVzdGluYXRpb25BY3Rpb25Bbnk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5oCmluZGV4IGE5NmVlODE2MjAzNjJlM2VhOTIzNTU3Mjg3MDJkYjZkMmUzNzBlZWEuLmZiODBm
NjVlN2EwZTcwY2Y2Y2VlY2E2NDU5ZDYxODAyYmVkZjY2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBA
IC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybURy
YWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNvbnN0
IFdlYkNvcmU6OkRyYWdEYXRhJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsUGVyZm9ybURyYWdT
b3VyY2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0ZvckRyYWcoY29uc3QgV2ViQ29yZTo6RHJh
Z0RhdGEmKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0
aW9uTWFza0ZvckRyYWcoRHJhZ0RhdGFSZWYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkRyYWdT
b3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgd2luZG93UG9pbnQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdGFydERyYWcoV2Vi
Q29yZTo6RHJhZ0ltYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2lu
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIGRyYWdJbWFnZUFuY2hvciwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6
RnJhbWUmLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uKSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303698</attachid>
            <date>2017-03-07 12:24:16 -0800</date>
            <delta_ts>2017-03-07 12:42:22 -0800</delta_ts>
            <desc>Fix the windows build</desc>
            <filename>bug-169168-20170307122349.patch</filename>
            <type>text/plain</type>
            <size>62174</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI4MjE1ZjFhMjY2NTAz
ZjI1NDQyOGQxOWZhMGRhNGJhMGY0YjE0Mi4uYjY5N2I3YjU4ODNhNWE1MzI4MGM0MTU3MjdlM2M0
MmUyYjY0Y2Q3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTAzLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBh
IFVJIGRlbGVnYXRlIFNQSSBob29rIHRvIGVuYWJsZSBvciBkaXNhYmxlIG5hdmlnYXRpb24gb24g
ZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY4ODM3ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBjbGllbnQgaG9va3MgZm9y
IHRoZSBkcmFnIGRlc3RpbmF0aW9uIGFjdGlvbiBpbiBXZWJDb3JlIHRvIGFzayBmb3IgdGhlIGRy
YWcgZGVzdGluYXRpb24gYWN0aW9uIG1hc2sKKyAgICAgICAgdXBvbiBpbml0aWFsaXppbmcgdGhl
IERyYWdEYXRhLiBJbiBEcmFnQ29udHJvbGxlciwgcmF0aGVyIHRoYW4gc2V0dGluZyBtX2RyYWdE
ZXN0aW5hdGlvbkFjdGlvbiB0byB0aGUgcmVzdWx0IG9mCisgICAgICAgIG1fY2xpZW50LmFjdGlv
bk1hc2tGb3JEcmFnLCB3ZSBpbnN0ZWFkIHNldCBpdCB0byB0aGUgRHJhZ0RhdGEncyBkZXN0aW5h
dGlvbiBhY3Rpb24uCisKKyAgICAgICAgVGVzdHMgdG8gY29tZSBpbiBhIGZ1dHVyZSBwYXRjaC4K
KworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIHBhZ2UvRHJh
Z0NsaWVudC5oOgorCisgICAgICAgIFJhdGhlciB0aGFuIHBhc3MgaW4gYSBEcmFnRGF0YSwgcGFz
cyBpbiBvbmx5IHRoZSBwbGF0Zm9ybSBkYXRhIHRoYXQgd2UgbmVlZCB0byBoYW5kIHRvIHRoZSBk
ZWxlZ2F0ZS4gVGhpcyBpcworICAgICAgICBiZWNhdXNlIHdlIG5vdyBhc2sgZm9yIGRyYWcgZGVz
dGluYXRpb24gYWN0aW9ucyBwcmlvciB0byBjcmVhdGluZyB0aGUgRHJhZ0RhdGEuCisKKyAgICAg
ICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250
cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZCk6CisKKyAgICAgICAgVXBkYXRlIHRoZSBhdmFp
bGFibGUgZHJhZyBkZXN0aW5hdGlvbiBhY3Rpb25zIGluIFdlYkNvcmUgdXNpbmcgdGhlIGRlc3Rp
bmF0aW9uIGFjdGlvbnMgc3RvcmVkIGluIERyYWdEYXRhIHJhdGhlcgorICAgICAgICB0aGFuIGNh
bGxpbmcgb3V0IHRvIHRoZSBjbGllbnQgZGVsZWdhdGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9E
cmFnRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpvcGVy
YXRvciA9KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorCiAyMDE3LTAzLTAxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWN0dWFsbHkgZml4
IFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3ODI2YjBhMjQ4YzMyNWY4ZWYyNzUxZDdhOWM2
NTYxMDM0OWU4ZWYuLmYyODMzZTgzN2UyNWE4YmY1ODNjNGI4NDUyNGZlOTk3MDU4ODExOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDMtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIGEgVUkgZGVsZWdhdGUgU1BJ
IGhvb2sgdG8gZW5hYmxlIG9yIGRpc2FibGUgbmF2aWdhdGlvbiBvbiBkcm9wCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkxNjgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzMwNjg4Mzc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNlZSBXZWJLaXQgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuIFJl
bmFtZXMgV2ViRGVmYXVsdFVJRGVsZWdhdGUubSA9PiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbS4K
KworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE3LTAy
LTI3ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFi
bGUgU1VQUE9SVFNfVEVYVF9CQVNFRF9BUEkgaW4gV2ViS2l0TGVnYWN5IGZvciBpT1MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCA1MDFmMDkzZmYzZmIzYmE4MWZkMTNlNjU5YTFjODE0YmQ2NGIwMTE3Li5i
NjQ5MzZmMTllYWJkYzczZGQ0OTFmYTg4MjNmNmE0YjJlODk1NTM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjkgQEAKKzIwMTctMDMtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIGEgVUkgZGVsZWdhdGUgU1BJIGhvb2sg
dG8gZW5hYmxlIG9yIGRpc2FibGUgbmF2aWdhdGlvbiBvbiBkcm9wCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkxNjgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzMwNjg4Mzc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlZmFjdG9ycyBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJhZyB0byB0
YWtlIHBsYXRmb3JtIGRhdGEgb25seSwgcmF0aGVyIHRoYW4gdGhlIGVudGlyZSBEcmFnRGF0YS4g
U2VlIHRoZQorICAgICAgICBXZWJDb3JlIENoYW5nZUxvZyBlbnRyeSBmb3IgbW9yZSBkZXRhaWxz
LiBBbHNvIHJlbmFtZXMgV2ViRGVmYXVsdFVJRGVsZWdhdGUubSB0byBXZWJEZWZhdWx0VUlEZWxl
Z2F0ZS5tbSwgc2luY2UKKyAgICAgICAgd2UgbmVlZCB0byBpbXBvcnQgYSBDKysgaGVhZGVyIGZv
ciBsaW5rZWRPbk9yQWZ0ZXIoKS4KKworICAgICAgICBUaGUgZGVmYXVsdCBkZWxlZ2F0ZSBpbXBs
ZW1lbnRhdGlvbiBvZiB3ZWJWaWV3OmRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2lu
Z0luZm86IG5vdyBjaGVja3MgaWYgdGhlIGN1cnJlbnQKKyAgICAgICAgYXBwbGljYXRpb24gaXMg
bGlua2luZyBhZ2FpbnN0IDEwLjEyIG9yIGVhcmxpZXIsIGFuZCBpZiBzbywgd2lsbCBhbGxvdyBh
bnkgZHJhZyBkZXN0aW5hdGlvbiBhY3Rpb24gaW5zdGVhZCBvZgorICAgICAgICB0aGUgbmV3IGRl
ZmF1bHQgdmFsdWUgb2YgZXZlcnl0aGluZyBidXQgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZC4K
KworICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW06IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRV
SURlbGVnYXRlLm0uCisgICAgICAgICgtW1dlYkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXc6ZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpdKToKKyAgICAgICAgKiBNaXNj
L1dlYktpdFZlcnNpb25DaGVja3MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbToKKyAg
ICAgICAgKFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpdKToKKwogMjAxNy0wMy0wMSAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTMyNTkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMGZlMzE3N2E0
N2ExY2Y2NjU0OTA1YTYzZWYxYTRjYzIzNzVkNDFhZS4uY2NlOGY2MTYwYTBjY2FkMDFkOTRhMDRm
ZTM5MjNlY2E2ZGU0NjhiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3
LTAzLTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFtXSzJdIEFkZCBhIFVJIGRlbGVnYXRlIFNQSSBob29rIHRvIGVuYWJsZSBvciBkaXNhYmxlIG5h
dmlnYXRpb24gb24gZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY5MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY4ODM3ND4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaW5vciB0d2VhayB0
byBhZGp1c3QgZm9yIGEgY2hhbmdlZCBpbnRlcmZhY2UuIFNlZSBXZWJLaXQgYW5kIFdlYkNvcmUg
Q2hhbmdlTG9ncyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFz
a0ZvckRyYWcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKwog
MjAxNy0wMy0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIEFjdHVhbGx5IGZpeCBXaW5kb3dzIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQyNWIy
MTdmMjcyM2I3NzkwOTE3ZmQ4NWIyMTg3YTgyZDAxOTIzYjcuLmI2NjYxZWE3ODJmYzNlOTE4NWI2
MzhhYzBhY2JiZDZiZGE0NTBiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxNy0w
My0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBb
V0syXSBBZGQgYSBVSSBkZWxlZ2F0ZSBTUEkgaG9vayB0byBlbmFibGUgb3IgZGlzYWJsZSBuYXZp
Z2F0aW9uIG9uIGRyb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2OTE2OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA2ODgzNzQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBjdXN0b21p
emluZyB0aGUgc2V0IG9mIGFsbG93ZWQgYWN0aW9ucyBvbiBkcm9wIGluIFdlYktpdDIgYnkgaW50
cm9kdWNpbmcgYSBuZXcgbWV0aG9kIHRvIFdLVUlEZWxlZ2F0ZVByaXZhdGUKKyAgICAgICAgdGhh
dCByZXR1cm5zIGEgV0tEcmFnRGVzdGluYXRpb25BY3Rpb24gZ2l2ZW4gcGxhdGZvcm0gZHJhZ2dp
bmcgaW5mby4gVGhlc2UgZmxhZ3MgYXJlIHRoZW4gdXNlZCB0byBpbml0aWFsaXplIHRoZQorICAg
ICAgICBEcmFnRGF0YSBzZW50IG92ZXIgdG8gdGhlIHdlYiBwcm9jZXNzLCB3aGVyZSB0aGV5IHVw
ZGF0ZSBEcmFnQ29udHJvbGxlcidzIHZpZXcgb2YgdGhlIGFsbG93ZWQgZGVzdGluYXRpb24gYWN0
aW9ucy4KKworICAgICAgICBNb3ZpbmcgZm9yd2FyZCwgdGhlIGRlZmF1bHQgYWN0aW9uIG1hc2sg
Zm9yIFdLV2ViVmlld3Mgd2lsbCBpbmNsdWRlIGV2ZXJ5dGhpbmcgZXhjZXB0IFdLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTG9hZCwKKyAgICAgICAgdGhvdWdoIGZvciBhcHBsY2lhdGlvbnMgbGlua2Vk
IG9uIG9yIGJlZm9yZSAxMC4xMiwgd2Ugd2lsbCBzdGlsbCBkZWZhdWx0IHRvIFdLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uQW55IHRvIG1pdGlnYXRlCisgICAgICAgIGFueSBjb21wYXRpYmlsaXR5IHJp
c2suCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
Lmg6CisKKyAgICAgICAgSW50cm9kdWNlIFdLMiBjbGllbnQtZmFjaW5nIHZlcnNpb25zIG9mIFdl
YkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBmbGFncy4KKworICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERy
YWdEYXRhPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46
OmRlY29kZSk6CisKKyAgICAgICAgU2VyaWFsaXplIERyYWdEYXRhJ3MgZGVzdGluYXRpb24gYWN0
aW9ucyB3aGVuIHNlbmRpbmcgRHJhZ0RhdGEgb3ZlciBJUEMuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF93ZWJfZHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOl0pOgorCisgICAgICAgIEZvciBXS1dlYlZp
ZXcsIGFsbG93IGFsbCBkcmFnIGRlc3RpbmF0aW9uIGFjdGlvbnMgZXhjZXB0IGZvciBsb2FkaW5n
IChpLmUuIGRyb3AtdG8tbmF2aWdhdGUpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25G
b3JEcmFnZ2luZ0luZm86XSk6CisKKyAgICAgICAgRm9yIFdLVmlldywgYWxsb3cgYWxsIHR5cGVz
IG9mIGRyYWcgZGVzdGluYXRpb24gYWN0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9WZXJzaW9uQ2hlY2tzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFbnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmRyYWdnaW5nVXBkYXRlZCk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmFjdGlv
bk1hc2tGb3JEcmFnKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuaDoKKwogMjAxNy0wMy0wMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIC1bV0tXZWJWaWV3IGFkanVzdGVkRGF0YUludGVy
YWN0aW9uSXRlbVByb3ZpZGVyczpdIHdpdGggYSBVSSBkZWxlZ2F0ZSBtZXRob2QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYWZjODU2YTU0MzlmMmVhNjM0NGY0YTlk
NDAwN2NhNzFhNTBiZWQ3NS4uM2FmOTdmOWI4NzFkNjBhNjFjYjE4Mjk3ZWI1YjQzN2Q3ZDkyNzdh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTEyOSw3ICsxMjks
NyBAQCBjbGFzcyBFbXB0eURpYWdub3N0aWNMb2dnaW5nQ2xpZW50IGZpbmFsIDogcHVibGljIERp
YWdub3N0aWNMb2dnaW5nQ2xpZW50IHsKIGNsYXNzIEVtcHR5RHJhZ0NsaWVudCBmaW5hbCA6IHB1
YmxpYyBEcmFnQ2xpZW50IHsKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgRHJhZ0RhdGEmKSBmaW5hbCB7IH0KICAg
ICB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25z
dCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYpIGZpbmFsIHsgfQotICAgIERyYWdEZXN0aW5hdGlv
bkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBEcmFnRGF0YSYpIGZpbmFsIHsgcmV0dXJu
IERyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmU7IH0KKyAgICBEcmFnRGVzdGluYXRpb25BY3Rpb24g
YWN0aW9uTWFza0ZvckRyYWcoRHJhZ0RhdGFSZWYpIGZpbmFsIHsgcmV0dXJuIERyYWdEZXN0aW5h
dGlvbkFjdGlvbk5vbmU7IH0KICAgICBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25N
YXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBmaW5hbCB7IHJldHVybiBEcmFnU291cmNlQWN0
aW9uTm9uZTsgfQogICAgIHZvaWQgc3RhcnREcmFnKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQm
LCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBEYXRhVHJhbnNmZXImLCBGcmFt
ZSYsIERyYWdTb3VyY2VBY3Rpb24pIGZpbmFsIHsgfQogICAgIHZvaWQgZHJhZ0NvbnRyb2xsZXJE
ZXN0cm95ZWQoKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKaW5kZXggYjAyMjA3
ZDhjMzRmYzNhMTE2ODA0YzVhMDQ2ZGQ1Nzk0ZWZmNmRhMC4uMTk2MjRkZGVkMjZjODQwMzMzMDI4
OTdkOWRhZjZjOWJmMDJlMGIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKKyNpbmNs
dWRlICJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIkRyYWdJdGVtLmgiCiAjaW5jbHVkZSAiRmxvYXRQ
b2ludC5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCkBAIC0zMyw3ICszNCw2IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBEYXRhVHJhbnNmZXI7Ci1jbGFzcyBEcmFnRGF0YTsK
IGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdlOwpAQCAtNDYsNyArNDYs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRp
b25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBEcmFnRGF0YSYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rp
b24sIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJikgPSAwOwotICAgIHZpcnR1YWwgRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKGNvbnN0IERyYWdEYXRhJikgPSAw
OworICAgIHZpcnR1YWwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKERy
YWdEYXRhUmVmIHBsYXRmb3JtRGF0YSkgPSAwOwogICAgIHZpcnR1YWwgRHJhZ1NvdXJjZUFjdGlv
biBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JiByb290Vmlld1Bv
aW50KSA9IDA7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhEcmFnSW1hZ2UsIGNv
bnN0IEludFBvaW50JiBkcmFnSW1hZ2VPcmlnaW4sIGNvbnN0IEludFBvaW50JiBldmVudFBvcywg
Y29uc3QgRmxvYXRQb2ludCYgZHJhZ0ltYWdlQW5jaG9yLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYs
IERyYWdTb3VyY2VBY3Rpb24pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKaW5kZXggNThlMTdmZGQxNDQ4ODY4Y2JjYzlkN2M1NTczMDZiMjY3NjVjYWM3MS4uZWJiZDg5
N2VjYWQwNDA0Zjk0NzliMzljZDhmNmVhYzAxMWFjZGQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCBEcmFnT3BlcmF0aW9uIERyYWdD
b250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEp
CiB7CiAgICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudChtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1l
bnRBdFBvaW50KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpKTsKIAotICAgIG1fZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uID0gbV9jbGllbnQuYWN0aW9uTWFza0ZvckRyYWcoZHJhZ0RhdGEpOworICAg
IG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID0gZHJhZ0RhdGEuZHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
KCk7CiAgICAgaWYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID09IERyYWdEZXN0aW5hdGlvbkFj
dGlvbk5vbmUpIHsKICAgICAgICAgY2xlYXJEcmFnQ2FyZXQoKTsgLy8gRklYTUU6IFdoeSBub3Qg
Y2FsbCBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG51bGxwdHIpPwogICAgICAgICByZXR1cm4gRHJh
Z09wZXJhdGlvbk5vbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKaW5kZXggYWI2
N2M2NjZkYTgxMGU5NTdkOGZlM2U5OTYxYmVkZDE4MzQ2YTM4YS4uYjQyOGMzNzM5M2ZlY2Q0YTFh
ODgwNTgwZmVkNjhlYjliY2U0YzRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNw
cApAQCAtMzIsMjMgKzMyLDIzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZP
Uk0oQ09DT0EpCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIAot
ICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgZmxhZ3MpCitEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERy
YWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxh
Z3MsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBkZXN0aW5hdGlvbkFjdGlvbikKICAgICA6IG1fY2xp
ZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2Jh
bFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKGRhdGEpCiAgICAgLCBtX2RyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9hcHBs
aWNhdGlvbkZsYWdzKGZsYWdzKQorICAgICwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb24oZGVzdGlu
YXRpb25BY3Rpb24pCiB7ICAKIH0KIAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLAotICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxp
Y2F0aW9uRmxhZ3MgZmxhZ3MpCitEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiwgY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgZmxhZ3MsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBkZXN0aW5hdGlvbkFjdGlvbikKICAgICA6
IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9u
KGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCiAgICAgLCBtX2Ry
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9h
cHBsaWNhdGlvbkZsYWdzKGZsYWdzKQorICAgICwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb24oZGVz
dGluYXRpb25BY3Rpb24pCiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
CmluZGV4IDNjZjExZTdkYTAxNDllZjQ3OTA0NzNmNTg1ZGE3OTA5NTJiNzg0MjcuLjE5NTcyMWIx
ZmRhM2VjODhlMjhmZWY4ZTMzMjZjOTY1OTVjZjQyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuaApAQCAtNzgsOCArNzgsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBGaWxlbmFtZUNvbnZl
cnNpb25Qb2xpY3kgeyBEb05vdENvbnZlcnRGaWxlbmFtZXMsIENvbnZlcnRGaWxlbmFtZXMgfTsK
IAogICAgIC8vIGNsaWVudFBvc2l0aW9uIGlzIHRha2VuIHRvIGJlIHRoZSBwb3NpdGlvbiBvZiB0
aGUgZHJhZyBldmVudCB3aXRoaW4gdGhlIHRhcmdldCB3aW5kb3csIHdpdGggKDAsMCkgYXQgdGhl
IHRvcCBsZWZ0Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5v
bmUpOwotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3Jh
Z2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFn
QXBwbGljYXRpb25Ob25lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJl
ZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxp
Y2F0aW9uTm9uZSwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbnMgPSBEcmFnRGVzdGluYXRp
b25BY3Rpb25BbnkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYg
ZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IElu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgPSBEcmFnQXBwbGljYXRpb25Ob25lLCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9ucyA9
IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSk7CiAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBzaG91
bGQgdXNlZCBvbmx5IGJ5IFdlYktpdDIgSVBDIGJlY2F1c2UgRHJhZ0RhdGEKICAgICAvLyBpcyBp
bml0aWFsaXplZCBieSB0aGUgZGVjb2RlciBhbmQgbm90IGluIHRoZSBjb25zdHJ1Y3Rvci4KICAg
ICBEcmFnRGF0YSgpIHsgfQpAQCAtMTA1LDYgKzEwNSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNv
bnRhaW5zQ29sb3IoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zRmlsZXMoKSBjb25zdDsKICAg
ICB1bnNpZ25lZCBudW1iZXJPZkZpbGVzKCkgY29uc3Q7CisgICAgRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uIGRyYWdEZXN0aW5hdGlvbkFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uOyB9CiAgICAgdm9pZCBzZXRGaWxlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZpbGVO
YW1lcykgeyBtX2ZpbGVOYW1lcyA9IFdURk1vdmUoZmlsZU5hbWVzKTsgfQogICAgIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlTmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVOYW1lczsgfQog
I2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTIxLDYgKzEyMiw3IEBAIHB1YmxpYzoKICAgICAgICAg
bV9wbGF0Zm9ybURyYWdEYXRhID0gZGF0YS5tX3BsYXRmb3JtRHJhZ0RhdGE7CiAgICAgICAgIG1f
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrID0gZGF0YS5tX2RyYWdnaW5nU291cmNlT3BlcmF0
aW9uTWFzazsKICAgICAgICAgbV9hcHBsaWNhdGlvbkZsYWdzID0gZGF0YS5tX2FwcGxpY2F0aW9u
RmxhZ3M7CisgICAgICAgIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID0gZGF0YS5tX2RyYWdEZXN0
aW5hdGlvbkFjdGlvbjsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KICNlbmRpZgpAQCAt
MTMyLDYgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgRHJhZ09wZXJhdGlvbiBtX2RyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzazsKICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBtX2FwcGxpY2F0aW9u
RmxhZ3M7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlTmFtZXM7CisgICAgRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFN0cmluZyBtX3Bhc3RlYm9hcmROYW1lOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KaW5kZXggOThkN2I3ZmUxNThlMjc5NmZlMmM1YmQ4OTRi
YmM3NDUwYmM4YjRlMy4uY2Y3OGI0YTk0OTIwYTJjNTU5Zjg2NjZkODM0ZWJjNTk2ZjQ3YWM5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpAQCAtODMsMTMg
KzgzLDEzIEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRpZmZQYXN0ZWJvYXJkVHlwZSgpCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCAKLSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBs
aWNhdGlvbkZsYWdzIGZsYWdzKQorRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlv
bkZsYWdzIGZsYWdzLCBEcmFnRGVzdGluYXRpb25BY3Rpb24gZGVzdGluYXRpb25BY3Rpb24pCiAg
ICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3Np
dGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YShkYXRhKQogICAg
ICwgbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soc291cmNlT3BlcmF0aW9uTWFzaykKICAg
ICAsIG1fYXBwbGljYXRpb25GbGFncyhmbGFncykKKyAgICAsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKGRlc3RpbmF0aW9uQWN0aW9uKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fcGFzdGVi
b2FyZE5hbWUoW1ttX3BsYXRmb3JtRHJhZ0RhdGEgZHJhZ2dpbmdQYXN0ZWJvYXJkXSBuYW1lXSkK
ICNlbHNlCkBAIC05OCwxMyArOTgsMTMgQEAgRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVm
IGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG8KIHsKIH0K
IAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25z
dCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlv
biwKLSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlv
bkZsYWdzIGZsYWdzKQorRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3Jh
Z2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBw
bGljYXRpb25GbGFncyBmbGFncywgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGRlc3RpbmF0aW9uQWN0
aW9uKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1fZ2xv
YmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEoMCkK
ICAgICAsIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2sp
CiAgICAgLCBtX2FwcGxpY2F0aW9uRmxhZ3MoZmxhZ3MpCisgICAgLCBtX2RyYWdEZXN0aW5hdGlv
bkFjdGlvbihkZXN0aW5hdGlvbkFjdGlvbikKICAgICAsIG1fcGFzdGVib2FyZE5hbWUoZHJhZ1N0
b3JhZ2VOYW1lKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggY2YxZTQ2MTU4MjRjMDEwZGViODZmYWFlNWQzODdkNjUxNGQyYTVh
ZS4uOGExMjhiYWE5MjliYTc3ZTRjZGM5NzAyNWY1YTg2MWNiYTkwMDIzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMjksNyArMzI5
LDcgQEAKIAkJOTM5ODExMDYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkZyYW1lVmlldy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQThCNTJGMDQyODJC
NTkwMENBMkQzQSAvKiBXZWJGcmFtZVZpZXcubW0gKi87IH07CiAJCTkzOTgxMTA3MDgyNEJGMDEw
MDhERjAzOCAvKiBXZWJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFBOEI1N0EwNDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcubW0gKi87IH07
CiAJCTkzOTgxMTA4MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDQzRjlCMDQyOTM5
MkIwMENBMkQzQSAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5tbSAqLzsgfTsKLQkJOTM5ODExMEEwODI0
QkYwMTAwOERGMDM4IC8qIFdlYkRlZmF1bHRVSURlbGVnYXRlLm0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFMjdEMDA0NThDQTRCMDBDQTJEM0EgLyog
V2ViRGVmYXVsdFVJRGVsZWdhdGUubSAqLzsgfTsKKwkJOTM5ODExMEEwODI0QkYwMTAwOERGMDM4
IC8qIFdlYkRlZmF1bHRVSURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE1RTI3RDAwNDU4Q0E0QjAwQ0EyRDNBIC8qIFdlYkRlZmF1bHRV
SURlbGVnYXRlLm1tICovOyB9OwogCQk5Mzk4MTExMjA4MjRCRjAxMDA4REYwMzggLyogV2ViTlNV
UkxFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCRTZEQzM5QTA0QzYyQzRFMDA0RDBFRjYgLyogV2ViTlNVUkxFeHRyYXMubW0gKi87IH07CiAJ
CTkzOTgxMTEzMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJIaXN0b3J5Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVEQTI2MDgwNTJDQzE4NzAwQTk3QjMx
IC8qIFdlYkhpc3RvcnkubW0gKi87IH07CiAJCTkzOTgxMTE1MDgyNEJGMDEwMDhERjAzOCAvKiBX
ZWJOU0RhdGFFeHRyYXMubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJFQ0QxNDJBMDU2NTgzMEEwMDVCQjA5QyAvKiBXZWJOU0RhdGFFeHRyYXMubSAqLzsg
fTsKQEAgLTk2Niw3ICs5NjYsNyBAQAogCQk1MTU4RjZFRTEwNkQ4NjJBMDBBRjQ1N0MgLyogV2Vi
SGlzdG9yeURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkhp
c3RvcnlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVFMjdDQzA0
NThDODY1MDBDQTJEM0EgLyogV2ViVUlEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVSURlbGVnYXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1MTVFMjdDRjA0
NThDQTRCMDBDQTJEM0EgLyogV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGVmYXVsdFVJRGVsZWdhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
Ci0JCTUxNUUyN0QwMDQ1OENBNEIwMENBMkQzQSAvKiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJE
ZWZhdWx0VUlEZWxlZ2F0ZS5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKKwkJNTE1RTI3RDAwNDU4Q0E0QjAwQ0EyRDNBIC8qIFdlYkRlZmF1
bHRVSURlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViRGVmYXVsdFVJRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1MTZGMjk2RjAzQTZD
NDVBMDBDQTJEM0EgLyogV2ViSGlzdG9yeUl0ZW1JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJIaXN0b3J5SXRlbUludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwogCQk1MTg1RjYyNTEwNzEyQjgwMDA3QUEzOTMgLyogV2ViTmF2aWdhdGlvbkRhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTmF2aWdhdGlvbkRhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4NUY2MjcxMDcxMkI5NzAwN0FBMzkzIC8qIFdlYk5h
dmlnYXRpb25EYXRhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViTmF2aWdhdGlvbkRhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTUw
LDcgKzE5NTAsNyBAQAogCQkJCTUxNTJGQURGMDMzRkM1MDQwMENBMkFDRCAvKiBXZWJEZWZhdWx0
UG9saWN5RGVsZWdhdGUuaCAqLywKIAkJCQk1MTUyRkFFMDAzM0ZDNTA0MDBDQTJBQ0QgLyogV2Vi
RGVmYXVsdFBvbGljeURlbGVnYXRlLm0gKi8sCiAJCQkJNTE1RTI3Q0YwNDU4Q0E0QjAwQ0EyRDNB
IC8qIFdlYkRlZmF1bHRVSURlbGVnYXRlLmggKi8sCi0JCQkJNTE1RTI3RDAwNDU4Q0E0QjAwQ0Ey
RDNBIC8qIFdlYkRlZmF1bHRVSURlbGVnYXRlLm0gKi8sCisJCQkJNTE1RTI3RDAwNDU4Q0E0QjAw
Q0EyRDNBIC8qIFdlYkRlZmF1bHRVSURlbGVnYXRlLm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSAi
RGVmYXVsdCBEZWxlZ2F0ZXMiOwogCQkJcGF0aCA9IG1hYy9EZWZhdWx0RGVsZWdhdGVzOwpAQCAt
MzU3OCw3ICszNTc4LDcgQEAKIAkJCQlBMTBDMUQxQjE4MjAyRjlDMDAzNjg4M0EgLyogV2ViRGVm
YXVsdEZyYW1lTG9hZERlbGVnYXRlLm0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBGMDA4MjRC
RjAxMDA4REYwMzggLyogV2ViRGVmYXVsdFBvbGljeURlbGVnYXRlLm0gaW4gU291cmNlcyAqLywK
IAkJCQlBMTBDMUQxRDE4MjAyRjlDMDAzNjg4M0EgLyogV2ViRGVmYXVsdFJlc291cmNlTG9hZERl
bGVnYXRlLm0gaW4gU291cmNlcyAqLywKLQkJCQk5Mzk4MTEwQTA4MjRCRjAxMDA4REYwMzggLyog
V2ViRGVmYXVsdFVJRGVsZWdhdGUubSBpbiBTb3VyY2VzICovLAorCQkJCTkzOTgxMTBBMDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUExMEMxRDFGMTgyMDJGOUMwMDM2ODgzQSAvKiBXZWJEZWZhdWx0VUlLaXREZWxlZ2F0ZS5tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM1NDJDNDMwRkQ3NzY2RjAwRDhBQjVEIC8qIFdlYkRlbGVnYXRl
SW1wbGVtZW50YXRpb25DYWNoaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTk4QUQ5MjIxMjAx
Q0YxMDAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRV
SURlbGVnYXRlLm0gYi9Tb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1
bHRVSURlbGVnYXRlLm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNzk0MmJlMzkz
MmUwZWRmYTJlNzUxMzQzMjA5OGQxMDVhOTQ4ZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRGVmYXVsdERlbGVnYXRlcy9X
ZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tCisrKyAvZGV2L251bGwKQEAgLTEsMjc0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQg
IldlYkRlZmF1bHRVSURlbGVnYXRlLmgiCi0KLSNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIK
LSNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCi0jaW1wb3J0ICJXZWJWaWV3LmgiCi0K
LSNpZiAhUExBVEZPUk0oSU9TKQotI2ltcG9ydCAiV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVs
LmgiCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKElPUykKLSNpbXBvcnQgPFdlYkNvcmUvV0FLV2lu
ZG93Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dLVmlld1ByaXZhdGUuaD4KLSNlbmRpZgotCi0jaWYg
IVBMQVRGT1JNKElPUykKLUBpbnRlcmZhY2UgTlNBcHBsaWNhdGlvbiAoRGVjbGFyYXRpb25TdG9s
ZW5Gcm9tQXBwS2l0KQotLSAodm9pZClfY3ljbGVXaW5kb3dzUmV2ZXJzZWQ6KEJPT0wpcmV2ZXJz
ZWQ7Ci1AZW5kCi0jZW5kaWYKLQotQGltcGxlbWVudGF0aW9uIFdlYkRlZmF1bHRVSURlbGVnYXRl
Ci0KLXN0YXRpYyBXZWJEZWZhdWx0VUlEZWxlZ2F0ZSAqc2hhcmVkRGVsZWdhdGUgPSBuaWw7Ci0K
LS8vIFJldHVybiBhIG9iamVjdCB3aXRoIHZhbmlsbGEgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBw
cm90b2NvbCdzIG1ldGhvZHMKLS8vIE5vdGUgdGhpcyBmZWF0dXJlIHJlbGllcyBvbiBvdXIgZGVm
YXVsdCBkZWxlZ2F0ZSBiZWluZyBzdGF0ZWxlc3MuICBUaGlzCi0vLyBpcyBwcm9iYWJseSBhbiBp
bnZhbGlkIGFzc3VtcHRpb24gZm9yIHRoZSBXZWJVSURlbGVnYXRlLgotLy8gSWYgd2UgYWRkIGFu
eSByZWFsIGZ1bmN0aW9uYWxpdHkgdG8gdGhpcyBkZWZhdWx0IGRlbGVnYXRlIHdlIHByb2JhYmx5
Ci0vLyB3b24ndCBiZSBhYmxlIHRvIHVzZSBhIHNpbmdsZXRvbi4KLSsgKFdlYkRlZmF1bHRVSURl
bGVnYXRlICopc2hhcmVkVUlEZWxlZ2F0ZQotewotICAgIGlmICghc2hhcmVkRGVsZWdhdGUpIHsK
LSAgICAgICAgc2hhcmVkRGVsZWdhdGUgPSBbW1dlYkRlZmF1bHRVSURlbGVnYXRlIGFsbG9jXSBp
bml0XTsKLSAgICB9Ci0gICAgcmV0dXJuIHNoYXJlZERlbGVnYXRlOwotfQotCi0tIChXZWJWaWV3
ICopd2ViVmlldzogKFdlYlZpZXcgKil3diBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKXJlcXVlc3Qgd2luZG93RmVhdHVyZXM6KE5TRGljdGlvbmFyeSAqKWZlYXR1cmVz
Ci17Ci0gICAgLy8gSWYgdGhlIG5ldyBBUEkgbWV0aG9kIGRvZXNuJ3QgZXhpc3QsIGZhbGxiYWNr
IHRvIHRoZSBvbGQgdmVyc2lvbiBvZiBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3QKLSAgICAvLyBm
b3IgYmFja3dhcmRzIGNvbXBhdGFiaWxpdHkKLSAgICBpZiAoIVtbd3YgVUlEZWxlZ2F0ZV0gcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVz
dDp3aW5kb3dGZWF0dXJlczopXSAmJiBbW3d2IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6KV0pCi0gICAgICAg
IHJldHVybiBbW3d2IFVJRGVsZWdhdGVdIHdlYlZpZXc6d3YgY3JlYXRlV2ViVmlld1dpdGhSZXF1
ZXN0OnJlcXVlc3RdOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLSNpZiBQTEFURk9STShJT1MpCi0t
IChXZWJWaWV3ICopd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBjcmVhdGVXZWJWaWV3V2l0aFJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgdXNlckdlc3R1cmU6KEJPT0wpdXNlckdlc3R1
cmUKLXsKLSAgICByZXR1cm4gbmlsOwotfQotI2VuZGlmCi0KLS0gKHZvaWQpd2ViVmlld1Nob3c6
IChXZWJWaWV3ICopd3YKLXsKLX0KLQotLSAodm9pZCl3ZWJWaWV3Q2xvc2U6IChXZWJWaWV3ICop
d3YKLXsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIFtbd3Ygd2luZG93XSBjbG9zZV07Ci0jZW5k
aWYKLX0KLQotLSAodm9pZCl3ZWJWaWV3Rm9jdXM6IChXZWJWaWV3ICopd3YKLXsKLSNpZiAhUExB
VEZPUk0oSU9TKQotICAgIFtbd3Ygd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9udDp3dl07Ci0j
ZW5kaWYKLX0KLQotLSAodm9pZCl3ZWJWaWV3VW5mb2N1czogKFdlYlZpZXcgKil3dgotewotI2lm
ICFQTEFURk9STShJT1MpCi0gICAgaWYgKFtbd3Ygd2luZG93XSBpc0tleVdpbmRvd10gfHwgW1tb
d3Ygd2luZG93XSBhdHRhY2hlZFNoZWV0XSBpc0tleVdpbmRvd10pIHsKLSAgICAgICAgW05TQXBw
IF9jeWNsZVdpbmRvd3NSZXZlcnNlZDpGQUxTRV07Ci0gICAgfQotI2VuZGlmCi19Ci0KLS0gKE5T
UmVzcG9uZGVyICopd2ViVmlld0ZpcnN0UmVzcG9uZGVyOiAoV2ViVmlldyAqKXd2Ci17Ci0gICAg
cmV0dXJuIFtbd3Ygd2luZG93XSBmaXJzdFJlc3BvbmRlcl07Ci19Ci0KLS0gKHZvaWQpd2ViVmll
dzogKFdlYlZpZXcgKil3diBtYWtlRmlyc3RSZXNwb25kZXI6KE5TUmVzcG9uZGVyICopcmVzcG9u
ZGVyCi17Ci0gICAgW1t3diB3aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpyZXNwb25kZXJdOwot
fQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0U3RhdHVzVGV4dDooTlNTdHJp
bmcgKil0ZXh0Ci17Ci19Ci0KLS0gKE5TU3RyaW5nICopd2ViVmlld1N0YXR1c1RleHQ6IChXZWJW
aWV3ICopd3YKLXsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJW
aWV3ICopd3YgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnRJ
bmZvcm1hdGlvbiBtb2RpZmllckZsYWdzOihOU1VJbnRlZ2VyKW1vZGlmaWVyRmxhZ3MKLXsKLX0K
LQotLSAoQk9PTCl3ZWJWaWV3QXJlVG9vbGJhcnNWaXNpYmxlOiAoV2ViVmlldyAqKXd2Ci17Ci0g
ICAgcmV0dXJuIE5POwotfQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0VG9v
bGJhcnNWaXNpYmxlOihCT09MKXZpc2libGUKLXsKLX0KLQotLSAoQk9PTCl3ZWJWaWV3SXNTdGF0
dXNCYXJWaXNpYmxlOiAoV2ViVmlldyAqKXd2Ci17Ci0gICAgcmV0dXJuIE5POwotfQotCi0tICh2
b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0U3RhdHVzQmFyVmlzaWJsZTooQk9PTCl2aXNp
YmxlCi17Ci19Ci0KLS0gKEJPT0wpd2ViVmlld0lzUmVzaXphYmxlOiAoV2ViVmlldyAqKXd2Ci17
Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBOTzsKLSNlbHNlCi0gICAgcmV0dXJuIFtb
d3Ygd2luZG93XSBzaG93c1Jlc2l6ZUluZGljYXRvcl07Ci0jZW5kaWYKLX0KLQotLSAodm9pZCl3
ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHNldFJlc2l6YWJsZTooQk9PTClyZXNpemFibGUKLXsKLSNp
ZiAhUExBVEZPUk0oSU9TKQotICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgY2hh
bmdlIHRoZSByZXNpemFiaWxpdHkgb2YgdGhlIHdpbmRvdywKLSAgICAvLyBvbmx5IHZpc2liaWxp
dHkgb2YgdGhlIGluZGljYXRvci4KLSAgICBbW3d2IHdpbmRvd10gc2V0U2hvd3NSZXNpemVJbmRp
Y2F0b3I6cmVzaXphYmxlXTsKLSNlbmRpZgotfQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3
ICopd3Ygc2V0RnJhbWU6KE5TUmVjdClmcmFtZQotewotI2lmICFQTEFURk9STShJT1MpCi0gICAg
W1t3diB3aW5kb3ddIHNldEZyYW1lOmZyYW1lIGRpc3BsYXk6WUVTXTsKLSNlbmRpZgotfQotCi0t
IChOU1JlY3Qpd2ViVmlld0ZyYW1lOiAoV2ViVmlldyAqKXd2Ci17Ci0gICAgTlNXaW5kb3cgKndp
bmRvdyA9IFt3diB3aW5kb3ddOwotICAgIHJldHVybiB3aW5kb3cgPT0gbmlsID8gTlNaZXJvUmVj
dCA6IFt3aW5kb3cgZnJhbWVdOwotfQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Yg
cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGlu
aXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKLXsKLSAgICAvLyBGSVhNRTogV2Ugd2Fu
dCBhIGRlZmF1bHQgaGVyZSwgYnV0IHRoYXQgd291bGQgYWRkIGxvY2FsaXplZCBzdHJpbmdzLgot
fQotCi0tIChCT09MKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdENvbmZpcm1Q
YW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV2Vi
RnJhbWUgKilmcmFtZQotewotICAgIC8vIEZJWE1FOiBXZSB3YW50IGEgZGVmYXVsdCBoZXJlLCBi
dXQgdGhhdCB3b3VsZCBhZGQgbG9jYWxpemVkIHN0cmluZ3MuCi0gICAgcmV0dXJuIE5POwotfQot
Ci0tIChOU1N0cmluZyAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdFRleHRJ
bnB1dFBhbmVsV2l0aFByb21wdDooTlNTdHJpbmcgKilwcm9tcHQgZGVmYXVsdFRleHQ6KE5TU3Ry
aW5nICopZGVmYXVsdFRleHQgaW5pdGlhdGVkQnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQotewot
I2lmICFQTEFURk9STShJT1MpCi0gICAgV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsICpwYW5l
bCA9IFtbV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsIGFsbG9jXSBpbml0V2l0aFByb21wdDpw
cm9tcHQgdGV4dDpkZWZhdWx0VGV4dF07Ci0gICAgW3BhbmVsIHNob3dXaW5kb3c6bmlsXTsKLSAg
ICBOU1N0cmluZyAqcmVzdWx0OwotICAgIGlmIChbTlNBcHAgcnVuTW9kYWxGb3JXaW5kb3c6W3Bh
bmVsIHdpbmRvd11dKSB7Ci0gICAgICAgIHJlc3VsdCA9IFtwYW5lbCB0ZXh0XTsKLSAgICB9IGVs
c2UgewotICAgICAgICByZXN1bHQgPSBuaWw7Ci0gICAgfQotICAgIFtbcGFuZWwgd2luZG93XSBj
bG9zZV07Ci0gICAgW3BhbmVsIHJlbGVhc2VdOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQot
ICAgIHJldHVybiBuaWw7Ci0jZW5kaWYKLX0KLQotLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAq
KXd2IHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6KGlkPFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyPilyZXN1bHRMaXN0ZW5lcgotewotICAgIC8vIEZJWE1FOiBX
ZSB3YW50IGEgZGVmYXVsdCBoZXJlLCBidXQgdGhhdCB3b3VsZCBhZGQgbG9jYWxpemVkIHN0cmlu
Z3MuCi19Ci0KLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBwcmludEZyYW1lVmll
dzooV2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3Ci17Ci19Ci0KLQotI2lmICFQTEFURk9STShJT1Mp
Ci0tIChOU1VJbnRlZ2VyKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlv
bkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJ
bmZvCi17Ci0gICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKLX0KLQotLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlv
bkFjdGlvbjooV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWFjdGlvbiBmb3JEcmFnZ2luZ0luZm86
KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCi17Ci19Ci0KLS0gKE5TVUludGVnZXIp
d2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludDoo
TlNQb2ludClwb2ludAotewotICAgIHJldHVybiBXZWJEcmFnU291cmNlQWN0aW9uQW55OwotfQot
Ci0tICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ1NvdXJj
ZUFjdGlvbjooV2ViRHJhZ1NvdXJjZUFjdGlvbilhY3Rpb24gZnJvbVBvaW50OihOU1BvaW50KXBv
aW50IHdpdGhQYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkCi17Ci19Ci0KLS0g
KHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciB3aWxsUG9wdXBNZW51OihOU01lbnUgKilt
ZW51Ci17Ci19Ci0jZW5kaWYKLQotLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRp
ZERyYXdSZWN0OihOU1JlY3QpcmVjdAotewotfQotCi0tICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcg
KilzZW5kZXIgZGlkU2Nyb2xsRG9jdW1lbnRJbkZyYW1lVmlldzooV2ViRnJhbWVWaWV3ICopZnJh
bWVWaWV3Ci17Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBleGNlZWRl
ZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOihXZWJTZWN1cml0
eU9yaWdpbiAqKW9yaWdpbiB0b3RhbFNwYWNlTmVlZGVkOihOU1VJbnRlZ2VyKXRvdGFsU3BhY2VO
ZWVkZWQKLXsKLX0KLQotLSAoQk9PTCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHNob3VsZFJl
cGxhY2VVcGxvYWRGaWxlOihOU1N0cmluZyAqKXBhdGggdXNpbmdHZW5lcmF0ZWRGaWxlbmFtZToo
TlNTdHJpbmcgKiopZmlsZW5hbWUKLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKE5TU3RyaW5n
ICopd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZTooTlNT
dHJpbmcgKilwYXRoCi17Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotI2lmIFBMQVRGT1JNKElPUykK
LS0gKHZvaWQpd2ViVmlld1N1cHBvcnRlZE9yaWVudGF0aW9uc1VwZGF0ZWQ6KFdlYlZpZXcgKilz
ZW5kZXIKLXsKLX0KLSNlbmRpZgotCi1AZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktp
dC9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42MmUyYTgzOTUwNzczNzc3NTBmMDZlNTVhYmFkNmI2OTBlODg2ZmNjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxl
Z2F0ZS5tbQpAQCAtMCwwICsxLDI3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCIKKwor
I2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZh
dGUuaCIKKyNpbXBvcnQgIldlYlZpZXcuaCIKKworI2lmICFQTEFURk9STShJT1MpCisjaW1wb3J0
ICJXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwuaCIKKyNpbXBvcnQgIldlYktpdFZlcnNpb25D
aGVja3MuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCA8V2ViQ29yZS9X
QUtXaW5kb3cuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV0tWaWV3UHJpdmF0ZS5oPgorI2VuZGlmCisK
KyNpZiAhUExBVEZPUk0oSU9TKQorQGludGVyZmFjZSBOU0FwcGxpY2F0aW9uIChEZWNsYXJhdGlv
blN0b2xlbkZyb21BcHBLaXQpCistICh2b2lkKV9jeWNsZVdpbmRvd3NSZXZlcnNlZDooQk9PTCly
ZXZlcnNlZDsKK0BlbmQKKyNlbmRpZgorCitAaW1wbGVtZW50YXRpb24gV2ViRGVmYXVsdFVJRGVs
ZWdhdGUKKworc3RhdGljIFdlYkRlZmF1bHRVSURlbGVnYXRlICpzaGFyZWREZWxlZ2F0ZSA9IG5p
bDsKKworLy8gUmV0dXJuIGEgb2JqZWN0IHdpdGggdmFuaWxsYSBpbXBsZW1lbnRhdGlvbnMgb2Yg
dGhlIHByb3RvY29sJ3MgbWV0aG9kcworLy8gTm90ZSB0aGlzIGZlYXR1cmUgcmVsaWVzIG9uIG91
ciBkZWZhdWx0IGRlbGVnYXRlIGJlaW5nIHN0YXRlbGVzcy4gVGhpcworLy8gaXMgcHJvYmFibHkg
YW4gaW52YWxpZCBhc3N1bXB0aW9uIGZvciB0aGUgV2ViVUlEZWxlZ2F0ZS4KKy8vIElmIHdlIGFk
ZCBhbnkgcmVhbCBmdW5jdGlvbmFsaXR5IHRvIHRoaXMgZGVmYXVsdCBkZWxlZ2F0ZSB3ZSBwcm9i
YWJseQorLy8gd29uJ3QgYmUgYWJsZSB0byB1c2UgYSBzaW5nbGV0b24uCisrIChXZWJEZWZhdWx0
VUlEZWxlZ2F0ZSAqKXNoYXJlZFVJRGVsZWdhdGUKK3sKKyAgICBpZiAoIXNoYXJlZERlbGVnYXRl
KQorICAgICAgICBzaGFyZWREZWxlZ2F0ZSA9IFtbV2ViRGVmYXVsdFVJRGVsZWdhdGUgYWxsb2Nd
IGluaXRdOworICAgIHJldHVybiBzaGFyZWREZWxlZ2F0ZTsKK30KKworLSAoV2ViVmlldyAqKXdl
YlZpZXc6IChXZWJWaWV3ICopd3YgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IHdpbmRvd0ZlYXR1cmVzOihOU0RpY3Rpb25hcnkgKilmZWF0dXJlcworewor
ICAgIC8vIElmIHRoZSBuZXcgQVBJIG1ldGhvZCBkb2Vzbid0IGV4aXN0LCBmYWxsYmFjayB0byB0
aGUgb2xkIHZlcnNpb24gb2YgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0CisgICAgLy8gZm9yIGJh
Y2t3YXJkcyBjb21wYXRhYmlsaXR5CisgICAgaWYgKCFbW3d2IFVJRGVsZWdhdGVdIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6d2lu
ZG93RmVhdHVyZXM6KV0gJiYgW1t3diBVSURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0OildKQorICAgICAgICByZXR1
cm4gW1t3diBVSURlbGVnYXRlXSB3ZWJWaWV3Ond2IGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDpy
ZXF1ZXN0XTsKKyAgICByZXR1cm4gbmlsOworfQorCisjaWYgUExBVEZPUk0oSU9TKQorLSAoV2Vi
VmlldyAqKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHVzZXJHZXN0dXJlOihCT09MKXVzZXJHZXN0dXJlCit7
CisgICAgcmV0dXJuIG5pbDsKK30KKyNlbmRpZgorCistICh2b2lkKXdlYlZpZXdTaG93OiAoV2Vi
VmlldyAqKXd2Cit7Cit9CisKKy0gKHZvaWQpd2ViVmlld0Nsb3NlOiAoV2ViVmlldyAqKXd2Cit7
CisjaWYgIVBMQVRGT1JNKElPUykKKyAgICBbW3d2IHdpbmRvd10gY2xvc2VdOworI2VuZGlmCit9
CisKKy0gKHZvaWQpd2ViVmlld0ZvY3VzOiAoV2ViVmlldyAqKXd2Cit7CisjaWYgIVBMQVRGT1JN
KElPUykKKyAgICBbW3d2IHdpbmRvd10gbWFrZUtleUFuZE9yZGVyRnJvbnQ6d3ZdOworI2VuZGlm
Cit9CisKKy0gKHZvaWQpd2ViVmlld1VuZm9jdXM6IChXZWJWaWV3ICopd3YKK3sKKyNpZiAhUExB
VEZPUk0oSU9TKQorICAgIGlmIChbW3d2IHdpbmRvd10gaXNLZXlXaW5kb3ddIHx8IFtbW3d2IHdp
bmRvd10gYXR0YWNoZWRTaGVldF0gaXNLZXlXaW5kb3ddKQorICAgICAgICBbTlNBcHAgX2N5Y2xl
V2luZG93c1JldmVyc2VkOkZBTFNFXTsKKyNlbmRpZgorfQorCistIChOU1Jlc3BvbmRlciAqKXdl
YlZpZXdGaXJzdFJlc3BvbmRlcjogKFdlYlZpZXcgKil3dgoreworICAgIHJldHVybiBbW3d2IHdp
bmRvd10gZmlyc3RSZXNwb25kZXJdOworfQorCistICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICop
d3YgbWFrZUZpcnN0UmVzcG9uZGVyOihOU1Jlc3BvbmRlciAqKXJlc3BvbmRlcgoreworICAgIFtb
d3Ygd2luZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6cmVzcG9uZGVyXTsKK30KKworLSAodm9pZCl3
ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHNldFN0YXR1c1RleHQ6KE5TU3RyaW5nICopdGV4dAorewor
fQorCistIChOU1N0cmluZyAqKXdlYlZpZXdTdGF0dXNUZXh0OiAoV2ViVmlldyAqKXd2Cit7Cisg
ICAgcmV0dXJuIG5pbDsKK30KKworLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IG1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50OihOU0RpY3Rpb25hcnkgKillbGVtZW50SW5mb3JtYXRpb24gbW9k
aWZpZXJGbGFnczooTlNVSW50ZWdlciltb2RpZmllckZsYWdzCit7Cit9CisKKy0gKEJPT0wpd2Vi
Vmlld0FyZVRvb2xiYXJzVmlzaWJsZTogKFdlYlZpZXcgKil3dgoreworICAgIHJldHVybiBOTzsK
K30KKworLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHNldFRvb2xiYXJzVmlzaWJsZToo
Qk9PTCl2aXNpYmxlCit7Cit9CisKKy0gKEJPT0wpd2ViVmlld0lzU3RhdHVzQmFyVmlzaWJsZTog
KFdlYlZpZXcgKil3dgoreworICAgIHJldHVybiBOTzsKK30KKworLSAodm9pZCl3ZWJWaWV3OiAo
V2ViVmlldyAqKXd2IHNldFN0YXR1c0JhclZpc2libGU6KEJPT0wpdmlzaWJsZQoreworfQorCist
IChCT09MKXdlYlZpZXdJc1Jlc2l6YWJsZTogKFdlYlZpZXcgKil3dgoreworI2lmIFBMQVRGT1JN
KElPUykKKyAgICByZXR1cm4gTk87CisjZWxzZQorICAgIHJldHVybiBbW3d2IHdpbmRvd10gc2hv
d3NSZXNpemVJbmRpY2F0b3JdOworI2VuZGlmCit9CisKKy0gKHZvaWQpd2ViVmlldzogKFdlYlZp
ZXcgKil3diBzZXRSZXNpemFibGU6KEJPT0wpcmVzaXphYmxlCit7CisjaWYgIVBMQVRGT1JNKElP
UykKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGFjdHVhbGx5IGNoYW5nZSB0aGUgcmVzaXph
YmlsaXR5IG9mIHRoZSB3aW5kb3csCisgICAgLy8gb25seSB2aXNpYmlsaXR5IG9mIHRoZSBpbmRp
Y2F0b3IuCisgICAgW1t3diB3aW5kb3ddIHNldFNob3dzUmVzaXplSW5kaWNhdG9yOnJlc2l6YWJs
ZV07CisjZW5kaWYKK30KKworLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHNldEZyYW1l
OihOU1JlY3QpZnJhbWUKK3sKKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIFtbd3Ygd2luZG93XSBz
ZXRGcmFtZTpmcmFtZSBkaXNwbGF5OllFU107CisjZW5kaWYKK30KKworLSAoTlNSZWN0KXdlYlZp
ZXdGcmFtZTogKFdlYlZpZXcgKil3dgoreworICAgIE5TV2luZG93ICp3aW5kb3cgPSBbd3Ygd2lu
ZG93XTsKKyAgICByZXR1cm4gd2luZG93ID09IG5pbCA/IE5TWmVyb1JlY3QgOiBbd2luZG93IGZy
YW1lXTsKK30KKworLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1bkphdmFTY3JpcHRB
bGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1l
OihXZWJGcmFtZSAqKWZyYW1lCit7CisgICAgLy8gRklYTUU6IFdlIHdhbnQgYSBkZWZhdWx0IGhl
cmUsIGJ1dCB0aGF0IHdvdWxkIGFkZCBsb2NhbGl6ZWQgc3RyaW5ncy4KK30KKworLSAoQk9PTCl3
ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2Fn
ZTooTlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUK
K3sKKyAgICAvLyBGSVhNRTogV2Ugd2FudCBhIGRlZmF1bHQgaGVyZSwgYnV0IHRoYXQgd291bGQg
YWRkIGxvY2FsaXplZCBzdHJpbmdzLgorICAgIHJldHVybiBOTzsKK30KKworLSAoTlNTdHJpbmcg
Kil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQ
cm9tcHQ6KE5TU3RyaW5nICopcHJvbXB0IGRlZmF1bHRUZXh0OihOU1N0cmluZyAqKWRlZmF1bHRU
ZXh0IGluaXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKK3sKKyNpZiAhUExBVEZPUk0o
SU9TKQorICAgIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbCAqcGFuZWwgPSBbW1dlYkphdmFT
Y3JpcHRUZXh0SW5wdXRQYW5lbCBhbGxvY10gaW5pdFdpdGhQcm9tcHQ6cHJvbXB0IHRleHQ6ZGVm
YXVsdFRleHRdOworICAgIFtwYW5lbCBzaG93V2luZG93Om5pbF07CisgICAgTlNTdHJpbmcgKnJl
c3VsdDsKKyAgICBpZiAoW05TQXBwIHJ1bk1vZGFsRm9yV2luZG93OltwYW5lbCB3aW5kb3ddXSkK
KyAgICAgICAgcmVzdWx0ID0gW3BhbmVsIHRleHRdOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0
ID0gbmlsOworICAgIFtbcGFuZWwgd2luZG93XSBjbG9zZV07CisgICAgW3BhbmVsIHJlbGVhc2Vd
OworICAgIHJldHVybiByZXN1bHQ7CisjZWxzZQorICAgIHJldHVybiBuaWw7CisjZW5kaWYKK30K
KworLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0
b25XaXRoUmVzdWx0TGlzdGVuZXI6KGlkPFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyPilyZXN1
bHRMaXN0ZW5lcgoreworICAgIC8vIEZJWE1FOiBXZSB3YW50IGEgZGVmYXVsdCBoZXJlLCBidXQg
dGhhdCB3b3VsZCBhZGQgbG9jYWxpemVkIHN0cmluZ3MuCit9CisKKy0gKHZvaWQpd2ViVmlldzoo
V2ViVmlldyAqKXNlbmRlciBwcmludEZyYW1lVmlldzooV2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3
Cit7Cit9CisKKworI2lmICFQTEFURk9STShJT1MpCistIChOU1VJbnRlZ2VyKXdlYlZpZXc6KFdl
YlZpZXcgKil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86
KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCit7CisgICAgaWYgKCFsaW5rZWRPbk9y
QWZ0ZXIoU0RLVmVyc2lvbjo6Rmlyc3RXaXRoRHJvcFRvTmF2aWdhdGVEaXNhbGxvd2VkQnlEZWZh
dWx0KSkKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKKworICAg
IHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkgJiB+V2ViRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTG9hZDsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyB3aWxs
UGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbjooV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWFj
dGlvbiBmb3JEcmFnZ2luZ0luZm86KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCit7
Cit9CisKKy0gKE5TVUludGVnZXIpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZHJhZ1NvdXJj
ZUFjdGlvbk1hc2tGb3JQb2ludDooTlNQb2ludClwb2ludAoreworICAgIHJldHVybiBXZWJEcmFn
U291cmNlQWN0aW9uQW55OworfQorCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3
IHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbjooV2ViRHJhZ1NvdXJjZUFjdGlvbilhY3Rpb24g
ZnJvbVBvaW50OihOU1BvaW50KXBvaW50IHdpdGhQYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilw
YXN0ZWJvYXJkCit7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciB3aWxs
UG9wdXBNZW51OihOU01lbnUgKiltZW51Cit7Cit9CisjZW5kaWYKKworLSAodm9pZCl3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIGRpZERyYXdSZWN0OihOU1JlY3QpcmVjdAoreworfQorCistICh2
b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkU2Nyb2xsRG9jdW1lbnRJbkZyYW1lVmll
dzooV2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3Cit7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3Vy
aXR5T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiB0b3RhbFNwYWNlTmVlZGVkOihO
U1VJbnRlZ2VyKXRvdGFsU3BhY2VOZWVkZWQKK3sKK30KKworLSAoQk9PTCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIHNob3VsZFJlcGxhY2VVcGxvYWRGaWxlOihOU1N0cmluZyAqKXBhdGggdXNp
bmdHZW5lcmF0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKiopZmlsZW5hbWUKK3sKKyAgICByZXR1cm4g
Tk87Cit9CisKKy0gKE5TU3RyaW5nICopd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBnZW5lcmF0
ZVJlcGxhY2VtZW50RmlsZTooTlNTdHJpbmcgKilwYXRoCit7CisgICAgcmV0dXJuIG5pbDsKK30K
KworI2lmIFBMQVRGT1JNKElPUykKKy0gKHZvaWQpd2ViVmlld1N1cHBvcnRlZE9yaWVudGF0aW9u
c1VwZGF0ZWQ6KFdlYlZpZXcgKilzZW5kZXIKK3sKK30KKyNlbmRpZgorCitAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oCmluZGV4IDBmNjA2ZTI4NDQw
NTJiODFhODUzYmMwZGM2ZTE0NGZmODI3ZDk5YjMuLjAwMzJjYTkyZGE2ZTA5MGY3ODI5ODU2YzQ4
ZGQ0M2IwNTZiYWQ3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0
VmVyc2lvbkNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lv
bkNoZWNrcy5oCkBAIC04Myw2ICs4Myw4IEBACiBlbnVtIGNsYXNzIFNES1ZlcnNpb24gOiB1aW50
MzJfdCB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIEZpcnN0VG9FeGNsdWRlTG9jYWxTdG9yYWdl
RnJvbUJhY2t1cCA9IERZTERfSU9TX1ZFUlNJT05fMTFfMCwKKyNlbHNlCisgICAgRmlyc3RXaXRo
RHJvcFRvTmF2aWdhdGVEaXNhbGxvd2VkQnlEZWZhdWx0ID0gRFlMRF9NQUNPU1hfVkVSU0lPTl8x
MF8xMwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggZmE0NGE3ZjY1ZTgzOTc0MTA4MmIyNWYyOGMxNmI0YzI4
YTllZThhMi4uZDhlZWQ1OTE3YTlkZjc5MWZjMWVlNDU5ODI4MTdlNDQ5ZDFkOWVjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAt
MzcsNyArMzcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgV2ViQ29yZTo6
RHJhZ0RhdGEmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlv
bihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdl
YkNvcmU6OkRhdGFUcmFuc2ZlciYpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5h
dGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92
ZXJyaWRlOworICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9y
RHJhZyhEcmFnRGF0YVJlZiBwbGF0Zm9ybURhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhZ0Nv
bnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0
aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHdpbmRvd1BvaW50KSBvdmVycmlkZTsKICAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFn
SW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkcmFnUG9zLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpE
YXRhVHJhbnNmZXImLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24p
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQubW0KaW5kZXggZWM0ZDY4M2ZhZGYyZjZlNmJjZGM1NDQxZTg3MzZlOWIyNTc4Yjdh
OC4uNmUwYjMxNDkzZmYzMDIxYmQyOTcyMTYxZTliZDZiMDdmZWQ4YjcxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCkBAIC03OSw5
ICs3OSw5IEBAIHN0YXRpYyBXZWJIVE1MVmlldyAqZ2V0VG9wSFRNTFZpZXcoRnJhbWUqIGZyYW1l
KQogICAgIHJldHVybiAoV2ViSFRNTFZpZXcqKVtba2l0KCZmcmFtZS0+cGFnZSgpLT5tYWluRnJh
bWUoKSkgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwogfQogCi1XZWJDb3JlOjpEcmFnRGVzdGlu
YXRpb25BY3Rpb24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoY29uc3QgV2ViQ29y
ZTo6RHJhZ0RhdGEmIGRyYWdEYXRhKQorV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIFdl
YkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0YSkK
IHsKLSAgICByZXR1cm4gKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbilbW21fd2ViVmll
dyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKV07CisgICAg
cmV0dXJuIChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24pW1ttX3dlYlZpZXcgX1VJRGVs
ZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2tGb3JEcmFnZ2luZ0luZm86cGxhdGZvcm1EYXRhXTsKIH0KIAogdm9pZCBXZWJEcmFnQ2xpZW50
Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRp
b25BY3Rpb24gYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYgZHJhZ0RhdGEpCkBAIC0x
ODEsNyArMTgxLDcgQEAgYm9vbCBXZWJEcmFnQ2xpZW50Ojp1c2VMZWdhY3lEcmFnQ2xpZW50KCkK
IHsKICAgICByZXR1cm4gZmFsc2U7CiB9Ci1XZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24g
V2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEm
KQorV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1h
c2tGb3JEcmFnKERyYWdEYXRhUmVmKQogewogICAgIHJldHVybiBEcmFnRGVzdGluYXRpb25BY3Rp
b25Ob25lOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDA3MGQwMzU1
ODkyOGQxODZlOGRhZjUxNzc1ZjExM2FmM2ZiZTU1OWQuLjdhNzM1MWFhNzQzOWRlNjY4OTU2ZTBm
ODYwYjc1MDhjNDgyYTA0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAg
LTYzOTIsOCArNjM5MiwxMCBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBiYWNraW5nUHJvcGVy
dHlPbGRTY2FsZUZhY3RvcktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbAogewogICAgIEludFBv
aW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBJbnRQb2lu
dCBnbG9iYWwoZ2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3Nl
bGYgd2luZG93XSkpOwotICAgIERyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50
LCBnbG9iYWwsIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJ
bmZvXSk7Ci0gICAgcmV0dXJuIGNvcmUoc2VsZiktPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVy
ZWQoZHJhZ0RhdGEpOworCisgICAgYXV0byYgY29udHJvbGxlciA9IGNvcmUoc2VsZiktPmRyYWdD
b250cm9sbGVyKCk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQs
IGdsb2JhbCwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0lu
Zm9dLCBjb250cm9sbGVyLmNsaWVudCgpLmFjdGlvbk1hc2tGb3JEcmFnKGRyYWdnaW5nSW5mbykp
OworICAgIHJldHVybiBjb250cm9sbGVyLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKIH0KIAogLSAo
TlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nVXBkYXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFn
Z2luZ0luZm8KQEAgLTY0MDQsOCArNjQwNiwxMCBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBi
YWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3RvcktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbAog
CiAgICAgSW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwog
ICAgIEludFBvaW50IGdsb2JhbChnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9j
YXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJ
bmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5n
SW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFn
czpkcmFnZ2luZ0luZm9dKTsKLSAgICByZXR1cm4gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFn
VXBkYXRlZChkcmFnRGF0YSk7CisKKyAgICBhdXRvJiBjb250cm9sbGVyID0gY29yZShzZWxmKS0+
ZHJhZ0NvbnRyb2xsZXIoKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNs
aWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdn
aW5nSW5mb10sIGNvbnRyb2xsZXIuY2xpZW50KCkuYWN0aW9uTWFza0ZvckRyYWcoZHJhZ2dpbmdJ
bmZvKSk7CisgICAgcmV0dXJuIGNvbnRyb2xsZXIuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOwogfQog
CiAtICh2b2lkKWRyYWdnaW5nRXhpdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5m
bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmNwcAppbmRleCBkZWIwMGQ3MmEzMGE4MzdmNTVlMjM5Njk5ODhjMGMxYmRiNDc0YjZmLi5hZjg4
MGQzZjk1MzdjYWMxZDA3NDA1NzliZWQxODg1NDNjNzVlZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcApAQCAtNjQsMTQgKzY0
LDE0IEBAIFdlYkRyYWdDbGllbnQ6OldlYkRyYWdDbGllbnQoV2ViVmlldyogd2ViVmlldykKICAg
ICBBU1NFUlQod2ViVmlldyk7CiB9CiAKLURyYWdEZXN0aW5hdGlvbkFjdGlvbiBXZWJEcmFnQ2xp
ZW50OjphY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitEcmFnRGVz
dGluYXRpb25BY3Rpb24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoRHJhZ0RhdGFS
ZWYgcGxhdGZvcm1EYXRhKQogewogICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZT4gZGVsZWdhdGVS
ZWYgPSAwOwogICAgIC8vRGVmYXVsdCBiZWhhdmlvdXIgKGVnLiBubyBkZWxlZ2F0ZSwgb3IgY2Fs
bGJhY2sgbm90IGltcGxlbWVudGVkKSBpcyB0byBhbGxvdwogICAgIC8vYW55IGFjdGlvbgogICAg
IFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBtYXNrID0gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
QW55OwogICAgIGlmIChTVUNDRUVERUQobV93ZWJWaWV3LT51aURlbGVnYXRlKCZkZWxlZ2F0ZVJl
ZikpKQotICAgICAgICBkZWxlZ2F0ZVJlZi0+ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRy
YWdnaW5nSW5mbyhtX3dlYlZpZXcsIGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpLCAmbWFzayk7Cisg
ICAgICAgIGRlbGVnYXRlUmVmLT5kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJ
bmZvKG1fd2ViVmlldywgcGxhdGZvcm1EYXRhLCAmbWFzayk7CiAKICAgICByZXR1cm4gKERyYWdE
ZXN0aW5hdGlvbkFjdGlvbiltYXNrOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IDhmMzBiOTYxNDA5MWQ5Njc0YWIxYTZjMjRm
NWYzZDcwZTExZmEwMDYuLmU5NzI5ZTM2YTE5ZTQ0MjU0MWIwNWVjZWI0NTg3YzdjNjkxYmI2M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2ViVmlldyop
OwogICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOwogCi0gICAgdmly
dHVhbCBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0ZvckRyYWcoY29u
c3QgV2ViQ29yZTo6RHJhZ0RhdGEmKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRyYWdEZXN0aW5h
dGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YVJlZik7CiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFn
RGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpEcmFnRGF0YSYpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3Vy
Y2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQ29jb2EvV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQ29jb2EvV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41MTVmMzY4NjZlODZkZmVhOTdmNmQ5YTllMWI2ZDJkODdhMWE1ZTE1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS0RyYWdEZXN0aW5hdGlvbkFj
dGlvbi5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tG
b3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KKwordHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIFdLRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uKSB7CisgICAgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25Ob25lICAgID0g
MCwKKyAgICBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkRIVE1MICAgPSAxLAorICAgIFdLRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uRWRpdCAgICA9IDIsCisgICAgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25M
b2FkICAgID0gNCwKKyAgICBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSAgICAgPSBOU1VJbnRl
Z2VyTWF4Cit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKaW5kZXggNjE2NmFiNmVhMTUxNjE5Y2Q5N2FmMWI3M2I2YTQ5NWFlNzA5
OGYyYy4uOGYzOTE1MDM0MTY3NmY0MGFlODg5YzNmYzY2OTYwNzUwYmJjZjE1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTEyMjQs
NiArMTIyNCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEuZmlsZU5hbWVzKCk7CiAjZW5kaWYKKyAgICBlbmNvZGVy
LmVuY29kZUVudW0oZHJhZ0RhdGEuZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOwogfQogCiBib29s
IEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQpAQCAtMTI1NSw3ICsxMjU2LDExIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxE
cmFnRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCi0gICAgZHJhZ0RhdGEgPSBEcmFnRGF0YShw
YXN0ZWJvYXJkTmFtZSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3MpOworICAgIERyYWdEZXN0aW5hdGlv
bkFjdGlvbiBkZXN0aW5hdGlvbkFjdGlvbjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShk
ZXN0aW5hdGlvbkFjdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRyYWdEYXRh
ID0gRHJhZ0RhdGEocGFzdGVib2FyZE5hbWUsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlv
biwgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzLCBkZXN0aW5h
dGlvbkFjdGlvbik7CiAgICAgZHJhZ0RhdGEuc2V0RmlsZU5hbWVzKGZpbGVOYW1lcyk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggMzYxYTVjYWRkYWY0MDg3NmYxZjFh
ZWQ4OTc5YzhhZWM4ZTBiMmY3Zi4uNTExYTRjNGY1MjU5YzlmYmQ4NTE4OTViM2Y4M2VjNjNlZWUy
OGJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJ
RGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFdLX0FQSV9F
TkFCTEVECiAKKyNpbXBvcnQgPFdlYktpdC9XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mby5oPgogCkBAIC02NSw2ICs2Niw3IEBAIHN0cnVjdCBVSUVkZ2VJbnNl
dHM7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNoZWNrVXNlck1lZGlh
UGVybWlzc2lvbkZvclVSTDooTlNVUkwgKil1cmwgbWFpbkZyYW1lVVJMOihOU1VSTCAqKW1haW5G
cmFtZVVSTCBmcmFtZUlkZW50aWZpZXI6KE5TVUludGVnZXIpZnJhbWVJZGVudGlmaWVyIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0aG9yaXplZCkpZGVj
aXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogLSAodm9pZClfd2ViVmlld0RpZEJlZ2luQ2FwdHVyZVNlc3Npb246KFdLV2Vi
VmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAtICh2b2lkKV93ZWJWaWV3RGlkRW5kQ2FwdHVyZVNlc3Npb246KFdLV2Vi
VmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CistIChXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbilfd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOihp
ZClkcmFnZ2luZ0luZm8gV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAjaWYgVEFSR0VUX09TX0lQSE9ORQogLSAoQk9PTClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBzaG91bGRJbmNsdWRlQXBwTGlua0FjdGlvbnNGb3JFbGVtZW50Oihf
V0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgV0tfQVBJX0FWQUlMQUJMRShpb3MoOS4w
KSk7CiAtIChOU0FycmF5ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYWN0aW9uc0Zv
ckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBkZWZhdWx0QWN0aW9u
czooTlNBcnJheTxfV0tFbGVtZW50QWN0aW9uICo+ICopZGVmYXVsdEFjdGlvbnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGE2OTg2
ZDJlZmJlZWY5YjRjMzkwYzFkYTg1OWFjMWEzNGJkMTI1M2IuLmVjMmI3YjlkZDIwZWY2MTZjZTEx
ZWM2NGYzZDQwYmNmNjczYjg0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC00NSw2ICs0NSw3IEBACiAjaW1wb3J0ICJSZW1vdGVP
YmplY3RSZWdpc3RyeS5oIgogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5o
IgogI2ltcG9ydCAiVUlEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVmVyc2lvbkNoZWNrcy5oIgogI2lt
cG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJWaWV3U25hcHNob3RTdG9y
ZS5oIgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oIgpAQCAtMzQ1Miw2ICsz
NDUzLDIyIEBAIFdFQkNPUkVfQ09NTUFORCh5YW5rQW5kU2VsZWN0KQogewogfQogCisjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKKworLSAoV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pX3dlYl9kcmFn
RGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJh
Z2dpbmdJbmZvCit7CisgICAgaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IHVpRGVsZWdhdGUgPSAo
aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KVtzZWxmIFVJRGVsZWdhdGVdOworICAgIGlmIChbdWlE
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86KV0pCisgICAgICAgIHJldHVybiBbdWlEZWxl
Z2F0ZSBfd2ViVmlldzpzZWxmIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0lu
Zm86ZHJhZ2dpbmdJbmZvXTsKKworICAgIGlmICghbGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RL
VmVyc2lvbjo6Rmlyc3RXaXRoRHJvcFRvTmF2aWdhdGVEaXNhbGxvd2VkQnlEZWZhdWx0KSkKKyAg
ICAgICAgcmV0dXJuIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55OworCisgICAgcmV0dXJuIFdL
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55ICYgfldLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsK
K30KKworI2VuZGlmCisKIC0gKHZvaWQpX3dlYl9kaXNtaXNzQ29udGVudFJlbGF0aXZlQ2hpbGRX
aW5kb3dzCiB7CiAgICAgX2ltcGwtPmRpc21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3NG
cm9tVmlld09ubHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bQppbmRleCBjMDNhOGMzNzExZjVhZGI3ODQ3NDUwZDZjZTI1N2MyYmQ2OTEwM2QzLi4xM2RhMWNj
ZTVhMjFiOTc4ZmRiNTcxNWI3MTBhNjJmZDQwZTUxYjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJBUElJ
Y29uTG9hZGluZ0NsaWVudC5oIgogI2ltcG9ydCAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNp
bXBvcnQgIldLQnJvd3NpbmdDb250ZXh0R3JvdXBQcml2YXRlLmgiCisjaW1wb3J0ICJXS0RyYWdE
ZXN0aW5hdGlvbkFjdGlvbi5oIgogI2ltcG9ydCAiV0tOU0RhdGEuaCIKICNpbXBvcnQgIldLUHJv
Y2Vzc0dyb3VwUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgpA
QCAtMTAwOCw2ICsxMDA5LDE1IEBAIFNvbWUgb3RoZXIgZWRpdGluZy1yZWxhdGVkIG1ldGhvZHMg
c3RpbGwgdW5pbXBsZW1lbnRlZDoKICAgICBbc2VsZiBfZGlkQ2hhbmdlQ29udGVudFNpemU6bmV3
U2l6ZV07CiB9CiAKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorCistIChXS0RyYWdEZXN0aW5h
dGlvbkFjdGlvbilfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzooaWQg
PE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KK3sKKyAgICByZXR1cm4gV0tEcmFnRGVzdGlu
YXRpb25BY3Rpb25Bbnk7Cit9CisKKyNlbmRpZgorCiAtICh2b2lkKV93ZWJfZGlzbWlzc0NvbnRl
bnRSZWxhdGl2ZUNoaWxkV2luZG93cwogewogICAgIFtzZWxmIF9kaXNtaXNzQ29udGVudFJlbGF0
aXZlQ2hpbGRXaW5kb3dzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9WZXJzaW9uQ2hlY2tzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmVy
c2lvbkNoZWNrcy5oCmluZGV4IDMwNTI5NWM5ZGRjYzUzZjg4YmFhZTJmOGI1NjRkNmExYjgzMWMz
YTMuLjUwMmFkZjZlZjA2MGE3YmJlOWQ5ZDVhYjRlYjY4MGY4M2QyYzRjMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9WZXJzaW9uQ2hlY2tzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MuaApAQCAtMzgsNiArMzgs
NyBAQCBlbnVtIGNsYXNzIFNES1ZlcnNpb24gOiB1aW50MzJfdCB7CiAjZWxpZiBQTEFURk9STShN
QUMpCiAgICAgRmlyc3RXaXRoTmV0d29ya0NhY2hlID0gRFlMRF9NQUNPU1hfVkVSU0lPTl8xMF8x
MSwKICAgICBGaXJzdFdpdGhFeGNlcHRpb25zRm9yRHVwbGljYXRlQ29tcGxldGlvbkhhbmRsZXJD
YWxscyA9IERZTERfTUFDT1NYX1ZFUlNJT05fMTBfMTMsCisgICAgRmlyc3RXaXRoRHJvcFRvTmF2
aWdhdGVEaXNhbGxvd2VkQnlEZWZhdWx0ID0gRFlMRF9NQUNPU1hfVkVSU0lPTl8xMF8xMwogI2Vu
ZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5o
CmluZGV4IDY5MmE5MjRhY2Y0YmQ5ZjFkN2NkYjFhOGQ1ZDg5Yjc2YmJmMzNhNGUuLjFhYTRjZWMy
YTVkMjQ3MmQ5MDcxY2QxOWUyNGVhZTQzYzI5Nzk1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgUExBVEZP
Uk0oTUFDKQogCiAjaW5jbHVkZSAiUGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlLmgiCisjaW5j
bHVkZSAiV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJXS0xheW91dE1vZGUu
aCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJfV0tPdmVybGF5U2Nyb2xs
YmFyU3R5bGUuaCIKQEAgLTkxLDYgKzkyLDEwIEBAIE9CSkNfQ0xBU1MgV2ViUGxheWJhY2tDb250
cm9sc01hbmFnZXI7CiAKIC0gKHZvaWQpX3dlYl9kaWRDaGFuZ2VDb250ZW50U2l6ZTooTlNTaXpl
KW5ld1NpemU7CiAKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorLSAoV0tEcmFnRGVzdGluYXRp
b25BY3Rpb24pX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86KGlkIDxO
U0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvOworI2VuZGlmCisKIEBvcHRpb25hbAogLSAodm9p
ZClfd2ViX2RpZEFkZE1lZGlhQ29udHJvbHNNYW5hZ2VyOihpZCljb250cm9sc01hbmFnZXI7CiAt
ICh2b2lkKV93ZWJfZGlkUmVtb3ZlTWVkaWFDb250cm9sc01hbmFnZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggZWNhOWVhNGZkNTc1YWM1
OTY0MTY1YTNjYmQ4MDA2MjI2YjgzZmY3MC4uZGE1MmIyNmQ4MmI3MjMxZWEwMzc5N2NjMzcwMjJl
ODcxNzFmZTA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQpAQCAtMzU3Nyw3ICszNTc3LDggQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBs
OjpkcmFnZ2luZ0VudGVyZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAg
ICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5n
SW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2Nh
dGlvbiwgbV92aWV3LndpbmRvdykpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRy
YWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVy
YXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNh
dGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcsIGRyYWdnaW5nSW5mbykpOworICAgIGF1dG8gZHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPihbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRy
YWdnaW5nSW5mb10pOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5m
bywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRy
YWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdz
Rm9yRHJhZyhtX3ZpZXcsIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbik7CiAK
ICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogICAgIG1fcGFnZS0+
ZHJhZ0VudGVyZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFt
ZSk7CkBAIC0zNTg4LDcgKzM1ODksOCBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRy
YWdnaW5nVXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBX
ZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZv
LmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQg
Z2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9u
LCBtX3ZpZXcud2luZG93KSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dp
bmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9u
RmxhZ3NGb3JEcmFnKG1fdmlldywgZHJhZ2dpbmdJbmZvKSk7CisgICAgYXV0byBkcmFnRGVzdGlu
YXRpb25BY3Rpb24gPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+
KFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dp
bmdJbmZvXSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBj
bGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dp
bmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JE
cmFnKG1fdmlldywgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKTsKICAgICBt
X3BhZ2UtPmRyYWdVcGRhdGVkKGRyYWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJv
YXJkLm5hbWUpOwogCiAgICAgTlNJbnRlZ2VyIG51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBt
X3BhZ2UtPmN1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJjMmUx
ZjRjMGY3ODJjYTIzMTZjNDlmMmM5MWE3YjljZWQ5NWNjZmUuLjhhMjBkMDA5MDUzODQ5OGUzZjEx
MWMxYTQzYmI5NWE2OTc1YjJkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5NjEsNiArMTk2MSw3IEBACiAJCUVEODJBN0Yy
MTI4QzZGQUYwMDQ0NzdCMyAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIyRjBGRjEyODlGQ0Q5MDA4NUU3NEYg
LyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUVEQ0E3MUI3MTI4RERBOEMwMDIwMUIyNiAvKiBXS0J1bmRsZVBh
Z2VPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBMjJGMTAwMTI4OUZDRDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCAq
LzsgfTsKIAkJRjAzNjk3ODgxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYwMzY5Nzg3MTVG
NEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgKi87IH07CisJCUY0MDlCQTE4MUU2
RTY0QkMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwOUJBMTcxRTZFNjRCMzAwOURBMjhF
IC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQzMzcwOTcxRTRENzJFRDAwMDUyQjBFIC8qIF9XS1Rl
c3RpbmdEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQzMzcwOTYxRTRENkE0NDAwMDUyQjBFIC8qIF9XS1Rlc3RpbmdEZWxlZ2F0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY2MTEzRTI1
MTI2Q0UxODIwMDU3RDBBNyAvKiBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2MTEzRTI0MTI2Q0UxODIwMDU3
RDBBNyAvKiBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgfTsKIAkJRjYxMTNFMjgxMjZD
RTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2MTEzRTI2MTI2Q0UxOUIwMDU3RDBB
NyAvKiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgKi87IH07CkBAIC00MjI2LDYgKzQyMjcs
NyBAQAogCQlFNEU4NjQ4RTFCMTY3M0ZCMDBDODJGNDAgLyogVmVyc2lvbkNoZWNrcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWZXJzaW9uQ2hlY2tzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0RTg2NDhGMUIxNjczRkIwMEM4MkY0MCAvKiBWZXJzaW9uQ2hl
Y2tzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmVyc2lvbkNo
ZWNrcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcxNUY0QkYwNTAw
QzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRjQwOUJBMTcxRTZFNjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzM3MDk2MUU0RDZBNDQwMDA1MkIw
RSAvKiBfV0tUZXN0aW5nRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLVGVzdGluZ0RlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2
MTEzRTI0MTI2Q0UxODIwMDU3RDBBNyAvKiBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2MTEzRTI2MTI2Q0UxOUIwMDU3RDBBNyAv
KiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01NjMyLDYgKzU2MzQsNyBAQAogCQkJCTM3M0QxMjI0MThBNDczQjMwMDY2
RDlDQyAvKiBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmggKi8sCiAJCQkJMzdBNzA5
QTYxRTNFQTBGRDAwQ0E1OTY5IC8qIFdLRGF0YURldGVjdG9yVHlwZXMuaCAqLywKIAkJCQkzN0E3
MDlBODFFM0VBNDBDMDBDQTU5NjkgLyogV0tEYXRhRGV0ZWN0b3JUeXBlc0ludGVybmFsLmggKi8s
CisJCQkJRjQwOUJBMTcxRTZFNjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
LmggKi8sCiAJCQkJMzdERkE2RkYxODEwQkI5MjAwMUY0QTlGIC8qIFdLRm91bmRhdGlvbi5oICov
LAogCQkJCTFBOUUzMjk5MTgyMkUxQ0MwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdC5oICovLAog
CQkJCTFBOUUzMjk4MTgyMkUxQ0MwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdC5tbSAqLywKQEAg
LTgwMTYsNiArODAxOSw3IEBACiAJCQkJQkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFj
aG1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQTMxNzMyMTM0Q0VBNkMwMDdDOUE0RiAvKiBB
dHRyaWJ1dGVkU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5NzEyQTg4Mzg4MDA2
Mjk1MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRjQwOUJBMTgxRTZFNjRCQzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5OTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThFOEVGOTE2QjIw
OTFDMDBFOTE0MjkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTJGNThBMzEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKaW5kZXggMGYxNmJlOWE1NzY4
MGNmZmIxMGNjZGI1NWRhMzE3MzEyZmM2NWM0OS4uN2ZkMzkyNTUxNjNjNGMyMWY0MzRjZDBkNTgy
MmYxZmRhMTcyODY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZv
aWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VB
Y3Rpb24sIGNvbnN0IEludFBvaW50CiB7CiB9CiAKLURyYWdEZXN0aW5hdGlvbkFjdGlvbiBXZWJE
cmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBEcmFnRGF0YSYpCitEcmFnRGVzdGlu
YXRpb25BY3Rpb24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoRHJhZ0RhdGFSZWYp
CiB7CiAgICAgcmV0dXJuIERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmgKaW5kZXggYTk2ZWU4MTYyMDM2MmUzZWE5MjM1NTcyODcwMmRiNmQyZTM3MGVlYS4uZmI4MGY2
NWU3YTBlNzBjZjZjZWVjYTY0NTlkNjE4MDJiZWRmNjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAg
LTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3Qg
V2ViQ29yZTo6RHJhZ0RhdGEmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ1Nv
dXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkRy
YWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBXZWJDb3JlOjpEcmFn
RGF0YSYpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rp
b25NYXNrRm9yRHJhZyhEcmFnRGF0YVJlZikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6RHJhZ1Nv
dXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiB3aW5kb3dQb2ludCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0YXJ0RHJhZyhXZWJD
b3JlOjpEcmFnSW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkcmFnSW1hZ2VPcmlnaW4s
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBldmVudFBvcywgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYgZHJhZ0ltYWdlQW5jaG9yLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpG
cmFtZSYsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303702</attachid>
            <date>2017-03-07 12:42:27 -0800</date>
            <delta_ts>2017-03-09 11:32:26 -0800</delta_ts>
            <desc>Fix 32-bit Mac build</desc>
            <filename>bug-169168-20170307124200.patch</filename>
            <type>text/plain</type>
            <size>62438</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI4MjE1ZjFhMjY2NTAz
ZjI1NDQyOGQxOWZhMGRhNGJhMGY0YjE0Mi4uYjY5N2I3YjU4ODNhNWE1MzI4MGM0MTU3MjdlM2M0
MmUyYjY0Y2Q3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTAzLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBh
IFVJIGRlbGVnYXRlIFNQSSBob29rIHRvIGVuYWJsZSBvciBkaXNhYmxlIG5hdmlnYXRpb24gb24g
ZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY4ODM3ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBjbGllbnQgaG9va3MgZm9y
IHRoZSBkcmFnIGRlc3RpbmF0aW9uIGFjdGlvbiBpbiBXZWJDb3JlIHRvIGFzayBmb3IgdGhlIGRy
YWcgZGVzdGluYXRpb24gYWN0aW9uIG1hc2sKKyAgICAgICAgdXBvbiBpbml0aWFsaXppbmcgdGhl
IERyYWdEYXRhLiBJbiBEcmFnQ29udHJvbGxlciwgcmF0aGVyIHRoYW4gc2V0dGluZyBtX2RyYWdE
ZXN0aW5hdGlvbkFjdGlvbiB0byB0aGUgcmVzdWx0IG9mCisgICAgICAgIG1fY2xpZW50LmFjdGlv
bk1hc2tGb3JEcmFnLCB3ZSBpbnN0ZWFkIHNldCBpdCB0byB0aGUgRHJhZ0RhdGEncyBkZXN0aW5h
dGlvbiBhY3Rpb24uCisKKyAgICAgICAgVGVzdHMgdG8gY29tZSBpbiBhIGZ1dHVyZSBwYXRjaC4K
KworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIHBhZ2UvRHJh
Z0NsaWVudC5oOgorCisgICAgICAgIFJhdGhlciB0aGFuIHBhc3MgaW4gYSBEcmFnRGF0YSwgcGFz
cyBpbiBvbmx5IHRoZSBwbGF0Zm9ybSBkYXRhIHRoYXQgd2UgbmVlZCB0byBoYW5kIHRvIHRoZSBk
ZWxlZ2F0ZS4gVGhpcyBpcworICAgICAgICBiZWNhdXNlIHdlIG5vdyBhc2sgZm9yIGRyYWcgZGVz
dGluYXRpb24gYWN0aW9ucyBwcmlvciB0byBjcmVhdGluZyB0aGUgRHJhZ0RhdGEuCisKKyAgICAg
ICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250
cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZCk6CisKKyAgICAgICAgVXBkYXRlIHRoZSBhdmFp
bGFibGUgZHJhZyBkZXN0aW5hdGlvbiBhY3Rpb25zIGluIFdlYkNvcmUgdXNpbmcgdGhlIGRlc3Rp
bmF0aW9uIGFjdGlvbnMgc3RvcmVkIGluIERyYWdEYXRhIHJhdGhlcgorICAgICAgICB0aGFuIGNh
bGxpbmcgb3V0IHRvIHRoZSBjbGllbnQgZGVsZWdhdGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9E
cmFnRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpvcGVy
YXRvciA9KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorCiAyMDE3LTAzLTAxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWN0dWFsbHkgZml4
IFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3ODI2YjBhMjQ4YzMyNWY4ZWYyNzUxZDdhOWM2
NTYxMDM0OWU4ZWYuLmYyODMzZTgzN2UyNWE4YmY1ODNjNGI4NDUyNGZlOTk3MDU4ODExOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDMtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIGEgVUkgZGVsZWdhdGUgU1BJ
IGhvb2sgdG8gZW5hYmxlIG9yIGRpc2FibGUgbmF2aWdhdGlvbiBvbiBkcm9wCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkxNjgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzMwNjg4Mzc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNlZSBXZWJLaXQgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuIFJl
bmFtZXMgV2ViRGVmYXVsdFVJRGVsZWdhdGUubSA9PiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbS4K
KworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE3LTAy
LTI3ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFi
bGUgU1VQUE9SVFNfVEVYVF9CQVNFRF9BUEkgaW4gV2ViS2l0TGVnYWN5IGZvciBpT1MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCA1MDFmMDkzZmYzZmIzYmE4MWZkMTNlNjU5YTFjODE0YmQ2NGIwMTE3Li5i
NjQ5MzZmMTllYWJkYzczZGQ0OTFmYTg4MjNmNmE0YjJlODk1NTM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjkgQEAKKzIwMTctMDMtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIGEgVUkgZGVsZWdhdGUgU1BJIGhvb2sg
dG8gZW5hYmxlIG9yIGRpc2FibGUgbmF2aWdhdGlvbiBvbiBkcm9wCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkxNjgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzMwNjg4Mzc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlZmFjdG9ycyBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJhZyB0byB0
YWtlIHBsYXRmb3JtIGRhdGEgb25seSwgcmF0aGVyIHRoYW4gdGhlIGVudGlyZSBEcmFnRGF0YS4g
U2VlIHRoZQorICAgICAgICBXZWJDb3JlIENoYW5nZUxvZyBlbnRyeSBmb3IgbW9yZSBkZXRhaWxz
LiBBbHNvIHJlbmFtZXMgV2ViRGVmYXVsdFVJRGVsZWdhdGUubSB0byBXZWJEZWZhdWx0VUlEZWxl
Z2F0ZS5tbSwgc2luY2UKKyAgICAgICAgd2UgbmVlZCB0byBpbXBvcnQgYSBDKysgaGVhZGVyIGZv
ciBsaW5rZWRPbk9yQWZ0ZXIoKS4KKworICAgICAgICBUaGUgZGVmYXVsdCBkZWxlZ2F0ZSBpbXBs
ZW1lbnRhdGlvbiBvZiB3ZWJWaWV3OmRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2lu
Z0luZm86IG5vdyBjaGVja3MgaWYgdGhlIGN1cnJlbnQKKyAgICAgICAgYXBwbGljYXRpb24gaXMg
bGlua2luZyBhZ2FpbnN0IDEwLjEyIG9yIGVhcmxpZXIsIGFuZCBpZiBzbywgd2lsbCBhbGxvdyBh
bnkgZHJhZyBkZXN0aW5hdGlvbiBhY3Rpb24gaW5zdGVhZCBvZgorICAgICAgICB0aGUgbmV3IGRl
ZmF1bHQgdmFsdWUgb2YgZXZlcnl0aGluZyBidXQgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZC4K
KworICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubW06IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRV
SURlbGVnYXRlLm0uCisgICAgICAgICgtW1dlYkRlZmF1bHRVSURlbGVnYXRlIHdlYlZpZXc6ZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpdKToKKyAgICAgICAgKiBNaXNj
L1dlYktpdFZlcnNpb25DaGVja3MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbToKKyAg
ICAgICAgKFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpdKToKKwogMjAxNy0wMy0wMSAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTMyNTkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMGZlMzE3N2E0
N2ExY2Y2NjU0OTA1YTYzZWYxYTRjYzIzNzVkNDFhZS4uY2NlOGY2MTYwYTBjY2FkMDFkOTRhMDRm
ZTM5MjNlY2E2ZGU0NjhiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3
LTAzLTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFtXSzJdIEFkZCBhIFVJIGRlbGVnYXRlIFNQSSBob29rIHRvIGVuYWJsZSBvciBkaXNhYmxlIG5h
dmlnYXRpb24gb24gZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY5MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY4ODM3ND4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaW5vciB0d2VhayB0
byBhZGp1c3QgZm9yIGEgY2hhbmdlZCBpbnRlcmZhY2UuIFNlZSBXZWJLaXQgYW5kIFdlYkNvcmUg
Q2hhbmdlTG9ncyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFz
a0ZvckRyYWcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKwog
MjAxNy0wMy0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIEFjdHVhbGx5IGZpeCBXaW5kb3dzIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQyNWIy
MTdmMjcyM2I3NzkwOTE3ZmQ4NWIyMTg3YTgyZDAxOTIzYjcuLmI2NjYxZWE3ODJmYzNlOTE4NWI2
MzhhYzBhY2JiZDZiZGE0NTBiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxNy0w
My0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBb
V0syXSBBZGQgYSBVSSBkZWxlZ2F0ZSBTUEkgaG9vayB0byBlbmFibGUgb3IgZGlzYWJsZSBuYXZp
Z2F0aW9uIG9uIGRyb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2OTE2OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA2ODgzNzQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBjdXN0b21p
emluZyB0aGUgc2V0IG9mIGFsbG93ZWQgYWN0aW9ucyBvbiBkcm9wIGluIFdlYktpdDIgYnkgaW50
cm9kdWNpbmcgYSBuZXcgbWV0aG9kIHRvIFdLVUlEZWxlZ2F0ZVByaXZhdGUKKyAgICAgICAgdGhh
dCByZXR1cm5zIGEgV0tEcmFnRGVzdGluYXRpb25BY3Rpb24gZ2l2ZW4gcGxhdGZvcm0gZHJhZ2dp
bmcgaW5mby4gVGhlc2UgZmxhZ3MgYXJlIHRoZW4gdXNlZCB0byBpbml0aWFsaXplIHRoZQorICAg
ICAgICBEcmFnRGF0YSBzZW50IG92ZXIgdG8gdGhlIHdlYiBwcm9jZXNzLCB3aGVyZSB0aGV5IHVw
ZGF0ZSBEcmFnQ29udHJvbGxlcidzIHZpZXcgb2YgdGhlIGFsbG93ZWQgZGVzdGluYXRpb24gYWN0
aW9ucy4KKworICAgICAgICBNb3ZpbmcgZm9yd2FyZCwgdGhlIGRlZmF1bHQgYWN0aW9uIG1hc2sg
Zm9yIFdLV2ViVmlld3Mgd2lsbCBpbmNsdWRlIGV2ZXJ5dGhpbmcgZXhjZXB0IFdLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTG9hZCwKKyAgICAgICAgdGhvdWdoIGZvciBhcHBsY2lhdGlvbnMgbGlua2Vk
IG9uIG9yIGJlZm9yZSAxMC4xMiwgd2Ugd2lsbCBzdGlsbCBkZWZhdWx0IHRvIFdLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uQW55IHRvIG1pdGlnYXRlCisgICAgICAgIGFueSBjb21wYXRpYmlsaXR5IHJp
c2suCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
Lmg6CisKKyAgICAgICAgSW50cm9kdWNlIFdLMiBjbGllbnQtZmFjaW5nIHZlcnNpb25zIG9mIFdl
YkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBmbGFncy4KKworICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERy
YWdEYXRhPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46
OmRlY29kZSk6CisKKyAgICAgICAgU2VyaWFsaXplIERyYWdEYXRhJ3MgZGVzdGluYXRpb24gYWN0
aW9ucyB3aGVuIHNlbmRpbmcgRHJhZ0RhdGEgb3ZlciBJUEMuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF93ZWJfZHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOl0pOgorCisgICAgICAgIEZvciBXS1dlYlZp
ZXcsIGFsbG93IGFsbCBkcmFnIGRlc3RpbmF0aW9uIGFjdGlvbnMgZXhjZXB0IGZvciBsb2FkaW5n
IChpLmUuIGRyb3AtdG8tbmF2aWdhdGUpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25G
b3JEcmFnZ2luZ0luZm86XSk6CisKKyAgICAgICAgRm9yIFdLVmlldywgYWxsb3cgYWxsIHR5cGVz
IG9mIGRyYWcgZGVzdGluYXRpb24gYWN0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9WZXJzaW9uQ2hlY2tzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFbnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmRyYWdnaW5nVXBkYXRlZCk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmFjdGlv
bk1hc2tGb3JEcmFnKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuaDoKKwogMjAxNy0wMy0wMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIC1bV0tXZWJWaWV3IGFkanVzdGVkRGF0YUludGVy
YWN0aW9uSXRlbVByb3ZpZGVyczpdIHdpdGggYSBVSSBkZWxlZ2F0ZSBtZXRob2QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYWZjODU2YTU0MzlmMmVhNjM0NGY0YTlk
NDAwN2NhNzFhNTBiZWQ3NS4uM2FmOTdmOWI4NzFkNjBhNjFjYjE4Mjk3ZWI1YjQzN2Q3ZDkyNzdh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTEyOSw3ICsxMjks
NyBAQCBjbGFzcyBFbXB0eURpYWdub3N0aWNMb2dnaW5nQ2xpZW50IGZpbmFsIDogcHVibGljIERp
YWdub3N0aWNMb2dnaW5nQ2xpZW50IHsKIGNsYXNzIEVtcHR5RHJhZ0NsaWVudCBmaW5hbCA6IHB1
YmxpYyBEcmFnQ2xpZW50IHsKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgRHJhZ0RhdGEmKSBmaW5hbCB7IH0KICAg
ICB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25z
dCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYpIGZpbmFsIHsgfQotICAgIERyYWdEZXN0aW5hdGlv
bkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBEcmFnRGF0YSYpIGZpbmFsIHsgcmV0dXJu
IERyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmU7IH0KKyAgICBEcmFnRGVzdGluYXRpb25BY3Rpb24g
YWN0aW9uTWFza0ZvckRyYWcoRHJhZ0RhdGFSZWYpIGZpbmFsIHsgcmV0dXJuIERyYWdEZXN0aW5h
dGlvbkFjdGlvbk5vbmU7IH0KICAgICBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25N
YXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBmaW5hbCB7IHJldHVybiBEcmFnU291cmNlQWN0
aW9uTm9uZTsgfQogICAgIHZvaWQgc3RhcnREcmFnKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQm
LCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBEYXRhVHJhbnNmZXImLCBGcmFt
ZSYsIERyYWdTb3VyY2VBY3Rpb24pIGZpbmFsIHsgfQogICAgIHZvaWQgZHJhZ0NvbnRyb2xsZXJE
ZXN0cm95ZWQoKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKaW5kZXggYjAyMjA3
ZDhjMzRmYzNhMTE2ODA0YzVhMDQ2ZGQ1Nzk0ZWZmNmRhMC4uMTk2MjRkZGVkMjZjODQwMzMzMDI4
OTdkOWRhZjZjOWJmMDJlMGIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKKyNpbmNs
dWRlICJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIkRyYWdJdGVtLmgiCiAjaW5jbHVkZSAiRmxvYXRQ
b2ludC5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCkBAIC0zMyw3ICszNCw2IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBEYXRhVHJhbnNmZXI7Ci1jbGFzcyBEcmFnRGF0YTsK
IGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdlOwpAQCAtNDYsNyArNDYs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRp
b25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBEcmFnRGF0YSYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rp
b24sIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJikgPSAwOwotICAgIHZpcnR1YWwgRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKGNvbnN0IERyYWdEYXRhJikgPSAw
OworICAgIHZpcnR1YWwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKERy
YWdEYXRhUmVmIHBsYXRmb3JtRGF0YSkgPSAwOwogICAgIHZpcnR1YWwgRHJhZ1NvdXJjZUFjdGlv
biBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JiByb290Vmlld1Bv
aW50KSA9IDA7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhEcmFnSW1hZ2UsIGNv
bnN0IEludFBvaW50JiBkcmFnSW1hZ2VPcmlnaW4sIGNvbnN0IEludFBvaW50JiBldmVudFBvcywg
Y29uc3QgRmxvYXRQb2ludCYgZHJhZ0ltYWdlQW5jaG9yLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYs
IERyYWdTb3VyY2VBY3Rpb24pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKaW5kZXggNThlMTdmZGQxNDQ4ODY4Y2JjYzlkN2M1NTczMDZiMjY3NjVjYWM3MS4uZWJiZDg5
N2VjYWQwNDA0Zjk0NzliMzljZDhmNmVhYzAxMWFjZGQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCBEcmFnT3BlcmF0aW9uIERyYWdD
b250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEp
CiB7CiAgICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudChtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1l
bnRBdFBvaW50KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpKTsKIAotICAgIG1fZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uID0gbV9jbGllbnQuYWN0aW9uTWFza0ZvckRyYWcoZHJhZ0RhdGEpOworICAg
IG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID0gZHJhZ0RhdGEuZHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
KCk7CiAgICAgaWYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID09IERyYWdEZXN0aW5hdGlvbkFj
dGlvbk5vbmUpIHsKICAgICAgICAgY2xlYXJEcmFnQ2FyZXQoKTsgLy8gRklYTUU6IFdoeSBub3Qg
Y2FsbCBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG51bGxwdHIpPwogICAgICAgICByZXR1cm4gRHJh
Z09wZXJhdGlvbk5vbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKaW5kZXggYWI2
N2M2NjZkYTgxMGU5NTdkOGZlM2U5OTYxYmVkZDE4MzQ2YTM4YS4uYjQyOGMzNzM5M2ZlY2Q0YTFh
ODgwNTgwZmVkNjhlYjliY2U0YzRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNw
cApAQCAtMzIsMjMgKzMyLDIzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZP
Uk0oQ09DT0EpCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIAot
ICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgZmxhZ3MpCitEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERy
YWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxh
Z3MsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBkZXN0aW5hdGlvbkFjdGlvbikKICAgICA6IG1fY2xp
ZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2Jh
bFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKGRhdGEpCiAgICAgLCBtX2RyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9hcHBs
aWNhdGlvbkZsYWdzKGZsYWdzKQorICAgICwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb24oZGVzdGlu
YXRpb25BY3Rpb24pCiB7ICAKIH0KIAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLAotICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxp
Y2F0aW9uRmxhZ3MgZmxhZ3MpCitEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiwgY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgZmxhZ3MsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBkZXN0aW5hdGlvbkFjdGlvbikKICAgICA6
IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9u
KGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCiAgICAgLCBtX2Ry
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9h
cHBsaWNhdGlvbkZsYWdzKGZsYWdzKQorICAgICwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb24oZGVz
dGluYXRpb25BY3Rpb24pCiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
CmluZGV4IDNjZjExZTdkYTAxNDllZjQ3OTA0NzNmNTg1ZGE3OTA5NTJiNzg0MjcuLjE5NTcyMWIx
ZmRhM2VjODhlMjhmZWY4ZTMzMjZjOTY1OTVjZjQyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuaApAQCAtNzgsOCArNzgsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBGaWxlbmFtZUNvbnZl
cnNpb25Qb2xpY3kgeyBEb05vdENvbnZlcnRGaWxlbmFtZXMsIENvbnZlcnRGaWxlbmFtZXMgfTsK
IAogICAgIC8vIGNsaWVudFBvc2l0aW9uIGlzIHRha2VuIHRvIGJlIHRoZSBwb3NpdGlvbiBvZiB0
aGUgZHJhZyBldmVudCB3aXRoaW4gdGhlIHRhcmdldCB3aW5kb3csIHdpdGggKDAsMCkgYXQgdGhl
IHRvcCBsZWZ0Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5v
bmUpOwotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3Jh
Z2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFn
QXBwbGljYXRpb25Ob25lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJl
ZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxp
Y2F0aW9uTm9uZSwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbnMgPSBEcmFnRGVzdGluYXRp
b25BY3Rpb25BbnkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYg
ZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IElu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgPSBEcmFnQXBwbGljYXRpb25Ob25lLCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9ucyA9
IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSk7CiAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBzaG91
bGQgdXNlZCBvbmx5IGJ5IFdlYktpdDIgSVBDIGJlY2F1c2UgRHJhZ0RhdGEKICAgICAvLyBpcyBp
bml0aWFsaXplZCBieSB0aGUgZGVjb2RlciBhbmQgbm90IGluIHRoZSBjb25zdHJ1Y3Rvci4KICAg
ICBEcmFnRGF0YSgpIHsgfQpAQCAtMTA1LDYgKzEwNSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNv
bnRhaW5zQ29sb3IoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zRmlsZXMoKSBjb25zdDsKICAg
ICB1bnNpZ25lZCBudW1iZXJPZkZpbGVzKCkgY29uc3Q7CisgICAgRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uIGRyYWdEZXN0aW5hdGlvbkFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uOyB9CiAgICAgdm9pZCBzZXRGaWxlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZpbGVO
YW1lcykgeyBtX2ZpbGVOYW1lcyA9IFdURk1vdmUoZmlsZU5hbWVzKTsgfQogICAgIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlTmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVOYW1lczsgfQog
I2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTIxLDYgKzEyMiw3IEBAIHB1YmxpYzoKICAgICAgICAg
bV9wbGF0Zm9ybURyYWdEYXRhID0gZGF0YS5tX3BsYXRmb3JtRHJhZ0RhdGE7CiAgICAgICAgIG1f
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrID0gZGF0YS5tX2RyYWdnaW5nU291cmNlT3BlcmF0
aW9uTWFzazsKICAgICAgICAgbV9hcHBsaWNhdGlvbkZsYWdzID0gZGF0YS5tX2FwcGxpY2F0aW9u
RmxhZ3M7CisgICAgICAgIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID0gZGF0YS5tX2RyYWdEZXN0
aW5hdGlvbkFjdGlvbjsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KICNlbmRpZgpAQCAt
MTMyLDYgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgRHJhZ09wZXJhdGlvbiBtX2RyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzazsKICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBtX2FwcGxpY2F0aW9u
RmxhZ3M7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlTmFtZXM7CisgICAgRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFN0cmluZyBtX3Bhc3RlYm9hcmROYW1lOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KaW5kZXggOThkN2I3ZmUxNThlMjc5NmZlMmM1YmQ4OTRi
YmM3NDUwYmM4YjRlMy4uY2Y3OGI0YTk0OTIwYTJjNTU5Zjg2NjZkODM0ZWJjNTk2ZjQ3YWM5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpAQCAtODMsMTMg
KzgzLDEzIEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRpZmZQYXN0ZWJvYXJkVHlwZSgpCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCAKLSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBs
aWNhdGlvbkZsYWdzIGZsYWdzKQorRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlv
bkZsYWdzIGZsYWdzLCBEcmFnRGVzdGluYXRpb25BY3Rpb24gZGVzdGluYXRpb25BY3Rpb24pCiAg
ICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3Np
dGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YShkYXRhKQogICAg
ICwgbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soc291cmNlT3BlcmF0aW9uTWFzaykKICAg
ICAsIG1fYXBwbGljYXRpb25GbGFncyhmbGFncykKKyAgICAsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKGRlc3RpbmF0aW9uQWN0aW9uKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fcGFzdGVi
b2FyZE5hbWUoW1ttX3BsYXRmb3JtRHJhZ0RhdGEgZHJhZ2dpbmdQYXN0ZWJvYXJkXSBuYW1lXSkK
ICNlbHNlCkBAIC05OCwxMyArOTgsMTMgQEAgRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVm
IGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG8KIHsKIH0K
IAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25z
dCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlv
biwKLSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlv
bkZsYWdzIGZsYWdzKQorRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3Jh
Z2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBw
bGljYXRpb25GbGFncyBmbGFncywgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGRlc3RpbmF0aW9uQWN0
aW9uKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1fZ2xv
YmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEoMCkK
ICAgICAsIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2sp
CiAgICAgLCBtX2FwcGxpY2F0aW9uRmxhZ3MoZmxhZ3MpCisgICAgLCBtX2RyYWdEZXN0aW5hdGlv
bkFjdGlvbihkZXN0aW5hdGlvbkFjdGlvbikKICAgICAsIG1fcGFzdGVib2FyZE5hbWUoZHJhZ1N0
b3JhZ2VOYW1lKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggY2YxZTQ2MTU4MjRjMDEwZGViODZmYWFlNWQzODdkNjUxNGQyYTVh
ZS4uOGExMjhiYWE5MjliYTc3ZTRjZGM5NzAyNWY1YTg2MWNiYTkwMDIzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMjksNyArMzI5
LDcgQEAKIAkJOTM5ODExMDYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkZyYW1lVmlldy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQThCNTJGMDQyODJC
NTkwMENBMkQzQSAvKiBXZWJGcmFtZVZpZXcubW0gKi87IH07CiAJCTkzOTgxMTA3MDgyNEJGMDEw
MDhERjAzOCAvKiBXZWJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFBOEI1N0EwNDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcubW0gKi87IH07
CiAJCTkzOTgxMTA4MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDQzRjlCMDQyOTM5
MkIwMENBMkQzQSAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5tbSAqLzsgfTsKLQkJOTM5ODExMEEwODI0
QkYwMTAwOERGMDM4IC8qIFdlYkRlZmF1bHRVSURlbGVnYXRlLm0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFMjdEMDA0NThDQTRCMDBDQTJEM0EgLyog
V2ViRGVmYXVsdFVJRGVsZWdhdGUubSAqLzsgfTsKKwkJOTM5ODExMEEwODI0QkYwMTAwOERGMDM4
IC8qIFdlYkRlZmF1bHRVSURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE1RTI3RDAwNDU4Q0E0QjAwQ0EyRDNBIC8qIFdlYkRlZmF1bHRV
SURlbGVnYXRlLm1tICovOyB9OwogCQk5Mzk4MTExMjA4MjRCRjAxMDA4REYwMzggLyogV2ViTlNV
UkxFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCRTZEQzM5QTA0QzYyQzRFMDA0RDBFRjYgLyogV2ViTlNVUkxFeHRyYXMubW0gKi87IH07CiAJ
CTkzOTgxMTEzMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJIaXN0b3J5Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVEQTI2MDgwNTJDQzE4NzAwQTk3QjMx
IC8qIFdlYkhpc3RvcnkubW0gKi87IH07CiAJCTkzOTgxMTE1MDgyNEJGMDEwMDhERjAzOCAvKiBX
ZWJOU0RhdGFFeHRyYXMubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJFQ0QxNDJBMDU2NTgzMEEwMDVCQjA5QyAvKiBXZWJOU0RhdGFFeHRyYXMubSAqLzsg
fTsKQEAgLTk2Niw3ICs5NjYsNyBAQAogCQk1MTU4RjZFRTEwNkQ4NjJBMDBBRjQ1N0MgLyogV2Vi
SGlzdG9yeURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkhp
c3RvcnlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVFMjdDQzA0
NThDODY1MDBDQTJEM0EgLyogV2ViVUlEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVSURlbGVnYXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1MTVFMjdDRjA0
NThDQTRCMDBDQTJEM0EgLyogV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGVmYXVsdFVJRGVsZWdhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
Ci0JCTUxNUUyN0QwMDQ1OENBNEIwMENBMkQzQSAvKiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJE
ZWZhdWx0VUlEZWxlZ2F0ZS5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKKwkJNTE1RTI3RDAwNDU4Q0E0QjAwQ0EyRDNBIC8qIFdlYkRlZmF1
bHRVSURlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViRGVmYXVsdFVJRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1MTZGMjk2RjAzQTZD
NDVBMDBDQTJEM0EgLyogV2ViSGlzdG9yeUl0ZW1JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJIaXN0b3J5SXRlbUludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwogCQk1MTg1RjYyNTEwNzEyQjgwMDA3QUEzOTMgLyogV2ViTmF2aWdhdGlvbkRhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTmF2aWdhdGlvbkRhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4NUY2MjcxMDcxMkI5NzAwN0FBMzkzIC8qIFdlYk5h
dmlnYXRpb25EYXRhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViTmF2aWdhdGlvbkRhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTUw
LDcgKzE5NTAsNyBAQAogCQkJCTUxNTJGQURGMDMzRkM1MDQwMENBMkFDRCAvKiBXZWJEZWZhdWx0
UG9saWN5RGVsZWdhdGUuaCAqLywKIAkJCQk1MTUyRkFFMDAzM0ZDNTA0MDBDQTJBQ0QgLyogV2Vi
RGVmYXVsdFBvbGljeURlbGVnYXRlLm0gKi8sCiAJCQkJNTE1RTI3Q0YwNDU4Q0E0QjAwQ0EyRDNB
IC8qIFdlYkRlZmF1bHRVSURlbGVnYXRlLmggKi8sCi0JCQkJNTE1RTI3RDAwNDU4Q0E0QjAwQ0Ey
RDNBIC8qIFdlYkRlZmF1bHRVSURlbGVnYXRlLm0gKi8sCisJCQkJNTE1RTI3RDAwNDU4Q0E0QjAw
Q0EyRDNBIC8qIFdlYkRlZmF1bHRVSURlbGVnYXRlLm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSAi
RGVmYXVsdCBEZWxlZ2F0ZXMiOwogCQkJcGF0aCA9IG1hYy9EZWZhdWx0RGVsZWdhdGVzOwpAQCAt
MzU3OCw3ICszNTc4LDcgQEAKIAkJCQlBMTBDMUQxQjE4MjAyRjlDMDAzNjg4M0EgLyogV2ViRGVm
YXVsdEZyYW1lTG9hZERlbGVnYXRlLm0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBGMDA4MjRC
RjAxMDA4REYwMzggLyogV2ViRGVmYXVsdFBvbGljeURlbGVnYXRlLm0gaW4gU291cmNlcyAqLywK
IAkJCQlBMTBDMUQxRDE4MjAyRjlDMDAzNjg4M0EgLyogV2ViRGVmYXVsdFJlc291cmNlTG9hZERl
bGVnYXRlLm0gaW4gU291cmNlcyAqLywKLQkJCQk5Mzk4MTEwQTA4MjRCRjAxMDA4REYwMzggLyog
V2ViRGVmYXVsdFVJRGVsZWdhdGUubSBpbiBTb3VyY2VzICovLAorCQkJCTkzOTgxMTBBMDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUExMEMxRDFGMTgyMDJGOUMwMDM2ODgzQSAvKiBXZWJEZWZhdWx0VUlLaXREZWxlZ2F0ZS5tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM1NDJDNDMwRkQ3NzY2RjAwRDhBQjVEIC8qIFdlYkRlbGVnYXRl
SW1wbGVtZW50YXRpb25DYWNoaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTk4QUQ5MjIxMjAx
Q0YxMDAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRV
SURlbGVnYXRlLm0gYi9Tb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1
bHRVSURlbGVnYXRlLm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNzk0MmJlMzkz
MmUwZWRmYTJlNzUxMzQzMjA5OGQxMDVhOTQ4ZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRGVmYXVsdERlbGVnYXRlcy9X
ZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tCisrKyAvZGV2L251bGwKQEAgLTEsMjc0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQg
IldlYkRlZmF1bHRVSURlbGVnYXRlLmgiCi0KLSNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIK
LSNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCi0jaW1wb3J0ICJXZWJWaWV3LmgiCi0K
LSNpZiAhUExBVEZPUk0oSU9TKQotI2ltcG9ydCAiV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVs
LmgiCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKElPUykKLSNpbXBvcnQgPFdlYkNvcmUvV0FLV2lu
ZG93Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dLVmlld1ByaXZhdGUuaD4KLSNlbmRpZgotCi0jaWYg
IVBMQVRGT1JNKElPUykKLUBpbnRlcmZhY2UgTlNBcHBsaWNhdGlvbiAoRGVjbGFyYXRpb25TdG9s
ZW5Gcm9tQXBwS2l0KQotLSAodm9pZClfY3ljbGVXaW5kb3dzUmV2ZXJzZWQ6KEJPT0wpcmV2ZXJz
ZWQ7Ci1AZW5kCi0jZW5kaWYKLQotQGltcGxlbWVudGF0aW9uIFdlYkRlZmF1bHRVSURlbGVnYXRl
Ci0KLXN0YXRpYyBXZWJEZWZhdWx0VUlEZWxlZ2F0ZSAqc2hhcmVkRGVsZWdhdGUgPSBuaWw7Ci0K
LS8vIFJldHVybiBhIG9iamVjdCB3aXRoIHZhbmlsbGEgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBw
cm90b2NvbCdzIG1ldGhvZHMKLS8vIE5vdGUgdGhpcyBmZWF0dXJlIHJlbGllcyBvbiBvdXIgZGVm
YXVsdCBkZWxlZ2F0ZSBiZWluZyBzdGF0ZWxlc3MuICBUaGlzCi0vLyBpcyBwcm9iYWJseSBhbiBp
bnZhbGlkIGFzc3VtcHRpb24gZm9yIHRoZSBXZWJVSURlbGVnYXRlLgotLy8gSWYgd2UgYWRkIGFu
eSByZWFsIGZ1bmN0aW9uYWxpdHkgdG8gdGhpcyBkZWZhdWx0IGRlbGVnYXRlIHdlIHByb2JhYmx5
Ci0vLyB3b24ndCBiZSBhYmxlIHRvIHVzZSBhIHNpbmdsZXRvbi4KLSsgKFdlYkRlZmF1bHRVSURl
bGVnYXRlICopc2hhcmVkVUlEZWxlZ2F0ZQotewotICAgIGlmICghc2hhcmVkRGVsZWdhdGUpIHsK
LSAgICAgICAgc2hhcmVkRGVsZWdhdGUgPSBbW1dlYkRlZmF1bHRVSURlbGVnYXRlIGFsbG9jXSBp
bml0XTsKLSAgICB9Ci0gICAgcmV0dXJuIHNoYXJlZERlbGVnYXRlOwotfQotCi0tIChXZWJWaWV3
ICopd2ViVmlldzogKFdlYlZpZXcgKil3diBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKXJlcXVlc3Qgd2luZG93RmVhdHVyZXM6KE5TRGljdGlvbmFyeSAqKWZlYXR1cmVz
Ci17Ci0gICAgLy8gSWYgdGhlIG5ldyBBUEkgbWV0aG9kIGRvZXNuJ3QgZXhpc3QsIGZhbGxiYWNr
IHRvIHRoZSBvbGQgdmVyc2lvbiBvZiBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3QKLSAgICAvLyBm
b3IgYmFja3dhcmRzIGNvbXBhdGFiaWxpdHkKLSAgICBpZiAoIVtbd3YgVUlEZWxlZ2F0ZV0gcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVz
dDp3aW5kb3dGZWF0dXJlczopXSAmJiBbW3d2IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6KV0pCi0gICAgICAg
IHJldHVybiBbW3d2IFVJRGVsZWdhdGVdIHdlYlZpZXc6d3YgY3JlYXRlV2ViVmlld1dpdGhSZXF1
ZXN0OnJlcXVlc3RdOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLSNpZiBQTEFURk9STShJT1MpCi0t
IChXZWJWaWV3ICopd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBjcmVhdGVXZWJWaWV3V2l0aFJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgdXNlckdlc3R1cmU6KEJPT0wpdXNlckdlc3R1
cmUKLXsKLSAgICByZXR1cm4gbmlsOwotfQotI2VuZGlmCi0KLS0gKHZvaWQpd2ViVmlld1Nob3c6
IChXZWJWaWV3ICopd3YKLXsKLX0KLQotLSAodm9pZCl3ZWJWaWV3Q2xvc2U6IChXZWJWaWV3ICop
d3YKLXsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIFtbd3Ygd2luZG93XSBjbG9zZV07Ci0jZW5k
aWYKLX0KLQotLSAodm9pZCl3ZWJWaWV3Rm9jdXM6IChXZWJWaWV3ICopd3YKLXsKLSNpZiAhUExB
VEZPUk0oSU9TKQotICAgIFtbd3Ygd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9udDp3dl07Ci0j
ZW5kaWYKLX0KLQotLSAodm9pZCl3ZWJWaWV3VW5mb2N1czogKFdlYlZpZXcgKil3dgotewotI2lm
ICFQTEFURk9STShJT1MpCi0gICAgaWYgKFtbd3Ygd2luZG93XSBpc0tleVdpbmRvd10gfHwgW1tb
d3Ygd2luZG93XSBhdHRhY2hlZFNoZWV0XSBpc0tleVdpbmRvd10pIHsKLSAgICAgICAgW05TQXBw
IF9jeWNsZVdpbmRvd3NSZXZlcnNlZDpGQUxTRV07Ci0gICAgfQotI2VuZGlmCi19Ci0KLS0gKE5T
UmVzcG9uZGVyICopd2ViVmlld0ZpcnN0UmVzcG9uZGVyOiAoV2ViVmlldyAqKXd2Ci17Ci0gICAg
cmV0dXJuIFtbd3Ygd2luZG93XSBmaXJzdFJlc3BvbmRlcl07Ci19Ci0KLS0gKHZvaWQpd2ViVmll
dzogKFdlYlZpZXcgKil3diBtYWtlRmlyc3RSZXNwb25kZXI6KE5TUmVzcG9uZGVyICopcmVzcG9u
ZGVyCi17Ci0gICAgW1t3diB3aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpyZXNwb25kZXJdOwot
fQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0U3RhdHVzVGV4dDooTlNTdHJp
bmcgKil0ZXh0Ci17Ci19Ci0KLS0gKE5TU3RyaW5nICopd2ViVmlld1N0YXR1c1RleHQ6IChXZWJW
aWV3ICopd3YKLXsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJW
aWV3ICopd3YgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnRJ
bmZvcm1hdGlvbiBtb2RpZmllckZsYWdzOihOU1VJbnRlZ2VyKW1vZGlmaWVyRmxhZ3MKLXsKLX0K
LQotLSAoQk9PTCl3ZWJWaWV3QXJlVG9vbGJhcnNWaXNpYmxlOiAoV2ViVmlldyAqKXd2Ci17Ci0g
ICAgcmV0dXJuIE5POwotfQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0VG9v
bGJhcnNWaXNpYmxlOihCT09MKXZpc2libGUKLXsKLX0KLQotLSAoQk9PTCl3ZWJWaWV3SXNTdGF0
dXNCYXJWaXNpYmxlOiAoV2ViVmlldyAqKXd2Ci17Ci0gICAgcmV0dXJuIE5POwotfQotCi0tICh2
b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0U3RhdHVzQmFyVmlzaWJsZTooQk9PTCl2aXNp
YmxlCi17Ci19Ci0KLS0gKEJPT0wpd2ViVmlld0lzUmVzaXphYmxlOiAoV2ViVmlldyAqKXd2Ci17
Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBOTzsKLSNlbHNlCi0gICAgcmV0dXJuIFtb
d3Ygd2luZG93XSBzaG93c1Jlc2l6ZUluZGljYXRvcl07Ci0jZW5kaWYKLX0KLQotLSAodm9pZCl3
ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHNldFJlc2l6YWJsZTooQk9PTClyZXNpemFibGUKLXsKLSNp
ZiAhUExBVEZPUk0oSU9TKQotICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgY2hh
bmdlIHRoZSByZXNpemFiaWxpdHkgb2YgdGhlIHdpbmRvdywKLSAgICAvLyBvbmx5IHZpc2liaWxp
dHkgb2YgdGhlIGluZGljYXRvci4KLSAgICBbW3d2IHdpbmRvd10gc2V0U2hvd3NSZXNpemVJbmRp
Y2F0b3I6cmVzaXphYmxlXTsKLSNlbmRpZgotfQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3
ICopd3Ygc2V0RnJhbWU6KE5TUmVjdClmcmFtZQotewotI2lmICFQTEFURk9STShJT1MpCi0gICAg
W1t3diB3aW5kb3ddIHNldEZyYW1lOmZyYW1lIGRpc3BsYXk6WUVTXTsKLSNlbmRpZgotfQotCi0t
IChOU1JlY3Qpd2ViVmlld0ZyYW1lOiAoV2ViVmlldyAqKXd2Ci17Ci0gICAgTlNXaW5kb3cgKndp
bmRvdyA9IFt3diB3aW5kb3ddOwotICAgIHJldHVybiB3aW5kb3cgPT0gbmlsID8gTlNaZXJvUmVj
dCA6IFt3aW5kb3cgZnJhbWVdOwotfQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Yg
cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGlu
aXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKLXsKLSAgICAvLyBGSVhNRTogV2Ugd2Fu
dCBhIGRlZmF1bHQgaGVyZSwgYnV0IHRoYXQgd291bGQgYWRkIGxvY2FsaXplZCBzdHJpbmdzLgot
fQotCi0tIChCT09MKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdENvbmZpcm1Q
YW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV2Vi
RnJhbWUgKilmcmFtZQotewotICAgIC8vIEZJWE1FOiBXZSB3YW50IGEgZGVmYXVsdCBoZXJlLCBi
dXQgdGhhdCB3b3VsZCBhZGQgbG9jYWxpemVkIHN0cmluZ3MuCi0gICAgcmV0dXJuIE5POwotfQot
Ci0tIChOU1N0cmluZyAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdFRleHRJ
bnB1dFBhbmVsV2l0aFByb21wdDooTlNTdHJpbmcgKilwcm9tcHQgZGVmYXVsdFRleHQ6KE5TU3Ry
aW5nICopZGVmYXVsdFRleHQgaW5pdGlhdGVkQnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQotewot
I2lmICFQTEFURk9STShJT1MpCi0gICAgV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsICpwYW5l
bCA9IFtbV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsIGFsbG9jXSBpbml0V2l0aFByb21wdDpw
cm9tcHQgdGV4dDpkZWZhdWx0VGV4dF07Ci0gICAgW3BhbmVsIHNob3dXaW5kb3c6bmlsXTsKLSAg
ICBOU1N0cmluZyAqcmVzdWx0OwotICAgIGlmIChbTlNBcHAgcnVuTW9kYWxGb3JXaW5kb3c6W3Bh
bmVsIHdpbmRvd11dKSB7Ci0gICAgICAgIHJlc3VsdCA9IFtwYW5lbCB0ZXh0XTsKLSAgICB9IGVs
c2UgewotICAgICAgICByZXN1bHQgPSBuaWw7Ci0gICAgfQotICAgIFtbcGFuZWwgd2luZG93XSBj
bG9zZV07Ci0gICAgW3BhbmVsIHJlbGVhc2VdOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQot
ICAgIHJldHVybiBuaWw7Ci0jZW5kaWYKLX0KLQotLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAq
KXd2IHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6KGlkPFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyPilyZXN1bHRMaXN0ZW5lcgotewotICAgIC8vIEZJWE1FOiBX
ZSB3YW50IGEgZGVmYXVsdCBoZXJlLCBidXQgdGhhdCB3b3VsZCBhZGQgbG9jYWxpemVkIHN0cmlu
Z3MuCi19Ci0KLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBwcmludEZyYW1lVmll
dzooV2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3Ci17Ci19Ci0KLQotI2lmICFQTEFURk9STShJT1Mp
Ci0tIChOU1VJbnRlZ2VyKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlv
bkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJ
bmZvCi17Ci0gICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKLX0KLQotLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlv
bkFjdGlvbjooV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWFjdGlvbiBmb3JEcmFnZ2luZ0luZm86
KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCi17Ci19Ci0KLS0gKE5TVUludGVnZXIp
d2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludDoo
TlNQb2ludClwb2ludAotewotICAgIHJldHVybiBXZWJEcmFnU291cmNlQWN0aW9uQW55OwotfQot
Ci0tICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ1NvdXJj
ZUFjdGlvbjooV2ViRHJhZ1NvdXJjZUFjdGlvbilhY3Rpb24gZnJvbVBvaW50OihOU1BvaW50KXBv
aW50IHdpdGhQYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkCi17Ci19Ci0KLS0g
KHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciB3aWxsUG9wdXBNZW51OihOU01lbnUgKilt
ZW51Ci17Ci19Ci0jZW5kaWYKLQotLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRp
ZERyYXdSZWN0OihOU1JlY3QpcmVjdAotewotfQotCi0tICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcg
KilzZW5kZXIgZGlkU2Nyb2xsRG9jdW1lbnRJbkZyYW1lVmlldzooV2ViRnJhbWVWaWV3ICopZnJh
bWVWaWV3Ci17Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBleGNlZWRl
ZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOihXZWJTZWN1cml0
eU9yaWdpbiAqKW9yaWdpbiB0b3RhbFNwYWNlTmVlZGVkOihOU1VJbnRlZ2VyKXRvdGFsU3BhY2VO
ZWVkZWQKLXsKLX0KLQotLSAoQk9PTCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHNob3VsZFJl
cGxhY2VVcGxvYWRGaWxlOihOU1N0cmluZyAqKXBhdGggdXNpbmdHZW5lcmF0ZWRGaWxlbmFtZToo
TlNTdHJpbmcgKiopZmlsZW5hbWUKLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKE5TU3RyaW5n
ICopd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZTooTlNT
dHJpbmcgKilwYXRoCi17Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotI2lmIFBMQVRGT1JNKElPUykK
LS0gKHZvaWQpd2ViVmlld1N1cHBvcnRlZE9yaWVudGF0aW9uc1VwZGF0ZWQ6KFdlYlZpZXcgKilz
ZW5kZXIKLXsKLX0KLSNlbmRpZgotCi1AZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktp
dC9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42MmUyYTgzOTUwNzczNzc3NTBmMDZlNTVhYmFkNmI2OTBlODg2ZmNjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxl
Z2F0ZS5tbQpAQCAtMCwwICsxLDI3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCIKKwor
I2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZh
dGUuaCIKKyNpbXBvcnQgIldlYlZpZXcuaCIKKworI2lmICFQTEFURk9STShJT1MpCisjaW1wb3J0
ICJXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwuaCIKKyNpbXBvcnQgIldlYktpdFZlcnNpb25D
aGVja3MuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCA8V2ViQ29yZS9X
QUtXaW5kb3cuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV0tWaWV3UHJpdmF0ZS5oPgorI2VuZGlmCisK
KyNpZiAhUExBVEZPUk0oSU9TKQorQGludGVyZmFjZSBOU0FwcGxpY2F0aW9uIChEZWNsYXJhdGlv
blN0b2xlbkZyb21BcHBLaXQpCistICh2b2lkKV9jeWNsZVdpbmRvd3NSZXZlcnNlZDooQk9PTCly
ZXZlcnNlZDsKK0BlbmQKKyNlbmRpZgorCitAaW1wbGVtZW50YXRpb24gV2ViRGVmYXVsdFVJRGVs
ZWdhdGUKKworc3RhdGljIFdlYkRlZmF1bHRVSURlbGVnYXRlICpzaGFyZWREZWxlZ2F0ZSA9IG5p
bDsKKworLy8gUmV0dXJuIGEgb2JqZWN0IHdpdGggdmFuaWxsYSBpbXBsZW1lbnRhdGlvbnMgb2Yg
dGhlIHByb3RvY29sJ3MgbWV0aG9kcworLy8gTm90ZSB0aGlzIGZlYXR1cmUgcmVsaWVzIG9uIG91
ciBkZWZhdWx0IGRlbGVnYXRlIGJlaW5nIHN0YXRlbGVzcy4gVGhpcworLy8gaXMgcHJvYmFibHkg
YW4gaW52YWxpZCBhc3N1bXB0aW9uIGZvciB0aGUgV2ViVUlEZWxlZ2F0ZS4KKy8vIElmIHdlIGFk
ZCBhbnkgcmVhbCBmdW5jdGlvbmFsaXR5IHRvIHRoaXMgZGVmYXVsdCBkZWxlZ2F0ZSB3ZSBwcm9i
YWJseQorLy8gd29uJ3QgYmUgYWJsZSB0byB1c2UgYSBzaW5nbGV0b24uCisrIChXZWJEZWZhdWx0
VUlEZWxlZ2F0ZSAqKXNoYXJlZFVJRGVsZWdhdGUKK3sKKyAgICBpZiAoIXNoYXJlZERlbGVnYXRl
KQorICAgICAgICBzaGFyZWREZWxlZ2F0ZSA9IFtbV2ViRGVmYXVsdFVJRGVsZWdhdGUgYWxsb2Nd
IGluaXRdOworICAgIHJldHVybiBzaGFyZWREZWxlZ2F0ZTsKK30KKworLSAoV2ViVmlldyAqKXdl
YlZpZXc6IChXZWJWaWV3ICopd3YgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IHdpbmRvd0ZlYXR1cmVzOihOU0RpY3Rpb25hcnkgKilmZWF0dXJlcworewor
ICAgIC8vIElmIHRoZSBuZXcgQVBJIG1ldGhvZCBkb2Vzbid0IGV4aXN0LCBmYWxsYmFjayB0byB0
aGUgb2xkIHZlcnNpb24gb2YgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0CisgICAgLy8gZm9yIGJh
Y2t3YXJkcyBjb21wYXRhYmlsaXR5CisgICAgaWYgKCFbW3d2IFVJRGVsZWdhdGVdIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6d2lu
ZG93RmVhdHVyZXM6KV0gJiYgW1t3diBVSURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0OildKQorICAgICAgICByZXR1
cm4gW1t3diBVSURlbGVnYXRlXSB3ZWJWaWV3Ond2IGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDpy
ZXF1ZXN0XTsKKyAgICByZXR1cm4gbmlsOworfQorCisjaWYgUExBVEZPUk0oSU9TKQorLSAoV2Vi
VmlldyAqKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHVzZXJHZXN0dXJlOihCT09MKXVzZXJHZXN0dXJlCit7
CisgICAgcmV0dXJuIG5pbDsKK30KKyNlbmRpZgorCistICh2b2lkKXdlYlZpZXdTaG93OiAoV2Vi
VmlldyAqKXd2Cit7Cit9CisKKy0gKHZvaWQpd2ViVmlld0Nsb3NlOiAoV2ViVmlldyAqKXd2Cit7
CisjaWYgIVBMQVRGT1JNKElPUykKKyAgICBbW3d2IHdpbmRvd10gY2xvc2VdOworI2VuZGlmCit9
CisKKy0gKHZvaWQpd2ViVmlld0ZvY3VzOiAoV2ViVmlldyAqKXd2Cit7CisjaWYgIVBMQVRGT1JN
KElPUykKKyAgICBbW3d2IHdpbmRvd10gbWFrZUtleUFuZE9yZGVyRnJvbnQ6d3ZdOworI2VuZGlm
Cit9CisKKy0gKHZvaWQpd2ViVmlld1VuZm9jdXM6IChXZWJWaWV3ICopd3YKK3sKKyNpZiAhUExB
VEZPUk0oSU9TKQorICAgIGlmIChbW3d2IHdpbmRvd10gaXNLZXlXaW5kb3ddIHx8IFtbW3d2IHdp
bmRvd10gYXR0YWNoZWRTaGVldF0gaXNLZXlXaW5kb3ddKQorICAgICAgICBbTlNBcHAgX2N5Y2xl
V2luZG93c1JldmVyc2VkOkZBTFNFXTsKKyNlbmRpZgorfQorCistIChOU1Jlc3BvbmRlciAqKXdl
YlZpZXdGaXJzdFJlc3BvbmRlcjogKFdlYlZpZXcgKil3dgoreworICAgIHJldHVybiBbW3d2IHdp
bmRvd10gZmlyc3RSZXNwb25kZXJdOworfQorCistICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICop
d3YgbWFrZUZpcnN0UmVzcG9uZGVyOihOU1Jlc3BvbmRlciAqKXJlc3BvbmRlcgoreworICAgIFtb
d3Ygd2luZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6cmVzcG9uZGVyXTsKK30KKworLSAodm9pZCl3
ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHNldFN0YXR1c1RleHQ6KE5TU3RyaW5nICopdGV4dAorewor
fQorCistIChOU1N0cmluZyAqKXdlYlZpZXdTdGF0dXNUZXh0OiAoV2ViVmlldyAqKXd2Cit7Cisg
ICAgcmV0dXJuIG5pbDsKK30KKworLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IG1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50OihOU0RpY3Rpb25hcnkgKillbGVtZW50SW5mb3JtYXRpb24gbW9k
aWZpZXJGbGFnczooTlNVSW50ZWdlciltb2RpZmllckZsYWdzCit7Cit9CisKKy0gKEJPT0wpd2Vi
Vmlld0FyZVRvb2xiYXJzVmlzaWJsZTogKFdlYlZpZXcgKil3dgoreworICAgIHJldHVybiBOTzsK
K30KKworLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHNldFRvb2xiYXJzVmlzaWJsZToo
Qk9PTCl2aXNpYmxlCit7Cit9CisKKy0gKEJPT0wpd2ViVmlld0lzU3RhdHVzQmFyVmlzaWJsZTog
KFdlYlZpZXcgKil3dgoreworICAgIHJldHVybiBOTzsKK30KKworLSAodm9pZCl3ZWJWaWV3OiAo
V2ViVmlldyAqKXd2IHNldFN0YXR1c0JhclZpc2libGU6KEJPT0wpdmlzaWJsZQoreworfQorCist
IChCT09MKXdlYlZpZXdJc1Jlc2l6YWJsZTogKFdlYlZpZXcgKil3dgoreworI2lmIFBMQVRGT1JN
KElPUykKKyAgICByZXR1cm4gTk87CisjZWxzZQorICAgIHJldHVybiBbW3d2IHdpbmRvd10gc2hv
d3NSZXNpemVJbmRpY2F0b3JdOworI2VuZGlmCit9CisKKy0gKHZvaWQpd2ViVmlldzogKFdlYlZp
ZXcgKil3diBzZXRSZXNpemFibGU6KEJPT0wpcmVzaXphYmxlCit7CisjaWYgIVBMQVRGT1JNKElP
UykKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGFjdHVhbGx5IGNoYW5nZSB0aGUgcmVzaXph
YmlsaXR5IG9mIHRoZSB3aW5kb3csCisgICAgLy8gb25seSB2aXNpYmlsaXR5IG9mIHRoZSBpbmRp
Y2F0b3IuCisgICAgW1t3diB3aW5kb3ddIHNldFNob3dzUmVzaXplSW5kaWNhdG9yOnJlc2l6YWJs
ZV07CisjZW5kaWYKK30KKworLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHNldEZyYW1l
OihOU1JlY3QpZnJhbWUKK3sKKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIFtbd3Ygd2luZG93XSBz
ZXRGcmFtZTpmcmFtZSBkaXNwbGF5OllFU107CisjZW5kaWYKK30KKworLSAoTlNSZWN0KXdlYlZp
ZXdGcmFtZTogKFdlYlZpZXcgKil3dgoreworICAgIE5TV2luZG93ICp3aW5kb3cgPSBbd3Ygd2lu
ZG93XTsKKyAgICByZXR1cm4gd2luZG93ID09IG5pbCA/IE5TWmVyb1JlY3QgOiBbd2luZG93IGZy
YW1lXTsKK30KKworLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1bkphdmFTY3JpcHRB
bGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1l
OihXZWJGcmFtZSAqKWZyYW1lCit7CisgICAgLy8gRklYTUU6IFdlIHdhbnQgYSBkZWZhdWx0IGhl
cmUsIGJ1dCB0aGF0IHdvdWxkIGFkZCBsb2NhbGl6ZWQgc3RyaW5ncy4KK30KKworLSAoQk9PTCl3
ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2Fn
ZTooTlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUK
K3sKKyAgICAvLyBGSVhNRTogV2Ugd2FudCBhIGRlZmF1bHQgaGVyZSwgYnV0IHRoYXQgd291bGQg
YWRkIGxvY2FsaXplZCBzdHJpbmdzLgorICAgIHJldHVybiBOTzsKK30KKworLSAoTlNTdHJpbmcg
Kil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQ
cm9tcHQ6KE5TU3RyaW5nICopcHJvbXB0IGRlZmF1bHRUZXh0OihOU1N0cmluZyAqKWRlZmF1bHRU
ZXh0IGluaXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKK3sKKyNpZiAhUExBVEZPUk0o
SU9TKQorICAgIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbCAqcGFuZWwgPSBbW1dlYkphdmFT
Y3JpcHRUZXh0SW5wdXRQYW5lbCBhbGxvY10gaW5pdFdpdGhQcm9tcHQ6cHJvbXB0IHRleHQ6ZGVm
YXVsdFRleHRdOworICAgIFtwYW5lbCBzaG93V2luZG93Om5pbF07CisgICAgTlNTdHJpbmcgKnJl
c3VsdDsKKyAgICBpZiAoW05TQXBwIHJ1bk1vZGFsRm9yV2luZG93OltwYW5lbCB3aW5kb3ddXSkK
KyAgICAgICAgcmVzdWx0ID0gW3BhbmVsIHRleHRdOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0
ID0gbmlsOworICAgIFtbcGFuZWwgd2luZG93XSBjbG9zZV07CisgICAgW3BhbmVsIHJlbGVhc2Vd
OworICAgIHJldHVybiByZXN1bHQ7CisjZWxzZQorICAgIHJldHVybiBuaWw7CisjZW5kaWYKK30K
KworLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0
b25XaXRoUmVzdWx0TGlzdGVuZXI6KGlkPFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyPilyZXN1
bHRMaXN0ZW5lcgoreworICAgIC8vIEZJWE1FOiBXZSB3YW50IGEgZGVmYXVsdCBoZXJlLCBidXQg
dGhhdCB3b3VsZCBhZGQgbG9jYWxpemVkIHN0cmluZ3MuCit9CisKKy0gKHZvaWQpd2ViVmlldzoo
V2ViVmlldyAqKXNlbmRlciBwcmludEZyYW1lVmlldzooV2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3
Cit7Cit9CisKKworI2lmICFQTEFURk9STShJT1MpCistIChOU1VJbnRlZ2VyKXdlYlZpZXc6KFdl
YlZpZXcgKil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86
KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCit7CisgICAgaWYgKCFsaW5rZWRPbk9y
QWZ0ZXIoU0RLVmVyc2lvbjo6Rmlyc3RXaXRoRHJvcFRvTmF2aWdhdGVEaXNhbGxvd2VkQnlEZWZh
dWx0KSkKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKKworICAg
IHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkgJiB+V2ViRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTG9hZDsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyB3aWxs
UGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbjooV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWFj
dGlvbiBmb3JEcmFnZ2luZ0luZm86KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCit7
Cit9CisKKy0gKE5TVUludGVnZXIpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZHJhZ1NvdXJj
ZUFjdGlvbk1hc2tGb3JQb2ludDooTlNQb2ludClwb2ludAoreworICAgIHJldHVybiBXZWJEcmFn
U291cmNlQWN0aW9uQW55OworfQorCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3
IHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbjooV2ViRHJhZ1NvdXJjZUFjdGlvbilhY3Rpb24g
ZnJvbVBvaW50OihOU1BvaW50KXBvaW50IHdpdGhQYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilw
YXN0ZWJvYXJkCit7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciB3aWxs
UG9wdXBNZW51OihOU01lbnUgKiltZW51Cit7Cit9CisjZW5kaWYKKworLSAodm9pZCl3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIGRpZERyYXdSZWN0OihOU1JlY3QpcmVjdAoreworfQorCistICh2
b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkU2Nyb2xsRG9jdW1lbnRJbkZyYW1lVmll
dzooV2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3Cit7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3Vy
aXR5T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiB0b3RhbFNwYWNlTmVlZGVkOihO
U1VJbnRlZ2VyKXRvdGFsU3BhY2VOZWVkZWQKK3sKK30KKworLSAoQk9PTCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIHNob3VsZFJlcGxhY2VVcGxvYWRGaWxlOihOU1N0cmluZyAqKXBhdGggdXNp
bmdHZW5lcmF0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKiopZmlsZW5hbWUKK3sKKyAgICByZXR1cm4g
Tk87Cit9CisKKy0gKE5TU3RyaW5nICopd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBnZW5lcmF0
ZVJlcGxhY2VtZW50RmlsZTooTlNTdHJpbmcgKilwYXRoCit7CisgICAgcmV0dXJuIG5pbDsKK30K
KworI2lmIFBMQVRGT1JNKElPUykKKy0gKHZvaWQpd2ViVmlld1N1cHBvcnRlZE9yaWVudGF0aW9u
c1VwZGF0ZWQ6KFdlYlZpZXcgKilzZW5kZXIKK3sKK30KKyNlbmRpZgorCitAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oCmluZGV4IDBmNjA2ZTI4NDQw
NTJiODFhODUzYmMwZGM2ZTE0NGZmODI3ZDk5YjMuLjAwMzJjYTkyZGE2ZTA5MGY3ODI5ODU2YzQ4
ZGQ0M2IwNTZiYWQ3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0
VmVyc2lvbkNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lv
bkNoZWNrcy5oCkBAIC04Myw2ICs4Myw4IEBACiBlbnVtIGNsYXNzIFNES1ZlcnNpb24gOiB1aW50
MzJfdCB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIEZpcnN0VG9FeGNsdWRlTG9jYWxTdG9yYWdl
RnJvbUJhY2t1cCA9IERZTERfSU9TX1ZFUlNJT05fMTFfMCwKKyNlbHNlCisgICAgRmlyc3RXaXRo
RHJvcFRvTmF2aWdhdGVEaXNhbGxvd2VkQnlEZWZhdWx0ID0gRFlMRF9NQUNPU1hfVkVSU0lPTl8x
MF8xMwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggZmE0NGE3ZjY1ZTgzOTc0MTA4MmIyNWYyOGMxNmI0YzI4
YTllZThhMi4uZDhlZWQ1OTE3YTlkZjc5MWZjMWVlNDU5ODI4MTdlNDQ5ZDFkOWVjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAt
MzcsNyArMzcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgV2ViQ29yZTo6
RHJhZ0RhdGEmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlv
bihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdl
YkNvcmU6OkRhdGFUcmFuc2ZlciYpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5h
dGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92
ZXJyaWRlOworICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9y
RHJhZyhEcmFnRGF0YVJlZiBwbGF0Zm9ybURhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhZ0Nv
bnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0
aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHdpbmRvd1BvaW50KSBvdmVycmlkZTsKICAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFn
SW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkcmFnUG9zLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpE
YXRhVHJhbnNmZXImLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24p
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQubW0KaW5kZXggZWM0ZDY4M2ZhZGYyZjZlNmJjZGM1NDQxZTg3MzZlOWIyNTc4Yjdh
OC4uNmUwYjMxNDkzZmYzMDIxYmQyOTcyMTYxZTliZDZiMDdmZWQ4YjcxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCkBAIC03OSw5
ICs3OSw5IEBAIHN0YXRpYyBXZWJIVE1MVmlldyAqZ2V0VG9wSFRNTFZpZXcoRnJhbWUqIGZyYW1l
KQogICAgIHJldHVybiAoV2ViSFRNTFZpZXcqKVtba2l0KCZmcmFtZS0+cGFnZSgpLT5tYWluRnJh
bWUoKSkgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwogfQogCi1XZWJDb3JlOjpEcmFnRGVzdGlu
YXRpb25BY3Rpb24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoY29uc3QgV2ViQ29y
ZTo6RHJhZ0RhdGEmIGRyYWdEYXRhKQorV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIFdl
YkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0YSkK
IHsKLSAgICByZXR1cm4gKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbilbW21fd2ViVmll
dyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKV07CisgICAg
cmV0dXJuIChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24pW1ttX3dlYlZpZXcgX1VJRGVs
ZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2tGb3JEcmFnZ2luZ0luZm86cGxhdGZvcm1EYXRhXTsKIH0KIAogdm9pZCBXZWJEcmFnQ2xpZW50
Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRp
b25BY3Rpb24gYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYgZHJhZ0RhdGEpCkBAIC0x
ODEsNyArMTgxLDcgQEAgYm9vbCBXZWJEcmFnQ2xpZW50Ojp1c2VMZWdhY3lEcmFnQ2xpZW50KCkK
IHsKICAgICByZXR1cm4gZmFsc2U7CiB9Ci1XZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24g
V2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEm
KQorV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1h
c2tGb3JEcmFnKERyYWdEYXRhUmVmKQogewogICAgIHJldHVybiBEcmFnRGVzdGluYXRpb25BY3Rp
b25Ob25lOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDA3MGQwMzU1
ODkyOGQxODZlOGRhZjUxNzc1ZjExM2FmM2ZiZTU1OWQuLjdhNzM1MWFhNzQzOWRlNjY4OTU2ZTBm
ODYwYjc1MDhjNDgyYTA0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAg
LTYzOTIsOCArNjM5MiwxMCBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBiYWNraW5nUHJvcGVy
dHlPbGRTY2FsZUZhY3RvcktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbAogewogICAgIEludFBv
aW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBJbnRQb2lu
dCBnbG9iYWwoZ2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3Nl
bGYgd2luZG93XSkpOwotICAgIERyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50
LCBnbG9iYWwsIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJ
bmZvXSk7Ci0gICAgcmV0dXJuIGNvcmUoc2VsZiktPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVy
ZWQoZHJhZ0RhdGEpOworCisgICAgYXV0byYgY29udHJvbGxlciA9IGNvcmUoc2VsZiktPmRyYWdD
b250cm9sbGVyKCk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQs
IGdsb2JhbCwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0lu
Zm9dLCBjb250cm9sbGVyLmNsaWVudCgpLmFjdGlvbk1hc2tGb3JEcmFnKGRyYWdnaW5nSW5mbykp
OworICAgIHJldHVybiBjb250cm9sbGVyLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKIH0KIAogLSAo
TlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nVXBkYXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFn
Z2luZ0luZm8KQEAgLTY0MDQsOCArNjQwNiwxMCBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBi
YWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3RvcktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbAog
CiAgICAgSW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwog
ICAgIEludFBvaW50IGdsb2JhbChnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9j
YXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJ
bmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5n
SW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFn
czpkcmFnZ2luZ0luZm9dKTsKLSAgICByZXR1cm4gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFn
VXBkYXRlZChkcmFnRGF0YSk7CisKKyAgICBhdXRvJiBjb250cm9sbGVyID0gY29yZShzZWxmKS0+
ZHJhZ0NvbnRyb2xsZXIoKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNs
aWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdn
aW5nSW5mb10sIGNvbnRyb2xsZXIuY2xpZW50KCkuYWN0aW9uTWFza0ZvckRyYWcoZHJhZ2dpbmdJ
bmZvKSk7CisgICAgcmV0dXJuIGNvbnRyb2xsZXIuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOwogfQog
CiAtICh2b2lkKWRyYWdnaW5nRXhpdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5m
bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmNwcAppbmRleCBkZWIwMGQ3MmEzMGE4MzdmNTVlMjM5Njk5ODhjMGMxYmRiNDc0YjZmLi5hZjg4
MGQzZjk1MzdjYWMxZDA3NDA1NzliZWQxODg1NDNjNzVlZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcApAQCAtNjQsMTQgKzY0
LDE0IEBAIFdlYkRyYWdDbGllbnQ6OldlYkRyYWdDbGllbnQoV2ViVmlldyogd2ViVmlldykKICAg
ICBBU1NFUlQod2ViVmlldyk7CiB9CiAKLURyYWdEZXN0aW5hdGlvbkFjdGlvbiBXZWJEcmFnQ2xp
ZW50OjphY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitEcmFnRGVz
dGluYXRpb25BY3Rpb24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoRHJhZ0RhdGFS
ZWYgcGxhdGZvcm1EYXRhKQogewogICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZT4gZGVsZWdhdGVS
ZWYgPSAwOwogICAgIC8vRGVmYXVsdCBiZWhhdmlvdXIgKGVnLiBubyBkZWxlZ2F0ZSwgb3IgY2Fs
bGJhY2sgbm90IGltcGxlbWVudGVkKSBpcyB0byBhbGxvdwogICAgIC8vYW55IGFjdGlvbgogICAg
IFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBtYXNrID0gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
QW55OwogICAgIGlmIChTVUNDRUVERUQobV93ZWJWaWV3LT51aURlbGVnYXRlKCZkZWxlZ2F0ZVJl
ZikpKQotICAgICAgICBkZWxlZ2F0ZVJlZi0+ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRy
YWdnaW5nSW5mbyhtX3dlYlZpZXcsIGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpLCAmbWFzayk7Cisg
ICAgICAgIGRlbGVnYXRlUmVmLT5kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJ
bmZvKG1fd2ViVmlldywgcGxhdGZvcm1EYXRhLCAmbWFzayk7CiAKICAgICByZXR1cm4gKERyYWdE
ZXN0aW5hdGlvbkFjdGlvbiltYXNrOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IDhmMzBiOTYxNDA5MWQ5Njc0YWIxYTZjMjRm
NWYzZDcwZTExZmEwMDYuLmU5NzI5ZTM2YTE5ZTQ0MjU0MWIwNWVjZWI0NTg3YzdjNjkxYmI2M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2ViVmlldyop
OwogICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOwogCi0gICAgdmly
dHVhbCBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0ZvckRyYWcoY29u
c3QgV2ViQ29yZTo6RHJhZ0RhdGEmKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRyYWdEZXN0aW5h
dGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YVJlZik7CiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFn
RGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpEcmFnRGF0YSYpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3Vy
Y2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQ29jb2EvV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQ29jb2EvV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41MTVmMzY4NjZlODZkZmVhOTdmNmQ5YTllMWI2ZDJkODdhMWE1ZTE1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS0RyYWdEZXN0aW5hdGlvbkFj
dGlvbi5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tG
b3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KKwordHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIFdLRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uKSB7CisgICAgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25Ob25lICAgID0g
MCwKKyAgICBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkRIVE1MICAgPSAxLAorICAgIFdLRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uRWRpdCAgICA9IDIsCisgICAgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25M
b2FkICAgID0gNCwKKyAgICBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSAgICAgPSBOU1VJbnRl
Z2VyTWF4Cit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKaW5kZXggNjE2NmFiNmVhMTUxNjE5Y2Q5N2FmMWI3M2I2YTQ5NWFlNzA5
OGYyYy4uOGYzOTE1MDM0MTY3NmY0MGFlODg5YzNmYzY2OTYwNzUwYmJjZjE1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTEyMjQs
NiArMTIyNCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEuZmlsZU5hbWVzKCk7CiAjZW5kaWYKKyAgICBlbmNvZGVy
LmVuY29kZUVudW0oZHJhZ0RhdGEuZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOwogfQogCiBib29s
IEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQpAQCAtMTI1NSw3ICsxMjU2LDExIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxE
cmFnRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCi0gICAgZHJhZ0RhdGEgPSBEcmFnRGF0YShw
YXN0ZWJvYXJkTmFtZSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3MpOworICAgIERyYWdEZXN0aW5hdGlv
bkFjdGlvbiBkZXN0aW5hdGlvbkFjdGlvbjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShk
ZXN0aW5hdGlvbkFjdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRyYWdEYXRh
ID0gRHJhZ0RhdGEocGFzdGVib2FyZE5hbWUsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlv
biwgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzLCBkZXN0aW5h
dGlvbkFjdGlvbik7CiAgICAgZHJhZ0RhdGEuc2V0RmlsZU5hbWVzKGZpbGVOYW1lcyk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggMzYxYTVjYWRkYWY0MDg3NmYxZjFh
ZWQ4OTc5YzhhZWM4ZTBiMmY3Zi4uNTExYTRjNGY1MjU5YzlmYmQ4NTE4OTViM2Y4M2VjNjNlZWUy
OGJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJ
RGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFdLX0FQSV9F
TkFCTEVECiAKKyNpbXBvcnQgPFdlYktpdC9XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mby5oPgogCkBAIC02NSw2ICs2Niw3IEBAIHN0cnVjdCBVSUVkZ2VJbnNl
dHM7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNoZWNrVXNlck1lZGlh
UGVybWlzc2lvbkZvclVSTDooTlNVUkwgKil1cmwgbWFpbkZyYW1lVVJMOihOU1VSTCAqKW1haW5G
cmFtZVVSTCBmcmFtZUlkZW50aWZpZXI6KE5TVUludGVnZXIpZnJhbWVJZGVudGlmaWVyIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0aG9yaXplZCkpZGVj
aXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogLSAodm9pZClfd2ViVmlld0RpZEJlZ2luQ2FwdHVyZVNlc3Npb246KFdLV2Vi
VmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAtICh2b2lkKV93ZWJWaWV3RGlkRW5kQ2FwdHVyZVNlc3Npb246KFdLV2Vi
VmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CistIChXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbilfd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOihp
ZClkcmFnZ2luZ0luZm8gV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAjaWYgVEFSR0VUX09TX0lQSE9ORQogLSAoQk9PTClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBzaG91bGRJbmNsdWRlQXBwTGlua0FjdGlvbnNGb3JFbGVtZW50Oihf
V0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgV0tfQVBJX0FWQUlMQUJMRShpb3MoOS4w
KSk7CiAtIChOU0FycmF5ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYWN0aW9uc0Zv
ckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBkZWZhdWx0QWN0aW9u
czooTlNBcnJheTxfV0tFbGVtZW50QWN0aW9uICo+ICopZGVmYXVsdEFjdGlvbnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGE2OTg2
ZDJlZmJlZWY5YjRjMzkwYzFkYTg1OWFjMWEzNGJkMTI1M2IuLjRhYTZmOTQ0MTc1ZTYzNDFhNjNh
YjI4YmFiZDRhMzhmODUyYzBhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC00NSw2ICs0NSw3IEBACiAjaW1wb3J0ICJSZW1vdGVP
YmplY3RSZWdpc3RyeS5oIgogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5o
IgogI2ltcG9ydCAiVUlEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVmVyc2lvbkNoZWNrcy5oIgogI2lt
cG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJWaWV3U25hcHNob3RTdG9y
ZS5oIgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oIgpAQCAtMzQ1Miw2ICsz
NDUzLDIyIEBAIFdFQkNPUkVfQ09NTUFORCh5YW5rQW5kU2VsZWN0KQogewogfQogCisjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkgJiYgV0tfQVBJX0VOQUJMRUQKKworLSAoV0tEcmFnRGVzdGluYXRp
b25BY3Rpb24pX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86KGlkIDxO
U0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCit7CisgICAgaWQgPFdLVUlEZWxlZ2F0ZVByaXZh
dGU+IHVpRGVsZWdhdGUgPSAoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KVtzZWxmIFVJRGVsZWdh
dGVdOworICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OmRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86KV0pCisgICAg
ICAgIHJldHVybiBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIGRyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXTsKKworICAgIGlmICghbGlua2VkT25P
ckFmdGVyKFdlYktpdDo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoRHJvcFRvTmF2aWdhdGVEaXNhbGxv
d2VkQnlEZWZhdWx0KSkKKyAgICAgICAgcmV0dXJuIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55
OworCisgICAgcmV0dXJuIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55ICYgfldLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTG9hZDsKK30KKworI2VuZGlmCisKIC0gKHZvaWQpX3dlYl9kaXNtaXNzQ29u
dGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzCiB7CiAgICAgX2ltcGwtPmRpc21pc3NDb250ZW50UmVs
YXRpdmVDaGlsZFdpbmRvd3NGcm9tVmlld09ubHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBjMDNhOGMzNzExZjVhZGI3ODQ3NDUwZDZjZTI1N2My
YmQ2OTEwM2QzLi44ZjY1OWFhZGU3OWU2ZWEzYjdlMWVjYWM0Y2ZkOTBlNTJmMzEzMjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0zMiw2ICszMiw3
IEBACiAjaW1wb3J0ICJBUElJY29uTG9hZGluZ0NsaWVudC5oIgogI2ltcG9ydCAiQVBJUGFnZUNv
bmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0R3JvdXBQcml2YXRlLmgi
CisjaW1wb3J0ICJXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oIgogI2ltcG9ydCAiV0tOU0RhdGEu
aCIKICNpbXBvcnQgIldLUHJvY2Vzc0dyb3VwUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oIgpAQCAtMTAwOCw2ICsxMDA5LDE1IEBAIFNvbWUgb3RoZXIgZWRpdGlu
Zy1yZWxhdGVkIG1ldGhvZHMgc3RpbGwgdW5pbXBsZW1lbnRlZDoKICAgICBbc2VsZiBfZGlkQ2hh
bmdlQ29udGVudFNpemU6bmV3U2l6ZV07CiB9CiAKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAm
JiBXS19BUElfRU5BQkxFRAorCistIChXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbilfd2ViX2RyYWdE
ZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFn
Z2luZ0luZm8KK3sKKyAgICByZXR1cm4gV0tEcmFnRGVzdGluYXRpb25BY3Rpb25Bbnk7Cit9CisK
KyNlbmRpZgorCiAtICh2b2lkKV93ZWJfZGlzbWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxkV2luZG93
cwogewogICAgIFtzZWxmIF9kaXNtaXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9WZXJzaW9uQ2hlY2tzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oCmluZGV4IDMw
NTI5NWM5ZGRjYzUzZjg4YmFhZTJmOGI1NjRkNmExYjgzMWMzYTMuLjUwMmFkZjZlZjA2MGE3YmJl
OWQ5ZDVhYjRlYjY4MGY4M2QyYzRjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9WZXJzaW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1ZlcnNpb25DaGVja3MuaApAQCAtMzgsNiArMzgsNyBAQCBlbnVtIGNsYXNzIFNES1Zl
cnNpb24gOiB1aW50MzJfdCB7CiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgRmlyc3RXaXRoTmV0
d29ya0NhY2hlID0gRFlMRF9NQUNPU1hfVkVSU0lPTl8xMF8xMSwKICAgICBGaXJzdFdpdGhFeGNl
cHRpb25zRm9yRHVwbGljYXRlQ29tcGxldGlvbkhhbmRsZXJDYWxscyA9IERZTERfTUFDT1NYX1ZF
UlNJT05fMTBfMTMsCisgICAgRmlyc3RXaXRoRHJvcFRvTmF2aWdhdGVEaXNhbGxvd2VkQnlEZWZh
dWx0ID0gRFlMRF9NQUNPU1hfVkVSU0lPTl8xMF8xMwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IDY5MmE5MjRhY2Y0YmQ5
ZjFkN2NkYjFhOGQ1ZDg5Yjc2YmJmMzNhNGUuLmJiMDdjYTU5N2EzZjQ1NjY5OTgyYWExNDY4ZjQx
ZDVjZTg2OTg3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW5jbHVkZSAi
UGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlLmgiCisjaW5jbHVkZSAiV0tEcmFnRGVzdGluYXRp
b25BY3Rpb24uaCIKICNpbmNsdWRlICJXS0xheW91dE1vZGUuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKICNpbmNsdWRlICJfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUuaCIKQEAgLTkxLDYg
KzkyLDEwIEBAIE9CSkNfQ0xBU1MgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXI7CiAKIC0gKHZv
aWQpX3dlYl9kaWRDaGFuZ2VDb250ZW50U2l6ZTooTlNTaXplKW5ld1NpemU7CiAKKyNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKSAmJiBXS19BUElfRU5BQkxFRAorLSAoV0tEcmFnRGVzdGluYXRpb25B
Y3Rpb24pX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86KGlkIDxOU0Ry
YWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvOworI2VuZGlmCisKIEBvcHRpb25hbAogLSAodm9pZClf
d2ViX2RpZEFkZE1lZGlhQ29udHJvbHNNYW5hZ2VyOihpZCljb250cm9sc01hbmFnZXI7CiAtICh2
b2lkKV93ZWJfZGlkUmVtb3ZlTWVkaWFDb250cm9sc01hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggZWNhOWVhNGZkNTc1YWM1OTY0
MTY1YTNjYmQ4MDA2MjI2YjgzZmY3MC4uYmY0MDM4YzIxYzA4MWQxNzhlNTMyY2JiMzM3YzMzNTc4
NjBjNTUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQpAQCAtMzU3Nyw3ICszNTc3LDEyIEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6
ZHJhZ2dpbmdFbnRlcmVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAg
IFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0lu
Zm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2lu
dCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRp
b24sIG1fdmlldy53aW5kb3cpKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFn
Z2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRp
b25GbGFnc0ZvckRyYWcobV92aWV3LCBkcmFnZ2luZ0luZm8pKTsKKyNpZiBXS19BUElfRU5BQkxF
RAorICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPihbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
Rm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworI2Vsc2UKKyAgICBhdXRvIGRyYWdEZXN0
aW5hdGlvbkFjdGlvbiA9IFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKKyNlbmRp
ZgorICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBn
bG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5k
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3Zp
ZXcsIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbik7CiAKICAgICBtX3BhZ2Ut
PnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogICAgIG1fcGFnZS0+ZHJhZ0VudGVyZWQo
ZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7CkBAIC0zNTg4
LDcgKzM1OTMsMTIgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0
ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50
UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xv
Y2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJD
b3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgbV92aWV3Lndp
bmRvdykpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xp
ZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5n
SW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJh
ZyhtX3ZpZXcsIGRyYWdnaW5nSW5mbykpOworI2lmIFdLX0FQSV9FTkFCTEVECisgICAgYXV0byBk
cmFnRGVzdGluYXRpb25BY3Rpb24gPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnRGVzdGluYXRp
b25BY3Rpb24+KFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0lu
Zm86ZHJhZ2dpbmdJbmZvXSk7CisjZWxzZQorICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
ID0gV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55OworI2VuZGlmCisgICAgV2ViQ29y
ZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNl
T3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldywgZHJhZ2dpbmdJ
bmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKTsKICAgICBtX3BhZ2UtPmRyYWdVcGRhdGVkKGRy
YWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwogCiAgICAgTlNJ
bnRlZ2VyIG51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX3BhZ2UtPmN1cnJlbnREcmFnTnVt
YmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJjMmUxZjRjMGY3ODJjYTIzMTZjNDlmMmM5
MWE3YjljZWQ5NWNjZmUuLjhhMjBkMDA5MDUzODQ5OGUzZjExMWMxYTQzYmI5NWE2OTc1YjJkN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE5NjEsNiArMTk2MSw3IEBACiAJCUVEODJBN0YyMTI4QzZGQUYwMDQ0NzdCMyAvKiBX
S0J1bmRsZVBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQTIyRjBGRjEyODlGQ0Q5MDA4NUU3NEYgLyogV0tCdW5kbGVQYWdlT3Zlcmxh
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVE
Q0E3MUI3MTI4RERBOEMwMDIwMUIyNiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjJGMTAwMTI4OUZDRDkw
MDg1RTc0RiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCAqLzsgfTsKIAkJRjAzNjk3ODgxNUY0
QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJD
b2xvclBpY2tlci5jcHAgKi87IH07CisJCUY0MDlCQTE4MUU2RTY0QkMwMDlEQTI4RSAvKiBXS0Ry
YWdEZXN0aW5hdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQwOUJBMTcxRTZFNjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRjQzMzcwOTcxRTRENzJFRDAwMDUyQjBFIC8qIF9XS1Rlc3RpbmdEZWxlZ2F0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzMzcwOTYxRTRENkE0
NDAwMDUyQjBFIC8qIF9XS1Rlc3RpbmdEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY2MTEzRTI1MTI2Q0UxODIwMDU3RDBBNyAvKiBB
UElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY2MTEzRTI0MTI2Q0UxODIwMDU3RDBBNyAvKiBBUElVc2VyQ29udGVu
dFVSTFBhdHRlcm4uaCAqLzsgfTsKIAkJRjYxMTNFMjgxMjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY2MTEzRTI2MTI2Q0UxOUIwMDU3RDBBNyAvKiBXS1VzZXJDb250ZW50VVJM
UGF0dGVybi5jcHAgKi87IH07CkBAIC00MjI2LDYgKzQyMjcsNyBAQAogCQlFNEU4NjQ4RTFCMTY3
M0ZCMDBDODJGNDAgLyogVmVyc2lvbkNoZWNrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWZXJzaW9uQ2hlY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
RTg2NDhGMUIxNjczRkIwMEM4MkY0MCAvKiBWZXJzaW9uQ2hlY2tzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmVyc2lvbkNoZWNrcy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlj
a2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yUGlj
a2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwOUJBMTcxRTZFNjRCMzAw
OURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0MzM3MDk2MUU0RDZBNDQwMDA1MkIwRSAvKiBfV0tUZXN0aW5nRGVsZWdh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLVGVzdGluZ0RlbGVnYXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2MTEzRTI0MTI2Q0UxODIwMDU3RDBB
NyAvKiBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY2MTEzRTI2MTI2Q0UxOUIwMDU3RDBBNyAvKiBXS1VzZXJDb250ZW50VVJMUGF0
dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1VzZXJDb250
ZW50VVJMUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NjMyLDYg
KzU2MzQsNyBAQAogCQkJCTM3M0QxMjI0MThBNDczQjMwMDY2RDlDQyAvKiBXS0Jyb3dzaW5nQ29u
dGV4dEhhbmRsZUludGVybmFsLmggKi8sCiAJCQkJMzdBNzA5QTYxRTNFQTBGRDAwQ0E1OTY5IC8q
IFdLRGF0YURldGVjdG9yVHlwZXMuaCAqLywKIAkJCQkzN0E3MDlBODFFM0VBNDBDMDBDQTU5Njkg
LyogV0tEYXRhRGV0ZWN0b3JUeXBlc0ludGVybmFsLmggKi8sCisJCQkJRjQwOUJBMTcxRTZFNjRC
MzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggKi8sCiAJCQkJMzdERkE2RkYx
ODEwQkI5MjAwMUY0QTlGIC8qIFdLRm91bmRhdGlvbi5oICovLAogCQkJCTFBOUUzMjk5MTgyMkUx
Q0MwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdC5oICovLAogCQkJCTFBOUUzMjk4MTgyMkUxQ0Mw
MEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdC5tbSAqLywKQEAgLTgwMTYsNiArODAxOSw3IEBACiAJ
CQkJQkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxQTMxNzMyMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTJGNTg5NzEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQwOUJBMTgxRTZFNjRCQzAw
OURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTJGNTg5OTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThFOEVGOTE2QjIwOTFDMDBFOTE0MjkgLyogQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNThBMzEyQTg4M0FEMDA2
Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5jcHAKaW5kZXggMGYxNmJlOWE1NzY4MGNmZmIxMGNjZGI1NWRhMzE3MzEy
ZmM2NWM0OS4uN2ZkMzkyNTUxNjNjNGMyMWY0MzRjZDBkNTgyMmYxZmRhMTcyODY5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50
CiB7CiB9CiAKLURyYWdEZXN0aW5hdGlvbkFjdGlvbiBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNr
Rm9yRHJhZyhjb25zdCBEcmFnRGF0YSYpCitEcmFnRGVzdGluYXRpb25BY3Rpb24gV2ViRHJhZ0Ns
aWVudDo6YWN0aW9uTWFza0ZvckRyYWcoRHJhZ0RhdGFSZWYpCiB7CiAgICAgcmV0dXJuIERyYWdE
ZXN0aW5hdGlvbkFjdGlvbkFueTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggYTk2ZWU4MTYyMDM2
MmUzZWE5MjM1NTcyODcwMmRiNmQyZTM3MGVlYS4uZmI4MGY2NWU3YTBlNzBjZjZjZWVjYTY0NTlk
NjE4MDJiZWRmNjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdl
YkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmKSBv
dmVycmlkZTsKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkRhdGFU
cmFuc2ZlciYpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBh
Y3Rpb25NYXNrRm9yRHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOworICAg
IFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0
YVJlZikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNl
QWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2ludCkg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSW1hZ2UsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBkcmFnSW1hZ2VPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBldmVudFBvcywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgZHJhZ0ltYWdlQW5jaG9y
LCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkRyYWdT
b3VyY2VBY3Rpb24pIG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303940</attachid>
            <date>2017-03-09 11:32:32 -0800</date>
            <delta_ts>2017-03-24 19:57:14 -0700</delta_ts>
            <desc>Remove WebDragClient::actionMaskForDrag</desc>
            <filename>bug-169168-20170309113204.patch</filename>
            <type>text/plain</type>
            <size>62220</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQwZTBkNTYyODQ4MGNm
MjBjN2M5Y2FlYmZjMTA3ZDMwYjJmMWQ1Yi4uMjZjNzEyNzIyNGQ1MGEyNDU4NjE5ZDcwMTE0MDY0
Njc2NmY4ZDQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTAzLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBh
IFVJIGRlbGVnYXRlIFNQSSBob29rIHRvIGVuYWJsZSBvciBkaXNhYmxlIG5hdmlnYXRpb24gb24g
ZHJvcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY4ODM3ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBjbGllbnQgaG9va3MgZm9y
IHRoZSBkcmFnIGRlc3RpbmF0aW9uIGFjdGlvbiBpbiBXZWJDb3JlIHRvIGFzayBmb3IgdGhlIGRy
YWcgZGVzdGluYXRpb24gYWN0aW9uIG1hc2sKKyAgICAgICAgdXBvbiBpbml0aWFsaXppbmcgdGhl
IERyYWdEYXRhLiBJbiBEcmFnQ29udHJvbGxlciwgcmF0aGVyIHRoYW4gc2V0dGluZyBtX2RyYWdE
ZXN0aW5hdGlvbkFjdGlvbiB0byB0aGUgcmVzdWx0IG9mCisgICAgICAgIG1fY2xpZW50LmFjdGlv
bk1hc2tGb3JEcmFnLCB3ZSBpbnN0ZWFkIHNldCBpdCB0byB0aGUgRHJhZ0RhdGEncyBkZXN0aW5h
dGlvbiBhY3Rpb24uCisKKyAgICAgICAgVGVzdHMgdG8gY29tZSBpbiBhIGZ1dHVyZSBwYXRjaC4K
KworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIHBhZ2UvRHJh
Z0NsaWVudC5oOgorCisgICAgICAgIFJhdGhlciB0aGFuIHBhc3MgaW4gYSBEcmFnRGF0YSwgcGFz
cyBpbiBvbmx5IHRoZSBwbGF0Zm9ybSBkYXRhIHRoYXQgd2UgbmVlZCB0byBoYW5kIHRvIHRoZSBk
ZWxlZ2F0ZS4gVGhpcyBpcworICAgICAgICBiZWNhdXNlIHdlIG5vdyBhc2sgZm9yIGRyYWcgZGVz
dGluYXRpb24gYWN0aW9ucyBwcmlvciB0byBjcmVhdGluZyB0aGUgRHJhZ0RhdGEuCisKKyAgICAg
ICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250
cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZCk6CisKKyAgICAgICAgVXBkYXRlIHRoZSBhdmFp
bGFibGUgZHJhZyBkZXN0aW5hdGlvbiBhY3Rpb25zIGluIFdlYkNvcmUgdXNpbmcgdGhlIGRlc3Rp
bmF0aW9uIGFjdGlvbnMgc3RvcmVkIGluIERyYWdEYXRhIHJhdGhlcgorICAgICAgICB0aGFuIGNh
bGxpbmcgb3V0IHRvIHRoZSBjbGllbnQgZGVsZWdhdGUuCisKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpvcGVyYXRvciA9KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
RHJhZ0RhdGEpOgorCiAyMDE3LTAzLTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBwbHVtYmluZyBmb3IgV2ViQ29yZSB0byBub3RpZnkgV2Vi
S2l0MiB3aGVuIGFuIGVkaXQgZHJhZyBoYXMgY29uY2x1ZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3ODI2YjBh
MjQ4YzMyNWY4ZWYyNzUxZDdhOWM2NTYxMDM0OWU4ZWYuLmYyODMzZTgzN2UyNWE4YmY1ODNjNGI4
NDUyNGZlOTk3MDU4ODExOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDMtMDcg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0g
QWRkIGEgVUkgZGVsZWdhdGUgU1BJIGhvb2sgdG8gZW5hYmxlIG9yIGRpc2FibGUgbmF2aWdhdGlv
biBvbiBkcm9wCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjkxNjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwNjg4Mzc0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSBXZWJLaXQgQ2hhbmdlTG9n
IGZvciBtb3JlIGRldGFpbHMuIFJlbmFtZXMgV2ViRGVmYXVsdFVJRGVsZWdhdGUubSA9PiBXZWJE
ZWZhdWx0VUlEZWxlZ2F0ZS5tbS4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDE3LTAyLTI3ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBFbmFibGUgU1VQUE9SVFNfVEVYVF9CQVNFRF9BUEkgaW4gV2ViS2l0
TGVnYWN5IGZvciBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA4MzZhODk3YTk1YjU2N2VjNjY2ZTcz
NzdlYjYwY2EwZjc4OTUxOWFhLi5lNDRiYzM1OGJhZGJmYmE2NzZlYTA5MDcyZGE4YTJlNDcwMzU3
YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTctMDMtMDcgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIGEg
VUkgZGVsZWdhdGUgU1BJIGhvb2sgdG8gZW5hYmxlIG9yIGRpc2FibGUgbmF2aWdhdGlvbiBvbiBk
cm9wCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkx
NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwNjg4Mzc0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9ycyBXZWJEcmFnQ2xpZW50Ojph
Y3Rpb25NYXNrRm9yRHJhZyB0byB0YWtlIHBsYXRmb3JtIGRhdGEgb25seSwgcmF0aGVyIHRoYW4g
dGhlIGVudGlyZSBEcmFnRGF0YS4gU2VlIHRoZQorICAgICAgICBXZWJDb3JlIENoYW5nZUxvZyBl
bnRyeSBmb3IgbW9yZSBkZXRhaWxzLiBBbHNvIHJlbmFtZXMgV2ViRGVmYXVsdFVJRGVsZWdhdGUu
bSB0byBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbSwgc2luY2UKKyAgICAgICAgd2UgbmVlZCB0byBp
bXBvcnQgYSBDKysgaGVhZGVyIGZvciBsaW5rZWRPbk9yQWZ0ZXIoKS4KKworICAgICAgICBUaGUg
ZGVmYXVsdCBkZWxlZ2F0ZSBpbXBsZW1lbnRhdGlvbiBvZiB3ZWJWaWV3OmRyYWdEZXN0aW5hdGlv
bkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86IG5vdyBjaGVja3MgaWYgdGhlIGN1cnJlbnQKKyAg
ICAgICAgYXBwbGljYXRpb24gaXMgbGlua2luZyBhZ2FpbnN0IDEwLjEyIG9yIGVhcmxpZXIsIGFu
ZCBpZiBzbywgd2lsbCBhbGxvdyBhbnkgZHJhZyBkZXN0aW5hdGlvbiBhY3Rpb24gaW5zdGVhZCBv
ZgorICAgICAgICB0aGUgbmV3IGRlZmF1bHQgdmFsdWUgb2YgZXZlcnl0aGluZyBidXQgRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTG9hZC4KKworICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVm
YXVsdFVJRGVsZWdhdGUubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0
RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm0uCisgICAgICAgICgtW1dlYkRlZmF1bHRV
SURlbGVnYXRlIHdlYlZpZXc6ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5m
bzpdKToKKyAgICAgICAgKiBNaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5tbToKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JE
cmFnKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgt
W1dlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5n
VXBkYXRlZDpdKToKKwogMjAxNy0wMy0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgcGx1bWJpbmcgZm9yIFdlYkNvcmUgdG8gbm90aWZ5IFdl
YktpdDIgd2hlbiBhbiBlZGl0IGRyYWcgaGFzIGNvbmNsdWRlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4
IDA3MmVlODZhYTU3ZmExZmIzOTExZjZiYTQ4YjUyMTIxZDU4ODA4NTkuLjQzYjBiMWU1ZDM4ODk3
NTgxMWE3ODE2NmY4ZjMzY2E5Y2ZkNTAxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxNy0wMy0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBbV0syXSBBZGQgYSBVSSBkZWxlZ2F0ZSBTUEkgaG9vayB0byBlbmFibGUgb3Ig
ZGlzYWJsZSBuYXZpZ2F0aW9uIG9uIGRyb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2OTE2OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA2ODgz
NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWlu
b3IgdHdlYWsgdG8gYWRqdXN0IGZvciBhIGNoYW5nZWQgaW50ZXJmYWNlLiBTZWUgV2ViS2l0IGFu
ZCBXZWJDb3JlIENoYW5nZUxvZ3MgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6
OmFjdGlvbk1hc2tGb3JEcmFnKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50Lmg6CisKIDIwMTctMDMtMDYgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxl
LmNvbT4KIAogICAgICAgICBFeHBhbmQgZm9udC13ZWlnaHQgYW5kIGZvbnQtc3RyZXRjaCB0byB0
YWtlIGFueSBudW1iZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5ZmE1NWJlNzc2NTQ1YThlNDg5OWUwNjE3Y2Y2
MDllMzdlNTk1YTlhLi4wMjcyN2IyMGNhZjYwODdlMDk2NjQzMDVkMmQ3NzJhYzM2MmZmMDAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTctMDMtMDcgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIGEgVUkgZGVsZWdhdGUg
U1BJIGhvb2sgdG8gZW5hYmxlIG9yIGRpc2FibGUgbmF2aWdhdGlvbiBvbiBkcm9wCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkxNjgKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMwNjg4Mzc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgY3VzdG9taXppbmcgdGhlIHNldCBvZiBhbGxvd2Vk
IGFjdGlvbnMgb24gZHJvcCBpbiBXZWJLaXQyIGJ5IGludHJvZHVjaW5nIGEgbmV3IG1ldGhvZCB0
byBXS1VJRGVsZWdhdGVQcml2YXRlCisgICAgICAgIHRoYXQgcmV0dXJucyBhIFdLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uIGdpdmVuIHBsYXRmb3JtIGRyYWdnaW5nIGluZm8uIFRoZXNlIGZsYWdzIGFy
ZSB0aGVuIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUKKyAgICAgICAgRHJhZ0RhdGEgc2VudCBvdmVy
IHRvIHRoZSB3ZWIgcHJvY2Vzcywgd2hlcmUgdGhleSB1cGRhdGUgRHJhZ0NvbnRyb2xsZXIncyB2
aWV3IG9mIHRoZSBhbGxvd2VkIGRlc3RpbmF0aW9uIGFjdGlvbnMuCisKKyAgICAgICAgTW92aW5n
IGZvcndhcmQsIHRoZSBkZWZhdWx0IGFjdGlvbiBtYXNrIGZvciBXS1dlYlZpZXdzIHdpbGwgaW5j
bHVkZSBldmVyeXRoaW5nIGV4Y2VwdCBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQsCisgICAg
ICAgIHRob3VnaCBmb3IgYXBwbGNpYXRpb25zIGxpbmtlZCBvbiBvciBiZWZvcmUgMTAuMTIsIHdl
IHdpbGwgc3RpbGwgZGVmYXVsdCB0byBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSB0byBtaXRp
Z2F0ZQorICAgICAgICBhbnkgY29tcGF0aWJpbGl0eSByaXNrLgorCisgICAgICAgICogU2hhcmVk
L0FQSS9Db2NvYS9XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oOgorCisgICAgICAgIEludHJvZHVj
ZSBXSzIgY2xpZW50LWZhY2luZyB2ZXJzaW9ucyBvZiBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25B
Y3Rpb24gZmxhZ3MuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmVuY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUpOgorCisgICAgICAgIFNl
cmlhbGl6ZSBEcmFnRGF0YSdzIGRlc3RpbmF0aW9uIGFjdGlvbnMgd2hlbiBzZW5kaW5nIERyYWdE
YXRhIG92ZXIgSVBDLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdh
dGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06
CisgICAgICAgICgtW1dLV2ViVmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdn
aW5nSW5mbzpdKToKKworICAgICAgICBGb3IgV0tXZWJWaWV3LCBhbGxvdyBhbGwgZHJhZyBkZXN0
aW5hdGlvbiBhY3Rpb25zIGV4Y2VwdCBmb3IgbG9hZGluZyAoaS5lLiBkcm9wLXRvLW5hdmlnYXRl
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1b
V0tWaWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOl0pOgorCisg
ICAgICAgIEZvciBXS1ZpZXcsIGFsbG93IGFsbCB0eXBlcyBvZiBkcmFnIGRlc3RpbmF0aW9uIGFj
dGlvbnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRy
YWdnaW5nRW50ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ1Vw
ZGF0ZWQpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJhZyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisKIDIwMTctMDMt
MDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHBsdW1iaW5nIGZvciBXZWJDb3JlIHRvIG5vdGlmeSBXZWJLaXQyIHdoZW4gYW4gZWRpdCBkcmFn
IGhhcyBjb25jbHVkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXgg
OGMwYWE2NWJiMDg1ZjExNDE5NGMwM2RlMWU1MmJhMTgyNTVjOTY3Mi4uZTk0MzkwMDY5NjEzZGRi
NTY3NTE5MmJhMzM3NDc5ZjBkNzdlM2U2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKQEAgLTEyOSw3ICsxMjksNiBAQCBjbGFzcyBFbXB0eURpYWdub3N0aWNMb2dnaW5n
Q2xpZW50IGZpbmFsIDogcHVibGljIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50IHsKIGNsYXNzIEVt
cHR5RHJhZ0NsaWVudCBmaW5hbCA6IHB1YmxpYyBEcmFnQ2xpZW50IHsKICAgICB2b2lkIHdpbGxQ
ZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3Qg
RHJhZ0RhdGEmKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlv
bihEcmFnU291cmNlQWN0aW9uLCBjb25zdCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYpIGZpbmFs
IHsgfQotICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBE
cmFnRGF0YSYpIGZpbmFsIHsgcmV0dXJuIERyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmU7IH0KICAg
ICBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50
UG9pbnQmKSBmaW5hbCB7IHJldHVybiBEcmFnU291cmNlQWN0aW9uTm9uZTsgfQogICAgIHZvaWQg
c3RhcnREcmFnKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIGNv
bnN0IEZsb2F0UG9pbnQmLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYsIERyYWdTb3VyY2VBY3Rpb24p
IGZpbmFsIHsgfQogICAgIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKSBmaW5hbCB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKaW5kZXggZGI3ZWU3MTA4NzJmMjE4NzM1MWI2MGMyODk2
YWU2MmY3NzI3YzY0My4uZWNkZWI3ZjQ3M2MzZDlkYmM1MGQzMGQyYmNkNTRkMTZlYzc4YjJjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKKyNpbmNsdWRlICJEcmFnRGF0YS5oIgogI2lu
Y2x1ZGUgIkRyYWdJdGVtLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIklu
dFBvaW50LmgiCkBAIC0zMyw3ICszNCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBj
bGFzcyBEYXRhVHJhbnNmZXI7Ci1jbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIEltYWdlOwpAQCAtNDcsNyArNDcsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlv
bkFjdGlvbiwgY29uc3QgRHJhZ0RhdGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJm
b3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25zdCBJbnRQb2ludCYsIERh
dGFUcmFuc2ZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29uY2x1ZGVFZGl0RHJhZygp
IHsgfQotICAgIHZpcnR1YWwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFn
KGNvbnN0IERyYWdEYXRhJikgPSAwOwogICAgIHZpcnR1YWwgRHJhZ1NvdXJjZUFjdGlvbiBkcmFn
U291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JiByb290Vmlld1BvaW50KSA9
IDA7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhEcmFnSW1hZ2UsIGNvbnN0IElu
dFBvaW50JiBkcmFnSW1hZ2VPcmlnaW4sIGNvbnN0IEludFBvaW50JiBldmVudFBvcywgY29uc3Qg
RmxvYXRQb2ludCYgZHJhZ0ltYWdlQW5jaG9yLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYsIERyYWdT
b3VyY2VBY3Rpb24pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5k
ZXggYThkMTAyZDdmYTk1N2I2OTkxZmIwNWNiYmQ3ZWEzN2M1NzNhODllNi4uNWI1OTk0MDljMzRm
YWYzOGVmMjYwMGQ4NWU2Zjk2MmY3ZDM5NGZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKQEAgLTI4MCw3ICsyODAsNyBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9s
bGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAg
ICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudChtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBv
aW50KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpKTsKIAotICAgIG1fZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uID0gbV9jbGllbnQuYWN0aW9uTWFza0ZvckRyYWcoZHJhZ0RhdGEpOworICAgIG1fZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uID0gZHJhZ0RhdGEuZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCk7CiAg
ICAgaWYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID09IERyYWdEZXN0aW5hdGlvbkFjdGlvbk5v
bmUpIHsKICAgICAgICAgY2xlYXJEcmFnQ2FyZXQoKTsgLy8gRklYTUU6IFdoeSBub3QgY2FsbCBt
b3VzZU1vdmVkSW50b0RvY3VtZW50KG51bGxwdHIpPwogICAgICAgICByZXR1cm4gRHJhZ09wZXJh
dGlvbk5vbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKaW5kZXggYWI2N2M2NjZk
YTgxMGU5NTdkOGZlM2U5OTYxYmVkZDE4MzQ2YTM4YS4uYjQyOGMzNzM5M2ZlY2Q0YTFhODgwNTgw
ZmVkNjhlYjliY2U0YzRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcApAQCAt
MzIsMjMgKzMyLDIzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09D
T0EpCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIAotICAgIERy
YWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxh
Z3MpCitEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVy
YXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIERy
YWdEZXN0aW5hdGlvbkFjdGlvbiBkZXN0aW5hdGlvbkFjdGlvbikKICAgICA6IG1fY2xpZW50UG9z
aXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0
aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKGRhdGEpCiAgICAgLCBtX2RyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9hcHBsaWNhdGlv
bkZsYWdzKGZsYWdzKQorICAgICwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb24oZGVzdGluYXRpb25B
Y3Rpb24pCiB7ICAKIH0KIAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LAotICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9u
RmxhZ3MgZmxhZ3MpCitEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERy
YWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxh
Z3MsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBkZXN0aW5hdGlvbkFjdGlvbikKICAgICA6IG1fY2xp
ZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2Jh
bFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCiAgICAgLCBtX2RyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNrKQogICAgICwgbV9hcHBsaWNh
dGlvbkZsYWdzKGZsYWdzKQorICAgICwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb24oZGVzdGluYXRp
b25BY3Rpb24pCiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4
IDNjZjExZTdkYTAxNDllZjQ3OTA0NzNmNTg1ZGE3OTA5NTJiNzg0MjcuLjE5NTcyMWIxZmRhM2Vj
ODhlMjhmZWY4ZTMzMjZjOTY1OTVjZjQyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
aApAQCAtNzgsOCArNzgsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBGaWxlbmFtZUNvbnZlcnNpb25Q
b2xpY3kgeyBEb05vdENvbnZlcnRGaWxlbmFtZXMsIENvbnZlcnRGaWxlbmFtZXMgfTsKIAogICAg
IC8vIGNsaWVudFBvc2l0aW9uIGlzIHRha2VuIHRvIGJlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZHJh
ZyBldmVudCB3aXRoaW4gdGhlIHRhcmdldCB3aW5kb3csIHdpdGggKDAsMCkgYXQgdGhlIHRvcCBs
ZWZ0Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNvbnN0IEludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFn
T3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1l
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGlj
YXRpb25Ob25lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9u
Tm9uZSwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbnMgPSBEcmFnRGVzdGluYXRpb25BY3Rp
b25BbnkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0
b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50
JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBE
cmFnQXBwbGljYXRpb25Ob25lLCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9ucyA9IERyYWdE
ZXN0aW5hdGlvbkFjdGlvbkFueSk7CiAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgdXNl
ZCBvbmx5IGJ5IFdlYktpdDIgSVBDIGJlY2F1c2UgRHJhZ0RhdGEKICAgICAvLyBpcyBpbml0aWFs
aXplZCBieSB0aGUgZGVjb2RlciBhbmQgbm90IGluIHRoZSBjb25zdHJ1Y3Rvci4KICAgICBEcmFn
RGF0YSgpIHsgfQpAQCAtMTA1LDYgKzEwNSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5z
Q29sb3IoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zRmlsZXMoKSBjb25zdDsKICAgICB1bnNp
Z25lZCBudW1iZXJPZkZpbGVzKCkgY29uc3Q7CisgICAgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGRy
YWdEZXN0aW5hdGlvbkFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uOyB9CiAgICAgdm9pZCBzZXRGaWxlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZpbGVOYW1lcykg
eyBtX2ZpbGVOYW1lcyA9IFdURk1vdmUoZmlsZU5hbWVzKTsgfQogICAgIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBmaWxlTmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVOYW1lczsgfQogI2lmIFBM
QVRGT1JNKENPQ09BKQpAQCAtMTIxLDYgKzEyMiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9wbGF0
Zm9ybURyYWdEYXRhID0gZGF0YS5tX3BsYXRmb3JtRHJhZ0RhdGE7CiAgICAgICAgIG1fZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrID0gZGF0YS5tX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
azsKICAgICAgICAgbV9hcHBsaWNhdGlvbkZsYWdzID0gZGF0YS5tX2FwcGxpY2F0aW9uRmxhZ3M7
CisgICAgICAgIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID0gZGF0YS5tX2RyYWdEZXN0aW5hdGlv
bkFjdGlvbjsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KICNlbmRpZgpAQCAtMTMyLDYg
KzEzNCw3IEBAIHByaXZhdGU6CiAgICAgRHJhZ09wZXJhdGlvbiBtX2RyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzazsKICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBtX2FwcGxpY2F0aW9uRmxhZ3M7
CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlTmFtZXM7CisgICAgRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFN0
cmluZyBtX3Bhc3RlYm9hcmROYW1lOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRHJhZ0RhdGFNYWMubW0KaW5kZXggOThkN2I3ZmUxNThlMjc5NmZlMmM1YmQ4OTRiYmM3NDUw
YmM4YjRlMy4uY2Y3OGI0YTk0OTIwYTJjNTU5Zjg2NjZkODM0ZWJjNTk2ZjQ3YWM5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpAQCAtODMsMTMgKzgzLDEz
IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRpZmZQYXN0ZWJvYXJkVHlwZSgpCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCAKLSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlv
bkZsYWdzIGZsYWdzKQorRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdz
IGZsYWdzLCBEcmFnRGVzdGluYXRpb25BY3Rpb24gZGVzdGluYXRpb25BY3Rpb24pCiAgICAgOiBt
X2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihn
bG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YShkYXRhKQogICAgICwgbV9k
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soc291cmNlT3BlcmF0aW9uTWFzaykKICAgICAsIG1f
YXBwbGljYXRpb25GbGFncyhmbGFncykKKyAgICAsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKGRl
c3RpbmF0aW9uQWN0aW9uKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fcGFzdGVib2FyZE5h
bWUoW1ttX3BsYXRmb3JtRHJhZ0RhdGEgZHJhZ2dpbmdQYXN0ZWJvYXJkXSBuYW1lXSkKICNlbHNl
CkBAIC05OCwxMyArOTgsMTMgQEAgRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG8KIHsKIH0KIAotRHJh
Z0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwKLSAg
ICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdz
IGZsYWdzKQorRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1l
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRp
b25GbGFncyBmbGFncywgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGRlc3RpbmF0aW9uQWN0aW9uKQog
ICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9z
aXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEoMCkKICAgICAs
IG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spCiAgICAg
LCBtX2FwcGxpY2F0aW9uRmxhZ3MoZmxhZ3MpCisgICAgLCBtX2RyYWdEZXN0aW5hdGlvbkFjdGlv
bihkZXN0aW5hdGlvbkFjdGlvbikKICAgICAsIG1fcGFzdGVib2FyZE5hbWUoZHJhZ1N0b3JhZ2VO
YW1lKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggY2YxZTQ2MTU4MjRjMDEwZGViODZmYWFlNWQzODdkNjUxNGQyYTVhZS4uOGEx
MjhiYWE5MjliYTc3ZTRjZGM5NzAyNWY1YTg2MWNiYTkwMDIzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMjksNyArMzI5LDcgQEAK
IAkJOTM5ODExMDYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkZyYW1lVmlldy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQThCNTJGMDQyODJCNTkwMENB
MkQzQSAvKiBXZWJGcmFtZVZpZXcubW0gKi87IH07CiAJCTkzOTgxMTA3MDgyNEJGMDEwMDhERjAz
OCAvKiBXZWJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFBOEI1N0EwNDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcubW0gKi87IH07CiAJCTkz
OTgxMTA4MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDQzRjlCMDQyOTM5MkIwMENB
MkQzQSAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5tbSAqLzsgfTsKLQkJOTM5ODExMEEwODI0QkYwMTAw
OERGMDM4IC8qIFdlYkRlZmF1bHRVSURlbGVnYXRlLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFMjdEMDA0NThDQTRCMDBDQTJEM0EgLyogV2ViRGVm
YXVsdFVJRGVsZWdhdGUubSAqLzsgfTsKKwkJOTM5ODExMEEwODI0QkYwMTAwOERGMDM4IC8qIFdl
YkRlZmF1bHRVSURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE1RTI3RDAwNDU4Q0E0QjAwQ0EyRDNBIC8qIFdlYkRlZmF1bHRVSURlbGVn
YXRlLm1tICovOyB9OwogCQk5Mzk4MTExMjA4MjRCRjAxMDA4REYwMzggLyogV2ViTlNVUkxFeHRy
YXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTZE
QzM5QTA0QzYyQzRFMDA0RDBFRjYgLyogV2ViTlNVUkxFeHRyYXMubW0gKi87IH07CiAJCTkzOTgx
MTEzMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJIaXN0b3J5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVEQTI2MDgwNTJDQzE4NzAwQTk3QjMxIC8qIFdl
Ykhpc3RvcnkubW0gKi87IH07CiAJCTkzOTgxMTE1MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOU0Rh
dGFFeHRyYXMubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJFQ0QxNDJBMDU2NTgzMEEwMDVCQjA5QyAvKiBXZWJOU0RhdGFFeHRyYXMubSAqLzsgfTsKQEAg
LTk2Niw3ICs5NjYsNyBAQAogCQk1MTU4RjZFRTEwNkQ4NjJBMDBBRjQ1N0MgLyogV2ViSGlzdG9y
eURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkhpc3RvcnlE
ZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVFMjdDQzA0NThDODY1
MDBDQTJEM0EgLyogV2ViVUlEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVSURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1MTVFMjdDRjA0NThDQTRC
MDBDQTJEM0EgLyogV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGVmYXVsdFVJRGVsZWdhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCTUx
NUUyN0QwMDQ1OENBNEIwMENBMkQzQSAvKiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJEZWZhdWx0
VUlEZWxlZ2F0ZS5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKKwkJNTE1RTI3RDAwNDU4Q0E0QjAwQ0EyRDNBIC8qIFdlYkRlZmF1bHRVSURl
bGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViRGVmYXVsdFVJRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1MTZGMjk2RjAzQTZDNDVBMDBD
QTJEM0EgLyogV2ViSGlzdG9yeUl0ZW1JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJIaXN0b3J5SXRlbUludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1
MTg1RjYyNTEwNzEyQjgwMDA3QUEzOTMgLyogV2ViTmF2aWdhdGlvbkRhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTmF2aWdhdGlvbkRhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE4NUY2MjcxMDcxMkI5NzAwN0FBMzkzIC8qIFdlYk5hdmlnYXRp
b25EYXRhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTmF2
aWdhdGlvbkRhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTUwLDcgKzE5
NTAsNyBAQAogCQkJCTUxNTJGQURGMDMzRkM1MDQwMENBMkFDRCAvKiBXZWJEZWZhdWx0UG9saWN5
RGVsZWdhdGUuaCAqLywKIAkJCQk1MTUyRkFFMDAzM0ZDNTA0MDBDQTJBQ0QgLyogV2ViRGVmYXVs
dFBvbGljeURlbGVnYXRlLm0gKi8sCiAJCQkJNTE1RTI3Q0YwNDU4Q0E0QjAwQ0EyRDNBIC8qIFdl
YkRlZmF1bHRVSURlbGVnYXRlLmggKi8sCi0JCQkJNTE1RTI3RDAwNDU4Q0E0QjAwQ0EyRDNBIC8q
IFdlYkRlZmF1bHRVSURlbGVnYXRlLm0gKi8sCisJCQkJNTE1RTI3RDAwNDU4Q0E0QjAwQ0EyRDNB
IC8qIFdlYkRlZmF1bHRVSURlbGVnYXRlLm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSAiRGVmYXVs
dCBEZWxlZ2F0ZXMiOwogCQkJcGF0aCA9IG1hYy9EZWZhdWx0RGVsZWdhdGVzOwpAQCAtMzU3OCw3
ICszNTc4LDcgQEAKIAkJCQlBMTBDMUQxQjE4MjAyRjlDMDAzNjg4M0EgLyogV2ViRGVmYXVsdEZy
YW1lTG9hZERlbGVnYXRlLm0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBGMDA4MjRCRjAxMDA4
REYwMzggLyogV2ViRGVmYXVsdFBvbGljeURlbGVnYXRlLm0gaW4gU291cmNlcyAqLywKIAkJCQlB
MTBDMUQxRDE4MjAyRjlDMDAzNjg4M0EgLyogV2ViRGVmYXVsdFJlc291cmNlTG9hZERlbGVnYXRl
Lm0gaW4gU291cmNlcyAqLywKLQkJCQk5Mzk4MTEwQTA4MjRCRjAxMDA4REYwMzggLyogV2ViRGVm
YXVsdFVJRGVsZWdhdGUubSBpbiBTb3VyY2VzICovLAorCQkJCTkzOTgxMTBBMDgyNEJGMDEwMDhE
RjAzOCAvKiBXZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExMEMx
RDFGMTgyMDJGOUMwMDM2ODgzQSAvKiBXZWJEZWZhdWx0VUlLaXREZWxlZ2F0ZS5tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM1NDJDNDMwRkQ3NzY2RjAwRDhBQjVEIC8qIFdlYkRlbGVnYXRlSW1wbGVt
ZW50YXRpb25DYWNoaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTk4QUQ5MjIxMjAxQ0YxMDAw
QUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVn
YXRlLm0gYi9Tb3VyY2UvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURl
bGVnYXRlLm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNzk0MmJlMzkzMmUwZWRm
YTJlNzUxMzQzMjA5OGQxMDVhOTQ4ZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZh
dWx0VUlEZWxlZ2F0ZS5tCisrKyAvZGV2L251bGwKQEAgLTEsMjc0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgIldlYkRl
ZmF1bHRVSURlbGVnYXRlLmgiCi0KLSNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKLSNpbXBv
cnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCi0jaW1wb3J0ICJXZWJWaWV3LmgiCi0KLSNpZiAh
UExBVEZPUk0oSU9TKQotI2ltcG9ydCAiV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLmgiCi0j
ZW5kaWYKLQotI2lmIFBMQVRGT1JNKElPUykKLSNpbXBvcnQgPFdlYkNvcmUvV0FLV2luZG93Lmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1dLVmlld1ByaXZhdGUuaD4KLSNlbmRpZgotCi0jaWYgIVBMQVRG
T1JNKElPUykKLUBpbnRlcmZhY2UgTlNBcHBsaWNhdGlvbiAoRGVjbGFyYXRpb25TdG9sZW5Gcm9t
QXBwS2l0KQotLSAodm9pZClfY3ljbGVXaW5kb3dzUmV2ZXJzZWQ6KEJPT0wpcmV2ZXJzZWQ7Ci1A
ZW5kCi0jZW5kaWYKLQotQGltcGxlbWVudGF0aW9uIFdlYkRlZmF1bHRVSURlbGVnYXRlCi0KLXN0
YXRpYyBXZWJEZWZhdWx0VUlEZWxlZ2F0ZSAqc2hhcmVkRGVsZWdhdGUgPSBuaWw7Ci0KLS8vIFJl
dHVybiBhIG9iamVjdCB3aXRoIHZhbmlsbGEgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBwcm90b2Nv
bCdzIG1ldGhvZHMKLS8vIE5vdGUgdGhpcyBmZWF0dXJlIHJlbGllcyBvbiBvdXIgZGVmYXVsdCBk
ZWxlZ2F0ZSBiZWluZyBzdGF0ZWxlc3MuICBUaGlzCi0vLyBpcyBwcm9iYWJseSBhbiBpbnZhbGlk
IGFzc3VtcHRpb24gZm9yIHRoZSBXZWJVSURlbGVnYXRlLgotLy8gSWYgd2UgYWRkIGFueSByZWFs
IGZ1bmN0aW9uYWxpdHkgdG8gdGhpcyBkZWZhdWx0IGRlbGVnYXRlIHdlIHByb2JhYmx5Ci0vLyB3
b24ndCBiZSBhYmxlIHRvIHVzZSBhIHNpbmdsZXRvbi4KLSsgKFdlYkRlZmF1bHRVSURlbGVnYXRl
ICopc2hhcmVkVUlEZWxlZ2F0ZQotewotICAgIGlmICghc2hhcmVkRGVsZWdhdGUpIHsKLSAgICAg
ICAgc2hhcmVkRGVsZWdhdGUgPSBbW1dlYkRlZmF1bHRVSURlbGVnYXRlIGFsbG9jXSBpbml0XTsK
LSAgICB9Ci0gICAgcmV0dXJuIHNoYXJlZERlbGVnYXRlOwotfQotCi0tIChXZWJWaWV3ICopd2Vi
VmlldzogKFdlYlZpZXcgKil3diBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3Qgd2luZG93RmVhdHVyZXM6KE5TRGljdGlvbmFyeSAqKWZlYXR1cmVzCi17Ci0g
ICAgLy8gSWYgdGhlIG5ldyBBUEkgbWV0aG9kIGRvZXNuJ3QgZXhpc3QsIGZhbGxiYWNrIHRvIHRo
ZSBvbGQgdmVyc2lvbiBvZiBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3QKLSAgICAvLyBmb3IgYmFj
a3dhcmRzIGNvbXBhdGFiaWxpdHkKLSAgICBpZiAoIVtbd3YgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDp3aW5k
b3dGZWF0dXJlczopXSAmJiBbW3d2IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6KV0pCi0gICAgICAgIHJldHVy
biBbW3d2IFVJRGVsZWdhdGVdIHdlYlZpZXc6d3YgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0OnJl
cXVlc3RdOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLSNpZiBQTEFURk9STShJT1MpCi0tIChXZWJW
aWV3ICopd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgdXNlckdlc3R1cmU6KEJPT0wpdXNlckdlc3R1cmUKLXsK
LSAgICByZXR1cm4gbmlsOwotfQotI2VuZGlmCi0KLS0gKHZvaWQpd2ViVmlld1Nob3c6IChXZWJW
aWV3ICopd3YKLXsKLX0KLQotLSAodm9pZCl3ZWJWaWV3Q2xvc2U6IChXZWJWaWV3ICopd3YKLXsK
LSNpZiAhUExBVEZPUk0oSU9TKQotICAgIFtbd3Ygd2luZG93XSBjbG9zZV07Ci0jZW5kaWYKLX0K
LQotLSAodm9pZCl3ZWJWaWV3Rm9jdXM6IChXZWJWaWV3ICopd3YKLXsKLSNpZiAhUExBVEZPUk0o
SU9TKQotICAgIFtbd3Ygd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9udDp3dl07Ci0jZW5kaWYK
LX0KLQotLSAodm9pZCl3ZWJWaWV3VW5mb2N1czogKFdlYlZpZXcgKil3dgotewotI2lmICFQTEFU
Rk9STShJT1MpCi0gICAgaWYgKFtbd3Ygd2luZG93XSBpc0tleVdpbmRvd10gfHwgW1tbd3Ygd2lu
ZG93XSBhdHRhY2hlZFNoZWV0XSBpc0tleVdpbmRvd10pIHsKLSAgICAgICAgW05TQXBwIF9jeWNs
ZVdpbmRvd3NSZXZlcnNlZDpGQUxTRV07Ci0gICAgfQotI2VuZGlmCi19Ci0KLS0gKE5TUmVzcG9u
ZGVyICopd2ViVmlld0ZpcnN0UmVzcG9uZGVyOiAoV2ViVmlldyAqKXd2Ci17Ci0gICAgcmV0dXJu
IFtbd3Ygd2luZG93XSBmaXJzdFJlc3BvbmRlcl07Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzogKFdl
YlZpZXcgKil3diBtYWtlRmlyc3RSZXNwb25kZXI6KE5TUmVzcG9uZGVyICopcmVzcG9uZGVyCi17
Ci0gICAgW1t3diB3aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpyZXNwb25kZXJdOwotfQotCi0t
ICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0U3RhdHVzVGV4dDooTlNTdHJpbmcgKil0
ZXh0Ci17Ci19Ci0KLS0gKE5TU3RyaW5nICopd2ViVmlld1N0YXR1c1RleHQ6IChXZWJWaWV3ICop
d3YKLXsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICop
d3YgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnRJbmZvcm1h
dGlvbiBtb2RpZmllckZsYWdzOihOU1VJbnRlZ2VyKW1vZGlmaWVyRmxhZ3MKLXsKLX0KLQotLSAo
Qk9PTCl3ZWJWaWV3QXJlVG9vbGJhcnNWaXNpYmxlOiAoV2ViVmlldyAqKXd2Ci17Ci0gICAgcmV0
dXJuIE5POwotfQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0VG9vbGJhcnNW
aXNpYmxlOihCT09MKXZpc2libGUKLXsKLX0KLQotLSAoQk9PTCl3ZWJWaWV3SXNTdGF0dXNCYXJW
aXNpYmxlOiAoV2ViVmlldyAqKXd2Ci17Ci0gICAgcmV0dXJuIE5POwotfQotCi0tICh2b2lkKXdl
YlZpZXc6IChXZWJWaWV3ICopd3Ygc2V0U3RhdHVzQmFyVmlzaWJsZTooQk9PTCl2aXNpYmxlCi17
Ci19Ci0KLS0gKEJPT0wpd2ViVmlld0lzUmVzaXphYmxlOiAoV2ViVmlldyAqKXd2Ci17Ci0jaWYg
UExBVEZPUk0oSU9TKQotICAgIHJldHVybiBOTzsKLSNlbHNlCi0gICAgcmV0dXJuIFtbd3Ygd2lu
ZG93XSBzaG93c1Jlc2l6ZUluZGljYXRvcl07Ci0jZW5kaWYKLX0KLQotLSAodm9pZCl3ZWJWaWV3
OiAoV2ViVmlldyAqKXd2IHNldFJlc2l6YWJsZTooQk9PTClyZXNpemFibGUKLXsKLSNpZiAhUExB
VEZPUk0oSU9TKQotICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgY2hhbmdlIHRo
ZSByZXNpemFiaWxpdHkgb2YgdGhlIHdpbmRvdywKLSAgICAvLyBvbmx5IHZpc2liaWxpdHkgb2Yg
dGhlIGluZGljYXRvci4KLSAgICBbW3d2IHdpbmRvd10gc2V0U2hvd3NSZXNpemVJbmRpY2F0b3I6
cmVzaXphYmxlXTsKLSNlbmRpZgotfQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3Yg
c2V0RnJhbWU6KE5TUmVjdClmcmFtZQotewotI2lmICFQTEFURk9STShJT1MpCi0gICAgW1t3diB3
aW5kb3ddIHNldEZyYW1lOmZyYW1lIGRpc3BsYXk6WUVTXTsKLSNlbmRpZgotfQotCi0tIChOU1Jl
Y3Qpd2ViVmlld0ZyYW1lOiAoV2ViVmlldyAqKXd2Ci17Ci0gICAgTlNXaW5kb3cgKndpbmRvdyA9
IFt3diB3aW5kb3ddOwotICAgIHJldHVybiB3aW5kb3cgPT0gbmlsID8gTlNaZXJvUmVjdCA6IFt3
aW5kb3cgZnJhbWVdOwotfQotCi0tICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2
YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRl
ZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKLXsKLSAgICAvLyBGSVhNRTogV2Ugd2FudCBhIGRl
ZmF1bHQgaGVyZSwgYnV0IHRoYXQgd291bGQgYWRkIGxvY2FsaXplZCBzdHJpbmdzLgotfQotCi0t
IChCT09MKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdp
dGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV2ViRnJhbWUg
KilmcmFtZQotewotICAgIC8vIEZJWE1FOiBXZSB3YW50IGEgZGVmYXVsdCBoZXJlLCBidXQgdGhh
dCB3b3VsZCBhZGQgbG9jYWxpemVkIHN0cmluZ3MuCi0gICAgcmV0dXJuIE5POwotfQotCi0tIChO
U1N0cmluZyAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBh
bmVsV2l0aFByb21wdDooTlNTdHJpbmcgKilwcm9tcHQgZGVmYXVsdFRleHQ6KE5TU3RyaW5nICop
ZGVmYXVsdFRleHQgaW5pdGlhdGVkQnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQotewotI2lmICFQ
TEFURk9STShJT1MpCi0gICAgV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsICpwYW5lbCA9IFtb
V2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsIGFsbG9jXSBpbml0V2l0aFByb21wdDpwcm9tcHQg
dGV4dDpkZWZhdWx0VGV4dF07Ci0gICAgW3BhbmVsIHNob3dXaW5kb3c6bmlsXTsKLSAgICBOU1N0
cmluZyAqcmVzdWx0OwotICAgIGlmIChbTlNBcHAgcnVuTW9kYWxGb3JXaW5kb3c6W3BhbmVsIHdp
bmRvd11dKSB7Ci0gICAgICAgIHJlc3VsdCA9IFtwYW5lbCB0ZXh0XTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICByZXN1bHQgPSBuaWw7Ci0gICAgfQotICAgIFtbcGFuZWwgd2luZG93XSBjbG9zZV07
Ci0gICAgW3BhbmVsIHJlbGVhc2VdOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIHJl
dHVybiBuaWw7Ci0jZW5kaWYKLX0KLQotLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1
bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6KGlkPFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyPilyZXN1bHRMaXN0ZW5lcgotewotICAgIC8vIEZJWE1FOiBXZSB3YW50
IGEgZGVmYXVsdCBoZXJlLCBidXQgdGhhdCB3b3VsZCBhZGQgbG9jYWxpemVkIHN0cmluZ3MuCi19
Ci0KLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBwcmludEZyYW1lVmlldzooV2Vi
RnJhbWVWaWV3ICopZnJhbWVWaWV3Ci17Ci19Ci0KLQotI2lmICFQTEFURk9STShJT1MpCi0tIChO
U1VJbnRlZ2VyKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2tGb3JEcmFnZ2luZ0luZm86KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCi17
Ci0gICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKLX0KLQotLSAodm9pZCl3
ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlv
bjooV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWFjdGlvbiBmb3JEcmFnZ2luZ0luZm86KGlkIDxO
U0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCi17Ci19Ci0KLS0gKE5TVUludGVnZXIpd2ViVmll
dzooV2ViVmlldyAqKXdlYlZpZXcgZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludDooTlNQb2lu
dClwb2ludAotewotICAgIHJldHVybiBXZWJEcmFnU291cmNlQWN0aW9uQW55OwotfQotCi0tICh2
b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlv
bjooV2ViRHJhZ1NvdXJjZUFjdGlvbilhY3Rpb24gZnJvbVBvaW50OihOU1BvaW50KXBvaW50IHdp
dGhQYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkCi17Ci19Ci0KLS0gKHZvaWQp
d2ViVmlldzooV2ViVmlldyAqKXNlbmRlciB3aWxsUG9wdXBNZW51OihOU01lbnUgKiltZW51Ci17
Ci19Ci0jZW5kaWYKLQotLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZERyYXdS
ZWN0OihOU1JlY3QpcmVjdAotewotfQotCi0tICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5k
ZXIgZGlkU2Nyb2xsRG9jdW1lbnRJbkZyYW1lVmlldzooV2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3
Ci17Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBleGNlZWRlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOihXZWJTZWN1cml0eU9yaWdp
biAqKW9yaWdpbiB0b3RhbFNwYWNlTmVlZGVkOihOU1VJbnRlZ2VyKXRvdGFsU3BhY2VOZWVkZWQK
LXsKLX0KLQotLSAoQk9PTCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHNob3VsZFJlcGxhY2VV
cGxvYWRGaWxlOihOU1N0cmluZyAqKXBhdGggdXNpbmdHZW5lcmF0ZWRGaWxlbmFtZTooTlNTdHJp
bmcgKiopZmlsZW5hbWUKLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKE5TU3RyaW5nICopd2Vi
VmlldzooV2ViVmlldyAqKXNlbmRlciBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZTooTlNTdHJpbmcg
KilwYXRoCi17Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotI2lmIFBMQVRGT1JNKElPUykKLS0gKHZv
aWQpd2ViVmlld1N1cHBvcnRlZE9yaWVudGF0aW9uc1VwZGF0ZWQ6KFdlYlZpZXcgKilzZW5kZXIK
LXsKLX0KLSNlbmRpZgotCi1AZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9EZWZh
dWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9tYWMv
RGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmUy
YTgzOTUwNzczNzc3NTBmMDZlNTVhYmFkNmI2OTBlODg2ZmNjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5t
bQpAQCAtMCwwICsxLDI3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCIKKworI2ltcG9y
dCAiV2ViVHlwZXNJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIK
KyNpbXBvcnQgIldlYlZpZXcuaCIKKworI2lmICFQTEFURk9STShJT1MpCisjaW1wb3J0ICJXZWJK
YXZhU2NyaXB0VGV4dElucHV0UGFuZWwuaCIKKyNpbXBvcnQgIldlYktpdFZlcnNpb25DaGVja3Mu
aCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCA8V2ViQ29yZS9XQUtXaW5k
b3cuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV0tWaWV3UHJpdmF0ZS5oPgorI2VuZGlmCisKKyNpZiAh
UExBVEZPUk0oSU9TKQorQGludGVyZmFjZSBOU0FwcGxpY2F0aW9uIChEZWNsYXJhdGlvblN0b2xl
bkZyb21BcHBLaXQpCistICh2b2lkKV9jeWNsZVdpbmRvd3NSZXZlcnNlZDooQk9PTClyZXZlcnNl
ZDsKK0BlbmQKKyNlbmRpZgorCitAaW1wbGVtZW50YXRpb24gV2ViRGVmYXVsdFVJRGVsZWdhdGUK
Kworc3RhdGljIFdlYkRlZmF1bHRVSURlbGVnYXRlICpzaGFyZWREZWxlZ2F0ZSA9IG5pbDsKKwor
Ly8gUmV0dXJuIGEgb2JqZWN0IHdpdGggdmFuaWxsYSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHBy
b3RvY29sJ3MgbWV0aG9kcworLy8gTm90ZSB0aGlzIGZlYXR1cmUgcmVsaWVzIG9uIG91ciBkZWZh
dWx0IGRlbGVnYXRlIGJlaW5nIHN0YXRlbGVzcy4gVGhpcworLy8gaXMgcHJvYmFibHkgYW4gaW52
YWxpZCBhc3N1bXB0aW9uIGZvciB0aGUgV2ViVUlEZWxlZ2F0ZS4KKy8vIElmIHdlIGFkZCBhbnkg
cmVhbCBmdW5jdGlvbmFsaXR5IHRvIHRoaXMgZGVmYXVsdCBkZWxlZ2F0ZSB3ZSBwcm9iYWJseQor
Ly8gd29uJ3QgYmUgYWJsZSB0byB1c2UgYSBzaW5nbGV0b24uCisrIChXZWJEZWZhdWx0VUlEZWxl
Z2F0ZSAqKXNoYXJlZFVJRGVsZWdhdGUKK3sKKyAgICBpZiAoIXNoYXJlZERlbGVnYXRlKQorICAg
ICAgICBzaGFyZWREZWxlZ2F0ZSA9IFtbV2ViRGVmYXVsdFVJRGVsZWdhdGUgYWxsb2NdIGluaXRd
OworICAgIHJldHVybiBzaGFyZWREZWxlZ2F0ZTsKK30KKworLSAoV2ViVmlldyAqKXdlYlZpZXc6
IChXZWJWaWV3ICopd3YgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0IHdpbmRvd0ZlYXR1cmVzOihOU0RpY3Rpb25hcnkgKilmZWF0dXJlcworeworICAgIC8v
IElmIHRoZSBuZXcgQVBJIG1ldGhvZCBkb2Vzbid0IGV4aXN0LCBmYWxsYmFjayB0byB0aGUgb2xk
IHZlcnNpb24gb2YgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0CisgICAgLy8gZm9yIGJhY2t3YXJk
cyBjb21wYXRhYmlsaXR5CisgICAgaWYgKCFbW3d2IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6d2luZG93RmVh
dHVyZXM6KV0gJiYgW1t3diBVSURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0OildKQorICAgICAgICByZXR1cm4gW1t3
diBVSURlbGVnYXRlXSB3ZWJWaWV3Ond2IGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDpyZXF1ZXN0
XTsKKyAgICByZXR1cm4gbmlsOworfQorCisjaWYgUExBVEZPUk0oSU9TKQorLSAoV2ViVmlldyAq
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IHVzZXJHZXN0dXJlOihCT09MKXVzZXJHZXN0dXJlCit7CisgICAg
cmV0dXJuIG5pbDsKK30KKyNlbmRpZgorCistICh2b2lkKXdlYlZpZXdTaG93OiAoV2ViVmlldyAq
KXd2Cit7Cit9CisKKy0gKHZvaWQpd2ViVmlld0Nsb3NlOiAoV2ViVmlldyAqKXd2Cit7CisjaWYg
IVBMQVRGT1JNKElPUykKKyAgICBbW3d2IHdpbmRvd10gY2xvc2VdOworI2VuZGlmCit9CisKKy0g
KHZvaWQpd2ViVmlld0ZvY3VzOiAoV2ViVmlldyAqKXd2Cit7CisjaWYgIVBMQVRGT1JNKElPUykK
KyAgICBbW3d2IHdpbmRvd10gbWFrZUtleUFuZE9yZGVyRnJvbnQ6d3ZdOworI2VuZGlmCit9CisK
Ky0gKHZvaWQpd2ViVmlld1VuZm9jdXM6IChXZWJWaWV3ICopd3YKK3sKKyNpZiAhUExBVEZPUk0o
SU9TKQorICAgIGlmIChbW3d2IHdpbmRvd10gaXNLZXlXaW5kb3ddIHx8IFtbW3d2IHdpbmRvd10g
YXR0YWNoZWRTaGVldF0gaXNLZXlXaW5kb3ddKQorICAgICAgICBbTlNBcHAgX2N5Y2xlV2luZG93
c1JldmVyc2VkOkZBTFNFXTsKKyNlbmRpZgorfQorCistIChOU1Jlc3BvbmRlciAqKXdlYlZpZXdG
aXJzdFJlc3BvbmRlcjogKFdlYlZpZXcgKil3dgoreworICAgIHJldHVybiBbW3d2IHdpbmRvd10g
Zmlyc3RSZXNwb25kZXJdOworfQorCistICh2b2lkKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgbWFr
ZUZpcnN0UmVzcG9uZGVyOihOU1Jlc3BvbmRlciAqKXJlc3BvbmRlcgoreworICAgIFtbd3Ygd2lu
ZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6cmVzcG9uZGVyXTsKK30KKworLSAodm9pZCl3ZWJWaWV3
OiAoV2ViVmlldyAqKXd2IHNldFN0YXR1c1RleHQ6KE5TU3RyaW5nICopdGV4dAoreworfQorCist
IChOU1N0cmluZyAqKXdlYlZpZXdTdGF0dXNUZXh0OiAoV2ViVmlldyAqKXd2Cit7CisgICAgcmV0
dXJuIG5pbDsKK30KKworLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IG1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50OihOU0RpY3Rpb25hcnkgKillbGVtZW50SW5mb3JtYXRpb24gbW9kaWZpZXJG
bGFnczooTlNVSW50ZWdlciltb2RpZmllckZsYWdzCit7Cit9CisKKy0gKEJPT0wpd2ViVmlld0Fy
ZVRvb2xiYXJzVmlzaWJsZTogKFdlYlZpZXcgKil3dgoreworICAgIHJldHVybiBOTzsKK30KKwor
LSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHNldFRvb2xiYXJzVmlzaWJsZTooQk9PTCl2
aXNpYmxlCit7Cit9CisKKy0gKEJPT0wpd2ViVmlld0lzU3RhdHVzQmFyVmlzaWJsZTogKFdlYlZp
ZXcgKil3dgoreworICAgIHJldHVybiBOTzsKK30KKworLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmll
dyAqKXd2IHNldFN0YXR1c0JhclZpc2libGU6KEJPT0wpdmlzaWJsZQoreworfQorCistIChCT09M
KXdlYlZpZXdJc1Jlc2l6YWJsZTogKFdlYlZpZXcgKil3dgoreworI2lmIFBMQVRGT1JNKElPUykK
KyAgICByZXR1cm4gTk87CisjZWxzZQorICAgIHJldHVybiBbW3d2IHdpbmRvd10gc2hvd3NSZXNp
emVJbmRpY2F0b3JdOworI2VuZGlmCit9CisKKy0gKHZvaWQpd2ViVmlldzogKFdlYlZpZXcgKil3
diBzZXRSZXNpemFibGU6KEJPT0wpcmVzaXphYmxlCit7CisjaWYgIVBMQVRGT1JNKElPUykKKyAg
ICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGFjdHVhbGx5IGNoYW5nZSB0aGUgcmVzaXphYmlsaXR5
IG9mIHRoZSB3aW5kb3csCisgICAgLy8gb25seSB2aXNpYmlsaXR5IG9mIHRoZSBpbmRpY2F0b3Iu
CisgICAgW1t3diB3aW5kb3ddIHNldFNob3dzUmVzaXplSW5kaWNhdG9yOnJlc2l6YWJsZV07Cisj
ZW5kaWYKK30KKworLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHNldEZyYW1lOihOU1Jl
Y3QpZnJhbWUKK3sKKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIFtbd3Ygd2luZG93XSBzZXRGcmFt
ZTpmcmFtZSBkaXNwbGF5OllFU107CisjZW5kaWYKK30KKworLSAoTlNSZWN0KXdlYlZpZXdGcmFt
ZTogKFdlYlZpZXcgKil3dgoreworICAgIE5TV2luZG93ICp3aW5kb3cgPSBbd3Ygd2luZG93XTsK
KyAgICByZXR1cm4gd2luZG93ID09IG5pbCA/IE5TWmVyb1JlY3QgOiBbd2luZG93IGZyYW1lXTsK
K30KKworLSAodm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1bkphdmFTY3JpcHRBbGVydFBh
bmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXZWJG
cmFtZSAqKWZyYW1lCit7CisgICAgLy8gRklYTUU6IFdlIHdhbnQgYSBkZWZhdWx0IGhlcmUsIGJ1
dCB0aGF0IHdvdWxkIGFkZCBsb2NhbGl6ZWQgc3RyaW5ncy4KK30KKworLSAoQk9PTCl3ZWJWaWV3
OiAoV2ViVmlldyAqKXd2IHJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTooTlNT
dHJpbmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKK3sKKyAg
ICAvLyBGSVhNRTogV2Ugd2FudCBhIGRlZmF1bHQgaGVyZSwgYnV0IHRoYXQgd291bGQgYWRkIGxv
Y2FsaXplZCBzdHJpbmdzLgorICAgIHJldHVybiBOTzsKK30KKworLSAoTlNTdHJpbmcgKil3ZWJW
aWV3OiAoV2ViVmlldyAqKXd2IHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6
KE5TU3RyaW5nICopcHJvbXB0IGRlZmF1bHRUZXh0OihOU1N0cmluZyAqKWRlZmF1bHRUZXh0IGlu
aXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKK3sKKyNpZiAhUExBVEZPUk0oSU9TKQor
ICAgIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbCAqcGFuZWwgPSBbW1dlYkphdmFTY3JpcHRU
ZXh0SW5wdXRQYW5lbCBhbGxvY10gaW5pdFdpdGhQcm9tcHQ6cHJvbXB0IHRleHQ6ZGVmYXVsdFRl
eHRdOworICAgIFtwYW5lbCBzaG93V2luZG93Om5pbF07CisgICAgTlNTdHJpbmcgKnJlc3VsdDsK
KyAgICBpZiAoW05TQXBwIHJ1bk1vZGFsRm9yV2luZG93OltwYW5lbCB3aW5kb3ddXSkKKyAgICAg
ICAgcmVzdWx0ID0gW3BhbmVsIHRleHRdOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gbmls
OworICAgIFtbcGFuZWwgd2luZG93XSBjbG9zZV07CisgICAgW3BhbmVsIHJlbGVhc2VdOworICAg
IHJldHVybiByZXN1bHQ7CisjZWxzZQorICAgIHJldHVybiBuaWw7CisjZW5kaWYKK30KKworLSAo
dm9pZCl3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRo
UmVzdWx0TGlzdGVuZXI6KGlkPFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyPilyZXN1bHRMaXN0
ZW5lcgoreworICAgIC8vIEZJWE1FOiBXZSB3YW50IGEgZGVmYXVsdCBoZXJlLCBidXQgdGhhdCB3
b3VsZCBhZGQgbG9jYWxpemVkIHN0cmluZ3MuCit9CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmll
dyAqKXNlbmRlciBwcmludEZyYW1lVmlldzooV2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3Cit7Cit9
CisKKworI2lmICFQTEFURk9STShJT1MpCistIChOU1VJbnRlZ2VyKXdlYlZpZXc6KFdlYlZpZXcg
Kil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86KGlkIDxO
U0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCit7CisgICAgaWYgKCFsaW5rZWRPbk9yQWZ0ZXIo
U0RLVmVyc2lvbjo6Rmlyc3RXaXRoRHJvcFRvTmF2aWdhdGVEaXNhbGxvd2VkQnlEZWZhdWx0KSkK
KyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKKworICAgIHJldHVy
biBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkgJiB+V2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
TG9hZDsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyB3aWxsUGVyZm9y
bURyYWdEZXN0aW5hdGlvbkFjdGlvbjooV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWFjdGlvbiBm
b3JEcmFnZ2luZ0luZm86KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCit7Cit9CisK
Ky0gKE5TVUludGVnZXIpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZHJhZ1NvdXJjZUFjdGlv
bk1hc2tGb3JQb2ludDooTlNQb2ludClwb2ludAoreworICAgIHJldHVybiBXZWJEcmFnU291cmNl
QWN0aW9uQW55OworfQorCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IHdpbGxQ
ZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbjooV2ViRHJhZ1NvdXJjZUFjdGlvbilhY3Rpb24gZnJvbVBv
aW50OihOU1BvaW50KXBvaW50IHdpdGhQYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJv
YXJkCit7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciB3aWxsUG9wdXBN
ZW51OihOU01lbnUgKiltZW51Cit7Cit9CisjZW5kaWYKKworLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGRpZERyYXdSZWN0OihOU1JlY3QpcmVjdAoreworfQorCistICh2b2lkKXdl
YlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkU2Nyb2xsRG9jdW1lbnRJbkZyYW1lVmlldzooV2Vi
RnJhbWVWaWV3ICopZnJhbWVWaWV3Cit7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAq
KXNlbmRlciBleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3Jp
Z2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiB0b3RhbFNwYWNlTmVlZGVkOihOU1VJbnRl
Z2VyKXRvdGFsU3BhY2VOZWVkZWQKK3sKK30KKworLSAoQk9PTCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIHNob3VsZFJlcGxhY2VVcGxvYWRGaWxlOihOU1N0cmluZyAqKXBhdGggdXNpbmdHZW5l
cmF0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKiopZmlsZW5hbWUKK3sKKyAgICByZXR1cm4gTk87Cit9
CisKKy0gKE5TU3RyaW5nICopd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBnZW5lcmF0ZVJlcGxh
Y2VtZW50RmlsZTooTlNTdHJpbmcgKilwYXRoCit7CisgICAgcmV0dXJuIG5pbDsKK30KKworI2lm
IFBMQVRGT1JNKElPUykKKy0gKHZvaWQpd2ViVmlld1N1cHBvcnRlZE9yaWVudGF0aW9uc1VwZGF0
ZWQ6KFdlYlZpZXcgKilzZW5kZXIKK3sKK30KKyNlbmRpZgorCitAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaCBiL1NvdXJjZS9XZWJL
aXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oCmluZGV4IDBmNjA2ZTI4NDQwNTJiODFh
ODUzYmMwZGM2ZTE0NGZmODI3ZDk5YjMuLjAwMzJjYTkyZGE2ZTA5MGY3ODI5ODU2YzQ4ZGQ0M2Iw
NTZiYWQ3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lv
bkNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNr
cy5oCkBAIC04Myw2ICs4Myw4IEBACiBlbnVtIGNsYXNzIFNES1ZlcnNpb24gOiB1aW50MzJfdCB7
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIEZpcnN0VG9FeGNsdWRlTG9jYWxTdG9yYWdlRnJvbUJh
Y2t1cCA9IERZTERfSU9TX1ZFUlNJT05fMTFfMCwKKyNlbHNlCisgICAgRmlyc3RXaXRoRHJvcFRv
TmF2aWdhdGVEaXNhbGxvd2VkQnlEZWZhdWx0ID0gRFlMRF9NQUNPU1hfVkVSU0lPTl8xMF8xMwog
I2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmgKaW5kZXggZTY5NmQwZWMzMDQ2ODM4YzA0NGNhZDA3ZGE0MmQ4MGE4Mjg2MjFl
Yy4uMmZiNmFmOGI2N2Q5NTU4ZjM5NWRlYjBhMjFiYzRkZGYxOWJmM2NlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzcsNyAr
MzcsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJhZ0Rh
dGEmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJD
b3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6
OkRhdGFUcmFuc2ZlciYpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFj
dGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICBXZWJD
b3JlOjpEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KSBvdmVycmlkZTsKICAgICB2b2lkIHN0YXJ0
RHJhZyhXZWJDb3JlOjpEcmFnSW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkcmFnUG9z
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KaW5kZXggMGFiZTdhMzQ4YmE2Mzg3YjhiMWE3
OGJlM2UwY2VhZTgyODUzN2NmZC4uYzg3ZjEyNGUyNjBiYmVkYjRmNDE3MjE2Mzk5NDJjYzNmYWY5
MTEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50Lm1tCkBAIC04MywxMSArODMsNiBAQCBzdGF0aWMgV2ViSFRNTFZpZXcgKmdldFRvcEhU
TUxWaWV3KEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gKFdlYkhUTUxWaWV3KilbW2tpdCgmZnJh
bWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkpIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKIH0KIAot
V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIFdlYkRyYWdDbGllbnQ6OmFjdGlvbk1hc2tG
b3JEcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFnRGF0YSkKLXsKLSAgICByZXR1cm4g
KFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbilbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZv
cndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRy
YWdnaW5nSW5mbzpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKV07Ci19Ci0KIHZvaWQgV2ViRHJhZ0Ns
aWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhKQog
ewogICAgIFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmll
dyB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbjooV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKWFjdGlvbiBmb3JEcmFnZ2luZ0luZm86ZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCldOwpAQCAt
MTg1LDEwICsxODAsNiBAQCBib29sIFdlYkRyYWdDbGllbnQ6OnVzZUxlZ2FjeURyYWdDbGllbnQo
KQogewogICAgIHJldHVybiBmYWxzZTsKIH0KLVdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlv
biBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0
YSYpCi17Ci0gICAgcmV0dXJuIERyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmU7Ci19CiAKIHZvaWQg
V2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZTM2MjNjZGRjYTU1ZDdiZGE3YzBkZjgy
NjNkYWJkMjY2MmRkNzQ1OS4uOGZhOGUyMjEwZTZiYTliMjVkNWQ2MTk3ODZiNmVlOGRhY2ZhZWI5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNjUxNiwxMSArNjUxNiwx
NyBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBiYWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3Rv
cktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxEcmFn
QXBwbGljYXRpb25GbGFncz4oZmxhZ3MpOwogfQogCistIChEcmFnRGVzdGluYXRpb25BY3Rpb24p
YWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0lu
Zm8KK3sKKyAgICByZXR1cm4gKERyYWdEZXN0aW5hdGlvbkFjdGlvbilbW3NlbGYgX1VJRGVsZWdh
dGVGb3J3YXJkZXJdIHdlYlZpZXc6c2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJh
Z2dpbmdJbmZvOmRyYWdnaW5nSW5mb107Cit9CisKIC0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2lu
Z0VudGVyZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7CiAgICAgSW50UG9p
bnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIEludFBvaW50
IGdsb2JhbChnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2Vs
ZiB3aW5kb3ddKSk7Ci0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQs
IGdsb2JhbCwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0lu
Zm9dKTsKKworICAgIERyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9i
YWwsIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwg
W3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKICAgICByZXR1
cm4gY29yZShzZWxmKS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CiB9
CiAKQEAgLTY1MzIsNyArNjUzOCw4IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGJhY2tpbmdQ
cm9wZXJ0eU9sZFNjYWxlRmFjdG9yS2V5ID0gQCJOU0JhY2tpbmdQcm9wZXJ0eU9sCiAKICAgICBJ
bnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgSW50
UG9pbnQgZ2xvYmFsKGdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0s
IFtzZWxmIHdpbmRvd10pKTsKLSAgICBEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNs
aWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdn
aW5nSW5mb10pOworCisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQs
IGdsb2JhbCwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0lu
Zm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwogICAg
IHJldHVybiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmNwcAppbmRleCBkZWIwMGQ3MmEzMGE4MzdmNTVlMjM5Njk5ODhjMGMxYmRiNDc0YjZmLi5lMzdi
ZGY2NDU4MjI0ZTU2YzFmMTg2OTk3YjI1Zjg4OTc5MDY3MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcApAQCAtNjQsMTggKzY0
LDYgQEAgV2ViRHJhZ0NsaWVudDo6V2ViRHJhZ0NsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAg
IEFTU0VSVCh3ZWJWaWV3KTsKIH0KIAotRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIFdlYkRyYWdDbGll
bnQ6OmFjdGlvbk1hc2tGb3JEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKLXsKLSAgICBD
T01QdHI8SVdlYlVJRGVsZWdhdGU+IGRlbGVnYXRlUmVmID0gMDsKLSAgICAvL0RlZmF1bHQgYmVo
YXZpb3VyIChlZy4gbm8gZGVsZWdhdGUsIG9yIGNhbGxiYWNrIG5vdCBpbXBsZW1lbnRlZCkgaXMg
dG8gYWxsb3cKLSAgICAvL2FueSBhY3Rpb24KLSAgICBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24g
bWFzayA9IFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKLSAgICBpZiAoU1VDQ0VFREVEKG1f
d2ViVmlldy0+dWlEZWxlZ2F0ZSgmZGVsZWdhdGVSZWYpKSkKLSAgICAgICAgZGVsZWdhdGVSZWYt
PmRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm8obV93ZWJWaWV3LCBkcmFn
RGF0YS5wbGF0Zm9ybURhdGEoKSwgJm1hc2spOwotCi0gICAgcmV0dXJuIChEcmFnRGVzdGluYXRp
b25BY3Rpb24pbWFzazsKLX0KLQogdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdE
ZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uLCBjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgLy9EZWZhdWx0IGRlbGVnYXRlIGZvciB3aWxsUGVyZm9y
bURyYWdEZXN0aW5hdGlvbkFjdGlvbiBoYXMgbm8gc2lkZSBlZmZlY3RzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggOGYzMGI5NjE0
MDkxZDk2NzRhYjFhNmMyNGY1ZjNkNzBlMTFmYTAwNi4uMWY0OTZhY2Y3NjFlZjRjN2UyMjZmYTJl
OWM4YTAzN2Y2OTljYjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzUsNyArMzUsNiBAQCBwdWJsaWM6CiAgICAgV2ViRHJh
Z0NsaWVudChXZWJWaWV3Kik7CiAgICAgdmlydHVhbCB2b2lkIGRyYWdDb250cm9sbGVyRGVzdHJv
eWVkKCk7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rp
b25NYXNrRm9yRHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpOwogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0
IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgV2Vi
Q29yZTo6RHJhZ0RhdGEmKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNl
QWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL0NvY29hL1dLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL0NvY29hL1dLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTE1ZjM2ODY2ZTg2ZGZlYTk3ZjZkOWE5ZTFiNmQyZDg3YTFhNWUxNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvV0tEcmFnRGVzdGluYXRpb25BY3Rp
b24uaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91
bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+CisKK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBXS0RyYWdEZXN0
aW5hdGlvbkFjdGlvbikgeworICAgIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZSAgICA9IDAs
CisgICAgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25ESFRNTCAgID0gMSwKKyAgICBXS0RyYWdEZXN0
aW5hdGlvbkFjdGlvbkVkaXQgICAgPSAyLAorICAgIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9h
ZCAgICA9IDQsCisgICAgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkgICAgID0gTlNVSW50ZWdl
ck1heAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCmluZGV4IDg0Y2NmOGY0OWI0NDRjMzQzOWZiNjVhYWRlMGI3OGY2OWVhODFm
ZmIuLmI4NjljNzdhNmY2YjkxYTU3OWY1NTA2NDc1MDU0ODRhZGMzNmU0NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMjI0LDYg
KzEyMjQsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBlbmNvZGVyIDw8IGRyYWdEYXRhLmZpbGVOYW1lcygpOwogI2VuZGlmCisgICAgZW5jb2Rlci5l
bmNvZGVFbnVtKGRyYWdEYXRhLmRyYWdEZXN0aW5hdGlvbkFjdGlvbigpKTsKIH0KIAogYm9vbCBB
cmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERyYWdEYXRh
JiBkcmFnRGF0YSkKQEAgLTEyNTUsNyArMTI1NiwxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8RHJh
Z0RhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAotICAgIGRyYWdEYXRhID0gRHJhZ0RhdGEocGFz
dGVib2FyZE5hbWUsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzKTsKKyAgICBEcmFnRGVzdGluYXRpb25B
Y3Rpb24gZGVzdGluYXRpb25BY3Rpb247CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oZGVz
dGluYXRpb25BY3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkcmFnRGF0YSA9
IERyYWdEYXRhKHBhc3RlYm9hcmROYW1lLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24s
IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgYXBwbGljYXRpb25GbGFncywgZGVzdGluYXRp
b25BY3Rpb24pOwogICAgIGRyYWdEYXRhLnNldEZpbGVOYW1lcyhmaWxlTmFtZXMpOwogCiAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDM2MWE1Y2FkZGFmNDA4NzZmMWYxYWVk
ODk3OWM4YWVjOGUwYjJmN2YuLjUxMWE0YzRmNTI1OWM5ZmJkODUxODk1YjNmODNlYzYzZWVlMjhi
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURl
bGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBXS19BUElfRU5B
QkxFRAogCisjaW1wb3J0IDxXZWJLaXQvV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaD4KICNpbXBv
cnQgPFdlYktpdC9XS1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLQWN0aXZh
dGVkRWxlbWVudEluZm8uaD4KIApAQCAtNjUsNiArNjYsNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRz
OwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjaGVja1VzZXJNZWRpYVBl
cm1pc3Npb25Gb3JVUkw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJh
bWVVUkwgZnJhbWVJZGVudGlmaWVyOihOU1VJbnRlZ2VyKWZyYW1lSWRlbnRpZmllciBkZWNpc2lv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICpzYWx0LCBCT09MIGF1dGhvcml6ZWQpKWRlY2lz
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIC0gKHZvaWQpX3dlYlZpZXdEaWRCZWdpbkNhcHR1cmVTZXNzaW9uOihXS1dlYlZp
ZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogLSAodm9pZClfd2ViVmlld0RpZEVuZENhcHR1cmVTZXNzaW9uOihXS1dlYlZp
ZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworLSAoV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzooaWQp
ZHJhZ2dpbmdJbmZvIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogI2lmIFRBUkdFVF9PU19JUEhPTkUKIC0gKEJPT0wpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVudDooX1dL
QWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDkuMCkp
OwogLSAoTlNBcnJheSAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGFjdGlvbnNGb3JF
bGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgZGVmYXVsdEFjdGlvbnM6
KE5TQXJyYXk8X1dLRWxlbWVudEFjdGlvbiAqPiAqKWRlZmF1bHRBY3Rpb25zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA4OTdhMmI3
ODMzYzcwZTkzMmYwYTk1M2ZiOGY3NzA0ZTMyODQzYmJjLi5lNDlkYjYzY2U4NWQ4Y2ZjY2U2N2Nm
NDc0Zjk0MDAyODVmOWNmOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNDUsNiArNDUsNyBAQAogI2ltcG9ydCAiUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCIK
ICNpbXBvcnQgIlVJRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlZlcnNpb25DaGVja3MuaCIKICNpbXBv
cnQgIlZpZXdHZXN0dXJlQ29udHJvbGxlci5oIgogI2ltcG9ydCAiVmlld1NuYXBzaG90U3RvcmUu
aCIKICNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCIKQEAgLTM0NDcsNiArMzQ0
OCwyMiBAQCBXRUJDT1JFX0NPTU1BTkQoeWFua0FuZFNlbGVjdCkKIHsKIH0KIAorI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpICYmIFdLX0FQSV9FTkFCTEVECisKKy0gKFdLRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKV93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOihpZCA8TlNE
cmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbworeworICAgIGlkIDxXS1VJRGVsZWdhdGVQcml2YXRl
PiB1aURlbGVnYXRlID0gKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilbc2VsZiBVSURlbGVnYXRl
XTsKKyAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2Vi
VmlldzpkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOildKQorICAgICAg
ICByZXR1cm4gW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb107CisKKyAgICBpZiAoIWxpbmtlZE9uT3JB
ZnRlcihXZWJLaXQ6OlNES1ZlcnNpb246OkZpcnN0V2l0aERyb3BUb05hdmlnYXRlRGlzYWxsb3dl
ZEJ5RGVmYXVsdCkpCisgICAgICAgIHJldHVybiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsK
KworICAgIHJldHVybiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSAmIH5XS0RyYWdEZXN0aW5h
dGlvbkFjdGlvbkxvYWQ7Cit9CisKKyNlbmRpZgorCiAtICh2b2lkKV93ZWJfZGlzbWlzc0NvbnRl
bnRSZWxhdGl2ZUNoaWxkV2luZG93cwogewogICAgIF9pbXBsLT5kaXNtaXNzQ29udGVudFJlbGF0
aXZlQ2hpbGRXaW5kb3dzRnJvbVZpZXdPbmx5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0KaW5kZXggYzAzYThjMzcxMWY1YWRiNzg0NzQ1MGQ2Y2UyNTdjMmJk
NjkxMDNkMy4uOGY2NTlhYWRlNzllNmVhM2I3ZTFlY2FjNGNmZDkwZTUyZjMxMzIzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMzIsNiArMzIsNyBA
QAogI2ltcG9ydCAiQVBJSWNvbkxvYWRpbmdDbGllbnQuaCIKICNpbXBvcnQgIkFQSVBhZ2VDb25m
aWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEdyb3VwUHJpdmF0ZS5oIgor
I2ltcG9ydCAiV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCIKICNpbXBvcnQgIldLTlNEYXRhLmgi
CiAjaW1wb3J0ICJXS1Byb2Nlc3NHcm91cFByaXZhdGUuaCIKICNpbXBvcnQgIldlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uaCIKQEAgLTEwMDgsNiArMTAwOSwxNSBAQCBTb21lIG90aGVyIGVkaXRpbmct
cmVsYXRlZCBtZXRob2RzIHN0aWxsIHVuaW1wbGVtZW50ZWQ6CiAgICAgW3NlbGYgX2RpZENoYW5n
ZUNvbnRlbnRTaXplOm5ld1NpemVdOwogfQogCisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYg
V0tfQVBJX0VOQUJMRUQKKworLSAoV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pX3dlYl9kcmFnRGVz
dGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dp
bmdJbmZvCit7CisgICAgcmV0dXJuIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55OworfQorCisj
ZW5kaWYKKwogLSAodm9pZClfd2ViX2Rpc21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3MK
IHsKICAgICBbc2VsZiBfZGlzbWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxkV2luZG93c107CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MuaAppbmRleCAzMDUy
OTVjOWRkY2M1M2Y4OGJhYWUyZjhiNTY0ZDZhMWI4MzFjM2EzLi41MDJhZGY2ZWYwNjBhN2JiZTlk
OWQ1YWI0ZWI2ODBmODNkMmM0YzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9WZXJzaW9uQ2hlY2tzLmgKQEAgLTM4LDYgKzM4LDcgQEAgZW51bSBjbGFzcyBTREtWZXJz
aW9uIDogdWludDMyX3QgewogI2VsaWYgUExBVEZPUk0oTUFDKQogICAgIEZpcnN0V2l0aE5ldHdv
cmtDYWNoZSA9IERZTERfTUFDT1NYX1ZFUlNJT05fMTBfMTEsCiAgICAgRmlyc3RXaXRoRXhjZXB0
aW9uc0ZvckR1cGxpY2F0ZUNvbXBsZXRpb25IYW5kbGVyQ2FsbHMgPSBEWUxEX01BQ09TWF9WRVJT
SU9OXzEwXzEzLAorICAgIEZpcnN0V2l0aERyb3BUb05hdmlnYXRlRGlzYWxsb3dlZEJ5RGVmYXVs
dCA9IERZTERfTUFDT1NYX1ZFUlNJT05fMTBfMTMKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCA2OTJhOTI0YWNmNGJkOWYx
ZDdjZGIxYThkNWQ4OWI3NmJiZjMzYTRlLi5iYjA3Y2E1OTdhM2Y0NTY2OTk4MmFhMTQ2OGY0MWQ1
Y2U4Njk4NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwuaApAQCAtMjksNiArMjksNyBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2luY2x1ZGUgIlBs
dWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5oIgorI2luY2x1ZGUgIldLRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uLmgiCiAjaW5jbHVkZSAiV0tMYXlvdXRNb2RlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCiAjaW5jbHVkZSAiX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlLmgiCkBAIC05MSw2ICs5
MiwxMCBAQCBPQkpDX0NMQVNTIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyOwogCiAtICh2b2lk
KV93ZWJfZGlkQ2hhbmdlQ29udGVudFNpemU6KE5TU2l6ZSluZXdTaXplOwogCisjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkgJiYgV0tfQVBJX0VOQUJMRUQKKy0gKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKV93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOihpZCA8TlNEcmFn
Z2luZ0luZm8+KWRyYWdnaW5nSW5mbzsKKyNlbmRpZgorCiBAb3B0aW9uYWwKIC0gKHZvaWQpX3dl
Yl9kaWRBZGRNZWRpYUNvbnRyb2xzTWFuYWdlcjooaWQpY29udHJvbHNNYW5hZ2VyOwogLSAodm9p
ZClfd2ViX2RpZFJlbW92ZU1lZGlhQ29udHJvbHNNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGVjYTllYTRmZDU3NWFjNTk2NDE2
NWEzY2JkODAwNjIyNmI4M2ZmNzAuLmJmNDAzOGMyMWMwODFkMTc4ZTUzMmNiYjMzN2MzMzU3ODYw
YzU1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KQEAgLTM1NzcsNyArMzU3NywxMiBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRy
YWdnaW5nRW50ZXJlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBX
ZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZv
LmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQg
Z2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9u
LCBtX3ZpZXcud2luZG93KSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dp
bmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9u
RmxhZ3NGb3JEcmFnKG1fdmlldywgZHJhZ2dpbmdJbmZvKSk7CisjaWYgV0tfQVBJX0VOQUJMRUQK
KyAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbiA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRy
YWdEZXN0aW5hdGlvbkFjdGlvbj4oW21fdmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZv
ckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyNlbHNlCisgICAgYXV0byBkcmFnRGVzdGlu
YXRpb25BY3Rpb24gPSBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb25Bbnk7CisjZW5kaWYK
KyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xv
YmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3
LCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVzdGluYXRpb25BY3Rpb24pOwogCiAgICAgbV9wYWdlLT5y
ZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKICAgICBtX3BhZ2UtPmRyYWdFbnRlcmVkKGRy
YWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwpAQCAtMzU4OCw3
ICszNTkzLDEyIEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVk
KGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBv
aW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2Nh
dGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29y
ZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIG1fdmlldy53aW5k
b3cpKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVu
dCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0lu
Zm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWco
bV92aWV3LCBkcmFnZ2luZ0luZm8pKTsKKyNpZiBXS19BUElfRU5BQkxFRAorICAgIGF1dG8gZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uPihbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZv
OmRyYWdnaW5nSW5mb10pOworI2Vsc2UKKyAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbiA9
IFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKKyNlbmRpZgorICAgIFdlYkNvcmU6
OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcsIGRyYWdnaW5nSW5m
byksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbik7CiAgICAgbV9wYWdlLT5kcmFnVXBkYXRlZChkcmFn
RGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lKTsKIAogICAgIE5TSW50
ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9wYWdlLT5jdXJyZW50RHJhZ051bWJl
ck9mRmlsZXNUb0JlQWNjZXB0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MTBhMGQzY2Y4ZWQ5YmQ5MzVjOTkxNWRmNjZh
NGM1ZDQ1NDdkOTM0Li4wMzQ2YWZiMjRhMGI5OGE5MDQ1ZTNhODFjZGQwZGQzNjQzZjRiMWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xOTY0LDYgKzE5NjQsNyBAQAogCQlFRDgyQTdGMjEyOEM2RkFGMDA0NDc3QjMgLyogV0tC
dW5kbGVQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUEyMkYwRkYxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFnZU92ZXJsYXku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFRENB
NzFCNzEyOEREQThDMDAyMDFCMjYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIyRjEwMDEyODlGQ0Q5MDA4
NUU3NEYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgKi87IH07CiAJCUYwMzY5Nzg4MTVGNEJG
MDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29s
b3JQaWNrZXIuY3BwICovOyB9OworCQlGNDA5QkExODFFNkU2NEJDMDA5REEyOEUgLyogV0tEcmFn
RGVzdGluYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0MDlCQTE3MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFj
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUY0MzM3MDk3MUU0RDcyRUQwMDA1MkIwRSAvKiBfV0tUZXN0aW5nRGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzM3MDk2MUU0RDZBNDQw
MDA1MkIwRSAvKiBfV0tUZXN0aW5nRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNjExM0UyNTEyNkNFMTgyMDA1N0QwQTcgLyogQVBJ
VXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNjExM0UyNDEyNkNFMTgyMDA1N0QwQTcgLyogQVBJVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmggKi87IH07CiAJCUY2MTEzRTI4MTI2Q0UxOUIwMDU3RDBBNyAvKiBXS1VzZXJD
b250ZW50VVJMUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNjExM0UyNjEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVSTFBh
dHRlcm4uY3BwICovOyB9OwpAQCAtNDIzOSw2ICs0MjQwLDcgQEAKIAkJRUNBNjgwRDcxRTY5MERG
ODAwNzMxRDIwIC8qIFdlYlByb2Nlc3NDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQcm9jZXNz
Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUNCRkMxREIxRTZBNEQ2NjAw
MDMwMEM3IC8qIEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0
cmFQdWJsaWNTeW1ib2xzRm9yVEFQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
MDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGNDA5QkExNzFFNkU2NEIzMDA5REEyOEUgLyogV0tEcmFnRGVz
dGluYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEcmFn
RGVzdGluYXRpb25BY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzMzcw
OTYxRTRENkE0NDAwMDUyQjBFIC8qIF9XS1Rlc3RpbmdEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tUZXN0aW5nRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjYxMTNFMjQxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVzZXJDb250ZW50
VVJMUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVc2VyQ29u
dGVudFVSTFBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjYxMTNFMjYx
MjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2NDQsNiArNTY0Niw3IEBACiAJCQkJMzcz
RDEyMjQxOEE0NzNCMzAwNjZEOUNDIC8qIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwu
aCAqLywKIAkJCQkzN0E3MDlBNjFFM0VBMEZEMDBDQTU5NjkgLyogV0tEYXRhRGV0ZWN0b3JUeXBl
cy5oICovLAogCQkJCTM3QTcwOUE4MUUzRUE0MEMwMENBNTk2OSAvKiBXS0RhdGFEZXRlY3RvclR5
cGVzSW50ZXJuYWwuaCAqLywKKwkJCQlGNDA5QkExNzFFNkU2NEIzMDA5REEyOEUgLyogV0tEcmFn
RGVzdGluYXRpb25BY3Rpb24uaCAqLywKIAkJCQkzN0RGQTZGRjE4MTBCQjkyMDAxRjRBOUYgLyog
V0tGb3VuZGF0aW9uLmggKi8sCiAJCQkJMUE5RTMyOTkxODIyRTFDQzAwRjVEMDRDIC8qIFdLUmVt
b3RlT2JqZWN0LmggKi8sCiAJCQkJMUE5RTMyOTgxODIyRTFDQzAwRjVEMDRDIC8qIFdLUmVtb3Rl
T2JqZWN0Lm1tICovLApAQCAtODAzNyw2ICs4MDQwLDcgQEAKIAkJCQlCQ0VFOTY2RDExMkZBRjU3
MDA2QkNDMjQgLyogQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFBMzE3MzIxMzRD
RUE2QzAwN0M5QTRGIC8qIEF0dHJpYnV0ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
MkY1ODk3MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGNDA5QkExODFFNkU2NEJDMDA5REEyOEUgLyogV0tEcmFnRGVz
dGluYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1ODk5MTJBODgzODgwMDYy
OTUzMCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxOEU4RUY5MTZCMjA5MUMwMEU5MTQyOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMkY1OEEzMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRoZW50aWNh
dGlvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcApp
bmRleCAwZjE2YmU5YTU3NjgwY2ZmYjEwY2NkYjU1ZGEzMTczMTJmYzY1YzQ5Li5mZDNlYzI0NzVm
OWM1Njk3ZmVlNDVmMjAwZjg5OTBjNWFlMWZiNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKQEAg
LTQ2LDExICs0Niw2IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNl
QWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50CiB7CiB9CiAKLURyYWdEZXN0
aW5hdGlvbkFjdGlvbiBXZWJEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBEcmFn
RGF0YSYpCi17Ci0gICAgcmV0dXJuIERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKLX0KLQogRHJh
Z1NvdXJjZUFjdGlvbiBXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50
KGNvbnN0IEludFBvaW50JikKIHsKICAgICByZXR1cm4gRHJhZ1NvdXJjZUFjdGlvbkFueTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmgKaW5kZXggNTQ3OGRkNWYwNjNjOWZjM2Y2Y2E0MjlhNmMxNjFhODY0YjNhYWUx
My4uZGE0NmViYmE2NDAwNzU2MGJkZjcyYTRkZDFmNjFlNmUxMjg2Y2M0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmgKQEAgLTQ0LDcgKzQ0LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQ
ZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlv
biwgY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxQZXJm
b3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYpIG92ZXJyaWRlOwotICAgIFdl
YkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhjb25zdCBXZWJD
b3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24g
ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgd2lu
ZG93UG9pbnQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6RHJhZ0lt
YWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGRyYWdJ
bWFnZUFuY2hvciwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RnJhbWUmLCBXZWJD
b3JlOjpEcmFnU291cmNlQWN0aW9uKSBvdmVycmlkZTsK
</data>
<flag name="review"
          id="325539"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>