<?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>137064</bug_id>
          
          <creation_ts>2014-09-24 03:35:13 -0700</creation_ts>
          <short_desc>[GStreamer] Do not use CachedResourceLoader, SecurityOrigin, ResourceBuffer and other WebCore types</short_desc>
          <delta_ts>2014-10-22 08:12:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>21354</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>gustavo</cc>
    
    <cc>pnormand</cc>
    
    <cc>sam</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1036951</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-24 03:35:13 -0700</bug_when>
    <thetext>It&apos;s a layering violation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036952</commentid>
    <comment_count>1</comment_count>
      <attachid>238596</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-24 04:15:56 -0700</bug_when>
    <thetext>Created attachment 238596
Patch

This patch is for GStreamer, because it&apos;s the only media backend I can actually test, but I added the new classes with the current mac implementation in mind, so they should be ready to be used by the mac port as well. After this patch fixing the mac port should be easy, I can try to do it myself, but it would be like a shot in the dark, and I&apos;ll need help to add the new files to the xcode files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036953</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-24 04:17:49 -0700</bug_when>
    <thetext>Attachment 238596 did not pass style-queue:


ERROR: Source/WebCore/html/HTMLMediaElement.cpp:5657:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036959</commentid>
    <comment_count>3</comment_count>
      <attachid>238597</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-24 04:50:48 -0700</bug_when>
    <thetext>Created attachment 238597
Try to fix the mac build

The style issue is a false positive I think</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036960</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-24 04:53:23 -0700</bug_when>
    <thetext>Attachment 238597 did not pass style-queue:


ERROR: Source/WebCore/html/HTMLMediaElement.cpp:5657:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036971</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-24 08:45:07 -0700</bug_when>
    <thetext>I guess the mac build failure is because I have to add a symbol to a file or mark it as public or something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037651</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-27 02:15:21 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I guess the mac build failure is because I have to add a symbol to a file or mark it as public or something like that.

Ah, I see now, I&apos;m using MediaResourceLoader unconditionally in HTMLMediaElement::mediaPlayerCreateResourceLoader(). I can fix the windows build by adding the new files to the build, but I can&apos;t fix mac build (don&apos;t have a mac to deal with xcode files). I could add #if USE(GSTREAMER) with a FIXME that could be removed when mac switches to implement MediaPlayerResourceLoaderClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038251</commentid>
    <comment_count>7</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-09-30 10:35:52 -0700</bug_when>
    <thetext>There was a tool that the google folks created to add files to xcode project files, I used it in a patch I did which moved files used by Mac, but I can&apos;t remember its name, find it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038252</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-30 10:39:14 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; There was a tool that the google folks created to add files to xcode project files, I used it in a patch I did which moved files used by Mac, but I can&apos;t remember its name, find it.

I know, I tried it a couple of times in the past and never worked for me. Thanks anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038289</commentid>
    <comment_count>9</comment_count>
      <attachid>238945</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-09-30 12:22:49 -0700</bug_when>
    <thetext>Created attachment 238945
Patch

Add build files to Xcode and Visual Studio projects and update WebCore change log entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038291</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-30 12:25:24 -0700</bug_when>
    <thetext>Attachment 238945 did not pass style-queue:


ERROR: Source/WebCore/html/HTMLMediaElement.cpp:5652:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038483</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-30 23:21:43 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=238945) [details]
&gt; Patch
&gt; 
&gt; Add build files to Xcode and Visual Studio projects and update WebCore change log entry.

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038885</commentid>
    <comment_count>12</comment_count>
      <attachid>238945</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-10-02 09:57:22 -0700</bug_when>
    <thetext>Comment on attachment 238945
Patch

The changes to the GStreamer code look good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038886</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-10-02 09:58:28 -0700</bug_when>
    <thetext>Nice clean-up Carlos, thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040828</commentid>
    <comment_count>14</comment_count>
      <attachid>239602</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-09 23:59:24 -0700</bug_when>
    <thetext>Created attachment 239602
Rebased patch after r174563</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040829</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-10 00:01:20 -0700</bug_when>
    <thetext>Attachment 239602 did not pass style-queue:


ERROR: Source/WebCore/html/HTMLMediaElement.cpp:5656:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041541</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-14 05:00:59 -0700</bug_when>
    <thetext>Darin, Eric, could you please confirm this approach is fine for mac also before I land this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041617</commentid>
    <comment_count>17</comment_count>
      <attachid>239602</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-10-14 11:23:21 -0700</bug_when>
    <thetext>Comment on attachment 239602
Rebased patch after r174563

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

A few random comments below. I can&apos;t determine how this approach affects Mac.

&gt; Source/WebCore/loader/MediaResourceLoader.cpp:57
&gt; +    if (m_resource)
&gt; +        return false;

Can the loader be started/stopped multiple times? If not, assertions would be more appropriate than runtime checks.

&gt; Source/WebCore/loader/MediaResourceLoader.cpp:69
&gt; +    // TODO: Decide whether to use preflight mode for cross-origin requests (see http://wkbug.com/131484).

Please use FIXME, not TODO.

However, the answer seems quite obvious, we do not need preflight. JS code does not control request method or headers, so it cannot attack a naive intranet server that does not expect malicious requests of these types. All servers need to expect malicious requests that are GET or POSTs generated by forms, because web pages could always send those - CORS makes it possible to send other types of cross-origin requests, and these need preflight.

I recommend to remove this comment, and resolve the associated bug.

&gt; Source/WebCore/loader/MediaResourceLoader.cpp:94
&gt; +// CachedResourceClient

Please do not add these comments to .cpp files. Most people don&apos;t maintain them, so they just become incorrect with time.

&gt; Source/WebCore/loader/MediaResourceLoader.cpp:103
&gt; +        static NeverDestroyed&lt;const String&gt; consoleMessage(ASCIILiteral(&quot;Cross-origin media resource load denied by Cross-Origin Resource Sharing policy.&quot;));

There is no need to complicate code to optimize for this rare error case. A regular transient string would work perfectly well.

&gt; Source/WebCore/loader/MediaResourceLoader.cpp:106
&gt; +        m_client-&gt;accessControlCheckFailed(ResourceError(errorDomainWebKitInternal, 0, response.url().string(), consoleMessage.get()));

Do we get two error lines in Web Inspector console as a result?

