<?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>195940</bug_id>
          
          <creation_ts>2019-03-19 02:13:55 -0700</creation_ts>
          <short_desc>[GTK][WPE] Add API to provide geolocation information</short_desc>
          <delta_ts>2019-03-21 03:10:42 -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>WebKitGTK</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>195994</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1518195</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-03-19 02:13:55 -0700</bug_when>
    <thetext>WebKitGTK currently uses GeoClue to provide a default implementation for geolocation, but it&apos;s not possible for application to provide their own implementation. We should add API for that and keep the GeoClue as the default implementation in case the users doesn&apos;t provide their own.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518196</commentid>
    <comment_count>1</comment_count>
      <attachid>365140</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-03-19 02:30:10 -0700</bug_when>
    <thetext>Created attachment 365140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518199</commentid>
    <comment_count>2</comment_count>
      <attachid>365142</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-03-19 02:33:58 -0700</bug_when>
    <thetext>Created attachment 365142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518223</commentid>
    <comment_count>3</comment_count>
      <attachid>365142</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-03-19 06:18:43 -0700</bug_when>
    <thetext>Comment on attachment 365142
Patch

I did a quick skimming over the new API and it looks quite nice
to me. Just a quick question: Is there any reason why the WPE port
cannot use GeoClue if available? As far as I understand, GeoClue
itself does not depend on GTK. Of course, we can also enable using
it as an option in the WPE port with a follow-up patch :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518267</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-03-19 08:10:48 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #3)
&gt; Comment on attachment 365142 [details]
&gt; Patch
&gt; 
&gt; I did a quick skimming over the new API and it looks quite nice
&gt; to me. Just a quick question: Is there any reason why the WPE port
&gt; cannot use GeoClue if available? As far as I understand, GeoClue
&gt; itself does not depend on GTK. Of course, we can also enable using
&gt; it as an option in the WPE port with a follow-up patch :-)

No reason. I didn&apos;t add support for geoclue in this patch to WPE because I&apos;m working on a patch to remove the build dependency on geoclue. We depend on geoclue only to generate code to talk to the DBus service. The code is simple enough to not need to auto-generate it, so it&apos;s better to simply use GDBus to talk to the Geoclue DBus service (if available). The patch will not have any build flag, so WPE will gain Geoclue support automatically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518281</commentid>
    <comment_count>5</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-03-19 08:38:24 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #4)
&gt; (In reply to Adrian Perez from comment #3)
&gt; &gt; Comment on attachment 365142 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; I did a quick skimming over the new API and it looks quite nice
&gt; &gt; to me. Just a quick question: Is there any reason why the WPE port
&gt; &gt; cannot use GeoClue if available? As far as I understand, GeoClue
&gt; &gt; itself does not depend on GTK. Of course, we can also enable using
&gt; &gt; it as an option in the WPE port with a follow-up patch :-)
&gt; 
&gt; No reason. I didn&apos;t add support for geoclue in this patch to WPE because I&apos;m
&gt; working on a patch to remove the build dependency on geoclue. We depend on
&gt; geoclue only to generate code to talk to the DBus service. The code is
&gt; simple enough to not need to auto-generate it, so it&apos;s better to simply use
&gt; GDBus to talk to the Geoclue DBus service (if available). The patch will not
&gt; have any build flag, so WPE will gain Geoclue support automatically.

That sounds great! No need to make this one patch enable the
support for GeoClue in WPE, then 👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519212</commentid>
    <comment_count>6</comment_count>
      <attachid>365142</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-20 14:58:20 -0700</bug_when>
    <thetext>Comment on attachment 365142
Patch

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

Well... this actually turned out better than I was expecting. The patch is fine, and the new API is fine for what it does. My main concern is simply that I&apos;m not confident we really need the API. In theory, an application might want to roll its own geolocation and ignore geoclue, sure, but... well, the motivating example in this case is an app that wants to provide a fixed geolocation position at all times, and this seems like overkill for that purpose, right? Probably that application should just start building geoclue and write a fixed-position geoclue plugin, that way we don&apos;t need any new API. Or this could be kept downstream (not that I generally advocate for that). If the application you&apos;re adding this for was actually trying to do real geolocation, then I would be more enthusiastic.

(I was also going to say that &quot;I don&apos;t want to build geoclue&quot; isn&apos;t a super-compelling argument either, not unless geoclue actually takes up significant space on constrained embedded devices, but checking my desktop the geoclue daemon is actually using 7.7 MiB of RAM, which is more than I had expected. So I suppose an API to allow geolocation without geoclue might actually be appropriate for embedded.)

Anyway, r=me because it&apos;s fine, but this is a &quot;meh, consider whether you really want this in the API forever&quot; r=me rather than an enthusiastic one.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Replace ENABLE(GEOLOCATION) with USE(GEOCLUE).

ENABLE(GEOLOCATION) still exists, of course, for all the WebCore geolocation code, but that&apos;s fine.

&gt; Source/WebKit/ChangeLog:8
&gt; +        Add WebKitGeolocationManager public class to handle geaolocation position updates. WebKitGeolocationProvider has

geolocation

&gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:153
&gt; + * @timestamp: timestamp in seconds since the Epoch

epoch

&gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:162
&gt; +    g_return_if_fail(timestamp);

Don&apos;t want to allow passing 0 for &quot;now&quot;?

&gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:186
&gt; + * @altitude_accuracy: accuracy of position altitude in meters

It&apos;s not descriptive enough. Does it mean the real position may be @altitude_accuracy meters above or below the WebKitGeolocationPosition?

&gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:204
&gt; + * Set the @position positive angle between the direction of movement and the North

&quot;Set the @position&apos;s heading as a positive angle between the direction of movement and North, clockwise.&quot;

&gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:367
&gt; +     * WebKitGeolocationManager:enable-high-accuracy:

Not really clear why this property is needed. Is the application responsible for providing low-accuracy data when this is not set, or will WebCore handle lowering the accuracy? Surely the later would be preferable? If the property is really needed, please document the expectations further. But I suspect it&apos;s not needed.

&gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:369
&gt; +     * Whether high accuracy is enabled. This is a read-only property, that will be

no comma

&gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:386
&gt; +     * WebKitGeolocationManager::start:

Maybe &quot;WebKitGeolocationManager::geolocation-request-started&quot;? It&apos;s hard to name....

&gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:392
&gt; +     * the position changes; or use webkit_gelocation_manager_failed() in case

; -&gt; ,

&gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:393
&gt; +     * it couldn&apos;t be possible to determine the current position.

couldn&apos;t be -&gt; isn&apos;t

&gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:413
&gt; +     * WebKitGeolocationManager::stop:

WebKitGeolocationManager::geolocation-request-ended?

&gt; Source/WebKit/UIProcess/API/wpe/docs/wpe-docs.sgml:89
&gt; +  &lt;index id=&quot;api-index-2-24&quot; role=&quot;2.24&quot;&gt;
&gt; +    &lt;title&gt;Index of new symbols in 2.24&lt;/title&gt;
&gt; +    &lt;xi:include href=&quot;xml/api-index-2.24.xml&quot;&gt;&lt;xi:fallback /&gt;&lt;/xi:include&gt;
&gt; +  &lt;/index&gt;

If 2.24 has a new API version, I would actually delete the &quot;index of new symbols&quot; prior to 2.26.

Or if it&apos;s 2.26 that will have the new API version, you can delete them all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519520</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-03-21 00:04:27 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #6)
&gt; Comment on attachment 365142 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=365142&amp;action=review
&gt; 
&gt; Well... this actually turned out better than I was expecting. The patch is
&gt; fine, and the new API is fine for what it does. My main concern is simply
&gt; that I&apos;m not confident we really need the API. In theory, an application
&gt; might want to roll its own geolocation and ignore geoclue, sure, but...
&gt; well, the motivating example in this case is an app that wants to provide a
&gt; fixed geolocation position at all times, and this seems like overkill for
&gt; that purpose, right?

That was the initial motivation to add this API, but not the final goal. We really want to allow applications to provide geolocation positions using their own location system. That&apos;s how most of the GLib API works, there&apos;s a sane default, but you can provide your own (file chooser, print dialog, context menu, popup menus, notifications, etc.)

&gt; Probably that application should just start building
&gt; geoclue and write a fixed-position geoclue plugin, that way we don&apos;t need
&gt; any new API. Or this could be kept downstream (not that I generally advocate
&gt; for that). If the application you&apos;re adding this for was actually trying to
&gt; do real geolocation, then I would be more enthusiastic.
&gt;
&gt; (I was also going to say that &quot;I don&apos;t want to build geoclue&quot; isn&apos;t a
&gt; super-compelling argument either, not unless geoclue actually takes up
&gt; significant space on constrained embedded devices, but checking my desktop
&gt; the geoclue daemon is actually using 7.7 MiB of RAM, which is more than I
&gt; had expected. So I suppose an API to allow geolocation without geoclue might
&gt; actually be appropriate for embedded.)

Embedders might want to use their own gps system. 
 
&gt; Anyway, r=me because it&apos;s fine, but this is a &quot;meh, consider whether you
&gt; really want this in the API forever&quot; r=me rather than an enthusiastic one.

Yes, I don&apos;t see any problem.

&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Replace ENABLE(GEOLOCATION) with USE(GEOCLUE).
&gt; 
&gt; ENABLE(GEOLOCATION) still exists, of course, for all the WebCore geolocation
&gt; code, but that&apos;s fine.

We were using ENABLE(GEOLOCATION) wrongly for geoclue specific code. This options is removed in bug #195994 anyway.

&gt; &gt; Source/WebKit/ChangeLog:8
&gt; &gt; +        Add WebKitGeolocationManager public class to handle geaolocation position updates. WebKitGeolocationProvider has
&gt; 
&gt; geolocation
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:153
&gt; &gt; + * @timestamp: timestamp in seconds since the Epoch
&gt; 
&gt; epoch
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:162
&gt; &gt; +    g_return_if_fail(timestamp);
&gt; 
&gt; Don&apos;t want to allow passing 0 for &quot;now&quot;?

I guess we could.

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:186
&gt; &gt; + * @altitude_accuracy: accuracy of position altitude in meters
&gt; 
&gt; It&apos;s not descriptive enough. Does it mean the real position may be
&gt; @altitude_accuracy meters above or below the WebKitGeolocationPosition?

I&apos;m not geolocation expert, I guess it&apos;s either, but I&apos;ll check the spec.

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:204
&gt; &gt; + * Set the @position positive angle between the direction of movement and the North
&gt; 
&gt; &quot;Set the @position&apos;s heading as a positive angle between the direction of
&gt; movement and North, clockwise.&quot;
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:367
&gt; &gt; +     * WebKitGeolocationManager:enable-high-accuracy:
&gt; 
&gt; Not really clear why this property is needed. Is the application responsible
&gt; for providing low-accuracy data when this is not set, or will WebCore handle
&gt; lowering the accuracy? Surely the later would be preferable? If the property
&gt; is really needed, please document the expectations further. But I suspect
&gt; it&apos;s not needed.

geolocation API has an option to enable high accuracy, when not enable, it&apos;s up to the application whether to provide more or less accurate locations. This is a read-only property that applications need to monitor to switch to a more accurate mode, or ignore it if they always provide high accuracy. But it&apos;s needed, yes.

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:369
&gt; &gt; +     * Whether high accuracy is enabled. This is a read-only property, that will be
&gt; 
&gt; no comma
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:386
&gt; &gt; +     * WebKitGeolocationManager::start:
&gt; 
&gt; Maybe &quot;WebKitGeolocationManager::geolocation-request-started&quot;? It&apos;s hard to
&gt; name....

Our convention is to use verbs in past for signals that are notifications, so webkit doesn&apos;t expect anything from the application like load-started. In this case the signal is notifying the application that it should start providing location updates. Including geolocation in the signal name is redundant and request is not accurate either, because in case of multiple requests start is emitted only once.

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:392
&gt; &gt; +     * the position changes; or use webkit_gelocation_manager_failed() in case
&gt; 
&gt; ; -&gt; ,
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:393
&gt; &gt; +     * it couldn&apos;t be possible to determine the current position.
&gt; 
&gt; couldn&apos;t be -&gt; isn&apos;t
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitGeolocationManager.cpp:413
&gt; &gt; +     * WebKitGeolocationManager::stop:
&gt; 
&gt; WebKitGeolocationManager::geolocation-request-ended?

No, for the same reasons.

&gt; &gt; Source/WebKit/UIProcess/API/wpe/docs/wpe-docs.sgml:89
&gt; &gt; +  &lt;index id=&quot;api-index-2-24&quot; role=&quot;2.24&quot;&gt;
&gt; &gt; +    &lt;title&gt;Index of new symbols in 2.24&lt;/title&gt;
&gt; &gt; +    &lt;xi:include href=&quot;xml/api-index-2.24.xml&quot;&gt;&lt;xi:fallback /&gt;&lt;/xi:include&gt;
&gt; &gt; +  &lt;/index&gt;
&gt; 
&gt; If 2.24 has a new API version, I would actually delete the &quot;index of new
&gt; symbols&quot; prior to 2.26.
&gt; 
&gt; Or if it&apos;s 2.26 that will have the new API version, you can delete them all.

I don&apos;t understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519587</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-03-21 03:10:42 -0700</bug_when>
    <thetext>Committed r243285: &lt;https://trac.webkit.org/changeset/243285&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365140</attachid>
            <date>2019-03-19 02:30:10 -0700</date>
            <delta_ts>2019-03-19 02:33:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-geolocation-api.diff</filename>
            <type>text/plain</type>
            <size>77669</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2MTliYTI1MGMxMC4uOWFm
YmUzMzkzMjMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0wMy0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHByb3ZpZGUgZ2VvbG9jYXRp
b24gaW5mb3JtYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEJ1aWxkIHdpdGggZ2VvbG9jYXRpb24gZW5hYmxlZCBieSBkZWZhdWx0IGluIGJvdGgg
R1RLIGFuZCBXUEUuIEluIEdUSyBhZGQgYSBzcGVjaWZpYyBVU0VfR0VPQ0xVRSBidWlsZCBvcHRp
b24KKyAgICAgICAgaW5zdGVhZCBvZiB1c2luZyBFTkFCTEVfR0VPTE9DQVRJT04uCisKKyAgICAg
ICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21h
a2UvT3B0aW9uc1dQRS5jbWFrZToKKwogMjAxOS0wMy0xMSAgWGFuIExvcGV6ICA8eGFuQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBCdWlsZCAzMmJpdCBiaW5hcmllcyBvbiBMaW51eC82
NGJpdCB3aGVuIHRoZSAtLTMyLWJpdCBpcyBwYXNzZWQgdG8gYnVpbGQtanNjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggOWEzMzM0MTg4Y2MuLjU3YTYzOTk2MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTktMDMtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdW1dQRV0gQWRkIEFQSSB0byBwcm92aWRlIGdlb2xvY2F0aW9uIGluZm9y
bWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTU5NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXBsYWNlIEVOQUJMRShHRU9MT0NBVElPTikgd2l0aCBVU0UoR0VPQ0xVRSkuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0
aW9uUHJvdmlkZXJHZW9jbHVlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW9jbHVlL0dlb2xv
Y2F0aW9uUHJvdmlkZXJHZW9jbHVlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2VvY2x1ZS9HZW9s
b2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNsaWVudC5oOgorCiAyMDE5LTAzLTE1ICBEZXZpbiBSb3Vz
c28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBwcm92aWRl
IGEgd2F5IHRvIGNhcHR1cmUgYSBzY3JlZW5zaG90IG9mIGEgbm9kZSBmcm9tIHdpdGhpbiB0aGUg
cGFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBlMGRkOWNkOTEyMC4uYmE0OTIzMWY3
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC03NSw3ICs3NSw3IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVQbGF0Zm9ybUdUS19TT1VSQ0VTCiAgICAgcmVuZGVyaW5nL1JlbmRlclRoZW1l
R3RrLmNwcAogKQogCi1pZiAoRU5BQkxFX0dFT0xPQ0FUSU9OKQoraWYgKFVTRV9HRU9DTFVFKQog
ICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICAke0RFUklWRURfU09VUkNF
U19XRUJDT1JFX0RJUn0vR2VvY2x1ZTJJbnRlcmZhY2UuYwogICAgICkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVy
R2VvY2x1ZS5jcHAKaW5kZXggOTgzOTc3MzU3ZTkuLjJkZWFmNzYzNzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJv
dmlkZXJHZW9jbHVlLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlLmgiCiAKLSNpZiBFTkFCTEUoR0VP
TE9DQVRJT04pCisjaWYgVVNFKEdFT0NMVUUpCiAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRp
bGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtMjEyLDQgKzIx
Miw0IEBAIHZvaWQgR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWU6OnVwZGF0ZUNsaWVudFJlcXVp
cmVtZW50cygpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShH
RU9MT0NBVElPTikKKyNlbmRpZiAvLyBVU0UoR0VPQ0xVRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUu
aAppbmRleCA0YTRkYjdhODUzMi4uMjI0Yjc5MTk5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVl
LmgKQEAgLTE4LDEwICsxOCw5IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAq
LwogCi0jaWZuZGVmIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlX2gKLSNkZWZpbmUgR2VvbG9j
YXRpb25Qcm92aWRlckdlb2NsdWVfaAorI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoR0VPTE9D
QVRJT04pCisjaWYgVVNFKEdFT0NMVUUpCiAKICNpbmNsdWRlICJHZW9sb2NhdGlvblByb3ZpZGVy
R2VvY2x1ZUNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KQEAgLTcxLDYg
KzcwLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8g
RU5BQkxFKEdFT0xPQ0FUSU9OKQotCi0jZW5kaWYgLy8gR2VvbG9jYXRpb25Qcm92aWRlckdlb2Ns
dWVfaAorI2VuZGlmIC8vIFVTRShHRU9DTFVFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNs
aWVudC5oCmluZGV4IGVhNjllMjU1ZGQxLi42OGRlMjc2MjUzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92
aWRlckdlb2NsdWVDbGllbnQuaApAQCAtMTcsMTAgKzE3LDkgQEAKICAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgogICovCiAKLSNpZm5kZWYgR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWVD
bGllbnRfaAotI2RlZmluZSBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNsaWVudF9oCisjcHJh
Z21hIG9uY2UKIAotI2lmIEVOQUJMRShHRU9MT0NBVElPTikKKyNpZiBVU0UoR0VPQ0xVRSkKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMiw2ICszMSw0IEBAIHB1YmxpYzoKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQotCi0jZW5k
aWYgLy8gR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWVDbGllbnRfaAorI2VuZGlmIC8vIFVTRShH
RU9DTFVFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cKaW5kZXggZmFh
YTg0OWIzNDUuLjE2ZTc3Njk3NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvcG8vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0wMy0xOSAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRv
IHByb3ZpZGUgZ2VvbG9jYXRpb24gaW5mb3JtYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogUE9URklMRVMuaW46IEFkZCBXZWJLaXRHZW9sb2Nh
dGlvbk1hbmFnZXIuY3BwLgorCiAyMDE5LTAzLTEzICBNaWxvIENhc2FncmFuZGUgPG1pbG9AbWls
by5uYW1lPgogCiAgICAgICAgIFtsMTBuXSBVcGRhdGVkIEl0YWxpYW4gdHJhbnNsYXRpb24gb2Yg
V2ViS2l0R1RLKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL1BP
VEZJTEVTLmluIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL1BPVEZJTEVTLmluCmlu
ZGV4IDFmYzE0NDg3NWE4Li5mNDkzMjAwMmEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL3BvL1BPVEZJTEVTLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9wby9QT1RGSUxFUy5pbgpAQCAtMTYsNiArMTYsNyBAQCBMb2NhbGl6ZWRTdHJpbmdzR3Rr
LmNwcAogLi4vLi4vLi4vV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0
YWJhc2UuY3BwCiAuLi8uLi8uLi9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVD
aG9vc2VyUmVxdWVzdC5jcHAKIC4uLy4uLy4uL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RmluZENvbnRyb2xsZXIuY3BwCisuLi8uLi8uLi9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAKIC4uLy4uLy4uL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLmNwcAogLi4vLi4vLi4vV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb24uY3BwCiAuLi8uLi8uLi9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDAzMDBhY2E4ODIwLi5lNTdmM2I5YzljMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1MyBAQAorMjAxOS0wMy0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHByb3ZpZGUgZ2VvbG9jYXRp
b24gaW5mb3JtYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIgcHVibGljIGNsYXNzIHRvIGhhbmRs
ZSBnZWFvbG9jYXRpb24gcG9zaXRpb24gdXBkYXRlcy4gV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRl
ciBoYXMKKyAgICAgICAgYmVlbiByZW1vdmVkIGFuZCB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlv
biBiYXNlZCBvbiBHZW9DbHVlIGlzIGRvbmUgYnkgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLgor
CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XUEUuY21h
a2U6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNlc1dQRS50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5j
cHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb246Ol9XZWJLaXRH
ZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlv
bl9uZXcpOgorICAgICAgICAod2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2NvcHkpOgorICAg
ICAgICAod2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2ZyZWUpOgorICAgICAgICAod2Via2l0
X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3NldF90aW1lc3RhbXApOgorICAgICAgICAod2Via2l0X2dl
b2xvY2F0aW9uX3Bvc2l0aW9uX3NldF9hbHRpdHVkZSk6CisgICAgICAgICh3ZWJraXRfZ2VvbG9j
YXRpb25fcG9zaXRpb25fc2V0X2FsdGl0dWRlX2FjY3VyYWN5KToKKyAgICAgICAgKHdlYmtpdF9n
ZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfaGVhZGluZyk6CisgICAgICAgICh3ZWJraXRfZ2VvbG9j
YXRpb25fcG9zaXRpb25fc2V0X3NwZWVkKToKKyAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uTWFu
YWdlclN0b3ApOgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyU2V0RW5hYmxlSGln
aEFjY3VyYWN5KToKKyAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0ZSk6Cisg
ICAgICAgICh3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3
ZWJraXRfZ2VvbG9jYXRpb25fbWFuYWdlcl9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9n
ZWxvY2F0aW9uX21hbmFnZXJfdXBkYXRlX3Bvc2l0aW9uKToKKyAgICAgICAgKHdlYmtpdF9nZWxv
Y2F0aW9uX21hbmFnZXJfZmFpbGVkKToKKyAgICAgICAgKHdlYmtpdF9nZW9sb2NhdGlvbl9tYW5h
Z2VyX2dldF9lbmFibGVfaGlnaF9hY2N1cmFjeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlclByaXZhdGUuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNsaWVu
dC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3Zp
ZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2Vv
bG9jYXRpb25Qcm92aWRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1
Y3RlZCk6IENyZWF0ZSBhIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciBpbnN0ZWFkIG9mIGEgV2Vi
S2l0R2VvbG9jYXRpb25Qcm92aWRlci4KKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
Z2VvbG9jYXRpb25fbWFuYWdlcik6IEdldCB0aGUgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBl
czoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21s
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS93cGUvZG9jcy93cGUtZG9jcy5zZ21sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
d3BlL3dlYmtpdC5oOgorCiAyMDE5LTAzLTE0ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBXZWJLaXQgY3Jhc2hlcyB3aGVuIG9wZW5pbmcgcGFn
ZXMgZG9jdW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtl
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA5OTNhYjU4ZWQzOC4uNzZl
YjVlOTVhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtODIsNiArODIsNyBAQCBzZXQo
V2ViS2l0MkdUS19JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RmluZENvbnRyb2xsZXIuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0LmgKICAgICAke1dFQktJVF9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZvcndhcmREZWNsYXJhdGlvbnMuaAorICAgICR7
V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmgK
ICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0SGl0VGVzdFJlc3VsdC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV1BFLmNtYWtlCmluZGV4IGNiZGY0ODdjYjNjLi4zNzNhZTBiOWVkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV1BFLmNtYWtlCkBAIC0xMTMsNiArMTEzLDcgQEAgc2V0KFdQRV9BUElfSU5TVEFMTEVE
X0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEZpbGVD
aG9vc2VyUmVxdWVzdC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRGaW5kQ29udHJvbGxlci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QuaAorICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmgKICAgICAke1dFQktJVF9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaAogICAg
ICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0SGl0VGVzdFJlc3VsdC5oCiAg
ICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRJbnN0YWxsTWlzc2luZ01l
ZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CmluZGV4IGNjMDU5
ODdmZDgzLi41MzUyMmQwM2IxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RL
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CkBAIC0xNDYsOCArMTQ2LDgg
QEAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAgQG5vLXVu
aWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3BwIEBuby11bmlm
eQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwIEBuby11bmlmeQogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdC5jcHAgQG5vLXVuaWZ5
CitVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBAbm8tdW5p
ZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3Zp
ZGVyLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0Ns
aWVudC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5k
bGVDbGllbnQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmlmeQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c1dQRS50eHQKaW5kZXggY2E2YTE1MDdmYTcuLjVmYzFjYTU3MDRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50
eHQKQEAgLTEzMSw4ICsxMzEsOCBAQCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29z
ZXJSZXF1ZXN0LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29u
dHJvbGxlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVu
dC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybVN1Ym1pc3Npb25S
ZXF1ZXN0LmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlv
bk1hbmFnZXIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmlmeQotVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmNw
cCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi45MzcyZjVmMTI0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAK
QEAgLTAsMCArMSw0NzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5o
IgorCisjaW5jbHVkZSAiQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oIgorI2luY2x1ZGUgIldlYkdl
b2xvY2F0aW9uUG9zaXRpb24uaCIKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJQ
cml2YXRlLmgiCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvV2Fs
bFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgorCisjaWYgVVNFKEdFT0NM
VUUpCisjaW5jbHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWVDbGllbnQuaD4KKyNlbmRp
ZgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
Ky8qKgorICogU0VDVElPTjpXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIKKyAqIEBzaG9ydF9kZXNj
cmlwdGlvbjogV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyCisgKiBAdGl0bGU6IEdlb2xvY2F0aW9u
IG1hbmFnZXIKKyAqIEBzZWVfYWxzbzogI1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QsICNXZWJLaXRXZWJDb250ZXh0CisgKgorICogV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyIHBy
b3ZpZGVzIEFQSSB0byBnZXQgdGhlIGdlb2dyYXBoaWNhbCBwb3NpdGlvbiBvZiB0aGUgdXNlci4K
KyAqIE9uY2UgYSAjV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCBpcyBhbGxvd2Vk
LCB3aGVuIFdlYktpdCBuZWVkcyB0byBrbm93IHRoZQorICogdXNlciBsb2NhdGlvbiAjV2ViS2l0
R2VvbG9jYXRpb25NYW5hZ2VyOjpzdGFydCBzaWduYWwgaXMgZW1pdHRlZC4gSWYgdGhlIHNpZ25h
bCBpcyBoYW5kbGVkCisgKiBhbmQgcmV0dXJucyAlVFJVRSwgdGhlIGFwcGxpY2F0aW9uIGlzIHJl
c3BvbnNpYmxlIGZvciBwcm92aWRpbmcgdGhlIHBvc2l0aW9uIGV2ZXJ5IHRpbWUgaXQncworICog
dXBkYXRlZCBieSBjYWxsaW5nIHdlYmtpdF9nZWxvY2F0aW9uX21hbmFnZXJfdXBkYXRlX3Bvc2l0
aW9uKCkuIFRoZSBzaWduYWwgI1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlcjo6c3RvcAorICogd2ls
bCBiZSBlbWl0dGVkIHdoZW4gbG9jYXRpb24gdXBkYXRlcyBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4K
KyAqCisgKiBTaW5jZTogMi4yNgorICovCisKK2VudW0geworICAgIFBST1BfMCwKKworICAgIFBS
T1BfRU5BQkxFX0hJR0hfQUNDVVJBQ1kKK307CisKK2VudW0geworICAgIFNUQVJULAorICAgIFNU
T1AsCisgICAgTEFTVF9TSUdOQUwKK307CisKK3N0cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25Qb3Np
dGlvbiB7CisgICAgX1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24oKSA9IGRlZmF1bHQ7CisKKyAg
ICBfV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiB0aW1lc3RhbXAgPSBXVEY6
Om51bGxvcHQpCisgICAgeworICAgICAgICBwb3NpdGlvbi50aW1lc3RhbXAgPSB0aW1lc3RhbXAu
dmFsdWVPcihXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKKyAg
ICAgICAgcG9zaXRpb24ubGF0aXR1ZGUgPSBsYXRpdHVkZTsKKyAgICAgICAgcG9zaXRpb24ubG9u
Z2l0dWRlID0gbG9uZ2l0dWRlOworICAgICAgICBwb3NpdGlvbi5hY2N1cmFjeSA9IGFjY3VyYWN5
OworICAgIH0KKworICAgIGV4cGxpY2l0IF9XZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uKGNvbnN0
IEdlb2xvY2F0aW9uUG9zaXRpb24mIG90aGVyKQorICAgIHsKKyAgICAgICAgcG9zaXRpb24gPSBv
dGhlcjsKKyAgICB9CisKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uIHBvc2l0aW9uOworfTsKKwor
LyoqCisgKiBXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uOgorICoKKyAqIFdlYktpdEdlb2xvY2F0
aW9uUG9zaXRpb24gaXMgYW4gb3BhcXVlIHN0cnVjdCB1c2VkIHRvIHByb3ZpZGUgcG9zaXRpb24g
dXBkYXRlcyB0byBhCisgKiAjV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyIHVzaW5nIHdlYmtpdF9n
ZWxvY2F0aW9uX21hbmFnZXJfdXBkYXRlX3Bvc2l0aW9uKCkuCisgKgorICogU2luY2U6IDIuMjYK
KyAqLworCitHX0RFRklORV9CT1hFRF9UWVBFKFdlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24sIHdl
YmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbiwgd2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2Nv
cHksIHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9mcmVlKQorCisvKioKKyAqIHdlYmtpdF9n
ZW9sb2NhdGlvbl9wb3NpdGlvbl9uZXc6CisgKiBAbGF0aXR1ZGU6IGEgdmFsaWQgbGF0aXR1ZGUg
aW4gZGVncmVlcworICogQGxvbmdpdHVkZTogYSB2YWxpZCBsb25naXR1ZGUgaW4gZGVncmVlcwor
ICogQGFjY3VyYWN5OiBhY2N1cmFjeSBvZiBsb2NhdGlvbiBpbiBtZXRlcnMKKyAqCisgKiBDcmVh
dGUgYSBuZXcgI1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24KKyAqCisgKiBSZXR1cm5zOiAodHJh
bnNmZXIgZnVsbCk6IGEgbmV3bHkgY3JlYXRlZCAjV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbgor
ICoKKyAqIFNpbmNlOiAyLjI2CisgKi8KK1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24qIHdlYmtp
dF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9uZXcoZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0
dWRlLCBkb3VibGUgYWNjdXJhY3kpCit7CisgICAgYXV0byogcG9zaXRpb24gPSBzdGF0aWNfY2Fz
dDxXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uKj4oZmFzdE1hbGxvYyhzaXplb2YoV2ViS2l0R2Vv
bG9jYXRpb25Qb3NpdGlvbikpKTsKKyAgICBuZXcgKHBvc2l0aW9uKSBXZWJLaXRHZW9sb2NhdGlv
blBvc2l0aW9uKGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KTsKKyAgICByZXR1cm4gcG9z
aXRpb247Cit9CisKKy8qKgorICogd2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2NvcHk6Cisg
KiBAcG9zaXRpb246IGEgI1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24KKyAqCisgKiBNYWtlIGEg
Y29weSBvZiB0aGUgI1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24KKyAqCisgKiBSZXR1cm5zOiAo
dHJhbnNmZXIgZnVsbCk6IGEgY29weSBvZiBAcG9zaXRpb24KKyAqCisgKiBTaW5jZTogMi4yNgor
ICovCitXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uKiB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRp
b25fY29weShXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChwb3NpdGlvbiwgbnVsbHB0cik7CisKKyAgICBhdXRvKiBjb3B5ID0g
c3RhdGljX2Nhc3Q8V2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbio+KGZhc3RNYWxsb2Moc2l6ZW9m
KFdlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24pKSk7CisgICAgbmV3IChjb3B5KSBXZWJLaXRHZW9s
b2NhdGlvblBvc2l0aW9uKHBvc2l0aW9uLT5wb3NpdGlvbik7CisgICAgcmV0dXJuIGNvcHk7Cit9
CisKKy8qKgorICogd2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2ZyZWU6CisgKiBAcG9zaXRp
b246IGEgI1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24KKyAqCisgKiBGcmVlIHRoZSAjV2ViS2l0
R2VvbG9jYXRpb25Qb3NpdGlvbgorICoKKyAqIFNpbmNlOiAyLjI2CisgKi8KK3ZvaWQgd2Via2l0
X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2ZyZWUoV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbiogcG9z
aXRpb24pCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChwb3NpdGlvbik7CisKKyAgICBwb3NpdGlv
bi0+fldlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24oKTsKKyAgICBmYXN0RnJlZShwb3NpdGlvbik7
Cit9CisKKy8qKgorICogd2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3NldF90aW1lc3RhbXA6
CisgKiBAcG9zaXRpb246IGEgI1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24KKyAqIEB0aW1lc3Rh
bXA6IHRpbWVzdGFtcCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaAorICoKKyAqIFNldCB0aGUg
QHBvc2l0aW9uIHRpbWVzdGFtcC4gQnkgZGVmYXVsdCBpdCdzIHRoZSB0aW1lIHdoZW4gdGhlIEBw
b3NpdGlvbiB3YXMgY3JlYXRlZC4KKyAqCisgKiBTaW5jZTogMi4yNgorICovCit2b2lkIHdlYmtp
dF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfdGltZXN0YW1wKFdlYktpdEdlb2xvY2F0aW9uUG9z
aXRpb24qIHBvc2l0aW9uLCBndWludDY0IHRpbWVzdGFtcCkKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKHBvc2l0aW9uKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHRpbWVzdGFtcCk7CisKKyAgICBw
b3NpdGlvbi0+cG9zaXRpb24udGltZXN0YW1wID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lc3Rh
bXApOworfQorCisvKioKKyAqIHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfYWx0aXR1
ZGU6CisgKiBAcG9zaXRpb246IGEgI1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24KKyAqIEBhbHRp
dHVkZTogYWx0aXR1ZGUgaW4gbWV0ZXJzCisgKgorICogU2V0IHRoZSBAcG9zaXRpb24gYWx0aXR1
ZGUKKyAqCisgKiBTaW5jZTogMi4yNgorICovCit2b2lkIHdlYmtpdF9nZW9sb2NhdGlvbl9wb3Np
dGlvbl9zZXRfYWx0aXR1ZGUoV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24sIGRv
dWJsZSBhbHRpdHVkZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHBvc2l0aW9uKTsKKworICAg
IHBvc2l0aW9uLT5wb3NpdGlvbi5hbHRpdHVkZSA9IGFsdGl0dWRlOworfQorCisvKioKKyAqIHdl
YmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfYWx0aXR1ZGVfYWNjdXJhY3k6CisgKiBAcG9z
aXRpb246IGEgI1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24KKyAqIEBhbHRpdHVkZV9hY2N1cmFj
eTogYWNjdXJhY3kgb2YgcG9zaXRpb24gYWx0aXR1ZGUgaW4gbWV0ZXJzCisgKgorICogU2V0IHRo
ZSBhY2N1cmFjeSBvZiBAcG9zaXRpb24gYWx0aXR1ZGUKKyAqCisgKiBTaW5jZTogMi4yNgorICov
Cit2b2lkIHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfYWx0aXR1ZGVfYWNjdXJhY3ko
V2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24sIGRvdWJsZSBhbHRpdHVkZUFjY3Vy
YWN5KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwocG9zaXRpb24pOworCisgICAgcG9zaXRpb24t
PnBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFjY3VyYWN5OworfQorCisvKioK
KyAqIHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfaGVhZGluZzoKKyAqIEBwb3NpdGlv
bjogYSAjV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbgorICogQGhlYWRpbmc6IGhlYWRpbmcgaW4g
ZGVncmVlcworICoKKyAqIFNldCB0aGUgQHBvc2l0aW9uIHBvc2l0aXZlIGFuZ2xlIGJldHdlZW4g
dGhlIGRpcmVjdGlvbiBvZiBtb3ZlbWVudCBhbmQgdGhlIE5vcnRoCisgKiBkaXJlY3Rpb24sIGlu
IGNsb2Nrd2lzZSBkaXJlY3Rpb24uCisgKgorICogU2luY2U6IDIuMjYKKyAqLwordm9pZCB3ZWJr
aXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X2hlYWRpbmcoV2ViS2l0R2VvbG9jYXRpb25Qb3Np
dGlvbiogcG9zaXRpb24sIGRvdWJsZSBoZWFkaW5nKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
cG9zaXRpb24pOworCisgICAgcG9zaXRpb24tPnBvc2l0aW9uLmhlYWRpbmcgPSBoZWFkaW5nOwor
fQorCisvKioKKyAqIHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfc3BlZWQ6CisgKiBA
cG9zaXRpb246IGEgI1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24KKyAqIEBzcGVlZDogc3BlZWQg
aW4gbWV0ZXJzIHBlciBzZWNvbmQKKyAqCisgKiBTZXQgdGhlIEBwb3NpdGlvbiBzcGVlZAorICoK
KyAqIFNpbmNlOiAyLjI2CisgKi8KK3ZvaWQgd2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3Nl
dF9zcGVlZChXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbiwgZG91YmxlIHNwZWVk
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwocG9zaXRpb24pOworCisgICAgcG9zaXRpb24tPnBv
c2l0aW9uLnNwZWVkID0gc3BlZWQ7Cit9CisKKyNpZiBVU0UoR0VPQ0xVRSkKK2NsYXNzIEdlb2Ns
dWVQcm92aWRlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1
ZUNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgR2VvY2x1ZVByb3ZpZGVyQ2xpZW50KFdl
YktpdEdlb2xvY2F0aW9uTWFuYWdlciogbWFuYWdlcikKKyAgICAgICAgOiBtX21hbmFnZXIobWFu
YWdlcikKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgbm90aWZ5UG9zaXRpb25D
aGFuZ2VkKGludCB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwg
ZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGRvdWJsZSkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIFdlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24gcG9zaXRpb24obGF0aXR1ZGUsIGxv
bmdpdHVkZSwgYWNjdXJhY3ksIHN0YXRpY19jYXN0PGRvdWJsZT4odGltZXN0YW1wKSk7CisgICAg
ICAgIHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfYWx0aXR1ZGUoJnBvc2l0aW9uLCBh
bHRpdHVkZSk7CisgICAgICAgIHdlYmtpdF9nZWxvY2F0aW9uX21hbmFnZXJfdXBkYXRlX3Bvc2l0
aW9uKG1fbWFuYWdlciwgJnBvc2l0aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdGlmeUVycm9y
T2NjdXJyZWQoY29uc3QgY2hhciogbWVzc2FnZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHdl
YmtpdF9nZWxvY2F0aW9uX21hbmFnZXJfZmFpbGVkKG1fbWFuYWdlciwgbWVzc2FnZSk7CisgICAg
fQorCisgICAgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiBtX21hbmFnZXI7Cit9OworI2VuZGlm
CisKK3N0cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyUHJpdmF0ZSB7CisgICAgUmVmUHRy
PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBtYW5hZ2VyOworICAgIGJvb2wgaGlnaEFjY3Vy
YWN5RW5hYmxlZDsKKyNpZiBVU0UoR0VPQ0xVRSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R2VvY2x1
ZVByb3ZpZGVyQ2xpZW50PiBwcm92aWRlckNsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R2Vv
bG9jYXRpb25Qcm92aWRlckdlb2NsdWU+IHByb3ZpZGVyOworI2VuZGlmCit9OworCitzdGF0aWMg
Z3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CisKK1dFQktJVF9ERUZJTkVfVFlQ
RShXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIsIHdlYmtpdF9nZW9sb2NhdGlvbl9tYW5hZ2VyLCBH
X1RZUEVfT0JKRUNUKQorCitzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJTdGFy
dChXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgZ2Jvb2xlYW4gcmV0
dXJuVmFsdWU7CisgICAgZ19zaWduYWxfZW1pdChtYW5hZ2VyLCBzaWduYWxzW1NUQVJUXSwgMCwg
JnJldHVyblZhbHVlKTsKKyAgICBpZiAocmV0dXJuVmFsdWUpIHsKKyNpZiBVU0UoR0VPQ0xVRSkK
KyAgICAgICAgbWFuYWdlci0+cHJpdi0+cHJvdmlkZXIgPSBudWxscHRyOworICAgICAgICBtYW5h
Z2VyLT5wcml2LT5wcm92aWRlckNsaWVudCA9IG51bGxwdHI7CisjZW5kaWYKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworI2lmIFVTRShHRU9DTFVFKQorICAgIGlmICghbWFuYWdlci0+cHJpdi0+
cHJvdmlkZXIpIHsKKyAgICAgICAgbWFuYWdlci0+cHJpdi0+cHJvdmlkZXJDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEdlb2NsdWVQcm92aWRlckNsaWVudD4obWFuYWdlcik7CisgICAgICAgIG1h
bmFnZXItPnByaXYtPnByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvblByb3Zp
ZGVyR2VvY2x1ZT4obWFuYWdlci0+cHJpdi0+cHJvdmlkZXJDbGllbnQuZ2V0KCkpOworICAgIH0K
KyAgICBtYW5hZ2VyLT5wcml2LT5wcm92aWRlci0+c3RhcnRVcGRhdGluZygpOworI2VuZGlmCit9
CisKK3N0YXRpYyB2b2lkIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlclN0b3AoV2ViS2l0R2VvbG9j
YXRpb25NYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIGdfc2lnbmFsX2VtaXQobWFuYWdlciwgc2ln
bmFsc1tTVE9QXSwgMCwgbnVsbHB0cik7CisKKyNpZiBVU0UoR0VPQ0xVRSkKKyAgICBpZiAobWFu
YWdlci0+cHJpdi0+cHJvdmlkZXIpCisgICAgICAgIG1hbmFnZXItPnByaXYtPnByb3ZpZGVyLT5z
dG9wVXBkYXRpbmcoKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlv
bk1hbmFnZXJTZXRFbmFibGVIaWdoQWNjdXJhY3koV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiBt
YW5hZ2VyLCBib29sIGVuYWJsZWQpCit7CisgICAgaWYgKG1hbmFnZXItPnByaXYtPmhpZ2hBY2N1
cmFjeUVuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbWFuYWdlci0+
cHJpdi0+aGlnaEFjY3VyYWN5RW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgZ19vYmplY3Rfbm90aWZ5
KEdfT0JKRUNUKG1hbmFnZXIpLCAiZW5hYmxlLWhpZ2gtYWNjdXJhY3kiKTsKKyNpZiBVU0UoR0VP
Q0xVRSkKKyAgICBpZiAobWFuYWdlci0+cHJpdi0+cHJvdmlkZXIpCisgICAgICAgIG1hbmFnZXIt
PnByaXYtPnByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3koZW5hYmxlZCk7CisjZW5kaWYK
K30KKworY2xhc3MgR2VvbG9jYXRpb25Qcm92aWRlciBmaW5hbCA6IHB1YmxpYyBBUEk6Okdlb2xv
Y2F0aW9uUHJvdmlkZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEdlb2xvY2F0aW9uUHJvdmlk
ZXIoV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiBtYW5hZ2VyKQorICAgICAgICA6IG1fbWFuYWdl
cihtYW5hZ2VyKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBzdGFydFVwZGF0
aW5nKFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Jikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlclN0YXJ0KG1fbWFuYWdlcik7CisgICAgfQorCisgICAg
dm9pZCBzdG9wVXBkYXRpbmcoV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkmKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgd2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyU3RvcChtX21hbmFnZXIpOwor
ICAgIH0KKworICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5JiwgYm9vbCBlbmFibGVkKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Via2l0
R2VvbG9jYXRpb25NYW5hZ2VyU2V0RW5hYmxlSGlnaEFjY3VyYWN5KG1fbWFuYWdlciwgZW5hYmxl
ZCk7CisgICAgfQorCisgICAgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiBtX21hbmFnZXI7Cit9
OworCitXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNy
ZWF0ZShXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSogcHJveHkpCit7CisgICAgYXV0byogbWFu
YWdlciA9IFdFQktJVF9HRU9MT0NBVElPTl9NQU5BR0VSKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9HRU9MT0NBVElPTl9NQU5BR0VSLCBudWxscHRyKSk7CisgICAgbWFuYWdlci0+cHJpdi0+bWFu
YWdlciA9IHByb3h5OworICAgIHByb3h5LT5zZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPEdl
b2xvY2F0aW9uUHJvdmlkZXI+KG1hbmFnZXIpKTsKKyAgICByZXR1cm4gbWFuYWdlcjsKK30KKwor
c3RhdGljIHZvaWQgd2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyR2V0UHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3Bl
YykKK3sKKyAgICBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1hbmFnZXIgPSBXRUJLSVRfR0VP
TE9DQVRJT05fTUFOQUdFUihvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBj
YXNlIFBST1BfRU5BQkxFX0hJR0hfQUNDVVJBQ1k6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xl
YW4odmFsdWUsIHdlYmtpdF9nZW9sb2NhdGlvbl9tYW5hZ2VyX2dldF9lbmFibGVfaGlnaF9hY2N1
cmFjeShtYW5hZ2VyKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVj
KTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9nZW9sb2NhdGlvbl9tYW5hZ2VyX2Ns
YXNzX2luaXQoV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyQ2xhc3MqIGdlb2xvY2F0aW9uTWFuYWdl
ckNsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xB
U1MoZ2VvbG9jYXRpb25NYW5hZ2VyQ2xhc3MpOworICAgIGdPYmplY3RDbGFzcy0+Z2V0X3Byb3Bl
cnR5ID0gd2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyR2V0UHJvcGVydHk7CisKKyAgICAvKioKKyAg
ICAgKiBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXI6ZW5hYmxlLWhpZ2gtYWNjdXJhY3k6CisgICAg
ICoKKyAgICAgKiBXaGV0aGVyIGhpZ2ggYWNjdXJhY3kgaXMgZW5hYmxlZC4gVGhpcyBpcyBhIHJl
YWQtb25seSBwcm9wZXJ0eSwgdGhhdCB3aWxsIGJlCisgICAgICogc2V0IHRvICVUUlVFIHdoZW4g
YSAjV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyIG5lZWRzIHRvIGdldCBhY2N1cmF0ZSBwb3NpdGlv
biB1cGRhdGVzLgorICAgICAqIFlvdSBjYW4gY29ubmVjdCB0byBub3RpZnk6OmVuYWJsZS1oaWdo
LWFjY3VyYWN5IHNpZ25hbCB0byBtb25pdG9yIGl0LgorICAgICAqCisgICAgICogU2luY2U6IDIu
MjYKKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAg
ICBnT2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfRU5BQkxFX0hJR0hfQUNDVVJBQ1ksCisgICAg
ICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgImVuYWJsZS1oaWdoLWFjY3Vy
YWN5IiwKKyAgICAgICAgICAgIF8oIkVuYWJsZSBoaWdoIGFjY3VyYWN5IiksCisgICAgICAgICAg
ICBfKCJXaGV0aGVyIGhpZ2ggYWNjdXJhY3kgaXMgZW5hYmxlZCIpLAorICAgICAgICAgICAgRkFM
U0UsCisgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKKworICAgIC8qKgorICAg
ICAqIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlcjo6c3RhcnQ6CisgICAgICogQG1hbmFnZXI6IHRo
ZSAjV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyIG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRl
ZAorICAgICAqCisgICAgICogVGhlIHNpZ25hbCBpcyBlbWl0dGVkIHRvIG5vdGlmeSB0aGF0IEBt
YW5hZ2VyIG5lZWRzIHRvIHN0YXJ0IHJlY2VpdmluZworICAgICAqIHBvc2l0aW9uIHVwZGF0ZXMu
IEFmdGVyIHRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgdGhlIHVzZXIgc2hvdWxkIHByb3ZpZGUKKyAg
ICAgKiB0aGUgdXBkYXRlcyB1c2luZyB3ZWJraXRfZ2Vsb2NhdGlvbl9tYW5hZ2VyX3VwZGF0ZV9w
b3NpdGlvbigpIGV2ZXJ5IHRpbWUKKyAgICAgKiB0aGUgcG9zaXRpb24gY2hhbmdlczsgb3IgdXNl
IHdlYmtpdF9nZWxvY2F0aW9uX21hbmFnZXJfZmFpbGVkKCkgaW4gY2FzZQorICAgICAqIGl0IGNv
dWxkbid0IGJlIHBvc3NpYmxlIHRvIGRldGVybWluZSB0aGUgY3VycmVudCBwb3NpdGlvbi4KKyAg
ICAgKgorICAgICAqIElmIHRoZSBzaWduYWwgaXMgbm90IGhhbmRsZWQsIFdlYktpdCB3aWxsIHRy
eSB0byBkZXRlcm1pbmUgdGhlIHBvc2l0aW9uCisgICAgICogdXNpbmcgR2VvQ2x1ZSBpZiBhdmFp
bGFibGUuCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRs
ZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgorICAgICAqICAgICVGQUxTRSB0
byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4y
NgorICAgICAqLworICAgIHNpZ25hbHNbU1RBUlRdID0gZ19zaWduYWxfbmV3KAorICAgICAgICAi
c3RhcnQiLAorICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhnZW9sb2NhdGlvbk1hbmFnZXJDbGFz
cyksCisgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAwLAorICAgICAgICBnX3Np
Z25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1
cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMCk7CisKKyAgICAv
KioKKyAgICAgKiBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXI6OnN0b3A6CisgICAgICogQG1hbmFn
ZXI6IHRoZSAjV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyIG9uIHdoaWNoIHRoZSBzaWduYWwgaXMg
ZW1pdHRlZAorICAgICAqCisgICAgICogVGhlIHNpZ25hbCBpcyBlbWl0dGVkIHRvIG5vdGlmeSB0
aGF0IEBtYW5hZ2VyIGRvZXNuJ3QgbmVlZCB0byByZWNlaXZlCisgICAgICogcG9zaXRpb24gdXBk
YXRlcyBhbnltb3JlLgorICAgICAqCisgICAgICogU2luY2U6IDIuMjYKKyAgICAgKi8KKyAgICBz
aWduYWxzW1NUT1BdID0gZ19zaWduYWxfbmV3KAorICAgICAgICAic3RvcCIsCisgICAgICAgIEdf
VFlQRV9GUk9NX0NMQVNTKGdlb2xvY2F0aW9uTWFuYWdlckNsYXNzKSwKKyAgICAgICAgR19TSUdO
QUxfUlVOX0xBU1QsCisgICAgICAgIDAsCisgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisgICAg
ICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgICBHX1RZUEVfTk9ORSwgMCk7
Cit9CisKKy8qKgorICogd2Via2l0X2dlbG9jYXRpb25fbWFuYWdlcl91cGRhdGVfcG9zaXRpb246
CisgKiBAbWFuYWdlcjogYSAjV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyCisgKiBAcG9zaXRpb246
IGEgI1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24KKyAqCisgKiBOb3RpZnkgQG1hbmFnZXIgdGhh
dCBwb3NpdGlvbiBoYXMgYmVlbiB1cGRhdGVkIHRvIEBwb3NpdGlvbi4KKyAqCisgKiBTaW5jZTog
Mi4yNgorICovCit2b2lkIHdlYmtpdF9nZWxvY2F0aW9uX21hbmFnZXJfdXBkYXRlX3Bvc2l0aW9u
KFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogbWFuYWdlciwgV2ViS2l0R2VvbG9jYXRpb25Qb3Np
dGlvbiogcG9zaXRpb24pCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfR0VPTE9D
QVRJT05fTUFOQUdFUihtYW5hZ2VyKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChwb3NpdGlvbik7
CisKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uIGNvcmVQb3NpdGlvbiA9IHBvc2l0aW9uLT5wb3Np
dGlvbjsKKyAgICBhdXRvIHdrUG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVh
dGUoV1RGTW92ZShjb3JlUG9zaXRpb24pKTsKKyAgICBtYW5hZ2VyLT5wcml2LT5tYW5hZ2VyLT5w
cm92aWRlckRpZENoYW5nZVBvc2l0aW9uKHdrUG9zaXRpb24ucHRyKCkpOworfQorCisvKioKKyAq
IHdlYmtpdF9nZWxvY2F0aW9uX21hbmFnZXJfZmFpbGVkOgorICogQG1hbmFnZXI6IGEgI1dlYktp
dEdlb2xvY2F0aW9uTWFuYWdlcgorICogQGVycm9yX21lc3NhZ2U6IHRoZSBlcnJvciBtZXNzYWdl
CisgKgorICogTm90aWZ5IEBtYW5hZ2VyIHRoYXQgZGV0ZXJtaW5pbmcgdGhlIHBvc2l0aW9uIGZh
aWxlZC4KKyAqCisgKiBTaW5jZTogMi4yNgorICovCit2b2lkIHdlYmtpdF9nZWxvY2F0aW9uX21h
bmFnZXJfZmFpbGVkKFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogbWFuYWdlciwgY29uc3QgY2hh
ciogZXJyb3JNZXNzYWdlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0dFT0xP
Q0FUSU9OX01BTkFHRVIobWFuYWdlcikpOworCisgICAgbWFuYWdlci0+cHJpdi0+bWFuYWdlci0+
cHJvdmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihTdHJpbmc6OmZyb21VVEY4KGVycm9y
TWVzc2FnZSkpOworfQorCisvKioKKyAqIHdlYmtpdF9nZW9sb2NhdGlvbl9tYW5hZ2VyX2dldF9l
bmFibGVfaGlnaF9hY2N1cmFjeToKKyAqIEBtYW5hZ2VyOiBhICNXZWJLaXRHZW9sb2NhdGlvbk1h
bmFnZXIKKyAqCisgKiBHZXQgd2hldGhlciBoaWdoIGFjY3VyYWN5IGlzIGVuYWJsZWQuCisgKgor
ICogU2luY2U6IDIuMjYKKyAqLworZ2Jvb2xlYW4gd2Via2l0X2dlb2xvY2F0aW9uX21hbmFnZXJf
Z2V0X2VuYWJsZV9oaWdoX2FjY3VyYWN5KFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogbWFuYWdl
cikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfR0VPTE9DQVRJT05fTUFO
QUdFUihtYW5hZ2VyKSwgRkFMU0UpOworCisgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPmhpZ2hB
Y2N1cmFjeUVuYWJsZWQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJQcml2YXRlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFhOGJlNWU0YjRhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9j
YXRpb25NYW5hZ2VyUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5o
IgorCitXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNy
ZWF0ZShXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Kik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9u
UHJvdmlkZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWIwMmU4M2VlYy4u
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmgiCi0KLSNp
ZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0KLSNpbmNsdWRlICJBUElHZW9sb2NhdGlvblByb3ZpZGVy
LmgiCi0jaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBH
ZW9sb2NhdGlvblByb3ZpZGVyIDogcHVibGljIEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlciB7Ci1w
dWJsaWM6Ci0gICAgZXhwbGljaXQgR2VvbG9jYXRpb25Qcm92aWRlcihXZWJLaXRHZW9sb2NhdGlv
blByb3ZpZGVyJiBwcm92aWRlcikKLSAgICAgICAgOiBtX3Byb3ZpZGVyKHByb3ZpZGVyKQotICAg
IHsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBzdGFydFVwZGF0aW5nKFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Jikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fcHJvdmlkZXIuc3Rh
cnRVcGRhdGluZygpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcFVwZGF0aW5nKFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Jikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fcHJvdmlkZXIuc3Rv
cFVwZGF0aW5nKCk7Ci0gICAgfQotCi0gICAgV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlciYgbV9w
cm92aWRlcjsKLX07Ci0KLVdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6On5XZWJLaXRHZW9sb2Nh
dGlvblByb3ZpZGVyKCkKLXsKLSAgICBtX3Byb3ZpZGVyLnN0b3BVcGRhdGluZygpOwotICAgIG1f
Z2VvbG9jYXRpb25NYW5hZ2VyLT5zZXRQcm92aWRlcihudWxscHRyKTsKLX0KLQotV2ViS2l0R2Vv
bG9jYXRpb25Qcm92aWRlcjo6V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcihXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eSogZ2VvbG9jYXRpb25NYW5hZ2VyKQotICAgIDogbV9nZW9sb2NhdGlvbk1h
bmFnZXIoZ2VvbG9jYXRpb25NYW5hZ2VyKQotICAgICwgbV9wcm92aWRlcih0aGlzKQotewotICAg
IEFTU0VSVChnZW9sb2NhdGlvbk1hbmFnZXIpOwotICAgIGdlb2xvY2F0aW9uTWFuYWdlci0+c2V0
UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVyPigqdGhpcykpOwot
fQotCi12b2lkIFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6OnN0YXJ0VXBkYXRpbmcoKQotewot
ICAgIG1fcHJvdmlkZXIuc3RhcnRVcGRhdGluZygpOwotfQotCi12b2lkIFdlYktpdEdlb2xvY2F0
aW9uUHJvdmlkZXI6OnN0b3BVcGRhdGluZygpCi17Ci0gICAgbV9wcm92aWRlci5zdG9wVXBkYXRp
bmcoKTsKLX0KLQotdm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpub3RpZnlQb3NpdGlv
bkNoYW5nZWQoaW50IHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRl
LCBkb3VibGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJh
Y3kpCi17Ci0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBjb3JlUG9zaXRpb24geyBz
dGF0aWNfY2FzdDxkb3VibGU+KHRpbWVzdGFtcCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3Vy
YWN5IH07Ci0gICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlID0gYWx0aXR1ZGU7Ci0gICAgY29yZVBv
c2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFjY3VyYWN5OwotICAgIGF1dG8gcG9z
aXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9zaXRp
b24pKTsKLSAgICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlv
bihwb3NpdGlvbi5wdHIoKSk7Ci19Ci0KLXZvaWQgV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6
bm90aWZ5RXJyb3JPY2N1cnJlZChjb25zdCBjaGFyKiAvKiBtZXNzYWdlICovKQotewotICAgIG1f
Z2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92aWRlckRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
R2VvbG9jYXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkYzE2MzYxYmEyNC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLQotI2luY2x1ZGUgPFdlYkNvcmUvR2Vv
bG9jYXRpb25Qcm92aWRlckdlb2NsdWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9u
UHJvdmlkZXJHZW9jbHVlQ2xpZW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk7Ci0KLWNsYXNzIFdlYktpdEdlb2xvY2F0aW9uUHJvdmlk
ZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWVDbGll
bnQgewotcHVibGljOgotICAgIGV4cGxpY2l0IFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIoV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHkqKTsKLSAgICB+V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRl
cigpOwotCi0gICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7Ci0gICAgdm9pZCBzdG9wVXBkYXRpbmco
KTsKLQotcHJpdmF0ZToKLSAgICAvLyBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNsaWVudCBp
bnRlcmZhY2UuCi0gICAgdm9pZCBub3RpZnlQb3NpdGlvbkNoYW5nZWQoaW50LCBkb3VibGUsIGRv
dWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBub3RpZnlF
cnJvck9jY3VycmVkKGNvbnN0IGNoYXIqKSBvdmVycmlkZTsKLQotICAgIFJlZlB0cjxXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eT4gbV9nZW9sb2NhdGlvbk1hbmFnZXI7Ci0gICAgV2ViQ29yZTo6
R2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUgbV9wcm92aWRlcjsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmlu
ZGV4IDFlY2JmMzgwM2U1Li40NzQ1NTI4NTViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTMxLDEzICszMSwx
MiBAQAogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbmNsdWRlICJXZWJBdXRvbWF0
aW9uU2Vzc2lvbi5oIgogI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgotI2luY2x1ZGUg
IldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0QXV0b21hdGlv
blNlc3Npb25Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJLaXREb3dubG9hZFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRGYXZpY29uRGF0YWJhc2VQ
cml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5oIgorI2luY2x1
ZGUgIldlYktpdEdlb2xvY2F0aW9uTWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRJ
bmplY3RlZEJ1bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdE5ldHdvcmtQcm94eVNldHRp
bmdzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgiCkBA
IC0xNzAsOSArMTY5LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSB7CiAgICAg
R1JlZlB0cjxXZWJLaXRTZWN1cml0eU1hbmFnZXI+IHNlY3VyaXR5TWFuYWdlcjsKICAgICBVUklT
Y2hlbWVIYW5kbGVyTWFwIHVyaVNjaGVtZUhhbmRsZXJzOwogICAgIFVSSVNjaGVtZVJlcXVlc3RN
YXAgdXJpU2NoZW1lUmVxdWVzdHM7Ci0jaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyPiBnZW9sb2NhdGlvblByb3ZpZGVy
OwotI2VuZGlmCisgICAgR1JlZlB0cjxXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXI+IGdlb2xvY2F0
aW9uTWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlk
ZXI+IG5vdGlmaWNhdGlvblByb3ZpZGVyOwogICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyPiB3ZWJzaXRlRGF0YU1hbmFnZXI7CiAKQEAgLTM2Nyw5ICszNjQsNyBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIGF0
dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRleHQpOwogICAgIGF0dGFjaEN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKIAotI2lmIEVOQUJM
RShHRU9MT0NBVElPTikKLSAgICBwcml2LT5nZW9sb2NhdGlvblByb3ZpZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyPihwcml2LT5wcm9jZXNzUG9vbC0+c3Vw
cGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSk7Ci0jZW5kaWYKKyAgICBwcml2
LT5nZW9sb2NhdGlvbk1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0R2VvbG9jYXRpb25NYW5hZ2Vy
Q3JlYXRlKHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5PigpKSk7CiAgICAgcHJpdi0+bm90aWZpY2F0aW9uUHJvdmlkZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyPihwcml2LT5wcm9jZXNzUG9vbC0+c3Vw
cGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCksIHdlYkNvbnRleHQpOwogI2lm
IFBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgcHJpdi0+cmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNw
ZWN0b3JQcm90b2NvbEhhbmRsZXI+KHdlYkNvbnRleHQpOwpAQCAtODY3LDYgKzg2MiwyMyBAQCBX
ZWJLaXRDb29raWVNYW5hZ2VyKiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Nvb2tpZV9tYW5hZ2Vy
KFdlYktpdFdlYkNvbnRleHQqIGNvbgogICAgIHJldHVybiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyKGNvbnRleHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdl
ci5nZXQoKSk7CiB9CiAKKy8qKgorICogd2Via2l0X3dlYl9jb250ZXh0X2dldF9nZW9sb2NhdGlv
bl9tYW5hZ2VyOgorICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKKyAqCisgKiBHZXQg
dGhlICNXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIgb2YgQGNvbnRleHQuCisgKgorICogUmV0dXJu
czogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlciBvZiBAY29u
dGV4dC4KKyAqCisgKiBTaW5jZTogMi4yNgorICovCitXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIq
IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZ2VvbG9jYXRpb25fbWFuYWdlcihXZWJLaXRXZWJDb250
ZXh0KiBjb250ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
Q09OVEVYVChjb250ZXh0KSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gY29udGV4dC0+cHJpdi0+
Z2VvbG9jYXRpb25NYW5hZ2VyLmdldCgpOworfQorCiBzdGF0aWMgdm9pZCBlbnN1cmVGYXZpY29u
RGF0YWJhc2UoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKIHsKICAgICBXZWJLaXRXZWJDb250
ZXh0UHJpdmF0ZSogcHJpdiA9IGNvbnRleHQtPnByaXY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjA3YzVmODg2MDQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0
aW9uTWFuYWdlci5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmlu
ZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+
IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRHZW9s
b2NhdGlvbk1hbmFnZXJfaAorI2RlZmluZSBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJfaAorCisj
aW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMu
aD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX01B
TkFHRVIgICAgICAgICAgICAod2Via2l0X2dlb2xvY2F0aW9uX21hbmFnZXJfZ2V0X3R5cGUoKSkK
KyNkZWZpbmUgV0VCS0lUX0dFT0xPQ0FUSU9OX01BTkFHRVIob2JqKSAgICAgICAgICAgIChHX1RZ
UEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fTUFO
QUdFUiwgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0dFT0xP
Q0FUSU9OX01BTkFHRVIob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgo
b2JqKSwgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fTUFOQUdFUikpCisjZGVmaW5lIFdFQktJVF9H
RU9MT0NBVElPTl9NQU5BR0VSX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NB
U1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX01BTkFHRVIsIFdlYktpdEdlb2xv
Y2F0aW9uTWFuYWdlckNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX01BTkFH
RVJfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lU
X1RZUEVfR0VPTE9DQVRJT05fTUFOQUdFUikpCisjZGVmaW5lIFdFQktJVF9HRU9MT0NBVElPTl9N
QU5BR0VSX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwg
IFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX01BTkFHRVIsIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdl
ckNsYXNzKSkKKworI2RlZmluZSBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QT1NJVElPTiAgICAg
ICAgICAgKHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9nZXRfdHlwZSgpKQorCit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyICAgICAgICBXZWJLaXRHZW9sb2NhdGlv
bk1hbmFnZXI7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyQ2xhc3Mg
ICBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRH
ZW9sb2NhdGlvbk1hbmFnZXJQcml2YXRlIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlclByaXZhdGU7
Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbiAgICAgICBXZWJLaXRH
ZW9sb2NhdGlvblBvc2l0aW9uOworCitzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlciB7
CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJLaXRH
ZW9sb2NhdGlvbk1hbmFnZXJQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRHZW9s
b2NhdGlvbk1hbmFnZXJDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKKwor
ICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0
X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQp
OworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworfTsKKworV0VCS0lUX0FQ
SSBHVHlwZQord2Via2l0X2dlb2xvY2F0aW9uX21hbmFnZXJfZ2V0X3R5cGUgICAgICAgICAgICAg
ICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZ2Vsb2NhdGlvbl9tYW5hZ2Vy
X3VwZGF0ZV9wb3NpdGlvbiAgICAgICAgICAgKFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciAgKm1h
bmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKTsKKworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfZ2Vsb2NhdGlvbl9tYW5hZ2VyX2ZhaWxlZCAgICAgICAgICAgICAgICAgICAg
KFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciAgKm1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAgICAgICAgICAg
ICAgKmVycm9yX21lc3NhZ2UpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZ2VvbG9j
YXRpb25fbWFuYWdlcl9nZXRfZW5hYmxlX2hpZ2hfYWNjdXJhY3kgKFdlYktpdEdlb2xvY2F0aW9u
TWFuYWdlciAgKm1hbmFnZXIpOworCisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9nZW9sb2Nh
dGlvbl9wb3NpdGlvbl9nZXRfdHlwZSAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9B
UEkgV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbiAqCit3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRp
b25fbmV3ICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSAgICAgICAgICAgICAgICAgICAgIGxh
dGl0dWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgICAgICAgICAgICAgICAgICAgICBsb25naXR1ZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAgICAgICAgICAg
ICAgICAgICAgIGFjY3VyYWN5KTsKKworV0VCS0lUX0FQSSBXZWJLaXRHZW9sb2NhdGlvblBvc2l0
aW9uICoKK3dlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9jb3B5ICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24pOworCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9mcmVlICAgICAgICAgICAgICAgICAgICAo
V2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24pOworCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfdGltZXN0YW1wICAgICAgICAgICAoV2Vi
S2l0R2VvbG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAgICAgICAg
IHRpbWVzdGFtcCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0
aW9uX3NldF9hbHRpdHVkZSAgICAgICAgICAgIChXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uICpw
b3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG91YmxlICAgICAgICAgICAgICAgICAgICAgYWx0aXR1ZGUpOworCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfYWx0aXR1ZGVfYWNjdXJhY3kg
ICAoV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAgICAgICAgICAgICAg
ICAgICAgIGFsdGl0dWRlX2FjY3VyYWN5KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZ2Vv
bG9jYXRpb25fcG9zaXRpb25fc2V0X2hlYWRpbmcgICAgICAgICAgICAgKFdlYktpdEdlb2xvY2F0
aW9uUG9zaXRpb24gKnBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb3VibGUgICAgICAgICAgICAgICAgICAgICBoZWFkaW5nKTsK
KworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X3NwZWVk
ICAgICAgICAgICAgICAgKFdlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUg
ICAgICAgICAgICAgICAgICAgICBzcGVlZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBX
ZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAppbmRleCA4MTM1MWFmM2M1MS4uODJhOGQ4
MjhkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRE
ZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREb3dubG9hZC5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRHZW9sb2NhdGlvbk1hbmFnZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdE5ldHdvcmtQ
cm94eVNldHRpbmdzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZWN1cml0eU1hbmFnZXIu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaD4KQEAgLTIxNCw2
ICsyMTUsOSBAQCB3ZWJraXRfd2ViX2NvbnRleHRfZG93bmxvYWRfdXJpICAgICAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYkNvbnRleHQKIFdFQktJVF9BUEkgV2ViS2l0Q29va2llTWFuYWdlciAq
CiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Nvb2tpZV9tYW5hZ2VyICAgICAgICAgICAgICAgKFdl
YktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsKIAorV0VCS0lUX0FQSSBXZWJL
aXRHZW9sb2NhdGlvbk1hbmFnZXIgKgord2Via2l0X3dlYl9jb250ZXh0X2dldF9nZW9sb2NhdGlv
bl9tYW5hZ2VyICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4
dCk7CisKIFdFQktJVF9BUEkgV2ViS2l0RmF2aWNvbkRhdGFiYXNlICoKIHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZSAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAg
ICAgICAgICAgICAgKmNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApp
bmRleCAwNmQ3NDUwN2Y5ZC4uZWVlMTAxYTM2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rp
b25zLnR4dApAQCAtNDQsNiArNDQsNyBAQCB3ZWJraXRfd2ViX2NvbnRleHRfY2xlYXJfY2FjaGUK
IHdlYmtpdF93ZWJfY29udGV4dF9zZXRfbmV0d29ya19wcm94eV9zZXR0aW5ncwogd2Via2l0X3dl
Yl9jb250ZXh0X2Rvd25sb2FkX3VyaQogd2Via2l0X3dlYl9jb250ZXh0X2dldF9jb29raWVfbWFu
YWdlcgord2Via2l0X3dlYl9jb250ZXh0X2dldF9nZW9sb2NhdGlvbl9tYW5hZ2VyCiB3ZWJraXRf
d2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2UKIHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
ZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNv
bl9kYXRhYmFzZV9kaXJlY3RvcnkKQEAgLTE0OTMsNiArMTQ5NCw0MCBAQCB3ZWJraXRfYXBwbGlj
YXRpb25faW5mb19nZXRfdHlwZQogV0VCS0lUX1RZUEVfQVBQTElDQVRJT05fSU5GTwogPC9TRUNU
SU9OPgogCis8U0VDVElPTj4KKzxGSUxFPldlYktpdEdlb2xvY2F0aW9uTWFuYWdlcjwvRklMRT4K
K1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlcgord2Via2l0X2dlbG9jYXRpb25fbWFuYWdlcl91cGRh
dGVfcG9zaXRpb24KK3dlYmtpdF9nZWxvY2F0aW9uX21hbmFnZXJfZmFpbGVkCit3ZWJraXRfZ2Vv
bG9jYXRpb25fbWFuYWdlcl9nZXRfZW5hYmxlX2hpZ2hfYWNjdXJhY3kKKworPFNVQlNFQ1RJT04g
UG9zaXRpb24+CitXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uCit3ZWJraXRfZ2VvbG9jYXRpb25f
cG9zaXRpb25fbmV3Cit3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fY29weQord2Via2l0X2dl
b2xvY2F0aW9uX3Bvc2l0aW9uX2ZyZWUKK3dlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRf
dGltZXN0YW1wCit3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X2FsdGl0dWRlCit3ZWJr
aXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X2FsdGl0dWRlX2FjY3VyYWN5Cit3ZWJraXRfZ2Vv
bG9jYXRpb25fcG9zaXRpb25fc2V0X2hlYWRpbmcKK3dlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlv
bl9zZXRfc3BlZWQKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdEdlb2xvY2F0aW9uTWFu
YWdlclByaXZhdGUKK3dlYmtpdF9nZW9sb2NhdGlvbl9tYW5hZ2VyX2dldF90eXBlCit3ZWJraXRf
Z2VvbG9jYXRpb25fcG9zaXRpb25fZ2V0X3R5cGUKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitX
ZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJDbGFzcworV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fTUFO
QUdFUgorV0VCS0lUX0dFT0xPQ0FUSU9OX01BTkFHRVIKK1dFQktJVF9JU19HRU9MT0NBVElPTl9N
QU5BR0VSCitXRUJLSVRfR0VPTE9DQVRJT05fTUFOQUdFUl9DTEFTUworV0VCS0lUX0lTX0dFT0xP
Q0FUSU9OX01BTkFHRVJfQ0xBU1MKK1dFQktJVF9HRU9MT0NBVElPTl9NQU5BR0VSX0dFVF9DTEFT
UworV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUE9TSVRJT04KKzwvU0VDVElPTj4KKwogPFNFQ1RJ
T04+CiA8RklMRT5XZWJLaXRXZWJFeHRlbnNpb248L0ZJTEU+CiBXZWJLaXRXZWJFeHRlbnNpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLTQuMC50eXBlcyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC50eXBlcwppbmRleCBjZmVkNjczNTE2My4uYWQ1YjAyNmI2N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50
eXBlcworKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay00LjAudHlwZXMKQEAgLTQwLDMgKzQwLDUgQEAgd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9n
ZXRfdHlwZQogd2Via2l0X29wdGlvbl9tZW51X2dldF90eXBlCiB3ZWJraXRfb3B0aW9uX21lbnVf
aXRlbV9nZXRfdHlwZQogd2Via2l0X2RldmljZV9pbmZvX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRf
dHlwZQord2Via2l0X2dlb2xvY2F0aW9uX21hbmFnZXJfZ2V0X3R5cGUKK3dlYmtpdF9nZW9sb2Nh
dGlvbl9wb3NpdGlvbl9nZXRfdHlwZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRv
Y3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LWRvY3Muc2dtbAppbmRleCBhY2VlYTU0Y2YxMy4uOWQzYTJiZDQ0OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2Nz
LnNnbWwKQEAgLTYyLDYgKzYyLDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0
TmV0d29ya1Byb3h5U2V0dGluZ3MueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dl
YktpdEF1dG9tYXRpb25TZXNzaW9uLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9X
ZWJLaXRBcHBsaWNhdGlvbkluZm8ueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dl
YktpdEdlb2xvY2F0aW9uTWFuYWdlci54bWwiLz4KICAgPC9jaGFwdGVyPgogCiAgIDxjaGFwdGVy
PgpAQCAtMTQ5LDUgKzE1MCwxMCBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hcGktaW5k
ZXgtMi4yNC54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KICAgPC9pbmRleD4KIAor
ICA8aW5kZXggaWQ9ImFwaS1pbmRleC0yLTI2IiByb2xlPSIyLjI2Ij4KKyAgICA8dGl0bGU+SW5k
ZXggb2YgbmV3IHN5bWJvbHMgaW4gMi4yNjwvdGl0bGU+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL2FwaS1pbmRleC0yLjI2LnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRlPgorICA8
L2luZGV4PgorCiAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hbm5vdGF0aW9uLWdsb3NzYXJ5Lnht
bCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRlPgogPC9ib29rPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCAxNDcwYjI3NTM0Ni4uZjNlZGNjZTFlZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC00OSw2ICs0
OSw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbmRDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dEdlb2xvY2F0aW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0SGl0VGVzdFJl
c3VsdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdp
bnNQZXJtaXNzaW9uUmVxdWVzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYwOWNiNGNkMWE2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIu
aApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5M
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaWYgIWRlZmluZWQoX19XRUJLSVRfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9D
T01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d3BlL3dlYmtpdC5oPiBjYW4gYmUgaW5jbHVkZWQg
ZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyX2gK
KyNkZWZpbmUgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyX2gKKworI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUwor
CisjZGVmaW5lIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX01BTkFHRVIgICAgICAgICAgICAod2Vi
a2l0X2dlb2xvY2F0aW9uX21hbmFnZXJfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0dFT0xP
Q0FUSU9OX01BTkFHRVIob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FT
VCgob2JqKSwgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fTUFOQUdFUiwgV2ViS2l0R2VvbG9jYXRp
b25NYW5hZ2VyKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX01BTkFHRVIob2JqKSAg
ICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfR0VP
TE9DQVRJT05fTUFOQUdFUikpCisjZGVmaW5lIFdFQktJVF9HRU9MT0NBVElPTl9NQU5BR0VSX0NM
QVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9U
WVBFX0dFT0xPQ0FUSU9OX01BTkFHRVIsIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlckNsYXNzKSkK
KyNkZWZpbmUgV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX01BTkFHRVJfQ0xBU1Moa2xhc3MpIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fTUFO
QUdFUikpCisjZGVmaW5lIFdFQktJVF9HRU9MT0NBVElPTl9NQU5BR0VSX0dFVF9DTEFTUyhvYmop
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0dFT0xPQ0FU
SU9OX01BTkFHRVIsIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlckNsYXNzKSkKKworI2RlZmluZSBX
RUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QT1NJVElPTiAgICAgICAgICAgKHdlYmtpdF9nZW9sb2Nh
dGlvbl9wb3NpdGlvbl9nZXRfdHlwZSgpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0R2VvbG9j
YXRpb25NYW5hZ2VyICAgICAgICBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXI7Cit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyQ2xhc3MgICBXZWJLaXRHZW9sb2NhdGlvbk1h
bmFnZXJDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJQcml2
YXRlIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlclByaXZhdGU7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0R2VvbG9jYXRpb25Qb3NpdGlvbiAgICAgICBXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uOwor
CitzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlciB7CisgICAgR09iamVjdCBwYXJlbnQ7
CisKKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJQcml2
YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJDbGFzcyB7
CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIHZvaWQgKCpfd2Via2l0X3Jl
c2VydmVkMCkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwor
ICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0
X3Jlc2VydmVkMykgKHZvaWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2dlb2xv
Y2F0aW9uX21hbmFnZXJfZ2V0X3R5cGUgICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lU
X0FQSSB2b2lkCit3ZWJraXRfZ2Vsb2NhdGlvbl9tYW5hZ2VyX3VwZGF0ZV9wb3NpdGlvbiAgICAg
ICAgICAgKFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciAgKm1hbmFnZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEdlb2xvY2F0aW9u
UG9zaXRpb24gKnBvc2l0aW9uKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZ2Vsb2NhdGlv
bl9tYW5hZ2VyX2ZhaWxlZCAgICAgICAgICAgICAgICAgICAgKFdlYktpdEdlb2xvY2F0aW9uTWFu
YWdlciAgKm1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAgICAgICAgICAgICAgKmVycm9yX21lc3NhZ2UpOwor
CitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZ2VvbG9jYXRpb25fbWFuYWdlcl9nZXRfZW5h
YmxlX2hpZ2hfYWNjdXJhY3kgKFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciAgKm1hbmFnZXIpOwor
CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9nZXRfdHlw
ZSAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0R2VvbG9jYXRpb25Q
b3NpdGlvbiAqCit3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fbmV3ICAgICAgICAgICAgICAg
ICAgICAgKGRvdWJsZSAgICAgICAgICAgICAgICAgICAgIGxhdGl0dWRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgICAgICAgICAg
ICAgICAgICAgICBsb25naXR1ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZSAgICAgICAgICAgICAgICAgICAgIGFjY3VyYWN5KTsK
KworV0VCS0lUX0FQSSBXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uICoKK3dlYmtpdF9nZW9sb2Nh
dGlvbl9wb3NpdGlvbl9jb3B5ICAgICAgICAgICAgICAgICAgICAoV2ViS2l0R2VvbG9jYXRpb25Q
b3NpdGlvbiAqcG9zaXRpb24pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9nZW9sb2NhdGlv
bl9wb3NpdGlvbl9mcmVlICAgICAgICAgICAgICAgICAgICAoV2ViS2l0R2VvbG9jYXRpb25Qb3Np
dGlvbiAqcG9zaXRpb24pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9nZW9sb2NhdGlvbl9w
b3NpdGlvbl9zZXRfdGltZXN0YW1wICAgICAgICAgICAoV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlv
biAqcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcCk7CisKK1dFQktJ
VF9BUEkgdm9pZAord2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3NldF9hbHRpdHVkZSAgICAg
ICAgICAgIChXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICAgICAgICAg
ICAgICAgICAgICAgYWx0aXR1ZGUpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9nZW9sb2Nh
dGlvbl9wb3NpdGlvbl9zZXRfYWx0aXR1ZGVfYWNjdXJhY3kgICAoV2ViS2l0R2VvbG9jYXRpb25Q
b3NpdGlvbiAqcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSAgICAgICAgICAgICAgICAgICAgIGFsdGl0dWRlX2FjY3Vy
YWN5KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0
X2hlYWRpbmcgICAgICAgICAgICAgKFdlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgICAgICAgICAgICAgICAgICAgICBoZWFkaW5nKTsKKworV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X3NwZWVkICAgICAgICAgICAgICAgKFdlYktp
dEdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgICAgICAgICAgICAgICAgICAgICBz
cGVlZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBXZWJLaXRHZW9sb2NhdGlvbk1hbmFn
ZXJfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRXZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdl
YkNvbnRleHQuaAppbmRleCAwODFjZDExYTM0Mi4uYTMyNjgwZmE4MzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSA8d3BlL1dlYktpdERlZmluZXMuaD4KICNpbmNsdWRlIDx3cGUv
V2ViS2l0RG93bmxvYWQuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmg+
CisjaW5jbHVkZSA8d3BlL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPHdw
ZS9XZWJLaXROZXR3b3JrUHJveHlTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRTZWN1
cml0eU1hbmFnZXIuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oPgpA
QCAtMjE0LDYgKzIxNSw5IEBAIHdlYmtpdF93ZWJfY29udGV4dF9kb3dubG9hZF91cmkgICAgICAg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dAogV0VCS0lUX0FQSSBXZWJLaXRDb29raWVN
YW5hZ2VyICoKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfY29va2llX21hbmFnZXIgICAgICAgICAg
ICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQpOwogCitXRUJLSVRf
QVBJIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciAqCit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2dl
b2xvY2F0aW9uX21hbmFnZXIgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAg
ICpjb250ZXh0KTsKKwogV0VCS0lUX0FQSSBXZWJLaXRGYXZpY29uRGF0YWJhc2UgKgogd2Via2l0
X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNlICAgICAgICAgICAgIChXZWJLaXRXZWJD
b250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dAppbmRleCAx
OGM5MWM4OWFjYi4uNTY3N2Y1NjJkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQKQEAgLTIyLDYgKzIy
LDcgQEAgd2Via2l0X3dlYl9jb250ZXh0X2NsZWFyX2NhY2hlCiB3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X25ldHdvcmtfcHJveHlfc2V0dGluZ3MKIHdlYmtpdF93ZWJfY29udGV4dF9kb3dubG9hZF91
cmkKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfY29va2llX21hbmFnZXIKK3dlYmtpdF93ZWJfY29u
dGV4dF9nZXRfZ2VvbG9jYXRpb25fbWFuYWdlcgogd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZp
Y29uX2RhdGFiYXNlCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGly
ZWN0b3J5CiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5
CkBAIC0xMzY3LDYgKzEzNjgsNDAgQEAgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X3R5cGUK
IFdFQktJVF9UWVBFX0FQUExJQ0FUSU9OX0lORk8KIDwvU0VDVElPTj4KIAorPFNFQ1RJT04+Cis8
RklMRT5XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXI8L0ZJTEU+CitXZWJLaXRHZW9sb2NhdGlvbk1h
bmFnZXIKK3dlYmtpdF9nZWxvY2F0aW9uX21hbmFnZXJfdXBkYXRlX3Bvc2l0aW9uCit3ZWJraXRf
Z2Vsb2NhdGlvbl9tYW5hZ2VyX2ZhaWxlZAord2Via2l0X2dlb2xvY2F0aW9uX21hbmFnZXJfZ2V0
X2VuYWJsZV9oaWdoX2FjY3VyYWN5CisKKzxTVUJTRUNUSU9OIFBvc2l0aW9uPgorV2ViS2l0R2Vv
bG9jYXRpb25Qb3NpdGlvbgord2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX25ldword2Via2l0
X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2NvcHkKK3dlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9m
cmVlCit3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X3RpbWVzdGFtcAord2Via2l0X2dl
b2xvY2F0aW9uX3Bvc2l0aW9uX3NldF9hbHRpdHVkZQord2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0
aW9uX3NldF9hbHRpdHVkZV9hY2N1cmFjeQord2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3Nl
dF9oZWFkaW5nCit3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X3NwZWVkCisKKzxTVUJT
RUNUSU9OIFByaXZhdGU+CitXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJQcml2YXRlCit3ZWJraXRf
Z2VvbG9jYXRpb25fbWFuYWdlcl9nZXRfdHlwZQord2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9u
X2dldF90eXBlCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0R2VvbG9jYXRpb25NYW5h
Z2VyQ2xhc3MKK1dFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX01BTkFHRVIKK1dFQktJVF9HRU9MT0NB
VElPTl9NQU5BR0VSCitXRUJLSVRfSVNfR0VPTE9DQVRJT05fTUFOQUdFUgorV0VCS0lUX0dFT0xP
Q0FUSU9OX01BTkFHRVJfQ0xBU1MKK1dFQktJVF9JU19HRU9MT0NBVElPTl9NQU5BR0VSX0NMQVNT
CitXRUJLSVRfR0VPTE9DQVRJT05fTUFOQUdFUl9HRVRfQ0xBU1MKK1dFQktJVF9UWVBFX0dFT0xP
Q0FUSU9OX1BPU0lUSU9OCis8L1NFQ1RJT04+CisKIDxTRUNUSU9OPgogPEZJTEU+V2ViS2l0VVJJ
VXRpbGl0aWVzPC9GSUxFPgogd2Via2l0X3VyaV9mb3JfZGlzcGxheQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS1kb2NzLnNnbWwgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLWRvY3Muc2dtbAppbmRleCBmNmViMzhk
YWE5My4uYzdiMzZkMGYyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvZG9jcy93cGUtZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvZG9jcy93cGUtZG9jcy5zZ21sCkBAIC01Niw2ICs1Niw3IEBACiAgICAgPHhpOmluY2x1
ZGUgaHJlZj0ieG1sL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLnhtbCIvPgogICAgIDx4aTppbmNs
dWRlIGhyZWY9InhtbC9XZWJLaXRBcHBsaWNhdGlvbkluZm8ueG1sIi8+CiAgICAgPHhpOmluY2x1
ZGUgaHJlZj0ieG1sL1dlYktpdENvbG9yLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9Inht
bC9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIueG1sIi8+CiAgIDwvY2hhcHRlcj4KIAogICA8Y2hh
cHRlcj4KQEAgLTgyLDUgKzgzLDE1IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2FwaS1p
bmRleC0yLjIyLnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRlPgogICA8L2luZGV4Pgog
CisgIDxpbmRleCBpZD0iYXBpLWluZGV4LTItMjQiIHJvbGU9IjIuMjQiPgorICAgIDx0aXRsZT5J
bmRleCBvZiBuZXcgc3ltYm9scyBpbiAyLjI0PC90aXRsZT4KKyAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvYXBpLWluZGV4LTIuMjQueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+Cisg
IDwvaW5kZXg+CisKKyAgPGluZGV4IGlkPSJhcGktaW5kZXgtMi0yNiIgcm9sZT0iMi4yNiI+Cisg
ICAgPHRpdGxlPkluZGV4IG9mIG5ldyBzeW1ib2xzIGluIDIuMjY8L3RpdGxlPgorICAgIDx4aTpp
bmNsdWRlIGhyZWY9InhtbC9hcGktaW5kZXgtMi42Mi54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6
aW5jbHVkZT4KKyAgPC9pbmRleD4KKwogICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYW5ub3RhdGlv
bi1nbG9zc2FyeS54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KIDwvYm9vaz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCmluZGV4IGVjMmE2MWRiOWEwLi40
ODUyM2I0N2QxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93
ZWJraXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCkBA
IC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8d3BlL1dlYktpdEZhdmljb25EYXRhYmFzZS5oPgog
I2luY2x1ZGUgPHdwZS9XZWJLaXRGaW5kQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPHdwZS9XZWJL
aXRGb3JtU3VibWlzc2lvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0R2VvbG9jYXRp
b25NYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0SGl0VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUg
PHdwZS9XZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Lmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFr
ZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IDhhMGNkM2JlMmFiLi5mNmNmZWI2MjJiYSAxMDA2NDQK
LS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09w
dGlvbnNHVEsuY21ha2UKQEAgLTgwLDYgKzgwLDcgQEAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIgIldoZXRoZXIgdG8gYnVpbGQgV2ViS2l0UGx1Z2luUHIK
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9RVUFSVFpfVEFSR0VUICJXaGV0aGVyIHRvIGVu
YWJsZSBzdXBwb3J0IGZvciB0aGUgUXVhcnR6IHdpbmRvd2luZyB0YXJnZXQuIiBQVUJMSUMgJHtH
VEszX1NVUFBPUlRTX1FVQVJUWn0pCiBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfWDExX1RB
UkdFVCAiV2hldGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIFgxMSB3aW5kb3dpbmcgdGFy
Z2V0LiIgUFVCTElDICR7R1RLM19TVVBQT1JUU19YMTF9KQogV0VCS0lUX09QVElPTl9ERUZJTkUo
RU5BQkxFX1dBWUxBTkRfVEFSR0VUICJXaGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUg
V2F5bGFuZCB3aW5kb3dpbmcgdGFyZ2V0LiIgUFVCTElDICR7R1RLM19TVVBQT1JUU19XQVlMQU5E
fSkKK1dFQktJVF9PUFRJT05fREVGSU5FKFVTRV9HRU9DTFVFICJXaGV0aGVyIHRvIGVuYWJsZSBk
ZWZhdWx0IGdlb2xvY2F0aW9uIGltcGxlbWVudGF0aW9uIHVzaW5nIEdlb0NsdWUyIiBQVUJMSUMg
T04pCiBXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfTElCTk9USUZZICJXaGV0aGVyIHRvIGVuYWJs
ZSB0aGUgZGVmYXVsdCB3ZWIgbm90aWZpY2F0aW9uIGltcGxlbWVudGF0aW9uLiIgUFVCTElDIE9O
KQogV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX0xJQkhZUEhFTiAiV2hldGhlciB0byBlbmFibGUg
dGhlIGRlZmF1bHQgYXV0b21hdGljIGh5cGhlbmF0aW9uIGltcGxlbWVudGF0aW9uLiIgUFVCTElD
IE9OKQogV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX0xJQlNFQ1JFVCAiV2hldGhlciB0byBlbmFi
bGUgdGhlIHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzdG9yYWdlIHVzaW5nIGxpYnNlY3JldC4iIFBV
QkxJQyBPTikKQEAgLTE0MCw3ICsxNDEsNiBAQCBlbmRpZiAoKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyBQVUJMSUMgT0ZGKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FTWU5DX1NDUk9MTElORyBQ
UklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RSQUdf
U1VQUE9SVCBQVUJMSUMgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfR0VPTE9DQVRJT04gUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0lDT05EQVRBQkFTRSBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfU1BFTExDSEVDSyBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVE9VQ0hfRVZFTlRTIFBVQkxJQyBPTikKQEAgLTIyMiwx
MCArMjIyLDEwIEBAIGlmIChVU0VfTElCU0VDUkVUKQogICAgIGVuZGlmICgpCiBlbmRpZiAoKQog
Ci1pZiAoRU5BQkxFX0dFT0xPQ0FUSU9OKQoraWYgKFVTRV9HRU9DTFVFKQogICAgIGZpbmRfcGFj
a2FnZShHZW9DbHVlMiAyLjEuNSkKICAgICBpZiAoTk9UIEdFT0NMVUUyX0ZPVU5EKQotICAgICAg
ICBtZXNzYWdlKEZBVEFMX0VSUk9SICJHZW9jbHVlIGlzIG5lZWRlZCBmb3IgRU5BQkxFX0dFT0xP
Q0FUSU9OLiIpCisgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkdlb2NsdWUgaXMgbmVlZGVk
IGZvciBVU0VfR0VPQ0xVRS4iKQogICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BF
LmNtYWtlCmluZGV4IGQwZjY0M2UyZGU1Li5jMWYxMjhiMDdhNSAxMDA2NDQKLS0tIGEvU291cmNl
L2NtYWtlL09wdGlvbnNXUEUuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21h
a2UKQEAgLTQ4LDcgKzQ4LDYgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX1hTTFQgUFVCTElDIE9OKQogIyBDaGFuZ2luZyB0aGVzZSBvcHRpb25zIGlzIGNvbXBsZXRl
bHkgdW5zdXBwb3J0ZWQuCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
QVNZTkNfU0NST0xMSU5HIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfQ09OVEVOVF9FWFRFTlNJT05TIFBSSVZBVEUgT04pCi1XRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfR0VPTE9DQVRJT04gUFJJVkFURSBPRkYpCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUhUTUwgUFJJVkFURSBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJ
IFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05P
VElGSUNBVElPTlMgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZDk1NWY0MGFlZjcuLmNkMGIyYjgyMzM1IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTktMDMtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdW1dQRV0gQWRkIEFQSSB0byBwcm92aWRlIGdlb2xvY2F0aW9uIGluZm9y
bWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTU5NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSBuZXcgdGVzdCB0byBjaGVjayB0aGUgbmV3IEFQSS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcDogQWRkZWQu
CisgICAgICAgICh0ZXN0R2VvbG9jYXRpb25NYW5hZ2VyQ3VycmVudFBvc2l0aW9uKToKKyAgICAg
ICAgKHRlc3RHZW9sb2NhdGlvbk1hbmFnZXJXYXRjaFBvc2l0aW9uKToKKyAgICAgICAgKGJlZm9y
ZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld0dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKTogU3RvcCB1c2luZyBFTkFCTEUoR0VPTE9DQVRJT04p
IGNvbmRpdGlvbmFscyBmb3IgZ2VvbG9jYXRpb24gdGVzdHMuCisgICAgICAgIChiZWZvcmVBbGwp
OiBEaXR0by4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQ6CisK
IDIwMTktMDMtMTQgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAK
ICAgICAgICAgW1dpbl1bTWluQnJvd3Nlcl1bV0syXSBJbXBsZW1lbnQgY3JlYXRlTmV3UGFnZSBv
ZiBXS1BhZ2VVSUNsaWVudCB0byBvcGVuIGEgbmV3IHdpbmRvdwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RHZW9sb2NhdGlvbk1hbmFnZXIuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RHZW9sb2NhdGlvbk1h
bmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45ODFiNWVm
YTRiNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtMCwwICsxLDMzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlRlc3RNYWluLmgiCisKKyNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgorI2luY2x1ZGUg
PHd0Zi9XYWxsVGltZS5oPgorCitjbGFzcyBHZW9sb2NhdGlvblRlc3Q6IHB1YmxpYyBXZWJWaWV3
VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShHZW9sb2NhdGlvblRl
c3QpOworCisgICAgc3RydWN0IFBvc2l0aW9uIHsKKyAgICAgICAgZG91YmxlIHRpbWVzdGFtcCB7
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkgfTsKKyAgICAgICAgZG91
YmxlIGxhdGl0dWRlIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9
OworICAgICAgICBkb3VibGUgbG9uZ2l0dWRlIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKSB9OworICAgICAgICBkb3VibGUgYWNjdXJhY3kgeyBzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpIH07CisKKyAgICAgICAgT3B0aW9uYWw8ZG91Ymxl
PiBhbHRpdHVkZTsKKyAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5Owor
ICAgICAgICBPcHRpb25hbDxkb3VibGU+IGhlYWRpbmc7CisgICAgICAgIE9wdGlvbmFsPGRvdWJs
ZT4gc3BlZWQ7CisgICAgfTsKKworICAgIHN0YXRpYyBnYm9vbGVhbiBzdGFydENhbGxiYWNrKFdl
YktpdEdlb2xvY2F0aW9uTWFuYWdlciogbWFuYWdlciwgR2VvbG9jYXRpb25UZXN0KiB0ZXN0KQor
ICAgIHsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX21hbmFnZXIgPT0gbWFuYWdlcik7
CisgICAgICAgIHRlc3QtPnN0YXJ0KCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKwor
ICAgIHN0YXRpYyB2b2lkIHN0b3BDYWxsYmFjayhXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1h
bmFnZXIsIEdlb2xvY2F0aW9uVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUodGVzdC0+bV9tYW5hZ2VyID09IG1hbmFnZXIpOworICAgICAgICB0ZXN0LT5zdG9wKCk7Cisg
ICAgfQorCisgICAgc3RhdGljIGdib29sZWFuIHBlcm1pc3Npb25SZXF1ZXN0ZWQoV2ViS2l0V2Vi
VmlldyosIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0LCBHZW9sb2NhdGlvblRlc3Qq
IHRlc3QpCisgICAgeworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19QRVJNSVNTSU9O
X1JFUVVFU1QocmVxdWVzdCkpOworICAgICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlcXVlc3QpKTsKKworICAgICAgICBpZiAoV0VCS0lU
X0lTX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkgeworICAgICAgICAg
ICAgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9hbGxvdyhyZXF1ZXN0KTsKKyAgICAgICAgICAg
IHJldHVybiBUUlVFOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0K
KworICAgIEdlb2xvY2F0aW9uVGVzdCgpCisgICAgICAgIDogbV9tYW5hZ2VyKHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfZ2VvbG9jYXRpb25fbWFuYWdlcihtX3dlYkNvbnRleHQuZ2V0KCkpKQorICAg
IHsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfR0VPTE9DQVRJT05fTUFOQUdFUiht
X21hbmFnZXIpKTsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHX09CSkVDVChtX21hbmFnZXIpKTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX21hbmFn
ZXIsICJzdGFydCIsIEdfQ0FMTEJBQ0soc3RhcnRDYWxsYmFjayksIHRoaXMpOworICAgICAgICBn
X3NpZ25hbF9jb25uZWN0KG1fbWFuYWdlciwgInN0b3AiLCBHX0NBTExCQUNLKHN0b3BDYWxsYmFj
ayksIHRoaXMpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgInBlcm1pc3Np
b24tcmVxdWVzdCIsIEdfQ0FMTEJBQ0socGVybWlzc2lvblJlcXVlc3RlZCksIHRoaXMpOworICAg
IH0KKworICAgIH5HZW9sb2NhdGlvblRlc3QoKQorICAgIHsKKyAgICAgICAgaWYgKG1fY2hlY2tQ
b3NpdGlvbikKKyAgICAgICAgICAgIHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9mcmVlKG1f
Y2hlY2tQb3NpdGlvbik7CisKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9t
YXRjaGVkKG1fbWFuYWdlciwgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgbnVsbHB0ciwgbnVs
bHB0ciwgdGhpcyk7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hl
ZChtX3dlYlZpZXcsIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIs
IHRoaXMpOworICAgIH0KKworICAgIHZvaWQgc3RhcnQoKQorICAgIHsKKyAgICAgICAgZ19hc3Nl
cnRfZmFsc2UobV91cGRhdGluZyk7CisgICAgICAgIG1fdXBkYXRpbmcgPSB0cnVlOworCisgICAg
ICAgIGlmIChtX2Vycm9yTWVzc2FnZSkgeworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2UobV9j
aGVja1Bvc2l0aW9uKTsKKyAgICAgICAgICAgIHdlYmtpdF9nZWxvY2F0aW9uX21hbmFnZXJfZmFp
bGVkKG1fbWFuYWdlciwgbV9lcnJvck1lc3NhZ2UuZ2V0KCkpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKG1fY2hlY2tQb3NpdGlvbikgeworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2UobV9l
cnJvck1lc3NhZ2UuZ2V0KCkpOworICAgICAgICAgICAgd2Via2l0X2dlbG9jYXRpb25fbWFuYWdl
cl91cGRhdGVfcG9zaXRpb24obV9tYW5hZ2VyLCBtX2NoZWNrUG9zaXRpb24pOworICAgICAgICB9
CisKKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wKTsKKyAgICB9CisKKyAgICB2
b2lkIHN0b3AoKQorICAgIHsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX3VwZGF0aW5nKTsKKyAg
ICAgICAgbV91cGRhdGluZyA9IGZhbHNlOworICAgICAgICBpZiAobV93YXRjaGluZykKKyAgICAg
ICAgICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7CisgICAgfQorCisgICAgUG9zaXRp
b24gbGFzdFBvc2l0aW9uKCkKKyAgICB7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBl
cnJvcjsKKyAgICAgICAgYXV0byogamF2YXNjcmlwdFJlc3VsdCA9IHJ1bkphdmFTY3JpcHRBbmRX
YWl0VW50aWxGaW5pc2hlZCgicG9zaXRpb24iLCAmZXJyb3Iub3V0UHRyKCkpOworICAgICAgICBn
X2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgICAgICBnX2Fzc2VydF9ub19l
cnJvcihlcnJvci5nZXQoKSk7CisKKyAgICAgICAgYXV0byoganNQb3NpdGlvbiA9IHdlYmtpdF9q
YXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgICAg
IGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX2lzX29iamVjdChqc1Bvc2l0aW9uKSk7CisgICAgICAg
IFBvc2l0aW9uIHJlc3VsdDsKKyAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gdmFsdWUgPSBhZG9w
dEdSZWYoanNjX3ZhbHVlX29iamVjdF9nZXRfcHJvcGVydHkoanNQb3NpdGlvbiwgImxhdGl0dWRl
IikpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9pc19udW1iZXIodmFsdWUuZ2V0
KCkpKTsKKyAgICAgICAgcmVzdWx0LmxhdGl0dWRlID0ganNjX3ZhbHVlX3RvX2RvdWJsZSh2YWx1
ZS5nZXQoKSk7CisgICAgICAgIHZhbHVlID0gYWRvcHRHUmVmKGpzY192YWx1ZV9vYmplY3RfZ2V0
X3Byb3BlcnR5KGpzUG9zaXRpb24sICJsb25naXR1ZGUiKSk7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUoanNjX3ZhbHVlX2lzX251bWJlcih2YWx1ZS5nZXQoKSkpOworICAgICAgICByZXN1bHQubG9u
Z2l0dWRlID0ganNjX3ZhbHVlX3RvX2RvdWJsZSh2YWx1ZS5nZXQoKSk7CisgICAgICAgIHZhbHVl
ID0gYWRvcHRHUmVmKGpzY192YWx1ZV9vYmplY3RfZ2V0X3Byb3BlcnR5KGpzUG9zaXRpb24sICJh
Y2N1cmFjeSIpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfbnVtYmVyKHZh
bHVlLmdldCgpKSk7CisgICAgICAgIHJlc3VsdC5hY2N1cmFjeSA9IGpzY192YWx1ZV90b19kb3Vi
bGUodmFsdWUuZ2V0KCkpOworICAgICAgICB2YWx1ZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2Jq
ZWN0X2dldF9wcm9wZXJ0eShqc1Bvc2l0aW9uLCAiYWx0aXR1ZGUiKSk7CisgICAgICAgIGlmICgh
anNjX3ZhbHVlX2lzX251bGwodmFsdWUuZ2V0KCkpKSB7CisgICAgICAgICAgICBnX2Fzc2VydF90
cnVlKGpzY192YWx1ZV9pc19udW1iZXIodmFsdWUuZ2V0KCkpKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5hbHRpdHVkZSA9IGpzY192YWx1ZV90b19kb3VibGUodmFsdWUuZ2V0KCkpOworICAgICAgICB9
CisgICAgICAgIHZhbHVlID0gYWRvcHRHUmVmKGpzY192YWx1ZV9vYmplY3RfZ2V0X3Byb3BlcnR5
KGpzUG9zaXRpb24sICJhbHRpdHVkZUFjY3VyYWN5IikpOworICAgICAgICBpZiAoIWpzY192YWx1
ZV9pc19udWxsKHZhbHVlLmdldCgpKSkgeworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2Nf
dmFsdWVfaXNfbnVtYmVyKHZhbHVlLmdldCgpKSk7CisgICAgICAgICAgICByZXN1bHQuYWx0aXR1
ZGVBY2N1cmFjeSA9IGpzY192YWx1ZV90b19kb3VibGUodmFsdWUuZ2V0KCkpOworICAgICAgICB9
CisgICAgICAgIHZhbHVlID0gYWRvcHRHUmVmKGpzY192YWx1ZV9vYmplY3RfZ2V0X3Byb3BlcnR5
KGpzUG9zaXRpb24sICJoZWFkaW5nIikpOworICAgICAgICBpZiAoIWpzY192YWx1ZV9pc19udWxs
KHZhbHVlLmdldCgpKSkgeworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNf
bnVtYmVyKHZhbHVlLmdldCgpKSk7CisgICAgICAgICAgICByZXN1bHQuaGVhZGluZyA9IGpzY192
YWx1ZV90b19kb3VibGUodmFsdWUuZ2V0KCkpOworICAgICAgICB9CisgICAgICAgIHZhbHVlID0g
YWRvcHRHUmVmKGpzY192YWx1ZV9vYmplY3RfZ2V0X3Byb3BlcnR5KGpzUG9zaXRpb24sICJzcGVl
ZCIpKTsKKyAgICAgICAgaWYgKCFqc2NfdmFsdWVfaXNfbnVsbCh2YWx1ZS5nZXQoKSkpIHsKKyAg
ICAgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX2lzX251bWJlcih2YWx1ZS5nZXQoKSkp
OworICAgICAgICAgICAgcmVzdWx0LnNwZWVkID0ganNjX3ZhbHVlX3RvX2RvdWJsZSh2YWx1ZS5n
ZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgdmFsdWUgPSBhZG9wdEdSZWYoanNjX3ZhbHVlX29i
amVjdF9nZXRfcHJvcGVydHkoanNQb3NpdGlvbiwgInRpbWVzdGFtcCIpKTsKKyAgICAgICAgZ19h
c3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfbnVtYmVyKHZhbHVlLmdldCgpKSk7CisgICAgICAgIHJl
c3VsdC50aW1lc3RhbXAgPSBqc2NfdmFsdWVfdG9fZG91YmxlKHZhbHVlLmdldCgpKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBQb3NpdGlvbiBjaGVja0N1cnJlbnRQb3Np
dGlvbihXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbiwgYm9vbCBlbmFibGVIaWdo
QWNjdXJhY3kgPSBmYWxzZSkKKyAgICB7CisgICAgICAgIGdfY2xlYXJfcG9pbnRlcigmbV9jaGVj
a1Bvc2l0aW9uLCB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fZnJlZSk7CisgICAgICAgIG1f
Y2hlY2tQb3NpdGlvbiA9IHBvc2l0aW9uOworCisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGdl
dEN1cnJlbnRQb3NpdGlvbltdID0KKyAgICAgICAgICAgICJ2YXIgcG9zaXRpb24gPSBudWxsO1xu
IgorICAgICAgICAgICAgIm9wdGlvbnMgPSB7IGVuYWJsZUhpZ2hBY2N1cmFjeTogJXMgfVxuIgor
ICAgICAgICAgICAgIm5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVu
Y3Rpb24ocCkge1xuIgorICAgICAgICAgICAgIiAgcG9zaXRpb24gPSB7IH07XG4iCisgICAgICAg
ICAgICAiICBwb3NpdGlvbi5sYXRpdHVkZSA9IHAuY29vcmRzLmxhdGl0dWRlO1xuIgorICAgICAg
ICAgICAgIiAgcG9zaXRpb24ubG9uZ2l0dWRlID0gcC5jb29yZHMubG9uZ2l0dWRlO1xuIgorICAg
ICAgICAgICAgIiAgcG9zaXRpb24uYWNjdXJhY3kgPSBwLmNvb3Jkcy5hY2N1cmFjeTtcbiIKKyAg
ICAgICAgICAgICIgIHBvc2l0aW9uLmFsdGl0dWRlID0gcC5jb29yZHMuYWx0aXR1ZGU7XG4iCisg
ICAgICAgICAgICAiICBwb3NpdGlvbi5hbHRpdHVkZUFjY3VyYWN5ID0gcC5jb29yZHMuYWx0aXR1
ZGVBY2N1cmFjeTtcbiIKKyAgICAgICAgICAgICIgIHBvc2l0aW9uLmhlYWRpbmcgPSBwLmNvb3Jk
cy5oZWFkaW5nO1xuIgorICAgICAgICAgICAgIiAgcG9zaXRpb24uc3BlZWQgPSBwLmNvb3Jkcy5z
cGVlZDtcbiIKKyAgICAgICAgICAgICIgIHBvc2l0aW9uLnRpbWVzdGFtcCA9IHAudGltZXN0YW1w
O1xuIgorICAgICAgICAgICAgIn0sIHVuZGVmaW5lZCwgb3B0aW9ucyk7IjsKKyAgICAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBzY3JpcHQoZ19zdHJkdXBfcHJpbnRmKGdldEN1cnJlbnRQb3NpdGlvbiwg
ZW5hYmxlSGlnaEFjY3VyYWN5ID8gInRydWUiIDogImZhbHNlIikpOworICAgICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxG
aW5pc2hlZChzY3JpcHQuZ2V0KCksICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIGdfYXNzZXJ0
X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxv
b3ApOworICAgICAgICBnX2NsZWFyX3BvaW50ZXIoJm1fY2hlY2tQb3NpdGlvbiwgd2Via2l0X2dl
b2xvY2F0aW9uX3Bvc2l0aW9uX2ZyZWUpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9n
ZW9sb2NhdGlvbl9tYW5hZ2VyX2dldF9lbmFibGVfaGlnaF9hY2N1cmFjeShtX21hbmFnZXIpID09
IGVuYWJsZUhpZ2hBY2N1cmFjeSk7CisKKyAgICAgICAgcmV0dXJuIGxhc3RQb3NpdGlvbigpOwor
ICAgIH0KKworICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2hlY2tGYWlsZWRUb0RldGVybWluZVBvc2l0
aW9uKGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKKyAgICB7CisgICAgICAgIG1fZXJyb3JNZXNz
YWdlLnJlc2V0KGdfc3RyZHVwKGVycm9yTWVzc2FnZSkpOworICAgICAgICBzdGF0aWMgY29uc3Qg
Y2hhciBnZXRDdXJyZW50UG9zaXRpb25bXSA9CisgICAgICAgICAgICAidmFyIGVycm9yO1xuIgor
ICAgICAgICAgICAgIm5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oXG4i
CisgICAgICAgICAgICAiICBmdW5jdGlvbihwKSB7IGVycm9yID0gbnVsbDsgfSxcbiIKKyAgICAg
ICAgICAgICIgIGZ1bmN0aW9uKGUpIHsgZXJyb3IgPSBlLm1lc3NhZ2UudG9TdHJpbmcoKTsgfVxu
IgorICAgICAgICAgICAgIik7IjsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OworICAgICAgICBhdXRvKiBqYXZhc2NyaXB0UmVzdWx0ID0gcnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKGdldEN1cnJlbnRQb3NpdGlvbiwgJmVycm9yLm91dFB0cigpKTsKKyAgICAg
ICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgICAgICBnX21haW5fbG9vcF9y
dW4obV9tYWluTG9vcCk7CisgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gbnVsbHB0cjsKKworICAg
ICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gcnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVk
KCJlcnJvciIsICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoamF2
YXNjcmlwdFJlc3VsdCk7CisgICAgICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsK
KyAgICAgICAgYXV0byoganNFcnJvck1lc3NhZ2UgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRf
Z2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpz
Y192YWx1ZV9pc19zdHJpbmcoanNFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgcmV0dXJuIEdVbmlx
dWVQdHI8Y2hhcj4oanNjX3ZhbHVlX3RvX3N0cmluZyhqc0Vycm9yTWVzc2FnZSkpOworICAgIH0K
KworICAgIHZvaWQgc3RhcnRXYXRjaCgpCisgICAgeworICAgICAgICBnX2NsZWFyX3BvaW50ZXIo
Jm1fY2hlY2tQb3NpdGlvbiwgd2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2ZyZWUpOworICAg
ICAgICBtX2Vycm9yTWVzc2FnZSA9IG51bGxwdHI7CisKKyAgICAgICAgbV93YXRjaGluZyA9IHRy
dWU7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIHdhdGNoUG9zaXRpb25bXSA9CisgICAgICAg
ICAgICAidmFyIHBvc2l0aW9uID0gbnVsbDtcbiIKKyAgICAgICAgICAgICJ2YXIgd2F0Y2hJRCA9
IG5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKGZ1bmN0aW9uKHApIHtcbiIKKyAg
ICAgICAgICAgICIgIHBvc2l0aW9uID0geyB9O1xuIgorICAgICAgICAgICAgIiAgcG9zaXRpb24u
bGF0aXR1ZGUgPSBwLmNvb3Jkcy5sYXRpdHVkZTtcbiIKKyAgICAgICAgICAgICIgIHBvc2l0aW9u
LmxvbmdpdHVkZSA9IHAuY29vcmRzLmxvbmdpdHVkZTtcbiIKKyAgICAgICAgICAgICIgIHBvc2l0
aW9uLmFjY3VyYWN5ID0gcC5jb29yZHMuYWNjdXJhY3k7XG4iCisgICAgICAgICAgICAiICBwb3Np
dGlvbi5hbHRpdHVkZSA9IHAuY29vcmRzLmFsdGl0dWRlO1xuIgorICAgICAgICAgICAgIiAgcG9z
aXRpb24uYWx0aXR1ZGVBY2N1cmFjeSA9IHAuY29vcmRzLmFsdGl0dWRlQWNjdXJhY3k7XG4iCisg
ICAgICAgICAgICAiICBwb3NpdGlvbi5oZWFkaW5nID0gcC5jb29yZHMuaGVhZGluZztcbiIKKyAg
ICAgICAgICAgICIgIHBvc2l0aW9uLnNwZWVkID0gcC5jb29yZHMuc3BlZWQ7XG4iCisgICAgICAg
ICAgICAiICBwb3NpdGlvbi50aW1lc3RhbXAgPSBwLnRpbWVzdGFtcDtcbiIKKyAgICAgICAgICAg
ICJ9KTsiOworICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIGF1
dG8qIGphdmFzY3JpcHRSZXN1bHQgPSBydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQo
d2F0Y2hQb3NpdGlvbiwgJmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVs
bChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0
KCkpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgfQorCisgICAg
dm9pZCBzdG9wV2F0Y2goKQorICAgIHsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVy
cm9yOworICAgICAgICBydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIm5hdmlnYXRv
ci5nZW9sb2NhdGlvbi5jbGVhcldhdGNoKHdhdGNoSUQpIiwgJmVycm9yLm91dFB0cigpKTsKKyAg
ICAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgICAgICBnX21haW5fbG9v
cF9ydW4obV9tYWluTG9vcCk7CisgICAgICAgIG1fd2F0Y2hpbmcgPSBmYWxzZTsKKyAgICB9CisK
KyAgICBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1fbWFuYWdlcjsKKyAgICBib29sIG1fdXBk
YXRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV93YXRjaGluZyB7IGZhbHNlIH07CisgICAgV2Vi
S2l0R2VvbG9jYXRpb25Qb3NpdGlvbiogbV9jaGVja1Bvc2l0aW9uIHsgbnVsbHB0ciB9OworICAg
IEdVbmlxdWVQdHI8Y2hhcj4gbV9lcnJvck1lc3NhZ2U7Cit9OworCitzdGF0aWMgdm9pZCB0ZXN0
R2VvbG9jYXRpb25NYW5hZ2VyQ3VycmVudFBvc2l0aW9uKEdlb2xvY2F0aW9uVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3coKTsKKyAgICB0ZXN0LT5s
b2FkSHRtbCgiPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4iLCAiaHR0cHM6Ly9mb28uY29tL2Jh
ciIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgV2ViS2l0R2Vv
bG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24gPSB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25f
bmV3KDM3LjE3NjA3ODMsIC0zLjU5MDMzLCAxNyk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+
bV91cGRhdGluZyk7CisgICAgYXV0byByZXN1bHQgPSB0ZXN0LT5jaGVja0N1cnJlbnRQb3NpdGlv
bihwb3NpdGlvbik7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV91cGRhdGluZyk7CisgICAg
Z19hc3NlcnRfY21wZmxvYXQocmVzdWx0LmxhdGl0dWRlLCA9PSwgMzcuMTc2MDc4Myk7CisgICAg
Z19hc3NlcnRfY21wZmxvYXQocmVzdWx0LmxvbmdpdHVkZSwgPT0sIC0zLjU5MDMzKTsKKyAgICBn
X2Fzc2VydF9jbXBmbG9hdChyZXN1bHQuYWNjdXJhY3ksID09LCAxNyk7CisgICAgZ19hc3NlcnRf
ZmFsc2UocmVzdWx0LmFsdGl0dWRlKTsKKyAgICBnX2Fzc2VydF9mYWxzZShyZXN1bHQuYWx0aXR1
ZGVBY2N1cmFjeSk7CisgICAgZ19hc3NlcnRfZmFsc2UocmVzdWx0LmhlYWRpbmcpOworICAgIGdf
YXNzZXJ0X2ZhbHNlKHJlc3VsdC5zcGVlZCk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQocmVzdWx0
LnRpbWVzdGFtcCwgPiwgMCk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQocmVzdWx0LnRpbWVzdGFt
cCAvIDEwMDAuLCA8LCBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgp
KTsKKworICAgIHBvc2l0aW9uID0gd2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX25ldygyNy45
ODYwNjUsIDg2LjkyMjYyMywgMCk7CisgICAgYXV0byB0aW1lc3RhbXAgPSBXYWxsVGltZTo6bm93
KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsKKyAgICB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25f
c2V0X3RpbWVzdGFtcChwb3NpdGlvbiwgdGltZXN0YW1wLnZhbHVlKCkpOworICAgIHdlYmtpdF9n
ZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfYWx0aXR1ZGUocG9zaXRpb24sIDg0OTUpOworICAgIHdl
YmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfYWx0aXR1ZGVfYWNjdXJhY3kocG9zaXRpb24s
IDApOworICAgIHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfaGVhZGluZyhwb3NpdGlv
biwgMTAwLjU1KTsKKyAgICB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X3NwZWVkKHBv
c2l0aW9uLCAwLjA1KTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5tX3VwZGF0aW5nKTsKKyAg
ICByZXN1bHQgPSB0ZXN0LT5jaGVja0N1cnJlbnRQb3NpdGlvbihwb3NpdGlvbiwgdHJ1ZSk7Cisg
ICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV91cGRhdGluZyk7CisgICAgZ19hc3NlcnRfY21wZmxv
YXQocmVzdWx0LmxhdGl0dWRlLCA9PSwgMjcuOTg2MDY1KTsKKyAgICBnX2Fzc2VydF9jbXBmbG9h
dChyZXN1bHQubG9uZ2l0dWRlLCA9PSwgODYuOTIyNjIzKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9h
dChyZXN1bHQuYWNjdXJhY3ksID09LCAwKTsKKyAgICBnX2Fzc2VydF90cnVlKHJlc3VsdC5hbHRp
dHVkZSk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQocmVzdWx0LmFsdGl0dWRlLnZhbHVlKCksID09
LCA4NDk1KTsKKyAgICBnX2Fzc2VydF90cnVlKHJlc3VsdC5hbHRpdHVkZUFjY3VyYWN5KTsKKyAg
ICBnX2Fzc2VydF9jbXBmbG9hdChyZXN1bHQuYWx0aXR1ZGVBY2N1cmFjeS52YWx1ZSgpLCA9PSwg
MCk7CisgICAgZ19hc3NlcnRfdHJ1ZShyZXN1bHQuaGVhZGluZyk7CisgICAgZ19hc3NlcnRfY21w
ZmxvYXQocmVzdWx0LmhlYWRpbmcudmFsdWUoKSwgPT0sIDEwMC41NSk7CisgICAgZ19hc3NlcnRf
dHJ1ZShyZXN1bHQuc3BlZWQpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJlc3VsdC5zcGVlZC52
YWx1ZSgpLCA9PSwgMC4wNSk7CisgICAgZ19hc3NlcnRfY21wZmxvYXRfd2l0aF9lcHNpbG9uKHJl
c3VsdC50aW1lc3RhbXAgLyAxMDAwLiwgdGltZXN0YW1wLnZhbHVlKCksIDEpOworCisgICAgYXV0
byBlcnJvck1lc3NhZ2UgPSB0ZXN0LT5jaGVja0ZhaWxlZFRvRGV0ZXJtaW5lUG9zaXRpb24oIkdQ
UyBpcyBub3QgYWN0aXZlIik7CisgICAgZ19hc3NlcnRfY21wc3RyKGVycm9yTWVzc2FnZS5nZXQo
KSwgPT0sICJHUFMgaXMgbm90IGFjdGl2ZSIpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0R2VvbG9j
YXRpb25NYW5hZ2VyV2F0Y2hQb3NpdGlvbihHZW9sb2NhdGlvblRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCit7CisgICAgdGVzdC0+c2hvd0luV2luZG93KCk7CisgICAgdGVzdC0+bG9hZEh0bWwo
IjxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+IiwgImh0dHBzOi8vZm9vLmNvbS9iYXIiKTsKKyAg
ICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIHRlc3QtPnN0YXJ0V2F0Y2go
KTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fdXBkYXRpbmcpOworCisgICAgV2ViS2l0R2Vv
bG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24gPSB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25f
bmV3KDM3LjE3NjA3ODMsIC0zLjU5MDMzLCAxNyk7CisgICAgd2Via2l0X2dlbG9jYXRpb25fbWFu
YWdlcl91cGRhdGVfcG9zaXRpb24odGVzdC0+bV9tYW5hZ2VyLCBwb3NpdGlvbik7CisgICAgd2Vi
a2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2ZyZWUocG9zaXRpb24pOworICAgIGF1dG8gcmVzdWx0
ID0gdGVzdC0+bGFzdFBvc2l0aW9uKCk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQocmVzdWx0Lmxh
dGl0dWRlLCA9PSwgMzcuMTc2MDc4Myk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQocmVzdWx0Lmxv
bmdpdHVkZSwgPT0sIC0zLjU5MDMzKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChyZXN1bHQuYWNj
dXJhY3ksID09LCAxNyk7CisKKyAgICBwb3NpdGlvbiA9IHdlYmtpdF9nZW9sb2NhdGlvbl9wb3Np
dGlvbl9uZXcoMzguMTc3MDc4MywgLTMuNjAwMzMsIDE3KTsKKyAgICB3ZWJraXRfZ2Vsb2NhdGlv
bl9tYW5hZ2VyX3VwZGF0ZV9wb3NpdGlvbih0ZXN0LT5tX21hbmFnZXIsIHBvc2l0aW9uKTsKKyAg
ICB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fZnJlZShwb3NpdGlvbik7CisgICAgcmVzdWx0
ID0gdGVzdC0+bGFzdFBvc2l0aW9uKCk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQocmVzdWx0Lmxh
dGl0dWRlLCA9PSwgMzguMTc3MDc4Myk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQocmVzdWx0Lmxv
bmdpdHVkZSwgPT0sIC0zLjYwMDMzKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChyZXN1bHQuYWNj
dXJhY3ksID09LCAxNyk7CisKKyAgICB0ZXN0LT5zdG9wV2F0Y2goKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh0ZXN0LT5tX3VwZGF0aW5nKTsKK30KKwordm9pZCBiZWZvcmVBbGwoKQoreworICAgIEdl
b2xvY2F0aW9uVGVzdDo6YWRkKCJXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIiLCAiY3VycmVudC1w
b3NpdGlvbiIsIHRlc3RHZW9sb2NhdGlvbk1hbmFnZXJDdXJyZW50UG9zaXRpb24pOworICAgIEdl
b2xvY2F0aW9uVGVzdDo6YWRkKCJXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIiLCAid2F0Y2gtcG9z
aXRpb24iLCB0ZXN0R2VvbG9jYXRpb25NYW5hZ2VyV2F0Y2hQb3NpdGlvbik7Cit9CisKK3ZvaWQg
YWZ0ZXJBbGwoKQoreworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcAppbmRleCA0MDVjMDVjOTY4ZC4uOWE3ZWRhYWY2Yjcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlD
bGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
VUlDbGllbnQuY3BwCkBAIC03ODYsNyArNzg2LDYgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdN
b3VzZVRhcmdldChVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB9CiAjZW5kaWYg
Ly8gUExBVEZPUk0oR1RLKQogCi0jaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBnZW9jbHVlIGdp
dmUgYSBydW50aW1lIHdhcm5pbmcgYmVjYXVzZSBpdCB0cmllcwpAQCAtODMxLDcgKzgzMCw2IEBA
IHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoVUlD
bGllbnRUZXN0KiB0ZXN0LCBnY29uc3RwCiAgICAgZ19hc3NlcnRfY21wc3RyKHJlc3VsdCwgIT0s
ICIxIik7CiAgICAgdGVzdC0+YWRkTG9nRmF0YWxGbGFnKEdfTE9HX0xFVkVMX1dBUk5JTkcpOwog
fQotI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1VzZXJNZWRpYUVudW1lcmF0ZURldmljZXNQZXJt
aXNzaW9uQ2hlY2soVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMTE5Myw5
ICsxMTkxLDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogI2lmIFBMQVRGT1JNKEdUSykKICAgICBVSUNs
aWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJtb3VzZS10YXJnZXQiLCB0ZXN0V2ViVmll
d01vdXNlVGFyZ2V0KTsKICNlbmRpZgotI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICBVSUNs
aWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJnZW9sb2NhdGlvbi1wZXJtaXNzaW9uLXJl
cXVlc3RzIiwgdGVzdFdlYlZpZXdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyk7Ci0jZW5k
aWYKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgInVzZXJtZWRpYS1lbnVtZXJhdGVkZXZpY2VzLXBlcm1pc3Npb24tY2hlY2si
LCB0ZXN0V2ViVmlld1VzZXJNZWRpYUVudW1lcmF0ZURldmljZXNQZXJtaXNzaW9uQ2hlY2spOwog
ICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInVzZXJtZWRpYS1wZXJtaXNz
aW9uLXJlcXVlc3RzIiwgdGVzdFdlYlZpZXdVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0IGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0CmluZGV4IDY1YTAwNzgwMDMyLi43
Y2YyMTc3ODg4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlz
dHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9DTWFrZUxpc3RzLnR4dApAQCAt
MTQ2LDYgKzE0Niw3IEBAIEFERF9XSzJfVEVTVChUZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
ICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpCiBBRERfV0syX1RFU1QoVGVz
dFdlYnNpdGVEYXRhICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYnNpdGVEYXRhLmNwcCkKIEFERF9XSzJfVEVTVChUZXN0Q29uc29sZU1lc3NhZ2UgJHtU
T09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29uc29sZU1lc3Nh
Z2UuY3BwKQogQUREX1dLMl9URVNUKFRlc3RET01FbGVtZW50ICR7VE9PTFNfRElSfS9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERPTUVsZW1lbnQuY3BwKQorQUREX1dLMl9URVNU
KFRlc3RHZW9sb2NhdGlvbk1hbmFnZXIgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcCkKIAogIyBGSVhNRTogRW5hYmxl
IGZvciBXUEUKIGlmIChQT1JUIFNUUkVRVUFMICJHVEsiKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365142</attachid>
            <date>2019-03-19 02:33:58 -0700</date>
            <delta_ts>2019-03-20 14:58:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-geolocation-api.diff</filename>
            <type>text/plain</type>
            <size>77598</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAwNTA3MmY4YjU4Ny4uNjg2