&gt; Source/WebCore/loader/MediaResourceLoader.h:40
&gt; +class MediaResourceLoader final : public MediaPlayerResourceLoader, CachedRawResourceClient {

Naming seems unhelpful here. Inheritance means that MediaResourceLoader is a specific type of MediaPlayerResourceLoader, but there is nothing in the name explaining how it is a subtype of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041802</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-14 23:16:01 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 239602 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=239602&amp;action=review

Thanks for looking at it. Note that this is mostly a refactoring, so most of the comments are about code that I have just moved to a different place.

&gt; A few random comments below. I can&apos;t determine how this approach affects Mac.

The idea is that mac switch to use the MediaResourceLoader as well, instead of using the CacheResourceLoader directly, which is a layering violation. So, once this patch lands, WebCoreAVFResourceLoader should turn into a MediaPlayerResourceLoaderClient instead of a CachedRawResourceClient. 

&gt; &gt; Source/WebCore/loader/MediaResourceLoader.cpp:57
&gt; &gt; +    if (m_resource)
&gt; &gt; +        return false;
&gt; 
&gt; Can the loader be started/stopped multiple times? If not, assertions would be more appropriate than runtime checks.

start() is always called once right after the object is created, but stop can be called multiple times, because the destructor call stop, and in most of the cases the loader has already been stopped when it&apos;s destroyed.

&gt; &gt; Source/WebCore/loader/MediaResourceLoader.cpp:69
&gt; &gt; +    // TODO: Decide whether to use preflight mode for cross-origin requests (see http://wkbug.com/131484).
&gt; 
&gt; Please use FIXME, not TODO.
&gt; 
&gt; However, the answer seems quite obvious, we do not need preflight. JS code does not control request method or headers, so it cannot attack a naive intranet server that does not expect malicious requests of these types. All servers need to expect malicious requests that are GET or POSTs generated by forms, because web pages could always send those - CORS makes it possible to send other types of cross-origin requests, and these need preflight.
&gt; 
&gt; I recommend to remove this comment, and resolve the associated bug.

Honestly, that comes from WebKitWebSourceGStreamer.cpp, and I don&apos;t even know what preflight means. I&apos;ll remove the comment anyway.

&gt; &gt; Source/WebCore/loader/MediaResourceLoader.cpp:94
&gt; &gt; +// CachedResourceClient
&gt; 
&gt; Please do not add these comments to .cpp files. Most people don&apos;t maintain them, so they just become incorrect with time.

Ok.

&gt; &gt; Source/WebCore/loader/MediaResourceLoader.cpp:103
&gt; &gt; +        static NeverDestroyed&lt;const String&gt; consoleMessage(ASCIILiteral(&quot;Cross-origin media resource load denied by Cross-Origin Resource Sharing policy.&quot;));
&gt; 
&gt; There is no need to complicate code to optimize for this rare error case. A regular transient string would work perfectly well.

Ok.

&gt; &gt; Source/WebCore/loader/MediaResourceLoader.cpp:106
&gt; &gt; +        m_client-&gt;accessControlCheckFailed(ResourceError(errorDomainWebKitInternal, 0, response.url().string(), consoleMessage.get()));
&gt; 
&gt; Do we get two error lines in Web Inspector console as a result?

hmm, I haven&apos;t checked the web inspector, but only one message is written to the js console, so I guess we get only one, like in the layout tests results.

&gt; &gt; Source/WebCore/loader/MediaResourceLoader.h:40
&gt; &gt; +class MediaResourceLoader final : public MediaPlayerResourceLoader, CachedRawResourceClient {
&gt; 
&gt; Naming seems unhelpful here. Inheritance means that MediaResourceLoader is a specific type of MediaPlayerResourceLoader, but there is nothing in the name explaining how it is a subtype of it.

What about PlatformMediaResourceLoader?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042109</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-16 05:44:54 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; &gt; Source/WebCore/loader/MediaResourceLoader.h:40
&gt; &gt; &gt; +class MediaResourceLoader final : public MediaPlayerResourceLoader, CachedRawResourceClient {
&gt; &gt; 
&gt; &gt; Naming seems unhelpful here. Inheritance means that MediaResourceLoader is a specific type of MediaPlayerResourceLoader, but there is nothing in the name explaining how it is a subtype of it.
&gt; 
&gt; What about PlatformMediaResourceLoader?

or MediaResourceLoaderBase?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043194</commentid>
    <comment_count>20</comment_count>
      <attachid>239602</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-10-21 09:32:59 -0700</bug_when>
    <thetext>Comment on attachment 239602
Rebased patch after r174563

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

This approach seems sensible for the Mac as well. Thanks for taking on this cleanup task!

&gt;&gt;&gt; Source/WebCore/loader/MediaResourceLoader.h:40
&gt;&gt;&gt; +class MediaResourceLoader final : public MediaPlayerResourceLoader, CachedRawResourceClient {
&gt;&gt; 
&gt;&gt; Naming seems unhelpful here. Inheritance means that MediaResourceLoader is a specific type of MediaPlayerResourceLoader, but there is nothing in the name explaining how it is a subtype of it.
&gt; 
&gt; What about PlatformMediaResourceLoader?

If you are suggesting that MediaPlayerResourceLoader be renamed PlatformMediaResourceLoader and this class stays MediaResourceLoader, this seems fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043434</commentid>
    <comment_count>21</comment_count>
      <attachid>240270</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-22 06:27:47 -0700</bug_when>
    <thetext>Created attachment 240270
Patch or landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043435</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-22 06:29:01 -0700</bug_when>
    <thetext>Attachment 240270 did not pass style-queue:


ERROR: Source/WebCore/html/HTMLMediaElement.cpp:5668:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043450</commentid>
    <comment_count>23</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-22 08:12:14 -0700</bug_when>
    <thetext>Committed r175050: &lt;http://trac.webkit.org/changeset/175050&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238596</attachid>
            <date>2014-09-24 04:15:56 -0700</date>
            <delta_ts>2014-09-24 04:50:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-media-player-violations.diff</filename>
            <type>text/plain</type>
            <size>38720</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjOTY2NDhlLi42ZWI4MDI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMDkt
MjQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHU3RyZWFtZXJdIERvIG5vdCB1c2UgQ2FjaGVkUmVzb3VyY2VMb2FkZXIsIFNlY3VyaXR5T3Jp
Z2luLCBSZXNvdXJjZUJ1ZmZlciBhbmQgb3RoZXIgV2ViQ29yZSB0eXBlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGVkIHJlc3Vs
dHMgb2YgaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4tYWNjZXNzZmFpbHVy
ZS5odG1sLCBzaW5jZQorICAgICAgICBub3cgdGhlIGVycm9yIGlzIGFsc28gbG9nZ2VkIGluIHRo
ZSBjb25zb2xlLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1v
cmlnaW4tYWNjZXNzZmFpbHVyZS1leHBlY3RlZC50eHQ6CisKIDIwMTQtMDktMjIgIEd5dXlvdW5n
IEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBF
RkwgZ2FyZGVuaW5nLiBVbnNraXAgbWVkaWEgdGVzdCBvbiBFRkwgcG9ydC4gQWxtb3N0IG1lZGlh
IHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZGVv
LWNyb3NzLW9yaWdpbi1hY2Nlc3NmYWlsdXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWFjY2Vzc2ZhaWx1cmUtZXhwZWN0
ZWQudHh0CmluZGV4IDQxNWNlMWUuLjllMjI1MDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWFjY2Vzc2ZhaWx1cmUtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mt
b3JpZ2luLWFjY2Vzc2ZhaWx1cmUtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNCBAQAorQ09OU09M
RSBNRVNTQUdFOiBDcm9zcy1vcmlnaW4gbWVkaWEgcmVzb3VyY2UgbG9hZCBkZW5pZWQgYnkgQ3Jv
c3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LgogRVZFTlQoZXJyb3IpCiBFTkQgT0Yg
VEVTVAogIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzOTJmMzQzLi5lMDY5MjU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTgzNSw2ICsxODM1LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwog
ICAgIGxvYWRlci9JbWFnZUxvYWRlci5jcHAKICAgICBsb2FkZXIvTGlua0xvYWRlci5jcHAKICAg
ICBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuY3BwCisgICAgbG9hZGVyL01lZGlhUmVzb3VyY2VMb2Fk
ZXIuY3BwCiAgICAgbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCiAgICAgbG9hZGVyL05h
dmlnYXRpb25BY3Rpb24uY3BwCiAgICAgbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNWI1MGU1ZS4uMGRkZDZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBA
CisyMDE0LTA5LTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1N0cmVhbWVyXSBEbyBub3QgdXNlIENhY2hlZFJlc291cmNlTG9hZGVyLCBT
ZWN1cml0eU9yaWdpbiwgUmVzb3VyY2VCdWZmZXIgYW5kIG90aGVyIFdlYkNvcmUgdHlwZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzA2NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIG1l
ZGlhIHJlc291cmNlIGxvYWRlciB0byBhIG5ldyBjbGFzcyBpbiBXZWJDb3JlL2xvYWRlcgorICAg
ICAgICB0aGF0IGluaGVyaXRzIGZyb20gYSBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyIGNsYXNz
IGRlZmluZWQgaW4KKyAgICAgICAgdGhlIHBsYXRmb3JtIGxheWVyLiBUaGUgcGxhdGZvcm0gc3Bl
Y2lmaWMgYmVoYXZpb3VyIGlzIGltcGxlbWVudGVkCisgICAgICAgIHVzaW5nIGEgY2xpZW50IGFs
c28gZGVmaW5lZCBpbiB0aGUgcGxhdGZvcm0gbGF5ZXIsIGltcGxlbWVudGVkIGJ5CisgICAgICAg
IGV2ZXJ5IG1lZGlhIGJhY2tlbmQsIGFuZCB1c2VkIGJ5IHRoZSBXZWJDb3JlIE1lZGlhUmVzb3Vy
Y2VMb2FkZXIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG5ldyBmaWxlcyB0byBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxv
YWRlcik6CisgICAgICAgIENyZWF0ZSBhIE1lZGlhUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNPUlNNb2RlKTogRGVsZXRlZC4g
VGhpcyBpcworICAgICAgICBubyBsb25nZXIgdXNlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6TWVkaWFSZXNvdXJj
ZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjp+TWVkaWFS
ZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpz
dGFydCk6IFN0YXJ0IGEgbmV3IGxvYWQgZm9yIHRoZQorICAgICAgICBnaXZlbiByZXF1ZXN0IGFu
ZCBsb2FkIG9wdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpz
dG9wKTogU3RvcCB0aGUgbG9hZCBpZiBuZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJl
c291cmNlTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOiBIYW5kbGUgQ09SUworICAgICAgICBh
Y2Nlc3MgY2hlY2sgYW5kIG5vdGlmeSB0aGUgY2xpZW50IGFib3V0IHRoZSByZXNwb25zZS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6IE5vdGlm
eSB0aGUgY2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6bm90
aWZ5RmluaXNoZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2Fk
ZXI6OmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcik6IEFzayB0aGUKKyAgICAgICAgY2xpZW50IHRvIGNy
ZWF0ZSB0aGUgcmVhZCBidWZmZXIuCisgICAgICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2Fk
ZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNyZWF0ZVJlc291cmNlTG9hZGVyKTog
Q2FsbAorICAgICAgICBtZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVyKCkgaWYgdGhlcmUn
cyBhIGNsaWVudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyQ3JlYXRlUmVz
b3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlh
UGxheWVyQ09SU01vZGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXJDbGllbnQ6OmRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50OjpidWZm
ZXJSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlc291cmNlTG9hZGVy
Q2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudDo6bG9hZEZhaWxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50Ojpsb2FkRmluaXNoZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudDo6Z2V0T3JDcmVh
dGVSZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVzb3VyY2VMb2Fk
ZXI6On5NZWRpYVBsYXllclJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUmVzb3VyY2VMb2FkZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJSZXNvdXJjZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclJlc291cmNlTG9hZGVyOjpkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXI6Ok1lZGlhUGxheWVyUmVz
b3VyY2VMb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjU3RvcCk6IEFs
c28gZGVsZXRlIHRoZSBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyLgorICAgICAgICAod2ViS2l0
V2ViU3JjU3RhcnQpOiBDcmVhdGUgYSBuZXcgcmVzb3VyY2UgbG9hZGVyIHVzaW5nCisgICAgICAg
IE1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcigpIHdpdGggYSBuZXcKKyAgICAgICAg
Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQgYXMgY2xpZW50LgorICAgICAgICAod2ViS2l0
V2ViU3JjTmVlZERhdGFNYWluQ2IpOiBDYWxsIHNldERlZmVyc0xvYWRpbmcoKSBmb3IgdGhlCisg
ICAgICAgIHJlc291cmNlIGxvYWRlciBpZiB0aGVyZSdzIG9uZS4KKyAgICAgICAgKHdlYktpdFdl
YlNyY0Vub3VnaERhdGFNYWluQ2IpOiBEaXR0by4KKyAgICAgICAgKHdlYktpdFNyY1Bhc3NlZENP
UlNBY2Nlc3NDaGVjayk6IFJldHVybiBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrLgorICAgICAg
ICAoU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVSZXNwb25zZVJlY2VpdmVkKTogUmVtb3ZlIHRoZSBD
T1JTIGNoZWNrCisgICAgICAgIHJlc3VsdCBwYXJhbWV0ZXIgc2luY2UgdGhhdCdzIG5vdyBoYW5k
bGVkIGJ5IE1lZGlhUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVh
bWluZ0NsaWVudDo6Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQpOgorICAgICAgICAoQ2Fj
aGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6On5DYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dCk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6Z2V0T3JDcmVhdGVS
ZWFkQnVmZmVyKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNw
b25zZVJlY2VpdmVkKTogVXBkYXRlIGRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2suCisgICAgICAg
IChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQp
OiBMb2cgdGhlCisgICAgICAgIGVycm9yIGFuZCBzdG9wIHRoZSBsb2FkLgorICAgICAgICAoQ2Fj
aGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGYWlsZWQpOiBMb2cgdGhlIGVycm9yIGlm
IGl0CisgICAgICAgIHdhcyBub3QgYSBjYW5jZWxsYXRpb24uCisgICAgICAgIChDYWNoZWRSZXNv
dXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVkKToKKyAgICAgICAgKFJlc291cmNlSGFu
ZGxlU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnNldERlZmVyc0xvYWRpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6Om5vdGlmeUZpbmlzaGVkKTogRGVs
ZXRlZC4KKwogMjAxNC0wOS0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBFbnN1cmUgdGhhdCBsYXlvdXQgaXMgdXAtdG8tZGF0ZSBiZWZvcmUgaGl0
LXRlc3RpbmcgdmlhIFJlbmRlclZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IDNkMjFjNTIuLjJiM2Q0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgIk1lZGlhS2V5RXZl
bnQuaCIKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVh
dG9yLmgiCisjaW5jbHVkZSAiTWVkaWFSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk1lZGlh
U2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgiCkBAIC01NTc0LDE1ICs1NTc1LDYgQEAg
VmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4+IEhUTUxNZWRpYUVsZW1lbnQ6Om91dE9m
QmFuZFRyYWNrU291cmNlcygpCiB9CiAjZW5kaWYKIAotTWVkaWFQbGF5ZXJDbGllbnQ6OkNPUlNN
b2RlIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ09SU01vZGUoKSBjb25zdAotewotICAg
IGlmICghZmFzdEhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0cikpCi0gICAg
ICAgIHJldHVybiBVbnNwZWNpZmllZDsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmFzdEdl
dEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0ciksICJ1c2UtY3JlZGVudGlhbHMi
KSkKLSAgICAgICAgcmV0dXJuIFVzZUNyZWRlbnRpYWxzOwotICAgIHJldHVybiBBbm9ueW1vdXM7
Ci19Ci0KIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJOZWVkc1NpdGVTcGVjaWZp
Y0hhY2tzKCkgY29uc3QKIHsKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNl
dHRpbmdzKCk7CkBAIC01NjYyLDYgKzU2NTQsMTEgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogICAgIHJl
dHVybiBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKK1Bhc3NSZWZQdHI8
TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlcj4gSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJD
cmVhdGVSZXNvdXJjZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxv
YWRlckNsaWVudD4gY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFSZXNv
dXJjZUxvYWRlcihkb2N1bWVudCgpLCBmYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y3Jvc3Nv
cmlnaW5BdHRyKSwgV1RGOjptb3ZlKGNsaWVudCkpKTsKK30KKwogYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllclNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKICAgICBG
cmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCmluZGV4IGQ4NjdmNzUuLjNlN2UzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC01NTIsNyArNTUyLDYgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgQ09SU01vZGUgbWVkaWFQbGF5ZXJDT1JTTW9kZSgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyTmVlZHNTaXRlU3BlY2lmaWNIYWNrcygpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyRG9jdW1lbnRIb3N0
KCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC01NzAsNiArNTY5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc1BhdXNlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCBtZWRpYVBsYXllcklzTG9vcGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1lZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIo
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxv
YWRlcj4gbWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8TWVk
aWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudD4pOwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQogICAgIHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBtZWRp
YVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0IG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjN2FkMDgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTAsMCArMSwxNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTAorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFSZXNvdXJjZUxvYWRl
ci5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgi
CisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCisjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYVJlc291cmNlTG9hZGVyOjpNZWRpYVJlc291cmNl
TG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUs
IHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQp
CisgICAgOiBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyKFdURjo6bW92ZShjbGllbnQpKQorICAg
ICwgbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fY3Jvc3NPcmlnaW5Nb2RlKGNyb3NzT3Jp
Z2luTW9kZSkKKyAgICAsIG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayhmYWxzZSkKK3sKK30K
KworTWVkaWFSZXNvdXJjZUxvYWRlcjo6fk1lZGlhUmVzb3VyY2VMb2FkZXIoKQoreworICAgIHN0
b3AoKTsKK30KKworYm9vbCBNZWRpYVJlc291cmNlTG9hZGVyOjpzdGFydChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIExvYWRPcHRpb25zIG9wdGlvbnMpCit7CisgICAgaWYgKG1fcmVz
b3VyY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERhdGFCdWZmZXJpbmdQb2xpY3kg
YnVmZmVyaW5nUG9saWN5ID0gb3B0aW9ucyAmIExvYWRPcHRpb246OkJ1ZmZlckRhdGEgPyBXZWJD
b3JlOjpCdWZmZXJEYXRhIDogV2ViQ29yZTo6RG9Ob3RCdWZmZXJEYXRhOworICAgIFJlcXVlc3RP
cmlnaW5Qb2xpY3kgY29yc1BvbGljeSA9ICFtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKSA/IFBv
dGVudGlhbGx5Q3Jvc3NPcmlnaW5FbmFibGVkIDogVXNlRGVmYXVsdE9yaWdpblJlc3RyaWN0aW9u
c0ZvclR5cGU7CisgICAgU3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFscyA9IG1fY3Jv
c3NPcmlnaW5Nb2RlLmlzTnVsbCgpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG1fY3Jvc3NPcmlnaW5N
b2RlLCAidXNlLWNyZWRlbnRpYWxzIikgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RB
bGxvd1N0b3JlZENyZWRlbnRpYWxzOworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBjYWNoZVJl
cXVlc3QocmVxdWVzdCwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIERvTm90
U25pZmZDb250ZW50LCBidWZmZXJpbmdQb2xpY3ksIGFsbG93Q3JlZGVudGlhbHMsIERvTm90QXNr
Q2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscywgRG9TZWN1cml0eUNoZWNrLCBjb3JzUG9s
aWN5LCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8pKTsKKworICAgIGlmICghbV9jcm9zc09y
aWdpbk1vZGUuaXNOdWxsKCkpCisgICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9s
KGNhY2hlUmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIG1fZG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKSwgYWxsb3dDcmVkZW50aWFscyk7CisKKyAgICBtX2RpZFBhc3NBY2Nlc3NDb250
cm9sQ2hlY2sgPSBmYWxzZTsKKworICAgIC8vIFRPRE86IERlY2lkZSB3aGV0aGVyIHRvIHVzZSBw
cmVmbGlnaHQgbW9kZSBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIChzZWUgaHR0cDovL3drYnVn
LmNvbS8xMzE0ODQpLgorICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIgPSBtX2RvY3Vt
ZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CisgICAgbV9yZXNvdXJjZSA9IGxvYWRlciA/IGxv
YWRlci0+cmVxdWVzdFJhd1Jlc291cmNlKGNhY2hlUmVxdWVzdCkgOiBudWxscHRyOworICAgIGlm
ICghbV9yZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9yZXNvdXJjZS0+
YWRkQ2xpZW50KHRoaXMpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhUmVzb3Vy
Y2VMb2FkZXI6OnN0b3AoKQoreworICAgIGlmICghbV9yZXNvdXJjZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9yZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgIG1fcmVzb3VyY2Ug
PSBudWxscHRyOworfQorCit2b2lkIE1lZGlhUmVzb3VyY2VMb2FkZXI6OnNldERlZmVyc0xvYWRp
bmcoYm9vbCBkZWZlcnNMb2FkaW5nKQoreworICAgIGlmIChtX3Jlc291cmNlKQorICAgICAgICBt
X3Jlc291cmNlLT5zZXREZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpOworfQorCisvLyBDYWNo
ZWRSZXNvdXJjZUNsaWVudAordm9pZCBNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCit7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNv
dXJjZSk7CisKKyAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsK
KyAgICBpZiAoIW1fY3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgpCisgICAgICAgICYmICFtX2RvY3Vt
ZW50LnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocmVzb3VyY2UtPnJlc3BvbnNlKCkudXJs
KCkpCisgICAgICAgICYmICFyZXNvdXJjZS0+cGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKG1fZG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJDcm9zcy1vcmlnaW4g
bWVkaWEgcmVzb3VyY2UgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJp
bmcgcG9saWN5LiIpKTsKKyAgICAgICAgbV9kb2N1bWVudC5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2Uu
Z2V0KCkpOworICAgICAgICBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgPSBmYWxzZTsKKyAg
ICAgICAgbV9jbGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBjb25z
b2xlTWVzc2FnZS5nZXQoKSkpOworICAgICAgICBzdG9wKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgPSAhbV9jcm9zc09yaWdpbk1v
ZGUuaXNOdWxsKCk7CisgICAgbV9jbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOwor
fQorCit2b2lkIE1lZGlhUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQoreworICAgIEFT
U0VSVChyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKworICAgIFJlZlB0cjxNZWRpYVJlc291cmNl
TG9hZGVyPiBwcm90ZWN0KHRoaXMpOworICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoZGF0YSwg
ZGF0YUxlbmd0aCk7CisKKyAgICBpZiAoU2hhcmVkQnVmZmVyKiBidWZmZXIgPSByZXNvdXJjZS0+
cmVzb3VyY2VCdWZmZXIoKSA/IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRCdWZm
ZXIoKSA6IG51bGxwdHIpCisgICAgICAgIG1fY2xpZW50LT5idWZmZXJSZWNlaXZlZChidWZmZXIp
OworfQorCit2b2lkIE1lZGlhUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBBU1NFUlQocmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7
CisKKyAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKKyAgICBp
ZiAocmVzb3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpCisgICAgICAgIG1fY2xpZW50LT5s
b2FkRmFpbGVkKHJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkpOworICAgIGVsc2UKKyAgICAgICAg
bV9jbGllbnQtPmxvYWRGaW5pc2hlZChyZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSA/IHJlc291
cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRCdWZmZXIoKSA6IG51bGxwdHIpOworICAgIHN0
b3AoKTsKK30KKworI2lmIFVTRShTT1VQKQorY2hhciogTWVkaWFSZXNvdXJjZUxvYWRlcjo6Z2V0
T3JDcmVhdGVSZWFkQnVmZmVyKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgc2l6ZV90IHJlcXVl
c3RlZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZSkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICByZXR1cm4gbV9jbGllbnQtPmdldE9y
Q3JlYXRlUmVhZEJ1ZmZlcihyZXF1ZXN0ZWRTaXplLCBhY3R1YWxTaXplKTsKK30KKyNlbmRpZgor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NZWRpYVJlc291cmNlTG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZWU4Yjk0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBJZ2FsaWEgUy5MCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFSZXNvdXJjZUxvYWRlcl9o
CisjZGVmaW5lIE1lZGlhUmVzb3VyY2VMb2FkZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKQorI2lu
Y2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGUuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclJlc291cmNlTG9hZGVyLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQ2FjaGVkUmF3UmVzb3VyY2U7CitjbGFzcyBEb2N1bWVudDsKKworY2xhc3MgTWVkaWFSZXNv
dXJjZUxvYWRlciBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyLCBDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudCB7CitwdWJsaWM6CisgICAgTWVkaWFSZXNvdXJjZUxvYWRlcihE
b2N1bWVudCYsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudD4pOworICAgIHZpcnR1YWwgfk1lZGlhUmVz
b3VyY2VMb2FkZXIoKTsKKworICAgIHZpcnR1YWwgYm9vbCBzdGFydChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBMb2FkT3B0aW9ucykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGJvb2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsgfQorCisgICAgLy8g
Q2FjaGVkUmVzb3VyY2VDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhciosIGlu
dCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKikgb3ZlcnJpZGU7CisjaWYgVVNFKFNPVVApCisgICAgdmlydHVhbCBjaGFyKiBnZXRPckNy
ZWF0ZVJlYWRCdWZmZXIoQ2FjaGVkUmVzb3VyY2UqLCBzaXplX3QgLypyZXF1ZXN0ZWRTaXplKi8s
IHNpemVfdCYgLyphY3R1YWxTaXplKi8pIG92ZXJyaWRlOworI2VuZGlmCisKK3ByaXZhdGU6Cisg
ICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CisgICAgU3RyaW5nIG1fY3Jvc3NPcmlnaW5Nb2RlOwor
ICAgIGJvb2wgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrOworICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOworfTsKKworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggYTdmNGIxZS4uODljYWRmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApA
QCAtMTIwOSw2ICsxMjA5LDE0IEBAIENhY2hlZFJlc291cmNlTG9hZGVyKiBNZWRpYVBsYXllcjo6
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogICAgIHJldHVybiBtX21lZGlhUGxheWVyQ2xpZW50LT5t
ZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKK1Bhc3NSZWZQdHI8TWVkaWFQ
bGF5ZXJSZXNvdXJjZUxvYWRlcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVJlc291cmNlTG9hZGVyKHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQpCit7
CisgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckNyZWF0ZVJlc291
cmNlTG9hZGVyKFdURjo6bW92ZShjbGllbnQpKTsKK30KKwogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKIHZvaWQgTWVkaWFQbGF5ZXI6OmFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZT4gdHJhY2spCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaAppbmRleCAyOTM5OTE3Li5jM2EzZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVj
dC5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJN
ZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtTGF5ZXIuaCIKQEAgLTE0NCw4ICsxNDUsNiBAQCBzdHJ1Y3QgR3JhcGhpY3NEZXZpY2VB
ZGFwdGVyOwogCiBjbGFzcyBNZWRpYVBsYXllckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgZW51bSBD
T1JTTW9kZSB7IFVuc3BlY2lmaWVkLCBBbm9ueW1vdXMsIFVzZUNyZWRlbnRpYWxzIH07Ci0KICAg
ICB2aXJ0dWFsIH5NZWRpYVBsYXllckNsaWVudCgpIHsgfQogCiAgICAgLy8gdGhlIG5ldHdvcmsg
c3RhdGUgaGFzIGNoYW5nZWQKQEAgLTIyNiw3ICsyMjUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIFN0cmluZyBtZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7
IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0
dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBDT1JTTW9kZSBtZWRpYVBsYXllckNPUlNNb2Rl
KCkgY29uc3QgeyByZXR1cm4gVW5zcGVjaWZpZWQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJFbnRlckZ1bGxzY3JlZW4oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJF
eGl0RnVsbHNjcmVlbigpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzRnVsbHNj
cmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0yNDAsNiArMjM4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzUGF1c2VkKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzTG9vcGluZygpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUxvYWRlciogbWVkaWFQ
bGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlcj4gbWVkaWFQbGF5ZXJDcmVhdGVSZXNv
dXJjZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVu
dD4pIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIGJvb2wgZG9lc0hhdmVBdHRyaWJ1
dGUoY29uc3QgQXRvbWljU3RyaW5nJiwgQXRvbWljU3RyaW5nKiA9IDApIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC01MzAsNiArNTI5LDcgQEAg
cHVibGljOgogICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7CisgICAgUGFzc1JlZlB0
cjxNZWRpYVBsYXllclJlc291cmNlTG9hZGVyPiBjcmVhdGVSZXNvdXJjZUxvYWRlcihzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudD4pOwogCiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQogICAgIHZvaWQgYWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJh
Y2tQcml2YXRlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllclJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclJlc291cmNlTG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNzllYTQ2NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIuaApAQCAtMCwwICsx
LDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVBsYXllclJlc291
cmNlTG9hZGVyX2gKKyNkZWZpbmUgTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlcl9oCisKKyNpZiBF
TkFCTEUoVklERU8pCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZXNvdXJjZUVy
cm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVu
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3Qg
Y2hhciosIGludCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGJ1ZmZlclJlY2VpdmVkKFNoYXJlZEJ1
ZmZlciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVkKGNvbnN0
IFJlc291cmNlRXJyb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEZpbmlzaGVkKFNoYXJl
ZEJ1ZmZlciopIHsgfQorI2lmIFVTRShTT1VQKQorICAgIHZpcnR1YWwgY2hhciogZ2V0T3JDcmVh
dGVSZWFkQnVmZmVyKHNpemVfdCAvKnJlcXVlc3RlZFNpemUqLywgc2l6ZV90JiAvKmFjdHVhbFNp
emUqLykgeyByZXR1cm4gbnVsbHB0cjsgfTsKKyNlbmRpZgorfTsKKworY2xhc3MgTWVkaWFQbGF5
ZXJSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUGxheWVyUmVzb3VyY2VM
b2FkZXI+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVBsYXllclJlc291cmNlTG9h
ZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZW51bSBMb2FkT3B0
aW9uIHsKKyAgICAgICAgQnVmZmVyRGF0YSA9IDEgPDwgMCwKKyAgICB9OworICAgIHR5cGVkZWYg
dW5zaWduZWQgTG9hZE9wdGlvbnM7CisKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclJlc291cmNl
TG9hZGVyKCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIHN0YXJ0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIExvYWRPcHRpb25zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3Ao
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKSB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyKHN0ZDo6
dW5pcXVlX3B0cjxNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQpCisgICAg
ICAgIDogbV9jbGllbnQoV1RGOjptb3ZlKGNsaWVudCkpCisgICAgeworICAgIH0KKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50PiBtX2NsaWVudDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggYzcxZDNjMy4uM2Q0MjNi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTIy
LDIyICsyMiwxNyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogCi0j
aW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKLSNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudC5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3Qu
aCIKLSNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKICNpbmNsdWRlICJHUmVm
UHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRl
ICJNZWRpYVBsYXllclJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPGdzdC9h
cHAvZ3N0YXBwc3JjLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgpAQCAtNTEsNDggKzQ2LDM0IEBA
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1lbnVtIENPUlNBY2Nlc3NDaGVja1Jlc3Vs
dCB7Ci0gICAgQ09SU05vQ2hlY2ssCi0gICAgQ09SU1N1Y2Nlc3MsCi0gICAgQ09SU0ZhaWx1cmUK
LX07Ci0KIGNsYXNzIFN0cmVhbWluZ0NsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBTdHJl
YW1pbmdDbGllbnQoV2ViS2l0V2ViU3JjKik7CiAgICAgICAgIHZpcnR1YWwgflN0cmVhbWluZ0Ns
aWVudCgpOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBsb2FkRmFpbGVkKCkgY29uc3QgPSAwOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKSA9IDA7Ci0KICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIGNoYXIqIGNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IHJlcXVlc3Rl
ZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZSk7Ci0gICAgICAgIHZvaWQgaGFuZGxlUmVzcG9uc2VS
ZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ09SU0FjY2Vzc0NoZWNrUmVzdWx0KTsK
KyAgICAgICAgdm9pZCBoYW5kbGVSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKICAgICAgICAgdm9pZCBoYW5kbGVEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciosIGludCk7
CiAgICAgICAgIHZvaWQgaGFuZGxlTm90aWZ5RmluaXNoZWQoKTsKIAogICAgICAgICBHc3RFbGVt
ZW50KiBtX3NyYzsKIH07CiAKLWNsYXNzIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50IDog
cHVibGljIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LCBwdWJsaWMgU3RyZWFtaW5nQ2xpZW50IHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudCk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworY2xhc3MgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdD
bGllbnQgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudCwgcHVi
bGljIFN0cmVhbWluZ0NsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2FjaGVkUmVz
b3VyY2VTdHJlYW1pbmdDbGllbnQpOwogICAgIHB1YmxpYzoKLSAgICAgICAgQ2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQoV2ViS2l0V2ViU3JjKiwgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBNZWRpYVBsYXllckNsaWVudDo6Q09SU01vZGUpOworICAg
ICAgICBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudChXZWJLaXRXZWJTcmMqKTsKICAgICAg
ICAgdmlydHVhbCB+Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQoKTsKIAotICAgICAgICAv
LyBTdHJlYW1pbmdDbGllbnQgdmlydHVhbCBtZXRob2RzLgotICAgICAgICB2aXJ0dWFsIGJvb2wg
bG9hZEZhaWxlZCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGlu
Zyhib29sKTsKLQogICAgIHByaXZhdGU6Ci0gICAgICAgIC8vIENhY2hlZFJlc291cmNlQ2xpZW50
IHZpcnR1YWwgbWV0aG9kcy4KLSAgICAgICAgdmlydHVhbCBjaGFyKiBnZXRPckNyZWF0ZVJlYWRC
dWZmZXIoQ2FjaGVkUmVzb3VyY2UqLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1
YWxTaXplKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBk
YXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiwgaW50KTsKLSAgICAgICAg
dmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7Ci0KLSAgICAgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAg
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CisgICAgICAgIC8vIE1lZGlhUGxh
eWVyUmVzb3VyY2VMb2FkZXJDbGllbnQgdmlydHVhbCBtZXRob2RzLgorICAgICAgICB2aXJ0dWFs
IGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90
JiBhY3R1YWxTaXplKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgICAgICB2
aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZpbmlzaGVkKFNo
YXJlZEJ1ZmZlciopIG92ZXJyaWRlOwogfTsKIAogY2xhc3MgUmVzb3VyY2VIYW5kbGVTdHJlYW1p
bmdDbGllbnQgOiBwdWJsaWMgUmVzb3VyY2VIYW5kbGVDbGllbnQsIHB1YmxpYyBTdHJlYW1pbmdD
bGllbnQgewpAQCAtMTAyLDggKzgzLDggQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdD
bGllbnQgOiBwdWJsaWMgUmVzb3VyY2VIYW5kbGVDbGllbnQsIHB1YmxpYyBTdHJlYW0KICAgICAg
ICAgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQoKTsKIAogICAgICAgICAv
LyBTdHJlYW1pbmdDbGllbnQgdmlydHVhbCBtZXRob2RzLgotICAgICAgICB2aXJ0dWFsIGJvb2wg
bG9hZEZhaWxlZCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGlu
Zyhib29sKTsKKyAgICAgICAgYm9vbCBsb2FkRmFpbGVkKCkgY29uc3Q7CisgICAgICAgIHZvaWQg
c2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIFJlc291
cmNlSGFuZGxlQ2xpZW50IHZpcnR1YWwgbWV0aG9kcy4KQEAgLTEyOCw5ICsxMDksMTAgQEAgc3Ry
dWN0IF9XZWJLaXRXZWJTcmNQcml2YXRlIHsKIAogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyKiBw
bGF5ZXI7CiAKLSAgICBTdHJlYW1pbmdDbGllbnQqIGNsaWVudDsKKyAgICBSZWZQdHI8TWVkaWFQ
bGF5ZXJSZXNvdXJjZUxvYWRlcj4gbG9hZGVyOworICAgIFJlc291cmNlSGFuZGxlU3RyZWFtaW5n
Q2xpZW50KiBjbGllbnQ7CiAKLSAgICBDT1JTQWNjZXNzQ2hlY2tSZXN1bHQgY29yc0FjY2Vzc0No
ZWNrOworICAgIGJvb2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsKIAogICAgIGd1aW50NjQg
b2Zmc2V0OwogICAgIGd1aW50NjQgc2l6ZTsKQEAgLTQwMiw2ICszODQsOCBAQCBzdGF0aWMgdm9p
ZCB3ZWJLaXRXZWJTcmNTdG9wKFdlYktpdFdlYlNyYyogc3JjKQogICAgICAgICBwcml2LT5jbGll
bnQgPSAwOwogICAgIH0KIAorICAgIHByaXYtPmxvYWRlciA9IG51bGxwdHI7CisKICAgICBpZiAo
cHJpdi0+YnVmZmVyKSB7CiAgICAgICAgIHVubWFwR3N0QnVmZmVyKHByaXYtPmJ1ZmZlci5nZXQo
KSk7CiAgICAgICAgIHByaXYtPmJ1ZmZlci5jbGVhcigpOwpAQCAtNDQ5LDcgKzQzMyw3IEBAIHN0
YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNyYyogc3JjKQogCiAgICAgR011
dGV4TG9ja2VyIGxvY2tlcigqR1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKIAotICAgIHByaXYt
PmNvcnNBY2Nlc3NDaGVjayA9IENPUlNOb0NoZWNrOworICAgIHByaXYtPmRpZFBhc3NBY2Nlc3ND
b250cm9sQ2hlY2sgPSBmYWxzZTsKIAogICAgIGlmICghcHJpdi0+dXJpKSB7CiAgICAgICAgIEdT
VF9FUlJPUl9PQkpFQ1Qoc3JjLCAiTm8gVVJJIHByb3ZpZGVkIik7CkBAIC00NTksNiArNDQzLDcg
QEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAg
fQogCiAgICAgQVNTRVJUKCFwcml2LT5jbGllbnQpOworICAgIEFTU0VSVCghcHJpdi0+bG9hZGVy
KTsKIAogICAgIFVSTCB1cmwgPSBVUkwoVVJMKCksIHByaXYtPnVyaSk7CiAKQEAgLTQ5MywyMCAr
NDc4LDI5IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNyYyogc3Jj
KQogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOwogCisgICAgYm9vbCBsb2FkRmFpbGVkID0gdHJ1ZTsK
ICAgICBpZiAocHJpdi0+cGxheWVyKSB7Ci0gICAgICAgIGlmIChDYWNoZWRSZXNvdXJjZUxvYWRl
ciogbG9hZGVyID0gcHJpdi0+cGxheWVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKQotICAgICAg
ICAgICAgcHJpdi0+Y2xpZW50ID0gbmV3IENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50KHNy
YywgbG9hZGVyLCByZXF1ZXN0LCBwcml2LT5wbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1l
ZGlhUGxheWVyQ09SU01vZGUoKSk7CisgICAgICAgIHByaXYtPmxvYWRlciA9IHByaXYtPnBsYXll
ci0+Y3JlYXRlUmVzb3VyY2VMb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNvdXJjZVN0
cmVhbWluZ0NsaWVudD4oc3JjKSk7CisgICAgICAgIGlmIChwcml2LT5sb2FkZXIpIHsKKyAgICAg
ICAgICAgIE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zIGxvYWRPcHRpb25z
ID0gMDsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImJsb2IiKSkK
KyAgICAgICAgICAgICAgICBsb2FkT3B0aW9ucyB8PSBNZWRpYVBsYXllclJlc291cmNlTG9hZGVy
OjpMb2FkT3B0aW9uOjpCdWZmZXJEYXRhOworICAgICAgICAgICAgbG9hZEZhaWxlZCA9ICFwcml2
LT5sb2FkZXItPnN0YXJ0KHJlcXVlc3QsIGxvYWRPcHRpb25zKTsKKyAgICAgICAgfQogICAgIH0K
IAotICAgIGlmICghcHJpdi0+Y2xpZW50KQorICAgIGlmICghcHJpdi0+bG9hZGVyKSB7CiAgICAg
ICAgIHByaXYtPmNsaWVudCA9IG5ldyBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudChzcmMs
IHJlcXVlc3QpOworICAgICAgICBsb2FkRmFpbGVkID0gcHJpdi0+Y2xpZW50LT5sb2FkRmFpbGVk
KCk7CisgICAgfQogCi0gICAgaWYgKCFwcml2LT5jbGllbnQgfHwgcHJpdi0+Y2xpZW50LT5sb2Fk
RmFpbGVkKCkpIHsKKyAgICBpZiAobG9hZEZhaWxlZCkgewogICAgICAgICBHU1RfRVJST1JfT0JK
RUNUKHNyYywgIkZhaWxlZCB0byBzZXR1cCBzdHJlYW1pbmcgY2xpZW50Iik7CiAgICAgICAgIGlm
IChwcml2LT5jbGllbnQpIHsKICAgICAgICAgICAgIGRlbGV0ZSBwcml2LT5jbGllbnQ7Ci0gICAg
ICAgICAgICBwcml2LT5jbGllbnQgPSAwOworICAgICAgICAgICAgcHJpdi0+Y2xpZW50ID0gbnVs
bHB0cjsKICAgICAgICAgfQorICAgICAgICBwcml2LT5sb2FkZXIgPSBudWxscHRyOwogICAgICAg
ICBsb2NrZXIudW5sb2NrKCk7CiAgICAgICAgIHdlYktpdFdlYlNyY1N0b3Aoc3JjKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjgwLDYgKzY3NCw4IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY05l
ZWREYXRhTWFpbkNiKFdlYktpdFdlYlNyYyogc3JjKQogCiAgICAgaWYgKHByaXYtPmNsaWVudCkK
ICAgICAgICAgcHJpdi0+Y2xpZW50LT5zZXREZWZlcnNMb2FkaW5nKGZhbHNlKTsKKyAgICBpZiAo
cHJpdi0+bG9hZGVyKQorICAgICAgICBwcml2LT5sb2FkZXItPnNldERlZmVyc0xvYWRpbmcoZmFs
c2UpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVkRGF0YUNiKEdzdEFwcFNyYyos
IGd1aW50IGxlbmd0aCwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC03MTAsNiArNzA2LDggQEAgc3Rh
dGljIHZvaWQgd2ViS2l0V2ViU3JjRW5vdWdoRGF0YU1haW5DYihXZWJLaXRXZWJTcmMqIHNyYykK
IAogICAgIGlmIChwcml2LT5jbGllbnQpCiAgICAgICAgIHByaXYtPmNsaWVudC0+c2V0RGVmZXJz
TG9hZGluZyh0cnVlKTsKKyAgICBpZiAocHJpdi0+bG9hZGVyKQorICAgICAgICBwcml2LT5sb2Fk
ZXItPnNldERlZmVyc0xvYWRpbmcodHJ1ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNy
Y0Vub3VnaERhdGFDYihHc3RBcHBTcmMqLCBncG9pbnRlciB1c2VyRGF0YSkKQEAgLTc2Nyw3ICs3
NjUsNyBAQCB2b2lkIHdlYktpdFdlYlNyY1NldE1lZGlhUGxheWVyKFdlYktpdFdlYlNyYyogc3Jj
LCBXZWJDb3JlOjpNZWRpYVBsYXllciogcGxheWVyKQogCiBib29sIHdlYktpdFNyY1Bhc3NlZENP
UlNBY2Nlc3NDaGVjayhXZWJLaXRXZWJTcmMqIHNyYykKIHsKLSAgICByZXR1cm4gc3JjLT5wcml2
LT5jb3JzQWNjZXNzQ2hlY2sgPT0gQ09SU1N1Y2Nlc3M7CisgICAgcmV0dXJuIHNyYy0+cHJpdi0+
ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsKIH0KIAogU3RyZWFtaW5nQ2xpZW50OjpTdHJlYW1p
bmdDbGllbnQoV2ViS2l0V2ViU3JjKiBzcmMpCkBAIC03OTksMTkgKzc5NywxNSBAQCBjaGFyKiBT
dHJlYW1pbmdDbGllbnQ6OmNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IHJlcXVlc3RlZFNpemUsIHNp
emVfdCYgYWN0dWFsU2l6ZQogICAgIHJldHVybiBnZXRHc3RCdWZmZXJEYXRhUG9pbnRlcihidWZm
ZXIpOwogfQogCi12b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxlUmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ09SU0FjY2Vzc0NoZWNrUmVzdWx0IGNv
cnNBY2Nlc3NDaGVjaykKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVSZXNwb25zZVJlY2Vp
dmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFdlYktpdFdlYlNy
Yyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMpOwogICAgIFdlYktpdFdlYlNyY1ByaXZhdGUq
IHByaXYgPSBzcmMtPnByaXY7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlJlY2VpdmVk
IHJlc3BvbnNlOiAlZCIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogCi0gICAgaWYgKHJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwIHx8IGNvcnNBY2Nlc3NDaGVjayA9PSBDT1JT
RmFpbHVyZSkgewotICAgICAgICAvLyBSZWNlaXZlZCBlcnJvciBjb2RlIG9yIENPUlMgY2hlY2sg
ZmFpbGVkCi0gICAgICAgIGlmIChjb3JzQWNjZXNzQ2hlY2sgPT0gQ09SU0ZhaWx1cmUpCi0gICAg
ICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihzcmMsIFJFU09VUkNFLCBSRUFELCAoIkNyb3NzLW9y
aWdpbiBzdHJlYW0gbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcg
cG9saWN5LiIpLCAobnVsbHB0cikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBHU1RfRUxF
TUVOVF9FUlJPUihzcmMsIFJFU09VUkNFLCBSRUFELCAoIlJlY2VpdmVkICVkIEhUVFAgZXJyb3Ig
Y29kZSIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpLCAobnVsbHB0cikpOworICAgIGlmIChy
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkgeworICAgICAgICBHU1RfRUxFTUVOVF9F
UlJPUihzcmMsIFJFU09VUkNFLCBSRUFELCAoIlJlY2VpdmVkICVkIEhUVFAgZXJyb3IgY29kZSIs
IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpLCAobnVsbHB0cikpOwogICAgICAgICBnc3RfYXBw
X3NyY19lbmRfb2Zfc3RyZWFtKHByaXYtPmFwcHNyYyk7CiAgICAgICAgIHdlYktpdFdlYlNyY1N0
b3Aoc3JjKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODE5LDggKzgxMyw2IEBAIHZvaWQgU3RyZWFt
aW5nQ2xpZW50OjpoYW5kbGVSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBDCiAKICAgICBHTXV0ZXhMb2NrZXIgbG9ja2VyKCpHU1RfT0JKRUNUX0dFVF9M
T0NLKHNyYykpOwogCi0gICAgcHJpdi0+Y29yc0FjY2Vzc0NoZWNrID0gY29yc0FjY2Vzc0NoZWNr
OwotCiAgICAgaWYgKHByaXYtPnNlZWtTb3VyY2UuaXNBY3RpdmUoKSkgewogICAgICAgICBHU1Rf
REVCVUdfT0JKRUNUKHNyYywgIlNlZWsgaW4gcHJvZ3Jlc3MsIGlnbm9yaW5nIHJlc3BvbnNlIik7
CiAgICAgICAgIHJldHVybjsKQEAgLTk5Miw3OCArOTg0LDU0IEBAIHZvaWQgU3RyZWFtaW5nQ2xp
ZW50OjpoYW5kbGVOb3RpZnlGaW5pc2hlZCgpCiAgICAgfQogfQogCi1DYWNoZWRSZXNvdXJjZVN0
cmVhbWluZ0NsaWVudDo6Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQoV2ViS2l0V2ViU3Jj
KiBzcmMsIENhY2hlZFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBNZWRpYVBsYXllckNsaWVudDo6Q09SU01vZGUgY29yc01vZGUp
CitDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdD
bGllbnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgOiBTdHJlYW1pbmdDbGllbnQoc3JjKQogewot
ICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgYnVmZmVyaW5nUG9saWN5ID0gcmVxdWVzdC51cmwoKS5w
cm90b2NvbElzKCJibG9iIikgPyBCdWZmZXJEYXRhIDogRG9Ob3RCdWZmZXJEYXRhOwotICAgIFJl
cXVlc3RPcmlnaW5Qb2xpY3kgY29yc1BvbGljeSA9IGNvcnNNb2RlICE9IE1lZGlhUGxheWVyQ2xp
ZW50OjpVbnNwZWNpZmllZCA/IFBvdGVudGlhbGx5Q3Jvc3NPcmlnaW5FbmFibGVkIDogVXNlRGVm
YXVsdE9yaWdpblJlc3RyaWN0aW9uc0ZvclR5cGU7Ci0gICAgU3RvcmVkQ3JlZGVudGlhbHMgYWxs
b3dDcmVkZW50aWFscyA9IGNvcnNNb2RlID09IE1lZGlhUGxheWVyQ2xpZW50OjpBbm9ueW1vdXMg
PyBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwot
ICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zKFNlbmRDYWxsYmFja3MsIERvTm90U25p
ZmZDb250ZW50LCBidWZmZXJpbmdQb2xpY3ksIGFsbG93Q3JlZGVudGlhbHMsIERvTm90QXNrQ2xp
ZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscywgRG9TZWN1cml0eUNoZWNrLCBjb3JzUG9saWN5
LCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8pOwotCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0IGNhY2hlUmVxdWVzdChyZXF1ZXN0LCBvcHRpb25zKTsKLQotICAgIGlmIChjb3JzTW9kZSAh
PSBNZWRpYVBsYXllckNsaWVudDo6VW5zcGVjaWZpZWQpIHsKLSAgICAgICAgbV9vcmlnaW4gPSBy
ZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKSA/IHJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsKLSAgICAgICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vz
c0NvbnRyb2woY2FjaGVSZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgbV9vcmlnaW4u
Z2V0KCksIGFsbG93Q3JlZGVudGlhbHMpOwotICAgIH0KLQotICAgIC8vIFRPRE86IERlY2lkZSB3
aGV0aGVyIHRvIHVzZSBwcmVmbGlnaHQgbW9kZSBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIChz
ZWUgaHR0cDovL3drYnVnLmNvbS8xMzE0ODQpLgotICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZUxv
YWRlci0+cmVxdWVzdFJhd1Jlc291cmNlKGNhY2hlUmVxdWVzdCk7Ci0gICAgaWYgKG1fcmVzb3Vy
Y2UpCi0gICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCh0aGlzKTsKIH0KIAogQ2FjaGVkUmVz
b3VyY2VTdHJlYW1pbmdDbGllbnQ6On5DYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudCgpCiB7
Ci0gICAgaWYgKG1fcmVzb3VyY2UpIHsKLSAgICAgICAgbV9yZXNvdXJjZS0+cmVtb3ZlQ2xpZW50
KHRoaXMpOwotICAgICAgICBtX3Jlc291cmNlID0gMDsKLSAgICB9CiB9CiAKLWJvb2wgQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGYWlsZWQoKSBjb25zdAorY2hhciogQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihzaXplX3QgcmVx
dWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKQogewotICAgIHJldHVybiAhbV9yZXNvdXJj
ZTsKLX0KLQotdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6c2V0RGVmZXJzTG9h
ZGluZyhib29sIGRlZmVycykKLXsKLSAgICBpZiAobV9yZXNvdXJjZSkKLSAgICAgICAgbV9yZXNv
dXJjZS0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOworICAgIHJldHVybiBjcmVhdGVSZWFkQnVm
ZmVyKHJlcXVlc3RlZFNpemUsIGFjdHVhbFNpemUpOwogfQogCi1jaGFyKiBDYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudDo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKENhY2hlZFJlc291cmNlKiwg
c2l6ZV90IHJlcXVlc3RlZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZSkKK3ZvaWQgQ2FjaGVkUmVz
b3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVJlYWRCdWZmZXIocmVxdWVzdGVk
U2l6ZSwgYWN0dWFsU2l6ZSk7CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IFdFQktJ
VF9XRUJfU1JDKG1fc3JjKS0+cHJpdjsKKyAgICBwcml2LT5kaWRQYXNzQWNjZXNzQ29udHJvbENo
ZWNrID0gcHJpdi0+bG9hZGVyLT5kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKCk7CisgICAgaGFu
ZGxlUmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQogewotICAgIENPUlNBY2Nlc3NDaGVja1Jlc3VsdCBjb3JzQWNjZXNzQ2hlY2sgPSBDT1JTTm9D
aGVjazsKLSAgICBpZiAobV9vcmlnaW4pCi0gICAgICAgIGNvcnNBY2Nlc3NDaGVjayA9IChtX29y
aWdpbi0+Y2FuUmVxdWVzdChyZXNwb25zZS51cmwoKSkgfHwgcmVzb3VyY2UtPnBhc3Nlc0FjY2Vz
c0NvbnRyb2xDaGVjayhtX29yaWdpbi5nZXQoKSkpID8gQ09SU1N1Y2Nlc3MgOiBDT1JTRmFpbHVy
ZTsKLSAgICBoYW5kbGVSZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlLCBjb3JzQWNjZXNzQ2hlY2sp
OworICAgIGhhbmRsZURhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hl
ZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudDo6YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogewotICAgIGhhbmRsZURhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgpOworICAgIFdlYktp
dFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMpOworICAgIEdTVF9FTEVNRU5UX0VS
Uk9SKHNyYywgUkVTT1VSQ0UsIFJFQUQsICgiJXMiLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlv
bigpLnV0ZjgoKS5kYXRhKCkpLCAobnVsbHB0cikpOworICAgIGdzdF9hcHBfc3JjX2VuZF9vZl9z
dHJlYW0oc3JjLT5wcml2LT5hcHBzcmMpOworICAgIHdlYktpdFdlYlNyY1N0b3Aoc3JjKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dDo6bG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAocmVz
b3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgV2ViS2l0V2ViU3JjKiBz
cmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYyk7CisgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJL
SVRfV0VCX1NSQyhtX3NyYyk7CiAKLSAgICAgICAgaWYgKCFyZXNvdXJjZS0+d2FzQ2FuY2VsZWQo
KSkgewotICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IgPSByZXNvdXJjZS0+
cmVzb3VyY2VFcnJvcigpOwotICAgICAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzcmMsICJIYXZl
IGZhaWx1cmU6ICVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgp
KTsKLSAgICAgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNyYywgUkVTT1VSQ0UsIEZBSUxFRCwg
KCIlcyIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSksICgwKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShzcmMtPnByaXYt
PmFwcHNyYyk7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIWVycm9yLmlzQ2FuY2VsbGF0aW9u
KCkpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzcmMsICJIYXZlIGZhaWx1cmU6ICVzIiwg
ZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgR1NU
X0VMRU1FTlRfRVJST1Ioc3JjLCBSRVNPVVJDRSwgRkFJTEVELCAoIiVzIiwgZXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSwgKG51bGxwdHIpKTsKICAgICB9CiAKKyAg
ICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKHNyYy0+cHJpdi0+YXBwc3JjKTsKK30KKwordm9p
ZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVkKFNoYXJlZEJ1ZmZl
ciopCit7CiAgICAgaGFuZGxlTm90aWZ5RmluaXNoZWQoKTsKIH0KIApAQCAtMTEwNCw3ICsxMDcy
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6d2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXEKIAogdm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVh
bWluZ0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaGFuZGxlUmVzcG9uc2VSZWNlaXZlZChy
ZXNwb25zZSwgQ09SU05vQ2hlY2spOworICAgIGhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQocmVzcG9u
c2UpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIC8qIGRhdGEgKi8sIHVuc2lnbmVkIC8q
IGxlbmd0aCAqLywgaW50KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238597</attachid>
            <date>2014-09-24 04:50:48 -0700</date>
            <delta_ts>2014-09-30 12:22:39 -0700</delta_ts>
            <desc>Try to fix the mac build</desc>
            <filename>wcore-media-player-violations2.diff</filename>
            <type>text/plain</type>
            <size>38764</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjOTY2NDhlLi42ZWI4MDI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMDkt
MjQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHU3RyZWFtZXJdIERvIG5vdCB1c2UgQ2FjaGVkUmVzb3VyY2VMb2FkZXIsIFNlY3VyaXR5T3Jp
Z2luLCBSZXNvdXJjZUJ1ZmZlciBhbmQgb3RoZXIgV2ViQ29yZSB0eXBlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGVkIHJlc3Vs
dHMgb2YgaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4tYWNjZXNzZmFpbHVy
ZS5odG1sLCBzaW5jZQorICAgICAgICBub3cgdGhlIGVycm9yIGlzIGFsc28gbG9nZ2VkIGluIHRo
ZSBjb25zb2xlLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1v
cmlnaW4tYWNjZXNzZmFpbHVyZS1leHBlY3RlZC50eHQ6CisKIDIwMTQtMDktMjIgIEd5dXlvdW5n
IEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBF
RkwgZ2FyZGVuaW5nLiBVbnNraXAgbWVkaWEgdGVzdCBvbiBFRkwgcG9ydC4gQWxtb3N0IG1lZGlh
IHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZGVv
LWNyb3NzLW9yaWdpbi1hY2Nlc3NmYWlsdXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWFjY2Vzc2ZhaWx1cmUtZXhwZWN0
ZWQudHh0CmluZGV4IDQxNWNlMWUuLjllMjI1MDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWFjY2Vzc2ZhaWx1cmUtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mt
b3JpZ2luLWFjY2Vzc2ZhaWx1cmUtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNCBAQAorQ09OU09M
RSBNRVNTQUdFOiBDcm9zcy1vcmlnaW4gbWVkaWEgcmVzb3VyY2UgbG9hZCBkZW5pZWQgYnkgQ3Jv
c3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LgogRVZFTlQoZXJyb3IpCiBFTkQgT0Yg
VEVTVAogIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzOTJmMzQzLi5lMDY5MjU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTgzNSw2ICsxODM1LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwog
ICAgIGxvYWRlci9JbWFnZUxvYWRlci5jcHAKICAgICBsb2FkZXIvTGlua0xvYWRlci5jcHAKICAg
ICBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuY3BwCisgICAgbG9hZGVyL01lZGlhUmVzb3VyY2VMb2Fk
ZXIuY3BwCiAgICAgbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCiAgICAgbG9hZGVyL05h
dmlnYXRpb25BY3Rpb24uY3BwCiAgICAgbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNWI1MGU1ZS4uMGRkZDZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBA
CisyMDE0LTA5LTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1N0cmVhbWVyXSBEbyBub3QgdXNlIENhY2hlZFJlc291cmNlTG9hZGVyLCBT
ZWN1cml0eU9yaWdpbiwgUmVzb3VyY2VCdWZmZXIgYW5kIG90aGVyIFdlYkNvcmUgdHlwZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzA2NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIG1l
ZGlhIHJlc291cmNlIGxvYWRlciB0byBhIG5ldyBjbGFzcyBpbiBXZWJDb3JlL2xvYWRlcgorICAg
ICAgICB0aGF0IGluaGVyaXRzIGZyb20gYSBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyIGNsYXNz
IGRlZmluZWQgaW4KKyAgICAgICAgdGhlIHBsYXRmb3JtIGxheWVyLiBUaGUgcGxhdGZvcm0gc3Bl
Y2lmaWMgYmVoYXZpb3VyIGlzIGltcGxlbWVudGVkCisgICAgICAgIHVzaW5nIGEgY2xpZW50IGFs
c28gZGVmaW5lZCBpbiB0aGUgcGxhdGZvcm0gbGF5ZXIsIGltcGxlbWVudGVkIGJ5CisgICAgICAg
IGV2ZXJ5IG1lZGlhIGJhY2tlbmQsIGFuZCB1c2VkIGJ5IHRoZSBXZWJDb3JlIE1lZGlhUmVzb3Vy
Y2VMb2FkZXIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG5ldyBmaWxlcyB0byBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxv
YWRlcik6CisgICAgICAgIENyZWF0ZSBhIE1lZGlhUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNPUlNNb2RlKTogRGVsZXRlZC4g
VGhpcyBpcworICAgICAgICBubyBsb25nZXIgdXNlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6TWVkaWFSZXNvdXJj
ZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjp+TWVkaWFS
ZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpz
dGFydCk6IFN0YXJ0IGEgbmV3IGxvYWQgZm9yIHRoZQorICAgICAgICBnaXZlbiByZXF1ZXN0IGFu
ZCBsb2FkIG9wdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpz
dG9wKTogU3RvcCB0aGUgbG9hZCBpZiBuZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJl
c291cmNlTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOiBIYW5kbGUgQ09SUworICAgICAgICBh
Y2Nlc3MgY2hlY2sgYW5kIG5vdGlmeSB0aGUgY2xpZW50IGFib3V0IHRoZSByZXNwb25zZS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6IE5vdGlm
eSB0aGUgY2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6bm90
aWZ5RmluaXNoZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2Fk
ZXI6OmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcik6IEFzayB0aGUKKyAgICAgICAgY2xpZW50IHRvIGNy
ZWF0ZSB0aGUgcmVhZCBidWZmZXIuCisgICAgICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2Fk
ZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNyZWF0ZVJlc291cmNlTG9hZGVyKTog
Q2FsbAorICAgICAgICBtZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVyKCkgaWYgdGhlcmUn
cyBhIGNsaWVudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyQ3JlYXRlUmVz
b3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlh
UGxheWVyQ09SU01vZGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXJDbGllbnQ6OmRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50OjpidWZm
ZXJSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlc291cmNlTG9hZGVy
Q2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudDo6bG9hZEZhaWxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50Ojpsb2FkRmluaXNoZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudDo6Z2V0T3JDcmVh
dGVSZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVzb3VyY2VMb2Fk
ZXI6On5NZWRpYVBsYXllclJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUmVzb3VyY2VMb2FkZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJSZXNvdXJjZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclJlc291cmNlTG9hZGVyOjpkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXI6Ok1lZGlhUGxheWVyUmVz
b3VyY2VMb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjU3RvcCk6IEFs
c28gZGVsZXRlIHRoZSBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyLgorICAgICAgICAod2ViS2l0
V2ViU3JjU3RhcnQpOiBDcmVhdGUgYSBuZXcgcmVzb3VyY2UgbG9hZGVyIHVzaW5nCisgICAgICAg
IE1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcigpIHdpdGggYSBuZXcKKyAgICAgICAg
Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQgYXMgY2xpZW50LgorICAgICAgICAod2ViS2l0
V2ViU3JjTmVlZERhdGFNYWluQ2IpOiBDYWxsIHNldERlZmVyc0xvYWRpbmcoKSBmb3IgdGhlCisg
ICAgICAgIHJlc291cmNlIGxvYWRlciBpZiB0aGVyZSdzIG9uZS4KKyAgICAgICAgKHdlYktpdFdl
YlNyY0Vub3VnaERhdGFNYWluQ2IpOiBEaXR0by4KKyAgICAgICAgKHdlYktpdFNyY1Bhc3NlZENP
UlNBY2Nlc3NDaGVjayk6IFJldHVybiBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrLgorICAgICAg
ICAoU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVSZXNwb25zZVJlY2VpdmVkKTogUmVtb3ZlIHRoZSBD
T1JTIGNoZWNrCisgICAgICAgIHJlc3VsdCBwYXJhbWV0ZXIgc2luY2UgdGhhdCdzIG5vdyBoYW5k
bGVkIGJ5IE1lZGlhUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVh
bWluZ0NsaWVudDo6Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQpOgorICAgICAgICAoQ2Fj
aGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6On5DYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dCk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6Z2V0T3JDcmVhdGVS
ZWFkQnVmZmVyKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNw
b25zZVJlY2VpdmVkKTogVXBkYXRlIGRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2suCisgICAgICAg
IChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQp
OiBMb2cgdGhlCisgICAgICAgIGVycm9yIGFuZCBzdG9wIHRoZSBsb2FkLgorICAgICAgICAoQ2Fj
aGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGYWlsZWQpOiBMb2cgdGhlIGVycm9yIGlm
IGl0CisgICAgICAgIHdhcyBub3QgYSBjYW5jZWxsYXRpb24uCisgICAgICAgIChDYWNoZWRSZXNv
dXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVkKToKKyAgICAgICAgKFJlc291cmNlSGFu
ZGxlU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnNldERlZmVyc0xvYWRpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6Om5vdGlmeUZpbmlzaGVkKTogRGVs
ZXRlZC4KKwogMjAxNC0wOS0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBFbnN1cmUgdGhhdCBsYXlvdXQgaXMgdXAtdG8tZGF0ZSBiZWZvcmUgaGl0
LXRlc3RpbmcgdmlhIFJlbmRlclZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IDNkMjFjNTIuLjJiM2Q0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgIk1lZGlhS2V5RXZl
bnQuaCIKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVh
dG9yLmgiCisjaW5jbHVkZSAiTWVkaWFSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk1lZGlh
U2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgiCkBAIC01NTc0LDE1ICs1NTc1LDYgQEAg
VmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4+IEhUTUxNZWRpYUVsZW1lbnQ6Om91dE9m
QmFuZFRyYWNrU291cmNlcygpCiB9CiAjZW5kaWYKIAotTWVkaWFQbGF5ZXJDbGllbnQ6OkNPUlNN
b2RlIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ09SU01vZGUoKSBjb25zdAotewotICAg
IGlmICghZmFzdEhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0cikpCi0gICAg
ICAgIHJldHVybiBVbnNwZWNpZmllZDsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmFzdEdl
dEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0ciksICJ1c2UtY3JlZGVudGlhbHMi
KSkKLSAgICAgICAgcmV0dXJuIFVzZUNyZWRlbnRpYWxzOwotICAgIHJldHVybiBBbm9ueW1vdXM7
Ci19Ci0KIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJOZWVkc1NpdGVTcGVjaWZp
Y0hhY2tzKCkgY29uc3QKIHsKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNl
dHRpbmdzKCk7CkBAIC01NjYyLDYgKzU2NTQsMTEgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogICAgIHJl
dHVybiBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKK1Bhc3NSZWZQdHI8
TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlcj4gSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJD
cmVhdGVSZXNvdXJjZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxv
YWRlckNsaWVudD4gY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFSZXNv
dXJjZUxvYWRlcihkb2N1bWVudCgpLCBmYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y3Jvc3Nv
cmlnaW5BdHRyKSwgV1RGOjptb3ZlKGNsaWVudCkpKTsKK30KKwogYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllclNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKICAgICBG
cmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCmluZGV4IGQ4NjdmNzUuLjNlN2UzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC01NTIsNyArNTUyLDYgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgQ09SU01vZGUgbWVkaWFQbGF5ZXJDT1JTTW9kZSgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyTmVlZHNTaXRlU3BlY2lmaWNIYWNrcygpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyRG9jdW1lbnRIb3N0
KCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC01NzAsNiArNTY5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc1BhdXNlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCBtZWRpYVBsYXllcklzTG9vcGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1lZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIo
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxv
YWRlcj4gbWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8TWVk
aWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudD4pOwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQogICAgIHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBtZWRp
YVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0IG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjN2FkMDgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTAsMCArMSwxNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTAorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFSZXNvdXJjZUxvYWRl
ci5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgi
CisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCisjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYVJlc291cmNlTG9hZGVyOjpNZWRpYVJlc291cmNl
TG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUs
IHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQp
CisgICAgOiBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyKFdURjo6bW92ZShjbGllbnQpKQorICAg
ICwgbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fY3Jvc3NPcmlnaW5Nb2RlKGNyb3NzT3Jp
Z2luTW9kZSkKKyAgICAsIG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayhmYWxzZSkKK3sKK30K
KworTWVkaWFSZXNvdXJjZUxvYWRlcjo6fk1lZGlhUmVzb3VyY2VMb2FkZXIoKQoreworICAgIHN0
b3AoKTsKK30KKworYm9vbCBNZWRpYVJlc291cmNlTG9hZGVyOjpzdGFydChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIExvYWRPcHRpb25zIG9wdGlvbnMpCit7CisgICAgaWYgKG1fcmVz
b3VyY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERhdGFCdWZmZXJpbmdQb2xpY3kg
YnVmZmVyaW5nUG9saWN5ID0gb3B0aW9ucyAmIExvYWRPcHRpb246OkJ1ZmZlckRhdGEgPyBXZWJD
b3JlOjpCdWZmZXJEYXRhIDogV2ViQ29yZTo6RG9Ob3RCdWZmZXJEYXRhOworICAgIFJlcXVlc3RP
cmlnaW5Qb2xpY3kgY29yc1BvbGljeSA9ICFtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKSA/IFBv
dGVudGlhbGx5Q3Jvc3NPcmlnaW5FbmFibGVkIDogVXNlRGVmYXVsdE9yaWdpblJlc3RyaWN0aW9u
c0ZvclR5cGU7CisgICAgU3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFscyA9IG1fY3Jv
c3NPcmlnaW5Nb2RlLmlzTnVsbCgpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG1fY3Jvc3NPcmlnaW5N
b2RlLCAidXNlLWNyZWRlbnRpYWxzIikgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RB
bGxvd1N0b3JlZENyZWRlbnRpYWxzOworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBjYWNoZVJl
cXVlc3QocmVxdWVzdCwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIERvTm90
U25pZmZDb250ZW50LCBidWZmZXJpbmdQb2xpY3ksIGFsbG93Q3JlZGVudGlhbHMsIERvTm90QXNr
Q2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscywgRG9TZWN1cml0eUNoZWNrLCBjb3JzUG9s
aWN5LCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8pKTsKKworICAgIGlmICghbV9jcm9zc09y
aWdpbk1vZGUuaXNOdWxsKCkpCisgICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9s
KGNhY2hlUmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIG1fZG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKSwgYWxsb3dDcmVkZW50aWFscyk7CisKKyAgICBtX2RpZFBhc3NBY2Nlc3NDb250
cm9sQ2hlY2sgPSBmYWxzZTsKKworICAgIC8vIFRPRE86IERlY2lkZSB3aGV0aGVyIHRvIHVzZSBw
cmVmbGlnaHQgbW9kZSBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIChzZWUgaHR0cDovL3drYnVn
LmNvbS8xMzE0ODQpLgorICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIgPSBtX2RvY3Vt
ZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CisgICAgbV9yZXNvdXJjZSA9IGxvYWRlciA/IGxv
YWRlci0+cmVxdWVzdFJhd1Jlc291cmNlKGNhY2hlUmVxdWVzdCkgOiBudWxscHRyOworICAgIGlm
ICghbV9yZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9yZXNvdXJjZS0+
YWRkQ2xpZW50KHRoaXMpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhUmVzb3Vy
Y2VMb2FkZXI6OnN0b3AoKQoreworICAgIGlmICghbV9yZXNvdXJjZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9yZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgIG1fcmVzb3VyY2Ug
PSBudWxscHRyOworfQorCit2b2lkIE1lZGlhUmVzb3VyY2VMb2FkZXI6OnNldERlZmVyc0xvYWRp
bmcoYm9vbCBkZWZlcnNMb2FkaW5nKQoreworICAgIGlmIChtX3Jlc291cmNlKQorICAgICAgICBt
X3Jlc291cmNlLT5zZXREZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpOworfQorCisvLyBDYWNo
ZWRSZXNvdXJjZUNsaWVudAordm9pZCBNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCit7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNv
dXJjZSk7CisKKyAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsK
KyAgICBpZiAoIW1fY3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgpCisgICAgICAgICYmICFtX2RvY3Vt
ZW50LnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocmVzb3VyY2UtPnJlc3BvbnNlKCkudXJs
KCkpCisgICAgICAgICYmICFyZXNvdXJjZS0+cGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKG1fZG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJDcm9zcy1vcmlnaW4g
bWVkaWEgcmVzb3VyY2UgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJp
bmcgcG9saWN5LiIpKTsKKyAgICAgICAgbV9kb2N1bWVudC5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2Uu
Z2V0KCkpOworICAgICAgICBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgPSBmYWxzZTsKKyAg
ICAgICAgbV9jbGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBjb25z
b2xlTWVzc2FnZS5nZXQoKSkpOworICAgICAgICBzdG9wKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgPSAhbV9jcm9zc09yaWdpbk1v
ZGUuaXNOdWxsKCk7CisgICAgbV9jbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOwor
fQorCit2b2lkIE1lZGlhUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQoreworICAgIEFT
U0VSVChyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKworICAgIFJlZlB0cjxNZWRpYVJlc291cmNl
TG9hZGVyPiBwcm90ZWN0KHRoaXMpOworICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoZGF0YSwg
ZGF0YUxlbmd0aCk7CisKKyAgICBpZiAoU2hhcmVkQnVmZmVyKiBidWZmZXIgPSByZXNvdXJjZS0+
cmVzb3VyY2VCdWZmZXIoKSA/IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRCdWZm
ZXIoKSA6IG51bGxwdHIpCisgICAgICAgIG1fY2xpZW50LT5idWZmZXJSZWNlaXZlZChidWZmZXIp
OworfQorCit2b2lkIE1lZGlhUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBBU1NFUlQocmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7
CisKKyAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKKyAgICBp
ZiAocmVzb3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpCisgICAgICAgIG1fY2xpZW50LT5s
b2FkRmFpbGVkKHJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkpOworICAgIGVsc2UKKyAgICAgICAg
bV9jbGllbnQtPmxvYWRGaW5pc2hlZChyZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSA/IHJlc291
cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRCdWZmZXIoKSA6IG51bGxwdHIpOworICAgIHN0
b3AoKTsKK30KKworI2lmIFVTRShTT1VQKQorY2hhciogTWVkaWFSZXNvdXJjZUxvYWRlcjo6Z2V0
T3JDcmVhdGVSZWFkQnVmZmVyKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgc2l6ZV90IHJlcXVl
c3RlZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZSkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICByZXR1cm4gbV9jbGllbnQtPmdldE9y
Q3JlYXRlUmVhZEJ1ZmZlcihyZXF1ZXN0ZWRTaXplLCBhY3R1YWxTaXplKTsKK30KKyNlbmRpZgor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NZWRpYVJlc291cmNlTG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZWU4Yjk0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBJZ2FsaWEgUy5MCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFSZXNvdXJjZUxvYWRlcl9o
CisjZGVmaW5lIE1lZGlhUmVzb3VyY2VMb2FkZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKQorI2lu
Y2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGUuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclJlc291cmNlTG9hZGVyLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQ2FjaGVkUmF3UmVzb3VyY2U7CitjbGFzcyBEb2N1bWVudDsKKworY2xhc3MgTWVkaWFSZXNv
dXJjZUxvYWRlciBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyLCBDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudCB7CitwdWJsaWM6CisgICAgTWVkaWFSZXNvdXJjZUxvYWRlcihE
b2N1bWVudCYsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudD4pOworICAgIHZpcnR1YWwgfk1lZGlhUmVz
b3VyY2VMb2FkZXIoKTsKKworICAgIHZpcnR1YWwgYm9vbCBzdGFydChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBMb2FkT3B0aW9ucykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGJvb2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsgfQorCisgICAgLy8g
Q2FjaGVkUmVzb3VyY2VDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhciosIGlu
dCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKikgb3ZlcnJpZGU7CisjaWYgVVNFKFNPVVApCisgICAgdmlydHVhbCBjaGFyKiBnZXRPckNy
ZWF0ZVJlYWRCdWZmZXIoQ2FjaGVkUmVzb3VyY2UqLCBzaXplX3QgLypyZXF1ZXN0ZWRTaXplKi8s
IHNpemVfdCYgLyphY3R1YWxTaXplKi8pIG92ZXJyaWRlOworI2VuZGlmCisKK3ByaXZhdGU6Cisg
ICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CisgICAgU3RyaW5nIG1fY3Jvc3NPcmlnaW5Nb2RlOwor
ICAgIGJvb2wgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrOworICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOworfTsKKworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggYTdmNGIxZS4uODljYWRmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApA
QCAtMTIwOSw2ICsxMjA5LDE0IEBAIENhY2hlZFJlc291cmNlTG9hZGVyKiBNZWRpYVBsYXllcjo6
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogICAgIHJldHVybiBtX21lZGlhUGxheWVyQ2xpZW50LT5t
ZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKK1Bhc3NSZWZQdHI8TWVkaWFQ
bGF5ZXJSZXNvdXJjZUxvYWRlcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVJlc291cmNlTG9hZGVyKHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQpCit7
CisgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckNyZWF0ZVJlc291
cmNlTG9hZGVyKFdURjo6bW92ZShjbGllbnQpKTsKK30KKwogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKIHZvaWQgTWVkaWFQbGF5ZXI6OmFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZT4gdHJhY2spCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaAppbmRleCAyOTM5OTE3Li5jM2EzZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVj
dC5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJN
ZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtTGF5ZXIuaCIKQEAgLTE0NCw4ICsxNDUsNiBAQCBzdHJ1Y3QgR3JhcGhpY3NEZXZpY2VB
ZGFwdGVyOwogCiBjbGFzcyBNZWRpYVBsYXllckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgZW51bSBD
T1JTTW9kZSB7IFVuc3BlY2lmaWVkLCBBbm9ueW1vdXMsIFVzZUNyZWRlbnRpYWxzIH07Ci0KICAg
ICB2aXJ0dWFsIH5NZWRpYVBsYXllckNsaWVudCgpIHsgfQogCiAgICAgLy8gdGhlIG5ldHdvcmsg
c3RhdGUgaGFzIGNoYW5nZWQKQEAgLTIyNiw3ICsyMjUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIFN0cmluZyBtZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7
IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0
dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBDT1JTTW9kZSBtZWRpYVBsYXllckNPUlNNb2Rl
KCkgY29uc3QgeyByZXR1cm4gVW5zcGVjaWZpZWQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJFbnRlckZ1bGxzY3JlZW4oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJF
eGl0RnVsbHNjcmVlbigpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzRnVsbHNj
cmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0yNDAsNiArMjM4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzUGF1c2VkKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzTG9vcGluZygpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUxvYWRlciogbWVkaWFQ
bGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlcj4gbWVkaWFQbGF5ZXJDcmVhdGVSZXNv
dXJjZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVu
dD4pIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIGJvb2wgZG9lc0hhdmVBdHRyaWJ1
dGUoY29uc3QgQXRvbWljU3RyaW5nJiwgQXRvbWljU3RyaW5nKiA9IDApIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC01MzAsNiArNTI5LDcgQEAg
cHVibGljOgogICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7CisgICAgUGFzc1JlZlB0
cjxNZWRpYVBsYXllclJlc291cmNlTG9hZGVyPiBjcmVhdGVSZXNvdXJjZUxvYWRlcihzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudD4pOwogCiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQogICAgIHZvaWQgYWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJh
Y2tQcml2YXRlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllclJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclJlc291cmNlTG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYzZlMjE0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIuaApAQCAtMCwwICsx
LDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVBsYXllclJlc291
cmNlTG9hZGVyX2gKKyNkZWZpbmUgTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlcl9oCisKKyNpZiBF
TkFCTEUoVklERU8pCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZXNvdXJjZUVy
cm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVu
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVu
dCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgY2hh
ciosIGludCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGJ1ZmZlclJlY2VpdmVkKFNoYXJlZEJ1ZmZl
ciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJl
c291cmNlRXJyb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEZpbmlzaGVkKFNoYXJlZEJ1
ZmZlciopIHsgfQorI2lmIFVTRShTT1VQKQorICAgIHZpcnR1YWwgY2hhciogZ2V0T3JDcmVhdGVS
ZWFkQnVmZmVyKHNpemVfdCAvKnJlcXVlc3RlZFNpemUqLywgc2l6ZV90JiAvKmFjdHVhbFNpemUq
LykgeyByZXR1cm4gbnVsbHB0cjsgfTsKKyNlbmRpZgorfTsKKworY2xhc3MgTWVkaWFQbGF5ZXJS
ZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUGxheWVyUmVzb3VyY2VMb2Fk
ZXI+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVBsYXllclJlc291cmNlTG9hZGVy
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZW51bSBMb2FkT3B0aW9u
IHsKKyAgICAgICAgQnVmZmVyRGF0YSA9IDEgPDwgMCwKKyAgICB9OworICAgIHR5cGVkZWYgdW5z
aWduZWQgTG9hZE9wdGlvbnM7CisKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclJlc291cmNlTG9h
ZGVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgTG9hZE9wdGlvbnMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBk
aWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworcHJv
dGVjdGVkOgorICAgIE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIoc3RkOjp1bmlxdWVfcHRyPE1l
ZGlhUGxheWVyUmVzb3VyY2VMb2FkZXJDbGllbnQ+IGNsaWVudCkKKyAgICAgICAgOiBtX2NsaWVu
dChXVEY6Om1vdmUoY2xpZW50KSkKKyAgICB7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRy
PE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXJDbGllbnQ+IG1fY2xpZW50OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBjNzFkM2MzLi4zZDQyM2IwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMjIsMjIgKzIyLDE3IEBA
CiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAKLSNpbmNsdWRlICJDYWNo
ZWRSYXdSZXNvdXJjZS5oIgotI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCi0j
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUxvYWRlci5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgotI2luY2x1ZGUg
IkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIu
aCIKICNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVy
TmFtZXMuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVy
UmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUg
IlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzcmMu
aD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC01MSw0OCArNDYsMzQgQEAKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLWVudW0gQ09SU0FjY2Vzc0NoZWNrUmVzdWx0IHsKLSAgICBDT1JT
Tm9DaGVjaywKLSAgICBDT1JTU3VjY2VzcywKLSAgICBDT1JTRmFpbHVyZQotfTsKLQogY2xhc3Mg
U3RyZWFtaW5nQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFN0cmVhbWluZ0NsaWVudChX
ZWJLaXRXZWJTcmMqKTsKICAgICAgICAgdmlydHVhbCB+U3RyZWFtaW5nQ2xpZW50KCk7CiAKLSAg
ICAgICAgdmlydHVhbCBib29sIGxvYWRGYWlsZWQoKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpID0gMDsKLQogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgY2hhciogY3JlYXRlUmVhZEJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90
JiBhY3R1YWxTaXplKTsKLSAgICAgICAgdm9pZCBoYW5kbGVSZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDT1JTQWNjZXNzQ2hlY2tSZXN1bHQpOworICAgICAgICB2b2lk
IGhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAg
ICB2b2lkIGhhbmRsZURhdGFSZWNlaXZlZChjb25zdCBjaGFyKiwgaW50KTsKICAgICAgICAgdm9p
ZCBoYW5kbGVOb3RpZnlGaW5pc2hlZCgpOwogCiAgICAgICAgIEdzdEVsZW1lbnQqIG1fc3JjOwog
fTsKIAotY2xhc3MgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQgOiBwdWJsaWMgQ2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQsIHB1YmxpYyBTdHJlYW1pbmdDbGllbnQgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50KTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitjbGFzcyBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudCBmaW5hbCA6
IHB1YmxpYyBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50LCBwdWJsaWMgU3RyZWFtaW5n
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudCk7CiAgICAgcHVibGljOgotICAgICAgICBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0Ns
aWVudChXZWJLaXRXZWJTcmMqLCBDYWNoZWRSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIE1lZGlhUGxheWVyQ2xpZW50OjpDT1JTTW9kZSk7CisgICAgICAgIENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50KFdlYktpdFdlYlNyYyopOwogICAgICAgICB2aXJ0dWFsIH5D
YWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudCgpOwogCi0gICAgICAgIC8vIFN0cmVhbWluZ0Ns
aWVudCB2aXJ0dWFsIG1ldGhvZHMuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBsb2FkRmFpbGVkKCkg
Y29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpOwotCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgLy8gQ2FjaGVkUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRo
b2RzLgotICAgICAgICB2aXJ0dWFsIGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihDYWNoZWRS
ZXNvdXJjZSosIHNpemVfdCByZXF1ZXN0ZWRTaXplLCBzaXplX3QmIGFjdHVhbFNpemUpOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSosIGNvbnN0IGNoYXIqLCBpbnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKLQotICAgICAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICAgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKKyAgICAgICAgLy8gTWVkaWFQbGF5ZXJSZXNvdXJjZUxv
YWRlckNsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCisgICAgICAgIHZpcnR1YWwgY2hhciogZ2V0T3JD
cmVhdGVSZWFkQnVmZmVyKHNpemVfdCByZXF1ZXN0ZWRTaXplLCBzaXplX3QmIGFjdHVhbFNpemUp
IG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVj
ZWl2ZWQoY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBh
Y2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoU2hhcmVkQnVmZmVyKikg
b3ZlcnJpZGU7CiB9OwogCiBjbGFzcyBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudCA6IHB1
YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVudCwgcHVibGljIFN0cmVhbWluZ0NsaWVudCB7CkBAIC0x
MDIsOCArODMsOCBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudCA6IHB1Ymxp
YyBSZXNvdXJjZUhhbmRsZUNsaWVudCwgcHVibGljIFN0cmVhbQogICAgICAgICB2aXJ0dWFsIH5S
ZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudCgpOwogCiAgICAgICAgIC8vIFN0cmVhbWluZ0Ns
aWVudCB2aXJ0dWFsIG1ldGhvZHMuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBsb2FkRmFpbGVkKCkg
Y29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpOworICAg
ICAgICBib29sIGxvYWRGYWlsZWQoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXREZWZlcnNMb2Fk
aW5nKGJvb2wpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gUmVzb3VyY2VIYW5kbGVDbGll
bnQgdmlydHVhbCBtZXRob2RzLgpAQCAtMTI4LDkgKzEwOSwxMCBAQCBzdHJ1Y3QgX1dlYktpdFdl
YlNyY1ByaXZhdGUgewogCiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXIqIHBsYXllcjsKIAotICAg
IFN0cmVhbWluZ0NsaWVudCogY2xpZW50OworICAgIFJlZlB0cjxNZWRpYVBsYXllclJlc291cmNl
TG9hZGVyPiBsb2FkZXI7CisgICAgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQqIGNsaWVu
dDsKIAotICAgIENPUlNBY2Nlc3NDaGVja1Jlc3VsdCBjb3JzQWNjZXNzQ2hlY2s7CisgICAgYm9v
bCBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrOwogCiAgICAgZ3VpbnQ2NCBvZmZzZXQ7CiAgICAg
Z3VpbnQ2NCBzaXplOwpAQCAtNDAyLDYgKzM4NCw4IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNy
Y1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgICAgIHByaXYtPmNsaWVudCA9IDA7CiAgICAg
fQogCisgICAgcHJpdi0+bG9hZGVyID0gbnVsbHB0cjsKKwogICAgIGlmIChwcml2LT5idWZmZXIp
IHsKICAgICAgICAgdW5tYXBHc3RCdWZmZXIocHJpdi0+YnVmZmVyLmdldCgpKTsKICAgICAgICAg
cHJpdi0+YnVmZmVyLmNsZWFyKCk7CkBAIC00NDksNyArNDMzLDcgQEAgc3RhdGljIHZvaWQgd2Vi
S2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAKICAgICBHTXV0ZXhMb2NrZXIgbG9j
a2VyKCpHU1RfT0JKRUNUX0dFVF9MT0NLKHNyYykpOwogCi0gICAgcHJpdi0+Y29yc0FjY2Vzc0No
ZWNrID0gQ09SU05vQ2hlY2s7CisgICAgcHJpdi0+ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayA9
IGZhbHNlOwogCiAgICAgaWYgKCFwcml2LT51cmkpIHsKICAgICAgICAgR1NUX0VSUk9SX09CSkVD
VChzcmMsICJObyBVUkkgcHJvdmlkZWQiKTsKQEAgLTQ1OSw2ICs0NDMsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJLaXRXZWJTcmNTdGFydChXZWJLaXRXZWJTcmMqIHNyYykKICAgICB9CiAKICAgICBBU1NF
UlQoIXByaXYtPmNsaWVudCk7CisgICAgQVNTRVJUKCFwcml2LT5sb2FkZXIpOwogCiAgICAgVVJM
IHVybCA9IFVSTChVUkwoKSwgcHJpdi0+dXJpKTsKIApAQCAtNDkzLDIwICs0NzgsMjkgQEAgc3Rh
dGljIHZvaWQgd2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgLy8gV2Ug
YWx3YXlzIHJlcXVlc3QgSWNlY2FzdC9TaG91dGNhc3QgbWV0YWRhdGEsIGp1c3QgaW4gY2FzZSAu
Li4KICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5TWV0
YWRhdGEsICIxIik7CiAKKyAgICBib29sIGxvYWRGYWlsZWQgPSB0cnVlOwogICAgIGlmIChwcml2
LT5wbGF5ZXIpIHsKLSAgICAgICAgaWYgKENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIgPSBw
cml2LT5wbGF5ZXItPmNhY2hlZFJlc291cmNlTG9hZGVyKCkpCi0gICAgICAgICAgICBwcml2LT5j
bGllbnQgPSBuZXcgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQoc3JjLCBsb2FkZXIsIHJl
cXVlc3QsIHByaXYtPnBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJDT1JT
TW9kZSgpKTsKKyAgICAgICAgcHJpdi0+bG9hZGVyID0gcHJpdi0+cGxheWVyLT5jcmVhdGVSZXNv
dXJjZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50
PihzcmMpKTsKKyAgICAgICAgaWYgKHByaXYtPmxvYWRlcikgeworICAgICAgICAgICAgTWVkaWFQ
bGF5ZXJSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbnMgbG9hZE9wdGlvbnMgPSAwOworICAgICAg
ICAgICAgaWYgKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiYmxvYiIpKQorICAgICAgICAgICAg
ICAgIGxvYWRPcHRpb25zIHw9IE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb246
OkJ1ZmZlckRhdGE7CisgICAgICAgICAgICBsb2FkRmFpbGVkID0gIXByaXYtPmxvYWRlci0+c3Rh
cnQocmVxdWVzdCwgbG9hZE9wdGlvbnMpOworICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFw
cml2LT5jbGllbnQpCisgICAgaWYgKCFwcml2LT5sb2FkZXIpIHsKICAgICAgICAgcHJpdi0+Y2xp
ZW50ID0gbmV3IFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50KHNyYywgcmVxdWVzdCk7Cisg
ICAgICAgIGxvYWRGYWlsZWQgPSBwcml2LT5jbGllbnQtPmxvYWRGYWlsZWQoKTsKKyAgICB9CiAK
LSAgICBpZiAoIXByaXYtPmNsaWVudCB8fCBwcml2LT5jbGllbnQtPmxvYWRGYWlsZWQoKSkgewor
ICAgIGlmIChsb2FkRmFpbGVkKSB7CiAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiRmFp
bGVkIHRvIHNldHVwIHN0cmVhbWluZyBjbGllbnQiKTsKICAgICAgICAgaWYgKHByaXYtPmNsaWVu
dCkgewogICAgICAgICAgICAgZGVsZXRlIHByaXYtPmNsaWVudDsKLSAgICAgICAgICAgIHByaXYt
PmNsaWVudCA9IDA7CisgICAgICAgICAgICBwcml2LT5jbGllbnQgPSBudWxscHRyOwogICAgICAg
ICB9CisgICAgICAgIHByaXYtPmxvYWRlciA9IG51bGxwdHI7CiAgICAgICAgIGxvY2tlci51bmxv
Y2soKTsKICAgICAgICAgd2ViS2l0V2ViU3JjU3RvcChzcmMpOwogICAgICAgICByZXR1cm47CkBA
IC02ODAsNiArNjc0LDggQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTmVlZERhdGFNYWluQ2Io
V2ViS2l0V2ViU3JjKiBzcmMpCiAKICAgICBpZiAocHJpdi0+Y2xpZW50KQogICAgICAgICBwcml2
LT5jbGllbnQtPnNldERlZmVyc0xvYWRpbmcoZmFsc2UpOworICAgIGlmIChwcml2LT5sb2FkZXIp
CisgICAgICAgIHByaXYtPmxvYWRlci0+c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7CiB9CiAKIHN0
YXRpYyB2b2lkIHdlYktpdFdlYlNyY05lZWREYXRhQ2IoR3N0QXBwU3JjKiwgZ3VpbnQgbGVuZ3Ro
LCBncG9pbnRlciB1c2VyRGF0YSkKQEAgLTcxMCw2ICs3MDYsOCBAQCBzdGF0aWMgdm9pZCB3ZWJL
aXRXZWJTcmNFbm91Z2hEYXRhTWFpbkNiKFdlYktpdFdlYlNyYyogc3JjKQogCiAgICAgaWYgKHBy
aXYtPmNsaWVudCkKICAgICAgICAgcHJpdi0+Y2xpZW50LT5zZXREZWZlcnNMb2FkaW5nKHRydWUp
OworICAgIGlmIChwcml2LT5sb2FkZXIpCisgICAgICAgIHByaXYtPmxvYWRlci0+c2V0RGVmZXJz
TG9hZGluZyh0cnVlKTsKIH0KIAogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRW5vdWdoRGF0YUNi
KEdzdEFwcFNyYyosIGdwb2ludGVyIHVzZXJEYXRhKQpAQCAtNzY3LDcgKzc2NSw3IEBAIHZvaWQg
d2ViS2l0V2ViU3JjU2V0TWVkaWFQbGF5ZXIoV2ViS2l0V2ViU3JjKiBzcmMsIFdlYkNvcmU6Ok1l
ZGlhUGxheWVyKiBwbGF5ZXIpCiAKIGJvb2wgd2ViS2l0U3JjUGFzc2VkQ09SU0FjY2Vzc0NoZWNr
KFdlYktpdFdlYlNyYyogc3JjKQogewotICAgIHJldHVybiBzcmMtPnByaXYtPmNvcnNBY2Nlc3ND
aGVjayA9PSBDT1JTU3VjY2VzczsKKyAgICByZXR1cm4gc3JjLT5wcml2LT5kaWRQYXNzQWNjZXNz
Q29udHJvbENoZWNrOwogfQogCiBTdHJlYW1pbmdDbGllbnQ6OlN0cmVhbWluZ0NsaWVudChXZWJL
aXRXZWJTcmMqIHNyYykKQEAgLTc5OSwxOSArNzk3LDE1IEBAIGNoYXIqIFN0cmVhbWluZ0NsaWVu
dDo6Y3JlYXRlUmVhZEJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxT
aXplCiAgICAgcmV0dXJuIGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKGJ1ZmZlcik7CiB9CiAKLXZv
aWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBDT1JTQWNjZXNzQ2hlY2tSZXN1bHQgY29yc0FjY2Vzc0NoZWNr
KQordm9pZCBTdHJlYW1pbmdDbGllbnQ6OmhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJL
SVRfV0VCX1NSQyhtX3NyYyk7CiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+
cHJpdjsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmVjZWl2ZWQgcmVzcG9uc2U6ICVk
IiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAKLSAgICBpZiAocmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSA+PSA0MDAgfHwgY29yc0FjY2Vzc0NoZWNrID09IENPUlNGYWlsdXJlKSB7Ci0g
ICAgICAgIC8vIFJlY2VpdmVkIGVycm9yIGNvZGUgb3IgQ09SUyBjaGVjayBmYWlsZWQKLSAgICAg
ICAgaWYgKGNvcnNBY2Nlc3NDaGVjayA9PSBDT1JTRmFpbHVyZSkKLSAgICAgICAgICAgIEdTVF9F
TEVNRU5UX0VSUk9SKHNyYywgUkVTT1VSQ0UsIFJFQUQsICgiQ3Jvc3Mtb3JpZ2luIHN0cmVhbSBs
b2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIiksIChu
dWxscHRyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNy
YywgUkVTT1VSQ0UsIFJFQUQsICgiUmVjZWl2ZWQgJWQgSFRUUCBlcnJvciBjb2RlIiwgcmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSksIChudWxscHRyKSk7CisgICAgaWYgKHJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkgPj0gNDAwKSB7CisgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNyYywgUkVT
T1VSQ0UsIFJFQUQsICgiUmVjZWl2ZWQgJWQgSFRUUCBlcnJvciBjb2RlIiwgcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSksIChudWxscHRyKSk7CiAgICAgICAgIGdzdF9hcHBfc3JjX2VuZF9vZl9z
dHJlYW0ocHJpdi0+YXBwc3JjKTsKICAgICAgICAgd2ViS2l0V2ViU3JjU3RvcChzcmMpOwogICAg
ICAgICByZXR1cm47CkBAIC04MTksOCArODEzLDYgQEAgdm9pZCBTdHJlYW1pbmdDbGllbnQ6Omhh
bmRsZVJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIEMK
IAogICAgIEdNdXRleExvY2tlciBsb2NrZXIoKkdTVF9PQkpFQ1RfR0VUX0xPQ0soc3JjKSk7CiAK
LSAgICBwcml2LT5jb3JzQWNjZXNzQ2hlY2sgPSBjb3JzQWNjZXNzQ2hlY2s7Ci0KICAgICBpZiAo
cHJpdi0+c2Vla1NvdXJjZS5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3JpbmcgcmVzcG9uc2UiKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtOTkyLDc4ICs5ODQsNTQgQEAgdm9pZCBTdHJlYW1pbmdDbGllbnQ6OmhhbmRsZU5v
dGlmeUZpbmlzaGVkKCkKICAgICB9CiB9CiAKLUNhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50
OjpDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudChXZWJLaXRXZWJTcmMqIHNyYywgQ2FjaGVk
UmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIE1lZGlhUGxheWVyQ2xpZW50OjpDT1JTTW9kZSBjb3JzTW9kZSkKK0NhY2hlZFJlc291
cmNlU3RyZWFtaW5nQ2xpZW50OjpDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudChXZWJLaXRX
ZWJTcmMqIHNyYykKICAgICA6IFN0cmVhbWluZ0NsaWVudChzcmMpCiB7Ci0gICAgRGF0YUJ1ZmZl
cmluZ1BvbGljeSBidWZmZXJpbmdQb2xpY3kgPSByZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImJs
b2IiKSA/IEJ1ZmZlckRhdGEgOiBEb05vdEJ1ZmZlckRhdGE7Ci0gICAgUmVxdWVzdE9yaWdpblBv
bGljeSBjb3JzUG9saWN5ID0gY29yc01vZGUgIT0gTWVkaWFQbGF5ZXJDbGllbnQ6OlVuc3BlY2lm
aWVkID8gUG90ZW50aWFsbHlDcm9zc09yaWdpbkVuYWJsZWQgOiBVc2VEZWZhdWx0T3JpZ2luUmVz
dHJpY3Rpb25zRm9yVHlwZTsKLSAgICBTdG9yZWRDcmVkZW50aWFscyBhbGxvd0NyZWRlbnRpYWxz
ID0gY29yc01vZGUgPT0gTWVkaWFQbGF5ZXJDbGllbnQ6OkFub255bW91cyA/IERvTm90QWxsb3dT
dG9yZWRDcmVkZW50aWFscyA6IEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7Ci0gICAgUmVzb3VyY2VM
b2FkZXJPcHRpb25zIG9wdGlvbnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIGJ1
ZmZlcmluZ1BvbGljeSwgYWxsb3dDcmVkZW50aWFscywgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09y
aWdpbkNyZWRlbnRpYWxzLCBEb1NlY3VyaXR5Q2hlY2ssIGNvcnNQb2xpY3ksIERvTm90SW5jbHVk
ZUNlcnRpZmljYXRlSW5mbyk7Ci0KLSAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgY2FjaGVSZXF1
ZXN0KHJlcXVlc3QsIG9wdGlvbnMpOwotCi0gICAgaWYgKGNvcnNNb2RlICE9IE1lZGlhUGxheWVy
Q2xpZW50OjpVbnNwZWNpZmllZCkgewotICAgICAgICBtX29yaWdpbiA9IHJlc291cmNlTG9hZGVy
LT5kb2N1bWVudCgpID8gcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCkgOiBudWxscHRyOwotICAgICAgICB1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChjYWNo
ZVJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCBtX29yaWdpbi5nZXQoKSwgYWxsb3dD
cmVkZW50aWFscyk7Ci0gICAgfQotCi0gICAgLy8gVE9ETzogRGVjaWRlIHdoZXRoZXIgdG8gdXNl
IHByZWZsaWdodCBtb2RlIGZvciBjcm9zcy1vcmlnaW4gcmVxdWVzdHMgKHNlZSBodHRwOi8vd2ti
dWcuY29tLzEzMTQ4NCkuCi0gICAgbV9yZXNvdXJjZSA9IHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0
UmF3UmVzb3VyY2UoY2FjaGVSZXF1ZXN0KTsKLSAgICBpZiAobV9yZXNvdXJjZSkKLSAgICAgICAg
bV9yZXNvdXJjZS0+YWRkQ2xpZW50KHRoaXMpOwogfQogCiBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudDo6fkNhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50KCkKIHsKLSAgICBpZiAobV9y
ZXNvdXJjZSkgewotICAgICAgICBtX3Jlc291cmNlLT5yZW1vdmVDbGllbnQodGhpcyk7Ci0gICAg
ICAgIG1fcmVzb3VyY2UgPSAwOwotICAgIH0KIH0KIAotYm9vbCBDYWNoZWRSZXNvdXJjZVN0cmVh
bWluZ0NsaWVudDo6bG9hZEZhaWxlZCgpIGNvbnN0CitjaGFyKiBDYWNoZWRSZXNvdXJjZVN0cmVh
bWluZ0NsaWVudDo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKHNpemVfdCByZXF1ZXN0ZWRTaXplLCBz
aXplX3QmIGFjdHVhbFNpemUpCiB7Ci0gICAgcmV0dXJuICFtX3Jlc291cmNlOwotfQotCi12b2lk
IENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVm
ZXJzKQotewotICAgIGlmIChtX3Jlc291cmNlKQotICAgICAgICBtX3Jlc291cmNlLT5zZXREZWZl
cnNMb2FkaW5nKGRlZmVycyk7CisgICAgcmV0dXJuIGNyZWF0ZVJlYWRCdWZmZXIocmVxdWVzdGVk
U2l6ZSwgYWN0dWFsU2l6ZSk7CiB9CiAKLWNoYXIqIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xp
ZW50OjpnZXRPckNyZWF0ZVJlYWRCdWZmZXIoQ2FjaGVkUmVzb3VyY2UqLCBzaXplX3QgcmVxdWVz
dGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVhZEJ1ZmZlcihyZXF1ZXN0ZWRTaXplLCBhY3R1YWxT
aXplKTsKKyAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9TUkMobV9z
cmMpLT5wcml2OworICAgIHByaXYtPmRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgPSBwcml2LT5s
b2FkZXItPmRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2soKTsKKyAgICBoYW5kbGVSZXNwb25zZVJl
Y2VpdmVkKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dDo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dDo6ZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgQ09S
U0FjY2Vzc0NoZWNrUmVzdWx0IGNvcnNBY2Nlc3NDaGVjayA9IENPUlNOb0NoZWNrOwotICAgIGlm
IChtX29yaWdpbikKLSAgICAgICAgY29yc0FjY2Vzc0NoZWNrID0gKG1fb3JpZ2luLT5jYW5SZXF1
ZXN0KHJlc3BvbnNlLnVybCgpKSB8fCByZXNvdXJjZS0+cGFzc2VzQWNjZXNzQ29udHJvbENoZWNr
KG1fb3JpZ2luLmdldCgpKSkgPyBDT1JTU3VjY2VzcyA6IENPUlNGYWlsdXJlOwotICAgIGhhbmRs
ZVJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UsIGNvcnNBY2Nlc3NDaGVjayk7CisgICAgaGFuZGxl
RGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJl
YW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjphY2Nl
c3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAg
aGFuZGxlRGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCk7CisgICAgV2ViS2l0V2ViU3JjKiBzcmMg
PSBXRUJLSVRfV0VCX1NSQyhtX3NyYyk7CisgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBSRVNP
VVJDRSwgUkVBRCwgKCIlcyIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRh
dGEoKSksIChudWxscHRyKSk7CisgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShzcmMtPnBy
aXYtPmFwcHNyYyk7CisgICAgd2ViS2l0V2ViU3JjU3RvcChzcmMpOwogfQogCi12b2lkIENhY2hl
ZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpsb2FkRmFpbGVk
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGlmIChyZXNvdXJjZS0+bG9hZEZh
aWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9X
RUJfU1JDKG1fc3JjKTsKKyAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1f
c3JjKTsKIAotICAgICAgICBpZiAoIXJlc291cmNlLT53YXNDYW5jZWxlZCgpKSB7Ci0gICAgICAg
ICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciA9IHJlc291cmNlLT5yZXNvdXJjZUVycm9y
KCk7Ci0gICAgICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIkhhdmUgZmFpbHVyZTogJXMi
LCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAg
ICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBSRVNPVVJDRSwgRkFJTEVELCAoIiVzIiwgZXJyb3Iu
bG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSwgKDApKTsKLSAgICAgICAgfQot
ICAgICAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKHNyYy0+cHJpdi0+YXBwc3JjKTsKLSAg
ICAgICAgcmV0dXJuOworICAgIGlmICghZXJyb3IuaXNDYW5jZWxsYXRpb24oKSkgeworICAgICAg
ICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIkhhdmUgZmFpbHVyZTogJXMiLCBlcnJvci5sb2NhbGl6
ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBHU1RfRUxFTUVOVF9FUlJP
UihzcmMsIFJFU09VUkNFLCBGQUlMRUQsICgiJXMiLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlv
bigpLnV0ZjgoKS5kYXRhKCkpLCAobnVsbHB0cikpOwogICAgIH0KIAorICAgIGdzdF9hcHBfc3Jj
X2VuZF9vZl9zdHJlYW0oc3JjLT5wcml2LT5hcHBzcmMpOworfQorCit2b2lkIENhY2hlZFJlc291
cmNlU3RyZWFtaW5nQ2xpZW50Ojpsb2FkRmluaXNoZWQoU2hhcmVkQnVmZmVyKikKK3sKICAgICBo
YW5kbGVOb3RpZnlGaW5pc2hlZCgpOwogfQogCkBAIC0xMTA0LDcgKzEwNzIsNyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5k
bGUqLCBSZXNvdXJjZVJlcQogCiB2b2lkIFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50Ojpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKLSAgICBoYW5kbGVSZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlLCBDT1JT
Tm9DaGVjayk7CisgICAgaGFuZGxlUmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7CiB9CiAKIHZv
aWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgY2hhciogLyogZGF0YSAqLywgdW5zaWduZWQgLyogbGVuZ3RoICovLCBp
bnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238945</attachid>
            <date>2014-09-30 12:22:49 -0700</date>
            <delta_ts>2014-10-09 23:59:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137064-20140930122248.patch</filename>
            <type>text/plain</type>
            <size>48991</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRkOTdhMTQyNjljNjkw
MDQ3OTdmMTIzMzQ3MmU5YTNlMjVhNTc4OS4uMzA3YjEyZjhiMjViYmU5YWQ0OWU2NjhjMGM3YmY5
ZjYxMDJlMzg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDE0LTA5LTMwICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVh
bWVyXSBEbyBub3QgdXNlIENhY2hlZFJlc291cmNlTG9hZGVyLCBTZWN1cml0eU9yaWdpbiwgUmVz
b3VyY2VCdWZmZXIgYW5kIG90aGVyIFdlYkNvcmUgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzA2NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIG1lZGlhIHJlc291cmNlIGxvYWRl
ciB0byBhIG5ldyBjbGFzcyBpbiBXZWJDb3JlL2xvYWRlcgorICAgICAgICB0aGF0IGluaGVyaXRz
IGZyb20gYSBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyIGNsYXNzIGRlZmluZWQgaW4KKyAgICAg
ICAgdGhlIHBsYXRmb3JtIGxheWVyLiBUaGUgcGxhdGZvcm0gc3BlY2lmaWMgYmVoYXZpb3VyIGlz
IGltcGxlbWVudGVkCisgICAgICAgIHVzaW5nIGEgY2xpZW50IGFsc28gZGVmaW5lZCBpbiB0aGUg
cGxhdGZvcm0gbGF5ZXIsIGltcGxlbWVudGVkIGJ5CisgICAgICAgIGV2ZXJ5IG1lZGlhIGJhY2tl
bmQsIGFuZCB1c2VkIGJ5IHRoZSBXZWJDb3JlIE1lZGlhUmVzb3VyY2VMb2FkZXIuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG5ldyBmaWxlcyB0byBjb21waWxhdGlvbi4KKyAgICAg
ICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6IERpdHRvLgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyQ3JlYXRlUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICBDcmVhdGUgYSBN
ZWRpYVJlc291cmNlTG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJDT1JTTW9kZSk6IERlbGV0ZWQuIFRoaXMgaXMKKyAgICAgICAgbm8gbG9uZ2Vy
IHVzZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUmVzb3VyY2VMb2FkZXI6Ok1lZGlhUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6fk1lZGlhUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6c3RhcnQpOiBTdGFydCBhIG5ldyBsb2FkIGZv
ciB0aGUKKyAgICAgICAgZ2l2ZW4gcmVxdWVzdCBhbmQgbG9hZCBvcHRpb25zLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6c3RvcCk6IFN0b3AgdGhlIGxvYWQgaWYgbmVl
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6c2V0RGVmZXJzTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJl
Y2VpdmVkKTogSGFuZGxlIENPUlMKKyAgICAgICAgYWNjZXNzIGNoZWNrIGFuZCBub3RpZnkgdGhl
IGNsaWVudCBhYm91dCB0aGUgcmVzcG9uc2UuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291
cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOiBOb3RpZnkgdGhlIGNsaWVudC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpnZXRPckNyZWF0ZVJlYWRCdWZmZXIp
OiBBc2sgdGhlCisgICAgICAgIGNsaWVudCB0byBjcmVhdGUgdGhlIHJlYWQgYnVmZmVyLgorICAg
ICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmg6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcik6IENhbGwKKyAgICAgICAgbWVkaWFQbGF5ZXJD
cmVhdGVSZXNvdXJjZUxvYWRlcigpIGlmIHRoZXJlJ3MgYSBjbGllbnQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyQ2xpZW50OjptZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckNPUlNNb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclJlc291cmNlTG9hZGVyLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVu
dDo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlc291
cmNlTG9hZGVyQ2xpZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudDo6YnVmZmVyUmVjZWl2ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudDo6YWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXJDbGll
bnQ6OmxvYWRGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXNvdXJjZUxv
YWRlckNsaWVudDo6bG9hZEZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UmVzb3VyY2VMb2FkZXJDbGllbnQ6OmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclJlc291cmNlTG9hZGVyOjp+TWVkaWFQbGF5ZXJSZXNvdXJjZUxv
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlc291cmNlTG9hZGVyOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXI6OnNldERlZmVy
c0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlcjo6
ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clJlc291cmNlTG9hZGVyOjpNZWRpYVBsYXllclJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKHdlYktpdFdlYlNyY1N0b3ApOiBBbHNvIGRlbGV0ZSB0aGUgTWVkaWFQbGF5ZXJS
ZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKHdlYktpdFdlYlNyY1N0YXJ0KTogQ3JlYXRlIGEgbmV3
IHJlc291cmNlIGxvYWRlciB1c2luZworICAgICAgICBNZWRpYVBsYXllcjo6Y3JlYXRlUmVzb3Vy
Y2VMb2FkZXIoKSB3aXRoIGEgbmV3CisgICAgICAgIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xp
ZW50IGFzIGNsaWVudC4KKyAgICAgICAgKHdlYktpdFdlYlNyY05lZWREYXRhTWFpbkNiKTogQ2Fs
bCBzZXREZWZlcnNMb2FkaW5nKCkgZm9yIHRoZQorICAgICAgICByZXNvdXJjZSBsb2FkZXIgaWYg
dGhlcmUncyBvbmUuCisgICAgICAgICh3ZWJLaXRXZWJTcmNFbm91Z2hEYXRhTWFpbkNiKTogRGl0
dG8uCisgICAgICAgICh3ZWJLaXRTcmNQYXNzZWRDT1JTQWNjZXNzQ2hlY2spOiBSZXR1cm4gZGlk
UGFzc0FjY2Vzc0NvbnRyb2xDaGVjay4KKyAgICAgICAgKFN0cmVhbWluZ0NsaWVudDo6aGFuZGxl
UmVzcG9uc2VSZWNlaXZlZCk6IFJlbW92ZSB0aGUgQ09SUyBjaGVjaworICAgICAgICByZXN1bHQg
cGFyYW1ldGVyIHNpbmNlIHRoYXQncyBub3cgaGFuZGxlZCBieSBNZWRpYVJlc291cmNlTG9hZGVy
LgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OkNhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50KToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50
Ojp+Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQpOgorICAgICAgICAoQ2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQ6OmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcik6CisgICAgICAgIChDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZCk6IFVwZGF0ZSBkaWRQ
YXNzQWNjZXNzQ29udHJvbENoZWNrLgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdD
bGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0Ns
aWVudDo6YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKTogTG9nIHRoZQorICAgICAgICBlcnJvciBh
bmQgc3RvcCB0aGUgbG9hZC4KKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50
Ojpsb2FkRmFpbGVkKTogTG9nIHRoZSBlcnJvciBpZiBpdAorICAgICAgICB3YXMgbm90IGEgY2Fu
Y2VsbGF0aW9uLgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRG
aW5pc2hlZCk6CisgICAgICAgIChSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpz
ZXREZWZlcnNMb2FkaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFt
aW5nQ2xpZW50Ojpub3RpZnlGaW5pc2hlZCk6IERlbGV0ZWQuCisKIDIwMTQtMDktMzAgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQgc2hvdWxkIG5vdCB1c2UgRnJhbWVWaWV3CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDZkYWRjMzBkMTY5M2IzNjc1MzY1MTI1ZTI5NzlhZDI3N2RkMzc5NzEuLjdhY2Jj
YWI3MmMwMGZmYzJkM2JhZTZjYzgzODVmZDg0MDYyMGJjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0xODM1LDYgKzE4MzUsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgbG9hZGVyL0lt
YWdlTG9hZGVyLmNwcAogICAgIGxvYWRlci9MaW5rTG9hZGVyLmNwcAogICAgIGxvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5jcHAKKyAgICBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKICAgICBs
b2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKICAgICBsb2FkZXIvTmF2aWdhdGlvbkFjdGlv
bi5jcHAKICAgICBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IDg2NjFiYjE3MTk1OTY5
NTMxMGQxMjA2ZWE4M2Y4ZGJhNDM0MDk0NmMuLmYyYTAyMTRhMDhjNWM5YzI3MDg1OGY5N2Y0ZDAz
ZDkxNjhhMzE3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagpAQCAtNzI0Miw2ICs3MjQyLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGxvYWRlclxJbWFnZUxvYWRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llxsb2FkZXJcTGlua0xvYWRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxs
b2FkZXJcTG9hZGVyU3RyYXRlZ3kuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
bG9hZGVyXE1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cbG9hZGVyXE1peGVkQ29udGVudENoZWNrZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cbG9hZGVyXE5hdmlnYXRpb25BY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cbG9hZGVyXE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwIiAvPgpAQCAtMTky
NDEsNiArMTkyNDIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXExpbmtM
b2FkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxMaW5rTG9hZGVy
Q2xpZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcTG9hZGVyU3Ry
YXRlZ3kuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxNZWRpYVJlc291
cmNlTG9hZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcTWl4ZWRD
b250ZW50Q2hlY2tlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXE5h
dmlnYXRpb25BY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxO
YXZpZ2F0aW9uU2NoZWR1bGVyLmgiIC8+CkBAIC0xOTU4MSw2ICsxOTU4Myw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xMYXlvdXRSZWN0LmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xMYXlvdXRTaXplLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xNZWRpYVBs
YXllci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcTmF0aXZlSW1hZ2VQdHIuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBhdGguaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBhdGhUcmF2ZXJzYWxTdGF0ZS5oIiAvPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCmluZGV4IGQ3MWNjZmRhY2RiNjFkNDc4MDgxZGQ3YTVjZjRkOTI3ZjAwY2E2YzMu
LjE2OTdiZjlhOTA3NzhjZmE3MTUyMzI2MTM5MjQ0YTdjYjYzYWVjNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMK
QEAgLTkwMCw2ICs5MDAsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXExv
YWRlclN0cmF0ZWd5LmNwcCI+CiAgICAgICA8RmlsdGVyPmxvYWRlcjwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXE1lZGlhUmVzb3Vy
Y2VMb2FkZXIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+bG9hZGVyPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsb2FkZXJcTWl4ZWRDb250ZW50Q2hl
Y2tlci5jcHAiPgogICAgICAgPEZpbHRlcj5sb2FkZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KQEAgLTc5MDgsNiArNzkxMSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsb2Fk
ZXJcTG9hZGVyU3RyYXRlZ3kuaCI+CiAgICAgICA8RmlsdGVyPmxvYWRlcjwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXE1lZGlhUmVz
b3VyY2VMb2FkZXIuaCI+CisgICAgICA8RmlsdGVyPmxvYWRlcjwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXE1peGVkQ29udGVudENo
ZWNrZXIuaCI+CiAgICAgICA8RmlsdGVyPmxvYWRlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgpAQCAtODUwOCw2ICs4NTE0LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXE1lZGlhUGxheWVyLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFw
aGljczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlci5oIj4KKyAgICAg
IDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXE5hdGl2ZUltYWdlUHRy
LmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGRjZjQ2YWVjZjg1ODBjNmRhNTczOWQ2NjQwYmEzNzBiNTI5ODI2NWEuLjE3
YjE2NjFiOGE4NDY2YWJjMzBkZTgwYWZjNzBkOWQ2NzI5YzFmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU3NTYsNiArNTc1
Niw5IEBACiAJCUNFQ0FERkNFMTUzNzc5MUQwMEUzNzA2OCAvKiBUZXh0SW5zZXJ0aW9uQmFzZUNv
bW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
Q0FERkNDMTUzNzc5MUQwMEUzNzA2OCAvKiBUZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQuaCAqLzsg
fTsKIAkJQ0VDQ0ZDM0IxNDE5NzNENTAwMkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQ0ZDM0Ex
NDE5NzNENTAwMkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNlcy5oICovOyB9OwogCQlDRURB
MTJENzE1MkNBMUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRURBMTJENjE1MkNBMUNCMDBE
OUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0VFRkNENzkxOURCMzFGNzAwMzg3NkQ3IC8qIE1l
ZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0VFRkNENzcxOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2Fk
ZXIuY3BwICovOyB9OworCQlDRUVGQ0Q3QTE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJj
ZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0VFRkNENzgxOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuaCAqLzsgfTsK
KwkJQ0VFRkNEN0MxOURCMzNEQzAwMzg3NkQ3IC8qIE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRUZDRDdC
MTlEQjMzREMwMDM4NzZENyAvKiBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0VGNDE4Q0UxMTc5Njc4
QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRjQxOENDMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3
cG9ydEFyZ3VtZW50cy5jcHAgKi87IH07CiAJCUNFRjQxOENGMTE3OTY3OEMwMDlEMTEyQyAvKiBW
aWV3cG9ydEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0VGNDE4Q0QxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRDAwMEVC
QTIxMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwMDBFQkEwMTFCREFGRDQw
MEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHAgKi87IH07CkBAIC0xMzIzMCw2
ICsxMzIzMyw5IEBACiAJCUNFQ0NGQzNBMTQxOTczRDUwMDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVT
ZXF1ZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RlRXNjYXBl
U2VxdWVuY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFREExMkQ2MTUyQ0Ex
Q0IwMEQ5RTA4RCAvKiBBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFRUM2MDM0MTg3REQ5NjIwMDNFNDNCQiAvKiBUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUVGQ0Q3
NzE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVJlc291cmNlTG9hZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0VFRkNENzgxOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlh
UmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFS
ZXNvdXJjZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUVGQ0Q3QjE5
REIzM0RDMDAzODc2RDcgLyogTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFRjQxOENDMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3
cG9ydEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBW
aWV3cG9ydEFyZ3VtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFRjQx
OENEMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWaWV3cG9ydEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMDAwRUJBMDExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0
ZU1hY2hpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVM
b2FkZXJTdGF0ZU1hY2hpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA0
NjMsNiArMjA0NjksNyBAQAogCQkJCUU0QjQxRTBDMENCRjkwQkQwMEFGMkVDRSAvKiBNZWRpYVBs
YXllci5jcHAgKi8sCiAJCQkJRTRCNDFFMEQwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVy
LmggKi8sCiAJCQkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0
ZS5oICovLAorCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBNZWRpYVBsYXllclJlc291
cmNlTG9hZGVyLmggKi8sCiAJCQkJQ0Q2NDFFQjExODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291
cmNlUHJpdmF0ZS5oICovLAogCQkJCUNEREMxRTc5MThBOTUyRjMwMDI3QTlENCAvKiBNZWRpYVNv
dXJjZVByaXZhdGVDbGllbnQuaCAqLywKIAkJCQk2QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyog
TmF0aXZlSW1hZ2VQdHIuaCAqLywKQEAgLTIxMTU4LDYgKzIxMTY1LDggQEAKIAkJCQk5ODQyNjRF
RjEyRDUyODBBMDAwRDg4QTQgLyogTGlua0xvYWRlckNsaWVudC5oICovLAogCQkJCTUxQUJGNjRD
MTYzOTJFMjgwMDEzMkE3QSAvKiBMb2FkZXJTdHJhdGVneS5jcHAgKi8sCiAJCQkJNTFFNjgyMEYx
NjM4NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5LmggKi8sCisJCQkJQ0VFRkNENzcxOURC
MzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwICovLAorCQkJCUNFRUZDRDc4
MTlEQjMxRjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJNTJGMTA4
NjIxNjJCNkQ4MjAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNrZXIuY3BwICovLAogCQkJCTUy
RjEwODYzMTYyQjZEODIwMDlBQzgxRSAvKiBNaXhlZENvbnRlbnRDaGVja2VyLmggKi8sCiAJCQkJ
OTNDQ0YwNUYwQUY2Q0E3NjAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uY3BwICovLApAQCAt
MjUyODAsMTIgKzI1Mjg5LDE0IEBACiAJCQkJQ0RDOEI1QTMxODA0NjM0NzAwMTZFNjg1IC8qIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTQ0NjEzRTYwQ0Q2ODFBOTAwRkFEQTc1IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwNzM1RUU2QTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0VFRkNEN0MxOURCMzNEQzAwMzg3NkQ3IC8qIE1l
ZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRFMTk1OTJBMEEz
OURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RTE5NTky
QzBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNEUxOTU5MkUwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUQzQTk0QTM5MTIyREFCQUMwMEEzN0JCQyAvKiBNZWRpYVF1ZXJ5TGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRDNBOTRBM0IxMjJEQUJBQzAwQTM3QkJDIC8qIE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzQUExMEY0MTIzQTk4QUEwMDky
MTUyQiAvKiBNZWRpYVF1ZXJ5TWF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0VFRkNEN0Ex
OURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA3MEUwOTE5MTg3NUVFRkMwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3Rjk0NDE2MTg2NEQwNDYwMDVEMzFDQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzYzOEE5OTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFT
ZXNzaW9uTWFuYWdlcklPUy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODgzMCw2ICsyODg0MSw3IEBA
CiAJCQkJNEUxOTU5MkQwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRDNBOTRBMzgxMjJEQUJBQzAwQTM3QkJDIC8qIE1lZGlhUXVlcnlMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQzQUExMEYzMTIzQTk4QUEwMDkyMTUyQiAvKiBNZWRp
YVF1ZXJ5TWF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRUVGQ0Q3OTE5REIzMUY3MDAz
ODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzBF
MDkxQjE4NzVFRjcxMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Np
b25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCBlOWYwY2Q5MGFkOGVmZTk0OTU4NTMyNDgzYzdkNTdhZGNlMWUw
NzBhLi5lOGI4MzcxZGUyMWI5NjhiMGExMTg2YTNkNTkxNDc4Mjk0OGIxNDUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNs
dWRlICJNZWRpYUtleUV2ZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVkZSAi
TWVkaWFRdWVyeUV2YWx1YXRvci5oIgorI2luY2x1ZGUgIk1lZGlhUmVzb3VyY2VMb2FkZXIuaCIK
ICNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya2luZ0Nv
bnRleHQuaCIKICNpbmNsdWRlICJQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oIgpAQCAtNTU2
OSwxNSArNTU3MCw2IEBAIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBIVE1MTWVk
aWFFbGVtZW50OjpvdXRPZkJhbmRUcmFja1NvdXJjZXMoKQogfQogI2VuZGlmCiAKLU1lZGlhUGxh
eWVyQ2xpZW50OjpDT1JTTW9kZSBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNPUlNNb2Rl
KCkgY29uc3QKLXsKLSAgICBpZiAoIWZhc3RIYXNBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjcm9zc29y
aWdpbkF0dHIpKQotICAgICAgICByZXR1cm4gVW5zcGVjaWZpZWQ7Ci0gICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGZhc3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjcm9zc29yaWdpbkF0dHIpLCAi
dXNlLWNyZWRlbnRpYWxzIikpCi0gICAgICAgIHJldHVybiBVc2VDcmVkZW50aWFsczsKLSAgICBy
ZXR1cm4gQW5vbnltb3VzOwotfQotCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
TmVlZHNTaXRlU3BlY2lmaWNIYWNrcygpIGNvbnN0CiB7CiAgICAgU2V0dGluZ3MqIHNldHRpbmdz
ID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpOwpAQCAtNTY1Nyw2ICs1NjQ5LDExIEBAIENhY2hlZFJl
c291cmNlTG9hZGVyKiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNhY2hlZFJlc291cmNl
TG9hZGVyKCkKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwog
fQogCitQYXNzUmVmUHRyPE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXI+IEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyQ3JlYXRlUmVzb3VyY2VMb2FkZXIoc3RkOjp1bmlxdWVfcHRyPE1lZGlh
UGxheWVyUmVzb3VyY2VMb2FkZXJDbGllbnQ+IGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lZGlhUmVzb3VyY2VMb2FkZXIoZG9jdW1lbnQoKSwgZmFzdEdldEF0dHJpYnV0ZShI
VE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0ciksIFdURjo6bW92ZShjbGllbnQpKSk7Cit9CisKIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFs
bGVuZ2UpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBkMzdhMTQxMGZjZDk2YzA3N2ZhMzQ2
OTBhMGE1MjA4YzBmZDVlZmI4Li4yN2NlODc3YjhkMzkwYzViYjVjM2U0YmE0ODI4YWEzMTY2NjIz
ZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNTUxLDcgKzU1
MSw2IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclJlZmVycmVy
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJVc2VyQWdl
bnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIENPUlNNb2RlIG1lZGlhUGxheWVyQ09S
U01vZGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllck5l
ZWRzU2l0ZVNwZWNpZmljSGFja3MoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBtZWRpYVBsYXllckRvY3VtZW50SG9zdCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNTY5LDYgKzU2
OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVySXNQYXVzZWQoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc0xvb3BpbmcoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlTG9hZGVyKiBtZWRpYVBs
YXllckNhY2hlZFJlc291cmNlTG9hZGVyKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXI+IG1lZGlhUGxheWVyQ3JlYXRlUmVzb3VyY2VM
b2FkZXIoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXJDbGllbnQ+KTsK
IAogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICB2aXJ0dWFsIEdy
YXBoaWNzRGV2aWNlQWRhcHRlciogbWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29u
c3QgTWVkaWFQbGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzdhZDA4MTQyZWJkOWI4NTY1
NTNiMjYzNmE0NGM3N2QzMTUyYjE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIk1lZGlhUmVzb3VyY2VMb2FkZXIuaCIKKworI2lmIEVOQUJMRShWSURF
TykKKyNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVk
ZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
TWVkaWFSZXNvdXJjZUxvYWRlcjo6TWVkaWFSZXNvdXJjZUxvYWRlcihEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQ
bGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudD4gY2xpZW50KQorICAgIDogTWVkaWFQbGF5ZXJSZXNv
dXJjZUxvYWRlcihXVEY6Om1vdmUoY2xpZW50KSkKKyAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQp
CisgICAgLCBtX2Nyb3NzT3JpZ2luTW9kZShjcm9zc09yaWdpbk1vZGUpCisgICAgLCBtX2RpZFBh
c3NBY2Nlc3NDb250cm9sQ2hlY2soZmFsc2UpCit7Cit9CisKK01lZGlhUmVzb3VyY2VMb2FkZXI6
On5NZWRpYVJlc291cmNlTG9hZGVyKCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK2Jvb2wgTWVkaWFS
ZXNvdXJjZUxvYWRlcjo6c3RhcnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2Fk
T3B0aW9ucyBvcHRpb25zKQoreworICAgIGlmIChtX3Jlc291cmNlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGJ1ZmZlcmluZ1BvbGljeSA9IG9wdGlv
bnMgJiBMb2FkT3B0aW9uOjpCdWZmZXJEYXRhID8gV2ViQ29yZTo6QnVmZmVyRGF0YSA6IFdlYkNv
cmU6OkRvTm90QnVmZmVyRGF0YTsKKyAgICBSZXF1ZXN0T3JpZ2luUG9saWN5IGNvcnNQb2xpY3kg
PSAhbV9jcm9zc09yaWdpbk1vZGUuaXNOdWxsKCkgPyBQb3RlbnRpYWxseUNyb3NzT3JpZ2luRW5h
YmxlZCA6IFVzZURlZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNGb3JUeXBlOworICAgIFN0b3JlZENy
ZWRlbnRpYWxzIGFsbG93Q3JlZGVudGlhbHMgPSBtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKSB8
fCBlcXVhbElnbm9yaW5nQ2FzZShtX2Nyb3NzT3JpZ2luTW9kZSwgInVzZS1jcmVkZW50aWFscyIp
ID8gQWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsK
KyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgY2FjaGVSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNl
TG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBEb05vdFNuaWZmQ29udGVudCwgYnVmZmVyaW5n
UG9saWN5LCBhbGxvd0NyZWRlbnRpYWxzLCBEb05vdEFza0NsaWVudEZvckNyb3NzT3JpZ2luQ3Jl
ZGVudGlhbHMsIERvU2VjdXJpdHlDaGVjaywgY29yc1BvbGljeSwgRG9Ob3RJbmNsdWRlQ2VydGlm
aWNhdGVJbmZvKSk7CisKKyAgICBpZiAoIW1fY3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgpKQorICAg
ICAgICB1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChjYWNoZVJlcXVlc3QubXV0YWJsZVJl
c291cmNlUmVxdWVzdCgpLCBtX2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIGFsbG93Q3JlZGVu
dGlhbHMpOworCisgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gZmFsc2U7CisKKyAg
ICAvLyBUT0RPOiBEZWNpZGUgd2hldGhlciB0byB1c2UgcHJlZmxpZ2h0IG1vZGUgZm9yIGNyb3Nz
LW9yaWdpbiByZXF1ZXN0cyAoc2VlIGh0dHA6Ly93a2J1Zy5jb20vMTMxNDg0KS4KKyAgICBDYWNo
ZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gbV9kb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpOworICAgIG1fcmVzb3VyY2UgPSBsb2FkZXIgPyBsb2FkZXItPnJlcXVlc3RSYXdSZXNvdXJj
ZShjYWNoZVJlcXVlc3QpIDogbnVsbHB0cjsKKyAgICBpZiAoIW1fcmVzb3VyY2UpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCh0aGlzKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYVJlc291cmNlTG9hZGVyOjpzdG9wKCkKK3sKKyAg
ICBpZiAoIW1fcmVzb3VyY2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVzb3VyY2UtPnJl
bW92ZUNsaWVudCh0aGlzKTsKKyAgICBtX3Jlc291cmNlID0gbnVsbHB0cjsKK30KKwordm9pZCBN
ZWRpYVJlc291cmNlTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzTG9hZGluZykK
K3sKKyAgICBpZiAobV9yZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZS0+c2V0RGVmZXJzTG9h
ZGluZyhkZWZlcnNMb2FkaW5nKTsKK30KKworLy8gQ2FjaGVkUmVzb3VyY2VDbGllbnQKK3ZvaWQg
TWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOworCisgICAgUmVmUHRyPE1l
ZGlhUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CisgICAgaWYgKCFtX2Nyb3NzT3JpZ2lu
TW9kZS5pc051bGwoKQorICAgICAgICAmJiAhbV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLT5j
YW5SZXF1ZXN0KHJlc291cmNlLT5yZXNwb25zZSgpLnVybCgpKQorICAgICAgICAmJiAhcmVzb3Vy
Y2UtPnBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhtX2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkp
KSB7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGNvbnNvbGVN
ZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIG1lZGlhIHJlc291cmNlIGxvYWQgZGVu
aWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSk7CisgICAgICAg
IG1fZG9jdW1lbnQuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlLmdldCgpKTsKKyAgICAgICAgbV9kaWRQ
YXNzQWNjZXNzQ29udHJvbENoZWNrID0gZmFsc2U7CisgICAgICAgIG1fY2xpZW50LT5hY2Nlc3ND
b250cm9sQ2hlY2tGYWlsZWQoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFs
LCAwLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpKTsKKyAg
ICAgICAgc3RvcCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9kaWRQYXNzQWNj
ZXNzQ29udHJvbENoZWNrID0gIW1fY3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgpOworICAgIG1fY2xp
ZW50LT5yZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKTsKK30KKwordm9pZCBNZWRpYVJlc291cmNl
TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3sKKyAgICBBU1NFUlQocmVzb3VyY2UgPT0gbV9yZXNv
dXJjZSk7CisKKyAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsK
KyAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKGRhdGEsIGRhdGFMZW5ndGgpOworCisgICAgaWYg
KFNoYXJlZEJ1ZmZlciogYnVmZmVyID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkgPyByZXNv
dXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2hhcmVkQnVmZmVyKCkgOiBudWxscHRyKQorICAgICAg
ICBtX2NsaWVudC0+YnVmZmVyUmVjZWl2ZWQoYnVmZmVyKTsKK30KKwordm9pZCBNZWRpYVJlc291
cmNlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7Cisg
ICAgQVNTRVJUKHJlc291cmNlID09IG1fcmVzb3VyY2UpOworCisgICAgUmVmUHRyPE1lZGlhUmVz
b3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CisgICAgaWYgKHJlc291cmNlLT5sb2FkRmFpbGVk
T3JDYW5jZWxlZCgpKQorICAgICAgICBtX2NsaWVudC0+bG9hZEZhaWxlZChyZXNvdXJjZS0+cmVz
b3VyY2VFcnJvcigpKTsKKyAgICBlbHNlCisgICAgICAgIG1fY2xpZW50LT5sb2FkRmluaXNoZWQo
cmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkgPyByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+
c2hhcmVkQnVmZmVyKCkgOiBudWxscHRyKTsKKyAgICBzdG9wKCk7Cit9CisKKyNpZiBVU0UoU09V
UCkKK2NoYXIqIE1lZGlhUmVzb3VyY2VMb2FkZXI6OmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UsIHNpemVfdCByZXF1ZXN0ZWRTaXplLCBzaXplX3QmIGFjdHVh
bFNpemUpCit7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNv
dXJjZSk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5nZXRPckNyZWF0ZVJlYWRCdWZmZXIocmVxdWVz
dGVkU2l6ZSwgYWN0dWFsU2l6ZSk7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVlOGI5NDZhMmVkOTNiMTAyM2Y0MTM0ZGE4YTU0MzE3OTYwZTM5NzAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMu
TAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhUmVzb3VyY2VMb2FkZXJfaAorI2RlZmluZSBNZWRp
YVJlc291cmNlTG9hZGVyX2gKKworI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJDYWNoZWRS
YXdSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhY2hlZFJhd1Jl
c291cmNlOworY2xhc3MgRG9jdW1lbnQ7CisKK2NsYXNzIE1lZGlhUmVzb3VyY2VMb2FkZXIgZmlu
YWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQgeworcHVibGljOgorICAgIE1lZGlhUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnQmLCBjb25z
dCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUmVz
b3VyY2VMb2FkZXJDbGllbnQ+KTsKKyAgICB2aXJ0dWFsIH5NZWRpYVJlc291cmNlTG9hZGVyKCk7
CisKKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTG9hZE9w
dGlvbnMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBib29sIGRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2s7IH0KKworICAgIC8vIENhY2hlZFJlc291cmNl
Q2xpZW50CisgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Uq
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRl
OworI2lmIFVTRShTT1VQKQorICAgIHZpcnR1YWwgY2hhciogZ2V0T3JDcmVhdGVSZWFkQnVmZmVy
KENhY2hlZFJlc291cmNlKiwgc2l6ZV90IC8qcmVxdWVzdGVkU2l6ZSovLCBzaXplX3QmIC8qYWN0
dWFsU2l6ZSovKSBvdmVycmlkZTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIERvY3VtZW50JiBt
X2RvY3VtZW50OworICAgIFN0cmluZyBtX2Nyb3NzT3JpZ2luTW9kZTsKKyAgICBib29sIG1fZGlk
UGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
YXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKK307CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCmluZGV4IDZhNWIwNDVmMDdiMzIyOTkzNDVlODFmZTA1MzY3OTA0MTdi
ODM1YTAuLmQ2ZjY4ZmU1M2U2MDIyNDM4ZjJiMzVhOGRmMjRmOTNlYmU5ZWJkZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTEx
OTUsNiArMTE5NSwxNCBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlciogTWVkaWFQbGF5ZXI6OmNhY2hl
ZFJlc291cmNlTG9hZGVyKCkKICAgICByZXR1cm4gbV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQ
bGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpOwogfQogCitQYXNzUmVmUHRyPE1lZGlhUGxheWVy
UmVzb3VyY2VMb2FkZXI+IE1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcihzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudD4gY2xpZW50KQoreworICAg
IGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gbV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxv
YWRlcihXVEY6Om1vdmUoY2xpZW50KSk7Cit9CisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiB2
b2lkIE1lZGlhUGxheWVyOjphZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZh
dGU+IHRyYWNrKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKaW5kZXggNDExN2ViNWUyZmUzNjFkYmRmZjI3MDkxZjQxMmIyZWVlZWIxODg1Yy4u
OTc2YmU1MDViMWIzZTFkODA5MTlhZjgyNmEwZjI0MmQ4YTA1YTJiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxheW91
dFJlY3QuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybUxheWVyLmgiCkBAIC0xNDQsOCArMTQ1LDYgQEAgc3RydWN0IEdyYXBoaWNzRGV2
aWNlQWRhcHRlcjsKIAogY2xhc3MgTWVkaWFQbGF5ZXJDbGllbnQgewogcHVibGljOgotICAgIGVu
dW0gQ09SU01vZGUgeyBVbnNwZWNpZmllZCwgQW5vbnltb3VzLCBVc2VDcmVkZW50aWFscyB9Owot
CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXJDbGllbnQoKSB7IH0KIAogICAgIC8vIHRoZSBuZXR3
b3JrIHN0YXRlIGhhcyBjaGFuZ2VkCkBAIC0yMjUsNyArMjI0LDYgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgQ09SU01vZGUgbWVkaWFQbGF5ZXJDT1JT
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIFVuc3BlY2lmaWVkOyB9CiAgICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyRW50ZXJGdWxsc2NyZWVuKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyRXhpdEZ1bGxzY3JlZW4oKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc0Z1
bGxzY3JlZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMjM5LDYgKzIzNyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc1BhdXNlZCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc0xvb3BpbmcoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1l
ZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXI+IG1lZGlhUGxheWVyQ3JlYXRl
UmVzb3VyY2VMb2FkZXIoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXJD
bGllbnQ+KSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBib29sIGRvZXNIYXZlQXR0
cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYsIEF0b21pY1N0cmluZyogPSAwKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtNTI3LDYgKzUyNiw3
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAg
IENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcigpOworICAgIFBhc3NS
ZWZQdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlcj4gY3JlYXRlUmVzb3VyY2VMb2FkZXIoc3Rk
Ojp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXJDbGllbnQ+KTsKIAogI2lmIEVO
QUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIGFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRp
b1RyYWNrUHJpdmF0ZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2ZTIx
NGZjMzM5NTRiNWQ0ZTNjYzBkMjIyYTgyMjA1YzViNWRhYWIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclJlc291cmNlTG9hZGVy
LmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5M
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVk
aWFQbGF5ZXJSZXNvdXJjZUxvYWRlcl9oCisjZGVmaW5lIE1lZGlhUGxheWVyUmVzb3VyY2VMb2Fk
ZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFJlc291cmNl
UmVzcG9uc2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIE1lZGlhUGxheWVyUmVzb3Vy
Y2VMb2FkZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyUmVzb3Vy
Y2VMb2FkZXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2Vp
dmVkKGNvbnN0IGNoYXIqLCBpbnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBidWZmZXJSZWNlaXZl
ZChTaGFyZWRCdWZmZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEZh
aWxlZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5p
c2hlZChTaGFyZWRCdWZmZXIqKSB7IH0KKyNpZiBVU0UoU09VUCkKKyAgICB2aXJ0dWFsIGNoYXIq
IGdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihzaXplX3QgLypyZXF1ZXN0ZWRTaXplKi8sIHNpemVfdCYg
LyphY3R1YWxTaXplKi8pIHsgcmV0dXJuIG51bGxwdHI7IH07CisjZW5kaWYKK307CisKK2NsYXNz
IE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVBsYXll
clJlc291cmNlTG9hZGVyPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFQbGF5ZXJS
ZXNvdXJjZUxvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGVu
dW0gTG9hZE9wdGlvbiB7CisgICAgICAgIEJ1ZmZlckRhdGEgPSAxIDw8IDAsCisgICAgfTsKKyAg
ICB0eXBlZGVmIHVuc2lnbmVkIExvYWRPcHRpb25zOworCisgICAgdmlydHVhbCB+TWVkaWFQbGF5
ZXJSZXNvdXJjZUxvYWRlcigpIHsgfQorCisgICAgdmlydHVhbCBib29sIHN0YXJ0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIExvYWRPcHRpb25zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3Ao
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKSB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyKHN0ZDo6
dW5pcXVlX3B0cjxNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQpCisgICAg
ICAgIDogbV9jbGllbnQoV1RGOjptb3ZlKGNsaWVudCkpCisgICAgeworICAgIH0KKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50PiBtX2NsaWVudDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggYzcxZDNjMzBiMmY0ZWYy
YzQ4MWFmMGE2MzA4NjE5NzE1MDMwOTEyMy4uM2Q0MjNiMDczMDIyZTk0N2Y3OTFlNjA3ZDJhNzZl
YzNlMGEwMGU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHAKQEAgLTIyLDIyICsyMiwxNyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVB
TUVSKQogCi0jaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKLSNpbmNsdWRlICJDYWNoZWRS
YXdSZXNvdXJjZUNsaWVudC5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCi0j
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuaCIKLSNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKICNpbmNs
dWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIK
KyNpbmNsdWRlICJNZWRpYVBsYXllclJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgPGdzdC9hcHAvZ3N0YXBwc3JjLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgpAQCAtNTEsNDgg
KzQ2LDM0IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1lbnVtIENPUlNBY2Nlc3ND
aGVja1Jlc3VsdCB7Ci0gICAgQ09SU05vQ2hlY2ssCi0gICAgQ09SU1N1Y2Nlc3MsCi0gICAgQ09S
U0ZhaWx1cmUKLX07Ci0KIGNsYXNzIFN0cmVhbWluZ0NsaWVudCB7CiAgICAgcHVibGljOgogICAg
ICAgICBTdHJlYW1pbmdDbGllbnQoV2ViS2l0V2ViU3JjKik7CiAgICAgICAgIHZpcnR1YWwgflN0
cmVhbWluZ0NsaWVudCgpOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBsb2FkRmFpbGVkKCkgY29u
c3QgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKSA9IDA7
Ci0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNoYXIqIGNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90
IHJlcXVlc3RlZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZSk7Ci0gICAgICAgIHZvaWQgaGFuZGxl
UmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ09SU0FjY2Vzc0NoZWNr
UmVzdWx0KTsKKyAgICAgICAgdm9pZCBoYW5kbGVSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKICAgICAgICAgdm9pZCBoYW5kbGVEYXRhUmVjZWl2ZWQoY29uc3QgY2hh
ciosIGludCk7CiAgICAgICAgIHZvaWQgaGFuZGxlTm90aWZ5RmluaXNoZWQoKTsKIAogICAgICAg
ICBHc3RFbGVtZW50KiBtX3NyYzsKIH07CiAKLWNsYXNzIENhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50IDogcHVibGljIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LCBwdWJsaWMgU3RyZWFtaW5n
Q2xpZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworY2xhc3MgQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNs
aWVudCwgcHVibGljIFN0cmVhbWluZ0NsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQpOwogICAgIHB1YmxpYzoKLSAgICAgICAgQ2Fj
aGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQoV2ViS2l0V2ViU3JjKiwgQ2FjaGVkUmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBNZWRpYVBsYXllckNsaWVudDo6Q09SU01v
ZGUpOworICAgICAgICBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudChXZWJLaXRXZWJTcmMq
KTsKICAgICAgICAgdmlydHVhbCB+Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQoKTsKIAot
ICAgICAgICAvLyBTdHJlYW1pbmdDbGllbnQgdmlydHVhbCBtZXRob2RzLgotICAgICAgICB2aXJ0
dWFsIGJvb2wgbG9hZEZhaWxlZCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVm
ZXJzTG9hZGluZyhib29sKTsKLQogICAgIHByaXZhdGU6Ci0gICAgICAgIC8vIENhY2hlZFJlc291
cmNlQ2xpZW50IHZpcnR1YWwgbWV0aG9kcy4KLSAgICAgICAgdmlydHVhbCBjaGFyKiBnZXRPckNy
ZWF0ZVJlYWRCdWZmZXIoQ2FjaGVkUmVzb3VyY2UqLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6
ZV90JiBhY3R1YWxTaXplKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiwgaW50KTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7Ci0K
LSAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3Vy
Y2U7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CisgICAgICAgIC8v
IE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXJDbGllbnQgdmlydHVhbCBtZXRob2RzLgorICAgICAg
ICB2aXJ0dWFsIGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6
ZSwgc2l6ZV90JiBhY3R1YWxTaXplKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZp
bmlzaGVkKFNoYXJlZEJ1ZmZlciopIG92ZXJyaWRlOwogfTsKIAogY2xhc3MgUmVzb3VyY2VIYW5k
bGVTdHJlYW1pbmdDbGllbnQgOiBwdWJsaWMgUmVzb3VyY2VIYW5kbGVDbGllbnQsIHB1YmxpYyBT
dHJlYW1pbmdDbGllbnQgewpAQCAtMTAyLDggKzgzLDggQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGVT
dHJlYW1pbmdDbGllbnQgOiBwdWJsaWMgUmVzb3VyY2VIYW5kbGVDbGllbnQsIHB1YmxpYyBTdHJl
YW0KICAgICAgICAgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQoKTsKIAog
ICAgICAgICAvLyBTdHJlYW1pbmdDbGllbnQgdmlydHVhbCBtZXRob2RzLgotICAgICAgICB2aXJ0
dWFsIGJvb2wgbG9hZEZhaWxlZCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVm
ZXJzTG9hZGluZyhib29sKTsKKyAgICAgICAgYm9vbCBsb2FkRmFpbGVkKCkgY29uc3Q7CisgICAg
ICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IC8vIFJlc291cmNlSGFuZGxlQ2xpZW50IHZpcnR1YWwgbWV0aG9kcy4KQEAgLTEyOCw5ICsxMDks
MTAgQEAgc3RydWN0IF9XZWJLaXRXZWJTcmNQcml2YXRlIHsKIAogICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWVyKiBwbGF5ZXI7CiAKLSAgICBTdHJlYW1pbmdDbGllbnQqIGNsaWVudDsKKyAgICBSZWZQ
dHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlcj4gbG9hZGVyOworICAgIFJlc291cmNlSGFuZGxl
U3RyZWFtaW5nQ2xpZW50KiBjbGllbnQ7CiAKLSAgICBDT1JTQWNjZXNzQ2hlY2tSZXN1bHQgY29y
c0FjY2Vzc0NoZWNrOworICAgIGJvb2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsKIAogICAg
IGd1aW50NjQgb2Zmc2V0OwogICAgIGd1aW50NjQgc2l6ZTsKQEAgLTQwMiw2ICszODQsOCBAQCBz
dGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTdG9wKFdlYktpdFdlYlNyYyogc3JjKQogICAgICAgICBw
cml2LT5jbGllbnQgPSAwOwogICAgIH0KIAorICAgIHByaXYtPmxvYWRlciA9IG51bGxwdHI7CisK
ICAgICBpZiAocHJpdi0+YnVmZmVyKSB7CiAgICAgICAgIHVubWFwR3N0QnVmZmVyKHByaXYtPmJ1
ZmZlci5nZXQoKSk7CiAgICAgICAgIHByaXYtPmJ1ZmZlci5jbGVhcigpOwpAQCAtNDQ5LDcgKzQz
Myw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNyYyogc3JjKQog
CiAgICAgR011dGV4TG9ja2VyIGxvY2tlcigqR1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKIAot
ICAgIHByaXYtPmNvcnNBY2Nlc3NDaGVjayA9IENPUlNOb0NoZWNrOworICAgIHByaXYtPmRpZFBh
c3NBY2Nlc3NDb250cm9sQ2hlY2sgPSBmYWxzZTsKIAogICAgIGlmICghcHJpdi0+dXJpKSB7CiAg
ICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiTm8gVVJJIHByb3ZpZGVkIik7CkBAIC00NTks
NiArNDQzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBz
cmMpCiAgICAgfQogCiAgICAgQVNTRVJUKCFwcml2LT5jbGllbnQpOworICAgIEFTU0VSVCghcHJp
di0+bG9hZGVyKTsKIAogICAgIFVSTCB1cmwgPSBVUkwoVVJMKCksIHByaXYtPnVyaSk7CiAKQEAg
LTQ5MywyMCArNDc4LDI5IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdl
YlNyYyogc3JjKQogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1l
dGFkYXRhLCBqdXN0IGluIGNhc2UgLi4uCiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOwogCisgICAgYm9vbCBsb2FkRmFpbGVk
ID0gdHJ1ZTsKICAgICBpZiAocHJpdi0+cGxheWVyKSB7Ci0gICAgICAgIGlmIChDYWNoZWRSZXNv
dXJjZUxvYWRlciogbG9hZGVyID0gcHJpdi0+cGxheWVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
KQotICAgICAgICAgICAgcHJpdi0+Y2xpZW50ID0gbmV3IENhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50KHNyYywgbG9hZGVyLCByZXF1ZXN0LCBwcml2LT5wbGF5ZXItPm1lZGlhUGxheWVyQ2xp
ZW50KCktPm1lZGlhUGxheWVyQ09SU01vZGUoKSk7CisgICAgICAgIHByaXYtPmxvYWRlciA9IHBy
aXYtPnBsYXllci0+Y3JlYXRlUmVzb3VyY2VMb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRS
ZXNvdXJjZVN0cmVhbWluZ0NsaWVudD4oc3JjKSk7CisgICAgICAgIGlmIChwcml2LT5sb2FkZXIp
IHsKKyAgICAgICAgICAgIE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zIGxv
YWRPcHRpb25zID0gMDsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMo
ImJsb2IiKSkKKyAgICAgICAgICAgICAgICBsb2FkT3B0aW9ucyB8PSBNZWRpYVBsYXllclJlc291
cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpCdWZmZXJEYXRhOworICAgICAgICAgICAgbG9hZEZhaWxl
ZCA9ICFwcml2LT5sb2FkZXItPnN0YXJ0KHJlcXVlc3QsIGxvYWRPcHRpb25zKTsKKyAgICAgICAg
fQogICAgIH0KIAotICAgIGlmICghcHJpdi0+Y2xpZW50KQorICAgIGlmICghcHJpdi0+bG9hZGVy
KSB7CiAgICAgICAgIHByaXYtPmNsaWVudCA9IG5ldyBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0Ns
aWVudChzcmMsIHJlcXVlc3QpOworICAgICAgICBsb2FkRmFpbGVkID0gcHJpdi0+Y2xpZW50LT5s
b2FkRmFpbGVkKCk7CisgICAgfQogCi0gICAgaWYgKCFwcml2LT5jbGllbnQgfHwgcHJpdi0+Y2xp
ZW50LT5sb2FkRmFpbGVkKCkpIHsKKyAgICBpZiAobG9hZEZhaWxlZCkgewogICAgICAgICBHU1Rf
RVJST1JfT0JKRUNUKHNyYywgIkZhaWxlZCB0byBzZXR1cCBzdHJlYW1pbmcgY2xpZW50Iik7CiAg
ICAgICAgIGlmIChwcml2LT5jbGllbnQpIHsKICAgICAgICAgICAgIGRlbGV0ZSBwcml2LT5jbGll
bnQ7Ci0gICAgICAgICAgICBwcml2LT5jbGllbnQgPSAwOworICAgICAgICAgICAgcHJpdi0+Y2xp
ZW50ID0gbnVsbHB0cjsKICAgICAgICAgfQorICAgICAgICBwcml2LT5sb2FkZXIgPSBudWxscHRy
OwogICAgICAgICBsb2NrZXIudW5sb2NrKCk7CiAgICAgICAgIHdlYktpdFdlYlNyY1N0b3Aoc3Jj
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjgwLDYgKzY3NCw4IEBAIHN0YXRpYyB2b2lkIHdlYktp
dFdlYlNyY05lZWREYXRhTWFpbkNiKFdlYktpdFdlYlNyYyogc3JjKQogCiAgICAgaWYgKHByaXYt
PmNsaWVudCkKICAgICAgICAgcHJpdi0+Y2xpZW50LT5zZXREZWZlcnNMb2FkaW5nKGZhbHNlKTsK
KyAgICBpZiAocHJpdi0+bG9hZGVyKQorICAgICAgICBwcml2LT5sb2FkZXItPnNldERlZmVyc0xv
YWRpbmcoZmFsc2UpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVkRGF0YUNiKEdz
dEFwcFNyYyosIGd1aW50IGxlbmd0aCwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC03MTAsNiArNzA2
LDggQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRW5vdWdoRGF0YU1haW5DYihXZWJLaXRXZWJT
cmMqIHNyYykKIAogICAgIGlmIChwcml2LT5jbGllbnQpCiAgICAgICAgIHByaXYtPmNsaWVudC0+
c2V0RGVmZXJzTG9hZGluZyh0cnVlKTsKKyAgICBpZiAocHJpdi0+bG9hZGVyKQorICAgICAgICBw
cml2LT5sb2FkZXItPnNldERlZmVyc0xvYWRpbmcodHJ1ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdl
YktpdFdlYlNyY0Vub3VnaERhdGFDYihHc3RBcHBTcmMqLCBncG9pbnRlciB1c2VyRGF0YSkKQEAg
LTc2Nyw3ICs3NjUsNyBAQCB2b2lkIHdlYktpdFdlYlNyY1NldE1lZGlhUGxheWVyKFdlYktpdFdl
YlNyYyogc3JjLCBXZWJDb3JlOjpNZWRpYVBsYXllciogcGxheWVyKQogCiBib29sIHdlYktpdFNy
Y1Bhc3NlZENPUlNBY2Nlc3NDaGVjayhXZWJLaXRXZWJTcmMqIHNyYykKIHsKLSAgICByZXR1cm4g
c3JjLT5wcml2LT5jb3JzQWNjZXNzQ2hlY2sgPT0gQ09SU1N1Y2Nlc3M7CisgICAgcmV0dXJuIHNy
Yy0+cHJpdi0+ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsKIH0KIAogU3RyZWFtaW5nQ2xpZW50
OjpTdHJlYW1pbmdDbGllbnQoV2ViS2l0V2ViU3JjKiBzcmMpCkBAIC03OTksMTkgKzc5NywxNSBA
QCBjaGFyKiBTdHJlYW1pbmdDbGllbnQ6OmNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IHJlcXVlc3Rl
ZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZQogICAgIHJldHVybiBnZXRHc3RCdWZmZXJEYXRhUG9p
bnRlcihidWZmZXIpOwogfQogCi12b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxlUmVzcG9uc2VS
ZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ09SU0FjY2Vzc0NoZWNr
UmVzdWx0IGNvcnNBY2Nlc3NDaGVjaykKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVSZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFdl
YktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMpOwogICAgIFdlYktpdFdlYlNy
Y1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywg
IlJlY2VpdmVkIHJlc3BvbnNlOiAlZCIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogCi0g
ICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwIHx8IGNvcnNBY2Nlc3NDaGVj
ayA9PSBDT1JTRmFpbHVyZSkgewotICAgICAgICAvLyBSZWNlaXZlZCBlcnJvciBjb2RlIG9yIENP
UlMgY2hlY2sgZmFpbGVkCi0gICAgICAgIGlmIChjb3JzQWNjZXNzQ2hlY2sgPT0gQ09SU0ZhaWx1
cmUpCi0gICAgICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihzcmMsIFJFU09VUkNFLCBSRUFELCAo
IkNyb3NzLW9yaWdpbiBzdHJlYW0gbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNl
IFNoYXJpbmcgcG9saWN5LiIpLCAobnVsbHB0cikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBHU1RfRUxFTUVOVF9FUlJPUihzcmMsIFJFU09VUkNFLCBSRUFELCAoIlJlY2VpdmVkICVkIEhU
VFAgZXJyb3IgY29kZSIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpLCAobnVsbHB0cikpOwor
ICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkgeworICAgICAgICBHU1Rf
RUxFTUVOVF9FUlJPUihzcmMsIFJFU09VUkNFLCBSRUFELCAoIlJlY2VpdmVkICVkIEhUVFAgZXJy
b3IgY29kZSIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpLCAobnVsbHB0cikpOwogICAgICAg
ICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKHByaXYtPmFwcHNyYyk7CiAgICAgICAgIHdlYktp
dFdlYlNyY1N0b3Aoc3JjKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODE5LDggKzgxMyw2IEBAIHZv
aWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBDCiAKICAgICBHTXV0ZXhMb2NrZXIgbG9ja2VyKCpHU1RfT0JK
RUNUX0dFVF9MT0NLKHNyYykpOwogCi0gICAgcHJpdi0+Y29yc0FjY2Vzc0NoZWNrID0gY29yc0Fj
Y2Vzc0NoZWNrOwotCiAgICAgaWYgKHByaXYtPnNlZWtTb3VyY2UuaXNBY3RpdmUoKSkgewogICAg
ICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlNlZWsgaW4gcHJvZ3Jlc3MsIGlnbm9yaW5nIHJl
c3BvbnNlIik7CiAgICAgICAgIHJldHVybjsKQEAgLTk5Miw3OCArOTg0LDU0IEBAIHZvaWQgU3Ry
ZWFtaW5nQ2xpZW50OjpoYW5kbGVOb3RpZnlGaW5pc2hlZCgpCiAgICAgfQogfQogCi1DYWNoZWRS
ZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQoV2Vi
S2l0V2ViU3JjKiBzcmMsIENhY2hlZFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBNZWRpYVBsYXllckNsaWVudDo6Q09SU01vZGUg
Y29yc01vZGUpCitDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6Q2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgOiBTdHJlYW1pbmdDbGllbnQo
c3JjKQogewotICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgYnVmZmVyaW5nUG9saWN5ID0gcmVxdWVz
dC51cmwoKS5wcm90b2NvbElzKCJibG9iIikgPyBCdWZmZXJEYXRhIDogRG9Ob3RCdWZmZXJEYXRh
OwotICAgIFJlcXVlc3RPcmlnaW5Qb2xpY3kgY29yc1BvbGljeSA9IGNvcnNNb2RlICE9IE1lZGlh
UGxheWVyQ2xpZW50OjpVbnNwZWNpZmllZCA/IFBvdGVudGlhbGx5Q3Jvc3NPcmlnaW5FbmFibGVk
IDogVXNlRGVmYXVsdE9yaWdpblJlc3RyaWN0aW9uc0ZvclR5cGU7Ci0gICAgU3RvcmVkQ3JlZGVu
dGlhbHMgYWxsb3dDcmVkZW50aWFscyA9IGNvcnNNb2RlID09IE1lZGlhUGxheWVyQ2xpZW50OjpB
bm9ueW1vdXMgPyBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBBbGxvd1N0b3JlZENyZWRl
bnRpYWxzOwotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zKFNlbmRDYWxsYmFja3Ms
IERvTm90U25pZmZDb250ZW50LCBidWZmZXJpbmdQb2xpY3ksIGFsbG93Q3JlZGVudGlhbHMsIERv
Tm90QXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscywgRG9TZWN1cml0eUNoZWNrLCBj
b3JzUG9saWN5LCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8pOwotCi0gICAgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0IGNhY2hlUmVxdWVzdChyZXF1ZXN0LCBvcHRpb25zKTsKLQotICAgIGlmIChj
b3JzTW9kZSAhPSBNZWRpYVBsYXllckNsaWVudDo6VW5zcGVjaWZpZWQpIHsKLSAgICAgICAgbV9v
cmlnaW4gPSByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKSA/IHJlc291cmNlTG9hZGVyLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsKLSAgICAgICAgdXBkYXRlUmVxdWVz
dEZvckFjY2Vzc0NvbnRyb2woY2FjaGVSZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwg
bV9vcmlnaW4uZ2V0KCksIGFsbG93Q3JlZGVudGlhbHMpOwotICAgIH0KLQotICAgIC8vIFRPRE86
IERlY2lkZSB3aGV0aGVyIHRvIHVzZSBwcmVmbGlnaHQgbW9kZSBmb3IgY3Jvc3Mtb3JpZ2luIHJl
cXVlc3RzIChzZWUgaHR0cDovL3drYnVnLmNvbS8xMzE0ODQpLgotICAgIG1fcmVzb3VyY2UgPSBy
ZXNvdXJjZUxvYWRlci0+cmVxdWVzdFJhd1Jlc291cmNlKGNhY2hlUmVxdWVzdCk7Ci0gICAgaWYg
KG1fcmVzb3VyY2UpCi0gICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCh0aGlzKTsKIH0KIAog
Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6On5DYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0Ns
aWVudCgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2UpIHsKLSAgICAgICAgbV9yZXNvdXJjZS0+cmVt
b3ZlQ2xpZW50KHRoaXMpOwotICAgICAgICBtX3Jlc291cmNlID0gMDsKLSAgICB9CiB9CiAKLWJv
b2wgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGYWlsZWQoKSBjb25zdAorY2hh
ciogQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihz
aXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKQogewotICAgIHJldHVybiAh
bV9yZXNvdXJjZTsKLX0KLQotdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6c2V0
RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKLXsKLSAgICBpZiAobV9yZXNvdXJjZSkKLSAgICAg
ICAgbV9yZXNvdXJjZS0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOworICAgIHJldHVybiBjcmVh
dGVSZWFkQnVmZmVyKHJlcXVlc3RlZFNpemUsIGFjdHVhbFNpemUpOwogfQogCi1jaGFyKiBDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKENhY2hlZFJl
c291cmNlKiwgc2l6ZV90IHJlcXVlc3RlZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZSkKK3ZvaWQg
Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVJlYWRCdWZmZXIo
cmVxdWVzdGVkU2l6ZSwgYWN0dWFsU2l6ZSk7CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJp
diA9IFdFQktJVF9XRUJfU1JDKG1fc3JjKS0+cHJpdjsKKyAgICBwcml2LT5kaWRQYXNzQWNjZXNz
Q29udHJvbENoZWNrID0gcHJpdi0+bG9hZGVyLT5kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKCk7
CisgICAgaGFuZGxlUmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7CiB9CiAKLXZvaWQgQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKQogewotICAgIENPUlNBY2Nlc3NDaGVja1Jlc3VsdCBjb3JzQWNjZXNzQ2hlY2sg
PSBDT1JTTm9DaGVjazsKLSAgICBpZiAobV9vcmlnaW4pCi0gICAgICAgIGNvcnNBY2Nlc3NDaGVj
ayA9IChtX29yaWdpbi0+Y2FuUmVxdWVzdChyZXNwb25zZS51cmwoKSkgfHwgcmVzb3VyY2UtPnBh
c3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhtX29yaWdpbi5nZXQoKSkpID8gQ09SU1N1Y2Nlc3MgOiBD
T1JTRmFpbHVyZTsKLSAgICBoYW5kbGVSZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlLCBjb3JzQWNj
ZXNzQ2hlY2spOworICAgIGhhbmRsZURhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgpOwogfQogCi12
b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBDYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudDo6YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQogewotICAgIGhhbmRsZURhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgpOwor
ICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMpOworICAgIEdTVF9F
TEVNRU5UX0VSUk9SKHNyYywgUkVTT1VSQ0UsIFJFQUQsICgiJXMiLCBlcnJvci5sb2NhbGl6ZWRE
ZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpLCAobnVsbHB0cikpOworICAgIGdzdF9hcHBfc3Jj
X2VuZF9vZl9zdHJlYW0oc3JjLT5wcml2LT5hcHBzcmMpOworICAgIHdlYktpdFdlYlNyY1N0b3Ao
c3JjKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVh
bWluZ0NsaWVudDo6bG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAg
ICBpZiAocmVzb3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgV2ViS2l0
V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYyk7CisgICAgV2ViS2l0V2ViU3JjKiBz
cmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYyk7CiAKLSAgICAgICAgaWYgKCFyZXNvdXJjZS0+d2Fz
Q2FuY2VsZWQoKSkgewotICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IgPSBy
ZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpOwotICAgICAgICAgICAgR1NUX0VSUk9SX09CSkVDVChz
cmMsICJIYXZlIGZhaWx1cmU6ICVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4
KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNyYywgUkVTT1VSQ0Us
IEZBSUxFRCwgKCIlcyIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEo
KSksICgwKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShz
cmMtPnByaXYtPmFwcHNyYyk7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIWVycm9yLmlzQ2Fu
Y2VsbGF0aW9uKCkpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzcmMsICJIYXZlIGZhaWx1
cmU6ICVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBSRVNPVVJDRSwgRkFJTEVELCAoIiVzIiwgZXJy
b3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSwgKG51bGxwdHIpKTsKICAg
ICB9CiAKKyAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKHNyYy0+cHJpdi0+YXBwc3JjKTsK
K30KKwordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVkKFNo
YXJlZEJ1ZmZlciopCit7CiAgICAgaGFuZGxlTm90aWZ5RmluaXNoZWQoKTsKIH0KIApAQCAtMTEw
NCw3ICsxMDcyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6d2lsbFNl
bmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXEKIAogdm9pZCBSZXNvdXJjZUhh
bmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaGFuZGxlUmVzcG9uc2VS
ZWNlaXZlZChyZXNwb25zZSwgQ09SU05vQ2hlY2spOworICAgIGhhbmRsZVJlc3BvbnNlUmVjZWl2
ZWQocmVzcG9uc2UpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIC8qIGRhdGEgKi8sIHVu
c2lnbmVkIC8qIGxlbmd0aCAqLywgaW50KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU5YWIxYTY3YWE5NzhjYjQ5Njk2MDVl
YmY5NWNmOWRlODM3NTZjYjIuLmI1Mjk5Mjc1YTM5NDQyZmY4YmM2ZGRkZTJkM2Y3YTAwYWU2MzRl
OTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wOS0zMCAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gRG8gbm90IHVz
ZSBDYWNoZWRSZXNvdXJjZUxvYWRlciwgU2VjdXJpdHlPcmlnaW4sIFJlc291cmNlQnVmZmVyIGFu
ZCBvdGhlciBXZWJDb3JlIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzcwNjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGUgZXhwZWN0ZWQgcmVzdWx0cyBvZiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3ZpZGVvLWNyb3NzLW9yaWdpbi1hY2Nlc3NmYWlsdXJlLmh0bWwsIHNpbmNlCisgICAgICAg
IG5vdyB0aGUgZXJyb3IgaXMgYWxzbyBsb2dnZWQgaW4gdGhlIGNvbnNvbGUuCisKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZGVvLWNyb3NzLW9yaWdpbi1hY2Nlc3NmYWlsdXJlLWV4
cGVjdGVkLnR4dDoKKwogMjAxNC0wOC0wMSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJA
aWdhbGlhLmNvbT4KIAogICAgICAgICBDYXJldCBub3Qgc2hvd24gYXQgdGhlIGVuZCBvZiBsaW5l
IGluIG92ZXJ0eXBlIG1vZGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWFjY2Vzc2ZhaWx1cmUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4tYWNjZXNzZmFp
bHVyZS1leHBlY3RlZC50eHQKaW5kZXggNDE1Y2UxZWE2Mjg5MDdlODdmMzZkM2QxODFhZWFiMDJl
NjdjZWI2MS4uOWUyMjUwNTg4N2Y4N2M2MTM5ZGM3NjI3YTZmOTY0YjgyOWVkYmI3MCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4t
YWNjZXNzZmFpbHVyZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4tYWNjZXNzZmFpbHVyZS1leHBlY3RlZC50eHQKQEAg
LTEsMyArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IENyb3NzLW9yaWdpbiBtZWRpYSByZXNvdXJj
ZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuCiBF
VkVOVChlcnJvcikKIEVORCBPRiBURVNUCiAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239602</attachid>
            <date>2014-10-09 23:59:24 -0700</date>
            <delta_ts>2014-10-22 06:27:47 -0700</delta_ts>
            <desc>Rebased patch after r174563</desc>
            <filename>wcore-media-player-resource-loader.diff</filename>
            <type>text/plain</type>
            <size>47946</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NzdlZDQ5Li4xOGEyN2QzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMTAt
MDkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHU3RyZWFtZXJdIERvIG5vdCB1c2UgQ2FjaGVkUmVzb3VyY2VMb2FkZXIsIFNlY3VyaXR5T3Jp
Z2luLCBSZXNvdXJjZUJ1ZmZlciBhbmQgb3RoZXIgV2ViQ29yZSB0eXBlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGVkIHJlc3Vs
dHMgb2YgaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4tYWNjZXNzZmFpbHVy
ZS5odG1sLCBzaW5jZQorICAgICAgICBub3cgdGhlIGVycm9yIGlzIGFsc28gbG9nZ2VkIGluIHRo
ZSBjb25zb2xlLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1v
cmlnaW4tYWNjZXNzZmFpbHVyZS1leHBlY3RlZC50eHQ6CisKIDIwMTQtMTAtMDggIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgbW9y
ZSBwYXNzaW5nIHRlc3RzIGZyb20gVGVzdEV4cGVjdGF0aW9ucy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWFjY2Vzc2ZhaWx1
cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1j
cm9zcy1vcmlnaW4tYWNjZXNzZmFpbHVyZS1leHBlY3RlZC50eHQKaW5kZXggNDE1Y2UxZS4uOWUy
MjUwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1j
cm9zcy1vcmlnaW4tYWNjZXNzZmFpbHVyZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4tYWNjZXNzZmFpbHVyZS1leHBl
Y3RlZC50eHQKQEAgLTEsMyArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IENyb3NzLW9yaWdpbiBt
ZWRpYSByZXNvdXJjZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmlu
ZyBwb2xpY3kuCiBFVkVOVChlcnJvcikKIEVORCBPRiBURVNUCiAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDY3ZDIxOGIuLmYzMzM1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xODM1LDYg
KzE4MzUsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cAogICAgIGxvYWRlci9MaW5rTG9hZGVyLmNwcAogICAgIGxvYWRlci9Mb2FkZXJTdHJhdGVneS5j
cHAKKyAgICBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKICAgICBsb2FkZXIvTWl4ZWRD
b250ZW50Q2hlY2tlci5jcHAKICAgICBsb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKICAgICBs
b2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYTQ2MTdkLi4wZDA3
OTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsODYgQEAKIDIwMTQtMTAtMDkgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCisgICAgICAgIFtHU3RyZWFtZXJdIERv
IG5vdCB1c2UgQ2FjaGVkUmVzb3VyY2VMb2FkZXIsIFNlY3VyaXR5T3JpZ2luLCBSZXNvdXJjZUJ1
ZmZlciBhbmQgb3RoZXIgV2ViQ29yZSB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgbWVkaWEgcmVzb3VyY2UgbG9hZGVyIHRvIGEg
bmV3IGNsYXNzIGluIFdlYkNvcmUvbG9hZGVyCisgICAgICAgIHRoYXQgaW5oZXJpdHMgZnJvbSBh
IE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIgY2xhc3MgZGVmaW5lZCBpbgorICAgICAgICB0aGUg
cGxhdGZvcm0gbGF5ZXIuIFRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBiZWhhdmlvdXIgaXMgaW1wbGVt
ZW50ZWQKKyAgICAgICAgdXNpbmcgYSBjbGllbnQgYWxzbyBkZWZpbmVkIGluIHRoZSBwbGF0Zm9y
bSBsYXllciwgaW1wbGVtZW50ZWQgYnkKKyAgICAgICAgZXZlcnkgbWVkaWEgYmFja2VuZCwgYW5k
IHVzZWQgYnkgdGhlIFdlYkNvcmUgTWVkaWFSZXNvdXJjZUxvYWRlci4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OiBBZGQgbmV3IGZpbGVzIHRvIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFdl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczogRGl0dG8uCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIENyZWF0ZSBhIE1lZGlhUmVz
b3VyY2VMb2FkZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckNPUlNNb2RlKTogRGVsZXRlZC4gVGhpcyBpcworICAgICAgICBubyBsb25nZXIgdXNlZC4K
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvTWVk
aWFSZXNvdXJjZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNv
dXJjZUxvYWRlcjo6TWVkaWFSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVJlc291cmNlTG9hZGVyOjp+TWVkaWFSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlc291cmNlTG9hZGVyOjpzdGFydCk6IFN0YXJ0IGEgbmV3IGxvYWQgZm9yIHRoZQor
ICAgICAgICBnaXZlbiByZXF1ZXN0IGFuZCBsb2FkIG9wdGlvbnMuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlc291cmNlTG9hZGVyOjpzdG9wKTogU3RvcCB0aGUgbG9hZCBpZiBuZWVkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQp
OiBIYW5kbGUgQ09SUworICAgICAgICBhY2Nlc3MgY2hlY2sgYW5kIG5vdGlmeSB0aGUgY2xpZW50
IGFib3V0IHRoZSByZXNwb25zZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2Fk
ZXI6OmRhdGFSZWNlaXZlZCk6IE5vdGlmeSB0aGUgY2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6OmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcik6IEFzayB0
aGUKKyAgICAgICAgY2xpZW50IHRvIGNyZWF0ZSB0aGUgcmVhZCBidWZmZXIuCisgICAgICAgICog
bG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmNyZWF0ZVJlc291cmNlTG9hZGVyKTogQ2FsbAorICAgICAgICBtZWRpYVBsYXllckNyZWF0ZVJl
c291cmNlTG9hZGVyKCkgaWYgdGhlcmUncyBhIGNsaWVudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGll
bnQ6Om1lZGlhUGxheWVyQ3JlYXRlUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyQ09SU01vZGUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50OjpyZXNw
b25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVzb3VyY2VMb2Fk
ZXJDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJl
c291cmNlTG9hZGVyQ2xpZW50OjpidWZmZXJSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudDo6bG9h
ZEZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xp
ZW50Ojpsb2FkRmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXNvdXJj
ZUxvYWRlckNsaWVudDo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXI6On5NZWRpYVBsYXllclJlc291cmNlTG9hZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXI6OnN0b3ApOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclJlc291cmNlTG9hZGVyOjpkaWRQYXNz
QWNjZXNzQ29udHJvbENoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVzb3Vy
Y2VMb2FkZXI6Ok1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAod2ViS2l0V2ViU3JjU3RvcCk6IEFsc28gZGVsZXRlIHRoZSBNZWRpYVBsYXllclJlc291cmNl
TG9hZGVyLgorICAgICAgICAod2ViS2l0V2ViU3JjU3RhcnQpOiBDcmVhdGUgYSBuZXcgcmVzb3Vy
Y2UgbG9hZGVyIHVzaW5nCisgICAgICAgIE1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRl
cigpIHdpdGggYSBuZXcKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQgYXMg
Y2xpZW50LgorICAgICAgICAod2ViS2l0V2ViU3JjTmVlZERhdGFNYWluQ2IpOiBDYWxsIHNldERl
ZmVyc0xvYWRpbmcoKSBmb3IgdGhlCisgICAgICAgIHJlc291cmNlIGxvYWRlciBpZiB0aGVyZSdz
IG9uZS4KKyAgICAgICAgKHdlYktpdFdlYlNyY0Vub3VnaERhdGFNYWluQ2IpOiBEaXR0by4KKyAg
ICAgICAgKHdlYktpdFNyY1Bhc3NlZENPUlNBY2Nlc3NDaGVjayk6IFJldHVybiBkaWRQYXNzQWNj
ZXNzQ29udHJvbENoZWNrLgorICAgICAgICAoU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVSZXNwb25z
ZVJlY2VpdmVkKTogUmVtb3ZlIHRoZSBDT1JTIGNoZWNrCisgICAgICAgIHJlc3VsdCBwYXJhbWV0
ZXIgc2luY2UgdGhhdCdzIG5vdyBoYW5kbGVkIGJ5IE1lZGlhUmVzb3VyY2VMb2FkZXIuCisgICAg
ICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6Q2FjaGVkUmVzb3VyY2VTdHJlYW1p
bmdDbGllbnQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6On5DYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudCk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVh
bWluZ0NsaWVudDo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKToKKyAgICAgICAgKENhY2hlZFJlc291
cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKTogVXBkYXRlIGRpZFBhc3NBY2Nl
c3NDb250cm9sQ2hlY2suCisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojph
Y2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQpOiBMb2cgdGhlCisgICAgICAgIGVycm9yIGFuZCBzdG9w
IHRoZSBsb2FkLgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRG
YWlsZWQpOiBMb2cgdGhlIGVycm9yIGlmIGl0CisgICAgICAgIHdhcyBub3QgYSBjYW5jZWxsYXRp
b24uCisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVk
KToKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnNldERlZmVy
c0xvYWRpbmcpOiBEZWxldGVkLgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQ6Om5vdGlmeUZpbmlzaGVkKTogRGVsZXRlZC4KKworMjAxNC0xMC0wOSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgTWVkaWFQbGF5ZXIgc2hv
dWxkIHVzZSBhIHJlZmVyZW5jZSBmb3IgdGhlIE1lZGlhUGxheWVyQ2xpZW50CiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc1NTIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggYTUxZmI1Ny4u
Mzc0MWQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCkBAIC03MjQ0LDYgKzcyNDQsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
bG9hZGVyXEltYWdlTG9hZGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxv
YWRlclxMaW5rTG9hZGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRl
clxMb2FkZXJTdHJhdGVneS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsb2Fk
ZXJcTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llxsb2FkZXJcTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxsb2FkZXJcTmF2aWdhdGlvbkFjdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxsb2FkZXJcTmF2aWdhdGlvblNjaGVkdWxlci5jcHAiIC8+CkBAIC0xOTI0Niw2
ICsxOTI0Nyw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcTGlua0xvYWRl
ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXExpbmtMb2FkZXJDbGll
bnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxMb2FkZXJTdHJhdGVn
eS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXE1lZGlhUmVzb3VyY2VM
b2FkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxNaXhlZENvbnRl
bnRDaGVja2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcTmF2aWdh
dGlvbkFjdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXE5hdmln
YXRpb25TY2hlZHVsZXIuaCIgLz4KQEAgLTE5NTg2LDYgKzE5NTg4LDcgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXExheW91dFJlY3QuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXExheW91dFNpemUuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXE1lZGlhUGxheWVy
LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xNZWRp
YVBsYXllclJlc291cmNlTG9hZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xOYXRpdmVJbWFnZVB0ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUGF0aC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUGF0aFRyYXZlcnNhbFN0YXRlLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKaW5kZXggZmYxNzQ0My4uZTdkNWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtOTAwLDYgKzkw
MCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsb2FkZXJcTG9hZGVyU3RyYXRlZ3ku
Y3BwIj4KICAgICAgIDxGaWx0ZXI+bG9hZGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsb2FkZXJcTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAi
PgorICAgICAgPEZpbHRlcj5sb2FkZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxNaXhlZENvbnRlbnRDaGVja2VyLmNwcCI+CiAg
ICAgICA8RmlsdGVyPmxvYWRlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNzkyMCw2
ICs3OTIzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxMb2FkZXJTdHJh
dGVneS5oIj4KICAgICAgIDxGaWx0ZXI+bG9hZGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcTWVkaWFSZXNvdXJjZUxvYWRlci5o
Ij4KKyAgICAgIDxGaWx0ZXI+bG9hZGVyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcTWl4ZWRDb250ZW50Q2hlY2tlci5oIj4KICAg
ICAgIDxGaWx0ZXI+bG9hZGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC04NTIwLDYg
Kzg1MjYsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
TWVkaWFQbGF5ZXIuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xNZWRpYVBsYXllclJlc291cmNlTG9hZGVyLmgiPgorICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxncmFwaGljczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcTmF0aXZlSW1hZ2VQdHIuaCI+CiAgICAgICA8
RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MjM2ZjlmYS4uN2YzMWE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTc2MSw2ICs1NzYxLDkgQEAKIAkJQ0VDQURGQ0UxNTM3
NzkxRDAwRTM3MDY4IC8qIFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQ0MxNTM3NzkxRDAwRTM3MDY4
IC8qIFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5oICovOyB9OwogCQlDRUNDRkMzQjE0MTk3M0Q1
MDAyQTBBQzEgLyogRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNDRkMzQTE0MTk3M0Q1MDAyQTBBQzEgLyogRGVj
b2RlRXNjYXBlU2VxdWVuY2VzLmggKi87IH07CiAJCUNFREExMkQ3MTUyQ0ExQ0IwMEQ5RTA4RCAv
KiBBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFREExMkQ2MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlDRUVGQ0Q3OTE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUVGQ0Q3NzE5
REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgKi87IH07CisJCUNFRUZD
RDdBMTlEQjMxRjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUVGQ0Q3ODE5REIzMUY3MDAzODc2
RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5oICovOyB9OworCQlDRUVGQ0Q3QzE5REIzM0RDMDAz
ODc2RDcgLyogTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VFRkNEN0IxOURCMzNEQzAwMzg3NkQ3IC8qIE1l
ZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlDRUY0MThDRTExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRB
cmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0VGNDE4Q0MxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCAqLzsg
fTsKIAkJQ0VGNDE4Q0YxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUY0MThDRDExNzk2
NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEMDAwRUJBMjExQkRBRkQ0MDBDNDc3MjYgLyog
RnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRDAwMEVCQTAxMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVy
U3RhdGVNYWNoaW5lLmNwcCAqLzsgfTsKQEAgLTEzMjQwLDYgKzEzMjQzLDkgQEAKIAkJQ0VDQ0ZD
M0ExNDE5NzNENTAwMkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0
aXZlVGV4dENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VFQzYwMzQx
ODdERDk2MjAwM0U0M0JCIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uSU9TLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja1JlcHJlc2VudGF0aW9uSU9TLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFRUZDRDc3MTlEQjMxRjcwMDM4NzZENyAvKiBN
ZWRpYVJlc291cmNlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRUVGQ0Q3ODE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVJlc291cmNlTG9hZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBNZWRp
YVBsYXllclJlc291cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0VGNDE4Q0MxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZXdwb3J0QXJndW1lbnRzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VGNDE4Q0QxMTc5Njc4QzAwOUQxMTJDIC8q
IFZpZXdwb3J0QXJndW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZp
ZXdwb3J0QXJndW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMDBFQkEw
MTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQ4Niw2ICsyMDQ5Miw3IEBACiAJCQkJ
RTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVyLmNwcCAqLywKIAkJCQlFNEI0
MUUwRDBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuaCAqLywKIAkJCQkwNzlGNUU0QjBG
M0JFQkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi8sCisJCQkJQ0VFRkNEN0Ix
OURCMzNEQzAwMzg3NkQ3IC8qIE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQlD
RDY0MUVCMTE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggKi8sCiAJCQkJ
Q0REQzFFNzkxOEE5NTJGMzAwMjdBOUQ0IC8qIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oICov
LAogCQkJCTZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZVB0ci5oICovLApA
QCAtMjExODEsNiArMjExODgsOCBAQAogCQkJCTk4NDI2NEVGMTJENTI4MEEwMDBEODhBNCAvKiBM
aW5rTG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJNTFBQkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExv
YWRlclN0cmF0ZWd5LmNwcCAqLywKIAkJCQk1MUU2ODIwRjE2Mzg3MzAyMDAzQkJGM0MgLyogTG9h
ZGVyU3RyYXRlZ3kuaCAqLywKKwkJCQlDRUVGQ0Q3NzE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFS
ZXNvdXJjZUxvYWRlci5jcHAgKi8sCisJCQkJQ0VFRkNENzgxOURCMzFGNzAwMzg3NkQ3IC8qIE1l
ZGlhUmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQk1MkYxMDg2MjE2MkI2RDgyMDA5QUM4MUUgLyog
TWl4ZWRDb250ZW50Q2hlY2tlci5jcHAgKi8sCiAJCQkJNTJGMTA4NjMxNjJCNkQ4MjAwOUFDODFF
IC8qIE1peGVkQ29udGVudENoZWNrZXIuaCAqLywKIAkJCQk5M0NDRjA1RjBBRjZDQTc2MDAwMThF
ODkgLyogTmF2aWdhdGlvbkFjdGlvbi5jcHAgKi8sCkBAIC0yNTMwNiwxMiArMjUzMTUsMTQgQEAK
IAkJCQlDREM4QjVBMzE4MDQ2MzQ3MDAxNkU2ODUgLyogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFNjBDRDY4MUE5MDBGQURB
NzUgLyogTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MzVF
RTZBMEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5LmggaW4gSGVhZGVycyAqLywK
KwkJCQlDRUVGQ0Q3QzE5REIzM0RDMDAzODc2RDcgLyogTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEUxOTU5MkEwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlh
UXVlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTRFMTk1OTJDMEEzOURBQ0MwMDIyMEZFNSAvKiBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0RTE5NTkyRTBBMzlEQUND
MDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNBOTRBMzkx
MjJEQUJBQzAwQTM3QkJDIC8qIE1lZGlhUXVlcnlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlE
M0E5NEEzQjEyMkRBQkFDMDBBMzdCQkMgLyogTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRDNBQTEwRjQxMjNBOThBQTAwOTIxNTJCIC8qIE1lZGlhUXVlcnlNYXRj
aGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRUVGQ0Q3QTE5REIzMUY3MDAzODc2RDcgLyogTWVk
aWFSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwRTA5MTkxODc1RUVGQzAw
M0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdGOTQ0MTYxODY0
RDA0NjAwNUQzMUNCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3NjM4QTk5MTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLmggaW4g
SGVhZGVycyAqLywKQEAgLTI4ODU5LDYgKzI4ODcwLDcgQEAKIAkJCQk0RTE5NTkyRDBBMzlEQUND
MDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEM0E5NEEz
ODEyMkRBQkFDMDBBMzdCQkMgLyogTWVkaWFRdWVyeUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRDNBQTEwRjMxMjNBOThBQTAwOTIxNTJCIC8qIE1lZGlhUXVlcnlNYXRjaGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUNFRUZDRDc5MTlEQjMxRjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNl
TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MEUwOTFCMTg3NUVGNzEwMDNBMUQzQyAv
KiBNZWRpYVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBRThDMDkxNzQ2Qjk1NzAw
NTMyRDc4IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2
MzhBOUExODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGZi
YTE5MjcuLjhiZTAwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgIk1lZGlhS2V5RXZlbnQuaCIKICNpbmNsdWRl
ICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5jbHVk
ZSAiTWVkaWFSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIu
aCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuLmgiCkBAIC01NTczLDE1ICs1NTc0LDYgQEAgVmVjdG9yPFJlZlB0cjxQ
bGF0Zm9ybVRleHRUcmFjaz4+IEhUTUxNZWRpYUVsZW1lbnQ6Om91dE9mQmFuZFRyYWNrU291cmNl
cygpCiB9CiAjZW5kaWYKIAotTWVkaWFQbGF5ZXJDbGllbnQ6OkNPUlNNb2RlIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyQ09SU01vZGUoKSBjb25zdAotewotICAgIGlmICghZmFzdEhhc0F0
dHJpYnV0ZShIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0cikpCi0gICAgICAgIHJldHVybiBVbnNw
ZWNpZmllZDsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmFzdEdldEF0dHJpYnV0ZShIVE1M
TmFtZXM6OmNyb3Nzb3JpZ2luQXR0ciksICJ1c2UtY3JlZGVudGlhbHMiKSkKLSAgICAgICAgcmV0
dXJuIFVzZUNyZWRlbnRpYWxzOwotICAgIHJldHVybiBBbm9ueW1vdXM7Ci19Ci0KIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJOZWVkc1NpdGVTcGVjaWZpY0hhY2tzKCkgY29uc3QK
IHsKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdzKCk7CkBAIC01
NjYxLDYgKzU2NTMsMTEgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogICAgIHJldHVybiBkb2N1bWVudCgp
LmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKK1Bhc3NSZWZQdHI8TWVkaWFQbGF5ZXJSZXNv
dXJjZUxvYWRlcj4gSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxv
YWRlcihzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudD4gY2xp
ZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFSZXNvdXJjZUxvYWRlcihkb2N1
bWVudCgpLCBmYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKSwgV1RG
Ojptb3ZlKGNsaWVudCkpKTsKK30KKwogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
clNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBk
b2N1bWVudCgpLmZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmlu
ZGV4IGRhZmJlNDQuLjJkYTliMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC01NTEsNyArNTUxLDYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgU3RyaW5nIG1l
ZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyBt
ZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ09SU01v
ZGUgbWVkaWFQbGF5ZXJDT1JTTW9kZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBi
b29sIG1lZGlhUGxheWVyTmVlZHNTaXRlU3BlY2lmaWNIYWNrcygpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyRG9jdW1lbnRIb3N0KCkgY29uc3Qgb3ZlcnJp
ZGU7CkBAIC01NjksNiArNTY4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQ
bGF5ZXJJc1BhdXNlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBs
YXllcklzTG9vcGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIG1lZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlcj4gbWVkaWFQbGF5
ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJSZXNvdXJj
ZUxvYWRlckNsaWVudD4pOwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9O
KQogICAgIHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBtZWRpYVBsYXllckdyYXBoaWNz
RGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjN2FkMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTAsMCArMSwxNDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFSZXNvdXJjZUxvYWRlci5oIgorCisjaWYgRU5B
QkxFKFZJREVPKQorI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgiCisjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIK
KyNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKKyNpbmNsdWRlICJEb2N1bWVu
dC5oIgorI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitNZWRpYVJlc291cmNlTG9hZGVyOjpNZWRpYVJlc291cmNlTG9hZGVyKERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIHN0ZDo6dW5pcXVlX3B0
cjxNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQpCisgICAgOiBNZWRpYVBs
YXllclJlc291cmNlTG9hZGVyKFdURjo6bW92ZShjbGllbnQpKQorICAgICwgbV9kb2N1bWVudChk
b2N1bWVudCkKKyAgICAsIG1fY3Jvc3NPcmlnaW5Nb2RlKGNyb3NzT3JpZ2luTW9kZSkKKyAgICAs
IG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayhmYWxzZSkKK3sKK30KKworTWVkaWFSZXNvdXJj
ZUxvYWRlcjo6fk1lZGlhUmVzb3VyY2VMb2FkZXIoKQoreworICAgIHN0b3AoKTsKK30KKworYm9v
bCBNZWRpYVJlc291cmNlTG9hZGVyOjpzdGFydChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIExvYWRPcHRpb25zIG9wdGlvbnMpCit7CisgICAgaWYgKG1fcmVzb3VyY2UpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgYnVmZmVyaW5nUG9saWN5
ID0gb3B0aW9ucyAmIExvYWRPcHRpb246OkJ1ZmZlckRhdGEgPyBXZWJDb3JlOjpCdWZmZXJEYXRh
IDogV2ViQ29yZTo6RG9Ob3RCdWZmZXJEYXRhOworICAgIFJlcXVlc3RPcmlnaW5Qb2xpY3kgY29y
c1BvbGljeSA9ICFtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKSA/IFBvdGVudGlhbGx5Q3Jvc3NP
cmlnaW5FbmFibGVkIDogVXNlRGVmYXVsdE9yaWdpblJlc3RyaWN0aW9uc0ZvclR5cGU7CisgICAg
U3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFscyA9IG1fY3Jvc3NPcmlnaW5Nb2RlLmlz
TnVsbCgpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG1fY3Jvc3NPcmlnaW5Nb2RlLCAidXNlLWNyZWRl
bnRpYWxzIikgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRl
bnRpYWxzOworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBjYWNoZVJlcXVlc3QocmVxdWVzdCwg
UmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIERvTm90U25pZmZDb250ZW50LCBi
dWZmZXJpbmdQb2xpY3ksIGFsbG93Q3JlZGVudGlhbHMsIERvTm90QXNrQ2xpZW50Rm9yQ3Jvc3NP
cmlnaW5DcmVkZW50aWFscywgRG9TZWN1cml0eUNoZWNrLCBjb3JzUG9saWN5LCBEb05vdEluY2x1
ZGVDZXJ0aWZpY2F0ZUluZm8pKTsKKworICAgIGlmICghbV9jcm9zc09yaWdpbk1vZGUuaXNOdWxs
KCkpCisgICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKGNhY2hlUmVxdWVzdC5t
dXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIG1fZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSwgYWxs
b3dDcmVkZW50aWFscyk7CisKKyAgICBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgPSBmYWxz
ZTsKKworICAgIC8vIFRPRE86IERlY2lkZSB3aGV0aGVyIHRvIHVzZSBwcmVmbGlnaHQgbW9kZSBm
b3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIChzZWUgaHR0cDovL3drYnVnLmNvbS8xMzE0ODQpLgor
ICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIgPSBtX2RvY3VtZW50LmNhY2hlZFJlc291
cmNlTG9hZGVyKCk7CisgICAgbV9yZXNvdXJjZSA9IGxvYWRlciA/IGxvYWRlci0+cmVxdWVzdFJh
d1Jlc291cmNlKGNhY2hlUmVxdWVzdCkgOiBudWxscHRyOworICAgIGlmICghbV9yZXNvdXJjZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KHRoaXMp
OworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhUmVzb3VyY2VMb2FkZXI6OnN0b3Ao
KQoreworICAgIGlmICghbV9yZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZXNv
dXJjZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgIG1fcmVzb3VyY2UgPSBudWxscHRyOworfQor
Cit2b2lkIE1lZGlhUmVzb3VyY2VMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnNM
b2FkaW5nKQoreworICAgIGlmIChtX3Jlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlLT5zZXRE
ZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpOworfQorCisvLyBDYWNoZWRSZXNvdXJjZUNsaWVu
dAordm9pZCBNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CisKKyAgICBS
ZWZQdHI8TWVkaWFSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKKyAgICBpZiAoIW1fY3Jv
c3NPcmlnaW5Nb2RlLmlzTnVsbCgpCisgICAgICAgICYmICFtX2RvY3VtZW50LnNlY3VyaXR5T3Jp
Z2luKCktPmNhblJlcXVlc3QocmVzb3VyY2UtPnJlc3BvbnNlKCkudXJsKCkpCisgICAgICAgICYm
ICFyZXNvdXJjZS0+cGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKG1fZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKSkpIHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4g
Y29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJDcm9zcy1vcmlnaW4gbWVkaWEgcmVzb3VyY2Ug
bG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpKTsK
KyAgICAgICAgbV9kb2N1bWVudC5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1
cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpOworICAgICAg
ICBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgbV9jbGllbnQt
PmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBjb25zb2xlTWVzc2FnZS5nZXQo
KSkpOworICAgICAgICBzdG9wKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Rp
ZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgPSAhbV9jcm9zc09yaWdpbk1vZGUuaXNOdWxsKCk7Cisg
ICAgbV9jbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOworfQorCit2b2lkIE1lZGlh
UmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNv
bnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQoreworICAgIEFTU0VSVChyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKKworICAgIFJlZlB0cjxNZWRpYVJlc291cmNlTG9hZGVyPiBwcm90ZWN0
KHRoaXMpOworICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoZGF0YSwgZGF0YUxlbmd0aCk7CisK
KyAgICBpZiAoU2hhcmVkQnVmZmVyKiBidWZmZXIgPSByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIo
KSA/IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRCdWZmZXIoKSA6IG51bGxwdHIp
CisgICAgICAgIG1fY2xpZW50LT5idWZmZXJSZWNlaXZlZChidWZmZXIpOworfQorCit2b2lkIE1l
ZGlhUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSkKK3sKKyAgICBBU1NFUlQocmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CisKKyAgICBSZWZQdHI8
TWVkaWFSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKKyAgICBpZiAocmVzb3VyY2UtPmxv
YWRGYWlsZWRPckNhbmNlbGVkKCkpCisgICAgICAgIG1fY2xpZW50LT5sb2FkRmFpbGVkKHJlc291
cmNlLT5yZXNvdXJjZUVycm9yKCkpOworICAgIGVsc2UKKyAgICAgICAgbV9jbGllbnQtPmxvYWRG
aW5pc2hlZChyZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSA/IHJlc291cmNlLT5yZXNvdXJjZUJ1
ZmZlcigpLT5zaGFyZWRCdWZmZXIoKSA6IG51bGxwdHIpOworICAgIHN0b3AoKTsKK30KKworI2lm
IFVTRShTT1VQKQorY2hhciogTWVkaWFSZXNvdXJjZUxvYWRlcjo6Z2V0T3JDcmVhdGVSZWFkQnVm
ZmVyKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgc2l6ZV90IHJlcXVlc3RlZFNpemUsIHNpemVf
dCYgYWN0dWFsU2l6ZSkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKKyAgICByZXR1cm4gbV9jbGllbnQtPmdldE9yQ3JlYXRlUmVhZEJ1ZmZl
cihyZXF1ZXN0ZWRTaXplLCBhY3R1YWxTaXplKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNl
TG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU4Yjk0NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5M
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFSZXNvdXJjZUxvYWRlcl9oCisjZGVmaW5lIE1lZGlh
UmVzb3VyY2VMb2FkZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIkNhY2hlZFJh
d1Jlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXllclJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FjaGVkUmF3UmVz
b3VyY2U7CitjbGFzcyBEb2N1bWVudDsKKworY2xhc3MgTWVkaWFSZXNvdXJjZUxvYWRlciBmaW5h
bCA6IHB1YmxpYyBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyLCBDYWNoZWRSYXdSZXNvdXJjZUNs
aWVudCB7CitwdWJsaWM6CisgICAgTWVkaWFSZXNvdXJjZUxvYWRlcihEb2N1bWVudCYsIGNvbnN0
IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJSZXNv
dXJjZUxvYWRlckNsaWVudD4pOworICAgIHZpcnR1YWwgfk1lZGlhUmVzb3VyY2VMb2FkZXIoKTsK
KworICAgIHZpcnR1YWwgYm9vbCBzdGFydChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBMb2FkT3B0
aW9ucykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IGJvb2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsgfQorCisgICAgLy8gQ2FjaGVkUmVzb3VyY2VD
bGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSos
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7
CisjaWYgVVNFKFNPVVApCisgICAgdmlydHVhbCBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIo
Q2FjaGVkUmVzb3VyY2UqLCBzaXplX3QgLypyZXF1ZXN0ZWRTaXplKi8sIHNpemVfdCYgLyphY3R1
YWxTaXplKi8pIG92ZXJyaWRlOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgRG9jdW1lbnQmIG1f
ZG9jdW1lbnQ7CisgICAgU3RyaW5nIG1fY3Jvc3NPcmlnaW5Nb2RlOworICAgIGJvb2wgbV9kaWRQ
YXNzQWNjZXNzQ29udHJvbENoZWNrOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBtX3Jlc291cmNlOworfTsKKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKaW5kZXggOGFkNzlkYi4uMTA1OGE5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTE1Myw2ICsxMTUz
LDExIEBAIENhY2hlZFJlc291cmNlTG9hZGVyKiBNZWRpYVBsYXllcjo6Y2FjaGVkUmVzb3VyY2VM
b2FkZXIoKQogICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9h
ZGVyKCk7CiB9CiAKK1Bhc3NSZWZQdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlcj4gTWVkaWFQ
bGF5ZXI6OmNyZWF0ZVJlc291cmNlTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclJl
c291cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQpCit7CisgICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlh
UGxheWVyQ3JlYXRlUmVzb3VyY2VMb2FkZXIoV1RGOjptb3ZlKGNsaWVudCkpOworfQorCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQogdm9pZCBNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFjayhQYXNz
UmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiB0cmFjaykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDdjNmFkZDYuLjcwOTFmYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRl
ci5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRy
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgpAQCAtMTQzLDggKzE0NCw2IEBAIHN0cnVj
dCBHcmFwaGljc0RldmljZUFkYXB0ZXI7CiAKIGNsYXNzIE1lZGlhUGxheWVyQ2xpZW50IHsKIHB1
YmxpYzoKLSAgICBlbnVtIENPUlNNb2RlIHsgVW5zcGVjaWZpZWQsIEFub255bW91cywgVXNlQ3Jl
ZGVudGlhbHMgfTsKLQogICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyQ2xpZW50KCkgeyB9CiAKICAg
ICAvLyB0aGUgbmV0d29yayBzdGF0ZSBoYXMgY2hhbmdlZApAQCAtMjI0LDcgKzIyMyw2IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyVXNlckFn
ZW50KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIENPUlNNb2RlIG1l
ZGlhUGxheWVyQ09SU01vZGUoKSBjb25zdCB7IHJldHVybiBVbnNwZWNpZmllZDsgfQogICAgIHZp
cnR1YWwgdm9pZCBtZWRpYVBsYXllckVudGVyRnVsbHNjcmVlbigpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllckV4aXRGdWxsc2NyZWVuKCkgeyB9CiAgICAgdmlydHVhbCBib29sIG1l
ZGlhUGxheWVySXNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTIzOCw2
ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVySXNQYXVzZWQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVySXNM
b29waW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIENhY2hlZFJlc291
cmNlTG9hZGVyKiBtZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVyKCkgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxNZWRpYVBsYXllclJlc291cmNlTG9hZGVyPiBtZWRp
YVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclJl
c291cmNlTG9hZGVyQ2xpZW50PikgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgYm9v
bCBkb2VzSGF2ZUF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmLCBBdG9taWNTdHJpbmcqID0g
MCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAg
LTUyNSw2ICs1MjQsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGVuZ2luZURlc2NyaXB0aW9uKCkg
Y29uc3Q7CiAKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIo
KTsKKyAgICBQYXNzUmVmUHRyPE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZVJlc291
cmNlTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50
Pik7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgdm9pZCBhZGRBdWRpb1RyYWNrKFBh
c3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmUyMTRmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJSZXNvdXJjZUxv
YWRlci5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlh
IFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXJfaAorI2RlZmluZSBNZWRpYVBsYXllclJlc291cmNl
TG9hZGVyX2gKKworI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBNZWRpYVBsYXllclJl
c291cmNlTG9hZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclJl
c291cmNlTG9hZGVyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNl
aXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFS
ZWNlaXZlZChjb25zdCBjaGFyKiwgaW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyUmVj
ZWl2ZWQoU2hhcmVkQnVmZmVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xD
aGVja0ZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxv
YWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsb2Fk
RmluaXNoZWQoU2hhcmVkQnVmZmVyKikgeyB9CisjaWYgVVNFKFNPVVApCisgICAgdmlydHVhbCBj
aGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IC8qcmVxdWVzdGVkU2l6ZSovLCBzaXpl
X3QmIC8qYWN0dWFsU2l6ZSovKSB7IHJldHVybiBudWxscHRyOyB9OworI2VuZGlmCit9OworCitj
bGFzcyBNZWRpYVBsYXllclJlc291cmNlTG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFQ
bGF5ZXJSZXNvdXJjZUxvYWRlcj4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxh
eWVyUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBlbnVtIExvYWRPcHRpb24geworICAgICAgICBCdWZmZXJEYXRhID0gMSA8PCAwLAorICAgIH07
CisgICAgdHlwZWRlZiB1bnNpZ25lZCBMb2FkT3B0aW9uczsKKworICAgIHZpcnR1YWwgfk1lZGlh
UGxheWVyUmVzb3VyY2VMb2FkZXIoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBzdGFydChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBMb2FkT3B0aW9ucykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
dG9wKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCkgeyB9Cisg
ICAgdmlydHVhbCBib29sIGRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2soKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlcihz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudD4gY2xpZW50KQor
ICAgICAgICA6IG1fY2xpZW50KFdURjo6bW92ZShjbGllbnQpKQorICAgIHsKKyAgICB9CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlckNsaWVudD4gbV9jbGll
bnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGQzZjU3YWMuLjNk
NDIzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBA
IC0yMiwyMiArMjIsMTcgQEAKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikK
IAotI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgiCi0jaW5jbHVkZSAiQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0LmgiCi0jaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAi
R1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5j
bHVkZSAiTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDxn
c3QvYXBwL2dzdGFwcHNyYy5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KQEAgLTUxLDQ4ICs0Niwz
NCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotZW51bSBDT1JTQWNjZXNzQ2hlY2tS
ZXN1bHQgewotICAgIENPUlNOb0NoZWNrLAotICAgIENPUlNTdWNjZXNzLAotICAgIENPUlNGYWls
dXJlCi19OwotCiBjbGFzcyBTdHJlYW1pbmdDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAg
U3RyZWFtaW5nQ2xpZW50KFdlYktpdFdlYlNyYyopOwogICAgICAgICB2aXJ0dWFsIH5TdHJlYW1p
bmdDbGllbnQoKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgbG9hZEZhaWxlZCgpIGNvbnN0ID0g
MDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCkgPSAwOwotCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICBjaGFyKiBjcmVhdGVSZWFkQnVmZmVyKHNpemVfdCByZXF1
ZXN0ZWRTaXplLCBzaXplX3QmIGFjdHVhbFNpemUpOwotICAgICAgICB2b2lkIGhhbmRsZVJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENPUlNBY2Nlc3NDaGVja1Jlc3Vs
dCk7CisgICAgICAgIHZvaWQgaGFuZGxlUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAgICAgICAgIHZvaWQgaGFuZGxlRGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqLCBp
bnQpOwogICAgICAgICB2b2lkIGhhbmRsZU5vdGlmeUZpbmlzaGVkKCk7CiAKICAgICAgICAgR3N0
RWxlbWVudCogbV9zcmM7CiB9OwogCi1jbGFzcyBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dCA6IHB1YmxpYyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCwgcHVibGljIFN0cmVhbWluZ0NsaWVu
dCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIENhY2hlZFJlc291cmNlU3RyZWFt
aW5nQ2xpZW50IGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUmVzb3VyY2VMb2FkZXJDbGllbnQs
IHB1YmxpYyBTdHJlYW1pbmdDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhY2hl
ZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50KTsKICAgICBwdWJsaWM6Ci0gICAgICAgIENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50KFdlYktpdFdlYlNyYyosIENhY2hlZFJlc291cmNlTG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTWVkaWFQbGF5ZXJDbGllbnQ6OkNPUlNNb2RlKTsK
KyAgICAgICAgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQoV2ViS2l0V2ViU3JjKik7CiAg
ICAgICAgIHZpcnR1YWwgfkNhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50KCk7CiAKLSAgICAg
ICAgLy8gU3RyZWFtaW5nQ2xpZW50IHZpcnR1YWwgbWV0aG9kcy4KLSAgICAgICAgdmlydHVhbCBi
b29sIGxvYWRGYWlsZWQoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xv
YWRpbmcoYm9vbCk7Ci0KICAgICBwcml2YXRlOgotICAgICAgICAvLyBDYWNoZWRSZXNvdXJjZUNs
aWVudCB2aXJ0dWFsIG1ldGhvZHMuCi0gICAgICAgIHZpcnR1YWwgY2hhciogZ2V0T3JDcmVhdGVS
ZWFkQnVmZmVyKENhY2hlZFJlc291cmNlKiwgc2l6ZV90IHJlcXVlc3RlZFNpemUsIHNpemVfdCYg
YWN0dWFsU2l6ZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhciosIGludCk7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwotCi0gICAg
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwot
ICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOworICAgICAgICAvLyBNZWRp
YVBsYXllclJlc291cmNlTG9hZGVyQ2xpZW50IHZpcnR1YWwgbWV0aG9kcy4KKyAgICAgICAgdmly
dHVhbCBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IHJlcXVlc3RlZFNpemUsIHNp
emVfdCYgYWN0dWFsU2l6ZSkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hl
ZChTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKIH07CiAKIGNsYXNzIFJlc291cmNlSGFuZGxlU3Ry
ZWFtaW5nQ2xpZW50IDogcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50LCBwdWJsaWMgU3RyZWFt
aW5nQ2xpZW50IHsKQEAgLTEwMiw4ICs4Myw4IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlU3RyZWFt
aW5nQ2xpZW50IDogcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50LCBwdWJsaWMgU3RyZWFtCiAg
ICAgICAgIHZpcnR1YWwgflJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50KCk7CiAKICAgICAg
ICAgLy8gU3RyZWFtaW5nQ2xpZW50IHZpcnR1YWwgbWV0aG9kcy4KLSAgICAgICAgdmlydHVhbCBi
b29sIGxvYWRGYWlsZWQoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xv
YWRpbmcoYm9vbCk7CisgICAgICAgIGJvb2wgbG9hZEZhaWxlZCgpIGNvbnN0OworICAgICAgICB2
b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBS
ZXNvdXJjZUhhbmRsZUNsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCkBAIC0xMjgsOSArMTA5LDEwIEBA
IHN0cnVjdCBfV2ViS2l0V2ViU3JjUHJpdmF0ZSB7CiAKICAgICBXZWJDb3JlOjpNZWRpYVBsYXll
ciogcGxheWVyOwogCi0gICAgU3RyZWFtaW5nQ2xpZW50KiBjbGllbnQ7CisgICAgUmVmUHRyPE1l
ZGlhUGxheWVyUmVzb3VyY2VMb2FkZXI+IGxvYWRlcjsKKyAgICBSZXNvdXJjZUhhbmRsZVN0cmVh
bWluZ0NsaWVudCogY2xpZW50OwogCi0gICAgQ09SU0FjY2Vzc0NoZWNrUmVzdWx0IGNvcnNBY2Nl
c3NDaGVjazsKKyAgICBib29sIGRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2s7CiAKICAgICBndWlu
dDY0IG9mZnNldDsKICAgICBndWludDY0IHNpemU7CkBAIC00MDIsNiArMzg0LDggQEAgc3RhdGlj
IHZvaWQgd2ViS2l0V2ViU3JjU3RvcChXZWJLaXRXZWJTcmMqIHNyYykKICAgICAgICAgcHJpdi0+
Y2xpZW50ID0gMDsKICAgICB9CiAKKyAgICBwcml2LT5sb2FkZXIgPSBudWxscHRyOworCiAgICAg
aWYgKHByaXYtPmJ1ZmZlcikgewogICAgICAgICB1bm1hcEdzdEJ1ZmZlcihwcml2LT5idWZmZXIu
Z2V0KCkpOwogICAgICAgICBwcml2LT5idWZmZXIuY2xlYXIoKTsKQEAgLTQ0OSw3ICs0MzMsNyBA
QCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTdGFydChXZWJLaXRXZWJTcmMqIHNyYykKIAogICAg
IEdNdXRleExvY2tlciBsb2NrZXIoKkdTVF9PQkpFQ1RfR0VUX0xPQ0soc3JjKSk7CiAKLSAgICBw
cml2LT5jb3JzQWNjZXNzQ2hlY2sgPSBDT1JTTm9DaGVjazsKKyAgICBwcml2LT5kaWRQYXNzQWNj
ZXNzQ29udHJvbENoZWNrID0gZmFsc2U7CiAKICAgICBpZiAoIXByaXYtPnVyaSkgewogICAgICAg
ICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIk5vIFVSSSBwcm92aWRlZCIpOwpAQCAtNDU5LDYgKzQ0
Myw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNyYyogc3JjKQog
ICAgIH0KIAogICAgIEFTU0VSVCghcHJpdi0+Y2xpZW50KTsKKyAgICBBU1NFUlQoIXByaXYtPmxv
YWRlcik7CiAKICAgICBVUkwgdXJsID0gVVJMKFVSTCgpLCBwcml2LT51cmkpOwogCkBAIC00OTMs
MjAgKzQ3OCwyOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTdGFydChXZWJLaXRXZWJTcmMq
IHNyYykKICAgICAvLyBXZSBhbHdheXMgcmVxdWVzdCBJY2VjYXN0L1Nob3V0Y2FzdCBtZXRhZGF0
YSwganVzdCBpbiBjYXNlIC4uLgogICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiKTsKIAorICAgIGJvb2wgbG9hZEZhaWxlZCA9IHRy
dWU7CiAgICAgaWYgKHByaXYtPnBsYXllcikgewotICAgICAgICBpZiAoQ2FjaGVkUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciA9IHByaXYtPnBsYXllci0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSkKLSAg
ICAgICAgICAgIHByaXYtPmNsaWVudCA9IG5ldyBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dChzcmMsIGxvYWRlciwgcmVxdWVzdCwgcHJpdi0+cGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXll
ckNPUlNNb2RlKCkpOworICAgICAgICBwcml2LT5sb2FkZXIgPSBwcml2LT5wbGF5ZXItPmNyZWF0
ZVJlc291cmNlTG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdD
bGllbnQ+KHNyYykpOworICAgICAgICBpZiAocHJpdi0+bG9hZGVyKSB7CisgICAgICAgICAgICBN
ZWRpYVBsYXllclJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9ucyBsb2FkT3B0aW9ucyA9IDA7Cisg
ICAgICAgICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJibG9iIikpCisgICAgICAg
ICAgICAgICAgbG9hZE9wdGlvbnMgfD0gTWVkaWFQbGF5ZXJSZXNvdXJjZUxvYWRlcjo6TG9hZE9w
dGlvbjo6QnVmZmVyRGF0YTsKKyAgICAgICAgICAgIGxvYWRGYWlsZWQgPSAhcHJpdi0+bG9hZGVy
LT5zdGFydChyZXF1ZXN0LCBsb2FkT3B0aW9ucyk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAoIXByaXYtPmNsaWVudCkKKyAgICBpZiAoIXByaXYtPmxvYWRlcikgewogICAgICAgICBwcml2
LT5jbGllbnQgPSBuZXcgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQoc3JjLCByZXF1ZXN0
KTsKKyAgICAgICAgbG9hZEZhaWxlZCA9IHByaXYtPmNsaWVudC0+bG9hZEZhaWxlZCgpOworICAg
IH0KIAotICAgIGlmICghcHJpdi0+Y2xpZW50IHx8IHByaXYtPmNsaWVudC0+bG9hZEZhaWxlZCgp
KSB7CisgICAgaWYgKGxvYWRGYWlsZWQpIHsKICAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzcmMs
ICJGYWlsZWQgdG8gc2V0dXAgc3RyZWFtaW5nIGNsaWVudCIpOwogICAgICAgICBpZiAocHJpdi0+
Y2xpZW50KSB7CiAgICAgICAgICAgICBkZWxldGUgcHJpdi0+Y2xpZW50OwotICAgICAgICAgICAg
cHJpdi0+Y2xpZW50ID0gMDsKKyAgICAgICAgICAgIHByaXYtPmNsaWVudCA9IG51bGxwdHI7CiAg
ICAgICAgIH0KKyAgICAgICAgcHJpdi0+bG9hZGVyID0gbnVsbHB0cjsKICAgICAgICAgbG9ja2Vy
LnVubG9jaygpOwogICAgICAgICB3ZWJLaXRXZWJTcmNTdG9wKHNyYyk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTY4MCw2ICs2NzQsOCBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVkRGF0YU1h
aW5DYihXZWJLaXRXZWJTcmMqIHNyYykKIAogICAgIGlmIChwcml2LT5jbGllbnQpCiAgICAgICAg
IHByaXYtPmNsaWVudC0+c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7CisgICAgaWYgKHByaXYtPmxv
YWRlcikKKyAgICAgICAgcHJpdi0+bG9hZGVyLT5zZXREZWZlcnNMb2FkaW5nKGZhbHNlKTsKIH0K
IAogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTmVlZERhdGFDYihHc3RBcHBTcmMqLCBndWludCBs
ZW5ndGgsIGdwb2ludGVyIHVzZXJEYXRhKQpAQCAtNzEwLDYgKzcwNiw4IEBAIHN0YXRpYyB2b2lk
IHdlYktpdFdlYlNyY0Vub3VnaERhdGFNYWluQ2IoV2ViS2l0V2ViU3JjKiBzcmMpCiAKICAgICBp
ZiAocHJpdi0+Y2xpZW50KQogICAgICAgICBwcml2LT5jbGllbnQtPnNldERlZmVyc0xvYWRpbmco
dHJ1ZSk7CisgICAgaWYgKHByaXYtPmxvYWRlcikKKyAgICAgICAgcHJpdi0+bG9hZGVyLT5zZXRE
ZWZlcnNMb2FkaW5nKHRydWUpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNFbm91Z2hE
YXRhQ2IoR3N0QXBwU3JjKiwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC03NjcsNyArNzY1LDcgQEAg
dm9pZCB3ZWJLaXRXZWJTcmNTZXRNZWRpYVBsYXllcihXZWJLaXRXZWJTcmMqIHNyYywgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXIqIHBsYXllcikKIAogYm9vbCB3ZWJLaXRTcmNQYXNzZWRDT1JTQWNjZXNz
Q2hlY2soV2ViS2l0V2ViU3JjKiBzcmMpCiB7Ci0gICAgcmV0dXJuIHNyYy0+cHJpdi0+Y29yc0Fj
Y2Vzc0NoZWNrID09IENPUlNTdWNjZXNzOworICAgIHJldHVybiBzcmMtPnByaXYtPmRpZFBhc3NB
Y2Nlc3NDb250cm9sQ2hlY2s7CiB9CiAKIFN0cmVhbWluZ0NsaWVudDo6U3RyZWFtaW5nQ2xpZW50
KFdlYktpdFdlYlNyYyogc3JjKQpAQCAtNzk5LDE5ICs3OTcsMTUgQEAgY2hhciogU3RyZWFtaW5n
Q2xpZW50OjpjcmVhdGVSZWFkQnVmZmVyKHNpemVfdCByZXF1ZXN0ZWRTaXplLCBzaXplX3QmIGFj
dHVhbFNpemUKICAgICByZXR1cm4gZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIoYnVmZmVyKTsKIH0K
IAotdm9pZCBTdHJlYW1pbmdDbGllbnQ6OmhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENPUlNBY2Nlc3NDaGVja1Jlc3VsdCBjb3JzQWNjZXNz
Q2hlY2spCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxlUmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9
IFdFQktJVF9XRUJfU1JDKG1fc3JjKTsKICAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0g
c3JjLT5wcml2OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJSZWNlaXZlZCByZXNwb25z
ZTogJWQiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKIAotICAgIGlmIChyZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpID49IDQwMCB8fCBjb3JzQWNjZXNzQ2hlY2sgPT0gQ09SU0ZhaWx1cmUp
IHsKLSAgICAgICAgLy8gUmVjZWl2ZWQgZXJyb3IgY29kZSBvciBDT1JTIGNoZWNrIGZhaWxlZAot
ICAgICAgICBpZiAoY29yc0FjY2Vzc0NoZWNrID09IENPUlNGYWlsdXJlKQotICAgICAgICAgICAg
R1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBSRVNPVVJDRSwgUkVBRCwgKCJDcm9zcy1vcmlnaW4gc3Ry
ZWFtIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4i
KSwgKG51bGxwdHIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgR1NUX0VMRU1FTlRfRVJS
T1Ioc3JjLCBSRVNPVVJDRSwgUkVBRCwgKCJSZWNlaXZlZCAlZCBIVFRQIGVycm9yIGNvZGUiLCBy
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSwgKG51bGxwdHIpKTsKKyAgICBpZiAocmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKKyAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3Jj
LCBSRVNPVVJDRSwgUkVBRCwgKCJSZWNlaXZlZCAlZCBIVFRQIGVycm9yIGNvZGUiLCByZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpKSwgKG51bGxwdHIpKTsKICAgICAgICAgZ3N0X2FwcF9zcmNfZW5k
X29mX3N0cmVhbShwcml2LT5hcHBzcmMpOwogICAgICAgICB3ZWJLaXRXZWJTcmNTdG9wKHNyYyk7
CiAgICAgICAgIHJldHVybjsKQEAgLTgxOSw4ICs4MTMsNiBAQCB2b2lkIFN0cmVhbWluZ0NsaWVu
dDo6aGFuZGxlUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgQwogCiAgICAgR011dGV4TG9ja2VyIGxvY2tlcigqR1NUX09CSkVDVF9HRVRfTE9DSyhzcmMp
KTsKIAotICAgIHByaXYtPmNvcnNBY2Nlc3NDaGVjayA9IGNvcnNBY2Nlc3NDaGVjazsKLQogICAg
IGlmIChwcml2LT5zZWVrU291cmNlLmlzQWN0aXZlKCkpIHsKICAgICAgICAgR1NUX0RFQlVHX09C
SkVDVChzcmMsICJTZWVrIGluIHByb2dyZXNzLCBpZ25vcmluZyByZXNwb25zZSIpOwogICAgICAg
ICByZXR1cm47CkBAIC05OTIsNzggKzk4NCw1NCBAQCB2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFu
ZGxlTm90aWZ5RmluaXNoZWQoKQogICAgIH0KIH0KIAotQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdD
bGllbnQ6OkNhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50KFdlYktpdFdlYlNyYyogc3JjLCBD
YWNoZWRSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgTWVkaWFQbGF5ZXJDbGllbnQ6OkNPUlNNb2RlIGNvcnNNb2RlKQorQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OkNhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50KFdl
YktpdFdlYlNyYyogc3JjKQogICAgIDogU3RyZWFtaW5nQ2xpZW50KHNyYykKIHsKLSAgICBEYXRh
QnVmZmVyaW5nUG9saWN5IGJ1ZmZlcmluZ1BvbGljeSA9IHJlcXVlc3QudXJsKCkucHJvdG9jb2xJ
cygiYmxvYiIpID8gQnVmZmVyRGF0YSA6IERvTm90QnVmZmVyRGF0YTsKLSAgICBSZXF1ZXN0T3Jp
Z2luUG9saWN5IGNvcnNQb2xpY3kgPSBjb3JzTW9kZSAhPSBNZWRpYVBsYXllckNsaWVudDo6VW5z
cGVjaWZpZWQgPyBQb3RlbnRpYWxseUNyb3NzT3JpZ2luRW5hYmxlZCA6IFVzZURlZmF1bHRPcmln
aW5SZXN0cmljdGlvbnNGb3JUeXBlOwotICAgIFN0b3JlZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVu
dGlhbHMgPSBjb3JzTW9kZSA9PSBNZWRpYVBsYXllckNsaWVudDo6QW5vbnltb3VzID8gRG9Ob3RB
bGxvd1N0b3JlZENyZWRlbnRpYWxzIDogQWxsb3dTdG9yZWRDcmVkZW50aWFsczsKLSAgICBSZXNv
dXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBEb05vdFNuaWZmQ29udGVu
dCwgYnVmZmVyaW5nUG9saWN5LCBhbGxvd0NyZWRlbnRpYWxzLCBEb05vdEFza0NsaWVudEZvckNy
b3NzT3JpZ2luQ3JlZGVudGlhbHMsIERvU2VjdXJpdHlDaGVjaywgY29yc1BvbGljeSwgRG9Ob3RJ
bmNsdWRlQ2VydGlmaWNhdGVJbmZvKTsKLQotICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBjYWNo
ZVJlcXVlc3QocmVxdWVzdCwgb3B0aW9ucyk7Ci0KLSAgICBpZiAoY29yc01vZGUgIT0gTWVkaWFQ
bGF5ZXJDbGllbnQ6OlVuc3BlY2lmaWVkKSB7Ci0gICAgICAgIG1fb3JpZ2luID0gcmVzb3VyY2VM
b2FkZXItPmRvY3VtZW50KCkgPyByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSA6IG51bGxwdHI7Ci0gICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9s
KGNhY2hlUmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIG1fb3JpZ2luLmdldCgpLCBh
bGxvd0NyZWRlbnRpYWxzKTsKLSAgICB9Ci0KLSAgICAvLyBUT0RPOiBEZWNpZGUgd2hldGhlciB0
byB1c2UgcHJlZmxpZ2h0IG1vZGUgZm9yIGNyb3NzLW9yaWdpbiByZXF1ZXN0cyAoc2VlIGh0dHA6
Ly93a2J1Zy5jb20vMTMxNDg0KS4KLSAgICBtX3Jlc291cmNlID0gcmVzb3VyY2VMb2FkZXItPnJl
cXVlc3RSYXdSZXNvdXJjZShjYWNoZVJlcXVlc3QpOwotICAgIGlmIChtX3Jlc291cmNlKQotICAg
ICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQodGhpcyk7CiB9CiAKIENhY2hlZFJlc291cmNlU3Ry
ZWFtaW5nQ2xpZW50Ojp+Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQoKQogewotICAgIGlm
IChtX3Jlc291cmNlKSB7Ci0gICAgICAgIG1fcmVzb3VyY2UtPnJlbW92ZUNsaWVudCh0aGlzKTsK
LSAgICAgICAgbV9yZXNvdXJjZSA9IDA7Ci0gICAgfQogfQogCi1ib29sIENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50Ojpsb2FkRmFpbGVkKCkgY29uc3QKK2NoYXIqIENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50OjpnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IHJlcXVlc3RlZFNp
emUsIHNpemVfdCYgYWN0dWFsU2l6ZSkKIHsKLSAgICByZXR1cm4gIW1fcmVzb3VyY2U7Ci19Ci0K
LXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnNldERlZmVyc0xvYWRpbmcoYm9v
bCBkZWZlcnMpCi17Ci0gICAgaWYgKG1fcmVzb3VyY2UpCi0gICAgICAgIG1fcmVzb3VyY2UtPnNl
dERlZmVyc0xvYWRpbmcoZGVmZXJzKTsKKyAgICByZXR1cm4gY3JlYXRlUmVhZEJ1ZmZlcihyZXF1
ZXN0ZWRTaXplLCBhY3R1YWxTaXplKTsKIH0KIAotY2hhciogQ2FjaGVkUmVzb3VyY2VTdHJlYW1p
bmdDbGllbnQ6OmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihDYWNoZWRSZXNvdXJjZSosIHNpemVfdCBy
ZXF1ZXN0ZWRTaXplLCBzaXplX3QmIGFjdHVhbFNpemUpCit2b2lkIENhY2hlZFJlc291cmNlU3Ry
ZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQogewotICAgIHJldHVybiBjcmVhdGVSZWFkQnVmZmVyKHJlcXVlc3RlZFNpemUsIGFj
dHVhbFNpemUpOworICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1NS
QyhtX3NyYyktPnByaXY7CisgICAgcHJpdi0+ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayA9IHBy
aXYtPmxvYWRlci0+ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaygpOworICAgIGhhbmRsZVJlc3Bv
bnNlUmVjZWl2ZWQocmVzcG9uc2UpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50OjpkYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAg
ICBDT1JTQWNjZXNzQ2hlY2tSZXN1bHQgY29yc0FjY2Vzc0NoZWNrID0gQ09SU05vQ2hlY2s7Ci0g
ICAgaWYgKG1fb3JpZ2luKQotICAgICAgICBjb3JzQWNjZXNzQ2hlY2sgPSAobV9vcmlnaW4tPmNh
blJlcXVlc3QocmVzcG9uc2UudXJsKCkpIHx8IHJlc291cmNlLT5wYXNzZXNBY2Nlc3NDb250cm9s
Q2hlY2sobV9vcmlnaW4uZ2V0KCkpKSA/IENPUlNTdWNjZXNzIDogQ09SU0ZhaWx1cmU7Ci0gICAg
aGFuZGxlUmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSwgY29yc0FjY2Vzc0NoZWNrKTsKKyAgICBo
YW5kbGVEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6
OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsK
LSAgICBoYW5kbGVEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKTsKKyAgICBXZWJLaXRXZWJTcmMq
IHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUihzcmMs
IFJFU09VUkNFLCBSRUFELCAoIiVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4
KCkuZGF0YSgpKSwgKG51bGxwdHIpKTsKKyAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKHNy
Yy0+cHJpdi0+YXBwc3JjKTsKKyAgICB3ZWJLaXRXZWJTcmNTdG9wKHNyYyk7CiB9CiAKLXZvaWQg
Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRG
YWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgaWYgKHJlc291cmNlLT5s
b2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAgICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VC
S0lUX1dFQl9TUkMobV9zcmMpOworICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9T
UkMobV9zcmMpOwogCi0gICAgICAgIGlmICghcmVzb3VyY2UtPndhc0NhbmNlbGVkKCkpIHsKLSAg
ICAgICAgICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yID0gcmVzb3VyY2UtPnJlc291cmNl
RXJyb3IoKTsKLSAgICAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiSGF2ZSBmYWlsdXJl
OiAlcyIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAg
ICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihzcmMsIFJFU09VUkNFLCBGQUlMRUQsICgiJXMiLCBl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpLCAoMCkpOwotICAgICAg
ICB9Ci0gICAgICAgIGdzdF9hcHBfc3JjX2VuZF9vZl9zdHJlYW0oc3JjLT5wcml2LT5hcHBzcmMp
OwotICAgICAgICByZXR1cm47CisgICAgaWYgKCFlcnJvci5pc0NhbmNlbGxhdGlvbigpKSB7Cisg
ICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiSGF2ZSBmYWlsdXJlOiAlcyIsIGVycm9yLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIEdTVF9FTEVNRU5U
X0VSUk9SKHNyYywgUkVTT1VSQ0UsIEZBSUxFRCwgKCIlcyIsIGVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uKCkudXRmOCgpLmRhdGEoKSksIChudWxscHRyKSk7CiAgICAgfQogCisgICAgZ3N0X2Fw
cF9zcmNfZW5kX29mX3N0cmVhbShzcmMtPnByaXYtPmFwcHNyYyk7Cit9CisKK3ZvaWQgQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5pc2hlZChTaGFyZWRCdWZmZXIqKQorewog
ICAgIGhhbmRsZU5vdGlmeUZpbmlzaGVkKCk7CiB9CiAKQEAgLTExMDQsNyArMTA3Miw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJj
ZUhhbmRsZSosIFJlc291cmNlUmVxCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGll
bnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogewotICAgIGhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2Us
IENPUlNOb0NoZWNrKTsKKyAgICBoYW5kbGVSZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKTsKIH0K
IAogdm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCB1bnNpZ25lZCAvKiBsZW5ndGgg
Ki8sIGludCkK
</data>
<flag name="review"
          id="264327"
          type_id="1"
          status="+"
          setter="pnormand"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240270</attachid>
            <date>2014-10-22 06:27:47 -0700</date>
            <delta_ts>2014-10-22 06:27:47 -0700</delta_ts>
            <desc>Patch or landing</desc>
            <filename>wcore-media-resource-loader.diff</filename>
            <type>text/plain</type>
            <size>48041</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4YWY0MjliLi43OWRlZWE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMTAt
MjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHU3RyZWFtZXJdIERvIG5vdCB1c2UgQ2FjaGVkUmVzb3VyY2VMb2FkZXIsIFNlY3VyaXR5T3Jp
Z2luLCBSZXNvdXJjZUJ1ZmZlciBhbmQgb3RoZXIgV2ViQ29yZSB0eXBlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgUGhpbGlwcGUgTm9ybWFuZC4KKworICAgICAgICBVcGRhdGUgZXhwZWN0ZWQgcmVz
dWx0cyBvZiBodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZGVvLWNyb3NzLW9yaWdpbi1hY2Nlc3NmYWls
dXJlLmh0bWwsIHNpbmNlCisgICAgICAgIG5vdyB0aGUgZXJyb3IgaXMgYWxzbyBsb2dnZWQgaW4g
dGhlIGNvbnNvbGUuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZGVvLWNyb3Nz
LW9yaWdpbi1hY2Nlc3NmYWlsdXJlLWV4cGVjdGVkLnR4dDoKKwogMjAxNC0xMC0yMiAgVGlib3Ig
TWVzemFyb3MgIDx0bWVzemFyb3MudS1zemVnZWRAcGFydG5lci5zYW1zdW5nLmNvbT4KIAogICAg
ICAgICBNYXRjaCBzcGVjIGZvciBmb250LXdlaWdodDogYm9sZGVyfGxpZ2h0ZXIKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWFj
Y2Vzc2ZhaWx1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS92aWRlby1jcm9zcy1vcmlnaW4tYWNjZXNzZmFpbHVyZS1leHBlY3RlZC50eHQKaW5kZXggNDE1
Y2UxZS4uOWUyMjUwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS92aWRlby1jcm9zcy1vcmlnaW4tYWNjZXNzZmFpbHVyZS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4tYWNjZXNzZmFp
bHVyZS1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IENyb3Nz
LW9yaWdpbiBtZWRpYSByZXNvdXJjZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3Vy
Y2UgU2hhcmluZyBwb2xpY3kuCiBFVkVOVChlcnJvcikKIEVORCBPRiBURVNUCiAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGQ0OGU4NjYuLjkyYzA3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0xODA3LDYgKzE4MDcsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgbG9hZGVyL0ltYWdl
TG9hZGVyLmNwcAogICAgIGxvYWRlci9MaW5rTG9hZGVyLmNwcAogICAgIGxvYWRlci9Mb2FkZXJT
dHJhdGVneS5jcHAKKyAgICBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKICAgICBsb2Fk
ZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKICAgICBsb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5j
cHAKICAgICBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyM2Iz
ODUyLi40ZGRiNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsODYgQEAKIDIwMTQtMTAtMjIgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCisgICAgICAgIFtHU3Ry
ZWFtZXJdIERvIG5vdCB1c2UgQ2FjaGVkUmVzb3VyY2VMb2FkZXIsIFNlY3VyaXR5T3JpZ2luLCBS
ZXNvdXJjZUJ1ZmZlciBhbmQgb3RoZXIgV2ViQ29yZSB0eXBlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDY0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgUGhpbGlwcGUgTm9ybWFuZC4KKworICAgICAgICBNb3ZlIHRoZSBtZWRpYSByZXNvdXJjZSBs
b2FkZXIgdG8gYSBuZXcgY2xhc3MgaW4gV2ViQ29yZS9sb2FkZXIKKyAgICAgICAgdGhhdCBpbmhl
cml0cyBmcm9tIGEgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyIGNsYXNzIGRlZmluZWQgaW4K
KyAgICAgICAgdGhlIHBsYXRmb3JtIGxheWVyLiBUaGUgcGxhdGZvcm0gc3BlY2lmaWMgYmVoYXZp
b3VyIGlzIGltcGxlbWVudGVkCisgICAgICAgIHVzaW5nIGEgY2xpZW50IGFsc28gZGVmaW5lZCBp
biB0aGUgcGxhdGZvcm0gbGF5ZXIsIGltcGxlbWVudGVkIGJ5CisgICAgICAgIGV2ZXJ5IG1lZGlh
IGJhY2tlbmQsIGFuZCB1c2VkIGJ5IHRoZSBXZWJDb3JlIE1lZGlhUmVzb3VyY2VMb2FkZXIuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG5ldyBmaWxlcyB0byBjb21waWxhdGlvbi4K
KyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOiBEaXR0by4KKyAgICAg
ICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6IERpdHRvLgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyQ3JlYXRlUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICBDcmVh
dGUgYSBNZWRpYVJlc291cmNlTG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJDT1JTTW9kZSk6IERlbGV0ZWQuIFRoaXMgaXMKKyAgICAgICAgbm8g
bG9uZ2VyIHVzZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAg
ICogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6Ok1lZGlhUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6fk1lZGlhUmVzb3VyY2VMb2FkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6c3RhcnQpOiBTdGFydCBhIG5ldyBs
b2FkIGZvciB0aGUKKyAgICAgICAgZ2l2ZW4gcmVxdWVzdCBhbmQgbG9hZCBvcHRpb25zLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6c3RvcCk6IFN0b3AgdGhlIGxvYWQg
aWYgbmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6c2V0RGVm
ZXJzTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNw
b25zZVJlY2VpdmVkKTogSGFuZGxlIENPUlMKKyAgICAgICAgYWNjZXNzIGNoZWNrIGFuZCBub3Rp
ZnkgdGhlIGNsaWVudCBhYm91dCB0aGUgcmVzcG9uc2UuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOiBOb3RpZnkgdGhlIGNsaWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpnZXRPckNyZWF0ZVJlYWRC
dWZmZXIpOiBBc2sgdGhlCisgICAgICAgIGNsaWVudCB0byBjcmVhdGUgdGhlIHJlYWQgYnVmZmVy
LgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmg6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcik6IENhbGwKKyAgICAgICAgbWVkaWFQ
bGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcigpIGlmIHRoZXJlJ3MgYSBjbGllbnQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckNPUlNNb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXJDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50OjpidWZmZXJSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXJDbGllbnQ6OmFj
Y2Vzc0NvbnRyb2xDaGVja0ZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXJDbGllbnQ6OmxvYWRGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50Ojpsb2FkRmluaXNoZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50OjpnZXRPckNyZWF0ZVJl
YWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
Ojp+UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6UGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYktpdFdlYlNy
Y1N0b3ApOiBBbHNvIGRlbGV0ZSB0aGUgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLgorICAg
ICAgICAod2ViS2l0V2ViU3JjU3RhcnQpOiBDcmVhdGUgYSBuZXcgcmVzb3VyY2UgbG9hZGVyIHVz
aW5nCisgICAgICAgIE1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcigpIHdpdGggYSBu
ZXcKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQgYXMgY2xpZW50LgorICAg
ICAgICAod2ViS2l0V2ViU3JjTmVlZERhdGFNYWluQ2IpOiBDYWxsIHNldERlZmVyc0xvYWRpbmco
KSBmb3IgdGhlCisgICAgICAgIHJlc291cmNlIGxvYWRlciBpZiB0aGVyZSdzIG9uZS4KKyAgICAg
ICAgKHdlYktpdFdlYlNyY0Vub3VnaERhdGFNYWluQ2IpOiBEaXR0by4KKyAgICAgICAgKHdlYktp
dFNyY1Bhc3NlZENPUlNBY2Nlc3NDaGVjayk6IFJldHVybiBkaWRQYXNzQWNjZXNzQ29udHJvbENo
ZWNrLgorICAgICAgICAoU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVSZXNwb25zZVJlY2VpdmVkKTog
UmVtb3ZlIHRoZSBDT1JTIGNoZWNrCisgICAgICAgIHJlc3VsdCBwYXJhbWV0ZXIgc2luY2UgdGhh
dCdzIG5vdyBoYW5kbGVkIGJ5IE1lZGlhUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIChDYWNoZWRS
ZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQpOgor
ICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6On5DYWNoZWRSZXNvdXJjZVN0
cmVhbWluZ0NsaWVudCk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6
Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKTogVXBkYXRlIGRpZFBhc3NBY2Nlc3NDb250cm9sQ2hl
Y2suCisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjphY2Nlc3NDb250cm9s
Q2hlY2tGYWlsZWQpOiBMb2cgdGhlCisgICAgICAgIGVycm9yIGFuZCBzdG9wIHRoZSBsb2FkLgor
ICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGYWlsZWQpOiBMb2cg
dGhlIGVycm9yIGlmIGl0CisgICAgICAgIHdhcyBub3QgYSBjYW5jZWxsYXRpb24uCisgICAgICAg
IChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVkKToKKyAgICAgICAg
KFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnNldERlZmVyc0xvYWRpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6Om5vdGlmeUZp
bmlzaGVkKTogRGVsZXRlZC4KKworMjAxNC0xMC0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dUS10gTW92ZSBHdGtJbnB1dE1ldGhvZEZp
bHRlciBmcm9tIFBsYXRmb3JtIHRvIFdlYktpdDIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzg4NAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCBhOGE5MzgyLi5lNWMyZTBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTcyNDEs
NiArNzI0MSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsb2FkZXJcSW1hZ2VMb2Fk
ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXExpbmtMb2FkZXIu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXExvYWRlclN0cmF0ZWd5
LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxNZWRpYVJlc291cmNl
TG9hZGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxNaXhlZENv
bnRlbnRDaGVja2VyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxO
YXZpZ2F0aW9uQWN0aW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRl
clxOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCIgLz4KQEAgLTE5MjQxLDYgKzE5MjQyLDcgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxMaW5rTG9hZGVyLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcTGlua0xvYWRlckNsaWVudC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXExvYWRlclN0cmF0ZWd5LmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcTWVkaWFSZXNvdXJjZUxvYWRlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXE1peGVkQ29udGVudENoZWNrZXIuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxOYXZpZ2F0aW9uQWN0aW9uLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcTmF2aWdhdGlvblNjaGVkdWxlci5o
IiAvPgpAQCAtMTk1ODUsNiArMTk1ODcsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcUGF0aFRyYXZlcnNhbFN0YXRlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQYXR0ZXJuLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQbGF0Zm9ybUxheWVyLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXFBsYXRmb3JtVGltZVJhbmdlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUmVnaW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xSb3VuZGVkUmVjdC5oIiAvPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmlu
ZGV4IGMwZTMzZjMuLmRkYTE4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTkwMCw2ICs5MDAsOSBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXExvYWRlclN0cmF0ZWd5LmNwcCI+CiAg
ICAgICA8RmlsdGVyPmxvYWRlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXE1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIj4KKyAgICAg
IDxGaWx0ZXI+bG9hZGVyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxsb2FkZXJcTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAiPgogICAgICAgPEZp
bHRlcj5sb2FkZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTc5MTQsNiArNzkxNyw5
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcTG9hZGVyU3RyYXRlZ3kuaCI+
CiAgICAgICA8RmlsdGVyPmxvYWRlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXE1lZGlhUmVzb3VyY2VMb2FkZXIuaCI+CisgICAg
ICA8RmlsdGVyPmxvYWRlcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXE1peGVkQ29udGVudENoZWNrZXIuaCI+CiAgICAgICA8Rmls
dGVyPmxvYWRlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtODUyNiw2ICs4NTMyLDkg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBsYXRmb3Jt
TGF5ZXIuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3Jt
XGdyYXBoaWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQbGF0Zm9ybVRpbWVSYW5nZXMuaCI+CiAgICAgICA8
RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MWFkOWE4Zi4uOGIyZDJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTc1OSw2ICs1NzU5LDkgQEAKIAkJQ0VDQURGQ0UxNTM3
NzkxRDAwRTM3MDY4IC8qIFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDQURGQ0MxNTM3NzkxRDAwRTM3MDY4
IC8qIFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5oICovOyB9OwogCQlDRUNDRkMzQjE0MTk3M0Q1
MDAyQTBBQzEgLyogRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNDRkMzQTE0MTk3M0Q1MDAyQTBBQzEgLyogRGVj
b2RlRXNjYXBlU2VxdWVuY2VzLmggKi87IH07CiAJCUNFREExMkQ3MTUyQ0ExQ0IwMEQ5RTA4RCAv
KiBBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFREExMkQ2MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlDRUVGQ0Q3OTE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUVGQ0Q3NzE5
REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgKi87IH07CisJCUNFRUZD
RDdBMTlEQjMxRjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUVGQ0Q3ODE5REIzMUY3MDAzODc2
RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5oICovOyB9OworCQlDRUVGQ0Q3QzE5REIzM0RDMDAz
ODc2RDcgLyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcgLyog
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0VGNDE4Q0UxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdw
b3J0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENFRjQxOENDMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAg
Ki87IH07CiAJCUNFRjQxOENGMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VGNDE4Q0Qx
MTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRDAwMEVCQTIxMUJEQUZENDAwQzQ3NzI2
IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwMDBFQkEwMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxv
YWRlclN0YXRlTWFjaGluZS5jcHAgKi87IH07CkBAIC0xMzIzNCw2ICsxMzIzNyw5IEBACiAJCUNF
Q0NGQzNBMTQxOTczRDUwMDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFREExMkQ2MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRl
cm5hdGl2ZVRleHRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFRUM2
MDM0MTg3REQ5NjIwMDNFNDNCQiAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbklPUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbklPUy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUVGQ0Q3NzE5REIzMUY3MDAzODc2RDcg
LyogTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVJlc291cmNlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0VFRkNENzgxOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFSZXNvdXJjZUxvYWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcgLyog
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRUY0MThDQzExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlld3BvcnRBcmd1bWVu
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUY0MThDRDExNzk2NzhDMDA5
RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmlld3BvcnRBcmd1bWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDAwMEVCQTAxMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lTG9hZGVyU3RhdGVNYWNo
aW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDk0LDYgKzIwNTAwLDcg
QEAKIAkJCQlBOEZBNkU1QzBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAgKi8sCiAJCQkJ
QThGQTZFNUIwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCAqLywKIAkJCQkwNTYyRjk2MDE1
NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICovLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcgLyogUGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyLmggKi8sCiAJCQkJMDcyODQ3RTIxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRm
b3JtVGV4dFRyYWNrLmggKi8sCiAJCQkJMDcyODQ3RTMxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRm
b3JtVGV4dFRyYWNrTWVudS5oICovLAogCQkJCTA3NEU4MkI4MThBNjlGMEUwMDdFRjU0QyAvKiBQ
bGF0Zm9ybVRpbWVSYW5nZXMuY3BwICovLApAQCAtMjExNzksNiArMjExODYsOCBAQAogCQkJCTk4
NDI2NEVGMTJENTI4MEEwMDBEODhBNCAvKiBMaW5rTG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJNTFB
QkY2NEMxNjM5MkUyODAwMTMyQTdBIC8qIExvYWRlclN0cmF0ZWd5LmNwcCAqLywKIAkJCQk1MUU2
ODIwRjE2Mzg3MzAyMDAzQkJGM0MgLyogTG9hZGVyU3RyYXRlZ3kuaCAqLywKKwkJCQlDRUVGQ0Q3
NzE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgKi8sCisJCQkJQ0VF
RkNENzgxOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQk1
MkYxMDg2MjE2MkI2RDgyMDA5QUM4MUUgLyogTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAgKi8sCiAJ
CQkJNTJGMTA4NjMxNjJCNkQ4MjAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNrZXIuaCAqLywK
IAkJCQk5M0NDRjA1RjBBRjZDQTc2MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5jcHAgKi8s
CkBAIC0yNTMwNyw2ICsyNTMxNiw3IEBACiAJCQkJRDNBOTRBMzkxMjJEQUJBQzAwQTM3QkJDIC8q
IE1lZGlhUXVlcnlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlEM0E5NEEzQjEyMkRBQkFDMDBB
MzdCQkMgLyogTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNB
QTEwRjQxMjNBOThBQTAwOTIxNTJCIC8qIE1lZGlhUXVlcnlNYXRjaGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlDRUVGQ0Q3QTE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIE1lZGlhU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIE1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NjM4QTk5MTg4NDQ4NzIw
MEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLmggaW4gSGVhZGVycyAqLywKQEAgLTI1
NTA2LDYgKzI1NTE2LDcgQEAKIAkJCQk5MzVDNDc2ODA5QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZv
cm1LZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNTYyRjk2MTE1NzNGODhGMDAz
MUNBMTYgLyogUGxhdGZvcm1MYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU0NEY3ODkxNUNG
QjJBODAwQUYzM0E4IC8qIFBsYXRmb3JtTG9jYWxlLmggaW4gSGVhZGVycyAqLywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0VFRkNEN0MxOURCMzNEQzAwMzg3NkQ3IC8qIFBsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMyODcxQzAwQjIw
REVCNzAwNDkwMzVBIC8qIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MUJGNzAxMDBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5u
ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY5MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0
Zm9ybU1vdXNlRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjg4NTUsNiArMjg4NjYsNyBAQAog
CQkJCTRFMTk1OTJEMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUQzQTk0QTM4MTIyREFCQUMwMEEzN0JCQyAvKiBNZWRpYVF1ZXJ5TGlzdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlEM0FBMTBGMzEyM0E5OEFBMDA5MjE1MkIgLyogTWVkaWFR
dWVyeU1hdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0VFRkNENzkxOURCMzFGNzAwMzg3
NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwRTA5
MUIxODc1RUY3MTAwM0ExRDNDIC8qIE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDREFFOEMwOTE3NDZCOTU3MDA1MzJENzggLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9u
TWFuYWdlcklPUy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggMjA0ZDIwYy4uYTM3ZGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiTWVkaWFL
ZXlFdmVudC5oIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlF
dmFsdWF0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
TWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAj
aW5jbHVkZSAiUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIKQEAgLTU1ODUsMTUgKzU1ODYs
NiBAQCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4gSFRNTE1lZGlhRWxlbWVudDo6
b3V0T2ZCYW5kVHJhY2tTb3VyY2VzKCkKIH0KICNlbmRpZgogCi1NZWRpYVBsYXllckNsaWVudDo6
Q09SU01vZGUgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDT1JTTW9kZSgpIGNvbnN0Ci17
Ci0gICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKSkK
LSAgICAgICAgcmV0dXJuIFVuc3BlY2lmaWVkOwotICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShm
YXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKSwgInVzZS1jcmVkZW50
aWFscyIpKQotICAgICAgICByZXR1cm4gVXNlQ3JlZGVudGlhbHM7Ci0gICAgcmV0dXJuIEFub255
bW91czsKLX0KLQogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck5lZWRzU2l0ZVNw
ZWNpZmljSGFja3MoKSBjb25zdAogewogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50
KCkuc2V0dGluZ3MoKTsKQEAgLTU2NzMsNiArNTY2NSwxMSBAQCBDYWNoZWRSZXNvdXJjZUxvYWRl
ciogSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpCiAg
ICAgcmV0dXJuIGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIH0KIAorUGFzc1Jl
ZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyQ3JlYXRlUmVzb3VyY2VMb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlckNsaWVudD4gY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TWVkaWFSZXNvdXJjZUxvYWRlcihkb2N1bWVudCgpLCBmYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1l
czo6Y3Jvc3NvcmlnaW5BdHRyKSwgV1RGOjptb3ZlKGNsaWVudCkpKTsKK30KKwogYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkK
IHsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDEzZWE3YWQuLjJjZWI2ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC01NTIsNyArNTUyLDYgQEAgcHJpdmF0ZToK
IAogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgQ09SU01vZGUgbWVkaWFQbGF5ZXJDT1JTTW9kZSgpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyTmVlZHNTaXRlU3BlY2lmaWNI
YWNrcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyRG9j
dW1lbnRIb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC01NzAsNiArNTY5LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc1BhdXNlZCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzTG9vcGluZygpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1lZGlhUGxheWVyQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyPiBtZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVyKHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXJDbGllbnQ+KTsKIAogI2lmIFBMQVRG
T1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNl
QWRhcHRlciogbWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVkaWFQbGF5
ZXIqKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9N
ZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291
cmNlTG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDc1NmYx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEln
YWxpYSBTLkwKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlh
UmVzb3VyY2VMb2FkZXIuaCIKKworI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJDYWNoZWRS
YXdSZXNvdXJjZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZl
ci5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFSZXNvdXJjZUxvYWRlcjo6
TWVkaWFSZXNvdXJjZUxvYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgY3Jv
c3NPcmlnaW5Nb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
Q2xpZW50PiBjbGllbnQpCisgICAgOiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIoV1RGOjpt
b3ZlKGNsaWVudCkpCisgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV9jcm9zc09y
aWdpbk1vZGUoY3Jvc3NPcmlnaW5Nb2RlKQorICAgICwgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENo
ZWNrKGZhbHNlKQoreworfQorCitNZWRpYVJlc291cmNlTG9hZGVyOjp+TWVkaWFSZXNvdXJjZUxv
YWRlcigpCit7CisgICAgc3RvcCgpOworfQorCitib29sIE1lZGlhUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZE9wdGlvbnMgb3B0aW9ucykK
K3sKKyAgICBpZiAobV9yZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRGF0
YUJ1ZmZlcmluZ1BvbGljeSBidWZmZXJpbmdQb2xpY3kgPSBvcHRpb25zICYgTG9hZE9wdGlvbjo6
QnVmZmVyRGF0YSA/IFdlYkNvcmU6OkJ1ZmZlckRhdGEgOiBXZWJDb3JlOjpEb05vdEJ1ZmZlckRh
dGE7CisgICAgUmVxdWVzdE9yaWdpblBvbGljeSBjb3JzUG9saWN5ID0gIW1fY3Jvc3NPcmlnaW5N
b2RlLmlzTnVsbCgpID8gUG90ZW50aWFsbHlDcm9zc09yaWdpbkVuYWJsZWQgOiBVc2VEZWZhdWx0
T3JpZ2luUmVzdHJpY3Rpb25zRm9yVHlwZTsKKyAgICBTdG9yZWRDcmVkZW50aWFscyBhbGxvd0Ny
ZWRlbnRpYWxzID0gbV9jcm9zc09yaWdpbk1vZGUuaXNOdWxsKCkgfHwgZXF1YWxJZ25vcmluZ0Nh
c2UobV9jcm9zc09yaWdpbk1vZGUsICJ1c2UtY3JlZGVudGlhbHMiKSA/IEFsbG93U3RvcmVkQ3Jl
ZGVudGlhbHMgOiBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7CisgICAgQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0IGNhY2hlUmVxdWVzdChyZXF1ZXN0LCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2Vu
ZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIGJ1ZmZlcmluZ1BvbGljeSwgYWxsb3dDcmVk
ZW50aWFscywgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBEb1NlY3Vy
aXR5Q2hlY2ssIGNvcnNQb2xpY3ksIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbykpOworCisg
ICAgaWYgKCFtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKSkKKyAgICAgICAgdXBkYXRlUmVxdWVz
dEZvckFjY2Vzc0NvbnRyb2woY2FjaGVSZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwg
bV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLCBhbGxvd0NyZWRlbnRpYWxzKTsKKworICAgIG1f
ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayA9IGZhbHNlOworCisgICAgQ2FjaGVkUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciA9IG1fZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKKyAgICBt
X3Jlc291cmNlID0gbG9hZGVyID8gbG9hZGVyLT5yZXF1ZXN0UmF3UmVzb3VyY2UoY2FjaGVSZXF1
ZXN0KSA6IG51bGxwdHI7CisgICAgaWYgKCFtX3Jlc291cmNlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQodGhpcyk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgTWVkaWFSZXNvdXJjZUxvYWRlcjo6c3RvcCgpCit7CisgICAgaWYgKCFtX3Jl
c291cmNlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Jlc291cmNlLT5yZW1vdmVDbGllbnQo
dGhpcyk7CisgICAgbV9yZXNvdXJjZSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTWVkaWFSZXNvdXJj
ZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVyc0xvYWRpbmcpCit7CisgICAgaWYg
KG1fcmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2UtPnNldERlZmVyc0xvYWRpbmcoZGVmZXJz
TG9hZGluZyk7Cit9CisKK3ZvaWQgTWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQoreworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3Vy
Y2UpOworCisgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7Cisg
ICAgaWYgKCFtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKQorICAgICAgICAmJiAhbV9kb2N1bWVu
dC5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJlc291cmNlLT5yZXNwb25zZSgpLnVybCgp
KQorICAgICAgICAmJiAhcmVzb3VyY2UtPnBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhtX2RvY3Vt
ZW50LnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKCJDcm9zcy1vcmlnaW4gbWVkaWEgcmVzb3VyY2Ug
bG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpOwor
ICAgICAgICBtX2RvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3Vy
aXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZS5nZXQoKSk7CisgICAgICAg
IG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayA9IGZhbHNlOworICAgICAgICBtX2NsaWVudC0+
YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIGNvbnNvbGVNZXNzYWdlLmdldCgp
KSk7CisgICAgICAgIHN0b3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZGlk
UGFzc0FjY2Vzc0NvbnRyb2xDaGVjayA9ICFtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKTsKKyAg
ICBtX2NsaWVudC0+cmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7Cit9CisKK3ZvaWQgTWVkaWFS
ZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit7CisgICAgQVNTRVJUKHJlc291cmNlID09
IG1fcmVzb3VyY2UpOworCisgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2VMb2FkZXI+IHByb3RlY3Qo
dGhpcyk7CisgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZChkYXRhLCBkYXRhTGVuZ3RoKTsKKwor
ICAgIGlmIChTaGFyZWRCdWZmZXIqIGJ1ZmZlciA9IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigp
ID8gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNoYXJlZEJ1ZmZlcigpIDogbnVsbHB0cikK
KyAgICAgICAgbV9jbGllbnQtPmJ1ZmZlclJlY2VpdmVkKGJ1ZmZlcik7Cit9CisKK3ZvaWQgTWVk
aWFSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
KQoreworICAgIEFTU0VSVChyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKworICAgIFJlZlB0cjxN
ZWRpYVJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOworICAgIGlmIChyZXNvdXJjZS0+bG9h
ZEZhaWxlZE9yQ2FuY2VsZWQoKSkKKyAgICAgICAgbV9jbGllbnQtPmxvYWRGYWlsZWQocmVzb3Vy
Y2UtPnJlc291cmNlRXJyb3IoKSk7CisgICAgZWxzZQorICAgICAgICBtX2NsaWVudC0+bG9hZEZp
bmlzaGVkKHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpID8gcmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCktPnNoYXJlZEJ1ZmZlcigpIDogbnVsbHB0cik7CisgICAgc3RvcCgpOworfQorCisjaWYg
VVNFKFNPVVApCitjaGFyKiBNZWRpYVJlc291cmNlTG9hZGVyOjpnZXRPckNyZWF0ZVJlYWRCdWZm
ZXIoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90
JiBhY3R1YWxTaXplKQoreworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09
IG1fcmVzb3VyY2UpOworICAgIHJldHVybiBtX2NsaWVudC0+Z2V0T3JDcmVhdGVSZWFkQnVmZmVy
KHJlcXVlc3RlZFNpemUsIGFjdHVhbFNpemUpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVk
aWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWI0ZGI4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIu
aApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVJlc291cmNlTG9hZGVyX2gKKyNkZWZpbmUgTWVkaWFS
ZXNvdXJjZUxvYWRlcl9oCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhY2hlZFJhd1Jl
c291cmNlOworY2xhc3MgRG9jdW1lbnQ7CisKK2NsYXNzIE1lZGlhUmVzb3VyY2VMb2FkZXIgZmlu
YWwgOiBwdWJsaWMgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLCBDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudCB7CitwdWJsaWM6CisgICAgTWVkaWFSZXNvdXJjZUxvYWRlcihEb2N1bWVudCYsIGNv
bnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyQ2xpZW50Pik7CisgICAgdmlydHVhbCB+TWVkaWFSZXNvdXJjZUxvYWRl
cigpOworCisgICAgdmlydHVhbCBib29sIHN0YXJ0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIExv
YWRPcHRpb25zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgYm9vbCBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrOyB9CisKKyAgICAvLyBDYWNoZWRSZXNv
dXJjZUNsaWVudAorICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVy
cmlkZTsKKyNpZiBVU0UoU09VUCkKKyAgICB2aXJ0dWFsIGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1
ZmZlcihDYWNoZWRSZXNvdXJjZSosIHNpemVfdCAvKnJlcXVlc3RlZFNpemUqLywgc2l6ZV90JiAv
KmFjdHVhbFNpemUqLykgb3ZlcnJpZGU7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBEb2N1bWVu
dCYgbV9kb2N1bWVudDsKKyAgICBTdHJpbmcgbV9jcm9zc09yaWdpbk1vZGU7CisgICAgYm9vbCBt
X2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2s7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7Cit9OworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA4YWQ3OWRiLi5lZDlkODgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xMTUzLDYg
KzExNTMsMTEgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIE1lZGlhUGxheWVyOjpjYWNoZWRSZXNv
dXJjZUxvYWRlcigpCiAgICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlhUGxheWVyQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKTsKIH0KIAorUGFzc1JlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+
IE1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQpCit7CisgICAgcmV0dXJuIG1fY2xp
ZW50Lm1lZGlhUGxheWVyQ3JlYXRlUmVzb3VyY2VMb2FkZXIoV1RGOjptb3ZlKGNsaWVudCkpOwor
fQorCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogdm9pZCBNZWRpYVBsYXllcjo6YWRkQXVkaW9U
cmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiB0cmFjaykKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDdjNmFkZDYuLmUy
YjI0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1
ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJy
YXkuaD4KQEAgLTE0Myw4ICsxNDQsNiBAQCBzdHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOwog
CiBjbGFzcyBNZWRpYVBsYXllckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgZW51bSBDT1JTTW9kZSB7
IFVuc3BlY2lmaWVkLCBBbm9ueW1vdXMsIFVzZUNyZWRlbnRpYWxzIH07Ci0KICAgICB2aXJ0dWFs
IH5NZWRpYVBsYXllckNsaWVudCgpIHsgfQogCiAgICAgLy8gdGhlIG5ldHdvcmsgc3RhdGUgaGFz
IGNoYW5nZWQKQEAgLTIyNCw3ICsyMjMsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFN0cmlu
ZyBtZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2
aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9Ci0gICAgdmlydHVhbCBDT1JTTW9kZSBtZWRpYVBsYXllckNPUlNNb2RlKCkgY29uc3Qg
eyByZXR1cm4gVW5zcGVjaWZpZWQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJFbnRl
ckZ1bGxzY3JlZW4oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJFeGl0RnVsbHNj
cmVlbigpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzRnVsbHNjcmVlbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0yMzgsNiArMjM2LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBtZWRpYVBsYXllcklzUGF1c2VkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzTG9vcGluZygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUxvYWRlciogbWVkaWFQbGF5ZXJDYWNo
ZWRSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBtZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9h
ZGVyKHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXJDbGllbnQ+KSB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBib29sIGRvZXNIYXZlQXR0cmlidXRlKGNv
bnN0IEF0b21pY1N0cmluZyYsIEF0b21pY1N0cmluZyogPSAwKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtNTI1LDYgKzUyNCw3IEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIENhY2hlZFJl
c291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcigpOworICAgIFBhc3NSZWZQdHI8UGxh
dGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBjcmVhdGVSZXNvdXJjZUxvYWRlcihzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50Pik7CiAKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAgICAgdm9pZCBhZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFj
a1ByaXZhdGU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNTg5MWQ4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC0w
LDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTAorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlcl9oCisjZGVmaW5lIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcl9o
CisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBS
ZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2Vp
dmVkKGNvbnN0IGNoYXIqLCBpbnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBidWZmZXJSZWNlaXZl
ZChTaGFyZWRCdWZmZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEZh
aWxlZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5p
c2hlZChTaGFyZWRCdWZmZXIqKSB7IH0KKyNpZiBVU0UoU09VUCkKKyAgICB2aXJ0dWFsIGNoYXIq
IGdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihzaXplX3QgLypyZXF1ZXN0ZWRTaXplKi8sIHNpemVfdCYg
LyphY3R1YWxTaXplKi8pIHsgcmV0dXJuIG51bGxwdHI7IH07CisjZW5kaWYKK307CisKK2NsYXNz
IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlcj4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIGVudW0gTG9hZE9wdGlvbiB7CisgICAgICAgIEJ1ZmZlckRhdGEgPSAxIDw8IDAsCisgICAg
fTsKKyAgICB0eXBlZGVmIHVuc2lnbmVkIExvYWRPcHRpb25zOworCisgICAgdmlydHVhbCB+UGxh
dGZvcm1NZWRpYVJlc291cmNlTG9hZGVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTG9hZE9wdGlvbnMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc3RvcCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpIHsg
fQorICAgIHZpcnR1YWwgYm9vbCBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKworcHJvdGVjdGVkOgorICAgIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlcihzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50PiBj
bGllbnQpCisgICAgICAgIDogbV9jbGllbnQoV1RGOjptb3ZlKGNsaWVudCkpCisgICAgeworICAg
IH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXJDbGll
bnQ+IG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBm
YzNmZTlmLi5hNTI4YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcApAQCAtMjIsMjIgKzIyLDE3IEBACiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShH
U1RSRUFNRVIpCiAKLSNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZS5oIgotI2luY2x1ZGUgIkNh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUu
aCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlUmVxdWVzdC5oIgotI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgog
I2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRp
ZXMuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbmNsdWRlICJNZWRpYVBsYXll
ci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
Ci0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNyYy5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KQEAg
LTUxLDQ4ICs0NiwzNCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotZW51bSBDT1JT
QWNjZXNzQ2hlY2tSZXN1bHQgewotICAgIENPUlNOb0NoZWNrLAotICAgIENPUlNTdWNjZXNzLAot
ICAgIENPUlNGYWlsdXJlCi19OwotCiBjbGFzcyBTdHJlYW1pbmdDbGllbnQgewogICAgIHB1Ymxp
YzoKICAgICAgICAgU3RyZWFtaW5nQ2xpZW50KFdlYktpdFdlYlNyYyopOwogICAgICAgICB2aXJ0
dWFsIH5TdHJlYW1pbmdDbGllbnQoKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgbG9hZEZhaWxl
ZCgpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9v
bCkgPSAwOwotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBjaGFyKiBjcmVhdGVSZWFkQnVmZmVy
KHNpemVfdCByZXF1ZXN0ZWRTaXplLCBzaXplX3QmIGFjdHVhbFNpemUpOwotICAgICAgICB2b2lk
IGhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENPUlNBY2Nl
c3NDaGVja1Jlc3VsdCk7CisgICAgICAgIHZvaWQgaGFuZGxlUmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZvaWQgaGFuZGxlRGF0YVJlY2VpdmVkKGNv
bnN0IGNoYXIqLCBpbnQpOwogICAgICAgICB2b2lkIGhhbmRsZU5vdGlmeUZpbmlzaGVkKCk7CiAK
ICAgICAgICAgR3N0RWxlbWVudCogbV9zcmM7CiB9OwogCi1jbGFzcyBDYWNoZWRSZXNvdXJjZVN0
cmVhbWluZ0NsaWVudCA6IHB1YmxpYyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCwgcHVibGljIFN0
cmVhbWluZ0NsaWVudCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50IGZpbmFsIDogcHVibGljIFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlckNsaWVudCwgcHVibGljIFN0cmVhbWluZ0NsaWVudCB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQpOwogICAgIHB1YmxpYzoKLSAg
ICAgICAgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQoV2ViS2l0V2ViU3JjKiwgQ2FjaGVk
UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBNZWRpYVBsYXllckNsaWVu
dDo6Q09SU01vZGUpOworICAgICAgICBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudChXZWJL
aXRXZWJTcmMqKTsKICAgICAgICAgdmlydHVhbCB+Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQoKTsKIAotICAgICAgICAvLyBTdHJlYW1pbmdDbGllbnQgdmlydHVhbCBtZXRob2RzLgotICAg
ICAgICB2aXJ0dWFsIGJvb2wgbG9hZEZhaWxlZCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZv
aWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKLQogICAgIHByaXZhdGU6Ci0gICAgICAgIC8vIENh
Y2hlZFJlc291cmNlQ2xpZW50IHZpcnR1YWwgbWV0aG9kcy4KLSAgICAgICAgdmlydHVhbCBjaGFy
KiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoQ2FjaGVkUmVzb3VyY2UqLCBzaXplX3QgcmVxdWVzdGVk
U2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFy
KiwgaW50KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKik7Ci0KLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+
IG1fcmVzb3VyY2U7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47Cisg
ICAgICAgIC8vIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlckNsaWVudCB2aXJ0dWFsIG1ldGhv
ZHMuCisgICAgICAgIHZpcnR1YWwgY2hhciogZ2V0T3JDcmVhdGVSZWFkQnVmZmVyKHNpemVfdCBy
ZXF1ZXN0ZWRTaXplLCBzaXplX3QmIGFjdHVhbFNpemUpIG92ZXJyaWRlOworICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgY2hhciosIGludCkg
b3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgbG9h
ZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBsb2FkRmluaXNoZWQoU2hhcmVkQnVmZmVyKikgb3ZlcnJpZGU7CiB9OwogCiBjbGFzcyBS
ZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudCA6IHB1YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVu
dCwgcHVibGljIFN0cmVhbWluZ0NsaWVudCB7CkBAIC0xMDIsOCArODMsOCBAQCBjbGFzcyBSZXNv
dXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudCA6IHB1YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVudCwg
cHVibGljIFN0cmVhbQogICAgICAgICB2aXJ0dWFsIH5SZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0Ns
aWVudCgpOwogCiAgICAgICAgIC8vIFN0cmVhbWluZ0NsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBsb2FkRmFpbGVkKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpOworICAgICAgICBib29sIGxvYWRGYWlsZWQoKSBj
b25zdDsKKyAgICAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgLy8gUmVzb3VyY2VIYW5kbGVDbGllbnQgdmlydHVhbCBtZXRob2RzLgpAQCAt
MTI4LDkgKzEwOSwxMCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlNyY1ByaXZhdGUgewogCiAgICAgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXIqIHBsYXllcjsKIAotICAgIFN0cmVhbWluZ0NsaWVudCogY2xpZW50
OworICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IGxvYWRlcjsKKyAgICBS
ZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudCogY2xpZW50OwogCi0gICAgQ09SU0FjY2Vzc0No
ZWNrUmVzdWx0IGNvcnNBY2Nlc3NDaGVjazsKKyAgICBib29sIGRpZFBhc3NBY2Nlc3NDb250cm9s
Q2hlY2s7CiAKICAgICBndWludDY0IG9mZnNldDsKICAgICBndWludDY0IHNpemU7CkBAIC00MDIs
NiArMzg0LDggQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU3RvcChXZWJLaXRXZWJTcmMqIHNy
YykKICAgICAgICAgcHJpdi0+Y2xpZW50ID0gMDsKICAgICB9CiAKKyAgICBwcml2LT5sb2FkZXIg
PSBudWxscHRyOworCiAgICAgaWYgKHByaXYtPmJ1ZmZlcikgewogICAgICAgICB1bm1hcEdzdEJ1
ZmZlcihwcml2LT5idWZmZXIuZ2V0KCkpOwogICAgICAgICBwcml2LT5idWZmZXIuY2xlYXIoKTsK
QEAgLTQ0OSw3ICs0MzMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTdGFydChXZWJLaXRX
ZWJTcmMqIHNyYykKIAogICAgIEdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2tlcigqR1NUX09CSkVD
VF9HRVRfTE9DSyhzcmMpKTsKIAotICAgIHByaXYtPmNvcnNBY2Nlc3NDaGVjayA9IENPUlNOb0No
ZWNrOworICAgIHByaXYtPmRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgPSBmYWxzZTsKIAogICAg
IGlmICghcHJpdi0+dXJpKSB7CiAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiTm8gVVJJ
IHByb3ZpZGVkIik7CkBAIC00NTksNiArNDQzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3Jj
U3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgfQogCiAgICAgQVNTRVJUKCFwcml2LT5jbGll
bnQpOworICAgIEFTU0VSVCghcHJpdi0+bG9hZGVyKTsKIAogICAgIFVSTCB1cmwgPSBVUkwoVVJM
KCksIHByaXYtPnVyaSk7CiAKQEAgLTQ5MywyMCArNDc4LDI5IEBAIHN0YXRpYyB2b2lkIHdlYktp
dFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNyYyogc3JjKQogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0
IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBqdXN0IGluIGNhc2UgLi4uCiAgICAgcmVxdWVz
dC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOwog
CisgICAgYm9vbCBsb2FkRmFpbGVkID0gdHJ1ZTsKICAgICBpZiAocHJpdi0+cGxheWVyKSB7Ci0g
ICAgICAgIGlmIChDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gcHJpdi0+cGxheWVyLT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpKQotICAgICAgICAgICAgcHJpdi0+Y2xpZW50ID0gbmV3IENh
Y2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50KHNyYywgbG9hZGVyLCByZXF1ZXN0LCBwcml2LT5w
bGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyQ09SU01vZGUoKSk7CisgICAgICAgIHByaXYtPmxv
YWRlciA9IHByaXYtPnBsYXllci0+Y3JlYXRlUmVzb3VyY2VMb2FkZXIoc3RkOjptYWtlX3VuaXF1
ZTxDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudD4oc3JjKSk7CisgICAgICAgIGlmIChwcml2
LT5sb2FkZXIpIHsKKyAgICAgICAgICAgIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9h
ZE9wdGlvbnMgbG9hZE9wdGlvbnMgPSAwOworICAgICAgICAgICAgaWYgKHJlcXVlc3QudXJsKCku
cHJvdG9jb2xJcygiYmxvYiIpKQorICAgICAgICAgICAgICAgIGxvYWRPcHRpb25zIHw9IFBsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6QnVmZmVyRGF0YTsKKyAgICAgICAg
ICAgIGxvYWRGYWlsZWQgPSAhcHJpdi0+bG9hZGVyLT5zdGFydChyZXF1ZXN0LCBsb2FkT3B0aW9u
cyk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIXByaXYtPmNsaWVudCkKKyAgICBpZiAo
IXByaXYtPmxvYWRlcikgewogICAgICAgICBwcml2LT5jbGllbnQgPSBuZXcgUmVzb3VyY2VIYW5k
bGVTdHJlYW1pbmdDbGllbnQoc3JjLCByZXF1ZXN0KTsKKyAgICAgICAgbG9hZEZhaWxlZCA9IHBy
aXYtPmNsaWVudC0+bG9hZEZhaWxlZCgpOworICAgIH0KIAotICAgIGlmICghcHJpdi0+Y2xpZW50
IHx8IHByaXYtPmNsaWVudC0+bG9hZEZhaWxlZCgpKSB7CisgICAgaWYgKGxvYWRGYWlsZWQpIHsK
ICAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzcmMsICJGYWlsZWQgdG8gc2V0dXAgc3RyZWFtaW5n
IGNsaWVudCIpOwogICAgICAgICBpZiAocHJpdi0+Y2xpZW50KSB7CiAgICAgICAgICAgICBkZWxl
dGUgcHJpdi0+Y2xpZW50OwotICAgICAgICAgICAgcHJpdi0+Y2xpZW50ID0gMDsKKyAgICAgICAg
ICAgIHByaXYtPmNsaWVudCA9IG51bGxwdHI7CiAgICAgICAgIH0KKyAgICAgICAgcHJpdi0+bG9h
ZGVyID0gbnVsbHB0cjsKICAgICAgICAgbG9ja2VyLnVubG9jaygpOwogICAgICAgICB3ZWJLaXRX
ZWJTcmNTdG9wKHNyYyk7CiAgICAgICAgIHJldHVybjsKQEAgLTY4MCw2ICs2NzQsOCBAQCBzdGF0
aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVkRGF0YU1haW5DYihXZWJLaXRXZWJTcmMqIHNyYykKIAog
ICAgIGlmIChwcml2LT5jbGllbnQpCiAgICAgICAgIHByaXYtPmNsaWVudC0+c2V0RGVmZXJzTG9h
ZGluZyhmYWxzZSk7CisgICAgaWYgKHByaXYtPmxvYWRlcikKKyAgICAgICAgcHJpdi0+bG9hZGVy
LT5zZXREZWZlcnNMb2FkaW5nKGZhbHNlKTsKIH0KIAogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3Jj
TmVlZERhdGFDYihHc3RBcHBTcmMqLCBndWludCBsZW5ndGgsIGdwb2ludGVyIHVzZXJEYXRhKQpA
QCAtNzEwLDYgKzcwNiw4IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0Vub3VnaERhdGFNYWlu
Q2IoV2ViS2l0V2ViU3JjKiBzcmMpCiAKICAgICBpZiAocHJpdi0+Y2xpZW50KQogICAgICAgICBw
cml2LT5jbGllbnQtPnNldERlZmVyc0xvYWRpbmcodHJ1ZSk7CisgICAgaWYgKHByaXYtPmxvYWRl
cikKKyAgICAgICAgcHJpdi0+bG9hZGVyLT5zZXREZWZlcnNMb2FkaW5nKHRydWUpOwogfQogCiBz
dGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNFbm91Z2hEYXRhQ2IoR3N0QXBwU3JjKiwgZ3BvaW50ZXIg
dXNlckRhdGEpCkBAIC03NjcsNyArNzY1LDcgQEAgdm9pZCB3ZWJLaXRXZWJTcmNTZXRNZWRpYVBs
YXllcihXZWJLaXRXZWJTcmMqIHNyYywgV2ViQ29yZTo6TWVkaWFQbGF5ZXIqIHBsYXllcikKIAog
Ym9vbCB3ZWJLaXRTcmNQYXNzZWRDT1JTQWNjZXNzQ2hlY2soV2ViS2l0V2ViU3JjKiBzcmMpCiB7
Ci0gICAgcmV0dXJuIHNyYy0+cHJpdi0+Y29yc0FjY2Vzc0NoZWNrID09IENPUlNTdWNjZXNzOwor
ICAgIHJldHVybiBzcmMtPnByaXYtPmRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2s7CiB9CiAKIFN0
cmVhbWluZ0NsaWVudDo6U3RyZWFtaW5nQ2xpZW50KFdlYktpdFdlYlNyYyogc3JjKQpAQCAtNzk5
LDE5ICs3OTcsMTUgQEAgY2hhciogU3RyZWFtaW5nQ2xpZW50OjpjcmVhdGVSZWFkQnVmZmVyKHNp
emVfdCByZXF1ZXN0ZWRTaXplLCBzaXplX3QmIGFjdHVhbFNpemUKICAgICByZXR1cm4gZ2V0R3N0
QnVmZmVyRGF0YVBvaW50ZXIoYnVmZmVyKTsKIH0KIAotdm9pZCBTdHJlYW1pbmdDbGllbnQ6Omhh
bmRsZVJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENP
UlNBY2Nlc3NDaGVja1Jlc3VsdCBjb3JzQWNjZXNzQ2hlY2spCit2b2lkIFN0cmVhbWluZ0NsaWVu
dDo6aGFuZGxlUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjKTsKICAg
ICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCiAgICAgR1NUX0RFQlVH
X09CSkVDVChzcmMsICJSZWNlaXZlZCByZXNwb25zZTogJWQiLCByZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpKTsKIAotICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCB8fCBj
b3JzQWNjZXNzQ2hlY2sgPT0gQ09SU0ZhaWx1cmUpIHsKLSAgICAgICAgLy8gUmVjZWl2ZWQgZXJy
b3IgY29kZSBvciBDT1JTIGNoZWNrIGZhaWxlZAotICAgICAgICBpZiAoY29yc0FjY2Vzc0NoZWNr
ID09IENPUlNGYWlsdXJlKQotICAgICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBSRVNP
VVJDRSwgUkVBRCwgKCJDcm9zcy1vcmlnaW4gc3RyZWFtIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9y
aWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKSwgKG51bGxwdHIpKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBSRVNPVVJDRSwgUkVBRCwgKCJS
ZWNlaXZlZCAlZCBIVFRQIGVycm9yIGNvZGUiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSwg
KG51bGxwdHIpKTsKKyAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsK
KyAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBSRVNPVVJDRSwgUkVBRCwgKCJSZWNlaXZl
ZCAlZCBIVFRQIGVycm9yIGNvZGUiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSwgKG51bGxw
dHIpKTsKICAgICAgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShwcml2LT5hcHBzcmMpOwog
ICAgICAgICB3ZWJLaXRXZWJTcmNTdG9wKHNyYyk7CiAgICAgICAgIHJldHVybjsKQEAgLTgxOSw4
ICs4MTMsNiBAQCB2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxlUmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQwogCiAgICAgR011dGV4TG9ja2VyPEdN
dXRleD4gbG9ja2VyKCpHU1RfT0JKRUNUX0dFVF9MT0NLKHNyYykpOwogCi0gICAgcHJpdi0+Y29y
c0FjY2Vzc0NoZWNrID0gY29yc0FjY2Vzc0NoZWNrOwotCiAgICAgaWYgKHByaXYtPnNlZWtTb3Vy
Y2UuaXNBY3RpdmUoKSkgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlNlZWsgaW4g
cHJvZ3Jlc3MsIGlnbm9yaW5nIHJlc3BvbnNlIik7CiAgICAgICAgIHJldHVybjsKQEAgLTk5Miw3
OCArOTg0LDU0IEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVOb3RpZnlGaW5pc2hlZCgp
CiAgICAgfQogfQogCi1DYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6Q2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQoV2ViS2l0V2ViU3JjKiBzcmMsIENhY2hlZFJlc291cmNlTG9hZGVy
KiByZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBNZWRpYVBs
YXllckNsaWVudDo6Q09SU01vZGUgY29yc01vZGUpCitDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0Ns
aWVudDo6Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAg
ICAgOiBTdHJlYW1pbmdDbGllbnQoc3JjKQogewotICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgYnVm
ZmVyaW5nUG9saWN5ID0gcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJibG9iIikgPyBCdWZmZXJE
YXRhIDogRG9Ob3RCdWZmZXJEYXRhOwotICAgIFJlcXVlc3RPcmlnaW5Qb2xpY3kgY29yc1BvbGlj
eSA9IGNvcnNNb2RlICE9IE1lZGlhUGxheWVyQ2xpZW50OjpVbnNwZWNpZmllZCA/IFBvdGVudGlh
bGx5Q3Jvc3NPcmlnaW5FbmFibGVkIDogVXNlRGVmYXVsdE9yaWdpblJlc3RyaWN0aW9uc0ZvclR5
cGU7Ci0gICAgU3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFscyA9IGNvcnNNb2RlID09
IE1lZGlhUGxheWVyQ2xpZW50OjpBbm9ueW1vdXMgPyBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlh
bHMgOiBBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBv
cHRpb25zKFNlbmRDYWxsYmFja3MsIERvTm90U25pZmZDb250ZW50LCBidWZmZXJpbmdQb2xpY3ks
IGFsbG93Q3JlZGVudGlhbHMsIERvTm90QXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFs
cywgRG9TZWN1cml0eUNoZWNrLCBjb3JzUG9saWN5LCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUlu
Zm8pOwotCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGNhY2hlUmVxdWVzdChyZXF1ZXN0LCBv
cHRpb25zKTsKLQotICAgIGlmIChjb3JzTW9kZSAhPSBNZWRpYVBsYXllckNsaWVudDo6VW5zcGVj
aWZpZWQpIHsKLSAgICAgICAgbV9vcmlnaW4gPSByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKSA/
IHJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsK
LSAgICAgICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2woY2FjaGVSZXF1ZXN0Lm11dGFi
bGVSZXNvdXJjZVJlcXVlc3QoKSwgbV9vcmlnaW4uZ2V0KCksIGFsbG93Q3JlZGVudGlhbHMpOwot
ICAgIH0KLQotICAgIC8vIFRPRE86IERlY2lkZSB3aGV0aGVyIHRvIHVzZSBwcmVmbGlnaHQgbW9k
ZSBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIChzZWUgaHR0cDovL3drYnVnLmNvbS8xMzE0ODQp
LgotICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZUxvYWRlci0+cmVxdWVzdFJhd1Jlc291cmNlKGNh
Y2hlUmVxdWVzdCk7Ci0gICAgaWYgKG1fcmVzb3VyY2UpCi0gICAgICAgIG1fcmVzb3VyY2UtPmFk
ZENsaWVudCh0aGlzKTsKIH0KIAogQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6On5DYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudCgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2UpIHsKLSAg
ICAgICAgbV9yZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotICAgICAgICBtX3Jlc291cmNl
ID0gMDsKLSAgICB9CiB9CiAKLWJvb2wgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6Omxv
YWRGYWlsZWQoKSBjb25zdAorY2hhciogQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6Omdl
dE9yQ3JlYXRlUmVhZEJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxT
aXplKQogewotICAgIHJldHVybiAhbV9yZXNvdXJjZTsKLX0KLQotdm9pZCBDYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudDo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKLXsKLSAgICBp
ZiAobV9yZXNvdXJjZSkKLSAgICAgICAgbV9yZXNvdXJjZS0+c2V0RGVmZXJzTG9hZGluZyhkZWZl
cnMpOworICAgIHJldHVybiBjcmVhdGVSZWFkQnVmZmVyKHJlcXVlc3RlZFNpemUsIGFjdHVhbFNp
emUpOwogfQogCi1jaGFyKiBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6Z2V0T3JDcmVh
dGVSZWFkQnVmZmVyKENhY2hlZFJlc291cmNlKiwgc2l6ZV90IHJlcXVlc3RlZFNpemUsIHNpemVf
dCYgYWN0dWFsU2l6ZSkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0
dXJuIGNyZWF0ZVJlYWRCdWZmZXIocmVxdWVzdGVkU2l6ZSwgYWN0dWFsU2l6ZSk7CisgICAgV2Vi
S2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfU1JDKG1fc3JjKS0+cHJpdjsKKyAg
ICBwcml2LT5kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gcHJpdi0+bG9hZGVyLT5kaWRQYXNz
QWNjZXNzQ29udHJvbENoZWNrKCk7CisgICAgaGFuZGxlUmVzcG9uc2VSZWNlaXZlZChyZXNwb25z
ZSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZl
ZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIENPUlNBY2Nlc3NDaGVja1Jl
c3VsdCBjb3JzQWNjZXNzQ2hlY2sgPSBDT1JTTm9DaGVjazsKLSAgICBpZiAobV9vcmlnaW4pCi0g
ICAgICAgIGNvcnNBY2Nlc3NDaGVjayA9IChtX29yaWdpbi0+Y2FuUmVxdWVzdChyZXNwb25zZS51
cmwoKSkgfHwgcmVzb3VyY2UtPnBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhtX29yaWdpbi5nZXQo
KSkpID8gQ09SU1N1Y2Nlc3MgOiBDT1JTRmFpbHVyZTsKLSAgICBoYW5kbGVSZXNwb25zZVJlY2Vp
dmVkKHJlc3BvbnNlLCBjb3JzQWNjZXNzQ2hlY2spOworICAgIGhhbmRsZURhdGFSZWNlaXZlZChk
YXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6YWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGhhbmRsZURhdGFSZWNl
aXZlZChkYXRhLCBsZW5ndGgpOworICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9T
UkMobV9zcmMpOworICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNyYywgUkVTT1VSQ0UsIFJFQUQsICgi
JXMiLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpLCAobnVsbHB0
cikpOworICAgIGdzdF9hcHBfc3JjX2VuZF9vZl9zdHJlYW0oc3JjLT5wcml2LT5hcHBzcmMpOwor
ICAgIHdlYktpdFdlYlNyY1N0b3Aoc3JjKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVh
bWluZ0NsaWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9p
ZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZhaWxlZChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAocmVzb3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVk
KCkpIHsKLSAgICAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYyk7
CisgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYyk7CiAKLSAgICAg
ICAgaWYgKCFyZXNvdXJjZS0+d2FzQ2FuY2VsZWQoKSkgewotICAgICAgICAgICAgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IgPSByZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpOwotICAgICAgICAg
ICAgR1NUX0VSUk9SX09CSkVDVChzcmMsICJIYXZlIGZhaWx1cmU6ICVzIiwgZXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIEdTVF9FTEVNRU5U
X0VSUk9SKHNyYywgUkVTT1VSQ0UsIEZBSUxFRCwgKCIlcyIsIGVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uKCkudXRmOCgpLmRhdGEoKSksICgwKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZ3N0X2Fw
cF9zcmNfZW5kX29mX3N0cmVhbShzcmMtPnByaXYtPmFwcHNyYyk7Ci0gICAgICAgIHJldHVybjsK
KyAgICBpZiAoIWVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpIHsKKyAgICAgICAgR1NUX0VSUk9SX09C
SkVDVChzcmMsICJIYXZlIGZhaWx1cmU6ICVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24o
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBSRVNPVVJD
RSwgRkFJTEVELCAoIiVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0
YSgpKSwgKG51bGxwdHIpKTsKICAgICB9CiAKKyAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFt
KHNyYy0+cHJpdi0+YXBwc3JjKTsKK30KKwordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0Ns
aWVudDo6bG9hZEZpbmlzaGVkKFNoYXJlZEJ1ZmZlciopCit7CiAgICAgaGFuZGxlTm90aWZ5Rmlu
aXNoZWQoKTsKIH0KIApAQCAtMTEwNCw3ICsxMDcyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZVN0
cmVhbWluZ0NsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VS
ZXEKIAogdm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
Ci0gICAgaGFuZGxlUmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSwgQ09SU05vQ2hlY2spOworICAg
IGhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOwogfQogCiB2b2lkIFJlc291cmNlSGFu
ZGxlU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IGNoYXIqIC8qIGRhdGEgKi8sIHVuc2lnbmVkIC8qIGxlbmd0aCAqLywgaW50KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>