OWVlZDQ4Y2EgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0wMy0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHByb3ZpZGUgZ2VvbG9jYXRp
b24gaW5mb3JtYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEJ1aWxkIHdpdGggZ2VvbG9jYXRpb24gZW5hYmxlZCBieSBkZWZhdWx0IGluIGJvdGgg
R1RLIGFuZCBXUEUuIEluIEdUSyBhZGQgYSBzcGVjaWZpYyBVU0VfR0VPQ0xVRSBidWlsZCBvcHRp
b24KKyAgICAgICAgaW5zdGVhZCBvZiB1c2luZyBFTkFCTEVfR0VPTE9DQVRJT04uCisKKyAgICAg
ICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21h
a2UvT3B0aW9uc1dQRS5jbWFrZToKKwogMjAxOS0wMy0xOCAgQWRyaWFuIFBlcmV6IGRlIENhc3Ry
byAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEJ1bXAgcHVibGljIEFQSSB0
byB3cGUtMS4wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJhOTMxYWYwMzMuLjVjMWM0NDUzZDQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDMtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIEFQSSB0byBwcm92
aWRlIGdlb2xvY2F0aW9uIGluZm9ybWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU5NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIEVOQUJMRShHRU9MT0NBVElPTikgd2l0aCBVU0Uo
R0VPQ0xVRSkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNsaWVudC5oOgorCiAy
MDE5LTAzLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgTWFrZSBXVEZMb2dDaGFubmVsU3RhdGUgYW5kIFdURkxvZ0xldmVsIGVudW0gY2xh
c3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBlMGRkOWNkOTEyMC4uYmE0OTIzMWY3
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC03NSw3ICs3NSw3IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVQbGF0Zm9ybUdUS19TT1VSQ0VTCiAgICAgcmVuZGVyaW5nL1JlbmRlclRoZW1l
R3RrLmNwcAogKQogCi1pZiAoRU5BQkxFX0dFT0xPQ0FUSU9OKQoraWYgKFVTRV9HRU9DTFVFKQog
ICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICAke0RFUklWRURfU09VUkNF
U19XRUJDT1JFX0RJUn0vR2VvY2x1ZTJJbnRlcmZhY2UuYwogICAgICkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVy
R2VvY2x1ZS5jcHAKaW5kZXggOTgzOTc3MzU3ZTkuLjJkZWFmNzYzNzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJv
dmlkZXJHZW9jbHVlLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlLmgiCiAKLSNpZiBFTkFCTEUoR0VP
TE9DQVRJT04pCisjaWYgVVNFKEdFT0NMVUUpCiAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRp
bGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtMjEyLDQgKzIx
Miw0IEBAIHZvaWQgR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWU6OnVwZGF0ZUNsaWVudFJlcXVp
cmVtZW50cygpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShH
RU9MT0NBVElPTikKKyNlbmRpZiAvLyBVU0UoR0VPQ0xVRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUu
aAppbmRleCA0YTRkYjdhODUzMi4uMjI0Yjc5MTk5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVl
LmgKQEAgLTE4LDEwICsxOCw5IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAq
LwogCi0jaWZuZGVmIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlX2gKLSNkZWZpbmUgR2VvbG9j
YXRpb25Qcm92aWRlckdlb2NsdWVfaAorI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoR0VPTE9D
QVRJT04pCisjaWYgVVNFKEdFT0NMVUUpCiAKICNpbmNsdWRlICJHZW9sb2NhdGlvblByb3ZpZGVy
R2VvY2x1ZUNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KQEAgLTcxLDYg
KzcwLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8g
RU5BQkxFKEdFT0xPQ0FUSU9OKQotCi0jZW5kaWYgLy8gR2VvbG9jYXRpb25Qcm92aWRlckdlb2Ns
dWVfaAorI2VuZGlmIC8vIFVTRShHRU9DTFVFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNs
aWVudC5oCmluZGV4IGVhNjllMjU1ZGQxLi42OGRlMjc2MjUzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92
aWRlckdlb2NsdWVDbGllbnQuaApAQCAtMTcsMTAgKzE3LDkgQEAKICAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgogICovCiAKLSNpZm5kZWYgR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWVD
bGllbnRfaAotI2RlZmluZSBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNsaWVudF9oCisjcHJh
Z21hIG9uY2UKIAotI2lmIEVOQUJMRShHRU9MT0NBVElPTikKKyNpZiBVU0UoR0VPQ0xVRSkKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMiw2ICszMSw0IEBAIHB1YmxpYzoKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQotCi0jZW5k
aWYgLy8gR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWVDbGllbnRfaAorI2VuZGlmIC8vIFVTRShH
RU9DTFVFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cKaW5kZXggZmFh
YTg0OWIzNDUuLjE2ZTc3Njk3NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvcG8vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0wMy0xOSAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRv
IHByb3ZpZGUgZ2VvbG9jYXRpb24gaW5mb3JtYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogUE9URklMRVMuaW46IEFkZCBXZWJLaXRHZW9sb2Nh
dGlvbk1hbmFnZXIuY3BwLgorCiAyMDE5LTAzLTEzICBNaWxvIENhc2FncmFuZGUgPG1pbG9AbWls
by5uYW1lPgogCiAgICAgICAgIFtsMTBuXSBVcGRhdGVkIEl0YWxpYW4gdHJhbnNsYXRpb24gb2Yg
V2ViS2l0R1RLKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL1BP
VEZJTEVTLmluIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL1BPVEZJTEVTLmluCmlu
ZGV4IDFmYzE0NDg3NWE4Li5mNDkzMjAwMmEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL3BvL1BPVEZJTEVTLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9wby9QT1RGSUxFUy5pbgpAQCAtMTYsNiArMTYsNyBAQCBMb2NhbGl6ZWRTdHJpbmdzR3Rr
LmNwcAogLi4vLi4vLi4vV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0
YWJhc2UuY3BwCiAuLi8uLi8uLi9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVD
aG9vc2VyUmVxdWVzdC5jcHAKIC4uLy4uLy4uL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RmluZENvbnRyb2xsZXIuY3BwCisuLi8uLi8uLi9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAKIC4uLy4uLy4uL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLmNwcAogLi4vLi4vLi4vV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb24uY3BwCiAuLi8uLi8uLi9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGY5MDliZDZhNDE5Li5mNzljNjk3OWJmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1MyBAQAorMjAxOS0wMy0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHByb3ZpZGUgZ2VvbG9jYXRp
b24gaW5mb3JtYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIgcHVibGljIGNsYXNzIHRvIGhhbmRs
ZSBnZWFvbG9jYXRpb24gcG9zaXRpb24gdXBkYXRlcy4gV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRl
ciBoYXMKKyAgICAgICAgYmVlbiByZW1vdmVkIGFuZCB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlv
biBiYXNlZCBvbiBHZW9DbHVlIGlzIGRvbmUgYnkgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLgor
CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XUEUuY21h
a2U6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNlc1dQRS50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5j
cHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb246Ol9XZWJLaXRH
ZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlv
bl9uZXcpOgorICAgICAgICAod2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2NvcHkpOgorICAg
ICAgICAod2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2ZyZWUpOgorICAgICAgICAod2Via2l0
X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3NldF90aW1lc3RhbXApOgorICAgICAgICAod2Via2l0X2dl
b2xvY2F0aW9uX3Bvc2l0aW9uX3NldF9hbHRpdHVkZSk6CisgICAgICAgICh3ZWJraXRfZ2VvbG9j
YXRpb25fcG9zaXRpb25fc2V0X2FsdGl0dWRlX2FjY3VyYWN5KToKKyAgICAgICAgKHdlYmtpdF9n
ZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfaGVhZGluZyk6CisgICAgICAgICh3ZWJraXRfZ2VvbG9j
YXRpb25fcG9zaXRpb25fc2V0X3NwZWVkKToKKyAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uTWFu
YWdlclN0b3ApOgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyU2V0RW5hYmxlSGln
aEFjY3VyYWN5KToKKyAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0ZSk6Cisg
ICAgICAgICh3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3
ZWJraXRfZ2VvbG9jYXRpb25fbWFuYWdlcl9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9n
ZWxvY2F0aW9uX21hbmFnZXJfdXBkYXRlX3Bvc2l0aW9uKToKKyAgICAgICAgKHdlYmtpdF9nZWxv
Y2F0aW9uX21hbmFnZXJfZmFpbGVkKToKKyAgICAgICAgKHdlYmtpdF9nZW9sb2NhdGlvbl9tYW5h
Z2VyX2dldF9lbmFibGVfaGlnaF9hY2N1cmFjeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlclByaXZhdGUuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNsaWVu
dC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3Zp
ZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2Vv
bG9jYXRpb25Qcm92aWRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1
Y3RlZCk6IENyZWF0ZSBhIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciBpbnN0ZWFkIG9mIGEgV2Vi
S2l0R2VvbG9jYXRpb25Qcm92aWRlci4KKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
Z2VvbG9jYXRpb25fbWFuYWdlcik6IEdldCB0aGUgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBl
czoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21s
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS93cGUvZG9jcy93cGUtZG9jcy5zZ21sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
d3BlL3dlYmtpdC5oOgorCiAyMDE5LTAzLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBXVEZMb2dDaGFubmVsU3RhdGUgYW5kIFdU
RkxvZ0xldmVsIGVudW0gY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOTkzYWI1
OGVkMzguLjc2ZWI1ZTk1YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RL
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTgyLDYgKzgy
LDcgQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZpbmRDb250cm9sbGVyLmgKICAgICAke1dFQktJVF9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdC5oCiAgICAg
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGb3J3YXJkRGVjbGFyYXRpb25z
LmgKKyAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9u
TWFuYWdlci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVz
dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCBjYmRmNDg3Y2IzYy4uMzczYWUwYjllZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMTEzLDYgKzExMyw3IEBAIHNldChXUEVfQVBJ
X0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0RmluZENvbnRyb2xsZXIuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0LmgKKyAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5oCiAgICAgJHtXRUJL
SVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0LmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEhpdFRlc3RS
ZXN1bHQuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0SW5zdGFs
bE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApp
bmRleCBjYzA1OTg3ZmQ4My4uNTM1MjJkMDNiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtMTQ2
LDggKzE0Niw4IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Qu
Y3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcCBAbm8t
dW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QuY3Bw
IEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5j
cHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9j
YXRpb25Qcm92aWRlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNv
bkxvYWRpbmdDbGllbnQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdElu
amVjdGVkQnVuZGxlQ2xpZW50LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcCBAbm8tdW5p
ZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNXUEUudHh0CmluZGV4IGNhNmExNTA3ZmE3Li41ZmMxY2E1NzA0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNXUEUudHh0CkBAIC0xMzEsOCArMTMxLDggQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RmluZENvbnRyb2xsZXIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEZvcm1DbGllbnQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1T
dWJtaXNzaW9uUmVxdWVzdC5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
R2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgQG5vLXVuaWZ5CiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9u
UmVxdWVzdC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdC5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTM3MmY1ZjEyNDIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1h
bmFnZXIuY3BwCkBAIC0wLDAgKzEsNDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEln
YWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlv
bk1hbmFnZXIuaCIKKworI2luY2x1ZGUgIkFQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaCIKKyNpbmNs
dWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisjaW5jbHVkZSAiV2ViS2l0R2VvbG9jYXRp
b25NYW5hZ2VyUHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVk
ZSA8d3RmL1dhbGxUaW1lLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KKworI2lm
IFVTRShHRU9DTFVFKQorI2luY2x1ZGUgPFdlYkNvcmUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2Ns
dWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlQ2xpZW50
Lmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCisvKioKKyAqIFNFQ1RJT046V2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyCisgKiBA
c2hvcnRfZGVzY3JpcHRpb246IFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlcgorICogQHRpdGxlOiBH
ZW9sb2NhdGlvbiBtYW5hZ2VyCisgKiBAc2VlX2Fsc286ICNXZWJLaXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0LCAjV2ViS2l0V2ViQ29udGV4dAorICoKKyAqIFdlYktpdEdlb2xvY2F0aW9u
TWFuYWdlciBwcm92aWRlcyBBUEkgdG8gZ2V0IHRoZSBnZW9ncmFwaGljYWwgcG9zaXRpb24gb2Yg
dGhlIHVzZXIuCisgKiBPbmNlIGEgI1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qg
aXMgYWxsb3dlZCwgd2hlbiBXZWJLaXQgbmVlZHMgdG8ga25vdyB0aGUKKyAqIHVzZXIgbG9jYXRp
b24gI1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlcjo6c3RhcnQgc2lnbmFsIGlzIGVtaXR0ZWQuIElm
IHRoZSBzaWduYWwgaXMgaGFuZGxlZAorICogYW5kIHJldHVybnMgJVRSVUUsIHRoZSBhcHBsaWNh
dGlvbiBpcyByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIHRoZSBwb3NpdGlvbiBldmVyeSB0aW1l
IGl0J3MKKyAqIHVwZGF0ZWQgYnkgY2FsbGluZyB3ZWJraXRfZ2Vsb2NhdGlvbl9tYW5hZ2VyX3Vw
ZGF0ZV9wb3NpdGlvbigpLiBUaGUgc2lnbmFsICNXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXI6OnN0
b3AKKyAqIHdpbGwgYmUgZW1pdHRlZCB3aGVuIGxvY2F0aW9uIHVwZGF0ZXMgYXJlIG5vIGxvbmdl
ciBuZWVkZWQuCisgKgorICogU2luY2U6IDIuMjYKKyAqLworCitlbnVtIHsKKyAgICBQUk9QXzAs
CisKKyAgICBQUk9QX0VOQUJMRV9ISUdIX0FDQ1VSQUNZCit9OworCitlbnVtIHsKKyAgICBTVEFS
VCwKKyAgICBTVE9QLAorICAgIExBU1RfU0lHTkFMCit9OworCitzdHJ1Y3QgX1dlYktpdEdlb2xv
Y2F0aW9uUG9zaXRpb24geworICAgIF9XZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uKCkgPSBkZWZh
dWx0OworCisgICAgX1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBk
b3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIE9wdGlvbmFsPGRvdWJsZT4gdGltZXN0
YW1wID0gV1RGOjpudWxsb3B0KQorICAgIHsKKyAgICAgICAgcG9zaXRpb24udGltZXN0YW1wID0g
dGltZXN0YW1wLnZhbHVlT3IoV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKSk7CisgICAgICAgIHBvc2l0aW9uLmxhdGl0dWRlID0gbGF0aXR1ZGU7CisgICAgICAgIHBv
c2l0aW9uLmxvbmdpdHVkZSA9IGxvbmdpdHVkZTsKKyAgICAgICAgcG9zaXRpb24uYWNjdXJhY3kg
PSBhY2N1cmFjeTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBfV2ViS2l0R2VvbG9jYXRpb25Qb3Np
dGlvbihjb25zdCBHZW9sb2NhdGlvblBvc2l0aW9uJiBvdGhlcikKKyAgICB7CisgICAgICAgIHBv
c2l0aW9uID0gb3RoZXI7CisgICAgfQorCisgICAgR2VvbG9jYXRpb25Qb3NpdGlvbiBwb3NpdGlv
bjsKK307CisKKy8qKgorICogV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbjoKKyAqCisgKiBXZWJL
aXRHZW9sb2NhdGlvblBvc2l0aW9uIGlzIGFuIG9wYXF1ZSBzdHJ1Y3QgdXNlZCB0byBwcm92aWRl
IHBvc2l0aW9uIHVwZGF0ZXMgdG8gYQorICogI1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlciB1c2lu
ZyB3ZWJraXRfZ2Vsb2NhdGlvbl9tYW5hZ2VyX3VwZGF0ZV9wb3NpdGlvbigpLgorICoKKyAqIFNp
bmNlOiAyLjI2CisgKi8KKworR19ERUZJTkVfQk9YRURfVFlQRShXZWJLaXRHZW9sb2NhdGlvblBv
c2l0aW9uLCB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb24sIHdlYmtpdF9nZW9sb2NhdGlvbl9w
b3NpdGlvbl9jb3B5LCB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fZnJlZSkKKworLyoqCisg
KiB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fbmV3OgorICogQGxhdGl0dWRlOiBhIHZhbGlk
IGxhdGl0dWRlIGluIGRlZ3JlZXMKKyAqIEBsb25naXR1ZGU6IGEgdmFsaWQgbG9uZ2l0dWRlIGlu
IGRlZ3JlZXMKKyAqIEBhY2N1cmFjeTogYWNjdXJhY3kgb2YgbG9jYXRpb24gaW4gbWV0ZXJzCisg
KgorICogQ3JlYXRlIGEgbmV3ICNXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uCisgKgorICogUmV0
dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIG5ld2x5IGNyZWF0ZWQgI1dlYktpdEdlb2xvY2F0aW9u
UG9zaXRpb24KKyAqCisgKiBTaW5jZTogMi4yNgorICovCitXZWJLaXRHZW9sb2NhdGlvblBvc2l0
aW9uKiB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fbmV3KGRvdWJsZSBsYXRpdHVkZSwgZG91
YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQoreworICAgIGF1dG8qIHBvc2l0aW9uID0g
c3RhdGljX2Nhc3Q8V2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbio+KGZhc3RNYWxsb2Moc2l6ZW9m
KFdlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24pKSk7CisgICAgbmV3IChwb3NpdGlvbikgV2ViS2l0
R2VvbG9jYXRpb25Qb3NpdGlvbihsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSk7CisgICAg
cmV0dXJuIHBvc2l0aW9uOworfQorCisvKioKKyAqIHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlv
bl9jb3B5OgorICogQHBvc2l0aW9uOiBhICNXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uCisgKgor
ICogTWFrZSBhIGNvcHkgb2YgdGhlICNXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uCisgKgorICog
UmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIGNvcHkgb2YgQHBvc2l0aW9uCisgKgorICogU2lu
Y2U6IDIuMjYKKyAqLworV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbiogd2Via2l0X2dlb2xvY2F0
aW9uX3Bvc2l0aW9uX2NvcHkoV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocG9zaXRpb24sIG51bGxwdHIpOworCisgICAgYXV0
byogY29weSA9IHN0YXRpY19jYXN0PFdlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24qPihmYXN0TWFs
bG9jKHNpemVvZihXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uKSkpOworICAgIG5ldyAoY29weSkg
V2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbihwb3NpdGlvbi0+cG9zaXRpb24pOworICAgIHJldHVy
biBjb3B5OworfQorCisvKioKKyAqIHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9mcmVlOgor
ICogQHBvc2l0aW9uOiBhICNXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uCisgKgorICogRnJlZSB0
aGUgI1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24KKyAqCisgKiBTaW5jZTogMi4yNgorICovCit2
b2lkIHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9mcmVlKFdlYktpdEdlb2xvY2F0aW9uUG9z
aXRpb24qIHBvc2l0aW9uKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwocG9zaXRpb24pOworCisg
ICAgcG9zaXRpb24tPn5XZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uKCk7CisgICAgZmFzdEZyZWUo
cG9zaXRpb24pOworfQorCisvKioKKyAqIHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRf
dGltZXN0YW1wOgorICogQHBvc2l0aW9uOiBhICNXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uCisg
KiBAdGltZXN0YW1wOiB0aW1lc3RhbXAgaW4gc2Vjb25kcyBzaW5jZSB0aGUgRXBvY2gKKyAqCisg
KiBTZXQgdGhlIEBwb3NpdGlvbiB0aW1lc3RhbXAuIEJ5IGRlZmF1bHQgaXQncyB0aGUgdGltZSB3
aGVuIHRoZSBAcG9zaXRpb24gd2FzIGNyZWF0ZWQuCisgKgorICogU2luY2U6IDIuMjYKKyAqLwor
dm9pZCB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X3RpbWVzdGFtcChXZWJLaXRHZW9s
b2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbiwgZ3VpbnQ2NCB0aW1lc3RhbXApCit7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChwb3NpdGlvbik7CisgICAgZ19yZXR1cm5faWZfZmFpbCh0aW1lc3RhbXAp
OworCisgICAgcG9zaXRpb24tPnBvc2l0aW9uLnRpbWVzdGFtcCA9IHN0YXRpY19jYXN0PGRvdWJs
ZT4odGltZXN0YW1wKTsKK30KKworLyoqCisgKiB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25f
c2V0X2FsdGl0dWRlOgorICogQHBvc2l0aW9uOiBhICNXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9u
CisgKiBAYWx0aXR1ZGU6IGFsdGl0dWRlIGluIG1ldGVycworICoKKyAqIFNldCB0aGUgQHBvc2l0
aW9uIGFsdGl0dWRlCisgKgorICogU2luY2U6IDIuMjYKKyAqLwordm9pZCB3ZWJraXRfZ2VvbG9j
YXRpb25fcG9zaXRpb25fc2V0X2FsdGl0dWRlKFdlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24qIHBv
c2l0aW9uLCBkb3VibGUgYWx0aXR1ZGUpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChwb3NpdGlv
bik7CisKKyAgICBwb3NpdGlvbi0+cG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVkZTsKK30KKwor
LyoqCisgKiB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X2FsdGl0dWRlX2FjY3VyYWN5
OgorICogQHBvc2l0aW9uOiBhICNXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uCisgKiBAYWx0aXR1
ZGVfYWNjdXJhY3k6IGFjY3VyYWN5IG9mIHBvc2l0aW9uIGFsdGl0dWRlIGluIG1ldGVycworICoK
KyAqIFNldCB0aGUgYWNjdXJhY3kgb2YgQHBvc2l0aW9uIGFsdGl0dWRlCisgKgorICogU2luY2U6
IDIuMjYKKyAqLwordm9pZCB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X2FsdGl0dWRl
X2FjY3VyYWN5KFdlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uLCBkb3VibGUgYWx0
aXR1ZGVBY2N1cmFjeSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHBvc2l0aW9uKTsKKworICAg
IHBvc2l0aW9uLT5wb3NpdGlvbi5hbHRpdHVkZUFjY3VyYWN5ID0gYWx0aXR1ZGVBY2N1cmFjeTsK
K30KKworLyoqCisgKiB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X2hlYWRpbmc6Cisg
KiBAcG9zaXRpb246IGEgI1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24KKyAqIEBoZWFkaW5nOiBo
ZWFkaW5nIGluIGRlZ3JlZXMKKyAqCisgKiBTZXQgdGhlIEBwb3NpdGlvbiBwb3NpdGl2ZSBhbmds
ZSBiZXR3ZWVuIHRoZSBkaXJlY3Rpb24gb2YgbW92ZW1lbnQgYW5kIHRoZSBOb3J0aAorICogZGly
ZWN0aW9uLCBpbiBjbG9ja3dpc2UgZGlyZWN0aW9uLgorICoKKyAqIFNpbmNlOiAyLjI2CisgKi8K
K3ZvaWQgd2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3NldF9oZWFkaW5nKFdlYktpdEdlb2xv
Y2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uLCBkb3VibGUgaGVhZGluZykKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKHBvc2l0aW9uKTsKKworICAgIHBvc2l0aW9uLT5wb3NpdGlvbi5oZWFkaW5nID0g
aGVhZGluZzsKK30KKworLyoqCisgKiB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X3Nw
ZWVkOgorICogQHBvc2l0aW9uOiBhICNXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uCisgKiBAc3Bl
ZWQ6IHNwZWVkIGluIG1ldGVycyBwZXIgc2Vjb25kCisgKgorICogU2V0IHRoZSBAcG9zaXRpb24g
c3BlZWQKKyAqCisgKiBTaW5jZTogMi4yNgorICovCit2b2lkIHdlYmtpdF9nZW9sb2NhdGlvbl9w
b3NpdGlvbl9zZXRfc3BlZWQoV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24sIGRv
dWJsZSBzcGVlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHBvc2l0aW9uKTsKKworICAgIHBv
c2l0aW9uLT5wb3NpdGlvbi5zcGVlZCA9IHNwZWVkOworfQorCisjaWYgVVNFKEdFT0NMVUUpCitj
bGFzcyBHZW9jbHVlUHJvdmlkZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgR2VvbG9jYXRpb25Qcm92
aWRlckdlb2NsdWVDbGllbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IEdlb2NsdWVQcm92aWRl
ckNsaWVudChXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1hbmFnZXIpCisgICAgICAgIDogbV9t
YW5hZ2VyKG1hbmFnZXIpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIG5vdGlm
eVBvc2l0aW9uQ2hhbmdlZChpbnQgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBs
b25naXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBkb3VibGUpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uIHBvc2l0aW9uKGxh
dGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWVzdGFt
cCkpOworICAgICAgICB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X2FsdGl0dWRlKCZw
b3NpdGlvbiwgYWx0aXR1ZGUpOworICAgICAgICB3ZWJraXRfZ2Vsb2NhdGlvbl9tYW5hZ2VyX3Vw
ZGF0ZV9wb3NpdGlvbihtX21hbmFnZXIsICZwb3NpdGlvbik7CisgICAgfQorCisgICAgdm9pZCBu
b3RpZnlFcnJvck9jY3VycmVkKGNvbnN0IGNoYXIqIG1lc3NhZ2UpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICB3ZWJraXRfZ2Vsb2NhdGlvbl9tYW5hZ2VyX2ZhaWxlZChtX21hbmFnZXIsIG1lc3Nh
Z2UpOworICAgIH0KKworICAgIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogbV9tYW5hZ2VyOwor
fTsKKyNlbmRpZgorCitzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlclByaXZhdGUgewor
ICAgIFJlZlB0cjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gbWFuYWdlcjsKKyAgICBib29s
IGhpZ2hBY2N1cmFjeUVuYWJsZWQ7CisjaWYgVVNFKEdFT0NMVUUpCisgICAgc3RkOjp1bmlxdWVf
cHRyPEdlb2NsdWVQcm92aWRlckNsaWVudD4gcHJvdmlkZXJDbGllbnQ7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlPiBwcm92aWRlcjsKKyNlbmRpZgorfTsK
Kworc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OworCitXRUJLSVRf
REVGSU5FX1RZUEUoV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLCB3ZWJraXRfZ2VvbG9jYXRpb25f
bWFuYWdlciwgR19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0R2VvbG9jYXRpb25N
YW5hZ2VyU3RhcnQoV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIGdi
b29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXQobWFuYWdlciwgc2lnbmFsc1tT
VEFSVF0sIDAsICZyZXR1cm5WYWx1ZSk7CisgICAgaWYgKHJldHVyblZhbHVlKSB7CisjaWYgVVNF
KEdFT0NMVUUpCisgICAgICAgIG1hbmFnZXItPnByaXYtPnByb3ZpZGVyID0gbnVsbHB0cjsKKyAg
ICAgICAgbWFuYWdlci0+cHJpdi0+cHJvdmlkZXJDbGllbnQgPSBudWxscHRyOworI2VuZGlmCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBVU0UoR0VPQ0xVRSkKKyAgICBpZiAoIW1hbmFn
ZXItPnByaXYtPnByb3ZpZGVyKSB7CisgICAgICAgIG1hbmFnZXItPnByaXYtPnByb3ZpZGVyQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxHZW9jbHVlUHJvdmlkZXJDbGllbnQ+KG1hbmFnZXIpOwor
ICAgICAgICBtYW5hZ2VyLT5wcml2LT5wcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9j
YXRpb25Qcm92aWRlckdlb2NsdWU+KG1hbmFnZXItPnByaXYtPnByb3ZpZGVyQ2xpZW50LmdldCgp
KTsKKyAgICB9CisgICAgbWFuYWdlci0+cHJpdi0+cHJvdmlkZXItPnN0YXJ0VXBkYXRpbmcoKTsK
KyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJTdG9wKFdl
YktpdEdlb2xvY2F0aW9uTWFuYWdlciogbWFuYWdlcikKK3sKKyAgICBnX3NpZ25hbF9lbWl0KG1h
bmFnZXIsIHNpZ25hbHNbU1RPUF0sIDAsIG51bGxwdHIpOworCisjaWYgVVNFKEdFT0NMVUUpCisg
ICAgaWYgKG1hbmFnZXItPnByaXYtPnByb3ZpZGVyKQorICAgICAgICBtYW5hZ2VyLT5wcml2LT5w
cm92aWRlci0+c3RvcFVwZGF0aW5nKCk7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgd2Via2l0
R2VvbG9jYXRpb25NYW5hZ2VyU2V0RW5hYmxlSGlnaEFjY3VyYWN5KFdlYktpdEdlb2xvY2F0aW9u
TWFuYWdlciogbWFuYWdlciwgYm9vbCBlbmFibGVkKQoreworICAgIGlmIChtYW5hZ2VyLT5wcml2
LT5oaWdoQWNjdXJhY3lFbmFibGVkID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IG1hbmFnZXItPnByaXYtPmhpZ2hBY2N1cmFjeUVuYWJsZWQgPSBlbmFibGVkOworICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChtYW5hZ2VyKSwgImVuYWJsZS1oaWdoLWFjY3VyYWN5Iik7Cisj
aWYgVVNFKEdFT0NMVUUpCisgICAgaWYgKG1hbmFnZXItPnByaXYtPnByb3ZpZGVyKQorICAgICAg
ICBtYW5hZ2VyLT5wcml2LT5wcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGVuYWJsZWQp
OworI2VuZGlmCit9CisKK2NsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMg
QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHZW9sb2Nh
dGlvblByb3ZpZGVyKFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogbWFuYWdlcikKKyAgICAgICAg
OiBtX21hbmFnZXIobWFuYWdlcikKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQg
c3RhcnRVcGRhdGluZyhXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSYpIG92ZXJyaWRlCisgICAg
eworICAgICAgICB3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJTdGFydChtX21hbmFnZXIpOworICAg
IH0KKworICAgIHZvaWQgc3RvcFVwZGF0aW5nKFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Jikg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlclN0b3AobV9t
YW5hZ2VyKTsKKyAgICB9CisKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eSYsIGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlclNldEVuYWJsZUhpZ2hBY2N1cmFjeShtX21hbmFn
ZXIsIGVuYWJsZWQpOworICAgIH0KKworICAgIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogbV9t
YW5hZ2VyOworfTsKKworV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiB3ZWJraXRHZW9sb2NhdGlv
bk1hbmFnZXJDcmVhdGUoV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkqIHByb3h5KQoreworICAg
IGF1dG8qIG1hbmFnZXIgPSBXRUJLSVRfR0VPTE9DQVRJT05fTUFOQUdFUihnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fTUFOQUdFUiwgbnVsbHB0cikpOworICAgIG1hbmFnZXIt
PnByaXYtPm1hbmFnZXIgPSBwcm94eTsKKyAgICBwcm94eS0+c2V0UHJvdmlkZXIoc3RkOjptYWtl
X3VuaXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVyPihtYW5hZ2VyKSk7CisgICAgcmV0dXJuIG1hbmFn
ZXI7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckdldFByb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiBtYW5hZ2VyID0g
V0VCS0lUX0dFT0xPQ0FUSU9OX01BTkFHRVIob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElk
KSB7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9ISUdIX0FDQ1VSQUNZOgorICAgICAgICBnX3ZhbHVl
X3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZ2VvbG9jYXRpb25fbWFuYWdlcl9nZXRfZW5hYmxl
X2hpZ2hfYWNjdXJhY3kobWFuYWdlcikpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQs
IHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZ2VvbG9jYXRpb25f
bWFuYWdlcl9jbGFzc19pbml0KFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlckNsYXNzKiBnZW9sb2Nh
dGlvbk1hbmFnZXJDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKGdlb2xvY2F0aW9uTWFuYWdlckNsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3Mt
PmdldF9wcm9wZXJ0eSA9IHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckdldFByb3BlcnR5OworCisg
ICAgLyoqCisgICAgICogV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyOmVuYWJsZS1oaWdoLWFjY3Vy
YWN5OgorICAgICAqCisgICAgICogV2hldGhlciBoaWdoIGFjY3VyYWN5IGlzIGVuYWJsZWQuIFRo
aXMgaXMgYSByZWFkLW9ubHkgcHJvcGVydHksIHRoYXQgd2lsbCBiZQorICAgICAqIHNldCB0byAl
VFJVRSB3aGVuIGEgI1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlciBuZWVkcyB0byBnZXQgYWNjdXJh
dGUgcG9zaXRpb24gdXBkYXRlcy4KKyAgICAgKiBZb3UgY2FuIGNvbm5lY3QgdG8gbm90aWZ5Ojpl
bmFibGUtaGlnaC1hY2N1cmFjeSBzaWduYWwgdG8gbW9uaXRvciBpdC4KKyAgICAgKgorICAgICAq
IFNpbmNlOiAyLjI2CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX0VOQUJMRV9ISUdIX0FDQ1VS
QUNZLAorICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICJlbmFibGUt
aGlnaC1hY2N1cmFjeSIsCisgICAgICAgICAgICBfKCJFbmFibGUgaGlnaCBhY2N1cmFjeSIpLAor
ICAgICAgICAgICAgXygiV2hldGhlciBoaWdoIGFjY3VyYWN5IGlzIGVuYWJsZWQiKSwKKyAgICAg
ICAgICAgIEZBTFNFLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisKKyAg
ICAvKioKKyAgICAgKiBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXI6OnN0YXJ0OgorICAgICAqIEBt
YW5hZ2VyOiB0aGUgI1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlciBvbiB3aGljaCB0aGUgc2lnbmFs
IGlzIGVtaXR0ZWQKKyAgICAgKgorICAgICAqIFRoZSBzaWduYWwgaXMgZW1pdHRlZCB0byBub3Rp
ZnkgdGhhdCBAbWFuYWdlciBuZWVkcyB0byBzdGFydCByZWNlaXZpbmcKKyAgICAgKiBwb3NpdGlv
biB1cGRhdGVzLiBBZnRlciB0aGlzIHNpZ25hbCBpcyBlbWl0dGVkIHRoZSB1c2VyIHNob3VsZCBw
cm92aWRlCisgICAgICogdGhlIHVwZGF0ZXMgdXNpbmcgd2Via2l0X2dlbG9jYXRpb25fbWFuYWdl
cl91cGRhdGVfcG9zaXRpb24oKSBldmVyeSB0aW1lCisgICAgICogdGhlIHBvc2l0aW9uIGNoYW5n
ZXM7IG9yIHVzZSB3ZWJraXRfZ2Vsb2NhdGlvbl9tYW5hZ2VyX2ZhaWxlZCgpIGluIGNhc2UKKyAg
ICAgKiBpdCBjb3VsZG4ndCBiZSBwb3NzaWJsZSB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgcG9z
aXRpb24uCisgICAgICoKKyAgICAgKiBJZiB0aGUgc2lnbmFsIGlzIG5vdCBoYW5kbGVkLCBXZWJL
aXQgd2lsbCB0cnkgdG8gZGV0ZXJtaW5lIHRoZSBwb3NpdGlvbgorICAgICAqIHVzaW5nIEdlb0Ns
dWUgaWYgYXZhaWxhYmxlLgorICAgICAqCisgICAgICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBv
dGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAgICAgKiAg
ICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgorICAgICAqCisgICAgICog
U2luY2U6IDIuMjYKKyAgICAgKi8KKyAgICBzaWduYWxzW1NUQVJUXSA9IGdfc2lnbmFsX25ldygK
KyAgICAgICAgInN0YXJ0IiwKKyAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MoZ2VvbG9jYXRpb25N
YW5hZ2VyQ2xhc3MpLAorICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgMCwKKyAg
ICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCBudWxscHRyLAorICAgICAg
ICBnX2NjbG9zdXJlX21hcnNoYWxfZ2VuZXJpYywKKyAgICAgICAgR19UWVBFX0JPT0xFQU4sIDAp
OworCisgICAgLyoqCisgICAgICogV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyOjpzdG9wOgorICAg
ICAqIEBtYW5hZ2VyOiB0aGUgI1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlciBvbiB3aGljaCB0aGUg
c2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKgorICAgICAqIFRoZSBzaWduYWwgaXMgZW1pdHRlZCB0
byBub3RpZnkgdGhhdCBAbWFuYWdlciBkb2Vzbid0IG5lZWQgdG8gcmVjZWl2ZQorICAgICAqIHBv
c2l0aW9uIHVwZGF0ZXMgYW55bW9yZS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjI2CisgICAg
ICovCisgICAgc2lnbmFsc1tTVE9QXSA9IGdfc2lnbmFsX25ldygKKyAgICAgICAgInN0b3AiLAor
ICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhnZW9sb2NhdGlvbk1hbmFnZXJDbGFzcyksCisgICAg
ICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAwLAorICAgICAgICBudWxscHRyLCBudWxs
cHRyLAorICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfZ2VuZXJpYywKKyAgICAgICAgR19UWVBF
X05PTkUsIDApOworfQorCisvKioKKyAqIHdlYmtpdF9nZWxvY2F0aW9uX21hbmFnZXJfdXBkYXRl
X3Bvc2l0aW9uOgorICogQG1hbmFnZXI6IGEgI1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlcgorICog
QHBvc2l0aW9uOiBhICNXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uCisgKgorICogTm90aWZ5IEBt
YW5hZ2VyIHRoYXQgcG9zaXRpb24gaGFzIGJlZW4gdXBkYXRlZCB0byBAcG9zaXRpb24uCisgKgor
ICogU2luY2U6IDIuMjYKKyAqLwordm9pZCB3ZWJraXRfZ2Vsb2NhdGlvbl9tYW5hZ2VyX3VwZGF0
ZV9wb3NpdGlvbihXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1hbmFnZXIsIFdlYktpdEdlb2xv
Y2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX0dFT0xPQ0FUSU9OX01BTkFHRVIobWFuYWdlcikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
cG9zaXRpb24pOworCisgICAgR2VvbG9jYXRpb25Qb3NpdGlvbiBjb3JlUG9zaXRpb24gPSBwb3Np
dGlvbi0+cG9zaXRpb247CisgICAgYXV0byB3a1Bvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7CisgICAgbWFuYWdlci0+cHJpdi0+
bWFuYWdlci0+cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbih3a1Bvc2l0aW9uLnB0cigpKTsKK30K
KworLyoqCisgKiB3ZWJraXRfZ2Vsb2NhdGlvbl9tYW5hZ2VyX2ZhaWxlZDoKKyAqIEBtYW5hZ2Vy
OiBhICNXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIKKyAqIEBlcnJvcl9tZXNzYWdlOiB0aGUgZXJy
b3IgbWVzc2FnZQorICoKKyAqIE5vdGlmeSBAbWFuYWdlciB0aGF0IGRldGVybWluaW5nIHRoZSBw
b3NpdGlvbiBmYWlsZWQuCisgKgorICogU2luY2U6IDIuMjYKKyAqLwordm9pZCB3ZWJraXRfZ2Vs
b2NhdGlvbl9tYW5hZ2VyX2ZhaWxlZChXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1hbmFnZXIs
IGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19HRU9MT0NBVElPTl9NQU5BR0VSKG1hbmFnZXIpKTsKKworICAgIG1hbmFnZXItPnByaXYt
Pm1hbmFnZXItPnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oU3RyaW5nOjpmcm9t
VVRGOChlcnJvck1lc3NhZ2UpKTsKK30KKworLyoqCisgKiB3ZWJraXRfZ2VvbG9jYXRpb25fbWFu
YWdlcl9nZXRfZW5hYmxlX2hpZ2hfYWNjdXJhY3k6CisgKiBAbWFuYWdlcjogYSAjV2ViS2l0R2Vv
bG9jYXRpb25NYW5hZ2VyCisgKgorICogR2V0IHdoZXRoZXIgaGlnaCBhY2N1cmFjeSBpcyBlbmFi
bGVkLgorICoKKyAqIFNpbmNlOiAyLjI2CisgKi8KK2dib29sZWFuIHdlYmtpdF9nZW9sb2NhdGlv
bl9tYW5hZ2VyX2dldF9lbmFibGVfaGlnaF9hY2N1cmFjeShXZWJLaXRHZW9sb2NhdGlvbk1hbmFn
ZXIqIG1hbmFnZXIpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0dFT0xP
Q0FUSU9OX01BTkFHRVIobWFuYWdlciksIEZBTFNFKTsKKworICAgIHJldHVybiBtYW5hZ2VyLT5w
cml2LT5oaWdoQWNjdXJhY3lFbmFibGVkOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyUHJp
dmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xYThiZTVlNGI0
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEdlb2xvY2F0aW9uTWFuYWdlclByaXZhdGUuaApAQCAtMCwwICsxLDI1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlv
bk1hbmFnZXIuaCIKKworV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiB3ZWJraXRHZW9sb2NhdGlv
bk1hbmFnZXJDcmVhdGUoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRp
b25Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRH
ZW9sb2NhdGlvblByb3ZpZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVi
MDJlODNlZWMuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRl
ci5oIgotCi0jaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotCi0jaW5jbHVkZSAiQVBJR2VvbG9jYXRp
b25Qcm92aWRlci5oIgotI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCi0j
aW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgR2VvbG9jYXRpb25Qcm92aWRlciA6IHB1YmxpYyBBUEk6Okdlb2xvY2F0aW9uUHJv
dmlkZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IEdlb2xvY2F0aW9uUHJvdmlkZXIoV2ViS2l0
R2VvbG9jYXRpb25Qcm92aWRlciYgcHJvdmlkZXIpCi0gICAgICAgIDogbV9wcm92aWRlcihwcm92
aWRlcikKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQgc3RhcnRVcGRhdGluZyhX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBtX3By
b3ZpZGVyLnN0YXJ0VXBkYXRpbmcoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3BVcGRhdGluZyhX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBtX3By
b3ZpZGVyLnN0b3BVcGRhdGluZygpOwotICAgIH0KLQotICAgIFdlYktpdEdlb2xvY2F0aW9uUHJv
dmlkZXImIG1fcHJvdmlkZXI7Ci19OwotCi1XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjp+V2Vi
S2l0R2VvbG9jYXRpb25Qcm92aWRlcigpCi17Ci0gICAgbV9wcm92aWRlci5zdG9wVXBkYXRpbmco
KTsKLSAgICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+c2V0UHJvdmlkZXIobnVsbHB0cik7Ci19Ci0K
LVdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6OldlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIoV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHkqIGdlb2xvY2F0aW9uTWFuYWdlcikKLSAgICA6IG1fZ2Vv
bG9jYXRpb25NYW5hZ2VyKGdlb2xvY2F0aW9uTWFuYWdlcikKLSAgICAsIG1fcHJvdmlkZXIodGhp
cykKLXsKLSAgICBBU1NFUlQoZ2VvbG9jYXRpb25NYW5hZ2VyKTsKLSAgICBnZW9sb2NhdGlvbk1h
bmFnZXItPnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlcj4o
KnRoaXMpKTsKLX0KLQotdm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpzdGFydFVwZGF0
aW5nKCkKLXsKLSAgICBtX3Byb3ZpZGVyLnN0YXJ0VXBkYXRpbmcoKTsKLX0KLQotdm9pZCBXZWJL
aXRHZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wVXBkYXRpbmcoKQotewotICAgIG1fcHJvdmlkZXIu
c3RvcFVwZGF0aW5nKCk7Ci19Ci0KLXZvaWQgV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90
aWZ5UG9zaXRpb25DaGFuZ2VkKGludCB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91Ymxl
IGxvbmdpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGRvdWJsZSBhbHRp
dHVkZUFjY3VyYWN5KQotewotICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gY29yZVBv
c2l0aW9uIHsgc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lc3RhbXApLCBsYXRpdHVkZSwgbG9uZ2l0
dWRlLCBhY2N1cmFjeSB9OwotICAgIGNvcmVQb3NpdGlvbi5hbHRpdHVkZSA9IGFsdGl0dWRlOwot
ICAgIGNvcmVQb3NpdGlvbi5hbHRpdHVkZUFjY3VyYWN5ID0gYWx0aXR1ZGVBY2N1cmFjeTsKLSAg
ICBhdXRvIHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUo
Y29yZVBvc2l0aW9uKSk7Ci0gICAgbV9nZW9sb2NhdGlvbk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hh
bmdlUG9zaXRpb24ocG9zaXRpb24ucHRyKCkpOwotfQotCi12b2lkIFdlYktpdEdlb2xvY2F0aW9u
UHJvdmlkZXI6Om5vdGlmeUVycm9yT2NjdXJyZWQoY29uc3QgY2hhciogLyogbWVzc2FnZSAqLykK
LXsKLSAgICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQ
b3NpdGlvbigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJM
RShHRU9MT0NBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZGMxNjM2MWJhMjQuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMu
TC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0KLSNpbmNsdWRlIDxX
ZWJDb3JlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9H
ZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNsaWVudC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LWNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OwotCi1jbGFzcyBXZWJLaXRHZW9sb2Nh
dGlvblByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uUHJvdmlkZXJH
ZW9jbHVlQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJLaXRHZW9sb2NhdGlvblBy
b3ZpZGVyKFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Kik7Ci0gICAgfldlYktpdEdlb2xvY2F0
aW9uUHJvdmlkZXIoKTsKLQotICAgIHZvaWQgc3RhcnRVcGRhdGluZygpOwotICAgIHZvaWQgc3Rv
cFVwZGF0aW5nKCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gR2VvbG9jYXRpb25Qcm92aWRlckdlb2Ns
dWVDbGllbnQgaW50ZXJmYWNlLgotICAgIHZvaWQgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKGludCwg
ZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUpIG92ZXJyaWRlOwotICAgIHZv
aWQgbm90aWZ5RXJyb3JPY2N1cnJlZChjb25zdCBjaGFyKikgb3ZlcnJpZGU7Ci0KLSAgICBSZWZQ
dHI8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+IG1fZ2VvbG9jYXRpb25NYW5hZ2VyOwotICAg
IFdlYkNvcmU6Okdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlIG1fcHJvdmlkZXI7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250
ZXh0LmNwcAppbmRleCBmZjNmZjg2NTM2MS4uMmMxZjNlOTc3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0z
MSwxMyArMzEsMTIgQEAKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAi
V2ViQXV0b21hdGlvblNlc3Npb24uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIK
LSNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYktp
dEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdERvd25sb2FkQ2xpZW50LmgiCiAj
aW5jbHVkZSAiV2ViS2l0RG93bmxvYWRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RmF2aWNv
bkRhdGFiYXNlUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIu
aCIKKyNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXROZXR3b3Jr
UHJveHlTZXR0aW5nc1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlci5oIgpAQCAtMTcwLDkgKzE2OSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dFByaXZh
dGUgewogICAgIEdSZWZQdHI8V2ViS2l0U2VjdXJpdHlNYW5hZ2VyPiBzZWN1cml0eU1hbmFnZXI7
CiAgICAgVVJJU2NoZW1lSGFuZGxlck1hcCB1cmlTY2hlbWVIYW5kbGVyczsKICAgICBVUklTY2hl
bWVSZXF1ZXN0TWFwIHVyaVNjaGVtZVJlcXVlc3RzOwotI2lmIEVOQUJMRShHRU9MT0NBVElPTikK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcj4gZ2VvbG9jYXRp
b25Qcm92aWRlcjsKLSNlbmRpZgorICAgIEdSZWZQdHI8V2ViS2l0R2VvbG9jYXRpb25NYW5hZ2Vy
PiBnZW9sb2NhdGlvbk1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdE5vdGlmaWNh
dGlvblByb3ZpZGVyPiBub3RpZmljYXRpb25Qcm92aWRlcjsKICAgICBHUmVmUHRyPFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlcj4gd2Vic2l0ZURhdGFNYW5hZ2VyOwogCkBAIC0zNjcsOSArMzY0LDcg
QEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVj
dCkKICAgICBhdHRhY2hEb3dubG9hZENsaWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKICAgICBh
dHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7CiAK
LSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgcHJpdi0+Z2VvbG9jYXRpb25Qcm92aWRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcj4ocHJpdi0+cHJvY2Vz
c1Bvb2wtPnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpOwotI2VuZGlm
CisgICAgcHJpdi0+Z2VvbG9jYXRpb25NYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdEdlb2xvY2F0
aW9uTWFuYWdlckNyZWF0ZShwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eT4oKSkpOwogICAgIHByaXYtPm5vdGlmaWNhdGlvblByb3ZpZGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcj4ocHJpdi0+cHJvY2Vz
c1Bvb2wtPnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLCB3ZWJDb250
ZXh0KTsKICNpZiBQTEFURk9STShHVEspICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAg
IHByaXYtPnJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyPih3ZWJDb250ZXh0KTsKQEAgLTg2Nyw2ICs4
NjIsMjMgQEAgV2ViS2l0Q29va2llTWFuYWdlciogd2Via2l0X3dlYl9jb250ZXh0X2dldF9jb29r
aWVfbWFuYWdlcihXZWJLaXRXZWJDb250ZXh0KiBjb24KICAgICByZXR1cm4gd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9jb29raWVfbWFuYWdlcihjb250ZXh0LT5wcml2LT53ZWJzaXRl
RGF0YU1hbmFnZXIuZ2V0KCkpOwogfQogCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
Z2VvbG9jYXRpb25fbWFuYWdlcjoKKyAqIEBjb250ZXh0OiBhICNXZWJLaXRXZWJDb250ZXh0Cisg
KgorICogR2V0IHRoZSAjV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyIG9mIEBjb250ZXh0LgorICoK
KyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlICNXZWJLaXRHZW9sb2NhdGlvbk1hbmFn
ZXIgb2YgQGNvbnRleHQuCisgKgorICogU2luY2U6IDIuMjYKKyAqLworV2ViS2l0R2VvbG9jYXRp
b25NYW5hZ2VyKiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2dlb2xvY2F0aW9uX21hbmFnZXIoV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCksIG51bGxwdHIpOworCisgICAgcmV0dXJuIGNvbnRl
eHQtPnByaXYtPmdlb2xvY2F0aW9uTWFuYWdlci5nZXQoKTsKK30KKwogc3RhdGljIHZvaWQgZW5z
dXJlRmF2aWNvbkRhdGFiYXNlKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSBjb250ZXh0LT5wcml2OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25NYW5h
Z2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIwN2M1Zjg4NjA0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRHZW9sb2NhdGlvbk1hbmFnZXIuaApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18p
ICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIv
d2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYg
V2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyX2gKKyNkZWZpbmUgV2ViS2l0R2VvbG9jYXRpb25NYW5h
Z2VyX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9HRU9M
T0NBVElPTl9NQU5BR0VSICAgICAgICAgICAgKHdlYmtpdF9nZW9sb2NhdGlvbl9tYW5hZ2VyX2dl
dF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9HRU9MT0NBVElPTl9NQU5BR0VSKG9iaikgICAgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0dFT0xP
Q0FUSU9OX01BTkFHRVIsIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlcikpCisjZGVmaW5lIFdFQktJ
VF9JU19HRU9MT0NBVElPTl9NQU5BR0VSKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX01BTkFHRVIpKQorI2RlZmlu
ZSBXRUJLSVRfR0VPTE9DQVRJT05fTUFOQUdFUl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVD
S19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9NQU5BR0VSLCBX
ZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19HRU9MT0NB
VElPTl9NQU5BR0VSX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNz
KSwgIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX01BTkFHRVIpKQorI2RlZmluZSBXRUJLSVRfR0VP
TE9DQVRJT05fTUFOQUdFUl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xB
U1MoKG9iaiksICBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9NQU5BR0VSLCBXZWJLaXRHZW9sb2Nh
dGlvbk1hbmFnZXJDbGFzcykpCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUE9T
SVRJT04gICAgICAgICAgICh3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fZ2V0X3R5cGUoKSkK
KwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlciAgICAgICAgV2ViS2l0
R2VvbG9jYXRpb25NYW5hZ2VyOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uTWFu
YWdlckNsYXNzICAgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyQ2xhc3M7Cit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyUHJpdmF0ZSBXZWJLaXRHZW9sb2NhdGlvbk1hbmFn
ZXJQcml2YXRlOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24gICAg
ICAgV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbjsKKworc3RydWN0IF9XZWJLaXRHZW9sb2NhdGlv
bk1hbmFnZXIgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgLyo8IHByaXZhdGUgPiovCisg
ICAgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBf
V2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRf
Y2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lk
ICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZl
ZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisK
K1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9nZW9sb2NhdGlvbl9tYW5hZ2VyX2dldF90eXBlICAg
ICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2dlbG9jYXRp
b25fbWFuYWdlcl91cGRhdGVfcG9zaXRpb24gICAgICAgICAgIChXZWJLaXRHZW9sb2NhdGlvbk1h
bmFnZXIgICptYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbik7CisKK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X2dlbG9jYXRpb25fbWFuYWdlcl9mYWlsZWQgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIgICptYW5hZ2VyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAg
ICAgICAgICAgICAgICplcnJvcl9tZXNzYWdlKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Vi
a2l0X2dlb2xvY2F0aW9uX21hbmFnZXJfZ2V0X2VuYWJsZV9oaWdoX2FjY3VyYWN5IChXZWJLaXRH
ZW9sb2NhdGlvbk1hbmFnZXIgICptYW5hZ2VyKTsKKworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJr
aXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fZ2V0X3R5cGUgICAgICAgICAgICAgICAgKHZvaWQpOwor
CitXRUJLSVRfQVBJIFdlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24gKgord2Via2l0X2dlb2xvY2F0
aW9uX3Bvc2l0aW9uX25ldyAgICAgICAgICAgICAgICAgICAgIChkb3VibGUgICAgICAgICAgICAg
ICAgICAgICBsYXRpdHVkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG91YmxlICAgICAgICAgICAgICAgICAgICAgbG9uZ2l0dWRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUg
ICAgICAgICAgICAgICAgICAgICBhY2N1cmFjeSk7CisKK1dFQktJVF9BUEkgV2ViS2l0R2VvbG9j
YXRpb25Qb3NpdGlvbiAqCit3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fY29weSAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKTsKKworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fZnJlZSAgICAgICAgICAg
ICAgICAgICAgKFdlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKTsKKworV0VCS0lU
X0FQSSB2b2lkCit3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X3RpbWVzdGFtcCAgICAg
ICAgICAgKFdlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDY0ICAgICAgICAg
ICAgICAgICAgICB0aW1lc3RhbXApOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9nZW9sb2Nh
dGlvbl9wb3NpdGlvbl9zZXRfYWx0aXR1ZGUgICAgICAgICAgICAoV2ViS2l0R2VvbG9jYXRpb25Q
b3NpdGlvbiAqcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSAgICAgICAgICAgICAgICAgICAgIGFsdGl0dWRlKTsKKwor
V0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X2FsdGl0dWRl
X2FjY3VyYWN5ICAgKFdlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgICAg
ICAgICAgICAgICAgICAgICBhbHRpdHVkZV9hY2N1cmFjeSk7CisKK1dFQktJVF9BUEkgdm9pZAor
d2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3NldF9oZWFkaW5nICAgICAgICAgICAgIChXZWJL
aXRHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICAgICAgICAgICAgICAgICAgICAg
aGVhZGluZyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9u
X3NldF9zcGVlZCAgICAgICAgICAgICAgIChXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uICpwb3Np
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlICAgICAgICAgICAgICAgICAgICAgc3BlZWQpOworCitHX0VORF9ERUNMUworCisj
ZW5kaWYgLyogV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggODEzNTFhZjNj
NTEuLjgyYThkODI4ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0RGVmaW5lcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RG93bmxvYWQuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZhdmljb25EYXRhYmFzZS5oPgorI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXROZXR3b3JrUHJveHlTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2VjdXJp
dHlNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0Lmg+
CkBAIC0yMTQsNiArMjE1LDkgQEAgd2Via2l0X3dlYl9jb250ZXh0X2Rvd25sb2FkX3VyaSAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0CiBXRUJLSVRfQVBJIFdlYktpdENvb2tp
ZU1hbmFnZXIgKgogd2Via2l0X3dlYl9jb250ZXh0X2dldF9jb29raWVfbWFuYWdlciAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCk7CiAKK1dFQktJ
VF9BUEkgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyICoKK3dlYmtpdF93ZWJfY29udGV4dF9nZXRf
Z2VvbG9jYXRpb25fbWFuYWdlciAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAg
ICAgKmNvbnRleHQpOworCiBXRUJLSVRfQVBJIFdlYktpdEZhdmljb25EYXRhYmFzZSAqCiB3ZWJr
aXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2UgICAgICAgICAgICAgKFdlYktpdFdl
YkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0
aW9ucy50eHQKaW5kZXggMDZkNzQ1MDdmOWQuLmVlZTEwMWEzNmY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LTQuMC1zZWN0aW9ucy50eHQKQEAgLTQ0LDYgKzQ0LDcgQEAgd2Via2l0X3dlYl9jb250ZXh0X2Ns
ZWFyX2NhY2hlCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X25ldHdvcmtfcHJveHlfc2V0dGluZ3MK
IHdlYmtpdF93ZWJfY29udGV4dF9kb3dubG9hZF91cmkKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
Y29va2llX21hbmFnZXIKK3dlYmtpdF93ZWJfY29udGV4dF9nZXRfZ2VvbG9jYXRpb25fbWFuYWdl
cgogd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNlCiB3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5CiB3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5CkBAIC0xNDkzLDYgKzE0OTQsNDAgQEAgd2Vi
a2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X3R5cGUKIFdFQktJVF9UWVBFX0FQUExJQ0FUSU9OX0lO
Rk8KIDwvU0VDVElPTj4KIAorPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRHZW9sb2NhdGlvbk1hbmFn
ZXI8L0ZJTEU+CitXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIKK3dlYmtpdF9nZWxvY2F0aW9uX21h
bmFnZXJfdXBkYXRlX3Bvc2l0aW9uCit3ZWJraXRfZ2Vsb2NhdGlvbl9tYW5hZ2VyX2ZhaWxlZAor
d2Via2l0X2dlb2xvY2F0aW9uX21hbmFnZXJfZ2V0X2VuYWJsZV9oaWdoX2FjY3VyYWN5CisKKzxT
VUJTRUNUSU9OIFBvc2l0aW9uPgorV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbgord2Via2l0X2dl
b2xvY2F0aW9uX3Bvc2l0aW9uX25ldword2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2NvcHkK
K3dlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9mcmVlCit3ZWJraXRfZ2VvbG9jYXRpb25fcG9z
aXRpb25fc2V0X3RpbWVzdGFtcAord2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3NldF9hbHRp
dHVkZQord2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3NldF9hbHRpdHVkZV9hY2N1cmFjeQor
d2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3NldF9oZWFkaW5nCit3ZWJraXRfZ2VvbG9jYXRp
b25fcG9zaXRpb25fc2V0X3NwZWVkCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRHZW9s
b2NhdGlvbk1hbmFnZXJQcml2YXRlCit3ZWJraXRfZ2VvbG9jYXRpb25fbWFuYWdlcl9nZXRfdHlw
ZQord2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2dldF90eXBlCisKKzxTVUJTRUNUSU9OIFN0
YW5kYXJkPgorV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyQ2xhc3MKK1dFQktJVF9UWVBFX0dFT0xP
Q0FUSU9OX01BTkFHRVIKK1dFQktJVF9HRU9MT0NBVElPTl9NQU5BR0VSCitXRUJLSVRfSVNfR0VP
TE9DQVRJT05fTUFOQUdFUgorV0VCS0lUX0dFT0xPQ0FUSU9OX01BTkFHRVJfQ0xBU1MKK1dFQktJ
VF9JU19HRU9MT0NBVElPTl9NQU5BR0VSX0NMQVNTCitXRUJLSVRfR0VPTE9DQVRJT05fTUFOQUdF
Ul9HRVRfQ0xBU1MKK1dFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BPU0lUSU9OCis8L1NFQ1RJT04+
CisKIDxTRUNUSU9OPgogPEZJTEU+V2ViS2l0V2ViRXh0ZW5zaW9uPC9GSUxFPgogV2ViS2l0V2Vi
RXh0ZW5zaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAudHlwZXMgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKaW5kZXggY2ZlZDY3MzUxNjMuLmFkNWIwMjZiNjdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAudHlwZXMKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLnR5cGVzCkBAIC00MCwzICs0MCw1IEBAIHdlYmtpdF9hdXRvbWF0aW9u
X3Nlc3Npb25fZ2V0X3R5cGUKIHdlYmtpdF9vcHRpb25fbWVudV9nZXRfdHlwZQogd2Via2l0X29w
dGlvbl9tZW51X2l0ZW1fZ2V0X3R5cGUKIHdlYmtpdF9kZXZpY2VfaW5mb19wZXJtaXNzaW9uX3Jl
cXVlc3RfZ2V0X3R5cGUKK3dlYmtpdF9nZW9sb2NhdGlvbl9tYW5hZ2VyX2dldF90eXBlCit3ZWJr
aXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fZ2V0X3R5cGUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggYWNlZWE1NGNmMTMuLjlkM2EyYmQ0NDhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1k
b2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstZG9jcy5zZ21sCkBAIC02Miw2ICs2Miw3IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL1dlYktpdE5ldHdvcmtQcm94eVNldHRpbmdzLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhy
ZWY9InhtbC9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvV2ViS2l0QXBwbGljYXRpb25JbmZvLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhy
ZWY9InhtbC9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIueG1sIi8+CiAgIDwvY2hhcHRlcj4KIAog
ICA8Y2hhcHRlcj4KQEAgLTE0OSw1ICsxNTAsMTAgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvYXBpLWluZGV4LTIuMjQueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CiAgIDwv
aW5kZXg+CiAKKyAgPGluZGV4IGlkPSJhcGktaW5kZXgtMi0yNiIgcm9sZT0iMi4yNiI+CisgICAg
PHRpdGxlPkluZGV4IG9mIG5ldyBzeW1ib2xzIGluIDIuMjY8L3RpdGxlPgorICAgIDx4aTppbmNs
dWRlIGhyZWY9InhtbC9hcGktaW5kZXgtMi4yNi54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5j
bHVkZT4KKyAgPC9pbmRleD4KKwogICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYW5ub3RhdGlvbi1n
bG9zc2FyeS54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KIDwvYm9vaz4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5kZXggMTQ3MGIyNzUzNDYuLmYz
ZWRjY2UxZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dl
YmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApA
QCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmlsZUNob29zZXJSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGaW5kQ29udHJvbGxlci5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dEhpdFRlc3RSZXN1bHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEluc3RhbGxNaXNzaW5n
TWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42MDljYjRjZDFhNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0R2VvbG9jYXRp
b25NYW5hZ2VyLmgKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
SWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUX0hfSU5TSURFX18pICYmICFkZWZpbmVk
KFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdwZS93ZWJraXQuaD4gY2FuIGJl
IGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdEdlb2xvY2F0aW9u
TWFuYWdlcl9oCisjZGVmaW5lIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlcl9oCisKKyNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVH
SU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9NQU5BR0VSICAgICAg
ICAgICAgKHdlYmtpdF9nZW9sb2NhdGlvbl9tYW5hZ2VyX2dldF90eXBlKCkpCisjZGVmaW5lIFdF
QktJVF9HRU9MT0NBVElPTl9NQU5BR0VSKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lO
U1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX01BTkFHRVIsIFdlYktp
dEdlb2xvY2F0aW9uTWFuYWdlcikpCisjZGVmaW5lIFdFQktJVF9JU19HRU9MT0NBVElPTl9NQU5B
R0VSKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJ
VF9UWVBFX0dFT0xPQ0FUSU9OX01BTkFHRVIpKQorI2RlZmluZSBXRUJLSVRfR0VPTE9DQVRJT05f
TUFOQUdFUl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyks
ICBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9NQU5BR0VSLCBXZWJLaXRHZW9sb2NhdGlvbk1hbmFn
ZXJDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19HRU9MT0NBVElPTl9NQU5BR0VSX0NMQVNTKGts
YXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0dFT0xP
Q0FUSU9OX01BTkFHRVIpKQorI2RlZmluZSBXRUJLSVRfR0VPTE9DQVRJT05fTUFOQUdFUl9HRVRf
Q0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQ
RV9HRU9MT0NBVElPTl9NQU5BR0VSLCBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJDbGFzcykpCisK
KyNkZWZpbmUgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUE9TSVRJT04gICAgICAgICAgICh3ZWJr
aXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fZ2V0X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdEdlb2xvY2F0aW9uTWFuYWdlciAgICAgICAgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyOwor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlckNsYXNzICAgV2ViS2l0R2Vv
bG9jYXRpb25NYW5hZ2VyQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25N
YW5hZ2VyUHJpdmF0ZSBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXJQcml2YXRlOwordHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24gICAgICAgV2ViS2l0R2VvbG9jYXRpb25Q
b3NpdGlvbjsKKworc3RydWN0IF9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIgeworICAgIEdPYmpl
Y3QgcGFyZW50OworCisgICAgLyo8IHByaXZhdGUgPiovCisgICAgV2ViS2l0R2VvbG9jYXRpb25N
YW5hZ2VyUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25NYW5h
Z2VyQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgq
X3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEp
ICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lk
ICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dl
YmtpdF9nZW9sb2NhdGlvbl9tYW5hZ2VyX2dldF90eXBlICAgICAgICAgICAgICAgICAodm9pZCk7
CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2dlbG9jYXRpb25fbWFuYWdlcl91cGRhdGVfcG9z
aXRpb24gICAgICAgICAgIChXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIgICptYW5hZ2VyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRH
ZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X2dlbG9jYXRpb25fbWFuYWdlcl9mYWlsZWQgICAgICAgICAgICAgICAgICAgIChXZWJLaXRHZW9s
b2NhdGlvbk1hbmFnZXIgICptYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICAgICAgICAgICAgICplcnJvcl9t
ZXNzYWdlKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2dlb2xvY2F0aW9uX21hbmFn
ZXJfZ2V0X2VuYWJsZV9oaWdoX2FjY3VyYWN5IChXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIgICpt
YW5hZ2VyKTsKKworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRp
b25fZ2V0X3R5cGUgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdEdl
b2xvY2F0aW9uUG9zaXRpb24gKgord2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX25ldyAgICAg
ICAgICAgICAgICAgICAgIChkb3VibGUgICAgICAgICAgICAgICAgICAgICBsYXRpdHVkZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91Ymxl
ICAgICAgICAgICAgICAgICAgICAgbG9uZ2l0dWRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgICAgICAgICAgICAgICAgICAgICBh
Y2N1cmFjeSk7CisKK1dFQktJVF9BUEkgV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbiAqCit3ZWJr
aXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fY29weSAgICAgICAgICAgICAgICAgICAgKFdlYktpdEdl
b2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
Z2VvbG9jYXRpb25fcG9zaXRpb25fZnJlZSAgICAgICAgICAgICAgICAgICAgKFdlYktpdEdlb2xv
Y2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZ2Vv
bG9jYXRpb25fcG9zaXRpb25fc2V0X3RpbWVzdGFtcCAgICAgICAgICAgKFdlYktpdEdlb2xvY2F0
aW9uUG9zaXRpb24gKnBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXAp
OworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfYWx0
aXR1ZGUgICAgICAgICAgICAoV2ViS2l0R2VvbG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJs
ZSAgICAgICAgICAgICAgICAgICAgIGFsdGl0dWRlKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X2FsdGl0dWRlX2FjY3VyYWN5ICAgKFdlYktpdEdl
b2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgICAgICAgICAgICAgICAgICAgICBhbHRp
dHVkZV9hY2N1cmFjeSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2dlb2xvY2F0aW9uX3Bv
c2l0aW9uX3NldF9oZWFkaW5nICAgICAgICAgICAgIChXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9u
ICpwb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZG91YmxlICAgICAgICAgICAgICAgICAgICAgaGVhZGluZyk7CisKK1dFQktJVF9B
UEkgdm9pZAord2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3NldF9zcGVlZCAgICAgICAgICAg
ICAgIChXZWJLaXRHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICAgICAgICAgICAg
ICAgICAgICAgc3BlZWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0R2VvbG9j
YXRpb25NYW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggMDgxY2QxMWEzNDIuLmEzMjY4MGZhODMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYkNvbnRleHQu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZpbmVzLmg+CiAjaW5j
bHVkZSA8d3BlL1dlYktpdERvd25sb2FkLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdEZhdmljb25E
YXRhYmFzZS5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuaD4KICNp
bmNsdWRlIDx3cGUvV2ViS2l0TmV0d29ya1Byb3h5U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3cGUv
V2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFVSSVNjaGVtZVJl
cXVlc3QuaD4KQEAgLTIxNCw2ICsyMTUsOSBAQCB3ZWJraXRfd2ViX2NvbnRleHRfZG93bmxvYWRf
dXJpICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQKIFdFQktJVF9BUEkgV2Vi
S2l0Q29va2llTWFuYWdlciAqCiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Nvb2tpZV9tYW5hZ2Vy
ICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0KTsK
IAorV0VCS0lUX0FQSSBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIgKgord2Via2l0X3dlYl9jb250
ZXh0X2dldF9nZW9sb2NhdGlvbl9tYW5hZ2VyICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAg
ICAgICAgICAgICAqY29udGV4dCk7CisKIFdFQktJVF9BUEkgV2ViS2l0RmF2aWNvbkRhdGFiYXNl
ICoKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZSAgICAgICAgICAgICAo
V2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50
eHQKaW5kZXggMThjOTFjODlhY2IuLjU2NzdmNTYyZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBA
IC0yMiw2ICsyMiw3IEBAIHdlYmtpdF93ZWJfY29udGV4dF9jbGVhcl9jYWNoZQogd2Via2l0X3dl
Yl9jb250ZXh0X3NldF9uZXR3b3JrX3Byb3h5X3NldHRpbmdzCiB3ZWJraXRfd2ViX2NvbnRleHRf
ZG93bmxvYWRfdXJpCiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Nvb2tpZV9tYW5hZ2VyCit3ZWJr
aXRfd2ViX2NvbnRleHRfZ2V0X2dlb2xvY2F0aW9uX21hbmFnZXIKIHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfZmF2aWNvbl9kYXRhYmFzZQogd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2Rh
dGFiYXNlX2RpcmVjdG9yeQogd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNl
X2RpcmVjdG9yeQpAQCAtMTM2Nyw2ICsxMzY4LDQwIEBAIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZv
X2dldF90eXBlCiBXRUJLSVRfVFlQRV9BUFBMSUNBVElPTl9JTkZPCiA8L1NFQ1RJT04+CiAKKzxT
RUNUSU9OPgorPEZJTEU+V2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyPC9GSUxFPgorV2ViS2l0R2Vv
bG9jYXRpb25NYW5hZ2VyCit3ZWJraXRfZ2Vsb2NhdGlvbl9tYW5hZ2VyX3VwZGF0ZV9wb3NpdGlv
bgord2Via2l0X2dlbG9jYXRpb25fbWFuYWdlcl9mYWlsZWQKK3dlYmtpdF9nZW9sb2NhdGlvbl9t
YW5hZ2VyX2dldF9lbmFibGVfaGlnaF9hY2N1cmFjeQorCis8U1VCU0VDVElPTiBQb3NpdGlvbj4K
K1dlYktpdEdlb2xvY2F0aW9uUG9zaXRpb24KK3dlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9u
ZXcKK3dlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9jb3B5Cit3ZWJraXRfZ2VvbG9jYXRpb25f
cG9zaXRpb25fZnJlZQord2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3NldF90aW1lc3RhbXAK
K3dlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9zZXRfYWx0aXR1ZGUKK3dlYmtpdF9nZW9sb2Nh
dGlvbl9wb3NpdGlvbl9zZXRfYWx0aXR1ZGVfYWNjdXJhY3kKK3dlYmtpdF9nZW9sb2NhdGlvbl9w
b3NpdGlvbl9zZXRfaGVhZGluZword2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3NldF9zcGVl
ZAorCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyUHJpdmF0
ZQord2Via2l0X2dlb2xvY2F0aW9uX21hbmFnZXJfZ2V0X3R5cGUKK3dlYmtpdF9nZW9sb2NhdGlv
bl9wb3NpdGlvbl9nZXRfdHlwZQorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdEdlb2xv
Y2F0aW9uTWFuYWdlckNsYXNzCitXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9NQU5BR0VSCitXRUJL
SVRfR0VPTE9DQVRJT05fTUFOQUdFUgorV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX01BTkFHRVIKK1dF
QktJVF9HRU9MT0NBVElPTl9NQU5BR0VSX0NMQVNTCitXRUJLSVRfSVNfR0VPTE9DQVRJT05fTUFO
QUdFUl9DTEFTUworV0VCS0lUX0dFT0xPQ0FUSU9OX01BTkFHRVJfR0VUX0NMQVNTCitXRUJLSVRf
VFlQRV9HRU9MT0NBVElPTl9QT1NJVElPTgorPC9TRUNUSU9OPgorCiA8U0VDVElPTj4KIDxGSUxF
PldlYktpdFVSSVV0aWxpdGllczwvRklMRT4KIHdlYmtpdF91cmlfZm9yX2Rpc3BsYXkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtZG9jcy5zZ21s
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS1kb2NzLnNnbWwKaW5k
ZXggZjZlYjM4ZGFhOTMuLmM3YjM2ZDBmMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLWRvY3Muc2dtbApAQCAtNTYsNiArNTYsNyBAQAogICAg
IDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi54bWwiLz4KICAg
ICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXBwbGljYXRpb25JbmZvLnhtbCIvPgogICAg
IDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRDb2xvci54bWwiLz4KKyAgICA8eGk6aW5jbHVk
ZSBocmVmPSJ4bWwvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLnhtbCIvPgogICA8L2NoYXB0ZXI+
CiAKICAgPGNoYXB0ZXI+CkBAIC04Miw1ICs4MywxNSBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC9hcGktaW5kZXgtMi4yMi54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KICAg
PC9pbmRleD4KIAorICA8aW5kZXggaWQ9ImFwaS1pbmRleC0yLTI0IiByb2xlPSIyLjI0Ij4KKyAg
ICA8dGl0bGU+SW5kZXggb2YgbmV3IHN5bWJvbHMgaW4gMi4yNDwvdGl0bGU+CisgICAgPHhpOmlu
Y2x1ZGUgaHJlZj0ieG1sL2FwaS1pbmRleC0yLjI0LnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTpp
bmNsdWRlPgorICA8L2luZGV4PgorCisgIDxpbmRleCBpZD0iYXBpLWluZGV4LTItMjYiIHJvbGU9
IjIuMjYiPgorICAgIDx0aXRsZT5JbmRleCBvZiBuZXcgc3ltYm9scyBpbiAyLjI2PC90aXRsZT4K
KyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWluZGV4LTIuNjIueG1sIj48eGk6ZmFsbGJh
Y2sgLz48L3hpOmluY2x1ZGU+CisgIDwvaW5kZXg+CisKICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1s
L2Fubm90YXRpb24tZ2xvc3NhcnkueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CiA8
L2Jvb2s+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtp
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaAppbmRleCBlYzJh
NjFkYjlhMC4uNDg1MjNiNDdkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvd2Via2l0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93
ZWJraXQuaApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPHdwZS9XZWJLaXRGYXZpY29uRGF0
YWJhc2UuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0RmluZENvbnRyb2xsZXIuaD4KICNpbmNsdWRl
IDx3cGUvV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d3BlL1dlYktp
dEdlb2xvY2F0aW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdEhpdFRlc3RSZXN1bHQuaD4K
ICNpbmNsdWRlIDx3cGUvV2ViS2l0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9u
UmVxdWVzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9T
b3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCA4YTBjZDNiZTJhYi4uZjZjZmViNjIy
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC04MCw2ICs4MCw3IEBAIFdFQktJVF9PUFRJT05f
REVGSU5FKEVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyICJXaGV0aGVyIHRvIGJ1aWxkIFdlYktp
dFBsdWdpblByCiBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfUVVBUlRaX1RBUkdFVCAiV2hl
dGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIFF1YXJ0eiB3aW5kb3dpbmcgdGFyZ2V0LiIg
UFVCTElDICR7R1RLM19TVVBQT1JUU19RVUFSVFp9KQogV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX1gxMV9UQVJHRVQgIldoZXRoZXIgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBYMTEgd2lu
ZG93aW5nIHRhcmdldC4iIFBVQkxJQyAke0dUSzNfU1VQUE9SVFNfWDExfSkKIFdFQktJVF9PUFRJ
T05fREVGSU5FKEVOQUJMRV9XQVlMQU5EX1RBUkdFVCAiV2hldGhlciB0byBlbmFibGUgc3VwcG9y
dCBmb3IgdGhlIFdheWxhbmQgd2luZG93aW5nIHRhcmdldC4iIFBVQkxJQyAke0dUSzNfU1VQUE9S
VFNfV0FZTEFORH0pCitXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfR0VPQ0xVRSAiV2hldGhlciB0
byBlbmFibGUgZGVmYXVsdCBnZW9sb2NhdGlvbiBpbXBsZW1lbnRhdGlvbiB1c2luZyBHZW9DbHVl
MiIgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX0xJQk5PVElGWSAiV2hldGhl
ciB0byBlbmFibGUgdGhlIGRlZmF1bHQgd2ViIG5vdGlmaWNhdGlvbiBpbXBsZW1lbnRhdGlvbi4i
IFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9MSUJIWVBIRU4gIldoZXRoZXIg
dG8gZW5hYmxlIHRoZSBkZWZhdWx0IGF1dG9tYXRpYyBoeXBoZW5hdGlvbiBpbXBsZW1lbnRhdGlv
bi4iIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9MSUJTRUNSRVQgIldoZXRo
ZXIgdG8gZW5hYmxlIHRoZSBwZXJzaXN0ZW50IGNyZWRlbnRpYWwgc3RvcmFnZSB1c2luZyBsaWJz
ZWNyZXQuIiBQVUJMSUMgT04pCkBAIC0xNDAsNyArMTQxLDYgQEAgZW5kaWYgKCkKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMgUFVC
TElDIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BU1lOQ19T
Q1JPTExJTkcgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9EUkFHX1NVUFBPUlQgUFVCTElDIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0dFT0xPQ0FUSU9OIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9JQ09OREFUQUJBU0UgUFVCTElDIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NQRUxMQ0hFQ0sgUFVCTElDIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RPVUNIX0VWRU5UUyBQVUJMSUMgT04p
CkBAIC0yMjIsMTAgKzIyMiwxMCBAQCBpZiAoVVNFX0xJQlNFQ1JFVCkKICAgICBlbmRpZiAoKQog
ZW5kaWYgKCkKIAotaWYgKEVOQUJMRV9HRU9MT0NBVElPTikKK2lmIChVU0VfR0VPQ0xVRSkKICAg
ICBmaW5kX3BhY2thZ2UoR2VvQ2x1ZTIgMi4xLjUpCiAgICAgaWYgKE5PVCBHRU9DTFVFMl9GT1VO
RCkKLSAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiR2VvY2x1ZSBpcyBuZWVkZWQgZm9yIEVO
QUJMRV9HRU9MT0NBVElPTi4iKQorICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJHZW9jbHVl
IGlzIG5lZWRlZCBmb3IgVVNFX0dFT0NMVUUuIikKICAgICBlbmRpZiAoKQogZW5kaWYgKCkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc1dQRS5jbWFrZQppbmRleCBiNTcxMDRkNThkZC4uNWQ3YzliMzNjNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zV1BFLmNtYWtlCkBAIC00OCw3ICs0OCw2IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9YU0xUIFBVQkxJQyBPTikKICMgQ2hhbmdpbmcgdGhlc2Ugb3B0aW9ucyBp
cyBjb21wbGV0ZWx5IHVuc3VwcG9ydGVkLgogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0FTWU5DX1NDUk9MTElORyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX0NPTlRFTlRfRVhURU5TSU9OUyBQUklWQVRFIE9OKQotV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0dFT0xPQ0FUSU9OIFBSSVZBVEUg
T0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01IVE1MIFBSSVZB
VEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVf
UExVR0lOX0FQSSBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9OT1RJRklDQVRJT05TIFBSSVZBVEUgT0ZGKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDUxMDhjOGZhNDIzLi4xMmJlZGYzMTk3NyAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIyIEBACisyMDE5LTAzLTE5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8gcHJvdmlkZSBnZW9sb2Nh
dGlvbiBpbmZvcm1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk1OTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgbmV3IHRlc3QgdG8gY2hlY2sgdGhlIG5ldyBBUEkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEdlb2xvY2F0aW9uTWFuYWdlci5j
cHA6IEFkZGVkLgorICAgICAgICAodGVzdEdlb2xvY2F0aW9uTWFuYWdlckN1cnJlbnRQb3NpdGlv
bik6CisgICAgICAgICh0ZXN0R2VvbG9jYXRpb25NYW5hZ2VyV2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgIChiZWZvcmVBbGwpOgorICAgICAgICAoYWZ0ZXJBbGwpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwOgorICAgICAgICAodGVzdFdl
YlZpZXdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyk6IFN0b3AgdXNpbmcgRU5BQkxFKEdF
T0xPQ0FUSU9OKSBjb25kaXRpb25hbHMgZm9yIGdlb2xvY2F0aW9uIHRlc3RzLgorICAgICAgICAo
YmVmb3JlQWxsKTogRGl0dG8uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlz
dHMudHh0OgorCiAyMDE5LTAzLTE5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIGZvbGxvdy11cCB0byByMjQzMDczLCBmaXhpbmcgV1BF
IE1pbmlCcm93c2VyIGxhdW5jaGluZy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTgxYjVlZmE0YjQKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEdlb2xv
Y2F0aW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSwzMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0TWFp
bi5oIgorCisjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUu
aD4KKworY2xhc3MgR2VvbG9jYXRpb25UZXN0OiBwdWJsaWMgV2ViVmlld1Rlc3QgeworcHVibGlj
OgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoR2VvbG9jYXRpb25UZXN0KTsKKworICAgIHN0
cnVjdCBQb3NpdGlvbiB7CisgICAgICAgIGRvdWJsZSB0aW1lc3RhbXAgeyBzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpIH07CisgICAgICAgIGRvdWJsZSBsYXRpdHVkZSB7
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkgfTsKKyAgICAgICAgZG91
YmxlIGxvbmdpdHVkZSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkg
fTsKKyAgICAgICAgZG91YmxlIGFjY3VyYWN5IHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKSB9OworCisgICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGU7Cisg
ICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeTsKKyAgICAgICAgT3B0aW9u
YWw8ZG91YmxlPiBoZWFkaW5nOworICAgICAgICBPcHRpb25hbDxkb3VibGU+IHNwZWVkOworICAg
IH07CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gc3RhcnRDYWxsYmFjayhXZWJLaXRHZW9sb2NhdGlv
bk1hbmFnZXIqIG1hbmFnZXIsIEdlb2xvY2F0aW9uVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAg
IGdfYXNzZXJ0X3RydWUodGVzdC0+bV9tYW5hZ2VyID09IG1hbmFnZXIpOworICAgICAgICB0ZXN0
LT5zdGFydCgpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9p
ZCBzdG9wQ2FsbGJhY2soV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiBtYW5hZ2VyLCBHZW9sb2Nh
dGlvblRlc3QqIHRlc3QpCisgICAgeworICAgICAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fbWFu
YWdlciA9PSBtYW5hZ2VyKTsKKyAgICAgICAgdGVzdC0+c3RvcCgpOworICAgIH0KKworICAgIHN0
YXRpYyBnYm9vbGVhbiBwZXJtaXNzaW9uUmVxdWVzdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCwgR2VvbG9jYXRpb25UZXN0KiB0ZXN0KQorICAgIHsK
KyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVl
c3QpKTsKKyAgICAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHX09CSkVDVChyZXF1ZXN0KSk7CisKKyAgICAgICAgaWYgKFdFQktJVF9JU19HRU9MT0NBVElP
Tl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpIHsKKyAgICAgICAgICAgIHdlYmtpdF9wZXJt
aXNzaW9uX3JlcXVlc3RfYWxsb3cocmVxdWVzdCk7CisgICAgICAgICAgICByZXR1cm4gVFJVRTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBHZW9sb2Nh
dGlvblRlc3QoKQorICAgICAgICA6IG1fbWFuYWdlcih3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2dl
b2xvY2F0aW9uX21hbmFnZXIobV93ZWJDb250ZXh0LmdldCgpKSkKKyAgICB7CisgICAgICAgIGdf
YXNzZXJ0X3RydWUoV0VCS0lUX0lTX0dFT0xPQ0FUSU9OX01BTkFHRVIobV9tYW5hZ2VyKSk7Cisg
ICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobV9t
YW5hZ2VyKSk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9tYW5hZ2VyLCAic3RhcnQiLCBH
X0NBTExCQUNLKHN0YXJ0Q2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVj
dChtX21hbmFnZXIsICJzdG9wIiwgR19DQUxMQkFDSyhzdG9wQ2FsbGJhY2spLCB0aGlzKTsKKyAg
ICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJwZXJtaXNzaW9uLXJlcXVlc3QiLCBH
X0NBTExCQUNLKHBlcm1pc3Npb25SZXF1ZXN0ZWQpLCB0aGlzKTsKKyAgICB9CisKKyAgICB+R2Vv
bG9jYXRpb25UZXN0KCkKKyAgICB7CisgICAgICAgIGlmIChtX2NoZWNrUG9zaXRpb24pCisgICAg
ICAgICAgICB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fZnJlZShtX2NoZWNrUG9zaXRpb24p
OworCisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX21hbmFn
ZXIsIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIHRoaXMpOwor
ICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQobV93ZWJWaWV3LCBH
X1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCB0aGlzKTsKKyAgICB9
CisKKyAgICB2b2lkIHN0YXJ0KCkKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKG1fdXBk
YXRpbmcpOworICAgICAgICBtX3VwZGF0aW5nID0gdHJ1ZTsKKworICAgICAgICBpZiAobV9lcnJv
ck1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKG1fY2hlY2tQb3NpdGlvbik7
CisgICAgICAgICAgICB3ZWJraXRfZ2Vsb2NhdGlvbl9tYW5hZ2VyX2ZhaWxlZChtX21hbmFnZXIs
IG1fZXJyb3JNZXNzYWdlLmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX2NoZWNr
UG9zaXRpb24pIHsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKG1fZXJyb3JNZXNzYWdlLmdl
dCgpKTsKKyAgICAgICAgICAgIHdlYmtpdF9nZWxvY2F0aW9uX21hbmFnZXJfdXBkYXRlX3Bvc2l0
aW9uKG1fbWFuYWdlciwgbV9jaGVja1Bvc2l0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIGdf
bWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7CisgICAgfQorCisgICAgdm9pZCBzdG9wKCkKKyAg
ICB7CisgICAgICAgIGdfYXNzZXJ0X3RydWUobV91cGRhdGluZyk7CisgICAgICAgIG1fdXBkYXRp
bmcgPSBmYWxzZTsKKyAgICAgICAgaWYgKG1fd2F0Y2hpbmcpCisgICAgICAgICAgICBnX21haW5f
bG9vcF9xdWl0KG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIFBvc2l0aW9uIGxhc3RQb3NpdGlv
bigpCisgICAgeworICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAg
IGF1dG8qIGphdmFzY3JpcHRSZXN1bHQgPSBydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNo
ZWQoInBvc2l0aW9uIiwgJmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVs
bChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0
KCkpOworCisgICAgICAgIGF1dG8qIGpzUG9zaXRpb24gPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1
bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpOworICAgICAgICBnX2Fzc2VydF90cnVl
KGpzY192YWx1ZV9pc19vYmplY3QoanNQb3NpdGlvbikpOworICAgICAgICBQb3NpdGlvbiByZXN1
bHQ7CisgICAgICAgIEdSZWZQdHI8SlNDVmFsdWU+IHZhbHVlID0gYWRvcHRHUmVmKGpzY192YWx1
ZV9vYmplY3RfZ2V0X3Byb3BlcnR5KGpzUG9zaXRpb24sICJsYXRpdHVkZSIpKTsKKyAgICAgICAg
Z19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfbnVtYmVyKHZhbHVlLmdldCgpKSk7CisgICAgICAg
IHJlc3VsdC5sYXRpdHVkZSA9IGpzY192YWx1ZV90b19kb3VibGUodmFsdWUuZ2V0KCkpOworICAg
ICAgICB2YWx1ZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eShqc1Bv
c2l0aW9uLCAibG9uZ2l0dWRlIikpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9p
c19udW1iZXIodmFsdWUuZ2V0KCkpKTsKKyAgICAgICAgcmVzdWx0LmxvbmdpdHVkZSA9IGpzY192
YWx1ZV90b19kb3VibGUodmFsdWUuZ2V0KCkpOworICAgICAgICB2YWx1ZSA9IGFkb3B0R1JlZihq
c2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eShqc1Bvc2l0aW9uLCAiYWNjdXJhY3kiKSk7Cisg
ICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX2lzX251bWJlcih2YWx1ZS5nZXQoKSkpOwor
ICAgICAgICByZXN1bHQuYWNjdXJhY3kgPSBqc2NfdmFsdWVfdG9fZG91YmxlKHZhbHVlLmdldCgp
KTsKKyAgICAgICAgdmFsdWUgPSBhZG9wdEdSZWYoanNjX3ZhbHVlX29iamVjdF9nZXRfcHJvcGVy
dHkoanNQb3NpdGlvbiwgImFsdGl0dWRlIikpOworICAgICAgICBpZiAoIWpzY192YWx1ZV9pc19u
dWxsKHZhbHVlLmdldCgpKSkgeworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVf
aXNfbnVtYmVyKHZhbHVlLmdldCgpKSk7CisgICAgICAgICAgICByZXN1bHQuYWx0aXR1ZGUgPSBq
c2NfdmFsdWVfdG9fZG91YmxlKHZhbHVlLmdldCgpKTsKKyAgICAgICAgfQorICAgICAgICB2YWx1
ZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eShqc1Bvc2l0aW9uLCAi
YWx0aXR1ZGVBY2N1cmFjeSIpKTsKKyAgICAgICAgaWYgKCFqc2NfdmFsdWVfaXNfbnVsbCh2YWx1
ZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX2lzX251bWJl
cih2YWx1ZS5nZXQoKSkpOworICAgICAgICAgICAgcmVzdWx0LmFsdGl0dWRlQWNjdXJhY3kgPSBq
c2NfdmFsdWVfdG9fZG91YmxlKHZhbHVlLmdldCgpKTsKKyAgICAgICAgfQorICAgICAgICB2YWx1
ZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eShqc1Bvc2l0aW9uLCAi
aGVhZGluZyIpKTsKKyAgICAgICAgaWYgKCFqc2NfdmFsdWVfaXNfbnVsbCh2YWx1ZS5nZXQoKSkp
IHsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX2lzX251bWJlcih2YWx1ZS5n
ZXQoKSkpOworICAgICAgICAgICAgcmVzdWx0LmhlYWRpbmcgPSBqc2NfdmFsdWVfdG9fZG91Ymxl
KHZhbHVlLmdldCgpKTsKKyAgICAgICAgfQorICAgICAgICB2YWx1ZSA9IGFkb3B0R1JlZihqc2Nf
dmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eShqc1Bvc2l0aW9uLCAic3BlZWQiKSk7CisgICAgICAg
IGlmICghanNjX3ZhbHVlX2lzX251bGwodmFsdWUuZ2V0KCkpKSB7CisgICAgICAgICAgICBnX2Fz
c2VydF90cnVlKGpzY192YWx1ZV9pc19udW1iZXIodmFsdWUuZ2V0KCkpKTsKKyAgICAgICAgICAg
IHJlc3VsdC5zcGVlZCA9IGpzY192YWx1ZV90b19kb3VibGUodmFsdWUuZ2V0KCkpOworICAgICAg
ICB9CisgICAgICAgIHZhbHVlID0gYWRvcHRHUmVmKGpzY192YWx1ZV9vYmplY3RfZ2V0X3Byb3Bl
cnR5KGpzUG9zaXRpb24sICJ0aW1lc3RhbXAiKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoanNj
X3ZhbHVlX2lzX251bWJlcih2YWx1ZS5nZXQoKSkpOworICAgICAgICByZXN1bHQudGltZXN0YW1w
ID0ganNjX3ZhbHVlX3RvX2RvdWJsZSh2YWx1ZS5nZXQoKSk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorCisgICAgUG9zaXRpb24gY2hlY2tDdXJyZW50UG9zaXRpb24oV2ViS2l0R2Vv
bG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24sIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5ID0gZmFs
c2UpCisgICAgeworICAgICAgICBnX2NsZWFyX3BvaW50ZXIoJm1fY2hlY2tQb3NpdGlvbiwgd2Vi
a2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2ZyZWUpOworICAgICAgICBtX2NoZWNrUG9zaXRpb24g
PSBwb3NpdGlvbjsKKworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBnZXRDdXJyZW50UG9zaXRp
b25bXSA9CisgICAgICAgICAgICAidmFyIHBvc2l0aW9uID0gbnVsbDtcbiIKKyAgICAgICAgICAg
ICJvcHRpb25zID0geyBlbmFibGVIaWdoQWNjdXJhY3k6ICVzIH1cbiIKKyAgICAgICAgICAgICJu
YXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHtcbiIK
KyAgICAgICAgICAgICIgIHBvc2l0aW9uID0geyB9O1xuIgorICAgICAgICAgICAgIiAgcG9zaXRp
b24ubGF0aXR1ZGUgPSBwLmNvb3Jkcy5sYXRpdHVkZTtcbiIKKyAgICAgICAgICAgICIgIHBvc2l0
aW9uLmxvbmdpdHVkZSA9IHAuY29vcmRzLmxvbmdpdHVkZTtcbiIKKyAgICAgICAgICAgICIgIHBv
c2l0aW9uLmFjY3VyYWN5ID0gcC5jb29yZHMuYWNjdXJhY3k7XG4iCisgICAgICAgICAgICAiICBw
b3NpdGlvbi5hbHRpdHVkZSA9IHAuY29vcmRzLmFsdGl0dWRlO1xuIgorICAgICAgICAgICAgIiAg
cG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSA9IHAuY29vcmRzLmFsdGl0dWRlQWNjdXJhY3k7XG4i
CisgICAgICAgICAgICAiICBwb3NpdGlvbi5oZWFkaW5nID0gcC5jb29yZHMuaGVhZGluZztcbiIK
KyAgICAgICAgICAgICIgIHBvc2l0aW9uLnNwZWVkID0gcC5jb29yZHMuc3BlZWQ7XG4iCisgICAg
ICAgICAgICAiICBwb3NpdGlvbi50aW1lc3RhbXAgPSBwLnRpbWVzdGFtcDtcbiIKKyAgICAgICAg
ICAgICJ9LCB1bmRlZmluZWQsIG9wdGlvbnMpOyI7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4g
c2NyaXB0KGdfc3RyZHVwX3ByaW50ZihnZXRDdXJyZW50UG9zaXRpb24sIGVuYWJsZUhpZ2hBY2N1
cmFjeSA/ICJ0cnVlIiA6ICJmYWxzZSIpKTsKKyAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOworICAgICAgICBydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoc2NyaXB0
LmdldCgpLCAmZXJyb3Iub3V0UHRyKCkpOworICAgICAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJv
ci5nZXQoKSk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICAgICAg
Z19jbGVhcl9wb2ludGVyKCZtX2NoZWNrUG9zaXRpb24sIHdlYmtpdF9nZW9sb2NhdGlvbl9wb3Np
dGlvbl9mcmVlKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfZ2VvbG9jYXRpb25fbWFu
YWdlcl9nZXRfZW5hYmxlX2hpZ2hfYWNjdXJhY3kobV9tYW5hZ2VyKSA9PSBlbmFibGVIaWdoQWNj
dXJhY3kpOworCisgICAgICAgIHJldHVybiBsYXN0UG9zaXRpb24oKTsKKyAgICB9CisKKyAgICBH
VW5pcXVlUHRyPGNoYXI+IGNoZWNrRmFpbGVkVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBjaGFy
KiBlcnJvck1lc3NhZ2UpCisgICAgeworICAgICAgICBtX2Vycm9yTWVzc2FnZS5yZXNldChnX3N0
cmR1cChlcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgZ2V0Q3VycmVu
dFBvc2l0aW9uW10gPQorICAgICAgICAgICAgInZhciBlcnJvcjtcbiIKKyAgICAgICAgICAgICJu
YXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKFxuIgorICAgICAgICAgICAg
IiAgZnVuY3Rpb24ocCkgeyBlcnJvciA9IG51bGw7IH0sXG4iCisgICAgICAgICAgICAiICBmdW5j
dGlvbihlKSB7IGVycm9yID0gZS5tZXNzYWdlLnRvU3RyaW5nKCk7IH1cbiIKKyAgICAgICAgICAg
ICIpOyI7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgYXV0
byogamF2YXNjcmlwdFJlc3VsdCA9IHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChn
ZXRDdXJyZW50UG9zaXRpb24sICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIGdfYXNzZXJ0X25v
X2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3Ap
OworICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IG51bGxwdHI7CisKKyAgICAgICAgamF2YXNjcmlw
dFJlc3VsdCA9IHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZXJyb3IiLCAmZXJy
b3Iub3V0UHRyKCkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQp
OworICAgICAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgICAgIGF1dG8q
IGpzRXJyb3JNZXNzYWdlID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShq
YXZhc2NyaXB0UmVzdWx0KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfc3Ry
aW5nKGpzRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHJldHVybiBHVW5pcXVlUHRyPGNoYXI+KGpz
Y192YWx1ZV90b19zdHJpbmcoanNFcnJvck1lc3NhZ2UpKTsKKyAgICB9CisKKyAgICB2b2lkIHN0
YXJ0V2F0Y2goKQorICAgIHsKKyAgICAgICAgZ19jbGVhcl9wb2ludGVyKCZtX2NoZWNrUG9zaXRp
b24sIHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9mcmVlKTsKKyAgICAgICAgbV9lcnJvck1l
c3NhZ2UgPSBudWxscHRyOworCisgICAgICAgIG1fd2F0Y2hpbmcgPSB0cnVlOworICAgICAgICBz
dGF0aWMgY29uc3QgY2hhciB3YXRjaFBvc2l0aW9uW10gPQorICAgICAgICAgICAgInZhciBwb3Np
dGlvbiA9IG51bGw7XG4iCisgICAgICAgICAgICAidmFyIHdhdGNoSUQgPSBuYXZpZ2F0b3IuZ2Vv
bG9jYXRpb24ud2F0Y2hQb3NpdGlvbihmdW5jdGlvbihwKSB7XG4iCisgICAgICAgICAgICAiICBw
b3NpdGlvbiA9IHsgfTtcbiIKKyAgICAgICAgICAgICIgIHBvc2l0aW9uLmxhdGl0dWRlID0gcC5j
b29yZHMubGF0aXR1ZGU7XG4iCisgICAgICAgICAgICAiICBwb3NpdGlvbi5sb25naXR1ZGUgPSBw
LmNvb3Jkcy5sb25naXR1ZGU7XG4iCisgICAgICAgICAgICAiICBwb3NpdGlvbi5hY2N1cmFjeSA9
IHAuY29vcmRzLmFjY3VyYWN5O1xuIgorICAgICAgICAgICAgIiAgcG9zaXRpb24uYWx0aXR1ZGUg
PSBwLmNvb3Jkcy5hbHRpdHVkZTtcbiIKKyAgICAgICAgICAgICIgIHBvc2l0aW9uLmFsdGl0dWRl
QWNjdXJhY3kgPSBwLmNvb3Jkcy5hbHRpdHVkZUFjY3VyYWN5O1xuIgorICAgICAgICAgICAgIiAg
cG9zaXRpb24uaGVhZGluZyA9IHAuY29vcmRzLmhlYWRpbmc7XG4iCisgICAgICAgICAgICAiICBw
b3NpdGlvbi5zcGVlZCA9IHAuY29vcmRzLnNwZWVkO1xuIgorICAgICAgICAgICAgIiAgcG9zaXRp
b24udGltZXN0YW1wID0gcC50aW1lc3RhbXA7XG4iCisgICAgICAgICAgICAifSk7IjsKKyAgICAg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBhdXRvKiBqYXZhc2NyaXB0
UmVzdWx0ID0gcnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKHdhdGNoUG9zaXRpb24s
ICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJl
c3VsdCk7CisgICAgICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAg
Z19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHZvaWQgc3RvcFdhdGNo
KCkKKyAgICB7CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAg
cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJuYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
Y2xlYXJXYXRjaCh3YXRjaElEKSIsICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIGdfYXNzZXJ0
X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxv
b3ApOworICAgICAgICBtX3dhdGNoaW5nID0gZmFsc2U7CisgICAgfQorCisgICAgV2ViS2l0R2Vv
bG9jYXRpb25NYW5hZ2VyKiBtX21hbmFnZXI7CisgICAgYm9vbCBtX3VwZGF0aW5nIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1fd2F0Y2hpbmcgeyBmYWxzZSB9OworICAgIFdlYktpdEdlb2xvY2F0aW9u
UG9zaXRpb24qIG1fY2hlY2tQb3NpdGlvbiB7IG51bGxwdHIgfTsKKyAgICBHVW5pcXVlUHRyPGNo
YXI+IG1fZXJyb3JNZXNzYWdlOworfTsKKworc3RhdGljIHZvaWQgdGVzdEdlb2xvY2F0aW9uTWFu
YWdlckN1cnJlbnRQb3NpdGlvbihHZW9sb2NhdGlvblRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
Cit7CisgICAgdGVzdC0+c2hvd0luV2luZG93KCk7CisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1s
Pjxib2R5PjwvYm9keT48L2h0bWw+IiwgImh0dHBzOi8vZm9vLmNvbS9iYXIiKTsKKyAgICB0ZXN0
LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIFdlYktpdEdlb2xvY2F0aW9uUG9zaXRp
b24qIHBvc2l0aW9uID0gd2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX25ldygzNy4xNzYwNzgz
LCAtMy41OTAzMywgMTcpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPm1fdXBkYXRpbmcpOwor
ICAgIGF1dG8gcmVzdWx0ID0gdGVzdC0+Y2hlY2tDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOwor
ICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPm1fdXBkYXRpbmcpOworICAgIGdfYXNzZXJ0X2NtcGZs
b2F0KHJlc3VsdC5sYXRpdHVkZSwgPT0sIDM3LjE3NjA3ODMpOworICAgIGdfYXNzZXJ0X2NtcGZs
b2F0KHJlc3VsdC5sb25naXR1ZGUsID09LCAtMy41OTAzMyk7CisgICAgZ19hc3NlcnRfY21wZmxv
YXQocmVzdWx0LmFjY3VyYWN5LCA9PSwgMTcpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHJlc3VsdC5h
bHRpdHVkZSk7CisgICAgZ19hc3NlcnRfZmFsc2UocmVzdWx0LmFsdGl0dWRlQWNjdXJhY3kpOwor
ICAgIGdfYXNzZXJ0X2ZhbHNlKHJlc3VsdC5oZWFkaW5nKTsKKyAgICBnX2Fzc2VydF9mYWxzZShy
ZXN1bHQuc3BlZWQpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJlc3VsdC50aW1lc3RhbXAsID4s
IDApOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJlc3VsdC50aW1lc3RhbXAgLyAxMDAwLiwgPCwg
V2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CisKKyAgICBwb3Np
dGlvbiA9IHdlYmtpdF9nZW9sb2NhdGlvbl9wb3NpdGlvbl9uZXcoMjcuOTg2MDY1LCA4Ni45MjI2
MjMsIDApOworICAgIGF1dG8gdGltZXN0YW1wID0gV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5j
ZUVwb2NoKCk7CisgICAgd2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3NldF90aW1lc3RhbXAo
cG9zaXRpb24sIHRpbWVzdGFtcC52YWx1ZSgpKTsKKyAgICB3ZWJraXRfZ2VvbG9jYXRpb25fcG9z
aXRpb25fc2V0X2FsdGl0dWRlKHBvc2l0aW9uLCA4NDk1KTsKKyAgICB3ZWJraXRfZ2VvbG9jYXRp
b25fcG9zaXRpb25fc2V0X2FsdGl0dWRlX2FjY3VyYWN5KHBvc2l0aW9uLCAwKTsKKyAgICB3ZWJr
aXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fc2V0X2hlYWRpbmcocG9zaXRpb24sIDEwMC41NSk7Cisg
ICAgd2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX3NldF9zcGVlZChwb3NpdGlvbiwgMC4wNSk7
CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV91cGRhdGluZyk7CisgICAgcmVzdWx0ID0gdGVz
dC0+Y2hlY2tDdXJyZW50UG9zaXRpb24ocG9zaXRpb24sIHRydWUpOworICAgIGdfYXNzZXJ0X2Zh
bHNlKHRlc3QtPm1fdXBkYXRpbmcpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJlc3VsdC5sYXRp
dHVkZSwgPT0sIDI3Ljk4NjA2NSk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQocmVzdWx0Lmxvbmdp
dHVkZSwgPT0sIDg2LjkyMjYyMyk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQocmVzdWx0LmFjY3Vy
YWN5LCA9PSwgMCk7CisgICAgZ19hc3NlcnRfdHJ1ZShyZXN1bHQuYWx0aXR1ZGUpOworICAgIGdf
YXNzZXJ0X2NtcGZsb2F0KHJlc3VsdC5hbHRpdHVkZS52YWx1ZSgpLCA9PSwgODQ5NSk7CisgICAg
Z19hc3NlcnRfdHJ1ZShyZXN1bHQuYWx0aXR1ZGVBY2N1cmFjeSk7CisgICAgZ19hc3NlcnRfY21w
ZmxvYXQocmVzdWx0LmFsdGl0dWRlQWNjdXJhY3kudmFsdWUoKSwgPT0sIDApOworICAgIGdfYXNz
ZXJ0X3RydWUocmVzdWx0LmhlYWRpbmcpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJlc3VsdC5o
ZWFkaW5nLnZhbHVlKCksID09LCAxMDAuNTUpOworICAgIGdfYXNzZXJ0X3RydWUocmVzdWx0LnNw
ZWVkKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChyZXN1bHQuc3BlZWQudmFsdWUoKSwgPT0sIDAu
MDUpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0X3dpdGhfZXBzaWxvbihyZXN1bHQudGltZXN0YW1w
IC8gMTAwMC4sIHRpbWVzdGFtcC52YWx1ZSgpLCAxKTsKKworICAgIGF1dG8gZXJyb3JNZXNzYWdl
ID0gdGVzdC0+Y2hlY2tGYWlsZWRUb0RldGVybWluZVBvc2l0aW9uKCJHUFMgaXMgbm90IGFjdGl2
ZSIpOworICAgIGdfYXNzZXJ0X2NtcHN0cihlcnJvck1lc3NhZ2UuZ2V0KCksID09LCAiR1BTIGlz
IG5vdCBhY3RpdmUiKTsKK30KKworc3RhdGljIHZvaWQgdGVzdEdlb2xvY2F0aW9uTWFuYWdlcldh
dGNoUG9zaXRpb24oR2VvbG9jYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAg
IHRlc3QtPnNob3dJbldpbmRvdygpOworICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT48
L2JvZHk+PC9odG1sPiIsICJodHRwczovL2Zvby5jb20vYmFyIik7CisgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICB0ZXN0LT5zdGFydFdhdGNoKCk7CisgICAgZ19hc3Nl
cnRfdHJ1ZSh0ZXN0LT5tX3VwZGF0aW5nKTsKKworICAgIFdlYktpdEdlb2xvY2F0aW9uUG9zaXRp
b24qIHBvc2l0aW9uID0gd2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX25ldygzNy4xNzYwNzgz
LCAtMy41OTAzMywgMTcpOworICAgIHdlYmtpdF9nZWxvY2F0aW9uX21hbmFnZXJfdXBkYXRlX3Bv
c2l0aW9uKHRlc3QtPm1fbWFuYWdlciwgcG9zaXRpb24pOworICAgIHdlYmtpdF9nZW9sb2NhdGlv
bl9wb3NpdGlvbl9mcmVlKHBvc2l0aW9uKTsKKyAgICBhdXRvIHJlc3VsdCA9IHRlc3QtPmxhc3RQ
b3NpdGlvbigpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJlc3VsdC5sYXRpdHVkZSwgPT0sIDM3
LjE3NjA3ODMpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJlc3VsdC5sb25naXR1ZGUsID09LCAt
My41OTAzMyk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQocmVzdWx0LmFjY3VyYWN5LCA9PSwgMTcp
OworCisgICAgcG9zaXRpb24gPSB3ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRpb25fbmV3KDM4LjE3
NzA3ODMsIC0zLjYwMDMzLCAxNyk7CisgICAgd2Via2l0X2dlbG9jYXRpb25fbWFuYWdlcl91cGRh
dGVfcG9zaXRpb24odGVzdC0+bV9tYW5hZ2VyLCBwb3NpdGlvbik7CisgICAgd2Via2l0X2dlb2xv
Y2F0aW9uX3Bvc2l0aW9uX2ZyZWUocG9zaXRpb24pOworICAgIHJlc3VsdCA9IHRlc3QtPmxhc3RQ
b3NpdGlvbigpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJlc3VsdC5sYXRpdHVkZSwgPT0sIDM4
LjE3NzA3ODMpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJlc3VsdC5sb25naXR1ZGUsID09LCAt
My42MDAzMyk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQocmVzdWx0LmFjY3VyYWN5LCA9PSwgMTcp
OworCisgICAgdGVzdC0+c3RvcFdhdGNoKCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV91
cGRhdGluZyk7Cit9CisKK3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAgICBHZW9sb2NhdGlvblRlc3Q6
OmFkZCgiV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyIiwgImN1cnJlbnQtcG9zaXRpb24iLCB0ZXN0
R2VvbG9jYXRpb25NYW5hZ2VyQ3VycmVudFBvc2l0aW9uKTsKKyAgICBHZW9sb2NhdGlvblRlc3Q6
OmFkZCgiV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyIiwgIndhdGNoLXBvc2l0aW9uIiwgdGVzdEdl
b2xvY2F0aW9uTWFuYWdlcldhdGNoUG9zaXRpb24pOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sK
K30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
VUlDbGllbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RV
SUNsaWVudC5jcHAKaW5kZXggNDA1YzA1Yzk2OGQuLjlhN2VkYWFmNmI3IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcApA
QCAtNzg2LDcgKzc4Niw2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3TW91c2VUYXJnZXQoVUlD
bGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKEdU
SykKIAotI2lmIEVOQUJMRShHRU9MT0NBVElPTikKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogewogICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgZ2VvY2x1ZSBnaXZlIGEgcnVudGltZSB3
YXJuaW5nIGJlY2F1c2UgaXQgdHJpZXMKQEAgLTgzMSw3ICs4MzAsNiBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViVmlld0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVz
dCwgZ2NvbnN0cAogICAgIGdfYXNzZXJ0X2NtcHN0cihyZXN1bHQsICE9LCAiMSIpOwogICAgIHRl
c3QtPmFkZExvZ0ZhdGFsRmxhZyhHX0xPR19MRVZFTF9XQVJOSU5HKTsKIH0KLSNlbmRpZiAvLyBF
TkFCTEUoR0VPTE9DQVRJT04pCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdVc2VyTWVkaWFFbnVtZXJhdGVEZXZpY2VzUGVybWlzc2lvbkNoZWNrKFVJ
Q2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTExOTMsOSArMTE5MSw3IEBAIHZv
aWQgYmVmb3JlQWxsKCkKICNpZiBQTEFURk9STShHVEspCiAgICAgVUlDbGllbnRUZXN0OjphZGQo
IldlYktpdFdlYlZpZXciLCAibW91c2UtdGFyZ2V0IiwgdGVzdFdlYlZpZXdNb3VzZVRhcmdldCk7
CiAjZW5kaWYKLSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgVUlDbGllbnRUZXN0OjphZGQo
IldlYktpdFdlYlZpZXciLCAiZ2VvbG9jYXRpb24tcGVybWlzc2lvbi1yZXF1ZXN0cyIsIHRlc3RX
ZWJWaWV3R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMpOwotI2VuZGlmCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ1
c2VybWVkaWEtZW51bWVyYXRlZGV2aWNlcy1wZXJtaXNzaW9uLWNoZWNrIiwgdGVzdFdlYlZpZXdV
c2VyTWVkaWFFbnVtZXJhdGVEZXZpY2VzUGVybWlzc2lvbkNoZWNrKTsKICAgICBVSUNsaWVudFRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ1c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1ZXN0cyIs
IHRlc3RXZWJWaWV3VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9DTWFrZUxpc3RzLnR4dAppbmRleCA2NWEwMDc4MDAzMi4uN2NmMjE3Nzg4OGEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9DTWFrZUxpc3RzLnR4dAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQKQEAgLTE0Niw2ICsxNDYsNyBA
QCBBRERfV0syX1RFU1QoVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAke1RPT0xTX0RJUn0v
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaQogQUREX1dLMl9URVNUKFRlc3RXZWJzaXRlRGF0YSAk
e1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0
YS5jcHApCiBBRERfV0syX1RFU1QoVGVzdENvbnNvbGVNZXNzYWdlICR7VE9PTFNfRElSfS9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvbnNvbGVNZXNzYWdlLmNwcCkKIEFERF9X
SzJfVEVTVChUZXN0RE9NRWxlbWVudCAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RET01FbGVtZW50LmNwcCkKK0FERF9XSzJfVEVTVChUZXN0R2VvbG9jYXRp
b25NYW5hZ2VyICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dEdlb2xvY2F0aW9uTWFuYWdlci5jcHApCiAKICMgRklYTUU6IEVuYWJsZSBmb3IgV1BFCiBpZiAo
UE9SVCBTVFJFUVVBTCAiR1RLIikK
</data>
<flag name="review"
          id="381613"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>