<?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>138835</bug_id>
          
          <creation_ts>2014-11-18 08:00:21 -0800</creation_ts>
          <short_desc>Move Blob loading out of ResourceHandle</short_desc>
          <delta_ts>2017-10-14 16:54:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>ap</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1049484</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-11-18 08:00:21 -0800</bug_when>
    <thetext>As discussed in bug 109199 and bug 137005, it would be appropriate to move blob loading outside of ResourceHandle.
Probably blob loading should always be done in the Web Process and not in the Networking Process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049487</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-11-18 08:08:43 -0800</bug_when>
    <thetext>One approach is to subclass SubresourceLoader to specialize it for different resource types: blobs, data URLs...
That would mean moving ResourceHandle-specific ResourceLoader stuff in specialized classes for WK1 and WK2.
That may also mean merging ResourceLoader and SubresourceLoader in one abstract class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049747</commentid>
    <comment_count>2</comment_count>
      <attachid>241851</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-11-19 01:50:06 -0800</bug_when>
    <thetext>Created attachment 241851
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049749</commentid>
    <comment_count>3</comment_count>
      <attachid>241851</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-11-19 02:23:12 -0800</bug_when>
    <thetext>Comment on attachment 241851
WIP

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

&gt; Source/WebCore/loader/blob/BlobResourceLoader.h:17
&gt; +class BlobResourceLoader final : public SubresourceLoader {
&gt; +public:

Instead of subclassing SubresourceLoader I think it would be better to just put blob functionality to SubresourceLoader itself. It is ok to have extra members for that case.

We probably want to eliminate the ResourceLoader class hierarchy and just smash SubresourceLoader and ResourceLoader together eventually. The only other subclass is the obscure NetscapePlugInStreamLoader.

&gt; Source/WebCore/loader/blob/BlobResourceLoader.h:35
&gt; +    // FIXME: Integrate implementation directly within BlobResourceLoader
&gt; +    RefPtr&lt;BlobResourceHandle&gt; m_blobHandle;

Or maybe BlobResourceHandle just needs a better name. I think encapsulating blob specific functionality to a class makes sense, it just better to do it without subclassing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049750</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-11-19 02:27:32 -0800</bug_when>
    <thetext>&gt; Instead of subclassing SubresourceLoader I think it would be better to just
&gt; put blob functionality to SubresourceLoader itself. It is ok to have extra
&gt; members for that case.

... or really hooks for the blob functionality, along the lines of

SubresourceLoader::scheduleLoad() 
{
if (isBlob) {
   m_blobData-&gt;load();
   return;
}
...regular load</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050106</commentid>
    <comment_count>5</comment_count>
      <attachid>241938</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-11-20 03:30:26 -0800</bug_when>
    <thetext>Created attachment 241938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050115</commentid>
    <comment_count>6</comment_count>
      <attachid>241941</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-11-20 05:25:36 -0800</bug_when>
    <thetext>Created attachment 241941
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050198</commentid>
    <comment_count>7</comment_count>
      <attachid>241941</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-11-20 11:18:52 -0800</bug_when>
    <thetext>Comment on attachment 241941
Rebasing

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Move Blob loading in Web Process.

I thought that what we were discussing was moving Blob URL resolution to Web Process, not actual blob loading.

I don&apos;t see how it makes sense to handle blobs in Web Process, give that multiple processes can use the same blob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050616</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-11-21 15:50:10 -0800</bug_when>
    <thetext>The original idea behind blobs is that they are truly large binary objects. They exist primarily to avoid the need to move data between networking process and web process.

I think that blobs somewhat outgrew this vision, yet one way or another, they are still very much a networking concept. They are needed to deal with either uploads or downloads. 

One thing that we do need to do is actually implement this vision for XMLHttpRequest. Currently, we send all loaded data to WebProcess, and immediately send it back to create a blob. That&apos;s just crazy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050637</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-11-21 16:52:25 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 241941 [details]
&gt; Rebasing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=241941&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Move Blob loading in Web Process.
&gt; 
&gt; I thought that what we were discussing was moving Blob URL resolution to Web
&gt; Process, not actual blob loading.

Not sure about the exact meaning of the terms you are using.
The goal is to move to the Web Process the translation of a BlobData into a HTTP response. If we want to do that, the Web Process should have a way to get a BlobData from its URL. One way would be to extend BlobRegistryProxy like it is done for Blob size. 

&gt; I don&apos;t see how it makes sense to handle blobs in Web Process, give that
&gt; multiple processes can use the same blob.

Agreed.
I wonder though how often one blob created within a Web Process is actually used in another Web Process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050640</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-11-21 16:55:12 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; The original idea behind blobs is that they are truly large binary objects.
&gt; They exist primarily to avoid the need to move data between networking
&gt; process and web process.
&gt; 
&gt; I think that blobs somewhat outgrew this vision, yet one way or another,
&gt; they are still very much a networking concept. They are needed to deal with
&gt; either uploads or downloads. 
&gt; 
&gt; One thing that we do need to do is actually implement this vision for
&gt; XMLHttpRequest. Currently, we send all loaded data to WebProcess, and
&gt; immediately send it back to create a blob. That&apos;s just crazy.

Definitely.
IIRC, Blink solution would be something like adding a loading parameter to store  the data as a blob directly within the Networking Process. Probably data is still transferred to the Web Process/XHR so that its state gets updated (progress events for instance).

A different approach is to store BlobData in Web Processes, the Networking Process managing a mapping of all blob URLs with the one Web Process that owns the corresponding BlobData. Not sure the added complexity is worth the effort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050956</commentid>
    <comment_count>11</comment_count>
      <attachid>242187</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-11-25 00:01:12 -0800</bug_when>
    <thetext>Created attachment 242187
WIP: Moving BlobResourceHandle out of ResourceHandle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050963</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-11-25 01:02:07 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created attachment 242187 [details]
&gt; WIP: Moving BlobResourceHandle out of ResourceHandle

This patch introduces a new interface between ResourceLoader and ResourceHandle. It is basically an abstract version of ResourceHandle, tentatively called ResourceResolver.
I think we need a clean interface for resource resolution, ResourceHandle cannot be that interface obviously.

The plan would be the following:
- Introduce ResourceResolver interface and make ResourceHandle and BlobResourceHandle derive from it (WIP patch is about that)
- Add DataURL resolver using ResourceResolver interface

The next step would be to reconcile ResourceLoader loading w/o Networking process.
The steps would be:
- Split ResourceHandleClient in two: a generic ResourceResolverClient and a more specific ResourceHandleClient
- Make WebResourceLoader derive from ResourceResolver. Let it be stored as the ResourceLoader handle. WebResourceLoader would be made responsible of communicating with the networking process (defers loading, cancel... or on the other way didReceiveResponse...)
- Create a new  class (probably specific to WK1) that implements ResourceHandleClient and abstracts ResourceLoader from all ResourceHandleClient specific callbacks. Let it be stored as the ResourceLoader handle. This will allow ResourceLoader to implement ResourceResolverClient only
- Make other ResourceHandleClient implementing classes (PingLoader and ApplicationCacheGroup) derive from ResourceResolverClient only and use the WK1/WK2 ResourceResolver classes, not ResourceHandle directly.

A further step may consist in improving ResourceHandle directly, for instance:
- Changing names for ResourceHandle and ResourceHandleClient
- Splitting ResourceHandle in several platform-specific classes (cf, curl, soup), all implementing ResourceResolver or a subclass of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051821</commentid>
    <comment_count>13</comment_count>
      <attachid>242407</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-12-02 05:59:36 -0800</bug_when>
    <thetext>Created attachment 242407
Introducing generic ResourceHandle replacement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051829</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-12-02 07:38:28 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created attachment 242407 [details]
&gt; Introducing generic ResourceHandle replacement

This patch introduces a simple interface (ResourceResolver) from which BlobResourceHandle derives (and ResourceHandle should as well).
I did the exercise of migrating from ResourceHandle to ResourceResolver the different loaders (resource loader, network resource loader, ping and appcache loaders, not had time to port download stuff though).
This works smoothly. I can upload it somewhere if that helps the review process.

I am not cq? the patch as it probably fails compiling on Windows (missing project solution update).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052728</commentid>
    <comment_count>15</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-12-05 07:40:48 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created attachment 242407 [details]
&gt; Introducing generic ResourceHandle replacement

I uploaded commits that would do the migration from ResourceHandle/ResourceHandleClient to ResourceResolver/ResourceResolverClient at: https://github.com/canonresearchfrance/webkit/commits/resourcehandle-to-resourceresolver-migration

The branch HEAD is compiling and seems to run well for GTK.
It is compiling in Mac, seems to run well for mac-wk2, mac-wk1 is crashing.
Debug build is untested.

The commits that would be missing are:
- Making WebResourceLoader (or equivalent) to implement ResourceResolver interface
- Moving Ping and Appcache to use networking process for WK2 (through WebResourceLoader or equivalent)
- Unifying ResourceLoader WK1 and WK2 implementation by having a ResourceResolver in both cases, all callbacks going to ResourceLoader directly for WK1 and WK2).
- Clean-up ResourceLoader from WK1 specific stuff (moving ResourceHandleClient callback implementation somewhere else)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241851</attachid>
            <date>2014-11-19 01:50:06 -0800</date>
            <delta_ts>2014-11-20 03:30:20 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-138835-20141119105018.patch</filename>
            <type>text/plain</type>
            <size>48594</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIwNmM5MzUxYmYzYjFk
NzZjMTZlNTQzMjk1YWJhMjM4ZmU0ZDYyOS4uMjBiOWI0YzRiYzcwODg0MmQ0ZmQ3MzRmMDU3NWJl
OWNkMGE1ZThlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDE0LTExLTE5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgTW92ZWQg
QmxvYiByZXNvdWNlIGxvYWRpbmcgb3V0c2lkZSBvZiBSZXNvdXJjZUhhbmRsZS4KKyAgICAgICAg
TW92ZWQgYmxvYiBsb2FkaW5nIHRvIFdlYlByb2Nlc3MuCisKKyAgICAgICAgTW92ZSBCbG9iIGxv
YWRpbmcgb3V0IG9mIFJlc291cmNlSGFuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg4MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0cyBjb3ZlciB0aGlzIGNoYW5nZS4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJl
c291cmNlTG9hZCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OnN0YXJ0SGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREZWZl
cnNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXRIYW5kbGVE
ZWZlcnNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjp3aWxsU3dp
dGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsSGFu
ZGxlKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyOjpmcmFtZSk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpzY2hlZHVsZUxvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNhbmNlbElmTm90RmluaXNoaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRl
ci9ibG9iL0Jsb2JSZXNvdXJjZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
QmxvYlJlc291cmNlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291
cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2JSZXNvdXJjZUxvYWRlcjo6QmxvYlJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2JSZXNvdXJjZUxvYWRlcjo6fkJsb2JSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpCbG9iUmVzb3VyY2VMb2FkZXI6OnNjaGVkdWxlTG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpCbG9iUmVzb3VyY2VMb2FkZXI6OmluaXRIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6
QmxvYlJlc291cmNlTG9hZGVyOjpzdGFydEhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9i
UmVzb3VyY2VMb2FkZXI6OmNhbmNlbEhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVz
b3VyY2VMb2FkZXI6OnNldEhhbmRsZURlZmVyc0xvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9i
bG9iL0Jsb2JSZXNvdXJjZUxvYWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6Omxv
YWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckZpbGVCbG9iVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpyZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUFzeW5jKToK
KyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6OkJsb2JSZXNv
dXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6OmNhbmNl
bCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNl
T25TdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5
UmVzcG9uc2VPbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6
bm90aWZ5UmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxl
Ojpub3RpZnlGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OmRvTm90aWZ5RmluaXNoKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6
OmFwcGVuZEJsb2IpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VCbG9iKToKKwogMjAxNC0xMS0xNCAg
QW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW21hY10gT25seSBp
bWFnZXMgdGhhdCBhcmUgYWN0dWFsbHkgcHVyZ2VhYmxlIHNob3VsZCBiZSBhZHZlcnRpc2VkIGFz
IHN1Y2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTFmOWJhOTVkN2I2ZTBjNjVjNjc5OTIwY2ViNzU2Yjk4NWM1
NGNmMS4uMDBjNjBmYjA3ZjZiNDc4OGIyODgyYmI1MjgxZGFjM2I3ODhiNjVhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTExLTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZh
YmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgTW92ZWQgQmxvYiByZXNvdWNlIGxvYWRpbmcg
b3V0c2lkZSBvZiBSZXNvdXJjZUhhbmRsZS4KKyAgICAgICAgTW92ZWQgYmxvYiBsb2FkaW5nIHRv
IFdlYlByb2Nlc3MuCisKKyAgICAgICAgTW92ZSBCbG9iIGxvYWRpbmcgb3V0IG9mIFJlc291cmNl
SGFuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Mzg4MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VM
b2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNy
ZWF0ZUJsb2JSZWdpc3RyeSk6CisKIDIwMTQtMTEtMTQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRnJlcXVlbnQgY3Jhc2hlcyB1bmRlciBhY3Rpb25D
b250ZXh0Rm9yUmVzdWx0QXRQb2ludApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmMDEzNGEwYTRk
MGMxNmMzYWYxMDljZTgwNmIzNzcwMGJiYjM1MzQwLi44YjBiOWE3ZGJmNDYzODM2OThmZTYwMTRk
ZmQwZDI5ZTNlMGYyZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTAsNiArNTAsNyBAQCBz
ZXQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xvYWRl
ci9hcHBjYWNoZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vbG9hZGVyL2FyY2hpdmUiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L2xvYWRlci9hcmNoaXZlL21odG1sIgorICAgICIke1dFQkNPUkVfRElSfS9s
b2FkZXIvYmxvYiIKICAgICAiJHtXRUJDT1JFX0RJUn0vbG9hZGVyL2NhY2hlIgogICAgICIke1dF
QkNPUkVfRElSfS9sb2FkZXIvaWNvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vbWF0aG1sIgpAQCAt
MTgzMyw2ICsxODM0LDggQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9hcHBjYWNo
ZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAogICAgIGxvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBh
cnNlci5jcHAKIAorICAgIGxvYWRlci9ibG9iL0Jsb2JSZXNvdXJjZUxvYWRlci5jcHAKKwogICAg
IGxvYWRlci9hcmNoaXZlL0FyY2hpdmUuY3BwCiAgICAgbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZh
Y3RvcnkuY3BwCiAgICAgbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCBkMWYyNWJiNDZjMThmOGEzNjlmMGEzNzA0YzllNWFkNGYwNzc0YzIz
Li43NjExYjFlNmUzNjI1MWFkZWFjMzYwMjhmMzUxNTZjNzQ4MGM5MmVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtNzgwLDYgKzc4MCw3IEBAIF9fWk43V2ViQ29yZTE3U1FMaXRlVHJhbnNhY3Rp
b242Y29tbWl0RXYKIF9fWk43V2ViQ29yZTE3U1FMaXRlVHJhbnNhY3Rpb244cm9sbGJhY2tFdgog
X19aTjdXZWJDb3JlMTdTUUxpdGVUcmFuc2FjdGlvbkMxRVJOU18xNFNRTGl0ZURhdGFiYXNlRWIK
IF9fWk43V2ViQ29yZTE3U1FMaXRlVHJhbnNhY3Rpb25EMUV2CitfX1pON1dlYkNvcmUxN1N1YnJl
c291cmNlTG9hZGVyMTRjYWNoZWRSZXNvdXJjZUV2CiBfX1pON1dlYkNvcmUxN1N1YnJlc291cmNl
TG9hZGVyNmNyZWF0ZUVQTlNfNUZyYW1lRVBOU18xNENhY2hlZFJlc291cmNlRVJLTlNfMTVSZXNv
dXJjZVJlcXVlc3RFUktOU18yMVJlc291cmNlTG9hZGVyT3B0aW9uc0UKIF9fWk43V2ViQ29yZTE3
Y2FjaGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVy
ZUVQS05TMl85Q2xhc3NJbmZvRQogX19aTjdXZWJDb3JlMTdjb21wdXRlQ3VycmVudEFnZUVSS05T
XzE2UmVzb3VyY2VSZXNwb25zZUVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTc5OWFjNTRiZTAyOTY5MWRjOTA0ODczOWE0M2E2
YzRmMDYzNjY0OS4uY2FmMTM5ZTA4YTQwMzc0NTRiNDg0ZTI0YWY1ZWRkZDJiMzUxODY1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTQ1NSw2ICsxNDU1LDggQEAKIAkJNDFEMTY4RUUxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJl
ZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFEMTY4RTYxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICov
OyB9OwogCQk0MUQxNjkwNTEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUQxNjkwMzEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAg
Ki87IH07CiAJCTQxRDE2OTA2MTAyMzhCNjYwMDlCQzgyNyAvKiBKU1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUQxNjkwNDEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oICov
OyB9OworCQk0MUQ2RTgxMzFBMUJBNzQ0MDBBMzQzNTkgLyogQmxvYlJlc291cmNlTG9hZGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDZFODBG
MUExQkE3MTEwMEEzNDM1OSAvKiBCbG9iUmVzb3VyY2VMb2FkZXIuY3BwICovOyB9OworCQk0MUQ2
RTgxNDFBMUJBNzQ0MDBBMzQzNTkgLyogQmxvYlJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQ2RTgxMDFBMUJBNzExMDBBMzQz
NTkgLyogQmxvYlJlc291cmNlTG9hZGVyLmggKi87IH07CiAJCTQxRTFCMUQwMEZGNTk4NjkwMDU3
NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDQTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3Jr
ZXIuY3BwICovOyB9OwogCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3Jr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFC
MUNCMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovOyB9OwogCQk0MUUxQjFE
MzBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNEMEZGNTk4NjkwMDU3NkIzQiAvKiBT
aGFyZWRXb3JrZXIuY3BwICovOyB9OwpAQCAtODQ4Niw2ICs4NDg4LDggQEAKIAkJNDFEMTY4RTYx
MDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBTaGFyZWRXb3JrZXJUaHJlYWQuaDsgcGF0aCA9IHdvcmtlcnMvU2hh
cmVkV29ya2VyVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDE2OTAz
MTAyMzhCNjYwMDlCQzgyNyAvKiBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQxNjkwNDEwMjM4QjY2MDA5QkM4
MjcgLyogSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxRDZFODBGMUExQkE3MTEwMEEzNDM1OSAvKiBCbG9iUmVzb3VyY2VMb2Fk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQmxvYlJlc291cmNl
TG9hZGVyLmNwcDsgcGF0aCA9IGJsb2IvQmxvYlJlc291cmNlTG9hZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFENkU4MTAxQTFCQTcxMTAwQTM0MzU5IC8qIEJsb2JSZXNv
dXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCbG9iUmVzb3Vy
Y2VMb2FkZXIuaDsgcGF0aCA9IGJsb2IvQmxvYlJlc291cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdv
cmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBYnN0cmFjdFdv
cmtlci5jcHA7IHBhdGggPSB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIxQ0IwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29y
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFic3RyYWN0V29ya2VyLmg7
IHBhdGggPSB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRTFCMUNDMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gQWJzdHJhY3RXb3JrZXIuaWRsOyBwYXRoID0gd29ya2Vycy9B
YnN0cmFjdFdvcmtlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTYyNCw2
ICsxNTYyOCwxNSBAQAogCQkJcGF0aCA9IGpzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
IAkJfTsKKwkJNDFENkU4MTExQTFCQTcxNzAwQTM0MzU5IC8qIGJsb2IgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTQxRDZFODBGMUExQkE3MTEwMEEzNDM1
OSAvKiBCbG9iUmVzb3VyY2VMb2FkZXIuY3BwICovLAorCQkJCTQxRDZFODEwMUExQkE3MTEwMEEz
NDM1OSAvKiBCbG9iUmVzb3VyY2VMb2FkZXIuaCAqLywKKwkJCSk7CisJCQluYW1lID0gYmxvYjsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQzOTA0NkMyMTJEQTI1Q0UwMEFG
ODBBMiAvKiBtYXRobWwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtMjExNjIsNiArMjExNzUsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMUE4RjZCQjAw
REI1NUNEQzAwMURCNzk0IC8qIGFwcGNhY2hlICovLAogCQkJCTUxMkREOEU4MEQ5MUU2OTEwMDBG
ODlFRSAvKiBhcmNoaXZlICovLAorCQkJCTQxRDZFODExMUExQkE3MTcwMEEzNDM1OSAvKiBibG9i
ICovLAogCQkJCUE4RDJCMjUyMTI4N0E1NjAwMEFGNEREQSAvKiBjYWNoZSAqLywKIAkJCQk3RUU2
ODQ3MzEyRDI2RTU1MDBFNzk0MTUgLyogY2YgKi8sCiAJCQkJN0U0REUxMEIxOThCMTA4MTAwNTFD
QjAyIC8qIGNvY29hICovLApAQCAtMjU0MTgsNiArMjU0MzIsNyBAQAogCQkJCTk3OUY0M0Q0MTA3
NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOUM2RTVBNjBENzQ2NDU4MDA2NDQyRTkgLyogTmF2aWdhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMTI3MTlDNzBFRUVDMTY4MDBGNjEyMTMgLyogTmF2aWdhdG9yQmFzZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDFENkU4MTQxQTFCQTc0NDAwQTM0MzU5IC8qIEJsb2JSZXNvdXJjZUxvYWRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcxMTQ2MDQxNEVGMDA5QTAwNjc0RkQ5IC8qIE5hdmln
YXRvckdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkxQTE3RDE0RDFDMDA0
MjBBQTEgLyogTmF2aWdhdG9yVXNlck1lZGlhLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkx
QjE3RDE0RDFDMDA0MjBBQTEgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjczOTUsNiArMjc0MTAsNyBAQAogCQkJCUZFMTZDRkQzMTY5RDFERUQwMEQzQTBD
NyAvKiBEYXRhYmFzZUJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzY5REExNTA1
RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNlQmFja2VuZEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRkU2RjZBQUYxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNDFENkU4MTMxQTFCQTc0NDAwQTM0MzU5IC8qIEJsb2JSZXNv
dXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTE2Q0ZENTE2OUQxREVEMDBEM0Ew
QzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUJDNUYz
MTE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk3QkM2QTI3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA1MTk0MDhiNTdm
NjI2MTMyYTlhZTMyYmQ1MDQ3NTk4ZDNjNWQzN2M4Li40Yjc2NTEzMTY2YzFmZjViNTE3Mzg5ZGJh
NDIzMTQxMDQxMGYzODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAg
LTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogCiAjaW5jbHVkZSAiQVhP
YmplY3RDYWNoZS5oIgotI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVk
ZSAiQmFja0ZvcndhcmRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQmVmb3JlVW5sb2FkRXZlbnQu
aCIKICNpbmNsdWRlICJDYWNoZWRQYWdlLmgiCkBAIC0xMTMsNiArMTEyLDcgQEAKICNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlN1YmZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNp
bmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMu
aCIKICNpbmNsdWRlICJYTUxEb2N1bWVudFBhcnNlci5oIgpAQCAtMjY3MywxMSArMjY3Myw3IEBA
IHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1CiAKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKICAg
ICAgICAgQVNTRVJUKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKTsKLSAgICAgICAgCi0gICAgICAgIGlm
ICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkU3lu
Y2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7Ci0gICAgICAg
ICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShuZXR3b3JraW5nQ29udGV4dCgpLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0
LCBzdG9yZWRDcmVkZW50aWFscywgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKTsKLSAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KCktPm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpOwotICAgICAgICB9CisgICAgICAgIFN1YnJlc291cmNlTG9hZGVy
Ojpsb2FkU3luY2hyb25vdXNseSh0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBzdG9yZWRD
cmVkZW50aWFscywgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRh
KTsKICAgICB9CiAgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyht
X2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAtMSwgZXJyb3IpOwogICAgIHJldHVybiBpZGVudGlmaWVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApp
bmRleCA2ZDhiOWU3ZmU0OTZiYTk1NWExODg4N2ZlOWI2MDVkNzA2YzI4ZTk0Li5kY2JkNjljZGM0
OGI3NDA0ZTVmZTAwMzY1MGE2ZDcxOGY3Njg2YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApAQCAtMTEyLDExICsxMTIsMTEgQEAgUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjp+UmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkKIHsKIH0KIAotUGFz
c1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVs
ZVN1YnJlc291cmNlTG9hZChGcmFtZSogZnJhbWUsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMmIG9wdGlvbnMpCisvLyBGSVhNRTogTWVyZ2Ugc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQgYW5k
IHNjaGVkdWxlTG9hZCBtZXRob2RzCitib29sIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1
bGVTdWJyZXNvdXJjZUxvYWQoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKIHsKLSAgICBSZWZQ
dHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUo
ZnJhbWUsIHJlc291cmNlLCByZXF1ZXN0LCBvcHRpb25zKTsKICAgICBpZiAobG9hZGVyKQotICAg
ICAgICBzY2hlZHVsZUxvYWQobG9hZGVyLmdldCgpKTsKKyAgICAgICAgc2NoZWR1bGVMb2FkKGxv
YWRlcik7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIFNpbmNlIHdlIGRlZmVyIGxvYWRlciBp
bml0aWFsaXphdGlvbiB1bnRpbCBzY2hlZHVsaW5nIG9uIGlPUywgdGhlIGZyYW1lCiAgICAgLy8g
bG9hZCBkZWxlZ2F0ZSB0aGF0IHdvdWxkIGJlIGNhbGxlZCBpbiBTdWJyZXNvdXJjZUxvYWRlcjo6
Y3JlYXRlKCkgb24KQEAgLTEyNCw5ICsxMjQsOSBAQCBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9h
ZGVyPiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYQog
ICAgIC8vIGNhbGxlcnMgb2YgdGhpcyBtZXRob2QgaXMgdGhhdCBhIG51bGwgbG9hZGVyIGlzIHJl
dHVybmVkIGlmIHRoZSBsb2FkIHdhcwogICAgIC8vIGNhbmNlbGxlZCBieSBhIGZyYW1lIGxvYWQg
ZGVsZWdhdGUuCiAgICAgaWYgKCFsb2FkZXIgfHwgbG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0
ZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCi0gICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IFJlc291cmNlTG9hZFNjaGVk
dWxlcjo6c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiBmcmFtZSwgTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVk
dWxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCmlu
ZGV4IDViMzc0MmYzOTMxZjA5ZmMzNWE5MTZiNjUxYjI2MTk5NDFhZTMzNGQuLjQ1ZDQwNGE3MmQ4
YWVkOWZjODMzZDU5NTQ2NDY4MzhlMzE0M2FiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyIHsKIHB1YmxpYzoKICAgICBmcmllbmQgUmVzb3VyY2VMb2FkU2NoZWR1
bGVyKiByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQo
RnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlTG9hZGVyT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBz
Y2hlZHVsZVN1YnJlc291cmNlTG9hZChTdWJyZXNvdXJjZUxvYWRlciopOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gc2No
ZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiwgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJD
bGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIHNldERl
ZmVyc0xvYWRpbmcoUmVzb3VyY2VMb2FkZXIqLCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGU1MjJkM2NhZmQ4NzA4NWNmOWE3N2I3MzExNmY3MjI4
ZTZjOWQ2ZTcuLmZlM2U4NzQzZDZkZTVkYTc5ZWRhNzAzN2QxOWE4ZDMxNjRhYWU4NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTczLDcgKzE3MywxMiBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgfQogCiAgICAgaWYgKCFtX3JlYWNo
ZWRUZXJtaW5hbFN0YXRlKQotICAgICAgICBtX2hhbmRsZSA9IFJlc291cmNlSGFuZGxlOjpjcmVh
dGUobV9mcmFtZS0+bG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQoKSwgbV9yZXF1ZXN0LCB0aGlz
LCBtX2RlZmVyc0xvYWRpbmcsIG1fb3B0aW9ucy5zbmlmZkNvbnRlbnQoKSA9PSBTbmlmZkNvbnRl
bnQpOworICAgICAgICBzdGFydEhhbmRsZSgpOworfQorCit2b2lkIFJlc291cmNlTG9hZGVyOjpz
dGFydEhhbmRsZSgpCit7CisgICAgbV9oYW5kbGUgPSBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKG1f
ZnJhbWUtPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCksIG1fcmVxdWVzdCwgdGhpcywgbV9k
ZWZlcnNMb2FkaW5nLCBtX29wdGlvbnMuc25pZmZDb250ZW50KCkgPT0gU25pZmZDb250ZW50KTsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykK
QEAgLTE4Niw3ICsxOTEsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGlu
Zyhib29sIGRlZmVycykKICAgICAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVl
c3QoKTsKICAgICAgICAgc3RhcnQoKTsKICAgICB9CisgICAgc2V0SGFuZGxlRGVmZXJzTG9hZGlu
ZyhkZWZlcnMpOworfQogCit2b2lkIFJlc291cmNlTG9hZGVyOjpzZXRIYW5kbGVEZWZlcnNMb2Fk
aW5nKGJvb2wgZGVmZXJzKQorewogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJh
dGVneSgpLT5yZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2V0RGVmZXJzTG9hZGluZyh0aGlzLCBk
ZWZlcnMpOwogfQogCkBAIC0yMTAsOCArMjE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2ls
bFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKIHsKICAgICBBU1NFUlQoIW1fZG9jdW1lbnRM
b2FkZXItPmlzU3Vic3RpdHV0ZUxvYWRQZW5kaW5nKHRoaXMpKTsKICAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnJlbW92
ZSh0aGlzKTsKLSAgICBpZiAobV9oYW5kbGUpCi0gICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsK
KyAgICBjYW5jZWxIYW5kbGUoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9y
QnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmVkQnVmZmVyKiBi
dWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCkBAIC00MjgsMTAgKzQzNiw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKICAgICAgICAgICAgIG1faGFuZGxlLT5jbGVhckF1dGhlbnRpY2F0aW9uKCk7CiAKICAgICAg
ICAgbV9kb2N1bWVudExvYWRlci0+Y2FuY2VsUGVuZGluZ1N1YnN0aXR1dGVMb2FkKHRoaXMpOwot
ICAgICAgICBpZiAobV9oYW5kbGUpIHsKLSAgICAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsK
LSAgICAgICAgICAgIG1faGFuZGxlID0gMDsKLSAgICAgICAgfQorICAgICAgICBjYW5jZWxIYW5k
bGUoKTsKICAgICAgICAgY2xlYW51cEZvckVycm9yKG5vbk51bGxFcnJvcik7CiAgICAgfQogCkBA
IC00NDksNiArNDU0LDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CiB9CiAKK3ZvaWQgUmVz
b3VyY2VMb2FkZXI6OmNhbmNlbEhhbmRsZSgpCit7CisgICAgaWYgKG1faGFuZGxlKSB7CisgICAg
ICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKKyAgICAgICAgbV9oYW5kbGUgPSAwOworICAgIH0KK30K
KwogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsbGVkRXJyb3IoKQogewogICAg
IHJldHVybiBmcmFtZUxvYWRlcigpLT5jYW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCAxNjE1ZjZkOWJmOGRjMzRhNGU5YmNm
NDZiYjYzYjY4ZjZjZmRhMDFhLi4zYjlhYmYzYTRmNmI5Y2VlODUwODdhOTI0NGQ3N2FjYzJiZTll
ZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtNzAsNiArNzAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGlPU09yaWdp
bmFsUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIHJlcXVlc3QoKTsgfQogI2VuZGlmCiAKKyAgICBX
RUJDT1JFX0VYUE9SVCBGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lLmdldCgp
OyB9OwogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlcigpIGNvbnN0
OwogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9jdW1lbnRMb2FkZXIuZ2V0KCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxSZXF1
ZXN0OyB9CkBAIC0xNTEsNiArMTUyLDEwIEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgd2FzQ2Fu
Y2VsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9jYW5jZWxsYXRpb25TdGF0dXMgPj0gQ2FuY2VsbGVk
OyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRIYW5kbGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsSGFuZGxlKCk7CisgICAgdmlydHVhbCB2b2lkIHNldEhhbmRsZURlZmVyc0xvYWRpbmco
Ym9vbCk7CisKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciosIHVu
c2lnbmVkLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyYgb3B0aW9ucygpIHsgcmV0dXJuIG1fb3B0aW9uczsgfQpAQCAtMTYyLDYgKzE2Nyw3IEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVz
cG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsK
ICNlbmRpZgogCisgICAgLy8gRklYTUU6IE1vdmUgbV9oYW5kbGUgc3BlY2lmaWMgc3R1ZmYgdG8g
c2VwYXJhdGUgY2xhc3NlcyBkZWRpY2F0ZWQgdG8gV0sxIGFuZCBXSzIgUmVzb3VyY2VIYW5kbGUt
YmFzZWQgbG9hZGluZy4KICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IG1faGFuZGxlOwogICAg
IFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IG1fZG9j
dW1lbnRMb2FkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cAppbmRleCAyMDZkZDIyYjYzMzJhYzVmMTA5NjJlODY5NDJiNzkwODllMzkzMmNlLi5jMGY2N2U3
YWFjMzc3NWNkNzkwNzkxOGMzYzhkNmZhZDA3NDVmMDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI5LDIwICsyOSwyNiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAKKyNpbmNsdWRlICJB
cHBsaWNhdGlvbkNhY2hlSG9zdC5oIgorI2luY2x1ZGUgIkJsb2JSZXNvdXJjZUxvYWRlci5oIgog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAorCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPFJ1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrc0lPUy5oPgogI2VuZGlmCkBAIC04Niw2ICs5Miw5IEBAIFN1YnJlc291cmNlTG9hZGVy
Ojp+U3VicmVzb3VyY2VMb2FkZXIoKQogCiBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBT
dWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9h
ZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKKyAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElz
KCJibG9iIikpCisgICAgICAgIHJldHVybiBCbG9iUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFt
ZSwgcmVzb3VyY2UsIHJlcXVlc3QsIG9wdGlvbnMpOworCiAgICAgUmVmUHRyPFN1YnJlc291cmNl
TG9hZGVyPiBzdWJsb2FkZXIoYWRvcHRSZWYobmV3IFN1YnJlc291cmNlTG9hZGVyKGZyYW1lLCBy
ZXNvdXJjZSwgb3B0aW9ucykpKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKCFhcHBsaWNh
dGlvbklzV2ViUHJvY2VzcygpKSB7CkBAIC0xMDAsNyArMTA5LDI1IEBAIFBhc3NSZWZQdHI8U3Vi
cmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBD
YWNoZWRSZXNvCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBzdWJsb2FkZXIu
cmVsZWFzZSgpOwogfQotICAgIAorCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpsb2FkU3luY2hy
b25vdXNseShGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFscyBzdG9y
ZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9s
aWN5LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZl
Y3RvcjxjaGFyPiYgZGF0YSkKK3sKKyAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJi
bG9iIikpIHsKKyAgICAgICAgQmxvYlJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KHJlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoIWZyYW1lTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNh
dGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRTeW5jaHJvbm91c2x5KHJlcXVlc3QsIGVycm9yLCBy
ZXNwb25zZSwgZGF0YSkpIHsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0
cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZnJhbWVMb2FkZXItPm5ldHdvcmtp
bmdDb250ZXh0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHN0b3JlZENyZWRlbnRpYWxzLCBjbGll
bnRDcmVkZW50aWFsUG9saWN5LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOworICAgICAgICBmcmFt
ZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KHJlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7
CisgICAgfQorfQorCitib29sIFN1YnJlc291cmNlTG9hZGVyOjpzY2hlZHVsZUxvYWQoKQorewor
ICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+cmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKHRoaXMpOworfQorCiAj
aWYgUExBVEZPUk0oSU9TKQogYm9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkK
IHsKQEAgLTEyMyw3ICsxNTAsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpjYW5jZWxJZk5v
dEZpbmlzaGluZygpCiAgICAgaWYgKG1fc3RhdGUgIT0gSW5pdGlhbGl6ZWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlc291cmNlTG9hZGVyOjpjYW5jZWwoKTsKKyAgICBjYW5jZWwoKTsKIH0K
IAogYm9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6aW5pdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDMw
M2ZmZDlhYmQ3YjFiYjRkMDkyZDE4MDE5ZDZiMTExNWU5MTQyODkuLmE2NDM5ZjQ3NjA2OWQzZDg1
YWIyM2MzMzUxM2Q2YjRhZTVjNzI4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oCkBAIC00MiwxMiArNDIsMTQgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBQ
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIAotY2xh
c3MgU3VicmVzb3VyY2VMb2FkZXIgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkZXIgeworY2xh
c3MgU3VicmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVzb3VyY2VMb2FkZXIgewogcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBj
cmVhdGUoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOworICAgIHN0YXRpYyB2
b2lkIGxvYWRTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVudGlhbHMsIENsaWVudENyZWRlbnRpYWxQb2xp
Y3ksIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+Jik7CiAK
ICAgICB2aXJ0dWFsIH5TdWJyZXNvdXJjZUxvYWRlcigpOwogCisgICAgdmlydHVhbCBib29sIHNj
aGVkdWxlTG9hZCgpOwogICAgIHZvaWQgY2FuY2VsSWZOb3RGaW5pc2hpbmcoKTsKICAgICB2aXJ0
dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIG92ZXJyaWRlOwogICAgIENhY2hlZFJlc291
cmNlKiBjYWNoZWRSZXNvdXJjZSgpOwpAQCAtNTgsMTIgKzYwLDEzIEBAIHB1YmxpYzoKICAgICAv
LyBGSVhNRTogV2hhdCBpcyBhbiAiaU9TIiBvcmlnaW5hbCByZXF1ZXN0PyBXaHkgaXMgaXQgbmVj
ZXNzYXJ5PwogICAgIHZpcnR1YWwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpT1NPcmlnaW5hbFJl
cXVlc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lPU09yaWdpbmFsUmVxdWVzdDsgfQog
I2VuZGlmCi0KLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgU3VicmVzb3VyY2VMb2FkZXIoRnJh
bWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogCiAg
ICAgdmlydHVhbCBib29sIGluaXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAK
K3ByaXZhdGU6CisKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNT
ZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDljZmI1MDViMGJiNzk0ODY0ZWFjYmYxYWE5
ZTVhN2RmNWE1Y2QxZjUuLjBmNDIwZWI4YjZlZmJlZGI3MTY3MjNjM2ZhN2I5YjdlYzRiMWZjMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNl
TG9hCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpt
YXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRh
dGEpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7CiAgICAgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoc2hvdWxkTG9hZFJlc291cmNl
RnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwgcmVzb3VyY2UpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4
IDg2YzE3NzQwZTliNTRjMDkzMTI4MTgzZmRiMDE0YTBlYzEyY2Y3ZGYuLmZmMDk1MTMzZDRlODgy
NTJhYjdlNDExNzMzMWMyNjY5Y2M3N2IyYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC0xMjgsNyArMTI4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJl
TG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tG
b3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgICAg
ICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOworICAgICAgICBi
b29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3Vy
Y2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwogICAgICAg
ICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0
YSk7CiAKICAgICAgICAgYm9vbCBjYW5DYWNoZUluUGFnZUNhY2hlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYmxvYi9CbG9iUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2Jsb2IvQmxvYlJlc291cmNlTG9hZGVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
OWM4ZDk1ZTQyNDMwNGU0N2Q4MzE2Mzg3ZWRiYzhjYjkwOTU3NDIwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Jsb2IvQmxvYlJlc291cmNlTG9hZGVyLmNwcApAQCAt
MCwwICsxLDY3IEBACisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQmxvYlJlc291cmNl
TG9hZGVyLmgiCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1Bhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IEJsb2JSZXNvdXJjZUxvYWRl
cjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0
aW9ucykKK3sKKyAgICBSZWZQdHI8QmxvYlJlc291cmNlTG9hZGVyPiBsb2FkZXIoYWRvcHRSZWYo
bmV3IEJsb2JSZXNvdXJjZUxvYWRlcihmcmFtZSwgcmVzb3VyY2UsIG9wdGlvbnMpKSk7CisgICAg
aWYgKCFsb2FkZXItPmluaXRIYW5kbGUocmVxdWVzdCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgpOworfQorCit2b2lkIEJsb2JSZXNvdXJjZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
VmVjdG9yPGNoYXI+JiBkYXRhKQoreworICAgIEJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShyZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOworfQorCitC
bG9iUmVzb3VyY2VMb2FkZXI6OkJsb2JSZXNvdXJjZUxvYWRlcihGcmFtZSogZnJhbWUsIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25z
KQorICAgIDogU3VicmVzb3VyY2VMb2FkZXIoZnJhbWUsIHJlc291cmNlLCBvcHRpb25zKQorewor
fQorCitCbG9iUmVzb3VyY2VMb2FkZXI6On5CbG9iUmVzb3VyY2VMb2FkZXIoKQoreworfQorCiti
b29sIEJsb2JSZXNvdXJjZUxvYWRlcjo6c2NoZWR1bGVMb2FkKCkKK3sKKyAgICBzdGFydCgpOwor
ICAgIHJldHVybiBtX2Jsb2JIYW5kbGU7Cit9CisKK2Jvb2wgQmxvYlJlc291cmNlTG9hZGVyOjpp
bml0SGFuZGxlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpbml0KHJl
cXVlc3QpOworCisgICAgbV9ibG9iSGFuZGxlID0gQmxvYlJlc291cmNlSGFuZGxlOjpjcmVhdGVB
c3luYyhyZXF1ZXN0LCB0aGlzKTsKKworICAgIHJldHVybiBtX2Jsb2JIYW5kbGU7Cit9CisKKwor
dm9pZCBCbG9iUmVzb3VyY2VMb2FkZXI6OnN0YXJ0SGFuZGxlKCkKK3sKKyAgICBpZiAobV9ibG9i
SGFuZGxlKQorICAgICAgICBtX2Jsb2JIYW5kbGUtPnN0YXJ0KCk7Cit9CisKK3ZvaWQgQmxvYlJl
c291cmNlTG9hZGVyOjpjYW5jZWxIYW5kbGUoKQoreworICAgIGlmIChtX2Jsb2JIYW5kbGUpIHsK
KyAgICAgICAgbV9ibG9iSGFuZGxlLT5jYW5jZWwoKTsKKyAgICAgICAgbV9ibG9iSGFuZGxlID0g
bnVsbHB0cjsKKyAgICB9Cit9CisKK3ZvaWQgQmxvYlJlc291cmNlTG9hZGVyOjpzZXRIYW5kbGVE
ZWZlcnNMb2FkaW5nKGJvb2wpCit7CisgICAgLy8gV2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2RlIHNv
IHRoYXQgZGVmYXVsdCBSZXNvdXJjZUxvYWRlciBiZWhhdmlvciBkb2VzIG5vdCBoYXBwZW4uCisg
ICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgYXQgcmVzb3VyY2UgbG9hZGVyLgorICAgIC8vIEZJ
WE1FOiBDaGVjayB3aGV0aGVyIHdlIGNhbm5vdCBkZWZlciBibG9iIGxvYWRpbmcuCit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9ibG9iL0Jsb2JSZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Jsb2IvQmxvYlJlc291cmNlTG9hZGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzI1YmJmYTcyMzYzYWNmOWNlMmQxMDNmMmQ3N2NjYjVjNzBjMzU1YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9ibG9iL0Jsb2JSZXNvdXJjZUxvYWRl
ci5oCkBAIC0wLDAgKzEsNDEgQEAKKworCisjaWZuZGVmIEJsb2JSZXNvdXJjZUxvYWRlcl9oCisj
ZGVmaW5lIEJsb2JSZXNvdXJjZUxvYWRlcl9oCisKKyNpbmNsdWRlICJCbG9iUmVzb3VyY2VIYW5k
bGUuaCIKKyNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgorCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFJlc291cmNlRXJyb3I7CisKK2NsYXNzIEJsb2JSZXNvdXJjZUxvYWRl
ciBmaW5hbCA6IHB1YmxpYyBTdWJyZXNvdXJjZUxvYWRlciB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShGcmFtZSosIENhY2hlZFJlc291
cmNlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
Jik7CisgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3Rvcjxj
aGFyPiYpOworCisgICAgfkJsb2JSZXNvdXJjZUxvYWRlcigpOworCitwcm90ZWN0ZWQ6CisgICAg
QmxvYlJlc291cmNlTG9hZGVyKEZyYW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmKTsKKworICAgIGJvb2wgc2NoZWR1bGVMb2FkKCk7CisKKyAgICBib29s
IGluaXRIYW5kbGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBzdGFydEhhbmRs
ZSgpOworICAgIHZvaWQgY2FuY2VsSGFuZGxlKCk7CisgICAgdm9pZCBzZXRIYW5kbGVEZWZlcnNM
b2FkaW5nKGJvb2wpOworCitwcml2YXRlOgorICAgIC8vIEZJWE1FOiBJbnRlZ3JhdGUgaW1wbGVt
ZW50YXRpb24gZGlyZWN0bHkgd2l0aGluIEJsb2JSZXNvdXJjZUxvYWRlcgorICAgIFJlZlB0cjxC
bG9iUmVzb3VyY2VIYW5kbGU+IG1fYmxvYkhhbmRsZTsKKworfTsKKworfQorCisjZW5kaWYgLy8g
QmxvYlJlc291cmNlTG9hZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCmluZGV4IDRmNWY1YTRhNDUzY2VjOGZmNmRjNzMxNTFiNjVlM2ZiMjFl
MzVjYmUuLmExNDE3YWJkZGJiZDM1NGQzOGEwMjkxNDkyYmM2MDFlZjQ5YjFiOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzUsMTcg
KzM1LDE1IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJIVFRQ
SGVhZGVyTmFtZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNp
bmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
YXRlZ2llcy5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVk
ZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJVUkwuaCIKKwogI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpAQCAtMjcxLDggKzI2OSw4IEBAIHZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9h
ZGVyLCBjb25zdCBSZXNvCiAgICAgICAgIG1fZnJhZ21lbnRJZGVudGlmaWVyRm9yUmVxdWVzdCA9
IFN0cmluZygpOwogICAgIH0KIAotICAgIG1fbG9hZGVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvYWRlclN0cmF0ZWd5KCktPnJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJl
c291cmNlTG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwg
b3B0aW9ucyk7Ci0gICAgaWYgKCFtX2xvYWRlcikgeworICAgIG1fbG9hZGVyID0gU3VicmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZShjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdGhpcywgcmVx
dWVzdCwgb3B0aW9ucyk7CisgICAgaWYgKCEobV9sb2FkZXIgJiYgbV9sb2FkZXItPnNjaGVkdWxl
TG9hZCgpKSkgewogICAgICAgICBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuY3BwCmluZGV4IGYwOWI5ZWQzODdmNDY3MTk2MzlkMGRmMzJjOWY3Zjc1NmNm
ZDQwNmYuLmYzMjdhN2FiNjI1MjAyMjc4ODgwYWVlNzViNzk5MGFmZmQ1NjIxY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNw
cApAQCAtNTQsNiArNTQsNyBAQCBCbG9iUmVnaXN0cnlJbXBsOjp+QmxvYlJlZ2lzdHJ5SW1wbCgp
CiB7CiB9CiAKKy8qCiBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gY3JlYXRlUmVz
b3VyY2VIYW5kbGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRs
ZUNsaWVudCogY2xpZW50KQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJ
bXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmNyZWF0ZVJlc291cmNlSGFuZGxlKHJlcXVlc3QsIGNsaWVu
dCk7CkBAIC02NSwxNiArNjYsNiBAQCBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgIEJsb2JS
ZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShibG9iRGF0YSwgcmVxdWVz
dCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIH0KIAotc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9i
UmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3RvcigpCi17Ci0gICAgc3RhdGljIGJvb2wgZGlkUmVnaXN0
ZXIgPSBmYWxzZTsKLSAgICBpZiAoIWRpZFJlZ2lzdGVyKSB7Ci0gICAgICAgIFJlc291cmNlSGFu
ZGxlOjpyZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3RvcigiYmxvYiIsIGNyZWF0ZVJlc291cmNlSGFu
ZGxlKTsKLSAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpblN5bmNocm9ub3Vz
TG9hZGVyKCJibG9iIiwgbG9hZFJlc291cmNlU3luY2hyb25vdXNseSk7Ci0gICAgICAgIGRpZFJl
Z2lzdGVyID0gdHJ1ZTsKLSAgICB9Ci19Ci0KIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IEJs
b2JSZWdpc3RyeUltcGw6OmNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCkKIHsKICAgICBSZWZQdHI8
QmxvYlJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBCbG9iUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUFz
eW5jKGdldEJsb2JEYXRhRnJvbVVSTChyZXF1ZXN0LnVybCgpKSwgcmVxdWVzdCwgY2xpZW50KTsK
QEAgLTg0LDYgKzc1LDcgQEAgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gQmxvYlJlZ2lzdHJ5
SW1wbDo6Y3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgUmVzb3VyY2UKICAgICBoYW5kbGUtPnN0
YXJ0KCk7CiAgICAgcmV0dXJuIGhhbmRsZS5yZWxlYXNlKCk7CiB9CisqLwogCiB2b2lkIEJsb2JS
ZWdpc3RyeUltcGw6OmFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0
IEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1zLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVu
Z3RoKQogewpAQCAtMTE3LDcgKzEwOSw2IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6YXBwZW5k
U3RvcmFnZUl0ZW1zKEJsb2JEYXRhKiBibG9iRGF0YSwgY29uc3QgQmxvYkRhdGFJdGVtCiB2b2lk
IEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFBh
c3NSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBmaWxlLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgcmVnaXN0ZXJCbG9i
UmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3RvcigpOwogCiAgICAgUmVmUHRyPEJsb2JEYXRhPiBibG9i
RGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKICAgICBibG9iRGF0YS0+c2V0Q29udGVudFR5cGUo
Y29udGVudFR5cGUpOwpAQCAtMTI5LDcgKzEyMCw2IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxCbG9iRGF0YUZp
CiB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwg
VmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICByZWdpc3RlckJsb2JSZXNvdXJjZUhh
bmRsZUNvbnN0cnVjdG9yKCk7CiAKICAgICBSZWZQdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxv
YkRhdGE6OmNyZWF0ZSgpOwogICAgIGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZShjb250ZW50VHlw
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNv
dXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNv
dXJjZUhhbmRsZS5jcHAKaW5kZXggMDhkNWY1MWE4ODUyZTMxZjA3ZDFkYWFmODkyNzZiMDRmMGIw
NzBkNS4uMTY0MjJjNWNlMWY2NTM5MGM2YWVhNDQ4Yzg2ZTNiYzdjYjlkNzE3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxl
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogCiAjaW5jbHVkZSAiQXN5bmNGaWxlU3RyZWFtLmgiCiAj
aW5jbHVkZSAiQmxvYkRhdGEuaCIKKyNpbmNsdWRlICJCbG9iUmVnaXN0cnlJbXBsLmgiCiAjaW5j
bHVkZSAiRmlsZVN0cmVhbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJI
VFRQSGVhZGVyTmFtZXMuaCIKQEAgLTg4LDEwICs4OSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgLypmaW5pc2hU
aW1lKi8pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCisgICAgdm9pZCBzdGFydChQYXNz
UmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4pOwogcHJpdmF0ZToKICAgICBSZXNvdXJjZUVycm9y
JiBtX2Vycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UmIG1fcmVzcG9uc2U7CiAgICAgVmVjdG9y
PGNoYXI+JiBtX2RhdGE7CisgICAgUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gbV9oYW5kbGU7
CiB9OwogCiBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6QmxvYlJlc291cmNlU3luY2hy
b25vdXNMb2FkZXIoUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCkBAIC0xMDEsNyArMTA0LDcgQEAgQmxvYlJlc291cmNl
U3luY2hyb25vdXNMb2FkZXI6OkJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyKFJlc291cmNl
RXJyb3ImIGVycm8KIHsKIH0KIAotdm9pZCBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiB7CiAgICAgLy8gV2UgY2Fubm90IGhhbmRsZSB0aGUgc2l6ZSB0aGF0IGlz
IG1vcmUgdGhhbiBtYXhpbXVtIGludGVnZXIuCiAgICAgaWYgKHJlc3BvbnNlLmV4cGVjdGVkQ29u
dGVudExlbmd0aCgpID4gSU5UX01BWCkgewpAQCAtMTEzLDcgKzExNiw3IEBAIHZvaWQgQmxvYlJl
c291cmNlU3luY2hyb25vdXNMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBjCiAKICAgICAvLyBSZWFkIGFsbCB0aGUgZGF0YS4KICAgICBtX2RhdGEucmVz
aXplKHN0YXRpY19jYXN0PHNpemVfdD4ocmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkp
KTsKLSAgICBzdGF0aWNfY2FzdDxCbG9iUmVzb3VyY2VIYW5kbGUqPihoYW5kbGUpLT5yZWFkU3lu
YyhtX2RhdGEuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG1fZGF0YS5zaXplKCkpKTsKKyAgICBt
X2hhbmRsZS0+cmVhZFN5bmMobV9kYXRhLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2RhdGEu
c2l6ZSgpKSk7CiB9CiAKIHZvaWQgQmxvYlJlc291cmNlU3luY2hyb25vdXNMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQpCkBA
IC0xMjksMTMgKzEzMiwyMSBAQCB2b2lkIEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyOjpk
aWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvcgogICAgIG1fZXJyb3Ig
PSBlcnJvcjsKIH0KIAordm9pZCBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6c3RhcnQo
UGFzc1JlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+IGhhbmRsZSkKK3sKKyAgICBtX2hhbmRsZSA9
IGhhbmRsZTsKKyAgICBtX2hhbmRsZS0+c3RhcnQoKTsKK30KKwogfQogCiAvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCiAvLyBCbG9iUmVzb3VyY2VIYW5kbGUKIAotUGFzc1JlZlB0cjxCbG9iUmVzb3Vy
Y2VIYW5kbGU+IEJsb2JSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQXN5bmMoQmxvYkRhdGEqIGJsb2JE
YXRhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50
KiBjbGllbnQpCitQYXNzUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gQmxvYlJlc291cmNlSGFu
ZGxlOjpjcmVhdGVBc3luYyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNl
SGFuZGxlQ2xpZW50KiBjbGllbnQpCiB7CisgICAgQmxvYkRhdGEqIGJsb2JEYXRhID0gc3RhdGlj
X2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21V
UkwocmVxdWVzdC51cmwoKSk7CisKICAgICAvLyBGSVhNRTogU2hvdWxkIHByb2JhYmx5IGNhbGwg
ZGlkRmFpbCgpIGluc3RlYWQgb2YgYmxvY2tpbmcgdGhlIGxvYWQgd2l0aG91dCBleHBsYW5hdGlv
bi4KICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCAiR0VU
IikpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTQzLDggKzE1NCw5IEBAIFBhc3NSZWZQdHI8Qmxv
YlJlc291cmNlSGFuZGxlPiBCbG9iUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUFzeW5jKEJsb2JEYXRh
KiBibG9iRGF0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCbG9iUmVzb3VyY2VIYW5kbGUoYmxv
YkRhdGEsIHJlcXVlc3QsIGNsaWVudCwgdHJ1ZSkpOwogfQogCi12b2lkIEJsb2JSZXNvdXJjZUhh
bmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCit2b2lkIEJsb2JSZXNvdXJj
ZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogeworICAgIEJsb2JEYXRhKiBibG9iRGF0YSA9IHN0YXRp
Y19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9t
VVJMKHJlcXVlc3QudXJsKCkpOwogICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UocmVxdWVzdC5o
dHRwTWV0aG9kKCksICJHRVQiKSkgewogICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3Iod2Vi
S2l0QmxvYlJlc291cmNlRG9tYWluLCBtZXRob2ROb3RBbGxvd2VkLCByZXNwb25zZS51cmwoKSwg
IlJlcXVlc3QgbWV0aG9kIG11c3QgYmUgR0VUIik7CiAgICAgICAgIHJldHVybjsKQEAgLTE1Niw4
ICsxNjgsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlcwogfQogCiBCbG9iUmVzb3VyY2VIYW5k
bGU6OkJsb2JSZXNvdXJjZUhhbmRsZShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCwgYm9vbCBhc3lu
YykKLSAgICA6IFJlc291cmNlSGFuZGxlKDAsIHJlcXVlc3QsIGNsaWVudCwgZmFsc2UsIGZhbHNl
KQotICAgICwgbV9ibG9iRGF0YShibG9iRGF0YSkKKyAgICA6IG1fYmxvYkRhdGEoYmxvYkRhdGEp
CiAgICAgLCBtX2FzeW5jKGFzeW5jKQogICAgICwgbV9lcnJvckNvZGUoMCkKICAgICAsIG1fYWJv
cnRlZChmYWxzZSkKQEAgLTE2OSw2ICsxODAsOCBAQCBCbG9iUmVzb3VyY2VIYW5kbGU6OkJsb2JS
ZXNvdXJjZUhhbmRsZShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdAog
ICAgICwgbV9zaXplSXRlbUNvdW50KDApCiAgICAgLCBtX3JlYWRJdGVtQ291bnQoMCkKICAgICAs
IG1fZmlsZU9wZW5lZChmYWxzZSkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fcmVx
dWVzdChyZXF1ZXN0KQogewogICAgIGlmIChtX2FzeW5jKQogICAgICAgICBtX2FzeW5jU3RyZWFt
ID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKTsKQEAgLTE4NSw4ICsx
OTgsNiBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkKICAgICBtX2FzeW5jU3Ry
ZWFtID0gbnVsbHB0cjsKIAogICAgIG1fYWJvcnRlZCA9IHRydWU7Ci0KLSAgICBSZXNvdXJjZUhh
bmRsZTo6Y2FuY2VsKCk7CiB9CiAKIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpjb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSgpCkBAIC01OTUsOSArNjA2LDkgQEAgdm9pZCBCbG9iUmVzb3VyY2VI
YW5kbGU6Om5vdGlmeVJlc3BvbnNlT25TdWNjZXNzKCkKICAgICAvLyBJdCdzIGN1cnJlbnRseSBj
bGllbnQncyByZXNwb25zaWJpbGl0eSB0byBrbm93IHRoYXQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5
bmMgY2Fubm90IGJlIHVzZWQgdG8gY29udmVydCBhCiAgICAgLy8gbG9hZCBpbnRvIGEgZG93bmxv
YWQgb3IgYmxvYnMuCiAgICAgaWYgKGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSkKLSAg
ICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKHRoaXMsIHJlc3BvbnNlKTsK
KyAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKG51bGxwdHIsIHJlc3Bv
bnNlKTsKICAgICBlbHNlCi0gICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UodGhp
cywgcmVzcG9uc2UpOworICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG51bGxw
dHIsIHJlc3BvbnNlKTsKIH0KIAogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3Bv
bnNlT25FcnJvcigpCkBAIC02MjcsMjggKzYzOCwyOCBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRs
ZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9yKCkKICAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3Qgd2Fp
dCBmb3IgY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Ugd2hlbiB1c2luZyBkaWRSZWNlaXZlUmVz
cG9uc2VBc3luYy4KICAgICAvLyBUaGlzIGlzIG5vdCBmb3JtYWxseSBjb3JyZWN0LCBidXQgdGhl
IGNsaWVudCBoYXMgdG8gYmUgYSBuby1vcCBhbnl3YXksIGJlY2F1c2UgYmxvYnMgY2FuJ3QgYmUg
ZG93bmxvYWRlZC4KICAgICBpZiAoY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKQotICAg
ICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmModGhpcywgcmVzcG9uc2UpOwor
ICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMobnVsbHB0ciwgcmVzcG9u
c2UpOwogICAgIGVsc2UKLSAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZSh0aGlz
LCByZXNwb25zZSk7CisgICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UobnVsbHB0
ciwgcmVzcG9uc2UpOwogfQogCiB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVjZWl2
ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGJ5dGVzUmVhZCkKIHsKICAgICBpZiAoY2xpZW50
KCkpCi0gICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKHRoaXMsIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGJ5dGVzUmVhZCksIGJ5dGVzUmVhZCk7CisgICAgICAgIGNsaWVudCgp
LT5kaWRSZWNlaXZlQnVmZmVyKG51bGxwdHIsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ5
dGVzUmVhZCksIGJ5dGVzUmVhZCk7CiB9CiAKIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpub3Rp
ZnlGYWlsKGludCBlcnJvckNvZGUpCiB7CiAgICAgaWYgKGNsaWVudCgpKQotICAgICAgICBjbGll
bnQoKS0+ZGlkRmFpbCh0aGlzLCBSZXNvdXJjZUVycm9yKHdlYktpdEJsb2JSZXNvdXJjZURvbWFp
biwgZXJyb3JDb2RlLCBmaXJzdFJlcXVlc3QoKS51cmwoKSwgU3RyaW5nKCkpKTsKKyAgICAgICAg
Y2xpZW50KCktPmRpZEZhaWwobnVsbHB0ciwgUmVzb3VyY2VFcnJvcih3ZWJLaXRCbG9iUmVzb3Vy
Y2VEb21haW4sIGVycm9yQ29kZSwgZmlyc3RSZXF1ZXN0KCkudXJsKCksIFN0cmluZygpKSk7CiB9
CiAKIHN0YXRpYyB2b2lkIGRvTm90aWZ5RmluaXNoKHZvaWQqIGNvbnRleHQpCiB7CiAgICAgQmxv
YlJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxCbG9iUmVzb3VyY2VIYW5kbGUq
Pihjb250ZXh0KTsKICAgICBpZiAoIWhhbmRsZS0+YWJvcnRlZCgpICYmIGhhbmRsZS0+Y2xpZW50
KCkpCi0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZEZpbmlzaExvYWRpbmcoaGFuZGxlLCAw
KTsKKyAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkRmluaXNoTG9hZGluZyhudWxscHRyLCAw
KTsKIAogICAgIC8vIEJhbGFuY2UgdGhlIHJlZigpIGluIEJsb2JSZXNvdXJjZUhhbmRsZTo6bm90
ZnlGaW5pc2goKS4KICAgICBoYW5kbGUtPmRlcmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaAppbmRleCA2NzZkYmZmOTg5
NzZiYjA4N2Q1YmJjNWQwY2NhYjdmNDEzYjQ0MWZkLi5jMzMzN2NhZTgyYzg2MzQzZDhlZjk0YWZh
YWYwNjhiZTNjNjViNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmgKQEAgLTMyLDggKzMyLDkgQEAKICNkZWZpbmUgQmxv
YlJlc291cmNlSGFuZGxlX2gKIAogI2luY2x1ZGUgIkZpbGVTdHJlYW1DbGllbnQuaCIKLSNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTQyLDMzICs0Myw0MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBc3luY0ZpbGVT
dHJlYW07CiBjbGFzcyBCbG9iRGF0YTsKIGNsYXNzIEZpbGVTdHJlYW07CitjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogc3RydWN0IEJsb2JEYXRhSXRlbTsKIAotY2xh
c3MgQmxvYlJlc291cmNlSGFuZGxlIGZpbmFsIDogcHVibGljIEZpbGVTdHJlYW1DbGllbnQsIHB1
YmxpYyBSZXNvdXJjZUhhbmRsZSAgeworY2xhc3MgQmxvYlJlc291cmNlSGFuZGxlIGZpbmFsIDog
cHVibGljIFJlZkNvdW50ZWQ8QmxvYlJlc291cmNlSGFuZGxlPiwgcHVibGljIEZpbGVTdHJlYW1D
bGllbnQgIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iUmVzb3VyY2VIYW5k
bGU+IGNyZWF0ZUFzeW5jKEJsb2JEYXRhKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5CbG9iUmVzb3VyY2VIYW5kbGUoKTsKIAot
ICAgIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoQmxvYkRhdGEqLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZl
Y3RvcjxjaGFyPiYgZGF0YSk7CisgICAgYm9vbCBhYm9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9h
Ym9ydGVkOyB9OworICAgIFJlc291cmNlSGFuZGxlQ2xpZW50ICpjbGllbnQoKSB7IHJldHVybiBt
X2NsaWVudDsgfTsKIAogICAgIHZvaWQgc3RhcnQoKTsKICAgICBpbnQgcmVhZFN5bmMoY2hhcios
IGludCk7CiAKLSAgICBib29sIGFib3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX2Fib3J0ZWQ7IH0K
K3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgQmxvYlJlc291cmNlTG9hZGVyOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gY3JlYXRlQXN5bmMoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqKTsKKworICAgIHN0YXRpYyB2b2lk
IGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3Vy
Y2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOworCisgICAg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBmaXJzdFJlcXVlc3QoKSB7IHJldHVybiBtX3JlcXVlc3Q7
IH07CiAKLXByaXZhdGU6CiAgICAgQmxvYlJlc291cmNlSGFuZGxlKEJsb2JEYXRhKiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqLCBib29sIGFzeW5jKTsKLSAg
ICB2aXJ0dWFsIH5CbG9iUmVzb3VyY2VIYW5kbGUoKTsKIAogICAgIC8vIEZpbGVTdHJlYW1DbGll
bnQgbWV0aG9kcy4KICAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0U2l6ZShsb25nIGxvbmcpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuKGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWFkKGludCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBSZXNvdXJjZUhhbmRsZSBt
ZXRob2RzLgotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsKCk7CisgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlKCk7CisKIAogICAgIHZvaWQgZG9TdGFydCgpOwogICAgIHZvaWQgZ2V0U2l6ZUZvck5leHQo
KTsKQEAgLTEwNiw2ICsxMTQsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc2l6ZUl0ZW1D
b3VudDsKICAgICB1bnNpZ25lZCBtX3JlYWRJdGVtQ291bnQ7CiAgICAgYm9vbCBtX2ZpbGVPcGVu
ZWQ7CisgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQgKm1fY2xpZW50OworICAgIFJlc291cmNlUmVx
dWVzdCBtX3JlcXVlc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGY3ZTEyYzIxMWYwMDg2
MDRiOTg5YjM1OGE3NTU2ZDAyYzY0NTRiNmYuLjNlYjhiMzlmYTRlMTIzNWFiZGVmMGQ3NmQ3NTNk
MjUwOTE1MjJkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwCkBAIC0zOCw2ICszOCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGlj
IHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEZvcm1EYXRhKiwgY29uc3QgVVJMJik7CisKIGlubGlu
ZSBGb3JtRGF0YTo6Rm9ybURhdGEoKQogICAgIDogbV9pZGVudGlmaWVyKDApCiAgICAgLCBtX2Fs
d2F5c1N0cmVhbShmYWxzZSkKQEAgLTE1NSw3ICsxNTcsNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBl
bmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25n
IGxvbgogCiB2b2lkIEZvcm1EYXRhOjphcHBlbmRCbG9iKGNvbnN0IFVSTCYgYmxvYlVSTCkKIHsK
LSAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoYmxvYlVSTCkpOworICAgIGFw
cGVuZEJsb2JSZXNvbHZlZCh0aGlzLCBibG9iVVJMKTsKIH0KIAogdm9pZCBGb3JtRGF0YTo6YXBw
ZW5kS2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURhdGFMaXN0JiBsaXN0LCBjb25zdCBUZXh0
RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGlzTXVsdGlQYXJ0Rm9ybSwgRG9jdW1lbnQqIGRvY3Vt
ZW50LCBFbmNvZGluZ1R5cGUgZW5jb2RpbmdUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKaW5kZXggYmY4NmYwMzFmNWYxNGUyYjA0MDM0NDI4MzI1N2MwNzk4NGY1NzE0My4u
YTQxYTAzYTUxZDdlNjEwZDRhNzc1ZTliNmY3NzhiNzI5YmRlMmM2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yNCw2ICsyNCw4IEBACiAjaW5jbHVkZSAiWE1MSHR0
cFJlcXVlc3QuaCIKIAogI2luY2x1ZGUgIkJsb2IuaCIKKyNpbmNsdWRlICJCbG9iRGF0YS5oIgor
I2luY2x1ZGUgIkJsb2JSZWdpc3RyeUltcGwuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQ
b2xpY3kuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKICNpbmNsdWRl
ICJET01Gb3JtRGF0YS5oIgpAQCAtMjM4LDcgKzI0MCw2IEBAIEJsb2IqIFhNTEh0dHBSZXF1ZXN0
OjpyZXNwb25zZUJsb2IoKQogCiAgICAgaWYgKCFtX3Jlc3BvbnNlQmxvYikgewogICAgICAgICBp
ZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBq
dXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGlu
ZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7CiAgICAgICAgICAgICBkYXRhLmFwcGVuZChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+
ZGF0YSgpLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIFN0
cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUo
cmVzcG9uc2VNSU1FVHlwZSgpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0
L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApp
bmRleCA4OGNiMDY0ZTEwNzI5M2Q3OTA5NjVhMDc0YWRjMTJjZGFjODBkNjhmLi43ZDcwN2QzNzZl
ZDJkNWQ1YTM0ODVjNjEzNWE5ZjcwNzYxZGQ1OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmNwcApAQCAtNDYsMTAgKzQ2LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVmZXJyZXJQb2xpY3kuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NldHRpbmdzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCkBAIC02OCwxMiArNjYsMTEgQEAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjp+V2ViUmVz
b3VyY2VMb2FkU2NoZWR1bGVyKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFt
ZSogZnJhbWUsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitib29sIFdl
YlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoU3VicmVzb3Vy
Y2VMb2FkZXIqIGxvYWRlcikKIHsKLSAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRl
ciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIHJlc291cmNlLCByZXF1ZXN0LCBv
cHRpb25zKTsKICAgICBpZiAobG9hZGVyKQotICAgICAgICBzY2hlZHVsZUxvYWQobG9hZGVyLmdl
dCgpLCByZXNvdXJjZSwgZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgPT0gUmVm
ZXJyZXJQb2xpY3lEZWZhdWx0KTsKLSAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKKyAgICAg
ICAgc2NoZWR1bGVMb2FkKGxvYWRlciwgbG9hZGVyLT5jYWNoZWRSZXNvdXJjZSgpLCBsb2FkZXIt
PmZyYW1lKCktPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJQb2xpY3lE
ZWZhdWx0KTsKKyAgICByZXR1cm4gbG9hZGVyOwogfQogCiBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyPiBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2lu
U3RyZWFtTG9hZChGcmFtZSogZnJhbWUsIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50
KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaAppbmRleCA0ZWNlZjNlYjE3MzlmZjkxNWNkZTkxYzc4ODMzYTMyM2M5MTAyODM0Li44
ZTNhYWQ3NzQxZTM4MTA2ODdhMWJmOGQ1OGQ4N2I0NTMzMTdlNWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlTG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpAQCAt
NDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiAg
ICAgdmlydHVhbCB+V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiAgICAgCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyPiBzY2hlZHVsZVN1YnJlc291
cmNlTG9hZChXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJP
cHRpb25zJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHNjaGVkdWxlU3VicmVzb3VyY2VM
b2FkKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyKik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVh
bUxvYWQoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ckNsaWVudCosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwogICAg
IAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBlZTU2OTc4ZmY3
YTJhYmNhYmM1Yjk1YTdhN2ViZDdlZTJlYjk3OWY4Li43NzY5MjU5MGQxZmVmOTA3ZmQwZTMyMmY2
NzI3YzQwZDQ0NmE1OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBA
IC0yNzcsOSArMjc3LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQKIAogQmxvYlJlZ2lzdHJ5
KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiB7Ci0gICAgaWYg
KCFXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgcmV0
dXJuIExvYWRlclN0cmF0ZWd5OjpjcmVhdGVCbG9iUmVnaXN0cnkoKTsKLSAgICByZXR1cm4gbmV3
IEJsb2JSZWdpc3RyeVByb3h5OyAgICAKKyAgICByZXR1cm4gTG9hZGVyU3RyYXRlZ3k6OmNyZWF0
ZUJsb2JSZWdpc3RyeSgpOwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241938</attachid>
            <date>2014-11-20 03:30:26 -0800</date>
            <delta_ts>2014-11-20 05:25:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138835-20141120123040.patch</filename>
            <type>text/plain</type>
            <size>35668</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIwNmM5MzUxYmYzYjFk
NzZjMTZlNTQzMjk1YWJhMjM4ZmU0ZDYyOS4uMjFhNTJhOWQyNDAwMzBlZDRkNmExZDA3ZTY3ZmFm
NTJiMjUxMTk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE0LTExLTIwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgTW92ZSBC
bG9iIGxvYWRpbmcgaW4gV2ViIFByb2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg4MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgTWFkZSBibG9iIGxvYWRpbmcgaGFwcGVuaW5nIGF0IFN1YnJlc291
cmNlTG9hZGVyIGxldmVsLgorICAgICAgICBFbnN1cmUgdGhhdCBibG9iIHJlZ2lzdHJhdGlvbiBh
bmQgcmVzb2x1dGlvbiBhbHdheXMgaGFwcGVuIHdpdGhpbiBXZWIgUHJvY2Vzcy4KKyAgICAgICAg
SW4gcGFydGljdWxhciBibG9icyBhcmUgcmVzb2x2ZWQgd2l0aGluIGZvcm0gZGF0YSB3aGVuIGFk
ZGVkIGFzIEhUVFAgYm9keSBzbyB0aGF0IHRoZSBuZXR3b3JrIGxheWVyIGRvZXMgbm90IG5lZWQg
dG8gZG8gdGhhdCBhbnltb3JlLgorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzIGNvdmVyIHRoaXMg
cGF0Y2guCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IE1h
ZGUgQmxvYlJlc291cmNlSGFuZGxlLmggYWNjZXNzaWJsZSB0byBTdWJyZXNvdXJjZUxvYWRlci5j
cHAuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KTogRGlyZWN0IGNhbGwgdG8g
U3VicmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkuCisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKTogTW92ZWQgU3VicmVz
b3VyY2VMb2FkZXIgb2JqZWN0IGNyZWF0aW9uIGludG8gQ2FjaGVkUmVzb3VyY2UuCisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oOiBEaXR0by4KKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSk6IE1ha2UgdXNlIG9mIGNhbmNlbEhhbmRs
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjYW5jZWwpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjYW5jZWxIYW5kbGUpOiBWaXJ0dWFsIG1l
dGhvZCB0byBjYW5jZWwgdGhlIHJlc291cmNlIGhhbmRsZSwgb3ZlcnJpZGVuIGluIFN1YnJlc291
cmNlTG9hZGVyIHRvIGFsc28gY2FuY2VsIHRoZSBibG9iIGhhbmRsZS4KKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaDogQWRkZWQgY2FuY2VsSGFuZGxlIGFuZCBhY2Nlc3NvciB0byBm
cmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpmcmFtZSk6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpsb2FkU3luY2hyb25vdXNseSk6IENlbnRyYWxpemVzIGFsbCBzeW5jIGxv
YWRpbmcuCisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6c2NoZWR1bGVMb2Fk
KTogQ2VudHJhbGl6ZXMgYWxsIGFzeW5jIGxvYWRpbmcgc3RhcnQuCisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6Y2FuY2VsSGFuZGxlKTogQ2FuY2VsIGJsb2IgaGFuZGxlIGlm
IG9uZS4KKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOiBjb25zdCBw
YXJhbWV0ZXIgY2hhbmdlLgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWQpOiBEaXJlY3RseSBj
cmVhdGUgU3VicmVzb3VyY2VMb2FkZXIgb2JqZWN0IGFuZCByZXF1ZXN0IHRvIGxvYWQgaXQuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOiBSZW1vdmVk
IFJlc291cmNlSGFuZGxlIGNhbGxiYWNrIGhvb2suCisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVn
aXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVz
b3VyY2VIYW5kbGU6OmNyZWF0ZUFzeW5jKTo6IERpcmVjdCBoYW5kbGluZyBvZiBibG9iIHVybCBy
ZXNvbHV0aW9uLgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KTogRGlyZWN0IGhhbmRsaW5nIG9mIGJsb2IgdXJsIHJlc29sdXRp
b24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaDogRGl0
dG8gcGx1cyBtYWRlIGNhbmNlbCgpIHB1YmxpYy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsb2JJc091dE9mRGF0ZSk6IEFkZGVk
IGNoZWNrIHdoZXRoZXIgYmxvYiBmaWxlIGl0ZW0gaXMgb3V0IG9mIGRhdGUgb3Igbm90ICh0YWtl
biBmcm9tIHNvdXAgYmFja2VuZCkuCisgICAgICAgIChXZWJDb3JlOjphcHBlbmRCbG9iUmVzb2x2
ZWQpOiBFbnN1cmUgdGhhdCBvdXQtb2YtZGF0ZSBmaWxlcyBhcmUgbm90IGFjdHVhbGx5IGFkZGVk
IHRvIHRoZSBmb3JtIGRhdGEuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNl
dEhUVFBCb2R5KTogUmVzb2x2ZSBibG9icyBpZiBhbnkuCisgICAgICAgICogeG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUJs
b2IpOiBSZW1vdmVkIGZpeG1lLgorCiAyMDE0LTExLTE0ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5n
QGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjXSBPbmx5IGltYWdlcyB0aGF0IGFyZSBhY3R1YWxs
eSBwdXJnZWFibGUgc2hvdWxkIGJlIGFkdmVydGlzZWQgYXMgc3VjaC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5
MWY5YmE5NWQ3YjZlMGM2NWM2Nzk5MjBjZWI3NTZiOTg1YzU0Y2YxLi41NDY3YzdiY2I1ODM1MDRk
ZmZlNDM5MTc3MzRjY2FkNmQwNTIwOTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTQtMTEtMjAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKwor
ICAgICAgICBNb3ZlIEJsb2IgbG9hZGluZyBpbiBXZWIgUHJvY2VzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4ODM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxv
YlJlZ2lzdHJ5UHJveHkuaDogQWRkZWQgYSBGSVhNRSBhcyB0aGlzIGNsYXNzIG1heSBubyBsb25n
ZXIgYmUgbmVlZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKTogTW92ZWQgU3VicmVzb3VyY2VMb2FkZXIgb2Jq
ZWN0IGNyZWF0aW9uIGludG8gQ2FjaGVkUmVzb3VyY2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KTogRW5z
dXJlIHRoYXQgd2UgdXNlIFdlYiBQcm9jZXNzIGJsb2IgcmVnaXN0cnkuCisKIDIwMTQtMTEtMTQg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRnJlcXVl
bnQgY3Jhc2hlcyB1bmRlciBhY3Rpb25Db250ZXh0Rm9yUmVzdWx0QXRQb2ludApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE3OTlh
YzU0YmUwMjk2OTFkYzkwNDg3MzlhNDNhNmM0ZjA2MzY2NDkuLjYyNzM0NmQxYjRjMTM0NWI2ZjY3
NWJlMjEzNzg5ZDA2OTg2Y2M5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExODMsNyArMTE4Myw3IEBACiAJCTJFOTRGNDND
MTE5MjA3REEwMEI3Rjc1RCAvKiBKU0ZpbGVSZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFOTRGNDNBMTE5MjA3REEwMEI3Rjc1RCAvKiBKU0Zp
bGVSZWFkZXIuaCAqLzsgfTsKIAkJMkVBNzY4MDQwRkU3MTI2NDAwQUI5QzhBIC8qIFdvcmtlclNj
cmlwdExvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkVBNzY4MDMwRkU3MTI2NDAwQUI5QzhBIC8qIFdvcmtlclNjcmlwdExvYWRlckNs
aWVudC5oICovOyB9OwogCQkyRUI0QkNEMjEyMUYwM0UzMDBFQzQ4ODUgLyogQmxvYlJlc291cmNl
SGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJFQjRCQ0QwMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuY3BwICovOyB9
OwotCQkyRUI0QkNEMzEyMUYwM0UzMDBFQzQ4ODUgLyogQmxvYlJlc291cmNlSGFuZGxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUI0QkNEMTEyMUYw
M0UzMDBFQzQ4ODUgLyogQmxvYlJlc291cmNlSGFuZGxlLmggKi87IH07CisJCTJFQjRCQ0QzMTIx
RjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQjRCQ0QxMTIxRjAzRTMwMEVDNDg4NSAvKiBC
bG9iUmVzb3VyY2VIYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkyRUNGN0FEQzEwMTYyQjM4MDA0MjdERTcgLyogSlNFcnJvckV2ZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQ0Y3QURB
MTAxNjJCMzgwMDQyN0RFNyAvKiBKU0Vycm9yRXZlbnQuY3BwICovOyB9OwogCQkyRUNGN0FERDEw
MTYyQjM4MDA0MjdERTcgLyogSlNFcnJvckV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUNGN0FEQjEwMTYyQjM4MDA0MjdERTcgLyogSlNFcnJv
ckV2ZW50LmggKi87IH07CiAJCTJFQ0Y3QUUxMTAxNjJCNTgwMDQyN0RFNyAvKiBFcnJvckV2ZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQ0Y3
QURFMTAxNjJCNTgwMDQyN0RFNyAvKiBFcnJvckV2ZW50LmNwcCAqLzsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDUxOTQwOGI1N2Y2MjYxMzJhOWFlMzJiZDUwNDc1
OThkM2M1ZDM3YzguLjRiNzY1MTMxNjZjMWZmNWI1MTczODlkYmE0MjMxNDEwNDEwZjM4MTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCi0jaW5j
bHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJCZWZvcmVVbmxvYWRFdmVudC5oIgogI2luY2x1ZGUgIkNhY2hl
ZFBhZ2UuaCIKQEAgLTExMyw2ICsxMTIsNyBAQAogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3ViZnJhbWVMb2FkZXIu
aCIKKyNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJj
ZURlY29kZXIuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlhNTERv
Y3VtZW50UGFyc2VyLmgiCkBAIC0yNjczLDExICsyNjczLDcgQEAgdW5zaWduZWQgbG9uZyBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXUKIAogICAgIGlmIChlcnJvci5pc051bGwoKSkgewogICAgICAgICBBU1NFUlQoIW5ld1Jl
cXVlc3QuaXNOdWxsKCkpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigp
LT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRTeW5jaHJvbm91c2x5KG5ld1JlcXVl
c3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKLSAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KG5ldHdv
cmtpbmdDb250ZXh0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIHN0b3JlZENyZWRlbnRpYWxz
LCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwotICAgICAg
ICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2Fk
RmFsbGJhY2tTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7
Ci0gICAgICAgIH0KKyAgICAgICAgU3VicmVzb3VyY2VMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5
KHRoaXMsIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIHN0b3JlZENyZWRlbnRpYWxzLCBjbGllbnRD
cmVkZW50aWFsUG9saWN5LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgIH0KICAgICBub3Rp
ZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0
KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCksIC0xLCBlcnJvcik7CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDZkOGI5ZTdmZTQ5NmJh
OTU1YTE4ODg3ZmU5YjYwNWQ3MDZjMjhlOTQuLjIxNjdiOWJhZGQyMzhlNTM0YTExOGYyMzc3MWZj
YTliODkyOTA2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwCkBAIC0xMTIsMTEgKzExMiwxMCBAQCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6
On5SZXNvdXJjZUxvYWRTY2hlZHVsZXIoKQogewogfQogCi1QYXNzUmVmUHRyPFN1YnJlc291cmNl
TG9hZGVyPiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZy
YW1lKiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK2Jvb2wg
UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChTdWJyZXNvdXJj
ZUxvYWRlciogbG9hZGVyKQogewotICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVy
ID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFtZSwgcmVzb3VyY2UsIHJlcXVlc3QsIG9w
dGlvbnMpOwogICAgIGlmIChsb2FkZXIpCi0gICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0
KCkpOworICAgICAgICBzY2hlZHVsZUxvYWQobG9hZGVyKTsKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgLy8gU2luY2Ugd2UgZGVmZXIgbG9hZGVyIGluaXRpYWxpemF0aW9uIHVudGlsIHNjaGVkdWxp
bmcgb24gaU9TLCB0aGUgZnJhbWUKICAgICAvLyBsb2FkIGRlbGVnYXRlIHRoYXQgd291bGQgYmUg
Y2FsbGVkIGluIFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoKSBvbgpAQCAtMTI0LDkgKzEyMyw5
IEBAIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFJlc291cmNlTG9hZFNjaGVkdWxlcjo6
c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhCiAgICAgLy8gY2FsbGVycyBvZiB0aGlzIG1ldGhv
ZCBpcyB0aGF0IGEgbnVsbCBsb2FkZXIgaXMgcmV0dXJuZWQgaWYgdGhlIGxvYWQgd2FzCiAgICAg
Ly8gY2FuY2VsbGVkIGJ5IGEgZnJhbWUgbG9hZCBkZWxlZ2F0ZS4KICAgICBpZiAoIWxvYWRlciB8
fCBsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKLSAgICByZXR1cm4gbG9hZGVyLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVhbUxv
YWQoRnJhbWUqIGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggNWIzNzQyZjM5MzFmMDlmYzM1YTkxNmI2
NTFiMjYxOTk0MWFlMzM0ZC4uNDVkNDA0YTcyZDhhZWQ5ZmM4MzNkNTk1NDY0NjgzOGUzMTQzYWJk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApA
QCAtNTAsNyArNTAsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTY2hlZHVsZXIgewogcHVibGljOgog
ICAgIGZyaWVuZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxlcigp
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9h
ZGVyPiBzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSosIENhY2hlZFJlc291cmNlKiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKFN1YnJl
c291cmNlTG9hZGVyKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBQYXNzUmVmUHRyPE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUq
LCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZW1vdmUoUmVzb3VyY2VMb2Fk
ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhSZXNvdXJjZUxvYWRlcios
IGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTUy
MmQzY2FmZDg3MDg1Y2Y5YTc3YjczMTE2ZjcyMjhlNmM5ZDZlNy4uZDY4ZDQwZTY0YjhkZGU1OTI1
OGE1ZTdkMjgzNTAxOGIwMWUxNjRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0yMTAsOCArMjEwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3
aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKIHsKICAgICBBU1NFUlQoIW1fZG9jdW1lbnRMb2Fk
ZXItPmlzU3Vic3RpdHV0ZUxvYWRQZW5kaW5nKHRoaXMpKTsKICAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnJlbW92ZSh0
aGlzKTsKLSAgICBpZiAobV9oYW5kbGUpCi0gICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKKyAg
ICBjYW5jZWxIYW5kbGUoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVm
ZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmVkQnVmZmVyKiBidWZm
ZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCkBAIC00MjgsMTAgKzQyNyw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
ICAgICAgICAgICAgIG1faGFuZGxlLT5jbGVhckF1dGhlbnRpY2F0aW9uKCk7CiAKICAgICAgICAg
bV9kb2N1bWVudExvYWRlci0+Y2FuY2VsUGVuZGluZ1N1YnN0aXR1dGVMb2FkKHRoaXMpOwotICAg
ICAgICBpZiAobV9oYW5kbGUpIHsKLSAgICAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKLSAg
ICAgICAgICAgIG1faGFuZGxlID0gMDsKLSAgICAgICAgfQorICAgICAgICBjYW5jZWxIYW5kbGUo
KTsKICAgICAgICAgY2xlYW51cEZvckVycm9yKG5vbk51bGxFcnJvcik7CiAgICAgfQogCkBAIC00
NDksNiArNDQ1LDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNhbmNlbChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CiB9CiAKK3ZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmNhbmNlbEhhbmRsZSgpCit7CisgICAgaWYgKG1faGFuZGxlKSB7CisgICAgICAg
IG1faGFuZGxlLT5jYW5jZWwoKTsKKyAgICAgICAgbV9oYW5kbGUgPSAwOworICAgIH0KK30KKwog
UmVzb3VyY2VFcnJvciBSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsbGVkRXJyb3IoKQogewogICAgIHJl
dHVybiBmcmFtZUxvYWRlcigpLT5jYW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCAxNjE1ZjZkOWJmOGRjMzRhNGU5YmNmNDZi
YjYzYjY4ZjZjZmRhMDFhLi4zOTNiZmQ4Y2JkZjlhNGU0ZmZkMzQyOGJhZDA2OTUyOGNiNzZjNTJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtNzAsNiArNzAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGlPU09yaWdpbmFs
UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIHJlcXVlc3QoKTsgfQogI2VuZGlmCiAKKyAgICBXRUJD
T1JFX0VYUE9SVCBGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lLmdldCgpOyB9
OwogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlcigpIGNvbnN0Owog
ICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZG9j
dW1lbnRMb2FkZXIuZ2V0KCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxSZXF1ZXN0
OyB9CkBAIC0xNTEsNiArMTUyLDggQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0K
IAorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxIYW5kbGUoKTsKKwogICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiwgdW5zaWduZWQsIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAg
ICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRp
b25zOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRl
eCAyMDZkZDIyYjYzMzJhYzVmMTA5NjJlODY5NDJiNzkwODllMzkzMmNlLi4wNDMyYTE4YWE2N2Nm
MWNmYzNlYThhNmY1MTY2Zjk4OTc0ODYzZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI5LDIwICsyOSwyNSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAKKyNpbmNsdWRlICJBcHBsaWNh
dGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJh
dGVneS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUg
PFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oPgogI2VuZGlmCkBAIC0xMDAsNyArMTA1LDQx
IEBAIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVh
dGUoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IHJldHVybiBzdWJsb2FkZXIucmVsZWFzZSgpOwogfQotICAgIAorCit2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9y
ZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBj
bGllbnRDcmVkZW50aWFsUG9saWN5LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKK3sKKyAgICBpZiAocmVxdWVzdC51
cmwoKS5wcm90b2NvbElzKCJibG9iIikpIHsKKyAgICAgICAgQmxvYlJlc291cmNlSGFuZGxlOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWZyYW1lTG9hZGVyLT5kb2N1bWVu
dExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRTeW5jaHJvbm91c2x5
KHJlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKKyAgICAgICAgcGxhdGZvcm1TdHJh
dGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZnJh
bWVMb2FkZXItPm5ldHdvcmtpbmdDb250ZXh0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHN0b3Jl
ZENyZWRlbnRpYWxzLCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBlcnJvciwgcmVzcG9uc2UsIGRh
dGEpOworICAgICAgICBmcmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25D
YWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KHJlcXVlc3QsIGVycm9y
LCByZXNwb25zZSwgZGF0YSk7CisgICAgfQorfQorCitib29sIFN1YnJlc291cmNlTG9hZGVyOjpz
Y2hlZHVsZUxvYWQoKQoreworICAgIGlmICh1cmwoKS5wcm90b2NvbElzKCJibG9iIikpIHsKKyAg
ICAgICAgbV9ibG9iSGFuZGxlID0gQmxvYlJlc291cmNlSGFuZGxlOjpjcmVhdGVBc3luYyhyZXF1
ZXN0KCksIHRoaXMpOworICAgICAgICBpZiAoIW1fYmxvYkhhbmRsZSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgbV9ibG9iSGFuZGxlLT5zdGFydCgpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJT
dHJhdGVneSgpLT5yZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxv
YWQodGhpcyk7Cit9CisKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmNhbmNlbEhhbmRsZSgpCit7
CisgICAgaWYgKG1fYmxvYkhhbmRsZSkgeworICAgICAgICBtX2Jsb2JIYW5kbGUtPmNhbmNlbCgp
OworICAgICAgICBtX2Jsb2JIYW5kbGUgPSBudWxscHRyOworICAgIH0KKyAgICBSZXNvdXJjZUxv
YWRlcjo6Y2FuY2VsSGFuZGxlKCk7Cit9CisKICNpZiBQTEFURk9STShJT1MpCiBib29sIFN1YnJl
c291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcoKQogewpAQCAtMTEzLDExICsxNTIsNiBAQCBib29s
IFN1YnJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcoKQogfQogI2VuZGlmCiAKLUNhY2hlZFJl
c291cmNlKiBTdWJyZXNvdXJjZUxvYWRlcjo6Y2FjaGVkUmVzb3VyY2UoKQotewotICAgIHJldHVy
biBtX3Jlc291cmNlOwotfQotCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpjYW5jZWxJZk5vdEZp
bmlzaGluZygpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gSW5pdGlhbGl6ZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDMwM2ZmZDlhYmQ3YjFiYjRkMDky
ZDE4MDE5ZDZiMTExNWU5MTQyODkuLjI0ZDIzMzA2MjE3NGI1OWRkZTFmNzZkMDBhMjBmODVmYTRm
NzUyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC0y
OSw2ICsyOSw3IEBACiAjaWZuZGVmIFN1YnJlc291cmNlTG9hZGVyX2gKICNkZWZpbmUgU3VicmVz
b3VyY2VMb2FkZXJfaAogCisjaW5jbHVkZSAiQmxvYlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCiAKQEAg
LTQ0LDEzICs0NSwxNSBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKIGNsYXNzIFN1YnJlc291
cmNlTG9hZGVyIGZpbmFsIDogcHVibGljIFJlc291cmNlTG9hZGVyIHsKIHB1YmxpYzoKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gY3JlYXRl
KEZyYW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4gY3JlYXRlKEZyYW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICBzdGF0aWMgdm9pZCBs
b2FkU3luY2hyb25vdXNseShGcmFtZUxvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBS
ZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYpOwogCiAgICAg
dmlydHVhbCB+U3VicmVzb3VyY2VMb2FkZXIoKTsKIAorICAgIGJvb2wgc2NoZWR1bGVMb2FkKCk7
CiAgICAgdm9pZCBjYW5jZWxJZk5vdEZpbmlzaGluZygpOwogICAgIHZpcnR1YWwgYm9vbCBpc1N1
YnJlc291cmNlTG9hZGVyKCkgb3ZlcnJpZGU7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJl
c291cmNlKCk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKCkgeyByZXR1cm4g
bV9yZXNvdXJjZTsgfTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIGJvb2wgc3Rh
cnRMb2FkaW5nKCkgb3ZlcnJpZGU7CkBAIC02Myw2ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgU3Vi
cmVzb3VyY2VMb2FkZXIoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlTG9h
ZGVyT3B0aW9ucyYpOwogCiAgICAgdmlydHVhbCBib29sIGluaXQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbEhhbmRsZSgpIG92ZXJyaWRl
OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5z
aWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CkBAIC0xMjIsNiAr
MTI2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQ7CiAg
ICAgU3VicmVzb3VyY2VMb2FkZXJTdGF0ZSBtX3N0YXRlOwogICAgIE93blB0cjxSZXF1ZXN0Q291
bnRUcmFja2VyPiBtX3JlcXVlc3RDb3VudFRyYWNrZXI7CisgICAgUmVmUHRyPEJsb2JSZXNvdXJj
ZUhhbmRsZT4gbV9ibG9iSGFuZGxlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggOWNmYjUw
NWIwYmI3OTQ4NjRlYWNiZjFhYTllNWE3ZGY1YTVjZDFmNS4uMGY0MjBlYjhiNmVmYmVkYjcxNjcy
M2MzZmE3YjliN2VjNGIxZmMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAg
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNv
dXJjZUxvYWRlciogcmVzb3VyY2VMb2EKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQXBw
bGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJl
TG9hZFN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYg
ZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgIGlm
IChzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZShyZXF1ZXN0LCByZXNvdXJj
ZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmgKaW5kZXggODZjMTc3NDBlOWI1NGMwOTMxMjgxODNmZGIwMTRhMGVjMTJj
ZjdkZi4uZmYwOTUxMzNkNGU4ODI1MmFiN2U0MTE3MzMxYzI2NjljYzc3YjJiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRl
ciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwogCi0gICAgICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJj
ZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFy
PiYgZGF0YSk7CisgICAgICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3Rvcjxj
aGFyPiYgZGF0YSk7CiAgICAgICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgVmVjdG9yPGNoYXI+JiBkYXRhKTsKIAogICAgICAgICBib29sIGNhbkNhY2hlSW5QYWdlQ2Fj
aGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CmluZGV4IDRmNWY1YTRhNDUzY2VjOGZmNmRjNzMxNTFiNjVlM2ZiMjFlMzVjYmUuLmExNDE3YWJk
ZGJiZDM1NGQzOGEwMjkxNDkyYmM2MDFlZjQ5YjFiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzUsMTcgKzM1LDE1IEBACiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJVUkwuaCIK
LSNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJNZW1vcnlDYWNoZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VM
b2FkZXIuaCIKKyNpbmNsdWRlICJVUkwuaCIKKwogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRM
ZWFrQ291bnRlci5oPgpAQCAtMjcxLDggKzI2OSw4IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6Omxv
YWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNv
CiAgICAgICAgIG1fZnJhZ21lbnRJZGVudGlmaWVyRm9yUmVxdWVzdCA9IFN0cmluZygpOwogICAg
IH0KIAotICAgIG1fbG9hZGVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5
KCktPnJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChjYWNo
ZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgb3B0aW9ucyk7Ci0gICAg
aWYgKCFtX2xvYWRlcikgeworICAgIG1fbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0
ZShjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgb3B0aW9ucyk7
CisgICAgaWYgKCEobV9sb2FkZXIgJiYgbV9sb2FkZXItPnNjaGVkdWxlTG9hZCgpKSkgewogICAg
ICAgICBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3Bw
CmluZGV4IGYwOWI5ZWQzODdmNDY3MTk2MzlkMGRmMzJjOWY3Zjc1NmNmZDQwNmYuLjBlYzQ4Y2I3
NmM4YTE1NDU3OTk3ZWI2YTZjZDQzNzlhYjE2MzM4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtNTQsMzcgKzU0
LDYgQEAgQmxvYlJlZ2lzdHJ5SW1wbDo6fkJsb2JSZWdpc3RyeUltcGwoKQogewogfQogCi1zdGF0
aWMgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gY3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KQot
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5
KCkpLmNyZWF0ZVJlc291cmNlSGFuZGxlKHJlcXVlc3QsIGNsaWVudCk7Ci19Ci0KLXN0YXRpYyB2
b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9y
JiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkK
LXsKLSAgICBCbG9iRGF0YSogYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBs
Jj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJvbVVSTChyZXF1ZXN0LnVybCgpKTsKLSAg
ICBCbG9iUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoYmxvYkRhdGEs
IHJlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlZ2lz
dGVyQmxvYlJlc291cmNlSGFuZGxlQ29uc3RydWN0b3IoKQotewotICAgIHN0YXRpYyBib29sIGRp
ZFJlZ2lzdGVyID0gZmFsc2U7Ci0gICAgaWYgKCFkaWRSZWdpc3RlcikgewotICAgICAgICBSZXNv
dXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluQ29uc3RydWN0b3IoImJsb2IiLCBjcmVhdGVSZXNv
dXJjZUhhbmRsZSk7Ci0gICAgICAgIFJlc291cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5TeW5j
aHJvbm91c0xvYWRlcigiYmxvYiIsIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOwotICAgICAg
ICBkaWRSZWdpc3RlciA9IHRydWU7Ci0gICAgfQotfQotCi1QYXNzUmVmUHRyPFJlc291cmNlSGFu
ZGxlPiBCbG9iUmVnaXN0cnlJbXBsOjpjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpCi17Ci0gICAg
UmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gQmxvYlJlc291cmNlSGFuZGxlOjpj
cmVhdGVBc3luYyhnZXRCbG9iRGF0YUZyb21VUkwocmVxdWVzdC51cmwoKSksIHJlcXVlc3QsIGNs
aWVudCk7Ci0gICAgaWYgKCFoYW5kbGUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaGFuZGxl
LT5zdGFydCgpOwotICAgIHJldHVybiBoYW5kbGUucmVsZWFzZSgpOwotfQotCiB2b2lkIEJsb2JS
ZWdpc3RyeUltcGw6OmFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0
IEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1zLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVu
Z3RoKQogewogICAgIEFTU0VSVChsZW5ndGggIT0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSk7
CkBAIC0xMTcsNyArODYsNiBAQCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OmFwcGVuZFN0b3JhZ2VJ
dGVtcyhCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IEJsb2JEYXRhSXRlbQogdm9pZCBCbG9iUmVn
aXN0cnlJbXBsOjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBQYXNzUmVmUHRy
PEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHJlZ2lzdGVyQmxvYlJlc291cmNl
SGFuZGxlQ29uc3RydWN0b3IoKTsKIAogICAgIFJlZlB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBC
bG9iRGF0YTo6Y3JlYXRlKCk7CiAgICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBlKGNvbnRlbnRU
eXBlKTsKQEAgLTEyOSw3ICs5Nyw2IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJG
aWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxCbG9iRGF0YUZpCiB2b2lkIEJs
b2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJs
b2JQYXJ0PiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0
cnVjdG9yKCk7CiAKICAgICBSZWZQdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNy
ZWF0ZSgpOwogICAgIGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZShjb250ZW50VHlwZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRs
ZS5jcHAKaW5kZXggMDhkNWY1MWE4ODUyZTMxZjA3ZDFkYWFmODkyNzZiMDRmMGIwNzBkNS4uZTRj
MDQxMWE0MTA1YWMzNjI3NjhkZDlmNWM2NDJkOGQ4NTQ1MjU5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogCiAjaW5jbHVkZSAiQXN5bmNGaWxlU3RyZWFtLmgiCiAjaW5jbHVkZSAi
QmxvYkRhdGEuaCIKKyNpbmNsdWRlICJCbG9iUmVnaXN0cnlJbXBsLmgiCiAjaW5jbHVkZSAiRmls
ZVN0cmVhbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJIVFRQSGVhZGVy
TmFtZXMuaCIKQEAgLTEzNCwyMiArMTM1LDMwIEBAIHZvaWQgQmxvYlJlc291cmNlU3luY2hyb25v
dXNMb2FkZXI6OmRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yCiAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyBCbG9iUmVzb3VyY2VIYW5kbGUKIAotUGFzc1JlZlB0
cjxCbG9iUmVzb3VyY2VIYW5kbGU+IEJsb2JSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQXN5bmMoQmxv
YkRhdGEqIGJsb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNl
SGFuZGxlQ2xpZW50KiBjbGllbnQpCitQYXNzUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gQmxv
YlJlc291cmNlSGFuZGxlOjpjcmVhdGVBc3luYyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgLy8gRklYTUU6IFNob3Vs
ZCBwcm9iYWJseSBjYWxsIGRpZEZhaWwoKSBpbnN0ZWFkIG9mIGJsb2NraW5nIHRoZSBsb2FkIHdp
dGhvdXQgZXhwbGFuYXRpb24uCiAgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShyZXF1ZXN0Lmh0
dHBNZXRob2QoKSwgIkdFVCIpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBCbG9iRGF0YSogYmxvYkRhdGEgPSBudWxscHRyOworICAgIGlmIChibG9i
UmVnaXN0cnkoKS5pc0Jsb2JSZWdpc3RyeUltcGwoKSkKKyAgICAgICAgYmxvYkRhdGEgPSBzdGF0
aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJv
bVVSTChyZXF1ZXN0LnVybCgpKTsKIAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmxvYlJlc291
cmNlSGFuZGxlKGJsb2JEYXRhLCByZXF1ZXN0LCBjbGllbnQsIHRydWUpKTsKIH0KIAotdm9pZCBC
bG9iUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoQmxvYkRhdGEqIGJs
b2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQordm9p
ZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKIHsKICAgICBpZiAoIWVxdWFsSWdu
b3JpbmdDYXNlKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCAiR0VUIikpIHsKICAgICAgICAgZXJyb3Ig
PSBSZXNvdXJjZUVycm9yKHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiwgbWV0aG9kTm90QWxsb3dl
ZCwgcmVzcG9uc2UudXJsKCksICJSZXF1ZXN0IG1ldGhvZCBtdXN0IGJlIEdFVCIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgQmxvYkRhdGEqIGJsb2JEYXRhID0gbnVsbHB0cjsKKyAg
ICBpZiAoYmxvYlJlZ2lzdHJ5KCkuaXNCbG9iUmVnaXN0cnlJbXBsKCkpCisgICAgICAgIGJsb2JE
YXRhID0gc3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRC
bG9iRGF0YUZyb21VUkwocmVxdWVzdC51cmwoKSk7CisKICAgICBCbG9iUmVzb3VyY2VTeW5jaHJv
bm91c0xvYWRlciBsb2FkZXIoZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICBSZWZQdHI8Qmxv
YlJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgQmxvYlJlc291cmNlSGFuZGxl
KGJsb2JEYXRhLCByZXF1ZXN0LCAmbG9hZGVyLCBmYWxzZSkpOwogICAgIGhhbmRsZS0+c3RhcnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291
cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJj
ZUhhbmRsZS5oCmluZGV4IDY3NmRiZmY5ODk3NmJiMDg3ZDViYmM1ZDBjY2FiN2Y0MTNiNDQxZmQu
LjZjMDk5MzZmNzJjYTVlZmE3MTNiNzg4ZGFhYzVlMjA1MDUxZjBiZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaApAQCAt
NDYsMTcgKzQ2LDIxIEBAIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0Owogc3RydWN0IEJsb2JEYXRhSXRlbTsKIAorLy8gRklYTUU6IE1vdmUgQmxvYlJl
c291cmNlSGFuZGxlIG91dCBvZiBSZXNvdXJjZUhhbmRsZS4KIGNsYXNzIEJsb2JSZXNvdXJjZUhh
bmRsZSBmaW5hbCA6IHB1YmxpYyBGaWxlU3RyZWFtQ2xpZW50LCBwdWJsaWMgUmVzb3VyY2VIYW5k
bGUgIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+
IGNyZWF0ZUFzeW5jKEJsb2JEYXRhKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VI
YW5kbGVDbGllbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+
IGNyZWF0ZUFzeW5jKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlSGFuZGxlQ2xpZW50
Kik7CiAKLSAgICBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEJsb2JEYXRh
KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9u
c2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOworICAgIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291
cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwogCiAgICAgdm9pZCBzdGFydCgpOwog
ICAgIGludCByZWFkU3luYyhjaGFyKiwgaW50KTsKIAogICAgIGJvb2wgYWJvcnRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWJvcnRlZDsgfQogCisgICAgLy8gUmVzb3VyY2VIYW5kbGUgbWV0aG9kcy4K
KyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAgQmxv
YlJlc291cmNlSGFuZGxlKEJsb2JEYXRhKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQqLCBib29sIGFzeW5jKTsKICAgICB2aXJ0dWFsIH5CbG9iUmVzb3VyY2VI
YW5kbGUoKTsKQEAgLTY2LDggKzcwLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlk
T3Blbihib29sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZChpbnQpIG92ZXJy
aWRlOwogCi0gICAgLy8gUmVzb3VyY2VIYW5kbGUgbWV0aG9kcy4KLSAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRvU3RhcnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggZjdlMTJjMjExZjAwODYwNGI5
ODliMzU4YTc1NTZkMDJjNjQ1NGI2Zi4uNDdiM2ZhM2I3NGNkOTc5YTAzZTUxNmQyNjcwNTI3YWUx
YjQyYmRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHAKQEAgLTI3Nyw2ICsyNzcsMTkgQEAgU3RyaW5nIEZvcm1EYXRhOjpmbGF0dGVuVG9TdHJpbmco
KSBjb25zdAogICAgIHJldHVybiBMYXRpbjFFbmNvZGluZygpLmRlY29kZShyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihieXRlcy5kYXRhKCkpLCBieXRlcy5zaXplKCkpOwogfQogCitzdGF0
aWMgYm9vbCBibG9iSXNPdXRPZkRhdGUoY29uc3QgQmxvYkRhdGFJdGVtJiBibG9iSXRlbSkKK3sK
KyAgICBBU1NFUlQoYmxvYkl0ZW0udHlwZSA9PSBCbG9iRGF0YUl0ZW06OkZpbGUpOworICAgIGlm
ICghaXNWYWxpZEZpbGVUaW1lKGJsb2JJdGVtLmZpbGUtPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdGltZV90IGZpbGVNb2RpZmljYXRp
b25UaW1lOworICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoYmxvYkl0ZW0uZmlsZS0+
cGF0aCgpLCBmaWxlTW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgcmV0dXJuIGZpbGVNb2RpZmljYXRpb25UaW1lICE9IHN0YXRpY19jYXN0PHRpbWVfdD4oYmxv
Ykl0ZW0uZmlsZS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkpOworfQorCiBzdGF0aWMgdm9p
ZCBhcHBlbmRCbG9iUmVzb2x2ZWQoRm9ybURhdGEqIGZvcm1EYXRhLCBjb25zdCBVUkwmIHVybCkK
IHsKICAgICBpZiAoIWJsb2JSZWdpc3RyeSgpLmlzQmxvYlJlZ2lzdHJ5SW1wbCgpKSB7CkBAIC0y
OTUsOSArMzA4LDEwIEBAIHN0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChGb3JtRGF0YSog
Zm9ybURhdGEsIGNvbnN0IFVSTCYgdXJsKQogICAgICAgICBjb25zdCBCbG9iRGF0YUl0ZW0mIGJs
b2JJdGVtID0gKml0OwogICAgICAgICBpZiAoYmxvYkl0ZW0udHlwZSA9PSBCbG9iRGF0YUl0ZW06
OkRhdGEpCiAgICAgICAgICAgICBmb3JtRGF0YS0+YXBwZW5kRGF0YShibG9iSXRlbS5kYXRhLT5k
YXRhKCkgKyBzdGF0aWNfY2FzdDxpbnQ+KGJsb2JJdGVtLm9mZnNldCgpKSwgc3RhdGljX2Nhc3Q8
aW50PihibG9iSXRlbS5sZW5ndGgoKSkpOwotICAgICAgICBlbHNlIGlmIChibG9iSXRlbS50eXBl
ID09IEJsb2JEYXRhSXRlbTo6RmlsZSkKLSAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmRGaWxl
UmFuZ2UoYmxvYkl0ZW0uZmlsZS0+cGF0aCgpLCBibG9iSXRlbS5vZmZzZXQoKSwgYmxvYkl0ZW0u
bGVuZ3RoKCksIGJsb2JJdGVtLmZpbGUtPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpKTsKLSAg
ICAgICAgZWxzZQorICAgICAgICBlbHNlIGlmIChibG9iSXRlbS50eXBlID09IEJsb2JEYXRhSXRl
bTo6RmlsZSkgeworICAgICAgICAgICAgaWYgKCFibG9iSXNPdXRPZkRhdGUoYmxvYkl0ZW0pKQor
ICAgICAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoYmxvYkl0ZW0uZmlsZS0+
cGF0aCgpLCBibG9iSXRlbS5vZmZzZXQoKSwgYmxvYkl0ZW0ubGVuZ3RoKCksIGJsb2JJdGVtLmZp
bGUtPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpKTsKKyAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCAw
OWQ4ZmIxMjBjZjViNzY0ZDU3MWIwMTVmZTJiNDc5OTJhOTcyMzdlLi4wMzMxODU3N2Y3ODQ0Njll
NTU0MmIwYTA0YTE4MjNiZjdlYzA2ODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTQwNiw2ICs0MDYs
OSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEhUVFBCb2R5KFBhc3NSZWZQdHI8Rm9y
bURhdGE+IGh0dHBCb2R5KQogICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOwogCiAgICAgbV9o
dHRwQm9keSA9IGh0dHBCb2R5OworICAgIC8vIFdlIHJlc29sdmUgYmxvYiByZWZlcmVuY2VzIGhl
cmUgYXMgdGhlIGJsb2IgcmVnaXN0cnkgaXMgaW4gdGhlIFdlYiBQcm9jZXNzLgorICAgIGlmICht
X2h0dHBCb2R5KQorICAgICAgICBtX2h0dHBCb2R5ID0gbV9odHRwQm9keS0+cmVzb2x2ZUJsb2JS
ZWZlcmVuY2VzKCk7CiAKICAgICBtX3Jlc291cmNlUmVxdWVzdEJvZHlVcGRhdGVkID0gdHJ1ZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYmY4NmYwMzFmNWYxNGUy
YjA0MDM0NDI4MzI1N2MwNzk4NGY1NzE0My4uNWFkOTA5NTE1N2UxODQ0N2I1N2Y1ODAwNGZhZGQz
YmQ0YmU4YWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yMzgs
NyArMjM4LDYgQEAgQmxvYiogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlQmxvYigpCiAKICAgICBp
ZiAoIW1fcmVzcG9uc2VCbG9iKSB7CiAgICAgICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
cikgewotICAgICAgICAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJv
bSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZp
Y2llbnQuCiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKICAgICAgICAgICAgIGRhdGEu
YXBwZW5kKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5kYXRhKCksIG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLT5zaXplKCkpOwogICAgICAgICAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlw
ZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKCkpOyAvLyBy
ZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBiZSBpbmNvcnJl
Y3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVn
aXN0cnlQcm94eS5oCmluZGV4IDhjYzA2OWFlNWYyNTI4YmQwMzAyMzc0YzU2NzNhN2ZjOGUyMWM5
ZDIuLmI1ZmFkOWNjY2IxZWI3YzY2MTdhMjc0NTM3YmViZDQwMzU3MzNmN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5o
CkBAIC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgYXMgQmxvYiByZXNvbHV0aW9uICYgcmVnaXN0cmF0aW9uIG5vIGxvbmdlciBoYXBw
ZW5zIGluIHRoZSBOZXR3b3JraW5nIHByb2Nlc3MuCiBjbGFzcyBCbG9iUmVnaXN0cnlQcm94eSBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0cnkgewogcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDg4Y2IwNjRl
MTA3MjkzZDc5MDk2NWEwNzRhZGMxMmNkYWM4MGQ2OGYuLjdkNzA3ZDM3NmVkMmQ1ZDVhMzQ4NWM2
MTM1YTlmNzA3NjFkZDU5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC00Niwx
MCArNDYsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZWZlcnJlclBvbGljeS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1N1YnJlc291cmNlTG9hZGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKQEAgLTY4LDEy
ICs2NiwxMSBAQCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6On5XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIoKQogewogfQogCi1QYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBXZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiBmcmFtZSwgQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK2Jvb2wgV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChTdWJyZXNvdXJjZUxvYWRlciogbG9h
ZGVyKQogewotICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gU3VicmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZShmcmFtZSwgcmVzb3VyY2UsIHJlcXVlc3QsIG9wdGlvbnMpOwogICAg
IGlmIChsb2FkZXIpCi0gICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCksIHJlc291cmNl
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJlclBvbGljeURl
ZmF1bHQpOwotICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgpOworICAgICAgICBzY2hlZHVsZUxv
YWQobG9hZGVyLCBsb2FkZXItPmNhY2hlZFJlc291cmNlKCksIGxvYWRlci0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJlclBvbGljeURlZmF1bHQpOworICAg
IHJldHVybiBsb2FkZXI7CiB9CiAKIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI+IFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZy
YW1lKiBmcmFtZSwgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqIGNsaWVudCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCmluZGV4
IDRlY2VmM2ViMTczOWZmOTE1Y2RlOTFjNzg4MzNhMzIzYzkxMDI4MzQuLjhlM2FhZDc3NDFlMzgx
MDY4N2ExYmY4ZDU4ZDg3YjQ1MzMxN2U1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAg
LTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VMb2FkUHJpb3JpdHkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlTG9hZFNjaGVkdWxlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1N1YnJlc291cmNlTG9hZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkBAIC00NSw3ICs0NSw3IEBA
IHB1YmxpYzoKICAgICBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKICAgICB2aXJ0dWFsIH5X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKFdlYkNv
cmU6OkZyYW1lKiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoV2ViQ29yZTo6
U3VicmVzb3VyY2VMb2FkZXIqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChXZWJDb3Jl
OjpGcmFtZSosIFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGVlNTY5NzhmZjdhMmFiY2FiYzViOTVh
N2E3ZWJkN2VlMmViOTc5ZjguLjI3MDhmN2U3YzgyYWYzYTdmMzZiM2M1NTBkMDBhOTNmOGRlMzBj
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTI3NSwxMSArMjc1
LDEwIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0CiAgICAgfQogfQogCisvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgYXMgQmxvYlJlZ2lzdHJ5IGlzIG5vIGxvbmdlciBpbiBOZXR3b3JrUHJvY2Vzcy4K
IEJsb2JSZWdpc3RyeSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnko
KQogewotICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkp
Ci0gICAgICAgIHJldHVybiBMb2FkZXJTdHJhdGVneTo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCk7Ci0g
ICAgcmV0dXJuIG5ldyBCbG9iUmVnaXN0cnlQcm94eTsgICAgCisgICAgcmV0dXJuIExvYWRlclN0
cmF0ZWd5OjpjcmVhdGVCbG9iUmVnaXN0cnkoKTsKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241941</attachid>
            <date>2014-11-20 05:25:36 -0800</date>
            <delta_ts>2014-11-25 00:01:03 -0800</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-138835-20141120142550.patch</filename>
            <type>text/plain</type>
            <size>35640</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2MzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY0MWYwZjQ3ZTIyOTA0
NWJjMjJhM2Q4OGUyZDk1Y2I0NDE2NmNhMS4uN2JiODg0ZDMyYjk5YTk5NzE2ZWRjNjIxMmJmZTVh
YzhjNDZmNzU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE0LTExLTIwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgTW92ZSBC
bG9iIGxvYWRpbmcgaW4gV2ViIFByb2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg4MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgTWFkZSBibG9iIGxvYWRpbmcgaGFwcGVuaW5nIGF0IFN1YnJlc291
cmNlTG9hZGVyIGxldmVsLgorICAgICAgICBFbnN1cmUgdGhhdCBibG9iIHJlZ2lzdHJhdGlvbiBh
bmQgcmVzb2x1dGlvbiBhbHdheXMgaGFwcGVuIHdpdGhpbiBXZWIgUHJvY2Vzcy4KKyAgICAgICAg
SW4gcGFydGljdWxhciBibG9icyBhcmUgcmVzb2x2ZWQgd2l0aGluIGZvcm0gZGF0YSB3aGVuIGFk
ZGVkIGFzIEhUVFAgYm9keSBzbyB0aGF0IHRoZSBuZXR3b3JrIGxheWVyIGRvZXMgbm90IG5lZWQg
dG8gZG8gdGhhdCBhbnltb3JlLgorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzIGNvdmVyIHRoaXMg
cGF0Y2guCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IE1h
ZGUgQmxvYlJlc291cmNlSGFuZGxlLmggYWNjZXNzaWJsZSB0byBTdWJyZXNvdXJjZUxvYWRlci5j
cHAuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KTogRGlyZWN0IGNhbGwgdG8g
U3VicmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkuCisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKTogTW92ZWQgU3VicmVz
b3VyY2VMb2FkZXIgb2JqZWN0IGNyZWF0aW9uIGludG8gQ2FjaGVkUmVzb3VyY2UuCisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oOiBEaXR0by4KKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSk6IE1ha2UgdXNlIG9mIGNhbmNlbEhhbmRs
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjYW5jZWwpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjYW5jZWxIYW5kbGUpOiBWaXJ0dWFsIG1l
dGhvZCB0byBjYW5jZWwgdGhlIHJlc291cmNlIGhhbmRsZSwgb3ZlcnJpZGVuIGluIFN1YnJlc291
cmNlTG9hZGVyIHRvIGFsc28gY2FuY2VsIHRoZSBibG9iIGhhbmRsZS4KKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaDogQWRkZWQgY2FuY2VsSGFuZGxlIGFuZCBhY2Nlc3NvciB0byBm
cmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpmcmFtZSk6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpsb2FkU3luY2hyb25vdXNseSk6IENlbnRyYWxpemVzIGFsbCBzeW5jIGxv
YWRpbmcuCisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6c2NoZWR1bGVMb2Fk
KTogQ2VudHJhbGl6ZXMgYWxsIGFzeW5jIGxvYWRpbmcgc3RhcnQuCisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6Y2FuY2VsSGFuZGxlKTogQ2FuY2VsIGJsb2IgaGFuZGxlIGlm
IG9uZS4KKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOiBjb25zdCBw
YXJhbWV0ZXIgY2hhbmdlLgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWQpOiBEaXJlY3RseSBj
cmVhdGUgU3VicmVzb3VyY2VMb2FkZXIgb2JqZWN0IGFuZCByZXF1ZXN0IHRvIGxvYWQgaXQuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOiBSZW1vdmVk
IFJlc291cmNlSGFuZGxlIGNhbGxiYWNrIGhvb2suCisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVn
aXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVz
b3VyY2VIYW5kbGU6OmNyZWF0ZUFzeW5jKTo6IERpcmVjdCBoYW5kbGluZyBvZiBibG9iIHVybCBy
ZXNvbHV0aW9uLgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KTogRGlyZWN0IGhhbmRsaW5nIG9mIGJsb2IgdXJsIHJlc29sdXRp
b24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaDogRGl0
dG8gcGx1cyBtYWRlIGNhbmNlbCgpIHB1YmxpYy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsb2JJc091dE9mRGF0ZSk6IEFkZGVk
IGNoZWNrIHdoZXRoZXIgYmxvYiBmaWxlIGl0ZW0gaXMgb3V0IG9mIGRhdGUgb3Igbm90ICh0YWtl
biBmcm9tIHNvdXAgYmFja2VuZCkuCisgICAgICAgIChXZWJDb3JlOjphcHBlbmRCbG9iUmVzb2x2
ZWQpOiBFbnN1cmUgdGhhdCBvdXQtb2YtZGF0ZSBmaWxlcyBhcmUgbm90IGFjdHVhbGx5IGFkZGVk
IHRvIHRoZSBmb3JtIGRhdGEuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNl
dEhUVFBCb2R5KTogUmVzb2x2ZSBibG9icyBpZiBhbnkuCisgICAgICAgICogeG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUJs
b2IpOiBSZW1vdmVkIGZpeG1lLgorCiAyMDE0LTExLTEyICBTZXJnaW8gVmlsbGFyIFNlbmluICA8
c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIFJlcGxhY2Ug
dGhlIHVzYWdlIG9mIHNpemVfdCBieSB1bnNpZ25lZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDI3NTZhYmY0YWVm
MTYxNGI5NmQ0NmEyNzc1YTIyY2I4MTEwNzVlYmUuLjQ0MmJjMDE0ZTRjNWQ5MGQ4YzIwNWZkMDQ2
ODNhMjY3MmY3NDYwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0xMS0yMCAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIE1v
dmUgQmxvYiBsb2FkaW5nIGluIFdlYiBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg4MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQ
cm94eS5oOiBBZGRlZCBhIEZJWE1FIGFzIHRoaXMgY2xhc3MgbWF5IG5vIGxvbmdlciBiZSBuZWVk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1
bGVTdWJyZXNvdXJjZUxvYWQpOiBNb3ZlZCBTdWJyZXNvdXJjZUxvYWRlciBvYmplY3QgY3JlYXRp
b24gaW50byBDYWNoZWRSZXNvdXJjZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkpOiBFbnN1cmUgdGhhdCB3
ZSB1c2UgV2ViIFByb2Nlc3MgYmxvYiByZWdpc3RyeS4KKwogMjAxNC0xMS0yMCAgQ3NhYmEgT3N6
dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtHVEtdIFVSVEJGIGFmdGVy
IHIxNzYzNjMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYzY4Y2VmYTgwZGM4YjExNWRlYTczYTFhZDMwZDgzYTJjZGE1MjVlNC4u
NDVkMmY1MjJlMTY4N2JkZDhkMjJiOTk3ZTUzOTAxMDdjZWNlOWVhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE4Niw3ICsx
MTg2LDcgQEAKIAkJMkU5NEY0M0MxMTkyMDdEQTAwQjdGNzVEIC8qIEpTRmlsZVJlYWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU5NEY0M0ExMTky
MDdEQTAwQjdGNzVEIC8qIEpTRmlsZVJlYWRlci5oICovOyB9OwogCQkyRUE3NjgwNDBGRTcxMjY0
MDBBQjlDOEEgLyogV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUE3NjgwMzBGRTcxMjY0MDBBQjlDOEEgLyog
V29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmggKi87IH07CiAJCTJFQjRCQ0QyMTIxRjAzRTMwMEVD
NDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkVCNEJDRDAxMjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNv
dXJjZUhhbmRsZS5jcHAgKi87IH07Ci0JCTJFQjRCQ0QzMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9i
UmVzb3VyY2VIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJFQjRCQ0QxMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuaCAq
LzsgfTsKKwkJMkVCNEJDRDMxMjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVCNEJDRDEx
MjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRsZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFQ0Y3QURDMTAxNjJCMzgwMDQyN0RF
NyAvKiBKU0Vycm9yRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkVDRjdBREExMDE2MkIzODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5jcHAg
Ki87IH07CiAJCTJFQ0Y3QUREMTAxNjJCMzgwMDQyN0RFNyAvKiBKU0Vycm9yRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQ0Y3QURCMTAxNjJC
MzgwMDQyN0RFNyAvKiBKU0Vycm9yRXZlbnQuaCAqLzsgfTsKIAkJMkVDRjdBRTExMDE2MkI1ODAw
NDI3REU3IC8qIEVycm9yRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkVDRjdBREUxMDE2MkI1ODAwNDI3REU3IC8qIEVycm9yRXZlbnQuY3Bw
ICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNTE5NDA4YjU3
ZjYyNjEzMmE5YWUzMmJkNTA0NzU5OGQzYzVkMzdjOC4uNGI3NjUxMzE2NmMxZmY1YjUxNzM4OWRi
YTQyMzE0MTA0MTBmMzgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBA
IC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKIAogI2luY2x1ZGUgIkFY
T2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIgogI2luY2x1
ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkJlZm9yZVVubG9hZEV2ZW50
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUGFnZS5oIgpAQCAtMTEzLDYgKzExMiw3IEBACiAjaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJTdWJmcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTI2NzMsMTEgKzI2NzMsNyBA
QCB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdQogCiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKSB7CiAg
ICAgICAgIEFTU0VSVCghbmV3UmVxdWVzdC5pc051bGwoKSk7Ci0gICAgICAgIAotICAgICAgICBp
ZiAoIWRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZFN5
bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkgewotICAgICAg
ICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkobmV0d29ya2luZ0NvbnRleHQoKSwgaWRlbnRpZmllciwgbmV3UmVxdWVz
dCwgc3RvcmVkQ3JlZGVudGlhbHMsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGVycm9yLCByZXNw
b25zZSwgZGF0YSk7Ci0gICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJy
b3IsIHJlc3BvbnNlLCBkYXRhKTsKLSAgICAgICAgfQorICAgICAgICBTdWJyZXNvdXJjZUxvYWRl
cjo6bG9hZFN5bmNocm9ub3VzbHkodGhpcywgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgc3RvcmVk
Q3JlZGVudGlhbHMsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGVycm9yLCByZXNwb25zZSwgZGF0
YSk7CiAgICAgfQogICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMo
bV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgLTEsIGVycm9yKTsKICAgICByZXR1cm4gaWRlbnRpZmll
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAK
aW5kZXggNmQ4YjllN2ZlNDk2YmE5NTVhMTg4ODdmZTliNjA1ZDcwNmMyOGU5NC4uMjE2N2I5YmFk
ZDIzOGU1MzRhMTE4ZjIzNzcxZmNhOWI4OTI5MDZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTExMiwxMSArMTEyLDEwIEBAIFJl
c291cmNlTG9hZFNjaGVkdWxlcjo6flJlc291cmNlTG9hZFNjaGVkdWxlcigpCiB7CiB9CiAKLVBh
c3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1
bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Us
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zJiBvcHRpb25zKQorYm9vbCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVz
b3VyY2VMb2FkKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIpCiB7Ci0gICAgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBy
ZXNvdXJjZSwgcmVxdWVzdCwgb3B0aW9ucyk7CiAgICAgaWYgKGxvYWRlcikKLSAgICAgICAgc2No
ZWR1bGVMb2FkKGxvYWRlci5nZXQoKSk7CisgICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIpOwog
I2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBTaW5jZSB3ZSBkZWZlciBsb2FkZXIgaW5pdGlhbGl6
YXRpb24gdW50aWwgc2NoZWR1bGluZyBvbiBpT1MsIHRoZSBmcmFtZQogICAgIC8vIGxvYWQgZGVs
ZWdhdGUgdGhhdCB3b3VsZCBiZSBjYWxsZWQgaW4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSgp
IG9uCkBAIC0xMjQsOSArMTIzLDkgQEAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmEKICAgICAvLyBj
YWxsZXJzIG9mIHRoaXMgbWV0aG9kIGlzIHRoYXQgYSBudWxsIGxvYWRlciBpcyByZXR1cm5lZCBp
ZiB0aGUgbG9hZCB3YXMKICAgICAvLyBjYW5jZWxsZWQgYnkgYSBmcmFtZSBsb2FkIGRlbGVnYXRl
LgogICAgIGlmICghbG9hZGVyIHx8IGxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgotICAg
IHJldHVybiBsb2FkZXIucmVsZWFzZSgpOworICAgIHJldHVybiB0cnVlOwogfQogCiBQYXNzUmVm
UHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNj
aGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSogZnJhbWUsIE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCA1YjM3
NDJmMzkzMWYwOWZjMzVhOTE2YjY1MWIyNjE5OTQxYWUzMzRkLi40NWQ0MDRhNzJkOGFlZDlmYzgz
M2Q1OTU0NjQ2ODM4ZTMxNDNhYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZFNjaGVkdWxlci5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFJlc291cmNlTG9hZFNj
aGVkdWxlciB7CiBwdWJsaWM6CiAgICAgZnJpZW5kIFJlc291cmNlTG9hZFNjaGVkdWxlciogcmVz
b3VyY2VMb2FkU2NoZWR1bGVyKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBhc3NS
ZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwg
Q2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgc2NoZWR1bGVT
dWJyZXNvdXJjZUxvYWQoU3VicmVzb3VyY2VMb2FkZXIqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1
Z2luU3RyZWFtTG9hZChGcmFtZSosIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50Kiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHJlbW92ZShSZXNvdXJjZUxvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2Fk
aW5nKFJlc291cmNlTG9hZGVyKiwgYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAppbmRleCBlNTIyZDNjYWZkODcwODVjZjlhNzdiNzMxMTZmNzIyOGU2YzlkNmU3
Li5kNjhkNDBlNjRiOGRkZTU5MjU4YTVlN2QyODM1MDE4YjAxZTE2NGUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIxMCw4ICsyMTAsNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQogewogICAgIEFT
U0VSVCghbV9kb2N1bWVudExvYWRlci0+aXNTdWJzdGl0dXRlTG9hZFBlbmRpbmcodGhpcykpOwog
ICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5yZXNvdXJjZUxvYWRT
Y2hlZHVsZXIoKS0+cmVtb3ZlKHRoaXMpOwotICAgIGlmIChtX2hhbmRsZSkKLSAgICAgICAgbV9o
YW5kbGUtPmNhbmNlbCgpOworICAgIGNhbmNlbEhhbmRsZSgpOwogfQogCiB2b2lkIFJlc291cmNl
TG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkK
QEAgLTQyOCwxMCArNDI3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQogICAgICAgICAgICAgbV9oYW5kbGUtPmNsZWFyQXV0aGVudGlj
YXRpb24oKTsKIAogICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5jYW5jZWxQZW5kaW5nU3Vic3Rp
dHV0ZUxvYWQodGhpcyk7Ci0gICAgICAgIGlmIChtX2hhbmRsZSkgewotICAgICAgICAgICAgbV9o
YW5kbGUtPmNhbmNlbCgpOwotICAgICAgICAgICAgbV9oYW5kbGUgPSAwOwotICAgICAgICB9Cisg
ICAgICAgIGNhbmNlbEhhbmRsZSgpOwogICAgICAgICBjbGVhbnVwRm9yRXJyb3Iobm9uTnVsbEVy
cm9yKTsKICAgICB9CiAKQEAgLTQ0OSw2ICs0NDUsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
Y2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIHJlbGVhc2VSZXNvdXJjZXMo
KTsKIH0KIAordm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsSGFuZGxlKCkKK3sKKyAgICBpZiAo
bV9oYW5kbGUpIHsKKyAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOworICAgICAgICBtX2hhbmRs
ZSA9IDA7CisgICAgfQorfQorCiBSZXNvdXJjZUVycm9yIFJlc291cmNlTG9hZGVyOjpjYW5jZWxs
ZWRFcnJvcigpCiB7CiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG1f
cmVxdWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDE2MTVm
NmQ5YmY4ZGMzNGE0ZTliY2Y0NmJiNjNiNjhmNmNmZGEwMWEuLjM5M2JmZDhjYmRmOWE0ZTRmZmQz
NDI4YmFkMDY5NTI4Y2I3NmM1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgaU9TT3JpZ2luYWxSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gcmVxdWVzdCgpOyB9
CiAjZW5kaWYKIAorICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhbWUuZ2V0KCk7IH07CiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZy
YW1lTG9hZGVyKCkgY29uc3Q7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9kb2N1bWVudExvYWRlci5nZXQoKTsgfQogICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0KCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW5hbFJlcXVlc3Q7IH0KQEAgLTE1MSw2ICsxNTIsOCBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICBib29sIHdhc0NhbmNlbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3Rh
dHVzID49IENhbmNlbGxlZDsgfQogCisgICAgdmlydHVhbCB2b2lkIGNhbmNlbEhhbmRsZSgpOwor
CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSk7CiAKICAgICBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlv
bnMoKSB7IHJldHVybiBtX29wdGlvbnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IGUxNWJkZmJjZDVmZDNhMmM1NDc2MTJlZmRiZTg0NmJmZDZk
N2EwZWEuLjI1OThjNDU5ODYyMjY5MzRjNmM1MThiYjJiMjQ0MDY1Y2U1N2ZmNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMjksMjAgKzI5LDI1
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIK
IAorI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50
TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgor
I2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VBY3Rp
dml0eUFzc2VydGlvblRva2VuLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCisKICNpZiBQTEFU
Rk9STShJT1MpCiAjaW5jbHVkZSA8UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CiAjZW5k
aWYKQEAgLTEwMCw3ICsxMDUsNDEgQEAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gU3Vi
cmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIENhY2hlZFJlc28KICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHN1YmxvYWRlci5yZWxlYXNlKCk7CiB9Ci0gICAg
CisKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVy
KiBmcmFtZUxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBDbGll
bnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIFJlc291cmNlRXJyb3Im
IGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQor
eworICAgIGlmIChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImJsb2IiKSkgeworICAgICAgICBC
bG9iUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVxdWVzdCwgZXJy
b3IsIHJlc3BvbnNlLCBkYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgh
ZnJhbWVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1h
eWJlTG9hZFN5bmNocm9ub3VzbHkocmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkgewor
ICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShmcmFtZUxvYWRlci0+bmV0d29ya2luZ0NvbnRleHQoKSwgaWRlbnRp
ZmllciwgcmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlhbHMsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ks
IGVycm9yLCByZXNwb25zZSwgZGF0YSk7CisgICAgICAgIGZyYW1lTG9hZGVyLT5kb2N1bWVudExv
YWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9u
b3VzbHkocmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKKyAgICB9Cit9CisKK2Jvb2wg
U3VicmVzb3VyY2VMb2FkZXI6OnNjaGVkdWxlTG9hZCgpCit7CisgICAgaWYgKHVybCgpLnByb3Rv
Y29sSXMoImJsb2IiKSkgeworICAgICAgICBtX2Jsb2JIYW5kbGUgPSBCbG9iUmVzb3VyY2VIYW5k
bGU6OmNyZWF0ZUFzeW5jKHJlcXVlc3QoKSwgdGhpcyk7CisgICAgICAgIGlmICghbV9ibG9iSGFu
ZGxlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2Jsb2JIYW5kbGUtPnN0
YXJ0KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPnJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5z
Y2hlZHVsZVN1YnJlc291cmNlTG9hZCh0aGlzKTsKK30KKwordm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6Y2FuY2VsSGFuZGxlKCkKK3sKKyAgICBpZiAobV9ibG9iSGFuZGxlKSB7CisgICAgICAgIG1f
YmxvYkhhbmRsZS0+Y2FuY2VsKCk7CisgICAgICAgIG1fYmxvYkhhbmRsZSA9IG51bGxwdHI7Cisg
ICAgfQorICAgIFJlc291cmNlTG9hZGVyOjpjYW5jZWxIYW5kbGUoKTsKK30KKwogI2lmIFBMQVRG
T1JNKElPUykKIGJvb2wgU3VicmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygpCiB7CkBAIC0x
MTMsMTEgKzE1Miw2IEBAIGJvb2wgU3VicmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygpCiB9
CiAjZW5kaWYKIAotQ2FjaGVkUmVzb3VyY2UqIFN1YnJlc291cmNlTG9hZGVyOjpjYWNoZWRSZXNv
dXJjZSgpCi17Ci0gICAgcmV0dXJuIG1fcmVzb3VyY2U7Ci19Ci0KIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmNhbmNlbElmTm90RmluaXNoaW5nKCkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBJbml0
aWFsaXplZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXgg
YzIxZjEyOTM0MjZhNzk1YmU0YzE0ZDFiZDBlMjE5OTY3NzA1NzlmOS4uOGI5ODYzZDAyZGMzYWYw
NzhhNTlkNmZkMGJmMDUxNzgzMzJjMDUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZm5kZWYgU3VicmVzb3VyY2VMb2Fk
ZXJfaAogI2RlZmluZSBTdWJyZXNvdXJjZUxvYWRlcl9oCiAKKyNpbmNsdWRlICJCbG9iUmVzb3Vy
Y2VIYW5kbGUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VMb2FkZXIuaCIKIApAQCAtNDQsMTMgKzQ1LDE1IEBAIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIAogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXIgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2Fk
ZXIgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBDYWNoZWRSZXNvdXJj
ZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYp
OworICAgIHN0YXRpYyB2b2lkIGxvYWRTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVudGlhbHMsIENsaWVu
dENyZWRlbnRpYWxQb2xpY3ksIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVj
dG9yPGNoYXI+Jik7CiAKICAgICB2aXJ0dWFsIH5TdWJyZXNvdXJjZUxvYWRlcigpOwogCisgICAg
Ym9vbCBzY2hlZHVsZUxvYWQoKTsKICAgICB2b2lkIGNhbmNlbElmTm90RmluaXNoaW5nKCk7CiAg
ICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBvdmVycmlkZTsKLSAgICBDYWNo
ZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVk
UmVzb3VyY2UoKSB7IHJldHVybiBtX3Jlc291cmNlOyB9OwogCiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgIHZpcnR1YWwgYm9vbCBzdGFydExvYWRpbmcoKSBvdmVycmlkZTsKQEAgLTYzLDYgKzY2LDcg
QEAgcHJpdmF0ZToKICAgICBTdWJyZXNvdXJjZUxvYWRlcihGcmFtZSosIENhY2hlZFJlc291cmNl
KiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaW5p
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsSGFuZGxlKCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBv
dmVycmlkZTsKQEAgLTEyMiw2ICsxMjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9sb2FkaW5n
TXVsdGlwYXJ0Q29udGVudDsKICAgICBTdWJyZXNvdXJjZUxvYWRlclN0YXRlIG1fc3RhdGU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlcXVlc3RDb3VudFRyYWNrZXI+IG1fcmVxdWVzdENvdW50VHJh
Y2tlcjsKKyAgICBSZWZQdHI8QmxvYlJlc291cmNlSGFuZGxlPiBtX2Jsb2JIYW5kbGU7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA5Y2ZiNTA1YjBiYjc5NDg2NGVhY2JmMWFhOWU1YTdkZjVh
NWNkMWY1Li4wZjQyMGViOGI2ZWZiZWRiNzE2NzIzYzNmYTdiOWI3ZWM0YjFmYzE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpt
YXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQorYm9v
bCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgaWYgKHNob3VsZExvYWRSZXNvdXJjZUZyb21BcHBs
aWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCAzZGRmNjk0
MTUxM2NlZWZhODU5M2Y2ZTkzY2QxYmU4MDgyZGFlYzNjLi5hYWNlNzE2ZDJhZjUwNWJhZmVkZmMx
MDI1Y2U4ZTRmMWU0MTZkYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtMTI3LDcgKzEyNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxs
YmFja0ZvclJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yRXJyb3Io
UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICAgICAgYm9vbCBt
YXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKTsKKyAgICAgICAgYm9vbCBtYXli
ZUxvYWRTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3Im
LCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKTsKICAgICAgICAgdm9pZCBt
YXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwogCiAg
ICAgICAgIGJvb2wgY2FuQ2FjaGVJblBhZ2VDYWNoZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNjE3MzAxNzdkNTI2ZDA4NjgxZDEx
MjVhNThmOGU4MzNiMDA5ODg1Yy4uNDVmZjFkMzMwNzNiODk5ZDdjM2IzZGVhMmY0YTVjYWY1MWY1
YzBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwCkBAIC0zNSwxNyArMzUsMTUgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5Lmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCi0jaW5jbHVk
ZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKLSNp
bmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xp
Y3kuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlVSTC5oIgor
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CkBAIC0yNzQsOCArMjcy
LDggQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2Fj
aGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc28KICAgICAgICAgbV9mcmFnbWVudElkZW50aWZp
ZXJGb3JSZXF1ZXN0ID0gU3RyaW5nKCk7CiAgICAgfQogCi0gICAgbV9sb2FkZXIgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkt
PnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0
aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsKLSAgICBpZiAoIW1fbG9hZGVyKSB7CisgICAgbV9sb2Fk
ZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGNhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFt
ZSgpLCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsKKyAgICBpZiAoIShtX2xvYWRlciAmJiBtX2xv
YWRlci0+c2NoZWR1bGVMb2FkKCkpKSB7CiAgICAgICAgIGZhaWxCZWZvcmVTdGFydGluZygpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggZjA5YjllZDM4N2Y0NjcxOTYzOWQw
ZGYzMmM5ZjdmNzU2Y2ZkNDA2Zi4uMGVjNDhjYjc2YzhhMTU0NTc5OTdlYjZhNmNkNDM3OWFiMTYz
MzgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVn
aXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuY3BwCkBAIC01NCwzNyArNTQsNiBAQCBCbG9iUmVnaXN0cnlJbXBsOjp+Qmxv
YlJlZ2lzdHJ5SW1wbCgpCiB7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxl
PiBjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEJs
b2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnkoKSkuY3JlYXRlUmVzb3VyY2VIYW5kbGUocmVx
dWVzdCwgY2xpZW50KTsKLX0KLQotc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3Rv
cmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQotewotICAgIEJsb2JEYXRhKiBibG9iRGF0YSA9
IHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnkoKSkuZ2V0QmxvYkRh
dGFGcm9tVVJMKHJlcXVlc3QudXJsKCkpOwotICAgIEJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJl
c291cmNlU3luY2hyb25vdXNseShibG9iRGF0YSwgcmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBk
YXRhKTsKLX0KLQotc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iUmVzb3VyY2VIYW5kbGVDb25zdHJ1
Y3RvcigpCi17Ci0gICAgc3RhdGljIGJvb2wgZGlkUmVnaXN0ZXIgPSBmYWxzZTsKLSAgICBpZiAo
IWRpZFJlZ2lzdGVyKSB7Ci0gICAgICAgIFJlc291cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5D
b25zdHJ1Y3RvcigiYmxvYiIsIGNyZWF0ZVJlc291cmNlSGFuZGxlKTsKLSAgICAgICAgUmVzb3Vy
Y2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKCJibG9iIiwgbG9hZFJl
c291cmNlU3luY2hyb25vdXNseSk7Ci0gICAgICAgIGRpZFJlZ2lzdGVyID0gdHJ1ZTsKLSAgICB9
Ci19Ci0KLVBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IEJsb2JSZWdpc3RyeUltcGw6OmNyZWF0
ZVJlc291cmNlSGFuZGxlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VI
YW5kbGVDbGllbnQqIGNsaWVudCkKLXsKLSAgICBSZWZQdHI8QmxvYlJlc291cmNlSGFuZGxlPiBo
YW5kbGUgPSBCbG9iUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUFzeW5jKGdldEJsb2JEYXRhRnJvbVVS
TChyZXF1ZXN0LnVybCgpKSwgcmVxdWVzdCwgY2xpZW50KTsKLSAgICBpZiAoIWhhbmRsZSkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBoYW5kbGUtPnN0YXJ0KCk7Ci0gICAgcmV0dXJuIGhhbmRs
ZS5yZWxlYXNlKCk7Ci19Ci0KIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6YXBwZW5kU3RvcmFnZUl0
ZW1zKEJsb2JEYXRhKiBibG9iRGF0YSwgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYgaXRlbXMsIGxv
bmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKGxlbmd0aCAh
PSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKTsKQEAgLTExNyw3ICs4Niw2IEBAIHZvaWQgQmxv
YlJlZ2lzdHJ5SW1wbDo6YXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JEYXRhKiBibG9iRGF0YSwgY29u
c3QgQmxvYkRhdGFJdGVtCiB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgVVJMJiB1cmwsIFBhc3NSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBmaWxl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgcmVnaXN0ZXJCbG9iUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3RvcigpOwogCiAgICAg
UmVmUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKICAgICBibG9i
RGF0YS0+c2V0Q29udGVudFR5cGUoY29udGVudFR5cGUpOwpAQCAtMTI5LDcgKzk3LDYgQEAgdm9p
ZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBQ
YXNzUmVmUHRyPEJsb2JEYXRhRmkKIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0cywgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHJl
Z2lzdGVyQmxvYlJlc291cmNlSGFuZGxlQ29uc3RydWN0b3IoKTsKIAogICAgIFJlZlB0cjxCbG9i
RGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKCk7CiAgICAgYmxvYkRhdGEtPnNldENv
bnRlbnRUeXBlKGNvbnRlbnRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAppbmRleCAwOGQ1ZjUxYTg4NTJlMzFm
MDdkMWRhYWY4OTI3NmIwNGYwYjA3MGQ1Li5lNGMwNDExYTQxMDVhYzM2Mjc2OGRkOWY1YzY0MmQ4
ZDg1NDUyNTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJB
c3luY0ZpbGVTdHJlYW0uaCIKICNpbmNsdWRlICJCbG9iRGF0YS5oIgorI2luY2x1ZGUgIkJsb2JS
ZWdpc3RyeUltcGwuaCIKICNpbmNsdWRlICJGaWxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgpAQCAtMTM0LDIyICsxMzUsMzAg
QEAgdm9pZCBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6ZGlkRmFpbChSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3IKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vIEJs
b2JSZXNvdXJjZUhhbmRsZQogCi1QYXNzUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gQmxvYlJl
c291cmNlSGFuZGxlOjpjcmVhdGVBc3luYyhCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCkKK1Bhc3NS
ZWZQdHI8QmxvYlJlc291cmNlSGFuZGxlPiBCbG9iUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUFzeW5j
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNs
aWVudCkKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHByb2JhYmx5IGNhbGwgZGlkRmFpbCgpIGlu
c3RlYWQgb2YgYmxvY2tpbmcgdGhlIGxvYWQgd2l0aG91dCBleHBsYW5hdGlvbi4KICAgICBpZiAo
IWVxdWFsSWdub3JpbmdDYXNlKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCAiR0VUIikpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEJsb2JEYXRhKiBibG9i
RGF0YSA9IG51bGxwdHI7CisgICAgaWYgKGJsb2JSZWdpc3RyeSgpLmlzQmxvYlJlZ2lzdHJ5SW1w
bCgpKQorICAgICAgICBibG9iRGF0YSA9IHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihi
bG9iUmVnaXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9tVVJMKHJlcXVlc3QudXJsKCkpOwogCiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBCbG9iUmVzb3VyY2VIYW5kbGUoYmxvYkRhdGEsIHJlcXVlc3Qs
IGNsaWVudCwgdHJ1ZSkpOwogfQogCi12b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCit2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJl
c291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291
cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+
JiBkYXRhKQogewogICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UocmVxdWVzdC5odHRwTWV0aG9k
KCksICJHRVQiKSkgewogICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3Iod2ViS2l0QmxvYlJl
c291cmNlRG9tYWluLCBtZXRob2ROb3RBbGxvd2VkLCByZXNwb25zZS51cmwoKSwgIlJlcXVlc3Qg
bWV0aG9kIG11c3QgYmUgR0VUIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBCbG9i
RGF0YSogYmxvYkRhdGEgPSBudWxscHRyOworICAgIGlmIChibG9iUmVnaXN0cnkoKS5pc0Jsb2JS
ZWdpc3RyeUltcGwoKSkKKyAgICAgICAgYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0
cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJvbVVSTChyZXF1ZXN0LnVybCgp
KTsKKwogICAgIEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyIGxvYWRlcihlcnJvciwgcmVz
cG9uc2UsIGRhdGEpOwogICAgIFJlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IGFk
b3B0UmVmKG5ldyBCbG9iUmVzb3VyY2VIYW5kbGUoYmxvYkRhdGEsIHJlcXVlc3QsICZsb2FkZXIs
IGZhbHNlKSk7CiAgICAgaGFuZGxlLT5zdGFydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmgKaW5kZXggNjc2ZGJmZjk4OTc2
YmIwODdkNWJiYzVkMGNjYWI3ZjQxM2I0NDFmZC4uNmMwOTkzNmY3MmNhNWVmYTcxM2I3ODhkYWFj
NWUyMDUwNTFmMGJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5oCkBAIC00NiwxNyArNDYsMjEgQEAgY2xhc3MgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBzdHJ1Y3QgQmxvYkRhdGFJ
dGVtOwogCisvLyBGSVhNRTogTW92ZSBCbG9iUmVzb3VyY2VIYW5kbGUgb3V0IG9mIFJlc291cmNl
SGFuZGxlLgogY2xhc3MgQmxvYlJlc291cmNlSGFuZGxlIGZpbmFsIDogcHVibGljIEZpbGVTdHJl
YW1DbGllbnQsIHB1YmxpYyBSZXNvdXJjZUhhbmRsZSAgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gY3JlYXRlQXN5bmMoQmxvYkRhdGEqLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCopOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gY3JlYXRlQXN5bmMoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqKTsKIAotICAgIHN0YXRpYyB2b2lkIGxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoQmxvYkRhdGEqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBS
ZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSk7Cisg
ICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYg
ZGF0YSk7CiAKICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgaW50IHJlYWRTeW5jKGNoYXIqLCBpbnQp
OwogCiAgICAgYm9vbCBhYm9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9hYm9ydGVkOyB9CiAKKyAg
ICAvLyBSZXNvdXJjZUhhbmRsZSBtZXRob2RzLgorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSBv
dmVycmlkZTsKKwogcHJpdmF0ZToKICAgICBCbG9iUmVzb3VyY2VIYW5kbGUoQmxvYkRhdGEqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCosIGJvb2wgYXN5bmMp
OwogICAgIHZpcnR1YWwgfkJsb2JSZXNvdXJjZUhhbmRsZSgpOwpAQCAtNjYsOCArNzAsNiBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuKGJvb2wpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWFkKGludCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBSZXNvdXJjZUhhbmRs
ZSBtZXRob2RzLgotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZG9TdGFydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcAppbmRleCBmN2UxMmMyMTFmMDA4NjA0Yjk4OWIzNThhNzU1NmQwMmM2NDU0YjZmLi40N2Iz
ZmEzYjc0Y2Q5NzlhMDNlNTE2ZDI2NzA1MjdhZTFiNDJiZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMjc3LDYgKzI3NywxOSBAQCBTdHJp
bmcgRm9ybURhdGE6OmZsYXR0ZW5Ub1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIExhdGluMUVu
Y29kaW5nKCkuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ5dGVzLmRhdGEo
KSksIGJ5dGVzLnNpemUoKSk7CiB9CiAKK3N0YXRpYyBib29sIGJsb2JJc091dE9mRGF0ZShjb25z
dCBCbG9iRGF0YUl0ZW0mIGJsb2JJdGVtKQoreworICAgIEFTU0VSVChibG9iSXRlbS50eXBlID09
IEJsb2JEYXRhSXRlbTo6RmlsZSk7CisgICAgaWYgKCFpc1ZhbGlkRmlsZVRpbWUoYmxvYkl0ZW0u
ZmlsZS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICB0aW1lX3QgZmlsZU1vZGlmaWNhdGlvblRpbWU7CisgICAgaWYgKCFnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShibG9iSXRlbS5maWxlLT5wYXRoKCksIGZpbGVNb2RpZmljYXRpb25UaW1l
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmlsZU1vZGlmaWNhdGlvblRp
bWUgIT0gc3RhdGljX2Nhc3Q8dGltZV90PihibG9iSXRlbS5maWxlLT5leHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUoKSk7Cit9CisKIHN0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChGb3JtRGF0
YSogZm9ybURhdGEsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghYmxvYlJlZ2lzdHJ5KCku
aXNCbG9iUmVnaXN0cnlJbXBsKCkpIHsKQEAgLTI5NSw5ICszMDgsMTAgQEAgc3RhdGljIHZvaWQg
YXBwZW5kQmxvYlJlc29sdmVkKEZvcm1EYXRhKiBmb3JtRGF0YSwgY29uc3QgVVJMJiB1cmwpCiAg
ICAgICAgIGNvbnN0IEJsb2JEYXRhSXRlbSYgYmxvYkl0ZW0gPSAqaXQ7CiAgICAgICAgIGlmIChi
bG9iSXRlbS50eXBlID09IEJsb2JEYXRhSXRlbTo6RGF0YSkKICAgICAgICAgICAgIGZvcm1EYXRh
LT5hcHBlbmREYXRhKGJsb2JJdGVtLmRhdGEtPmRhdGEoKSArIHN0YXRpY19jYXN0PGludD4oYmxv
Ykl0ZW0ub2Zmc2V0KCkpLCBzdGF0aWNfY2FzdDxpbnQ+KGJsb2JJdGVtLmxlbmd0aCgpKSk7Ci0g
ICAgICAgIGVsc2UgaWYgKGJsb2JJdGVtLnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpGaWxlKQotICAg
ICAgICAgICAgZm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShibG9iSXRlbS5maWxlLT5wYXRoKCks
IGJsb2JJdGVtLm9mZnNldCgpLCBibG9iSXRlbS5sZW5ndGgoKSwgYmxvYkl0ZW0uZmlsZS0+ZXhw
ZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkpOwotICAgICAgICBlbHNlCisgICAgICAgIGVsc2UgaWYg
KGJsb2JJdGVtLnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpGaWxlKSB7CisgICAgICAgICAgICBpZiAo
IWJsb2JJc091dE9mRGF0ZShibG9iSXRlbSkpCisgICAgICAgICAgICAgICAgZm9ybURhdGEtPmFw
cGVuZEZpbGVSYW5nZShibG9iSXRlbS5maWxlLT5wYXRoKCksIGJsb2JJdGVtLm9mZnNldCgpLCBi
bG9iSXRlbS5sZW5ndGgoKSwgYmxvYkl0ZW0uZmlsZS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1l
KCkpOworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IDA5ZDhmYjEyMGNmNWI3NjRkNTcxYjAxNWZlMmI0
Nzk5MmE5NzIzN2UuLjAzMzE4NTc3Zjc4NDQ2OWU1NTQyYjBhMDRhMTgyM2JmN2VjMDY4MzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcApAQCAtNDA2LDYgKzQwNiw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6c2V0SFRUUEJvZHkoUGFzc1JlZlB0cjxGb3JtRGF0YT4gaHR0cEJvZHkpCiAgICAgdXBkYXRl
UmVzb3VyY2VSZXF1ZXN0KCk7CiAKICAgICBtX2h0dHBCb2R5ID0gaHR0cEJvZHk7CisgICAgLy8g
V2UgcmVzb2x2ZSBibG9iIHJlZmVyZW5jZXMgaGVyZSBhcyB0aGUgYmxvYiByZWdpc3RyeSBpcyBp
biB0aGUgV2ViIFByb2Nlc3MuCisgICAgaWYgKG1faHR0cEJvZHkpCisgICAgICAgIG1faHR0cEJv
ZHkgPSBtX2h0dHBCb2R5LT5yZXNvbHZlQmxvYlJlZmVyZW5jZXMoKTsKIAogICAgIG1fcmVzb3Vy
Y2VSZXF1ZXN0Qm9keVVwZGF0ZWQgPSB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAppbmRleCBiZjg2ZjAzMWY1ZjE0ZTJiMDQwMzQ0MjgzMjU3YzA3OTg0ZjU3MTQzLi41
YWQ5MDk1MTU3ZTE4NDQ3YjU3ZjU4MDA0ZmFkZDNiZDRiZThhZmI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTIzOCw3ICsyMzgsNiBAQCBCbG9iKiBYTUxIdHRwUmVx
dWVzdDo6cmVzcG9uc2VCbG9iKCkKIAogICAgIGlmICghbV9yZXNwb25zZUJsb2IpIHsKICAgICAg
ICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
V2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNl
bmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICAgICAgICAgIFZlY3Rvcjxj
aGFyPiBkYXRhOwogICAgICAgICAgICAgZGF0YS5hcHBlbmQobV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXItPmRhdGEoKSwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnNpemUoKSk7CiAgICAgICAgICAg
ICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRU
eXBlKHJlc3BvbnNlTUlNRVR5cGUoKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8g
dGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKaW5kZXggOGNjMDY5YWU1
ZjI1MjhiZDAzMDIzNzRjNTY3M2E3ZmM4ZTIxYzlkMi4uYjVmYWQ5Y2NjYjFlYjdjNjYxN2EyNzQ1
MzdiZWJkNDAzNTczM2Y3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhcyBCbG9iIHJlc29sdXRpb24g
JiByZWdpc3RyYXRpb24gbm8gbG9uZ2VyIGhhcHBlbnMgaW4gdGhlIE5ldHdvcmtpbmcgcHJvY2Vz
cy4KIGNsYXNzIEJsb2JSZWdpc3RyeVByb3h5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkJsb2JS
ZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZFNjaGVkdWxlci5jcHAKaW5kZXggZWM5MGZlOWMyMDhhYTJjZGI3MDBhN2JjZjMzZTBhNzkwMzQ0
NDU4ZC4uNjY4NGVhN2QxMDQ4OGU1YWJlMWZlZjlkYTA4ZjdhZmE5OGQ0MGRiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTQ2LDEwICs0Niw4IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZmVycmVyUG9saWN5Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU3VicmVz
b3VyY2VMb2FkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQpAQCAtNjgsMTIgKzY2LDExIEBAIFdlYlJlc291cmNlTG9hZFNj
aGVkdWxlcjo6fldlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8
U3VicmVzb3VyY2VMb2FkZXI+IFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJy
ZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBv
cHRpb25zKQorYm9vbCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3Vy
Y2VMb2FkKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIpCiB7Ci0gICAgUmVmUHRyPFN1YnJlc291
cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCByZXNv
dXJjZSwgcmVxdWVzdCwgb3B0aW9ucyk7CiAgICAgaWYgKGxvYWRlcikKLSAgICAgICAgc2NoZWR1
bGVMb2FkKGxvYWRlci5nZXQoKSwgcmVzb3VyY2UsIGZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJl
clBvbGljeSgpID09IFJlZmVycmVyUG9saWN5RGVmYXVsdCk7Ci0gICAgcmV0dXJuIGxvYWRlci5y
ZWxlYXNlKCk7CisgICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIsIGxvYWRlci0+Y2FjaGVkUmVz
b3VyY2UoKSwgbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09
IFJlZmVycmVyUG9saWN5RGVmYXVsdCk7CisgICAgcmV0dXJuIGxvYWRlcjsKIH0KIAogUGFzc1Jl
ZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqIGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggNGVjZWYzZWIxNzM5ZmY5MTVjZGU5MWM3ODgz
M2EzMjNjOTEwMjgzNC4uOGUzYWFkNzc0MWUzODEwNjg3YTFiZjhkNThkODdiNDUzMzE3ZTVhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIldl
YlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRQcmlvcml0
eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3VicmVzb3Vy
Y2VMb2FkZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiAjaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIFdlYlJlc291cmNlTG9h
ZFNjaGVkdWxlcigpOwogICAgIHZpcnR1YWwgfldlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwog
ICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4g
c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBzY2hl
ZHVsZVN1YnJlc291cmNlTG9hZChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlciopOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gc2No
ZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KSBvdmVycmlkZTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
aW5kZXggZWU1Njk3OGZmN2EyYWJjYWJjNWI5NWE3YTdlYmQ3ZWUyZWI5NzlmOC4uMjcwOGY3ZTdj
ODJhZjNhN2YzNmIzYzU1MGQwMGE5M2Y4ZGUzMGM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcApAQCAtMjc1LDExICsyNzUsMTAgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQKICAgICB9CiB9CiAKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhcyBCbG9iUmVnaXN0cnkgaXMg
bm8gbG9uZ2VyIGluIE5ldHdvcmtQcm9jZXNzLgogQmxvYlJlZ2lzdHJ5KiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiB7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpz
aGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuIExvYWRlclN0cmF0
ZWd5OjpjcmVhdGVCbG9iUmVnaXN0cnkoKTsKLSAgICByZXR1cm4gbmV3IEJsb2JSZWdpc3RyeVBy
b3h5OyAgICAKKyAgICByZXR1cm4gTG9hZGVyU3RyYXRlZ3k6OmNyZWF0ZUJsb2JSZWdpc3RyeSgp
OwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242187</attachid>
            <date>2014-11-25 00:01:12 -0800</date>
            <delta_ts>2014-12-02 05:59:29 -0800</delta_ts>
            <desc>WIP: Moving BlobResourceHandle out of ResourceHandle</desc>
            <filename>bug-138835-20141125090130.patch</filename>
            <type>text/plain</type>
            <size>66903</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2NTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGVmMjI5
NDI2Y2ZiYTMxY2YxNWYxN2E4Y2ZjYTg1M2VjZTQxY2E1ZDAuLjVhY2JmMTA4ZmRhMzkyZGM3MWE0
MDg3N2E3OThmY2NlNTUyMDAxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjAzLDYgKzIy
MDMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNw
cAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKyAgICBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzb2x2ZXIuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZUJhc2UuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNs
aWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVn
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDg5
OWZkNTIxZGIzMzcyZTc1YmUzMmJmODE2NTIzYTIzNTY2NWI0YTQuLmYwMmViYzAwYjllMTEyMTg4
MDIzNjYzYzZkYWQ1NDViYTE4YjJkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Mb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0
cmF0ZWd5LmNwcApAQCAtMzksNyArMzksNyBAQCBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIExvYWRl
clN0cmF0ZWd5OjpyZXNvdXJjZUxvYWRTY2hlZHVsZXIoKQogCiB2b2lkIExvYWRlclN0cmF0ZWd5
Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCB1
bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRl
bnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYg
ZGF0YSkKIHsKLSAgICBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShj
b250ZXh0LCByZXF1ZXN0LCBzdG9yZWRDcmVkZW50aWFscywgZXJyb3IsIHJlc3BvbnNlLCBkYXRh
KTsKKyAgICBSZXNvdXJjZVJlc29sdmVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnRl
eHQsIHJlcXVlc3QsIHN0b3JlZENyZWRlbnRpYWxzLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwog
fQogCiBCbG9iUmVnaXN0cnkqIExvYWRlclN0cmF0ZWd5OjpjcmVhdGVCbG9iUmVnaXN0cnkoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IDViM2I5OTFhODQyMmVmNmM0MzM1
ZjMxMjNhMTczZTFiOTk5OTYxNTMuLmQzZWYwZGIzNmI1Yjk5MWU2ZjczZjg2ZDFkNjdjMWE2YmM4
ZWNlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTEyNCw3ICsxMjQs
NyBAQCBQaW5nTG9hZGVyOjpQaW5nTG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogICAgIC8vIHdpdGggdGhlIHByb3Zpc2lvbmFsIERvY3VtZW50TG9hZGVyIGlm
IHRoZXJlIGlzIGEgcHJvdmlzaW9uYWwKICAgICAvLyBEb2N1bWVudExvYWRlci4KICAgICBtX3No
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlID0gZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UoZnJhbWUubG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KSwgaWRlbnRpZmllcik7Ci0gICAgbV9oYW5kbGUgPSBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKGZy
YW1lLmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCksIHJlcXVlc3QsIHRoaXMsIGZhbHNlLCBm
YWxzZSk7CisgICAgbV9yZXNvbHZlciA9IFJlc291cmNlUmVzb2x2ZXI6OmNyZWF0ZShmcmFtZS5s
b2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCB0aGlzLCBmYWxzZSwgZmFsc2Up
OwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFmdGVyUGluZ0xvYWRl
cihmcmFtZSwgaWRlbnRpZmllciwgZnJhbWUubG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KSwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKTsKIApAQCAtMTM1LDggKzEzNSw4IEBAIFBp
bmdMb2FkZXI6OlBpbmdMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCiAKIFBpbmdMb2FkZXI6On5QaW5nTG9hZGVyKCkKIHsKLSAgICBpZiAobV9oYW5kbGUpCi0g
ICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKKyAgICBpZiAobV9yZXNvbHZlcikKKyAgICAgICAg
bV9yZXNvbHZlci0+Y2FuY2VsKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9QaW5nTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5o
CmluZGV4IDUxNWQ5N2Q3NGUzZTkxZjhkMTJhZjk4NWVhZWFhNTY4OGQxMGUxZDguLjJmN2JiN2I4
NzgyODU5YzZhM2E4OGEyZjIxMGQ4YTRjZjhmMWEyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdM
b2FkZXIuaApAQCAtMzMsNiArMzMsNyBAQAogI2RlZmluZSBQaW5nTG9hZGVyX2gKIAogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNvbHZlci5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDMsNyArNDQsNiBAQCBjbGFzcyBGb3JtRGF0YTsKIGNs
YXNzIEZyYW1lOwogY2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFJlc291
cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogLy8gVGhpcyBjbGFzcyB0cmln
Z2VycyBhc3luY2hyb25vdXMgbG9hZHMgaW5kZXBlbmRlbnQgb2YgRnJhbWUgc3RheWluZyBhbGl2
ZSAoaS5lLiwgYXVkaXRpbmcgcGluZ2JhY2tzKS4KQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5k
bGUqKSAgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsgfQog
ICAgIHZvaWQgdGltZW91dFRpbWVyRmlyZWQoKSB7IGRlbGV0ZSB0aGlzOyB9CiAKLSAgICBSZWZQ
dHI8UmVzb3VyY2VIYW5kbGU+IG1faGFuZGxlOworICAgIFJlZlB0cjxSZXNvdXJjZVJlc29sdmVy
PiBtX3Jlc29sdmVyOwogICAgIFRpbWVyIG1fdGltZW91dDsKICAgICBib29sIG1fc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggZTUyMmQzY2FmZDg3MDg1Y2Y5YTc3YjczMTE2ZjcyMjhlNmM5ZDZlNy4uYzRm
Yjc4ODI0ODE5YzVmYTdjZjVhY2VhZDM0Y2M5ZTQ2NDI3Mzc0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUHJv
Z3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNvbHZlci5oIgogI2luY2x1ZGUg
IlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTg5LDEyICs5MCwxMiBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVy
U3RyYXRlZ3koKS0+cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnJlbW92ZSh0aGlzKTsKICAgICBt
X2lkZW50aWZpZXIgPSAwOwogCi0gICAgaWYgKG1faGFuZGxlKSB7Ci0gICAgICAgIC8vIENsZWFy
IG91dCB0aGUgUmVzb3VyY2VIYW5kbGUncyBjbGllbnQgc28gdGhhdCBpdCBkb2Vzbid0IHRyeSB0
byBjYWxsCisgICAgaWYgKG1fcmVzb2x2ZXIpIHsKKyAgICAgICAgLy8gQ2xlYXIgb3V0IHRoZSBS
ZXNvdXJjZVJlc29sdmVyJ3MgY2xpZW50IHNvIHRoYXQgaXQgZG9lc24ndCB0cnkgdG8gY2FsbAog
ICAgICAgICAvLyB1cyBiYWNrIGFmdGVyIHdlIHJlbGVhc2UgaXQsIHVubGVzcyBpdCBoYXMgYmVl
biByZXBsYWNlZCBieSBzb21lb25lIGVsc2UuCi0gICAgICAgIGlmIChtX2hhbmRsZS0+Y2xpZW50
KCkgPT0gdGhpcykKLSAgICAgICAgICAgIG1faGFuZGxlLT5zZXRDbGllbnQoMCk7Ci0gICAgICAg
IG1faGFuZGxlID0gMDsKKyAgICAgICAgaWYgKG1fcmVzb2x2ZXItPmNsaWVudCgpID09IHRoaXMp
CisgICAgICAgICAgICBtX3Jlc29sdmVyLT5zZXRDbGllbnQobnVsbHB0cik7CisgICAgICAgIG1f
cmVzb2x2ZXIgPSBudWxscHRyOwogICAgIH0KIAogICAgIG1fcmVzb3VyY2VEYXRhID0gMDsKQEAg
LTEwMyw3ICsxMDQsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkK
IAogYm9vbCBSZXNvdXJjZUxvYWRlcjo6aW5pdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHIpCiB7
Ci0gICAgQVNTRVJUKCFtX2hhbmRsZSk7CisgICAgQVNTRVJUKCFtX3Jlc29sdmVyKTsKICAgICBB
U1NFUlQobV9yZXF1ZXN0LmlzTnVsbCgpKTsKICAgICBBU1NFUlQobV9kZWZlcnJlZFJlcXVlc3Qu
aXNOdWxsKCkpOwogICAgIEFTU0VSVCghbV9kb2N1bWVudExvYWRlci0+aXNTdWJzdGl0dXRlTG9h
ZFBlbmRpbmcodGhpcykpOwpAQCAtMTU1LDcgKzE1Niw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6
OmluaXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpz
dGFydCgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhbmRsZSk7CisgICAgQVNTRVJUKCFtX3Jlc29sdmVy
KTsKICAgICBBU1NFUlQoIW1fcmVxdWVzdC5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fZGVmZXJy
ZWRSZXF1ZXN0LmlzTnVsbCgpKTsKIApAQCAtMTczLDE0ICsxNzQsMTQgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6c3RhcnQoKQogICAgIH0KIAogICAgIGlmICghbV9yZWFjaGVkVGVybWluYWxTdGF0
ZSkKLSAgICAgICAgbV9oYW5kbGUgPSBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKG1fZnJhbWUtPmxv
YWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCksIG1fcmVxdWVzdCwgdGhpcywgbV9kZWZlcnNMb2Fk
aW5nLCBtX29wdGlvbnMuc25pZmZDb250ZW50KCkgPT0gU25pZmZDb250ZW50KTsKKyAgICAgICAg
bV9yZXNvbHZlciA9IFJlc291cmNlUmVzb2x2ZXI6OmNyZWF0ZShtX2ZyYW1lLT5sb2FkZXIoKS5u
ZXR3b3JraW5nQ29udGV4dCgpLCBtX3JlcXVlc3QsIHRoaXMsIG1fZGVmZXJzTG9hZGluZywgbV9v
cHRpb25zLnNuaWZmQ29udGVudCgpID09IFNuaWZmQ29udGVudCk7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiB7CiAgICAgbV9kZWZlcnNM
b2FkaW5nID0gZGVmZXJzOwotICAgIGlmIChtX2hhbmRsZSkKLSAgICAgICAgbV9oYW5kbGUtPnNl
dERlZmVyc0xvYWRpbmcoZGVmZXJzKTsKKyAgICBpZiAobV9yZXNvbHZlcikKKyAgICAgICAgbV9y
ZXNvbHZlci0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOwogICAgIGlmICghZGVmZXJzICYmICFt
X2RlZmVycmVkUmVxdWVzdC5pc051bGwoKSkgewogICAgICAgICBtX3JlcXVlc3QgPSBtX2RlZmVy
cmVkUmVxdWVzdDsKICAgICAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3Qo
KTsKQEAgLTIxMCw4ICsyMTEsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9T
dWJzdGl0dXRlUmVzb3VyY2UoKQogewogICAgIEFTU0VSVCghbV9kb2N1bWVudExvYWRlci0+aXNT
dWJzdGl0dXRlTG9hZFBlbmRpbmcodGhpcykpOwogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2FkZXJTdHJhdGVneSgpLT5yZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+cmVtb3ZlKHRoaXMpOwot
ICAgIGlmIChtX2hhbmRsZSkKLSAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOworICAgIGlmICht
X3Jlc29sdmVyKQorICAgICAgICBtX3Jlc29sdmVyLT5jYW5jZWwoKTsKIH0KIAogdm9pZCBSZXNv
dXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCwgU2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCkBAIC00MjQsMTMgKzQyNSwxMyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpjYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKG1fY2FuY2VsbGF0aW9uU3RhdHVzID09
IENhbGxlZFdpbGxDYW5jZWwpIHsKICAgICAgICAgbV9jYW5jZWxsYXRpb25TdGF0dXMgPSBDYW5j
ZWxsZWQ7CiAKLSAgICAgICAgaWYgKG1faGFuZGxlKQotICAgICAgICAgICAgbV9oYW5kbGUtPmNs
ZWFyQXV0aGVudGljYXRpb24oKTsKKyAgICAgICAgaWYgKGhhbmRsZSgpKQorICAgICAgICAgICAg
aGFuZGxlKCktPmNsZWFyQXV0aGVudGljYXRpb24oKTsKIAogICAgICAgICBtX2RvY3VtZW50TG9h
ZGVyLT5jYW5jZWxQZW5kaW5nU3Vic3RpdHV0ZUxvYWQodGhpcyk7Ci0gICAgICAgIGlmIChtX2hh
bmRsZSkgewotICAgICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwotICAgICAgICAgICAgbV9o
YW5kbGUgPSAwOworICAgICAgICBpZiAobV9yZXNvbHZlcikgeworICAgICAgICAgICAgbV9yZXNv
bHZlci0+Y2FuY2VsKCk7CisgICAgICAgICAgICBtX3Jlc29sdmVyID0gMDsKICAgICAgICAgfQog
ICAgICAgICBjbGVhbnVwRm9yRXJyb3Iobm9uTnVsbEVycm9yKTsKICAgICB9CkBAIC01MzUsNyAr
NTM2LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVu
dGlhbHMoKSBjb25zdAogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkK
IHsKLSAgICBBU1NFUlQobV9oYW5kbGUtPmhhc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkpOwor
ICAgIEFTU0VSVChoYW5kbGUoKSAmJiBoYW5kbGUoKS0+aGFzQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKSk7CiAKICAgICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2lu
Y2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNs
dWRpbmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRh
ciAzMjY2MjE2LgpAQCAtNTUxLDcgKzU1Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsCiAg
ICAgLy8gSWYgd2UgY2FuJ3QgY29udGludWUgd2l0aCBjcmVkZW50aWFscywgd2UgbmVlZCB0byBj
YW5jZWwgdGhlIGxvYWQgYWx0b2dldGhlci4KICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENG
TkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQog
ICAgIGNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpLT5yZWNlaXZlZFJlcXVlc3RUb0Nv
bnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY2hhbGxlbmdlKTsKLSAgICBBU1NFUlQoIW1faGFuZGxl
IHx8ICFtX2hhbmRsZS0+aGFzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSk7CisgICAgQVNTRVJU
KCFoYW5kbGUoKSB8fCAhaGFuZGxlKCktPmhhc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkpOwog
I2Vsc2UKICAgICBkaWRGYWlsKGJsb2NrZWRFcnJvcigpKTsKICNlbmRpZgpAQCAtNTkzLDE0ICs1
OTQsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpzY2hlZHVs
ZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7Ci0gICAgaWYgKG1faGFuZGxlKQotICAgICAgICBtX2hh
bmRsZS0+c2NoZWR1bGUocGFpcik7CisgICAgaWYgKGhhbmRsZSgpKQorICAgICAgICBoYW5kbGUo
KS0+c2NoZWR1bGUocGFpcik7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnVuc2NoZWR1bGUo
U2NoZWR1bGVQYWlyJiBwYWlyKQogewotICAgIGlmIChtX2hhbmRsZSkKLSAgICAgICAgbV9oYW5k
bGUtPnVuc2NoZWR1bGUocGFpcik7CisgICAgaWYgKGhhbmRsZSgpKQorICAgICAgICBoYW5kbGUo
KS0+dW5zY2hlZHVsZShwYWlyKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5oCmluZGV4IDE2MTVmNmQ5YmY4ZGMzNGE0ZTliY2Y0NmJiNjNiNjhmNmNmZGEw
MWEuLmRjMjRkOWI2NmYxNTYwNWY5ODRiNDkxMmZiZGQ2MTYyZjY4YzA5MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJUeXBlcy5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzb2x2
ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KIApAQCAtMTE3LDcgKzExOCw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzUXVpY2tMb29r
UmVzb3VyY2UoKSB7IHJldHVybiBtX2lzUXVpY2tMb29rUmVzb3VyY2U7IH0KIAogICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0LnVybCgpOyB9Ci0gICAgUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlLmdldCgpOyB9CisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gcmVtb3ZlIHRoZSBuZWVkIGZvciB0aGlzIG1ldGhv
ZC4KKyAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZl
ciA/IG1fcmVzb2x2ZXItPmhhbmRsZSgpIDogbnVsbHB0cjsgfQogICAgIGJvb2wgc2hvdWxkU2Vu
ZFJlc291cmNlTG9hZENhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5zZW5kTG9h
ZENhbGxiYWNrcygpID09IFNlbmRDYWxsYmFja3M7IH0KICAgICB2b2lkIHNldFNlbmRDYWxsYmFj
a1BvbGljeShTZW5kQ2FsbGJhY2tQb2xpY3kgc2VuZExvYWRDYWxsYmFja3MpIHsgbV9vcHRpb25z
LnNldFNlbmRMb2FkQ2FsbGJhY2tzKHNlbmRMb2FkQ2FsbGJhY2tzKTsgfQogICAgIGJvb2wgc2hv
dWxkU25pZmZDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnNuaWZmQ29udGVudCgp
ID09IFNuaWZmQ29udGVudDsgfQpAQCAtMTYyLDcgKzE2NCw3IEBAIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAg
UmVmUHRyPFJlc291cmNlSGFuZGxlPiBtX2hhbmRsZTsKKyAgICBSZWZQdHI8UmVzb3VyY2VSZXNv
bHZlcj4gbV9yZXNvbHZlcjsKICAgICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7CiAgICAgUmVmUHRy
PERvY3VtZW50TG9hZGVyPiBtX2RvY3VtZW50TG9hZGVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ug
bV9yZXNwb25zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggZTk1NGEzMzdlMDgyNzc3YzgzYzUzYjZj
ZWFiOTQ5ZDZkODUwNTY5Yi4uNTQ3MmZlNmEwMTE3MTFlNTFmNWQzODEwNDE1ZjFiMGRjNDM1YjVm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTMzMCwyNSArMzMwLDI1IEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpmYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIpCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzdG9wTG9hZGluZygpCiB7Ci0g
ICAgaWYgKG1fbWFuaWZlc3RIYW5kbGUpIHsKLSAgICAgICAgQVNTRVJUKCFtX2N1cnJlbnRIYW5k
bGUpOworICAgIGlmIChtX21hbmlmZXN0UmVzb2x2ZXIpIHsKKyAgICAgICAgQVNTRVJUKCFtX2N1
cnJlbnRSZXNvbHZlcik7CiAKLSAgICAgICAgQVNTRVJUKG1fbWFuaWZlc3RIYW5kbGUtPmNsaWVu
dCgpID09IHRoaXMpOwotICAgICAgICBtX21hbmlmZXN0SGFuZGxlLT5zZXRDbGllbnQoMCk7Cisg
ICAgICAgIEFTU0VSVChtX21hbmlmZXN0UmVzb2x2ZXItPmNsaWVudCgpID09IHRoaXMpOworICAg
ICAgICBtX21hbmlmZXN0UmVzb2x2ZXItPnNldENsaWVudCgwKTsKIAotICAgICAgICBtX21hbmlm
ZXN0SGFuZGxlLT5jYW5jZWwoKTsKLSAgICAgICAgbV9tYW5pZmVzdEhhbmRsZSA9IDA7CisgICAg
ICAgIG1fbWFuaWZlc3RSZXNvbHZlci0+Y2FuY2VsKCk7CisgICAgICAgIG1fbWFuaWZlc3RSZXNv
bHZlciA9IDA7CiAgICAgfQogICAgIAotICAgIGlmIChtX2N1cnJlbnRIYW5kbGUpIHsKLSAgICAg
ICAgQVNTRVJUKCFtX21hbmlmZXN0SGFuZGxlKTsKKyAgICBpZiAobV9jdXJyZW50UmVzb2x2ZXIp
IHsKKyAgICAgICAgQVNTRVJUKCFtX21hbmlmZXN0UmVzb2x2ZXIpOwogICAgICAgICBBU1NFUlQo
bV9jYWNoZUJlaW5nVXBkYXRlZCk7CiAKLSAgICAgICAgQVNTRVJUKG1fY3VycmVudEhhbmRsZS0+
Y2xpZW50KCkgPT0gdGhpcyk7Ci0gICAgICAgIG1fY3VycmVudEhhbmRsZS0+c2V0Q2xpZW50KDAp
OworICAgICAgICBBU1NFUlQobV9jdXJyZW50UmVzb2x2ZXItPmNsaWVudCgpID09IHRoaXMpOwor
ICAgICAgICBtX2N1cnJlbnRSZXNvbHZlci0+c2V0Q2xpZW50KDApOwogCi0gICAgICAgIG1fY3Vy
cmVudEhhbmRsZS0+Y2FuY2VsKCk7Ci0gICAgICAgIG1fY3VycmVudEhhbmRsZSA9IDA7CisgICAg
ICAgIG1fY3VycmVudFJlc29sdmVyLT5jYW5jZWwoKTsKKyAgICAgICAgbV9jdXJyZW50UmVzb2x2
ZXIgPSAwOwogICAgIH0gICAgCiAKICAgICAvLyBGSVhNRTogUmVzZXR0aW5nIGp1c3QgYSB0aW55
IHBhcnQgb2YgdGhlIHN0YXRlIGluIHRoaXMgZnVuY3Rpb24gaXMgY29uZnVzaW5nLiBDYWxsZXJz
IGhhdmUgdG8gdGFrZSBjYXJlIG9mIGEgbG90IG1vcmUuCkBAIC00NDgsMTQgKzQ0OCwxNCBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKEZyYW1lKiBmcmFtZSwgQXBwbGljYXRp
b25DYWNoZVVwZGF0ZU9wdGlvbiB1cAogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpDSEVDS0lOR19FVkVOVCwgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCkpOwogICAgIH0KICAgICAKLSAgICBBU1NFUlQoIW1fbWFuaWZlc3RIYW5kbGUpOworICAg
IEFTU0VSVCghbV9tYW5pZmVzdFJlc29sdmVyKTsKICAgICBBU1NFUlQoIW1fbWFuaWZlc3RSZXNv
dXJjZSk7Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRIYW5kbGUpOworICAgIEFTU0VSVCghbV9jdXJy
ZW50UmVzb2x2ZXIpOwogICAgIEFTU0VSVCghbV9jdXJyZW50UmVzb3VyY2UpOwogICAgIEFTU0VS
VChtX2NvbXBsZXRpb25UeXBlID09IE5vbmUpOwogCiAgICAgLy8gRklYTUU6IEhhbmRsZSBkZWZl
ciBsb2FkaW5nCi0gICAgbV9tYW5pZmVzdEhhbmRsZSA9IGNyZWF0ZVJlc291cmNlSGFuZGxlKG1f
bWFuaWZlc3RVUkwsIG1fbmV3ZXN0Q2FjaGUgPyBtX25ld2VzdENhY2hlLT5tYW5pZmVzdFJlc291
cmNlKCkgOiAwKTsKKyAgICBtX21hbmlmZXN0UmVzb2x2ZXIgPSBjcmVhdGVSZXNvdXJjZVJlc29s
dmVyKG1fbWFuaWZlc3RVUkwsIG1fbmV3ZXN0Q2FjaGUgPyBtX25ld2VzdENhY2hlLT5tYW5pZmVz
dFJlc291cmNlKCkgOiAwKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFib3J0
KEZyYW1lKiBmcmFtZSkKQEAgLTQ3MSw3ICs0NzEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6YWJvcnQoRnJhbWUqIGZyYW1lKQogICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiB9CiAK
LVBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y3JlYXRl
UmVzb3VyY2VIYW5kbGUoY29uc3QgVVJMJiB1cmwsIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
bmV3ZXN0Q2FjaGVkUmVzb3VyY2UpCitQYXNzUmVmUHRyPFJlc291cmNlUmVzb2x2ZXI+IEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6Y3JlYXRlUmVzb3VyY2VSZXNvbHZlcihjb25zdCBVUkwmIHVybCwg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiBuZXdlc3RDYWNoZWRSZXNvdXJjZSkKIHsKICAgICBS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwogICAgIG1fZnJhbWUtPmxvYWRlcigpLmFwcGx5
VXNlckFnZW50KHJlcXVlc3QpOwpAQCAtNDg4LDcgKzQ4OCw3IEBAIFBhc3NSZWZQdHI8UmVzb3Vy
Y2VIYW5kbGU+IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y3JlYXRlUmVzb3VyY2VIYW5kbGUoY29u
c3QgVVJMCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhh
bmRsZSA9IFJlc291cmNlSGFuZGxlOjpjcmVhdGUobV9mcmFtZS0+bG9hZGVyKCkubmV0d29ya2lu
Z0NvbnRleHQoKSwgcmVxdWVzdCwgdGhpcywgZmFsc2UsIHRydWUpOworICAgIFJlZlB0cjxSZXNv
dXJjZVJlc29sdmVyPiByZXNvbHZlciA9IFJlc291cmNlUmVzb2x2ZXI6OmNyZWF0ZShtX2ZyYW1l
LT5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCB0aGlzLCBmYWxzZSwgdHJ1
ZSk7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICAvLyBCZWNhdXNlIHdpbGxTZW5kUmVxdWVz
dCBvbmx5IGdldHMgY2FsbGVkIGR1cmluZyByZWRpcmVjdHMsIHdlIGluaXRpYWxpemUKICAgICAv
LyB0aGUgaWRlbnRpZmllciBhbmQgdGhlIGZpcnN0IHdpbGxTZW5kUmVxdWVzdCBoZXJlLgpAQCAt
NDk2LDIzICs0OTYsMjMgQEAgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBVUkwKICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7CiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QobV9mcmFtZSwgbV9jdXJyZW50UmVz
b3VyY2VJZGVudGlmaWVyLCBtX2ZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLCByZXF1
ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICNlbmRpZgotICAgIHJldHVybiBoYW5kbGU7CisgICAg
cmV0dXJuIHJlc29sdmVyOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciA9IChoYW5kbGUgPT0gbV9tYW5pZmVzdEhhbmRsZSkgPyAwIDogbV9mcmFtZS0+
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKKyAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0g
KGhhbmRsZSA9PSBtX21hbmlmZXN0UmVzb2x2ZXIpID8gMCA6IG1fZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tp
ZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNl
KG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29va2ll
LCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UsIDApOwogI2Vu
ZGlmCiAKLSAgICBpZiAoaGFuZGxlID09IG1fbWFuaWZlc3RIYW5kbGUpIHsKKyAgICBpZiAoaGFu
ZGxlID09IG1fbWFuaWZlc3RSZXNvbHZlcikgewogICAgICAgICBkaWRSZWNlaXZlTWFuaWZlc3RS
ZXNwb25zZShyZXNwb25zZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgQVNT
RVJUKGhhbmRsZSA9PSBtX2N1cnJlbnRIYW5kbGUpOworICAgIEFTU0VSVChoYW5kbGUgPT0gbV9j
dXJyZW50UmVzb2x2ZXIpOwogCiAgICAgVVJMIHVybChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVy
bCgpKTsKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQpAQCAtNTMxLDkgKzUz
MSw5IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSogbmV3ZXN0Q2FjaGVkUmVzb3VyY2UgPSBtX25ld2VzdENhY2hlLT5yZXNvdXJjZUZv
clVSTCh1cmwpOwogICAgICAgICBpZiAobmV3ZXN0Q2FjaGVkUmVzb3VyY2UpIHsKICAgICAgICAg
ICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPmFkZFJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6Y3JlYXRlKHVybCwgbmV3ZXN0Q2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCksIHR5cGUs
IG5ld2VzdENhY2hlZFJlc291cmNlLT5kYXRhKCksIG5ld2VzdENhY2hlZFJlc291cmNlLT5wYXRo
KCkpKTsKLSAgICAgICAgICAgIG1fcGVuZGluZ0VudHJpZXMucmVtb3ZlKG1fY3VycmVudEhhbmRs
ZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkpOwotICAgICAgICAgICAgbV9jdXJyZW50SGFuZGxlLT5j
YW5jZWwoKTsKLSAgICAgICAgICAgIG1fY3VycmVudEhhbmRsZSA9IDA7CisgICAgICAgICAgICBt
X3BlbmRpbmdFbnRyaWVzLnJlbW92ZShtX2N1cnJlbnRSZXNvbHZlci0+Zmlyc3RSZXF1ZXN0KCku
dXJsKCkpOworICAgICAgICAgICAgbV9jdXJyZW50UmVzb2x2ZXItPmNhbmNlbCgpOworICAgICAg
ICAgICAgbV9jdXJyZW50UmVzb2x2ZXIgPSAwOwogICAgICAgICAgICAgLy8gTG9hZCB0aGUgbmV4
dCByZXNvdXJjZSwgaWYgYW55LgogICAgICAgICAgICAgc3RhcnRMb2FkaW5nRW50cnkoKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTU0MSwxNiArNTQxLDE2IEBAIHZvaWQgQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29u
c3QgUmVzCiAgICAgICAgIC8vIFRoZSBzZXJ2ZXIgY291bGQgcmV0dXJuIDMwNCBmb3IgYW4gdW5j
b25kaXRpb25hbCByZXF1ZXN0IC0gaW4gdGhpcyBjYXNlLCB3ZSBoYW5kbGUgdGhlIHJlc3BvbnNl
IGFzIGEgbm9ybWFsIGVycm9yLgogICAgIH0KIAotICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpIC8gMTAwICE9IDIgfHwgcmVzcG9uc2UudXJsKCkgIT0gbV9jdXJyZW50SGFuZGxlLT5m
aXJzdFJlcXVlc3QoKS51cmwoKSkgeworICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
IC8gMTAwICE9IDIgfHwgcmVzcG9uc2UudXJsKCkgIT0gbV9jdXJyZW50UmVzb2x2ZXItPmZpcnN0
UmVxdWVzdCgpLnVybCgpKSB7CiAgICAgICAgIGlmICgodHlwZSAmIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZTo6RXhwbGljaXQpIHx8ICh0eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpG
YWxsYmFjaykpIHsKLSAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBw
bGljYXRpb24gQ2FjaGUgdXBkYXRlIGZhaWxlZCwgYmVjYXVzZSAiICsgbV9jdXJyZW50SGFuZGxl
LT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSAr
CisgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENh
Y2hlIHVwZGF0ZSBmYWlsZWQsIGJlY2F1c2UgIiArIG1fY3VycmVudFJlc29sdmVyLT5maXJzdFJl
cXVlc3QoKS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArCiAgICAgICAg
ICAgICAgICAgKChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIC8gMTAwICE9IDIpID8gIiBjb3Vs
ZCBub3QgYmUgZmV0Y2hlZC4iIDogIiB3YXMgcmVkaXJlY3RlZC4iKSk7CiAgICAgICAgICAgICAv
LyBOb3RlIHRoYXQgY2FjaGVVcGRhdGVGYWlsZWQoKSBjYW4gY2F1c2UgdGhlIGNhY2hlIGdyb3Vw
IHRvIGJlIGRlbGV0ZWQuCiAgICAgICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwogICAgICAg
ICB9IGVsc2UgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDA0IHx8IHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkgPT0gNDEwKSB7CiAgICAgICAgICAgICAvLyBTa2lwIHRoaXMgcmVz
b3VyY2UuIEl0IGlzIGRyb3BwZWQgZnJvbSB0aGUgY2FjaGUuCi0gICAgICAgICAgICBtX2N1cnJl
bnRIYW5kbGUtPmNhbmNlbCgpOwotICAgICAgICAgICAgbV9jdXJyZW50SGFuZGxlID0gMDsKKyAg
ICAgICAgICAgIG1fY3VycmVudFJlc29sdmVyLT5jYW5jZWwoKTsKKyAgICAgICAgICAgIG1fY3Vy
cmVudFJlc29sdmVyID0gMDsKICAgICAgICAgICAgIG1fcGVuZGluZ0VudHJpZXMucmVtb3ZlKHVy
bCk7CiAgICAgICAgICAgICAvLyBMb2FkIHRoZSBuZXh0IHJlc291cmNlLCBpZiBhbnkuCiAgICAg
ICAgICAgICBzdGFydExvYWRpbmdFbnRyeSgpOwpAQCAtNTYxLDkgKzU2MSw5IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSwgY29uc3QgUmVzCiAgICAgICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5l
d2VzdENhY2hlZFJlc291cmNlID0gbV9uZXdlc3RDYWNoZS0+cmVzb3VyY2VGb3JVUkwoaGFuZGxl
LT5maXJzdFJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgICAgICBBU1NFUlQobmV3ZXN0Q2FjaGVk
UmVzb3VyY2UpOwogICAgICAgICAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+YWRkUmVzb3VyY2Uo
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUodXJsLCBuZXdlc3RDYWNoZWRSZXNvdXJj
ZS0+cmVzcG9uc2UoKSwgdHlwZSwgbmV3ZXN0Q2FjaGVkUmVzb3VyY2UtPmRhdGEoKSwgbmV3ZXN0
Q2FjaGVkUmVzb3VyY2UtPnBhdGgoKSkpOwotICAgICAgICAgICAgbV9wZW5kaW5nRW50cmllcy5y
ZW1vdmUobV9jdXJyZW50SGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSk7Ci0gICAgICAgICAg
ICBtX2N1cnJlbnRIYW5kbGUtPmNhbmNlbCgpOwotICAgICAgICAgICAgbV9jdXJyZW50SGFuZGxl
ID0gMDsKKyAgICAgICAgICAgIG1fcGVuZGluZ0VudHJpZXMucmVtb3ZlKG1fY3VycmVudFJlc29s
dmVyLT5maXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgICAgICBtX2N1cnJlbnRSZXNvbHZl
ci0+Y2FuY2VsKCk7CisgICAgICAgICAgICBtX2N1cnJlbnRSZXNvbHZlciA9IDA7CiAgICAgICAg
ICAgICAvLyBMb2FkIHRoZSBuZXh0IHJlc291cmNlLCBpZiBhbnkuCiAgICAgICAgICAgICBzdGFy
dExvYWRpbmdFbnRyeSgpOwogICAgICAgICB9CkBAIC01ODEsMTIgKzU4MSwxMiBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgY29uc3QgY2hhciogZAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2
ZURhdGEobV9mcmFtZSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCAwLCBsZW5ndGgsIDAp
OwogI2VuZGlmCiAKLSAgICBpZiAoaGFuZGxlID09IG1fbWFuaWZlc3RIYW5kbGUpIHsKKyAgICBp
ZiAoaGFuZGxlID09IG1fbWFuaWZlc3RSZXNvbHZlcikgewogICAgICAgICBkaWRSZWNlaXZlTWFu
aWZlc3REYXRhKGRhdGEsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgQVNTRVJUKGhhbmRsZSA9PSBtX2N1cnJlbnRIYW5kbGUpOworICAgIEFTU0VSVChoYW5kbGUg
PT0gbV9jdXJyZW50UmVzb2x2ZXIpOwogICAgIAogICAgIEFTU0VSVChtX2N1cnJlbnRSZXNvdXJj
ZSk7CiAgICAgbV9jdXJyZW50UmVzb3VyY2UtPmRhdGEoKS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7
CkBAIC02MDAsMTIgKzYwMCwxMiBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBkb3VibGUgZmluaQogICAgIFVOVVNF
RF9QQVJBTShmaW5pc2hUaW1lKTsKICNlbmRpZgogCi0gICAgaWYgKGhhbmRsZSA9PSBtX21hbmlm
ZXN0SGFuZGxlKSB7CisgICAgaWYgKGhhbmRsZSA9PSBtX21hbmlmZXN0UmVzb2x2ZXIpIHsKICAg
ICAgICAgZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBBU1NFUlQobV9jdXJyZW50SGFuZGxlID09IGhhbmRsZSk7CisgICAgQVNTRVJUKG1f
Y3VycmVudFJlc29sdmVyID09IGhhbmRsZSk7CiAgICAgQVNTRVJUKG1fcGVuZGluZ0VudHJpZXMu
Y29udGFpbnMoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSkpOwogICAgIAogICAgIG1fcGVu
ZGluZ0VudHJpZXMucmVtb3ZlKGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkpOwpAQCAtNjEz
LDcgKzYxMyw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBmaW5pCiAgICAgQVNTRVJUKG1fY2FjaGVC
ZWluZ1VwZGF0ZWQpOwogCiAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+YWRkUmVzb3VyY2UobV9j
dXJyZW50UmVzb3VyY2UucmVsZWFzZSgpKTsKLSAgICBtX2N1cnJlbnRIYW5kbGUgPSAwOworICAg
IG1fY3VycmVudFJlc29sdmVyID0gMDsKIAogICAgIC8vIFdoaWxlIGRvd25sb2FkaW5nIGNoZWNr
IHRvIHNlZSBpZiB3ZSBoYXZlIGV4Y2VlZGVkIHRoZSBhdmFpbGFibGUgcXVvdGEuCiAgICAgLy8g
V2UgY2FuIHN0b3AgaW1tZWRpYXRlbHkgaWYgd2UgaGF2ZSBhbHJlYWR5IHByZXZpb3VzbHkgZmFp
bGVkCkBAIC02MzksMTMgKzYzOSwxMyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlk
RmFpbChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZUVycm9yJgogICAgIFVO
VVNFRF9QQVJBTShlcnJvcik7CiAjZW5kaWYKIAotICAgIGlmIChoYW5kbGUgPT0gbV9tYW5pZmVz
dEhhbmRsZSkgeworICAgIGlmIChoYW5kbGUgPT0gbV9tYW5pZmVzdFJlc29sdmVyKSB7CiAgICAg
ICAgIC8vIEEgbmV0d29yayBlcnJvciBpcyBsb2dnZWQgZWxzZXdoZXJlLCBubyBuZWVkIHRvIGxv
ZyBhZ2Fpbi4gQWxzbywgaXQncyBub3JtYWwgZm9yIG1hbmlmZXN0IGZldGNoaW5nIHRvIGZhaWwg
d2hlbiB3b3JraW5nIG9mZmxpbmUuCiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQoaGFuZGxlID09IG1fY3VycmVudEhhbmRs
ZSk7CisgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2N1cnJlbnRSZXNvbHZlcik7CiAKICAgICB1bnNp
Z25lZCB0eXBlID0gbV9jdXJyZW50UmVzb3VyY2UgPyBtX2N1cnJlbnRSZXNvdXJjZS0+dHlwZSgp
IDogbV9wZW5kaW5nRW50cmllcy5nZXQoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSk7CiAg
ICAgVVJMIHVybChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKTsKQEAgLTY3NSw3ICs2NzUs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBSZXNvdXJjZUVycm9yJgogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRpZFJlY2VpdmVNYW5pZmVzdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIEFTU0VSVCghbV9tYW5pZmVzdFJlc291cmNlKTsKLSAgICBBU1NFUlQobV9t
YW5pZmVzdEhhbmRsZSk7CisgICAgQVNTRVJUKG1fbWFuaWZlc3RSZXNvbHZlcik7CiAKICAgICBp
ZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDQgfHwgcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSA9PSA0MTApIHsKICAgICAgICAgbWFuaWZlc3ROb3RGb3VuZCgpOwpAQCAtNjkxLDEz
ICs2OTEsMTMgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVNYW5pZmVz
dFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChyZXNwb25zZS51cmwoKSAhPSBtX21hbmlmZXN0SGFuZGxlLT5maXJzdFJl
cXVlc3QoKS51cmwoKSkgeworICAgIGlmIChyZXNwb25zZS51cmwoKSAhPSBtX21hbmlmZXN0UmVz
b2x2ZXItPmZpcnN0UmVxdWVzdCgpLnVybCgpKSB7CiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBBU0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5v
dCBiZSBmZXRjaGVkLCBiZWNhdXNlIGEgcmVkaXJlY3Rpb24gd2FzIGF0dGVtcHRlZC4iKSk7CiAg
ICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX21hbmlmZXN0UmVzb3VyY2UgPSBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSht
X21hbmlmZXN0SGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSwgcmVzcG9uc2UsIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6TWFuaWZlc3QpOworICAgIG1fbWFuaWZlc3RSZXNvdXJjZSA9IEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKG1fbWFuaWZlc3RSZXNvbHZlci0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCksIHJlc3BvbnNlLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6Ok1hbmlm
ZXN0KTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVNYW5pZmVz
dERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKQEAgLTcxNyw3ICs3MTcsNyBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fbWFuaWZlc3RIYW5kbGUgPSAwOworICAgIG1f
bWFuaWZlc3RSZXNvbHZlciA9IDA7CiAKICAgICAvLyBDaGVjayBpZiB0aGUgbWFuaWZlc3Qgd2Fz
IG5vdCBtb2RpZmllZC4KICAgICBpZiAoaXNVcGdyYWRlQXR0ZW1wdCkgewpAQCAtODUzLDcgKzg1
Myw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjptYW5pZmVzdE5vdEZvdW5kKCkKIAog
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiB7Ci0g
ICAgaWYgKG1fbWFuaWZlc3RIYW5kbGUgfHwgIW1fcGVuZGluZ0VudHJpZXMuaXNFbXB0eSgpIHx8
IG1fZG93bmxvYWRpbmdQZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzQ291bnQpCisgICAgaWYg
KG1fbWFuaWZlc3RSZXNvbHZlciB8fCAhbV9wZW5kaW5nRW50cmllcy5pc0VtcHR5KCkgfHwgbV9k
b3dubG9hZGluZ1BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnNDb3VudCkKICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIC8vIFdlJ3JlIGRvbmUsIGFsbCByZXNvdXJjZXMgaGF2ZSBmaW5pc2hl
ZCBkb3dubG9hZGluZyAoc3VjY2Vzc2Z1bGx5IG9yIG5vdCkuCkBAIC0xMDAwLDkgKzEwMDAsOSBA
QCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RhcnRMb2FkaW5nRW50cnkoKQogICAgIHBv
c3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OlBST0dSRVNTX0VWRU5ULCBtX3By
b2dyZXNzVG90YWwsIG1fcHJvZ3Jlc3NEb25lLCBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMp
OwogICAgIG1fcHJvZ3Jlc3NEb25lKys7CiAKLSAgICBBU1NFUlQoIW1fY3VycmVudEhhbmRsZSk7
CisgICAgQVNTRVJUKCFtX2N1cnJlbnRSZXNvbHZlcik7CiAgICAgCi0gICAgbV9jdXJyZW50SGFu
ZGxlID0gY3JlYXRlUmVzb3VyY2VIYW5kbGUoVVJMKFBhcnNlZFVSTFN0cmluZywgaXQtPmtleSks
IG1fbmV3ZXN0Q2FjaGUgPyBtX25ld2VzdENhY2hlLT5yZXNvdXJjZUZvclVSTChpdC0+a2V5KSA6
IDApOworICAgIG1fY3VycmVudFJlc29sdmVyID0gY3JlYXRlUmVzb3VyY2VSZXNvbHZlcihVUkwo
UGFyc2VkVVJMU3RyaW5nLCBpdC0+a2V5KSwgbV9uZXdlc3RDYWNoZSA/IG1fbmV3ZXN0Q2FjaGUt
PnJlc291cmNlRm9yVVJMKGl0LT5rZXkpIDogMCk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpkZWxpdmVyRGVsYXllZE1haW5SZXNvdXJjZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCmluZGV4IDBh
ZjY1Y2UxMWYxMTQxOGRkZGQxNGU1Yzk1YmY2NDY5ZTdhMzcyOTkuLmEzZWE2YTAyZDJhMGY2MjFm
OTRmZmY2YzE2YjAwNDNkMjA1YTRlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlc29sdmVy
LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTAyLDcgKzEwMyw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHNjaGVkdWxlUmVhY2hlZE1heEFwcENhY2hlU2l6ZUNhbGxiYWNrKCk7CiAK
LSAgICBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25z
dCBVUkwmLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNlKTsK
KyAgICBQYXNzUmVmUHRyPFJlc291cmNlUmVzb2x2ZXI+IGNyZWF0ZVJlc291cmNlUmVzb2x2ZXIo
Y29uc3QgVVJMJiwgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiBuZXdlc3RDYWNoZWRSZXNvdXJj
ZSk7CiAKICAgICAvLyBGb3Igbm9ybWFsIHJlc291cmNlIGxvYWRpbmcsIFdlYktpdCBjbGllbnQg
aXMgYXNrZWQgYWJvdXQgZWFjaCByZXNvdXJjZSBpbmRpdmlkdWFsbHkuIFNpbmNlIGFwcGxpY2F0
aW9uIGNhY2hlIGRvZXMgbm90IGJlbG9uZyB0byBhbnkgcGFydGljdWxhciBkb2N1bWVudCwKICAg
ICAvLyB0aGUgZXhpc3RpbmcgY2xpZW50IGNhbGxiYWNrIGNhbm5vdCBiZSB1c2VkLCBzbyBhc3N1
bWUgdGhhdCBhbnkgY2xpZW50IHRoYXQgZW5hYmxlcyBhcHBsaWNhdGlvbiBjYWNoZSBhbHNvIHdh
bnRzIGl0IHRvIHVzZSBjcmVkZW50aWFsIHN0b3JhZ2UuCkBAIC0xODcsNyArMTg4LDcgQEAgcHJp
dmF0ZToKICAgICAvLyB0aGUgY291cnNlIG9mIGFjdGlvbiBpbiBjYXNlIG9mIHRoaXMgZmFpbHVy
ZSAoaS5lLiBjYWxsIHRoZSBDaHJvbWVDbGllbnQgY2FsbGJhY2sgb3IgcnVuIHRoZSBmYWlsdXJl
IHN0ZXBzKS4KICAgICBib29sIG1fY2FsbGVkUmVhY2hlZE1heEFwcENhY2hlU2l6ZTsKICAgICAK
LSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IG1fY3VycmVudEhhbmRsZTsKKyAgICBSZWZQdHI8
UmVzb3VyY2VSZXNvbHZlcj4gbV9jdXJyZW50UmVzb2x2ZXI7CiAgICAgUmVmUHRyPEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZT4gbV9jdXJyZW50UmVzb3VyY2U7CiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQpAQCAtMTk1LDcgKzE5Niw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJlZlB0cjxB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IG1fbWFuaWZlc3RSZXNvdXJjZTsKLSAgICBSZWZQdHI8
UmVzb3VyY2VIYW5kbGU+IG1fbWFuaWZlc3RIYW5kbGU7CisgICAgUmVmUHRyPFJlc291cmNlUmVz
b2x2ZXI+IG1fbWFuaWZlc3RSZXNvbHZlcjsKIAogICAgIGludDY0X3QgbV9hdmFpbGFibGVTcGFj
ZUluUXVvdGE7CiAgICAgYm9vbCBtX29yaWdpblF1b3RhRXhjZWVkZWRQcmV2aW91c2x5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCAwMGUwZTNlNTRh
Y2YzMGEzMzliNWFkNTcxYmY2ZDdhMjM5N2VkYTFiLi45MGRkZTIyZjM5OTEyOWE4MDVjZTZmNTdj
MTIyMTE3MDQ0YmMxNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPGdzdC9hcHAv
Z3N0YXBwc3JjLmg+CkBAIC0xMDEsNyArMTAyLDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGVTdHJl
YW1pbmdDbGllbnQgOiBwdWJsaWMgUmVzb3VyY2VIYW5kbGVDbGllbnQsIHB1YmxpYyBTdHJlYW0K
ICAgICAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNhbm5vdFNob3dVUkwoUmVzb3VyY2VIYW5kbGUqKTsKIAotICAgICAg
ICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IG1fcmVzb3VyY2U7CisgICAgICAgIFJlZlB0cjxSZXNv
dXJjZVJlc29sdmVyPiBtX3Jlc291cmNlOwogfTsKIAogI2RlZmluZSBXRUJLSVRfV0VCX1NSQ19H
RVRfUFJJVkFURShvYmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJ
VF9UWVBFX1dFQl9TUkMsIFdlYktpdFdlYlNyY1ByaXZhdGUpKQpAQCAtMTA0Myw3ICsxMDQ0LDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVkKCkKIFJl
c291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVu
dChXZWJLaXRXZWJTcmMqIHNyYywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAg
IDogU3RyZWFtaW5nQ2xpZW50KHNyYykKIHsKLSAgICBtX3Jlc291cmNlID0gUmVzb3VyY2VIYW5k
bGU6OmNyZWF0ZSgwIC8qY29udGV4dCovLCByZXF1ZXN0LCB0aGlzLCBmYWxzZSwgZmFsc2UpOwor
ICAgIG1fcmVzb3VyY2UgPSBSZXNvdXJjZVJlc29sdmVyOjpjcmVhdGUoMCAvKmNvbnRleHQqLywg
cmVxdWVzdCwgdGhpcywgZmFsc2UsIGZhbHNlKTsKIH0KIAogUmVzb3VyY2VIYW5kbGVTdHJlYW1p
bmdDbGllbnQ6On5SZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRleCBm
MDliOWVkMzg3ZjQ2NzE5NjM5ZDBkZjMyYzlmN2Y3NTZjZmQ0MDZmLi5lZjI3OTkxMmRjN2Y1MmM2
ZWFlMTdlOWIyMGQ0NmYyNjJkMGM5ODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTU0LDkgKzU0LDkgQEAgQmxv
YlJlZ2lzdHJ5SW1wbDo6fkJsb2JSZWdpc3RyeUltcGwoKQogewogfQogCi1zdGF0aWMgUGFzc1Jl
ZlB0cjxSZXNvdXJjZUhhbmRsZT4gY3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KQorc3RhdGljIFBh
c3NSZWZQdHI8UmVzb3VyY2VSZXNvbHZlcj4gY3JlYXRlUmVzb3VyY2VSZXNvbHZlcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpCiB7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnko
KSkuY3JlYXRlUmVzb3VyY2VIYW5kbGUocmVxdWVzdCwgY2xpZW50KTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5jcmVhdGVSZXNvdXJj
ZVJlc29sdmVyKHJlcXVlc3QsIGNsaWVudCk7CiB9CiAKIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKQEAgLTY5LDEzICs2OSwx
MyBAQCBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKCkK
IHsKICAgICBzdGF0aWMgYm9vbCBkaWRSZWdpc3RlciA9IGZhbHNlOwogICAgIGlmICghZGlkUmVn
aXN0ZXIpIHsKLSAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpbkNvbnN0cnVj
dG9yKCJibG9iIiwgY3JlYXRlUmVzb3VyY2VIYW5kbGUpOwotICAgICAgICBSZXNvdXJjZUhhbmRs
ZTo6cmVnaXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2FkZXIoImJsb2IiLCBsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KTsKKyAgICAgICAgUmVzb3VyY2VSZXNvbHZlcjo6cmVnaXN0ZXJCdWlsdGlu
Q29uc3RydWN0b3IoImJsb2IiLCBjcmVhdGVSZXNvdXJjZVJlc29sdmVyKTsKKyAgICAgICAgUmVz
b3VyY2VSZXNvbHZlcjo6cmVnaXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2FkZXIoImJsb2IiLCBs
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KTsKICAgICAgICAgZGlkUmVnaXN0ZXIgPSB0cnVlOwog
ICAgIH0KIH0KIAotUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gQmxvYlJlZ2lzdHJ5SW1wbDo6
Y3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
dXJjZUhhbmRsZUNsaWVudCogY2xpZW50KQorUGFzc1JlZlB0cjxSZXNvdXJjZVJlc29sdmVyPiBC
bG9iUmVnaXN0cnlJbXBsOjpjcmVhdGVSZXNvdXJjZVJlc29sdmVyKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCkKIHsKICAgICBSZWZQ
dHI8QmxvYlJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBCbG9iUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZUFzeW5jKGdldEJsb2JEYXRhRnJvbVVSTChyZXF1ZXN0LnVybCgpKSwgcmVxdWVzdCwgY2xpZW50
KTsKICAgICBpZiAoIWhhbmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKaW5kZXggNmI0NGQ4ZWZmNDg5MmEzMTQwYmI4OTgzNWFi
N2RlN2U1ODEzYTc0Yy4uODIxNGFkNGMyZmQzODQ3ZDkzOGVhMzQxODZmODc4ZTI2YTY1NmFkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVVJM
OwotY2xhc3MgUmVzb3VyY2VIYW5kbGU7CitjbGFzcyBSZXNvdXJjZVJlc29sdmVyOwogY2xhc3Mg
UmVzb3VyY2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKQEAgLTUyLDcg
KzUyLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgQmxvYkRhdGEqIGdldEJsb2JE
YXRhRnJvbVVSTChjb25zdCBVUkwmKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8UmVzb3VyY2VI
YW5kbGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291
cmNlSGFuZGxlQ2xpZW50Kik7CisgICAgUGFzc1JlZlB0cjxSZXNvdXJjZVJlc29sdmVyPiBjcmVh
dGVSZXNvdXJjZVJlc29sdmVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlSGFuZGxl
Q2xpZW50Kik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmRTdG9yYWdlSXRlbXMoQmxvYkRh
dGEqLCBjb25zdCBCbG9iRGF0YUl0ZW1MaXN0JiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25n
IGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggMDhkNWY1MWE4ODUyZTMxZjA3ZDFkYWFmODkyNzZi
MDRmMGIwNzBkNS4uYWQ0N2Q4ODA1MWE5YzZmOTc0MjIyZDhkMjczM2JiZDI5NjQxMjRjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNl
SGFuZGxlLmNwcApAQCAtODMsNiArODMsNyBAQCBjbGFzcyBCbG9iUmVzb3VyY2VTeW5jaHJvbm91
c0xvYWRlciA6IHB1YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgQmxv
YlJlc291cmNlU3luY2hyb25vdXNMb2FkZXIoUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9u
c2UmLCBWZWN0b3I8Y2hhcj4mKTsKIAorICAgIHZvaWQgc3RhcnQoQmxvYlJlc291cmNlSGFuZGxl
Kik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCAv
KmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIC8qZmluaXNoVGltZSovKSBvdmVycmlk
ZTsKQEAgLTkyLDYgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZUVycm9yJiBtX2Vycm9y
OwogICAgIFJlc291cmNlUmVzcG9uc2UmIG1fcmVzcG9uc2U7CiAgICAgVmVjdG9yPGNoYXI+JiBt
X2RhdGE7CisgICAgUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gbV9oYW5kbGU7CiB9OwogCiBC
bG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6QmxvYlJlc291cmNlU3luY2hyb25vdXNMb2Fk
ZXIoUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0
b3I8Y2hhcj4mIGRhdGEpCkBAIC0xMDEsNyArMTAzLDEzIEBAIEJsb2JSZXNvdXJjZVN5bmNocm9u
b3VzTG9hZGVyOjpCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcihSZXNvdXJjZUVycm9yJiBl
cnJvCiB7CiB9CiAKLXZvaWQgQmxvYlJlc291cmNlU3luY2hyb25vdXNMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK3ZvaWQgQmxvYlJlc291cmNlU3luY2hyb25vdXNMb2FkZXI6OnN0YXJ0KEJs
b2JSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQoreworICAgIG1faGFuZGxlID0gaGFuZGxlOworICAg
IG1faGFuZGxlLT5zdGFydCgpOworfQorCit2b2lkIEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKIHsKICAgICAvLyBXZSBjYW5ub3QgaGFuZGxlIHRoZSBzaXplIHRo
YXQgaXMgbW9yZSB0aGFuIG1heGltdW0gaW50ZWdlci4KICAgICBpZiAocmVzcG9uc2UuZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKCkgPiBJTlRfTUFYKSB7CkBAIC0xMTMsNyArMTIxLDcgQEAgdm9pZCBC
bG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIGMKIAogICAgIC8vIFJlYWQgYWxsIHRoZSBkYXRhLgogICAgIG1fZGF0
YS5yZXNpemUoc3RhdGljX2Nhc3Q8c2l6ZV90PihyZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5n
dGgoKSkpOwotICAgIHN0YXRpY19jYXN0PEJsb2JSZXNvdXJjZUhhbmRsZSo+KGhhbmRsZSktPnJl
YWRTeW5jKG1fZGF0YS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4obV9kYXRhLnNpemUoKSkpOwor
ICAgIG1faGFuZGxlLT5yZWFkU3luYyhtX2RhdGEuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG1f
ZGF0YS5zaXplKCkpKTsKIH0KIAogdm9pZCBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGlu
dCkKQEAgLTE1Niw4ICsxNjQsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlcwogfQogCiBCbG9i
UmVzb3VyY2VIYW5kbGU6OkJsb2JSZXNvdXJjZUhhbmRsZShCbG9iRGF0YSogYmxvYkRhdGEsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVu
dCwgYm9vbCBhc3luYykKLSAgICA6IFJlc291cmNlSGFuZGxlKDAsIHJlcXVlc3QsIGNsaWVudCwg
ZmFsc2UsIGZhbHNlKQotICAgICwgbV9ibG9iRGF0YShibG9iRGF0YSkKKyAgICA6IG1fYmxvYkRh
dGEoYmxvYkRhdGEpCiAgICAgLCBtX2FzeW5jKGFzeW5jKQogICAgICwgbV9lcnJvckNvZGUoMCkK
ICAgICAsIG1fYWJvcnRlZChmYWxzZSkKQEAgLTE2OSw2ICsxNzYsOCBAQCBCbG9iUmVzb3VyY2VI
YW5kbGU6OkJsb2JSZXNvdXJjZUhhbmRsZShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlc291
cmNlUmVxdWVzdAogICAgICwgbV9zaXplSXRlbUNvdW50KDApCiAgICAgLCBtX3JlYWRJdGVtQ291
bnQoMCkKICAgICAsIG1fZmlsZU9wZW5lZChmYWxzZSkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkK
KyAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogewogICAgIGlmIChtX2FzeW5jKQogICAgICAgICBt
X2FzeW5jU3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKTsK
QEAgLTE4Niw3ICsxOTUsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkKIAog
ICAgIG1fYWJvcnRlZCA9IHRydWU7CiAKLSAgICBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCk7Cisg
ICAgUmVzb3VyY2VSZXNvbHZlcjo6Y2FuY2VsKCk7CiB9CiAKIHZvaWQgQmxvYlJlc291cmNlSGFu
ZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCkBAIC01OTUsOSArNjA0LDkgQEAgdm9p
ZCBCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlT25TdWNjZXNzKCkKICAgICAvLyBJ
dCdzIGN1cnJlbnRseSBjbGllbnQncyByZXNwb25zaWJpbGl0eSB0byBrbm93IHRoYXQgZGlkUmVj
ZWl2ZVJlc3BvbnNlQXN5bmMgY2Fubm90IGJlIHVzZWQgdG8gY29udmVydCBhCiAgICAgLy8gbG9h
ZCBpbnRvIGEgZG93bmxvYWQgb3IgYmxvYnMuCiAgICAgaWYgKGNsaWVudCgpLT51c2VzQXN5bmND
YWxsYmFja3MoKSkKLSAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKHRo
aXMsIHJlc3BvbnNlKTsKKyAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5j
KG51bGxwdHIsIHJlc3BvbnNlKTsKICAgICBlbHNlCi0gICAgICAgIGNsaWVudCgpLT5kaWRSZWNl
aXZlUmVzcG9uc2UodGhpcywgcmVzcG9uc2UpOworICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKG51bGxwdHIsIHJlc3BvbnNlKTsKIH0KIAogdm9pZCBCbG9iUmVzb3VyY2VIYW5k
bGU6Om5vdGlmeVJlc3BvbnNlT25FcnJvcigpCkBAIC02MjcsMjggKzYzNiwyOCBAQCB2b2lkIEJs
b2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9yKCkKICAgICAvLyBOb3RlIHRo
YXQgd2UgZG9uJ3Qgd2FpdCBmb3IgY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Ugd2hlbiB1c2lu
ZyBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYy4KICAgICAvLyBUaGlzIGlzIG5vdCBmb3JtYWxseSBj
b3JyZWN0LCBidXQgdGhlIGNsaWVudCBoYXMgdG8gYmUgYSBuby1vcCBhbnl3YXksIGJlY2F1c2Ug
YmxvYnMgY2FuJ3QgYmUgZG93bmxvYWRlZC4KICAgICBpZiAoY2xpZW50KCktPnVzZXNBc3luY0Nh
bGxiYWNrcygpKQotICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmModGhp
cywgcmVzcG9uc2UpOworICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMo
bnVsbHB0ciwgcmVzcG9uc2UpOwogICAgIGVsc2UKLSAgICAgICAgY2xpZW50KCktPmRpZFJlY2Vp
dmVSZXNwb25zZSh0aGlzLCByZXNwb25zZSk7CisgICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZl
UmVzcG9uc2UobnVsbHB0ciwgcmVzcG9uc2UpOwogfQogCiB2b2lkIEJsb2JSZXNvdXJjZUhhbmRs
ZTo6bm90aWZ5UmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGJ5dGVzUmVhZCkKIHsK
ICAgICBpZiAoY2xpZW50KCkpCi0gICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKHRo
aXMsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ5dGVzUmVhZCksIGJ5dGVzUmVhZCk7Cisg
ICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKG51bGxwdHIsIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIGJ5dGVzUmVhZCksIGJ5dGVzUmVhZCk7CiB9CiAKIHZvaWQgQmxvYlJlc291
cmNlSGFuZGxlOjpub3RpZnlGYWlsKGludCBlcnJvckNvZGUpCiB7CiAgICAgaWYgKGNsaWVudCgp
KQotICAgICAgICBjbGllbnQoKS0+ZGlkRmFpbCh0aGlzLCBSZXNvdXJjZUVycm9yKHdlYktpdEJs
b2JSZXNvdXJjZURvbWFpbiwgZXJyb3JDb2RlLCBmaXJzdFJlcXVlc3QoKS51cmwoKSwgU3RyaW5n
KCkpKTsKKyAgICAgICAgY2xpZW50KCktPmRpZEZhaWwobnVsbHB0ciwgUmVzb3VyY2VFcnJvcih3
ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4sIGVycm9yQ29kZSwgZmlyc3RSZXF1ZXN0KCkudXJsKCks
IFN0cmluZygpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRvTm90aWZ5RmluaXNoKHZvaWQqIGNvbnRl
eHQpCiB7CiAgICAgQmxvYlJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxCbG9i
UmVzb3VyY2VIYW5kbGUqPihjb250ZXh0KTsKICAgICBpZiAoIWhhbmRsZS0+YWJvcnRlZCgpICYm
IGhhbmRsZS0+Y2xpZW50KCkpCi0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZEZpbmlzaExv
YWRpbmcoaGFuZGxlLCAwKTsKKyAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkRmluaXNoTG9h
ZGluZyhudWxscHRyLCAwKTsKIAogICAgIC8vIEJhbGFuY2UgdGhlIHJlZigpIGluIEJsb2JSZXNv
dXJjZUhhbmRsZTo6bm90ZnlGaW5pc2goKS4KICAgICBoYW5kbGUtPmRlcmVmKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaApp
bmRleCA2NzZkYmZmOTg5NzZiYjA4N2Q1YmJjNWQwY2NhYjdmNDEzYjQ0MWZkLi5kZjA0ZGU1ZWQw
YzQxNjc2MzI2YzFiOWVmNGYzYzgzNGM0NTM1MTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmgKQEAgLTMyLDcgKzMyLDcg
QEAKICNkZWZpbmUgQmxvYlJlc291cmNlSGFuZGxlX2gKIAogI2luY2x1ZGUgIkZpbGVTdHJlYW1D
bGllbnQuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIlJlc291cmNl
UmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQyLDExICs0Miwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBc3luY0ZpbGVTdHJlYW07CiBjbGFzcyBC
bG9iRGF0YTsKIGNsYXNzIEZpbGVTdHJlYW07CitjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNz
IFJlc291cmNlSGFuZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owogc3RydWN0IEJs
b2JEYXRhSXRlbTsKIAotY2xhc3MgQmxvYlJlc291cmNlSGFuZGxlIGZpbmFsIDogcHVibGljIEZp
bGVTdHJlYW1DbGllbnQsIHB1YmxpYyBSZXNvdXJjZUhhbmRsZSAgeworY2xhc3MgQmxvYlJlc291
cmNlSGFuZGxlIGZpbmFsIDogcHVibGljIEZpbGVTdHJlYW1DbGllbnQsIHB1YmxpYyBSZXNvdXJj
ZVJlc29sdmVyICB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QmxvYlJlc291cmNl
SGFuZGxlPiBjcmVhdGVBc3luYyhCbG9iRGF0YSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJl
c291cmNlSGFuZGxlQ2xpZW50Kik7CiAKQEAgLTU3LDYgKzU4LDEzIEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgYWJvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWJvcnRlZDsgfQogCisgICAgLy8gUmVz
b3VyY2VSZXNvbHZlciBtZXRob2RzLgorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSBvdmVycmlk
ZTsKKworICAgIHZvaWQgc2V0Q2xpZW50KFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsg
bV9jbGllbnQgPSBjbGllbnQ7IH07CisgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9OworICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
Zmlyc3RSZXF1ZXN0KCkgeyByZXR1cm4gbV9yZXF1ZXN0OyB9OworCiBwcml2YXRlOgogICAgIEJs
b2JSZXNvdXJjZUhhbmRsZShCbG9iRGF0YSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291
cmNlSGFuZGxlQ2xpZW50KiwgYm9vbCBhc3luYyk7CiAgICAgdmlydHVhbCB+QmxvYlJlc291cmNl
SGFuZGxlKCk7CkBAIC02Nyw4ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlYWQoaW50KSBvdmVycmlkZTsKIAogICAgIC8vIFJlc291cmNlSGFuZGxlIG1ldGhvZHMuCi0g
ICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogCiAgICAgdm9pZCBkb1N0YXJ0KCk7CiAgICAgdm9p
ZCBnZXRTaXplRm9yTmV4dCgpOwpAQCAtMTA2LDYgKzExMyw5IEBAIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9zaXplSXRlbUNvdW50OwogICAgIHVuc2lnbmVkIG1fcmVhZEl0ZW1Db3VudDsKICAg
ICBib29sIG1fZmlsZU9wZW5lZDsKKworICAgIFJlc291cmNlSGFuZGxlQ2xpZW50ICptX2NsaWVu
dDsKKyAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmNwcAppbmRleCBkNmMzMTVmYWI0OTU4ZWIwMWM0MWZhYjI4Nzg1ODAyZjI5N2IwODQ3
Li41NWE0NTdhOTM0NGJhOTk1ODMxYWNiOTMyN2FiMzJjNDkwOTAwZTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAtNDAs
MzYgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBzaG91bGRGb3Jj
ZUNvbnRlbnRTbmlmZmluZzsKIAotdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVzb3Vy
Y2VIYW5kbGU6OkJ1aWx0aW5Db25zdHJ1Y3Rvcj4gQnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3Ry
dWN0b3JNYXA7Ci1zdGF0aWMgQnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAmIGJ1
aWx0aW5SZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yTWFwKCkKLXsKLSNpZiBQTEFURk9STShJT1Mp
Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpKTsKLSNlbHNlCi0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNlbmRpZgotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChCdWlsdGluUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3Rvck1hcCwgbWFwLCAoKSk7
Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWls
dGluQ29uc3RydWN0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBwcm90b2NvbCwgUmVzb3VyY2VIYW5k
bGU6OkJ1aWx0aW5Db25zdHJ1Y3RvciBjb25zdHJ1Y3RvcikKLXsKLSAgICBidWlsdGluUmVzb3Vy
Y2VIYW5kbGVDb25zdHJ1Y3Rvck1hcCgpLmFkZChwcm90b2NvbCwgY29uc3RydWN0b3IpOwotfQot
Ci10eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBSZXNvdXJjZUhhbmRsZTo6QnVpbHRpblN5
bmNocm9ub3VzTG9hZGVyPiBCdWlsdGluUmVzb3VyY2VIYW5kbGVTeW5jaHJvbm91c0xvYWRlck1h
cDsKLXN0YXRpYyBCdWlsdGluUmVzb3VyY2VIYW5kbGVTeW5jaHJvbm91c0xvYWRlck1hcCYgYnVp
bHRpblJlc291cmNlSGFuZGxlU3luY2hyb25vdXNMb2FkZXJNYXAoKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEJ1aWx0
aW5SZXNvdXJjZUhhbmRsZVN5bmNocm9ub3VzTG9hZGVyTWFwLCBtYXAsICgpKTsKLSAgICByZXR1
cm4gbWFwOwotfQotCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5TeW5jaHJv
bm91c0xvYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIHByb3RvY29sLCBSZXNvdXJjZUhhbmRsZTo6
QnVpbHRpblN5bmNocm9ub3VzTG9hZGVyIGxvYWRlcikKLXsKLSAgICBidWlsdGluUmVzb3VyY2VI
YW5kbGVTeW5jaHJvbm91c0xvYWRlck1hcCgpLmFkZChwcm90b2NvbCwgbG9hZGVyKTsKLX0KLQog
UmVzb3VyY2VIYW5kbGU6OlJlc291cmNlSGFuZGxlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBj
bGllbnQsIGJvb2wgZGVmZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpCiAgICAg
OiBkKGFkb3B0UHRyKG5ldyBSZXNvdXJjZUhhbmRsZUludGVybmFsKHRoaXMsIGNvbnRleHQsIHJl
cXVlc3QsIGNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVudFNuaWZmICYmIHNob3Vs
ZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSkpKQogewpAQCAtODYsMTAgKzU2LDYgQEAg
UmVzb3VyY2VIYW5kbGU6OlJlc291cmNlSGFuZGxlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QKIAogUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gUmVz
b3VyY2VIYW5kbGU6OmNyZWF0ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50LCBib29s
IGRlZmVyc0xvYWRpbmcsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQogewotICAgIEJ1aWx0aW5S
ZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yTWFwOjppdGVyYXRvciBwcm90b2NvbE1hcEl0ZW0gPSBi
dWlsdGluUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3Rvck1hcCgpLmZpbmQocmVxdWVzdC51cmwoKS5w
cm90b2NvbCgpKTsKLQotICAgIGlmIChwcm90b2NvbE1hcEl0ZW0gIT0gYnVpbHRpblJlc291cmNl
SGFuZGxlQ29uc3RydWN0b3JNYXAoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHByb3RvY29sTWFw
SXRlbS0+dmFsdWUocmVxdWVzdCwgY2xpZW50KTsKIAogICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRs
ZT4gbmV3SGFuZGxlKGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZShjb250ZXh0LCByZXF1ZXN0
LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZikpKTsKIApAQCAtMTMy
LDEzICs5OCw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmZhaWx1cmVUaW1lckZpcmVkKCkKIAog
dm9pZCBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRD
cmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7Ci0gICAgQnVpbHRp
blJlc291cmNlSGFuZGxlU3luY2hyb25vdXNMb2FkZXJNYXA6Oml0ZXJhdG9yIHByb3RvY29sTWFw
SXRlbSA9IGJ1aWx0aW5SZXNvdXJjZUhhbmRsZVN5bmNocm9ub3VzTG9hZGVyTWFwKCkuZmluZChy
ZXF1ZXN0LnVybCgpLnByb3RvY29sKCkpOwotCi0gICAgaWYgKHByb3RvY29sTWFwSXRlbSAhPSBi
dWlsdGluUmVzb3VyY2VIYW5kbGVTeW5jaHJvbm91c0xvYWRlck1hcCgpLmVuZCgpKSB7Ci0gICAg
ICAgIHByb3RvY29sTWFwSXRlbS0+dmFsdWUoY29udGV4dCwgcmVxdWVzdCwgc3RvcmVkQ3JlZGVu
dGlhbHMsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
ICAgICBwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29udGV4dCwgcmVxdWVzdCwg
c3RvcmVkQ3JlZGVudGlhbHMsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCA2MDcz
ZjEwMjUwNWViNTg0NDAzNmQ4NTIyY2RmYTI4MWIxMmI3ZjEzLi5iNzFhNmNkZWI4NjcyM2E2MTI4
YThhYTk1NDMxYzMzN2IwMjA3ZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSFRU
UEhlYWRlck1hcC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlVHlwZXMuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzb2x2ZXIuaCIK
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApA
QCAtMTAxLDE3ICsxMDIsMTcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFRpbWVyOwogCi1jbGFzcyBSZXNvdXJjZUhhbmRsZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPgorY2xhc3MgUmVzb3VyY2VIYW5kbGUgOiBwdWJsaWMg
UmVzb3VyY2VSZXNvbHZlcgogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKSB8
fCBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCiAgICAgLCBwdWJsaWMgQXV0aGVudGljYXRpb25DbGll
bnQKICNlbmRpZgogICAgIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFz
c1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gY3JlYXRlKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqLCBib29sIGRlZmVyc0xvYWRp
bmcsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKTsKLQogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgflJlc291cmNlSGFuZGxlKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gY3JlYXRlKE5ldHdvcmtpbmdDb250ZXh0KiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqLCBib29sLCBib29sKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVu
dGlhbHMsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+Jik7
CisKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlKTsKICNlbmRpZgpAQCAtMjQ0LDggKzI0NSw4IEBAIHB1YmxpYzoKIAogICAg
IE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CiAKLSAgICB1c2luZyBSZWZDb3Vu
dGVkPFJlc291cmNlSGFuZGxlPjo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8UmVzb3VyY2VI
YW5kbGU+OjpkZXJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFJlc291cmNlUmVzb2x2ZXI+Ojpy
ZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxSZXNvdXJjZVJlc29sdmVyPjo6ZGVyZWY7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgQ0ZTdHJpbmdSZWYgc3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGUoKTsKQEAgLTI1NSwx
MiArMjU2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNy
ZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwogI2VuZGlmCiAKLSAgICB0eXBlZGVmIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+ICgqQnVp
bHRpbkNvbnN0cnVjdG9yKShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNl
SGFuZGxlQ2xpZW50KiBjbGllbnQpOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQnVpbHRpbkNv
bnN0cnVjdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvdG9jb2wsIEJ1aWx0aW5Db25zdHJ1Y3Rv
cik7Ci0KLSAgICB0eXBlZGVmIHZvaWQgKCpCdWlsdGluU3luY2hyb25vdXNMb2FkZXIpKE5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVudGlhbHMs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKTsK
LSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcihjb25zdCBB
dG9taWNTdHJpbmcmIHByb3RvY29sLCBCdWlsdGluU3luY2hyb25vdXNMb2FkZXIpOwotCiBwcm90
ZWN0ZWQ6CiAgICAgUmVzb3VyY2VIYW5kbGUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCosIGJvb2wgZGVmZXJzTG9hZGluZywg
Ym9vbCBzaG91bGRDb250ZW50U25pZmYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggN2U1ZTI1NzBlOTRl
NzFkY2M1Y2NmNDE5MjJhYzdhNWJlMWZiMDE3NC4uMTIyMDQ2ZGRlZmNlOTQ2ZTgyZjU2NWUwMmEx
OGE2YzdkNDg4OTAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNjMsNiArNjMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFN0b3JhZ2VOb3RBbGxvd2VkCiAgICAgfTsKICAgICAKKyAgICAv
LyBGSVhNRTogUmVuYW1lIHRoaXMgY2xhc3MgUmVzb3VyY2VSZXNvbHZlckNsaWVudAogICAgIGNs
YXNzIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFdFQkNPUkVf
RVhQT1JUIFJlc291cmNlSGFuZGxlQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc29sdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzZkNGNk
ZGYwMGUxMDBhM2VkMmJiZTRmMzU1MmI4NTJiYmE0MzM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc29sdmVyLmNwcApAQCAtMCww
ICsxLDYwIEBACisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNvbHZl
ci5oIgorCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBSZXNvdXJjZVJlc29sdmVyOjpCdWls
dGluQ29uc3RydWN0b3I+IEJ1aWx0aW5SZXNvdXJjZVJlc29sdmVyQ29uc3RydWN0b3JNYXA7Citz
dGF0aWMgQnVpbHRpblJlc291cmNlUmVzb2x2ZXJDb25zdHJ1Y3Rvck1hcCYgYnVpbHRpblJlc291
cmNlUmVzb2x2ZXJDb25zdHJ1Y3Rvck1hcCgpCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIEFT
U0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7CisjZWxzZQorICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisjZW5kaWYKKyAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQnVpbHRpblJlc291cmNlUmVzb2x2ZXJDb25zdHJ1Y3Rvck1hcCwgbWFwLCAoKSk7CisgICAg
cmV0dXJuIG1hcDsKK30KKwordm9pZCBSZXNvdXJjZVJlc29sdmVyOjpyZWdpc3RlckJ1aWx0aW5D
b25zdHJ1Y3Rvcihjb25zdCBBdG9taWNTdHJpbmcmIHByb3RvY29sLCBSZXNvdXJjZVJlc29sdmVy
OjpCdWlsdGluQ29uc3RydWN0b3IgY29uc3RydWN0b3IpCit7CisgICAgYnVpbHRpblJlc291cmNl
UmVzb2x2ZXJDb25zdHJ1Y3Rvck1hcCgpLmFkZChwcm90b2NvbCwgY29uc3RydWN0b3IpOworfQor
Cit0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBSZXNvdXJjZVJlc29sdmVyOjpCdWlsdGlu
U3luY2hyb25vdXNMb2FkZXI+IEJ1aWx0aW5SZXNvdXJjZVJlc29sdmVyU3luY2hyb25vdXNMb2Fk
ZXJNYXA7CitzdGF0aWMgQnVpbHRpblJlc291cmNlUmVzb2x2ZXJTeW5jaHJvbm91c0xvYWRlck1h
cCYgYnVpbHRpblJlc291cmNlUmVzb2x2ZXJTeW5jaHJvbm91c0xvYWRlck1hcCgpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQnVpbHRpblJlc291cmNlUmVzb2x2ZXJTeW5jaHJvbm91c0xvYWRlck1hcCwgbWFwLCAoKSk7
CisgICAgcmV0dXJuIG1hcDsKK30KKwordm9pZCBSZXNvdXJjZVJlc29sdmVyOjpyZWdpc3RlckJ1
aWx0aW5TeW5jaHJvbm91c0xvYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIHByb3RvY29sLCBSZXNv
dXJjZVJlc29sdmVyOjpCdWlsdGluU3luY2hyb25vdXNMb2FkZXIgbG9hZGVyKQoreworICAgIGJ1
aWx0aW5SZXNvdXJjZVJlc29sdmVyU3luY2hyb25vdXNMb2FkZXJNYXAoKS5hZGQocHJvdG9jb2ws
IGxvYWRlcik7Cit9CisKK1Bhc3NSZWZQdHI8UmVzb3VyY2VSZXNvbHZlcj4gUmVzb3VyY2VSZXNv
bHZlcjo6Y3JlYXRlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQsIGJvb2wgZGVmZXJz
TG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpCit7CisgICAgQnVpbHRpblJlc291cmNl
UmVzb2x2ZXJDb25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgcHJvdG9jb2xNYXBJdGVtID0gYnVpbHRp
blJlc291cmNlUmVzb2x2ZXJDb25zdHJ1Y3Rvck1hcCgpLmZpbmQocmVxdWVzdC51cmwoKS5wcm90
b2NvbCgpKTsKKworICAgIGlmIChwcm90b2NvbE1hcEl0ZW0gIT0gYnVpbHRpblJlc291cmNlUmVz
b2x2ZXJDb25zdHJ1Y3Rvck1hcCgpLmVuZCgpKQorICAgICAgICByZXR1cm4gcHJvdG9jb2xNYXBJ
dGVtLT52YWx1ZShyZXF1ZXN0LCBjbGllbnQpOworCisgICAgcmV0dXJuIFJlc291cmNlSGFuZGxl
OjpjcmVhdGUoY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRD
b250ZW50U25pZmYpOworfQorCisKK3ZvaWQgUmVzb3VyY2VSZXNvbHZlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hh
cj4mIGRhdGEpCit7CisgICAgQnVpbHRpblJlc291cmNlUmVzb2x2ZXJTeW5jaHJvbm91c0xvYWRl
ck1hcDo6aXRlcmF0b3IgcHJvdG9jb2xNYXBJdGVtID0gYnVpbHRpblJlc291cmNlUmVzb2x2ZXJT
eW5jaHJvbm91c0xvYWRlck1hcCgpLmZpbmQocmVxdWVzdC51cmwoKS5wcm90b2NvbCgpKTsKKwor
ICAgIGlmIChwcm90b2NvbE1hcEl0ZW0gIT0gYnVpbHRpblJlc291cmNlUmVzb2x2ZXJTeW5jaHJv
bm91c0xvYWRlck1hcCgpLmVuZCgpKSB7CisgICAgICAgIHByb3RvY29sTWFwSXRlbS0+dmFsdWUo
Y29udGV4dCwgcmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlhbHMsIGVycm9yLCByZXNwb25zZSwgZGF0
YSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29udGV4dCwgcmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlhbHMsIGVy
cm9yLCByZXNwb25zZSwgZGF0YSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc29sdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzlmYTFlZDY5OWZi
NTY5NTNmOWUyZTc2ZmZlMjE3OGZjMDZlY2M1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNvbHZlci5oCkBAIC0wLDAgKzEsNzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIENhbm9uIEluYy4gMjAxNAorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4g
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisg
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBSZXNv
dXJjZVJlc29sdmVyX2gKKyNkZWZpbmUgUmVzb3VyY2VSZXNvbHZlcl9oCisKKyNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZVR5cGVzLmgiCisKKyNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKK2NsYXNzIFJlc291cmNl
RXJyb3I7CitjbGFzcyBSZXNvdXJjZUhhbmRsZTsKK2NsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50
OworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKKworY2xh
c3MgUmVzb3VyY2VSZXNvbHZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlUmVzb2x2ZXI+
IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJj
ZVJlc29sdmVyPiBjcmVhdGUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCosIGJvb2wsIGJvb2wpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mKTsKKworICAgIHZpcnR1YWwg
flJlc291cmNlUmVzb2x2ZXIoKSB7IH07CisKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgeyB9
OworICAgIHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpIHsgfTsKKworICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgcmVtb3ZlIHRoaXMgbWV0aG9kCisgICAgdmlydHVhbCBSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfTsKKworICAgIHZpcnR1
YWwgdm9pZCBzZXRDbGllbnQoUmVzb3VyY2VIYW5kbGVDbGllbnQqKSA9IDA7CisgICAgdmlydHVh
bCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBmaXJzdFJlcXVlc3QoKSA9IDA7CisKKyAgICB0eXBlZGVm
IFBhc3NSZWZQdHI8UmVzb3VyY2VSZXNvbHZlcj4gKCpCdWlsdGluQ29uc3RydWN0b3IpKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCk7
CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCdWlsdGluQ29uc3RydWN0b3IoY29uc3QgQXRvbWlj
U3RyaW5nJiBwcm90b2NvbCwgQnVpbHRpbkNvbnN0cnVjdG9yKTsKKworICAgIHR5cGVkZWYgdm9p
ZCAoKkJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcikoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYsIFJlc291
cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvdG9jb2ws
IEJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcik7Cit9OworCit9CisKKyNlbmRpZiAvLyBSZXNvdXJj
ZVJlc29sdmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggMDhjY2MxMzFhOTdlZTQzYzlj
YWU5M2I5YzhjNzQxZjc1MDhmZDU1MS4uNjBmZDQzOTlhNWMzZjk0NzZmNDdkYzUxYjMwMmU3MDk3
ZGQ3MjdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTEyNTEsNyArMTI1MSw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3
b3JraW5nQ29udGV4dCogY29udGV4CiAgICAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAg
IC8vIHdlIHdhbnQgdG8gYXZvaWQgYWNjaWRlbnRhbGx5IGdvaW5nIGludG8gYW4gaW5maW5pdGUg
bG9vcCBvZiByZXF1ZXN0cy4KIAogICAgIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlciBzeW5jTG9h
ZGVyKGVycm9yLCByZXNwb25zZSwgc2Vzc2lvbkZyb21Db250ZXh0KGNvbnRleHQpLCBkYXRhLCBz
dG9yZWRDcmVkZW50aWFscyk7Ci0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBj
cmVhdGUoY29udGV4dCwgcmVxdWVzdCwgJnN5bmNMb2FkZXIsIGZhbHNlIC8qZGVmZXJzTG9hZGlu
ZyovLCBmYWxzZSAvKnNob3VsZENvbnRlbnRTbmlmZiovKTsKKyAgICBSZWZQdHI8UmVzb3VyY2VI
YW5kbGU+IGhhbmRsZShhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGUoY29udGV4dCwgcmVxdWVz
dCwgJnN5bmNMb2FkZXIsIGZhbHNlIC8qZGVmZXJzTG9hZGluZyovLCBmYWxzZSAvKnNob3VsZENv
bnRlbnRTbmlmZiovKSkpOwogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDFiMDEzNTZjZGNkYmI3NjIwYWVhMDdlZGFiMDFmMzE5NDg4Njc4NzQu
LmMxMjE1OGEzODc3MTZlYzVhMDUwMDg3NzhkZTg5YjVjNjE5MjRhOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cApAQCAtMTE0LDcgKzExNCw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291
cmNlTG9hZGVyKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzCiBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6On5OZXR3b3JrUmVzb3VyY2VMb2FkZXIoKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJUKCFtX2hhbmRsZSk7CisgICAgQVNTRVJUKCFtX3Jl
c29sdmVyKTsKICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSB8fCAhbV9zeW5jaHJvbm91c0xv
YWREYXRhLT5kZWxheWVkUmVwbHkpOwogfQogCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogCiAgICAgYm9vbCBzaG91bGRTbmlmZiA9IG1f
cGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kgPT0gU25pZmZDb250ZW50OwotICAgIG1f
aGFuZGxlID0gUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZShtX25ldHdvcmtpbmdDb250ZXh0LmdldCgp
LCBtX2N1cnJlbnRSZXF1ZXN0LCB0aGlzLCBmYWxzZSAvKiBkZWZlcnNMb2FkaW5nICovLCBzaG91
bGRTbmlmZik7CisgICAgbV9yZXNvbHZlciA9IFJlc291cmNlUmVzb2x2ZXI6OmNyZWF0ZShtX25l
dHdvcmtpbmdDb250ZXh0LmdldCgpLCBtX2N1cnJlbnRSZXF1ZXN0LCB0aGlzLCBmYWxzZSAvKiBk
ZWZlcnNMb2FkaW5nICovLCBzaG91bGRTbmlmZik7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzKQpAQCAtMTUxLDggKzE1MSw4IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJz
KQogICAgIGlmIChtX2RlZmVyc0xvYWRpbmcgPT0gZGVmZXJzKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9kZWZlcnNMb2FkaW5nID0gZGVmZXJzOwotICAgIGlmIChtX2hhbmRsZSkgewotICAgICAg
ICBtX2hhbmRsZS0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOworICAgIGlmIChtX3Jlc29sdmVy
KSB7CisgICAgICAgIG1fcmVzb2x2ZXItPnNldERlZmVyc0xvYWRpbmcoZGVmZXJzKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoIW1fZGVmZXJzTG9hZGluZykKQEAgLTE2OSwxNyAr
MTY5LDE3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKCkKIAogICAgIE5l
dHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkucmVt
b3ZlTG9hZGVyKHRoaXMpOwogCi0gICAgaWYgKG1faGFuZGxlKSB7CisgICAgaWYgKG1fcmVzb2x2
ZXIpIHsKICAgICAgICAgLy8gRXhwbGljaXQgZGVyZWYoKSBiYWxhbmNlZCBieSBhIHJlZigpIGlu
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgICAgICAvLyBUaGlzIG1pZ2h0IGNh
dXNlIHRoZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgdG8gYmUgZGVzdHJveWVkIGFuZCB0aGVyZWZv
cmUgd2UgZG8gaXQgbGFzdC4KLSAgICAgICAgbV9oYW5kbGUgPSAwOworICAgICAgICBtX3Jlc29s
dmVyID0gMDsKICAgICAgICAgZGVyZWYoKTsKICAgICB9CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRDb252ZXJ0SGFuZGxlVG9Eb3dubG9hZCgpCiB7Ci0gICAgQVNTRVJUKG1f
aGFuZGxlKTsKKyAgICBBU1NFUlQobV9yZXNvbHZlcik7CiAgICAgbV9kaWRDb252ZXJ0SGFuZGxl
VG9Eb3dubG9hZCA9IHRydWU7CiB9CiAKQEAgLTE4NywxNSArMTg3LDE1IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIAotICAgIGlmIChtX2hhbmRsZSAmJiAhbV9kaWRDb252ZXJ0SGFuZGxlVG9Eb3dubG9hZCkK
LSAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOworICAgIGlmIChtX3Jlc29sdmVyICYmICFtX2Rp
ZENvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKQorICAgICAgICBtX3Jlc29sdmVyLT5jYW5jZWwoKTsK
IAogICAgIGNsZWFudXAoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUg
PT0gbV9oYW5kbGUpOworICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9yZXNv
bHZlcik7CiAKICAgICBpZiAobV9wYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvKQogICAg
ICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCk7CkBAIC0yMDUsMTUgKzIwNSwx
NSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29ucwogICAgIGVsc2UKICAgICAgICAgc2VuZEFib3J0
aW5nT25GYWlsdXJlKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlKHJlc3BvbnNlLCBtX3BhcmFtZXRlcnMuaXNNYWluUmVzb3VyY2UpKTsKIAotICAgIC8vIG1f
aGFuZGxlIHdpbGwgYmUgbnVsbCBpZiB0aGUgcmVxdWVzdCBnb3QgYWJvcnRlZCBhYm92ZS4KLSAg
ICBpZiAoIW1faGFuZGxlKQorICAgIC8vIG1fcmVzb2x2ZXIgd2lsbCBiZSBudWxsIGlmIHRoZSBy
ZXF1ZXN0IGdvdCBhYm9ydGVkIGFib3ZlLgorICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBGb3IgbWFpbiByZXNvdXJjZXMsIHRoZSB3ZWIgcHJvY2VzcyBpcyByZXNw
b25zaWJsZSBmb3Igc2VuZGluZyBiYWNrIGEgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZSBtZXNzYWdlLgogICAgIGlmIChtX3BhcmFtZXRlcnMuaXNNYWlu
UmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faGFuZGxlLT5jb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZSgpOworICAgIGhhbmRsZS0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Uo
KTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgY2hhciogLyogZGF0YSAqLywgdW5zaWduZWQgLyogbGVuZ3RoICov
LCBpbnQgLyogZW5jb2RlZERhdGFMZW5ndGggKi8pCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgY2hhciogLyogZGF0YQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBBU1NFUlRfVU5V
U0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKKyAgICBBU1NFUlRfVU5VU0VEKGhhbmRs
ZSwgaGFuZGxlID09IG1fcmVzb2x2ZXIpOwogCiAgICAgLy8gRklYTUU6IEF0IGxlYXN0IG9uIE9T
IFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSByZXNvdXJjZSBoYW5kbGUuCiAg
ICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
ID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5zaXplKCk7CkBAIC0y
NDIsNyArMjQyLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUGFzc1JlZlB0cjwKIAogdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgZG91
YmxlIGZpbmlzaFRpbWUpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBt
X2hhbmRsZSk7CisgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX3Jlc29sdmVy
KTsKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCiAgICAgICAgIHNlbmRSZXBseVRvU3luY2hy
b25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgp
KTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBkb3VibGUgZmluaQogCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFu
ZGxlID09IG1faGFuZGxlKTsKKyAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1f
cmVzb2x2ZXIpOwogCiAgICAgaWYgKGlzU3luY2hyb25vdXMoKSkgewogICAgICAgICBtX3N5bmNo
cm9ub3VzTG9hZERhdGEtPmVycm9yID0gZXJyb3I7CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29u
c3QgUmVzb3VyY2VFcnJvciYKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsK
LSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKKyAgICBBU1NF
UlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1fcmVzb2x2ZXIpOwogCiAgICAgLy8gV2Ugb25s
eSBleHBlY3QgdG8gZ2V0IHRoZSB3aWxsU2VuZFJlcXVlc3QgY2FsbGJhY2sgZnJvbSBSZXNvdXJj
ZUhhbmRsZSBhcyB0aGUgcmVzdWx0IG9mIGEgcmVkaXJlY3QuCiAgICAgQVNTRVJUKCFyZWRpcmVj
dFJlc3BvbnNlLmlzTnVsbCgpKTsKQEAgLTI5NCw2ICsyOTQsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
Y29uc3QgUgogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KQogeworICAgIEFTU0VSVCht
X3Jlc29sdmVyLT5oYW5kbGUoKSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbV9jdXJyZW50
UmVxdWVzdC51cGRhdGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkUHJvcGVydGllcyhuZXdSZXF1
ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSk7CiAjZWxpZiBVU0UoU09VUCkK
QEAgLTMwMiwyMiArMzAzLDIyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51
ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlCiAjZW5kaWYKIAog
ICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAgIG1faGFuZGxlLT5j
YW5jZWwoKTsKLSAgICAgICAgZGlkRmFpbChtX2hhbmRsZS5nZXQoKSwgY2FuY2VsbGVkRXJyb3Io
bV9jdXJyZW50UmVxdWVzdCkpOworICAgICAgICBtX3Jlc29sdmVyLT5jYW5jZWwoKTsKKyAgICAg
ICAgZGlkRmFpbChtX3Jlc29sdmVyLT5oYW5kbGUoKSwgY2FuY2VsbGVkRXJyb3IobV9jdXJyZW50
UmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9oYW5kbGUtPmNvbnRp
bnVlV2lsbFNlbmRSZXF1ZXN0KG1fY3VycmVudFJlcXVlc3QpOworICAgIG1fcmVzb2x2ZXItPmhh
bmRsZSgpLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0KTsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkK
IHsKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY2hlY2sgb25jZSBCbG9iUmVzb3VyY2VIYW5k
bGUgaW1wbGVtZW50cyBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBjb3JyZWN0bHkuCiAgICAgLy8g
Q3VycmVudGx5LCBpdCBkb2VzIG5vdCB3YWl0IGZvciByZXNwb25zZSwgc28gdGhlIGxvYWQgaXMg
bGlrZWx5IHRvIGZpbmlzaCBiZWZvcmUgY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UuCi0gICAg
aWYgKCFtX2hhbmRsZSkKKyAgICBpZiAoIW1fcmVzb2x2ZXIgfHwgIW1fcmVzb2x2ZXItPmhhbmRs
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2hhbmRsZS0+Y29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UoKTsKKyAgICBtX3Jlc29sdmVyLT5oYW5kbGUoKS0+Y29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFNlbmREYXRh
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCkBAIC0zMzAsMjEgKzMzMSwyMSBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgdW5zaWduZWQgbG9uZyBsbwogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
d2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogewotICAgIEFTU0VSVF9VTlVTRUQo
aGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOworICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBo
YW5kbGUgPT0gbV9yZXNvbHZlcik7CiAKICAgICBkaWRGYWlsKGhhbmRsZSwgV2ViS2l0OjpibG9j
a2VkRXJyb3IobV9jdXJyZW50UmVxdWVzdCkpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y2Fubm90U2hvd1VSTChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogewotICAgIEFTU0VS
VF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOworICAgIEFTU0VSVF9VTlVTRUQo
aGFuZGxlLCBoYW5kbGUgPT0gbV9yZXNvbHZlcik7CiAKICAgICBkaWRGYWlsKGhhbmRsZSwgV2Vi
S2l0OjpjYW5ub3RTaG93VVJMRXJyb3IobV9jdXJyZW50UmVxdWVzdCkpOwogfQogCiBib29sIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1f
aGFuZGxlIHx8ICFtX2hhbmRsZSk7IC8vIG1faGFuZGxlIHdpbGwgYmUgMCBpZiBjYWxsZWQgZnJv
bSBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKS4KKyAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFu
ZGxlID09IG1fcmVzb2x2ZXIgfHwgIW1fcmVzb2x2ZXIpOyAvLyBtX3Jlc29sdmVyIHdpbGwgYmUg
MCBpZiBjYWxsZWQgZnJvbSBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKS4KIAogICAgIC8vIFdoZW4g
dGhlIFdlYlByb2Nlc3MgaXMgaGFuZGxpbmcgbG9hZGluZyBhIGNsaWVudCBpcyBjb25zdWx0ZWQg
ZWFjaCB0aW1lIHRoaXMgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgcXVlc3Rpb24gaXMgYXNr
ZWQuCiAgICAgLy8gSW4gTmV0d29ya1Byb2Nlc3MgbW9kZSB3ZSBhc2sgdGhlIFdlYlByb2Nlc3Mg
Y2xpZW50IHVwIGZyb250IG9uY2UgYW5kIHRoZW4gcmV1c2UgdGhlIGNhY2hlZCBhbnN3ZXIuCkBA
IC0zNTYsNyArMzU3LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCiAKIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkK
IHsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKKyAgICBB
U1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1fcmVzb2x2ZXIpOwogICAgIC8vIE5ldHdv
cmtSZXNvdXJjZUxvYWRlciBkb2VzIG5vdCBrbm93IHdoZXRoZXIgdGhlIHJlcXVlc3QgaXMgY3Jv
c3Mgb3JpZ2luLCBzbyBXZWIgcHJvY2VzcyBjb21wdXRlcyBhbiBhcHBsaWNhYmxlIGNyZWRlbnRp
YWwgcG9saWN5IGZvciBpdC4KICAgICBBU1NFUlQobV9wYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRp
YWxQb2xpY3kgIT0gRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzKTsKIApA
QCAtMzcwLDcgKzM3MSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqIGhhCiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCiB7Ci0gICAg
QVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7CisgICAgQVNTRVJUX1VO
VVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX3Jlc29sdmVyKTsKIAogICAgIC8vIFRoaXMgZnVuY3Rp
b24gaXMgcHJvYmFibHkgbm90IG5lZWRlZCAoc2VlIDxyZGFyOi8vcHJvYmxlbS84OTYwMTI0Piku
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTM3OCwxMCArMzc5LDEwIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJj
ZUhhbmRsZSogaGFuCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmNl
bGxhdGlvbihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7
CisgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX3Jlc29sdmVyKTsKIAotICAg
IG1faGFuZGxlLT5jYW5jZWwoKTsKLSAgICBkaWRGYWlsKG1faGFuZGxlLmdldCgpLCBjYW5jZWxs
ZWRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0KSk7CisgICAgbV9yZXNvbHZlci0+Y2FuY2VsKCk7Cisg
ICAgZGlkRmFpbChtX3Jlc29sdmVyLT5oYW5kbGUoKSwgY2FuY2VsbGVkRXJyb3IobV9jdXJyZW50
UmVxdWVzdCkpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZmZXJp
bmdUaW1lcklmTmVlZGVkKCkKQEAgLTM5Niw3ICszOTcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCkKIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKIHsKICAgICBBU1NFUlQobV9idWZmZXJl
ZERhdGEpOwotICAgIEFTU0VSVChtX2hhbmRsZSk7CisgICAgQVNTRVJUKG1fcmVzb2x2ZXIpOwog
ICAgIGlmICghbV9idWZmZXJlZERhdGEtPnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00
NzUsNyArNDc2LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRBYm9ydGluZ09u
RmFpbHVyZShUJiYgbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZVMKIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3Bh
Y2UpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlRfVU5VU0VE
KGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKKyAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwg
aGFuZGxlID09IG1fcmVzb2x2ZXIpOwogCiAgICAgLy8gSGFuZGxlIHNlcnZlciB0cnVzdCBldmFs
dWF0aW9uIGF0IHBsYXRmb3JtLWxldmVsIGlmIHJlcXVlc3RlZCwgZm9yIHBlcmZvcm1hbmNlIHJl
YXNvbnMuCiAgICAgaWYgKHByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpID09
IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lU2VydmVyVHJ1c3RFdmFsdWF0aW9u
UmVxdWVzdGVkCkBAIC00OTYsNyArNDk3LDggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhSZXNvdXJjZUgKIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZShib29sIHJlc3VsdCkKIHsKLSAgICBtX2hhbmRsZS0+Y29udGludWVD
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHJlc3VsdCk7CisgICAgQVNTRVJU
KG1fcmVzb2x2ZXItPmhhbmRsZSgpKTsKKyAgICBtX3Jlc29sdmVyLT5oYW5kbGUoKS0+Y29udGlu
dWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHJlc3VsdCk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAppbmRleCBhMjcxNmRmZTMxMGJlYzQ4MzNiNzk5NmRmNGQ4M2MwYzZiMWQ4
MDk2Li4zNDI1YmYxZDU5NjhkZjA0ZTM3NjU2ZWIzMGM1N2RmOWQwOWI0MDMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2hhbmdlcyB3aXRoIHJlZGlyZWN0
cy4KICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGN1cnJlbnRSZXF1ZXN0KCkgeyByZXR1
cm4gbV9jdXJyZW50UmVxdWVzdDsgfQogCi0gICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlLmdldCgpOyB9CisgICAgV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZXIgPyBtX3Jlc29s
dmVyLT5oYW5kbGUoKSA6IG51bGxwdHI7IH0KICAgICB2b2lkIGRpZENvbnZlcnRIYW5kbGVUb0Rv
d25sb2FkKCk7CiAKICAgICB2b2lkIHN0YXJ0KCk7CkBAIC0xNjMsNyArMTYzLDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fY29ubmVjdGlv
bjsKIAogICAgIFJlZlB0cjxSZW1vdGVOZXR3b3JraW5nQ29udGV4dD4gbV9uZXR3b3JraW5nQ29u
dGV4dDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU+IG1faGFuZGxlOworICAg
IFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZVJlc29sdmVyPiBtX3Jlc29sdmVyOwogCiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAppbmRleCA3NTAzNzJjOTBhMDFiZTY3ZjE0YzYz
NjMxYjgyMTgwZDMwZTg2MTYxLi40NDYyNjAxMmUwNWY3ZmVmMTE4OTBhMzNhYjM5ZGE5ZjcwMzBk
NzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2Fk
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCkBAIC0z
OSw3ICszOSw3IEBAIE9CSkNfQ0xBU1MgV0tEb3dubG9hZEFzRGVsZWdhdGU7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzb2x2ZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5
PgogI2VuZGlmCkBAIC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUNsaWVudD4gbV9kb3dubG9hZENsaWVudDsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU+IG1fcmVzb3VyY2VIYW5kbGU7CisgICAgUmVmUHRyPFdlYkNvcmU6
OlJlc291cmNlUmVzb2x2ZXI+IG1fcmVzb3VyY2VSZXNvbHZlcjsKICNlbmRpZgogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3Vw
LmNwcAppbmRleCA5OTc3YzdjNjNmYzNlOTUwOGJlMDM2ZDk5ZGNjYzA5M2VkODAzYTIyLi41Njc5
M2I0NGI5ODI5Yzc4NzljYWRmY2QyOTllNjJjNzQwN2JjOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcApAQCAtMTgy
LDkgKzE4Miw5IEBAIHB1YmxpYzoKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICB9CiAK
LSAgICB2b2lkIGNhbmNlbChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQorICAgIHZvaWQgY2FuY2Vs
KFJlc291cmNlUmVzb2x2ZXIqIHJlc29sdmVyKQogICAgIHsKLSAgICAgICAgaGFuZGxlLT5jYW5j
ZWwoKTsKKyAgICAgICAgcmVzb2x2ZXItPmNhbmNlbCgpOwogICAgICAgICBkZWxldGVGaWxlc0lm
TmVlZGVkKCk7CiAgICAgICAgIG1fZG93bmxvYWQtPmRpZENhbmNlbChJUEM6OkRhdGFSZWZlcmVu
Y2UoKSk7CiAgICAgfQpAQCAtMjE5LDE5ICsyMTksMTkgQEAgcHVibGljOgogdm9pZCBEb3dubG9h
ZDo6c3RhcnQoKQogewogICAgIEFTU0VSVCghbV9kb3dubG9hZENsaWVudCk7Ci0gICAgQVNTRVJU
KCFtX3Jlc291cmNlSGFuZGxlKTsKKyAgICBBU1NFUlQoIW1fcmVzb3VyY2VSZXNvbHZlcik7CiAg
ICAgbV9kb3dubG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRDbGllbnQ+KHRo
aXMpOwotICAgIG1fcmVzb3VyY2VIYW5kbGUgPSBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKDAsIG1f
cmVxdWVzdCwgbV9kb3dubG9hZENsaWVudC5nZXQoKSwgZmFsc2UsIGZhbHNlKTsKKyAgICBtX3Jl
c291cmNlUmVzb2x2ZXIgPSBSZXNvdXJjZVJlc29sdmVyOjpjcmVhdGUoMCwgbV9yZXF1ZXN0LCBt
X2Rvd25sb2FkQ2xpZW50LmdldCgpLCBmYWxzZSwgZmFsc2UpOwogICAgIGRpZFN0YXJ0KCk7CiB9
CiAKIHZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZShSZXNvdXJjZUhhbmRsZSogcmVzb3Vy
Y2VIYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEFTU0VS
VCghbV9kb3dubG9hZENsaWVudCk7Ci0gICAgQVNTRVJUKCFtX3Jlc291cmNlSGFuZGxlKTsKKyAg
ICBBU1NFUlQoIW1fcmVzb3VyY2VSZXNvbHZlcik7CiAgICAgbV9kb3dubG9hZENsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRDbGllbnQ+KHRoaXMpOwogICAgIHJlc291cmNlSGFuZGxl
LT5zZXRDbGllbnQobV9kb3dubG9hZENsaWVudC5nZXQoKSk7Ci0gICAgbV9yZXNvdXJjZUhhbmRs
ZSA9IHJlc291cmNlSGFuZGxlOworICAgIG1fcmVzb3VyY2VSZXNvbHZlciA9IHJlc291cmNlSGFu
ZGxlOwogICAgIGRpZFN0YXJ0KCk7CiAgICAgc3RhdGljX2Nhc3Q8RG93bmxvYWRDbGllbnQqPiht
X2Rvd25sb2FkQ2xpZW50LmdldCgpKS0+aGFuZGxlUmVzcG9uc2VMYXRlcihyZXNwb25zZSk7CiB9
CkBAIC0yNDMsMjIgKzI0MywyMiBAQCB2b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU2FuZGJveEV4dAogCiB2b2lkIERv
d25sb2FkOjpjYW5jZWwoKQogewotICAgIGlmICghbV9yZXNvdXJjZUhhbmRsZSkKKyAgICBpZiAo
IW1fcmVzb3VyY2VSZXNvbHZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ2FuY2VsbGlu
ZyB0aGUgZG93bmxvYWQgd2lsbCBkZWxldGUgaXQgYW5kIHBsYXRmb3JtSW52YWxpZGF0ZSgpIHdp
bGwgYmUgY2FsbGVkIGJ5IHRoZSBkZXN0cnVjdG9yLgotICAgIC8vIFNvLCB3ZSBuZWVkIHRvIHNl
dCBtX3Jlc291cmNlSGFuZGxlIHRvIG51bGxwdHIgYmVmb3JlIGFjdHVhbGx5IGNhbmNlbGxpbmcg
dGhlIGRvd25sb2FkIHRvIG1ha2Ugc3VyZQorICAgIC8vIFNvLCB3ZSBuZWVkIHRvIHNldCBtX3Jl
c291cmNlUmVzb2x2ZXIgdG8gbnVsbHB0ciBiZWZvcmUgYWN0dWFsbHkgY2FuY2VsbGluZyB0aGUg
ZG93bmxvYWQgdG8gbWFrZSBzdXJlCiAgICAgLy8gaXQgd29uJ3QgYmUgY2FuY2VsbGVkIGFnYWlu
IGJ5IHBsYXRmb3JtSW52YWxpZGF0ZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjc2NTAuCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiByZXNvdXJjZUhh
bmRsZSA9IG1fcmVzb3VyY2VIYW5kbGUucmVsZWFzZSgpOwotICAgIHN0YXRpY19jYXN0PERvd25s
b2FkQ2xpZW50Kj4obV9kb3dubG9hZENsaWVudC5nZXQoKSktPmNhbmNlbChyZXNvdXJjZUhhbmRs
ZS5nZXQoKSk7CisgICAgUmVmUHRyPFJlc291cmNlUmVzb2x2ZXI+IHJlc291cmNlUmVzb2x2ZXIg
PSBtX3Jlc291cmNlUmVzb2x2ZXIucmVsZWFzZSgpOworICAgIHN0YXRpY19jYXN0PERvd25sb2Fk
Q2xpZW50Kj4obV9kb3dubG9hZENsaWVudC5nZXQoKSktPmNhbmNlbChyZXNvdXJjZVJlc29sdmVy
LmdldCgpKTsKIH0KIAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKLSAg
ICBpZiAobV9yZXNvdXJjZUhhbmRsZSkgewotICAgICAgICBtX3Jlc291cmNlSGFuZGxlLT5zZXRD
bGllbnQoMCk7Ci0gICAgICAgIG1fcmVzb3VyY2VIYW5kbGUtPmNhbmNlbCgpOwotICAgICAgICBt
X3Jlc291cmNlSGFuZGxlID0gMDsKKyAgICBpZiAobV9yZXNvdXJjZVJlc29sdmVyKSB7CisgICAg
ICAgIG1fcmVzb3VyY2VSZXNvbHZlci0+c2V0Q2xpZW50KDApOworICAgICAgICBtX3Jlc291cmNl
UmVzb2x2ZXItPmNhbmNlbCgpOworICAgICAgICBtX3Jlc291cmNlUmVzb2x2ZXIgPSAwOwogICAg
IH0KIAogICAgIG1fZG93bmxvYWRDbGllbnQgPSBudWxscHRyOwpAQCAtMjcxLDcgKzI3MSw3IEBA
IHZvaWQgRG93bmxvYWQ6OmRpZERlY2lkZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgLypkZXN0
aW5hdGlvbiovLCBib29sIC8qYWxsb3dPCiAKIHZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtRGlkRmlu
aXNoKCkKIHsKLSAgICBtX3Jlc291cmNlSGFuZGxlID0gMDsKKyAgICBtX3Jlc291cmNlUmVzb2x2
ZXIgPSAwOwogfQogCiB2b2lkIERvd25sb2FkOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242407</attachid>
            <date>2014-12-02 05:59:36 -0800</date>
            <delta_ts>2015-09-30 06:56:18 -0700</delta_ts>
            <desc>Introducing generic ResourceHandle replacement</desc>
            <filename>bug-138835-20141202150006.patch</filename>
            <type>text/plain</type>
            <size>52687</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDk5ZGQ1YjRlMjNkMzJk
ZTg3NGE5OTAyZTk2NjY1MGYxNGI5Mjg0My4uYWUwNTA1NjdhMzY5NDhkMTMyZDc4MTZjZmE1YjI1
YTA5ZDk3MWRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE0LTEyLTAyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgTW92ZSBC
bG9iIGxvYWRpbmcgb3V0IG9mIFJlc291cmNlSGFuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg4MzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2VkIFJlc291cmNlUmVzb2x2ZXIgYXMg
YSBnZW5lcmljIGludGVyZmFjZSBvbiB0b3Agb2YgUmVzb3VyY2VIYW5kbGUgZm9yIGNsYXNzZXMg
dGhhdCB3YW50IHRvIHJlc29sdmUgcmVzb3VyY2UgcmVxdWVzdHMuCisgICAgICAgIEludHJvZHVj
ZWQgUmVzb3VyY2VSZXNvbHZlckNsaWVudCBhbmQgUmVzb3VyY2VSZXNvbHZlckFzeW5jQ2xpZW50
IHRoYXQgY29ycmVzcG9uZCB0byBzb21lIFJlc291cmNlSGFuZGxlQ2xpZW50IGNhbGxiYWNrcyAo
bWFpbiBkYXRhIGxvYWRpbmcgY2FsbGJhY2tzIGFuZCBhc3luYyBkYXRhIGxvYWRpbmcgY2FsbGJh
Y2tzKS4KKyAgICAgICAgSW50cm9kdWNlZCBSZXNvdXJjZVJlc29sdmVyQXN5bmMgYXMgdGhlIGlu
dGVyZmFjZSBmb3IgYXN5bmMgcmVzb2x2ZXJzICh1c2FnZSBwcm9iYWJseSBsaW1pdGVkIHRvIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcikuCisgICAgICAgIEF0IHRoZSBlbmQgb2YgdGhlIG1pZ3JhdGlv
biwgaXQgaXMgZXhwZWN0ZWQgdGhhdCBSZXNvdXJjZUhhbmRsZUNsaWVudCB3aWxsIG9ubHkgY29u
dGFpbiB0aGUgY2FsbGJhY2tzIHNwZWNpZmljIHRvIFJlc291cmNlSGFuZGxlIChhdXRoZW50aWNh
dGlvbiwgc3BlY2lmaWMgYmFjayBlbmQgY2FsbGJhY2tzLi4uLikuCisgICAgICAgIEltcGxlbWVu
dGVkIFJlc291cmNlUmVzb2x2ZXIgQVBJIGZvciBibG9iIGxvYWRpbmcuCisKKyAgICAgICAgUGF0
Y2ggaXMgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OiBBZGRlZCBSZXNvdXJjZVJlc29sdmVyIGZpbGUuCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46IEFkZGVkIFJlc291cmNlUmVzb2x2ZXI6OmNyZWF0ZSB0byB0aGUgbGlzdCBvZiBleHBvcnRl
ZCBzeW1ib2xzLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
QWRkZWQgUmVzb3VyY2VSZXNvbHZlci5oLy5jcCBhbmQgcmVsYXRlZCBjbGllbnQgaGVhZGVyIGZp
bGVzLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KTogTWFkZSB1c2Ugb2Yg
bmV3bHkgaW50cm9kdWNlZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkuCisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpjcmVhdGVSZXNvdXJj
ZUhhbmRsZSk6IFdyYXBwZWQgdGhlIG5ldyBCbG9iUmVzb3VyY2VIYW5kbGUgaW50byBhIFJlc291
cmNlSGFuZGxlIGZvciBjb21wYXRpYmlsaXR5IHB1cnBvc2VkIHVudGlsIG1pZ3JhdGlvbiBmcm9t
IFJlc291cmNlSGFuZGxlIHRvIFJlc291cmNlUmVzb2x2ZXIgaXMgZmluaXNoZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpjcmVhdGUpOiBTYW1lIGFzIHJlbW92ZWQgY3JlYXRl
QXN5bmMgbWV0aG9kIHdpdGggdGhlIGFkZGl0aW9uIG9mIGJsb2IgZGF0YSByZXRyaWV2YWwgZnJv
bSB0aGUgcmVnaXN0cnkuCisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOiBBZGRlZCBibG9iIGRhdGEgcmV0cmlldmFsIGZyb20g
dGhlIHJlZ2lzdHJ5LgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpCbG9i
UmVzb3VyY2VIYW5kbGUpOiBBZGRlZCByZXNvbHZlciBjbGllbnQgYW5kIGFzeW5jIGNsaWVudCBh
cyBwYXJhbWV0ZXJzIGluIGxpZXUgb2YgaGFuZGxlIGNsaWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkJsb2JSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNv
dXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPblN1Y2Nlc3MpOiBNb3ZpbmcgZnJvbSByZXNvdXJj
ZSBoYW5kbGUgY2xpZW50IHRvIHJlc29sdmVyIGFzeW5jIGNsaWVudC4KKyAgICAgICAgKFdlYkNv
cmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9yKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUFzeW5jKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5oOiBNYWRl
IEJsb2JSZXNvdXJjZUhhbmRsZSBkZXJpdmluZyBmcm9tIFJlc291cmNlUmVzb2x2ZXIgYW5kIG5v
IGxvbmdlciBmcm9tIFJlc291cmNlSGFuZGxlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuaDogQWRkZWQgRklYTUUgdG8gcmVtb3ZlIGNhbGxiYWNrcy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzb2x2ZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzb2x2ZXI6OmNyZWF0ZSk6IGZ1dHVyZSByZXBs
YWNlbWVudCBvZiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc29sdmVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KTogZnV0dXJlIHJlcGxhY2Vt
ZW50IG9mIFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5LgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNvbHZlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzb2x2ZXI6On5SZXNvdXJjZVJlc29sdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzb2x2ZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlc29sdmVyOjpzZXREZWZlcnNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzb2x2ZXI6OmFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzb2x2
ZXI6OmhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc29sdmVy
QXN5bmMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc29sdmVyQXN5bmM6
On5SZXNvdXJjZVJlc29sdmVyQXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNv
bHZlckFzeW5jOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlc29sdmVyQXN5bmM6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzb2x2ZXJBc3luY0NsaWVudDo6flJlc291cmNlUmVzb2x2
ZXJBc3luY0NsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc29sdmVyQXN5bmND
bGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzb2x2ZXJBc3luY0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNvbHZlckNsaWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzb2x2ZXJDbGllbnQ6On5SZXNvdXJjZVJlc29sdmVyQ2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzb2x2ZXJDbGllbnQ6OndpbGxTZW5k
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc29sdmVyQ2xpZW50OjpkaWRT
ZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc29sdmVyQ2xpZW50OjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNvbHZlckNsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNvbHZlckNs
aWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc29s
dmVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzb2x2ZXJDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNv
bHZlckNsaWVudDo6d2FzQmxvY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc29s
dmVyQ2xpZW50OjpjYW5ub3RTaG93VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
b2x2ZXJDbGllbnQ6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKToKKwogMjAxNC0xMS0yOSAg
R3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEZpeCBh
IGJ1aWxkIHdhcm5pbmcgd2hlbiBDU1NfU0NST0xMX1NOQVAgaXMgZW5hYmxlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCA2NDYzNTEyZDMxODNlYWQ5NjhkOWI0MDk4OWQyODJkMGM1MWMwODMzLi5i
NDlkZTJmZGU4Zjc4NzkzY2JlZDc4OThjNzRiOTMyZDY4NDhiY2NlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMjIwMSw2ICsyMjAxLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNvbHZlci5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZUJhc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGU0NTExYWY3MDQz
OWRlYjBiZjllMDAyNWQ0NGU5NDg0MjQ1NjhiNTEuLjhjMmM4Y2JkMDdjZGZjMjE5YzBmZTgyZjRk
MWVhZWMzMGZiZWE0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC03MjUsNiArNzI1LDcgQEAg
X19aTjdXZWJDb3JlMTZOYXZpZ2F0aW9uQWN0aW9uQzFFUktOU18xNVJlc291cmNlUmVxdWVzdEUK
IF9fWk43V2ViQ29yZTE2TmF2aWdhdGlvbkFjdGlvbkMxRVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RF
TlNfMTNGcmFtZUxvYWRUeXBlRWIKIF9fWk43V2ViQ29yZTE2TmF2aWdhdGlvbkFjdGlvbkMxRVJL
TlNfMTVSZXNvdXJjZVJlcXVlc3RFTlNfMTROYXZpZ2F0aW9uVHlwZUUKIF9fWk43V2ViQ29yZTE2
TmF2aWdhdGlvbkFjdGlvbkMxRXYKK19fWk43V2ViQ29yZTE2UmVzb3VyY2VSZXNvbHZlcjZjcmVh
dGVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU18xNVJlc291cmNlUmVxdWVzdEVQTlNfMjJS
ZXNvdXJjZVJlc29sdmVyQ2xpZW50RVBOU18yN1Jlc291cmNlUmVzb2x2ZXJBc3luY0NsaWVudEVQ
TlNfMjBSZXNvdXJjZUhhbmRsZUNsaWVudEViYgogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9s
bGVyMTBpbml0U2NyaXB0RVJOU18xNURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE2U2Ny
aXB0Q29udHJvbGxlcjExY3JlYXRlV29ybGRFdgogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9s
bGVyMTNleGVjdXRlU2NyaXB0RVJLTjNXVEY2U3RyaW5nRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4OWZiM2M3NzgxZjhlYzFj
MGE2Nzg1MGQwMjYxMGM4NzgwNTZmYTViLi4yOWVkODVkM2ZlYmYwMzViYmRhNzZiNzMwNmZlMjRk
ZDI4YWUxYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNDY4LDYgKzE0NjgsMTAgQEAKIAkJNDFEMTY4RUUxMDIyNkU4OTAw
OUJDODI3IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMTY4RTYxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdv
cmtlclRocmVhZC5oICovOyB9OwogCQk0MUQxNjkwNTEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUQxNjkwMzEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZS5jcHAgKi87IH07CiAJCTQxRDE2OTA2MTAyMzhCNjYwMDlCQzgyNyAvKiBKU1No
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUQxNjkwNDEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZS5oICovOyB9OworCQk0MUQ2RTgxOTFBMkNBMTY5MDBBMzQzNTkgLyogUmVzb3Vy
Y2VSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUQ2RTgxNTFBMkNBMTVGMDBBMzQzNTkgLyogUmVzb3VyY2VSZXNvbHZlci5jcHAgKi87
IH07CisJCTQxRDZFODFBMUEyQ0ExNjkwMEEzNDM1OSAvKiBSZXNvdXJjZVJlc29sdmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQ2RTgxNjFBMkNB
MTVGMDBBMzQzNTkgLyogUmVzb3VyY2VSZXNvbHZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxRDZFODFCMUEyQ0ExNjkwMEEzNDM1OSAvKiBS
ZXNvdXJjZVJlc29sdmVyQXN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRDZFODE3MUEyQ0ExNUYwMEEzNDM1OSAvKiBSZXNvdXJjZVJlc29sdmVy
QXN5bmMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk0MUQ2RTgxQzFBMkNBMTY5MDBBMzQzNTkgLyogUmVzb3VyY2VSZXNvbHZlckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFENkU4MTgxQTJD
QTE1RjAwQTM0MzU5IC8qIFJlc291cmNlUmVzb2x2ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZC
M0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2Vy
LmNwcCAqLzsgfTsKIAkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFD
QjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKIAkJNDFFMUIxRDMw
RkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDRDBGRjU5ODY5MDA1NzZCM0IgLyogU2hh
cmVkV29ya2VyLmNwcCAqLzsgfTsKQEAgLTg1MjksNiArODUzMywxMCBAQAogCQk0MUQxNjhFNjEw
MjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFNoYXJlZFdvcmtlclRocmVhZC5oOyBwYXRoID0gd29ya2Vycy9TaGFy
ZWRXb3JrZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMTY5MDMx
MDIzOEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDE2OTA0MTAyMzhCNjYwMDlCQzgy
NyAvKiBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFENkU4MTUxQTJDQTE1RjAwQTM0MzU5IC8qIFJlc291cmNlUmVzb2x2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VSZXNvbHZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDZFODE2MUEyQ0ExNUYwMEEz
NDM1OSAvKiBSZXNvdXJjZVJlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlc291cmNlUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFE
NkU4MTcxQTJDQTE1RjAwQTM0MzU5IC8qIFJlc291cmNlUmVzb2x2ZXJBc3luYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlc29sdmVyQXN5bmMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFENkU4MTgxQTJDQTE1RjAwQTM0MzU5IC8qIFJlc291
cmNlUmVzb2x2ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVz
b3VyY2VSZXNvbHZlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUx
QjFDQTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWJzdHJhY3RXb3JrZXIuY3BwOyBwYXRoID0gd29ya2Vy
cy9BYnN0cmFjdFdvcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTFC
MUNCMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBBYnN0cmFjdFdvcmtlci5oOyBwYXRoID0gd29ya2Vycy9BYnN0cmFj
dFdvcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUxQjFDQzBGRjU5ODY5
MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEFi
c3RyYWN0V29ya2VyLmlkbDsgcGF0aCA9IHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0MjEsNiArMTY0MjksMTAgQEAKIAkJCQk4QTgx
QkY4NDExRENGRDkwMDBEQTJCOTggLyogUmVzb3VyY2VMb2FkVGltaW5nLmggKi8sCiAJCQkJNTE0
Qzc2NjcwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuY3BwICovLAogCQkJ
CTUxNEM3NjY4MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmggKi8sCisJ
CQkJNDFENkU4MTUxQTJDQTE1RjAwQTM0MzU5IC8qIFJlc291cmNlUmVzb2x2ZXIuY3BwICovLAor
CQkJCTQxRDZFODE2MUEyQ0ExNUYwMEEzNDM1OSAvKiBSZXNvdXJjZVJlc29sdmVyLmggKi8sCisJ
CQkJNDFENkU4MTcxQTJDQTE1RjAwQTM0MzU5IC8qIFJlc291cmNlUmVzb2x2ZXJBc3luYy5oICov
LAorCQkJCTQxRDZFODE4MUEyQ0ExNUYwMEEzNDM1OSAvKiBSZXNvdXJjZVJlc29sdmVyQ2xpZW50
LmggKi8sCiAJCQkJNTE0Qzc2NjkwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VC
YXNlLmNwcCAqLywKIAkJCQk1MTRDNzY2QTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXNw
b25zZUJhc2UuaCAqLywKIAkJCQk1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3Ry
ZWFtRXJyb3JCYXNlLmNwcCAqLywKQEAgLTI0MzE0LDYgKzI0MzI2LDcgQEAKIAkJCQk5Mzk4ODVD
NDA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEY2
NzU2MUIxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUwRkVGMzcyQjE3QzUzRUFDMUMxRkJFRSAvKiBFdmVudFNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDFENkU4MUIxQTJDQTE2OTAwQTM0MzU5IC8qIFJlc291cmNlUmVzb2x2ZXJBc3luYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyRURCN0IwQjMwOEE3ODAwMjcwNEI2IC8qIEV2ZW50VGFy
Z2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBM0NBNTE0NTIzN0NDMDAzRTFEQTYgLyogRXZl
bnRUYXJnZXRIZWFkZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBM0NBNjE0NTIzN0NDMDAz
RTFEQTYgLyogRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTI0ODEz
LDYgKzI0ODI2LDcgQEAKIAkJCQlCQzQ2QzFGQjBDMEREQzhGMDAyMENGQzMgLyogSlNDU1NDaGFy
c2V0UnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA5RUJEQzMxNkI3RjNBNjAwQ0JBM0ZDIC8q
IEpTQ1NTRm9udEZhY2VMb2FkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDZDMUZEMEMw
RERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0ZvbnRGYWNlUnVsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDFENkU4MUMxQTJDQTE2OTAwQTM0MzU5IC8qIFJlc291cmNlUmVzb2x2ZXJDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNDZDMUZGMEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0ltcG9ydFJ1
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDZDMjAxMEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NT
U01lZGlhUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0NkMyMDMwQzBEREM4RjAwMjBDRkMz
IC8qIEpTQ1NTUGFnZVJ1bGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjU3NTcsNiArMjU3NzEsNyBA
QAogCQkJCUJDRUE0ODYwMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxMEQ3NjgxN0Q4RUU3MTAwNUUyNjI2IC8qIFJlbmRlckJsb2NrRmxvdy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NjIwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJv
eC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFENkU4MUExQTJDQTE2OTAwQTM0MzU5IC8qIFJlc291
cmNlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTZEQjQzMEYzQTg4MEUwMDU3M0NC
MyAvKiBSZW5kZXJCb3hNb2RlbE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQjE3OUMx
NDMzNzlGNTAwNTJFQUU5IC8qIFJlbmRlckJveFJlZ2lvbkluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRUE0ODY2MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCdXR0b24uaCBpbiBIZWFkZXJz
ICovLApAQCAtMjk4MzMsNiArMjk4NDgsNyBAQAogCQkJCTkzNDNDQjgxMTJGMjVFNTEwMDMzQzVF
RSAvKiBUZXh0Q29kZWNVVEY4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MkI5N0M5MTMxMzg5
NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTdCQzg0QjMxMjM3MTE4MDAwMEM2MTYxIC8qIFRleHREb2N1bWVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk0MUQ2RTgxOTFBMkNBMTY5MDBBMzQzNTkgLyogUmVzb3VyY2VSZXNvbHZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDODQ4MzEyMzZGRDkzMDAwQzYxNjEgLyogVGV4
dERvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTQ2MEQwMDZDMUQw
MEVGNkYyNiAvKiBUZXh0RW5jb2RpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzEwNURBNjIw
RjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVn
aXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHAKaW5kZXggZjA5YjllZDM4N2Y0NjcxOTYzOWQwZGYzMmM5ZjdmNzU2Y2ZkNDA2
Zi4uMjY5YWIzZTBkODA0MDQ1Zjk4Y2ViMTg1ZDkxOWRhN2JiMjBmNWMzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBA
IC0zOSw3ICszOSwxMCBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJSZXNv
dXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1
ZGUgIlJlc291cmNlUmVzb2x2ZXJBc3luYy5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzb2x2ZXJD
bGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC02MSw4ICs2NCw3
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGVSZXNvdXJjZUhhbmRs
ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlCiAKIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKIHsKLSAgICBCbG9iRGF0YSog
YmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkp
LmdldEJsb2JEYXRhRnJvbVVSTChyZXF1ZXN0LnVybCgpKTsKLSAgICBCbG9iUmVzb3VyY2VIYW5k
bGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoYmxvYkRhdGEsIHJlcXVlc3QsIGVycm9yLCBy
ZXNwb25zZSwgZGF0YSk7CisgICAgQmxvYlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KHJlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiB9CiAKIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyQmxvYlJlc291cmNlSGFuZGxlQ29uc3RydWN0b3IoKQpAQCAtNzUsMTQgKzc3
LDEyNSBAQCBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9y
KCkKICAgICB9CiB9CiAKKy8vIEZJWE1FOiBSZW1vdmUgTWlncmF0aW5nQmxvYlJlc291cmNlSGFu
ZGxlIGFuZCBCbG9iUmVnaXN0cnlJbXBsOjpjcmVhdGVSZXNvdXJjZUhhbmRsZQorLy8gb25jZSBt
aWdyYXRpb24gZnJvbSBSZXNvdXJjZUhhbmRsZSB0byBSZXNvdXJjZVJlc29sdmVyIGlzIGRvbmUu
CitjbGFzcyBNaWdyYXRpbmdCbG9iUmVzb3VyY2VIYW5kbGU6IHB1YmxpYyBSZXNvdXJjZUhhbmRs
ZSwgcHVibGljIFJlc291cmNlUmVzb2x2ZXJDbGllbnQsIHB1YmxpYyBSZXNvdXJjZVJlc29sdmVy
QXN5bmNDbGllbnQgeworCitwdWJsaWM6CisgICAgTWlncmF0aW5nQmxvYlJlc291cmNlSGFuZGxl
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNs
aWVudCkKKyAgICAgICAgOiBSZXNvdXJjZUhhbmRsZSgwLCByZXF1ZXN0LCBjbGllbnQsIGZhbHNl
LCBmYWxzZSkKKyAgICB7IH0KKworICAgIH5NaWdyYXRpbmdCbG9iUmVzb3VyY2VIYW5kbGUoKSB7
IH0KKworICAgIHZvaWQgc2V0SGFuZGxlKFBhc3NSZWZQdHI8QmxvYlJlc291cmNlSGFuZGxlPiBi
bG9iSGFuZGxlKSB7IG1fYmxvYkhhbmRsZSA9IGJsb2JIYW5kbGU7IH0KKworICAgIC8vIFJlc291
cmNlUmVzb2x2ZXJDbGllbnQgQVBJCisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VS
ZXNvbHZlciosIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSkKKyAgICB7CisgICAgICAgIGlmIChjbGllbnQoKSkKKyAgICAg
ICAgICAgIGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3QodGhpcywgcmVxdWVzdCwgcmVkaXJlY3RS
ZXNwb25zZSk7CisgICAgfQorICAgIHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VSZXNvbHZlcios
IHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5
dGVzVG9CZVNlbnQpCisgICAgeworICAgICAgICBpZiAoY2xpZW50KCkpCisgICAgICAgICAgICBj
bGllbnQoKS0+ZGlkU2VuZERhdGEodGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQp
OworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzb2x2ZXIq
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKKyAgICB7CisgICAgICAgIGlmIChj
bGllbnQoKSkKKyAgICAgICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UodGhpcywg
cmVzcG9uc2UpOworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VSZXNv
bHZlciosIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKQorICAgIHsKKyAgICAgICAgaWYgKGNsaWVudCgpKQorICAgICAgICAgICAgY2xpZW50
KCktPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGRhdGEsIGxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgp
OworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZVJlc29sdmVyKiwg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQor
ICAgIHsKKyAgICAgICAgaWYgKGNsaWVudCgpKQorICAgICAgICAgICAgY2xpZW50KCktPmRpZFJl
Y2VpdmVCdWZmZXIodGhpcywgYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgfQorCisg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlUmVzb2x2ZXIqLCBkb3VibGUgZmluaXNo
VGltZSkKKyAgICB7CisgICAgICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgICAgIGNsaWVudCgp
LT5kaWRGaW5pc2hMb2FkaW5nKHRoaXMsIGZpbmlzaFRpbWUpOworICAgIH0KKworICAgIHZvaWQg
ZGlkRmFpbChSZXNvdXJjZVJlc29sdmVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCisg
ICAgeworICAgICAgICBpZiAoY2xpZW50KCkpCisgICAgICAgICAgICBjbGllbnQoKS0+ZGlkRmFp
bCh0aGlzLCBlcnJvcik7CisgICAgfQorCisgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlUmVz
b2x2ZXIqKQorICAgIHsKKyAgICAgICAgaWYgKGNsaWVudCgpKQorICAgICAgICAgICAgY2xpZW50
KCktPndhc0Jsb2NrZWQodGhpcyk7CisgICAgfQorCisgICAgdm9pZCBjYW5ub3RTaG93VVJMKFJl
c291cmNlUmVzb2x2ZXIqKQorICAgIHsKKyAgICAgICAgaWYgKGNsaWVudCgpKQorICAgICAgICAg
ICAgY2xpZW50KCktPmNhbm5vdFNob3dVUkwodGhpcyk7CisgICAgfQorCisgICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZVJlc29sdmVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQorICAg
IHsKKyAgICAgICAgaWYgKGNsaWVudCgpKQorICAgICAgICAgICAgY2xpZW50KCktPndpbGxTZW5k
UmVxdWVzdEFzeW5jKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIH0KKyAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlUmVzb2x2ZXIqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKKyAgICB7CisgICAgICAgIGlmIChjbGllbnQoKSkK
KyAgICAgICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2VBc3luYyh0aGlzLCByZXNw
b25zZSk7CisgICAgfQorCisgICAgLy8gUmVzb3VyY2VIYW5kbGUgQVBJCisgICAgdm9pZCBzZXRD
bGllbnQoUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCkKKyAgICB7CisgICAgICAgIGlmICgh
Y2xpZW50KQorICAgICAgICAgICAgbV9ibG9iSGFuZGxlLT5jbGVhckNsaWVudCgpOworICAgICAg
ICBSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50KGNsaWVudCk7CisgICAgfQorCisgICAgdm9pZCBj
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCisgICAgeworICAgICAgICBpZiAobV9ibG9iSGFu
ZGxlKQorICAgICAgICAgICAgbV9ibG9iSGFuZGxlLT5jb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZSgpOworICAgIH0KKworICAgIHZvaWQgY2FuY2VsKCkKKyAgICB7CisgICAgICAgIGlmIChtX2Js
b2JIYW5kbGUpCisgICAgICAgICAgICBtX2Jsb2JIYW5kbGUtPmNhbmNlbCgpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBSZWZQdHI8QmxvYlJlc291cmNlSGFuZGxlPiBtX2Jsb2JIYW5kbGU7Cit9
OworCiBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBCbG9iUmVnaXN0cnlJbXBsOjpjcmVhdGVS
ZXNvdXJjZUhhbmRsZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFu
ZGxlQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gaGFu
ZGxlID0gQmxvYlJlc291cmNlSGFuZGxlOjpjcmVhdGVBc3luYyhnZXRCbG9iRGF0YUZyb21VUkwo
cmVxdWVzdC51cmwoKSksIHJlcXVlc3QsIGNsaWVudCk7CisgICAgLy8gRklYTUU6IFNob3VsZCBw
cm9iYWJseSBjYWxsIGRpZEZhaWwoKSBpbnN0ZWFkIG9mIGJsb2NraW5nIHRoZSBsb2FkIHdpdGhv
dXQgZXhwbGFuYXRpb24uCisgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShyZXF1ZXN0Lmh0dHBN
ZXRob2QoKSwgIkdFVCIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxN
aWdyYXRpbmdCbG9iUmVzb3VyY2VIYW5kbGU+IG1pZ3JhdGluZ0hhbmRsZShhZG9wdFJlZihuZXcg
TWlncmF0aW5nQmxvYlJlc291cmNlSGFuZGxlKHJlcXVlc3QsIGNsaWVudCkpKTsKKworICAgIFJl
ZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IEJsb2JSZXNvdXJjZUhhbmRsZTo6Y3Jl
YXRlKHJlcXVlc3QsIG1pZ3JhdGluZ0hhbmRsZS5nZXQoKSwgY2xpZW50LT51c2VzQXN5bmNDYWxs
YmFja3MoKSA/IG1pZ3JhdGluZ0hhbmRsZS5nZXQoKSA6IG51bGxwdHIpOworCiAgICAgaWYgKCFo
YW5kbGUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAg
IG1pZ3JhdGluZ0hhbmRsZS0+c2V0SGFuZGxlKGhhbmRsZSk7CiAgICAgaGFuZGxlLT5zdGFydCgp
OwotICAgIHJldHVybiBoYW5kbGUucmVsZWFzZSgpOworCisgICAgcmV0dXJuIG1pZ3JhdGluZ0hh
bmRsZS5yZWxlYXNlKCk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6YXBwZW5kU3RvcmFn
ZUl0ZW1zKEJsb2JEYXRhKiBibG9iRGF0YSwgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYgaXRlbXMs
IGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggMDhk
NWY1MWE4ODUyZTMxZjA3ZDFkYWFmODkyNzZiMDRmMGIwNzBkNS4uYjNjZDNkMGNkODUwMjk2MGQy
YWUwOTE0ODczM2YwZmI1NGI5MmQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMzQsMTQgKzM0LDE2IEBA
CiAKICNpbmNsdWRlICJBc3luY0ZpbGVTdHJlYW0uaCIKICNpbmNsdWRlICJCbG9iRGF0YS5oIgor
I2luY2x1ZGUgIkJsb2JSZWdpc3RyeUltcGwuaCIKICNpbmNsdWRlICJGaWxlU3RyZWFtLmgiCiAj
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2lu
Y2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VFcnJvci5oIgotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNvbHZlckFzeW5jLmgiCisj
aW5jbHVkZSAiUmVzb3VyY2VSZXNvbHZlckNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgpAQCAtNzksMTQgKzgxLDE0IEBAIGVudW0gewogCiBuYW1lc3BhY2UgewogCi1jbGFz
cyBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlciA6IHB1YmxpYyBSZXNvdXJjZUhhbmRsZUNs
aWVudCB7CitjbGFzcyBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlciA6IHB1YmxpYyBSZXNv
dXJjZVJlc29sdmVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBCbG9iUmVzb3VyY2VTeW5jaHJvbm91
c0xvYWRlcihSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYp
OwogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCAv
KmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIC8qZmluaXNoVGltZSovKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlUmVzb2x2ZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlUmVzb2x2ZXIqLCBjb25zdCBj
aGFyKiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlUmVzb2x2ZXIqLCBkb3VibGUg
LypmaW5pc2hUaW1lKi8pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291
cmNlUmVzb2x2ZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CiAgICAgUmVzb3VyY2VFcnJvciYgbV9lcnJvcjsKQEAgLTEwMSw3ICsxMDMsNyBAQCBCbG9iUmVz
b3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6QmxvYlJlc291cmNlU3luY2hyb25vdXNMb2FkZXIoUmVz
b3VyY2VFcnJvciYgZXJybwogewogfQogCi12b2lkIEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNvbHZlciogcmVzb2x2ZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIC8vIFdlIGNhbm5vdCBoYW5kbGUg
dGhlIHNpemUgdGhhdCBpcyBtb3JlIHRoYW4gbWF4aW11bSBpbnRlZ2VyLgogICAgIGlmIChyZXNw
b25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA+IElOVF9NQVgpIHsKQEAgLTExMywxOCArMTE1
LDE4IEBAIHZvaWQgQmxvYlJlc291cmNlU3luY2hyb25vdXNMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjCiAKICAgICAvLyBSZWFkIGFsbCB0aGUgZGF0
YS4KICAgICBtX2RhdGEucmVzaXplKHN0YXRpY19jYXN0PHNpemVfdD4ocmVzcG9uc2UuZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKCkpKTsKLSAgICBzdGF0aWNfY2FzdDxCbG9iUmVzb3VyY2VIYW5kbGUq
PihoYW5kbGUpLT5yZWFkU3luYyhtX2RhdGEuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG1fZGF0
YS5zaXplKCkpKTsKKyAgICBzdGF0aWNfY2FzdDxCbG9iUmVzb3VyY2VIYW5kbGUqPihyZXNvbHZl
ciktPnJlYWRTeW5jKG1fZGF0YS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4obV9kYXRhLnNpemUo
KSkpOwogfQogCi12b2lkIEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50KQordm9pZCBC
bG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VSZXNv
bHZlciosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50KQogewogfQogCi12b2lkIEJsb2JSZXNv
dXJjZVN5bmNocm9ub3VzTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwg
ZG91YmxlKQordm9pZCBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyhSZXNvdXJjZVJlc29sdmVyKiwgZG91YmxlKQogewogfQogCi12b2lkIEJsb2JSZXNvdXJj
ZVN5bmNocm9ub3VzTG9hZGVyOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCit2b2lkIEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyOjpkaWRG
YWlsKFJlc291cmNlUmVzb2x2ZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAg
ICBtX2Vycm9yID0gZXJyb3I7CiB9CkBAIC0xMzQsMzAgKzEzNiw0NiBAQCB2b2lkIEJsb2JSZXNv
dXJjZVN5bmNocm9ub3VzTG9hZGVyOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVz
b3VyY2VFcnJvcgogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gQmxvYlJlc291cmNlSGFuZGxl
CiAKLVBhc3NSZWZQdHI8QmxvYlJlc291cmNlSGFuZGxlPiBCbG9iUmVzb3VyY2VIYW5kbGU6OmNy
ZWF0ZUFzeW5jKEJsb2JEYXRhKiBibG9iRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KQorUGFzc1JlZlB0cjxCbG9iUmVzb3Vy
Y2VIYW5kbGU+IEJsb2JSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUmVzb3VyY2VSZXNvbHZlckNsaWVudCogY2xpZW50LCBSZXNvdXJjZVJlc29s
dmVyQXN5bmNDbGllbnQqIGFzeW5jQ2xpZW50KQogeworICAgIEJsb2JEYXRhKiBibG9iRGF0YSA9
IG51bGxwdHI7CisKKyAgICBpZiAoYmxvYlJlZ2lzdHJ5KCkuaXNCbG9iUmVnaXN0cnlJbXBsKCkp
CisgICAgICAgIGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JS
ZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwocmVxdWVzdC51cmwoKSk7CisKICAgICAvLyBG
SVhNRTogU2hvdWxkIHByb2JhYmx5IGNhbGwgZGlkRmFpbCgpIGluc3RlYWQgb2YgYmxvY2tpbmcg
dGhlIGxvYWQgd2l0aG91dCBleHBsYW5hdGlvbi4KICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNl
KHJlcXVlc3QuaHR0cE1ldGhvZCgpLCAiR0VUIikpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+IGhhbmRs
ZShhZG9wdFJlZihuZXcgQmxvYlJlc291cmNlSGFuZGxlKGJsb2JEYXRhLCByZXF1ZXN0LCBjbGll
bnQsIGFzeW5jQ2xpZW50LCB0cnVlKSkpOworCisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCbG9iUmVzb3VyY2VIYW5k
bGUoYmxvYkRhdGEsIHJlcXVlc3QsIGNsaWVudCwgdHJ1ZSkpOworICAgIHJldHVybiBoYW5kbGUu
cmVsZWFzZSgpOwogfQogCi12b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBW
ZWN0b3I8Y2hhcj4mIGRhdGEpCit2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJy
b3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRh
KQogeworICAgIGlmICghYmxvYlJlZ2lzdHJ5KCkuaXNCbG9iUmVnaXN0cnlJbXBsKCkpIHsKKyAg
ICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiwgMCwg
cmVzcG9uc2UudXJsKCksICJUcmllZCB0byByZXNvbHZlIGEgYmxvYiB3aXRob3V0IGEgdXNhYmxl
IHJlZ2lzdHJ5Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBCbG9iRGF0YSogYmxv
YkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdl
dEJsb2JEYXRhRnJvbVVSTChyZXF1ZXN0LnVybCgpKTsKKwogICAgIGlmICghZXF1YWxJZ25vcmlu
Z0Nhc2UocmVxdWVzdC5odHRwTWV0aG9kKCksICJHRVQiKSkgewogICAgICAgICBlcnJvciA9IFJl
c291cmNlRXJyb3Iod2ViS2l0QmxvYlJlc291cmNlRG9tYWluLCBtZXRob2ROb3RBbGxvd2VkLCBy
ZXNwb25zZS51cmwoKSwgIlJlcXVlc3QgbWV0aG9kIG11c3QgYmUgR0VUIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlciBsb2FkZXIo
ZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKLSAgICBSZWZQdHI8QmxvYlJlc291cmNlSGFuZGxlPiBo
YW5kbGUgPSBhZG9wdFJlZihuZXcgQmxvYlJlc291cmNlSGFuZGxlKGJsb2JEYXRhLCByZXF1ZXN0
LCAmbG9hZGVyLCBmYWxzZSkpOworICAgIFJlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+IGhhbmRs
ZSA9IGFkb3B0UmVmKG5ldyBCbG9iUmVzb3VyY2VIYW5kbGUoYmxvYkRhdGEsIHJlcXVlc3QsICZs
b2FkZXIsIG51bGxwdHIsIGZhbHNlKSk7CiAgICAgaGFuZGxlLT5zdGFydCgpOwogfQogCi1CbG9i
UmVzb3VyY2VIYW5kbGU6OkJsb2JSZXNvdXJjZUhhbmRsZShCbG9iRGF0YSogYmxvYkRhdGEsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVu
dCwgYm9vbCBhc3luYykKLSAgICA6IFJlc291cmNlSGFuZGxlKDAsIHJlcXVlc3QsIGNsaWVudCwg
ZmFsc2UsIGZhbHNlKQotICAgICwgbV9ibG9iRGF0YShibG9iRGF0YSkKK0Jsb2JSZXNvdXJjZUhh
bmRsZTo6QmxvYlJlc291cmNlSGFuZGxlKEJsb2JEYXRhKiBibG9iRGF0YSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZVJlc29sdmVyQ2xpZW50KiBjbGllbnQsIFJlc291
cmNlUmVzb2x2ZXJBc3luY0NsaWVudCogYXN5bmNDbGllbnQsIGJvb2wgYXN5bmMpCisgICAgOiBt
X2Jsb2JEYXRhKGJsb2JEYXRhKQogICAgICwgbV9hc3luYyhhc3luYykKICAgICAsIG1fZXJyb3JD
b2RlKDApCiAgICAgLCBtX2Fib3J0ZWQoZmFsc2UpCkBAIC0xNjksNiArMTg3LDkgQEAgQmxvYlJl
c291cmNlSGFuZGxlOjpCbG9iUmVzb3VyY2VIYW5kbGUoQmxvYkRhdGEqIGJsb2JEYXRhLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QKICAgICAsIG1fc2l6ZUl0ZW1Db3VudCgwKQogICAgICwgbV9yZWFk
SXRlbUNvdW50KDApCiAgICAgLCBtX2ZpbGVPcGVuZWQoZmFsc2UpCisgICAgLCBtX2NsaWVudChj
bGllbnQpCisgICAgLCBtX2FzeW5jQ2xpZW50KGFzeW5jQ2xpZW50KQorICAgICwgbV9yZXF1ZXN0
KHJlcXVlc3QpCiB7CiAgICAgaWYgKG1fYXN5bmMpCiAgICAgICAgIG1fYXN5bmNTdHJlYW0gPSBz
dGQ6Om1ha2VfdW5pcXVlPEFzeW5jRmlsZVN0cmVhbT4oKnRoaXMpOwpAQCAtMTg2LDcgKzIwNyw3
IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogCiAgICAgbV9hYm9ydGVkID0g
dHJ1ZTsKIAotICAgIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKTsKKyAgICBSZXNvdXJjZVJlc29s
dmVyOjpjYW5jZWwoKTsKIH0KIAogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlKCkKQEAgLTU5NCw4ICs2MTUsOCBAQCB2b2lkIEJsb2JSZXNvdXJjZUhh
bmRsZTo6bm90aWZ5UmVzcG9uc2VPblN1Y2Nlc3MoKQogICAgIC8vIEJsb2JSZXNvdXJjZUhhbmRs
ZSBjYW5ub3QgYmUgdXNlZCB3aXRoIGRvd25sb2FkaW5nLCBhbmQgZG9lc24ndCBldmVuIHdhaXQg
Zm9yIGNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlLgogICAgIC8vIEl0J3MgY3VycmVudGx5IGNs
aWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIGtub3cgdGhhdCBkaWRSZWNlaXZlUmVzcG9uc2VBc3lu
YyBjYW5ub3QgYmUgdXNlZCB0byBjb252ZXJ0IGEKICAgICAvLyBsb2FkIGludG8gYSBkb3dubG9h
ZCBvciBibG9icy4KLSAgICBpZiAoY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKQotICAg
ICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmModGhpcywgcmVzcG9uc2UpOwor
ICAgIGlmIChtX2FzeW5jQ2xpZW50KQorICAgICAgICBtX2FzeW5jQ2xpZW50LT5kaWRSZWNlaXZl
UmVzcG9uc2VBc3luYyh0aGlzLCByZXNwb25zZSk7CiAgICAgZWxzZQogICAgICAgICBjbGllbnQo
KS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIHJlc3BvbnNlKTsKIH0KQEAgLTYyNiw4ICs2NDcs
OCBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9yKCkKIAog
ICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCB3YWl0IGZvciBjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSB3aGVuIHVzaW5nIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jLgogICAgIC8vIFRoaXMgaXMg
bm90IGZvcm1hbGx5IGNvcnJlY3QsIGJ1dCB0aGUgY2xpZW50IGhhcyB0byBiZSBhIG5vLW9wIGFu
eXdheSwgYmVjYXVzZSBibG9icyBjYW4ndCBiZSBkb3dubG9hZGVkLgotICAgIGlmIChjbGllbnQo
KS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpCi0gICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlUmVz
cG9uc2VBc3luYyh0aGlzLCByZXNwb25zZSk7CisgICAgaWYgKG1fYXN5bmNDbGllbnQpCisgICAg
ICAgIG1fYXN5bmNDbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKHRoaXMsIHJlc3BvbnNl
KTsKICAgICBlbHNlCiAgICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UodGhpcywg
cmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmgKaW5kZXggNjc2ZGJmZjk4OTc2YmIwODdkNWJiYzVkMGNjYWI3
ZjQxM2I0NDFmZC4uYzU5NzI2ZGJjZTk5MTk5YjYzNTM0NDQyZGJkZGMzMDg0MzQxYTAzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5oCkBAIC0zMiw3ICszMiw4IEBACiAjZGVmaW5lIEJsb2JSZXNvdXJjZUhhbmRsZV9oCiAK
ICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xpZW50LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUu
aCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlc29s
dmVyQXN5bmMuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ2LDE5ICs0Nywz
MiBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZUNsaWVudDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IHN0cnVjdCBCbG9iRGF0YUl0ZW07CiAKLWNsYXNzIEJsb2JSZXNvdXJjZUhhbmRsZSBmaW5hbCA6
IHB1YmxpYyBGaWxlU3RyZWFtQ2xpZW50LCBwdWJsaWMgUmVzb3VyY2VIYW5kbGUgIHsKK2NsYXNz
IEJsb2JSZXNvdXJjZUhhbmRsZSBmaW5hbCA6IHB1YmxpYyBGaWxlU3RyZWFtQ2xpZW50LCBwdWJs
aWMgUmVzb3VyY2VSZXNvbHZlckFzeW5jICB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8QmxvYlJlc291cmNlSGFuZGxlPiBjcmVhdGVBc3luYyhCbG9iRGF0YSosIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIFJlc291cmNlSGFuZGxlQ2xpZW50Kik7Ci0KLSAgICBzdGF0aWMgdm9pZCBs
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEJsb2JEYXRhKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gY3JlYXRlKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlUmVzb2x2ZXJDbGllbnQqLCBSZXNvdXJjZVJlc29s
dmVyQXN5bmNDbGllbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKTsKIAogICAgIHZvaWQgc3RhcnQoKTsKICAgICBpbnQg
cmVhZFN5bmMoY2hhciosIGludCk7CiAKICAgICBib29sIGFib3J0ZWQoKSBjb25zdCB7IHJldHVy
biBtX2Fib3J0ZWQ7IH0KIAorICAgIC8vIFJlc291cmNlUmVzb2x2ZXIgbWV0aG9kcy4KKyAgICB2
b2lkIGNhbmNlbCgpOworCisgICAgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQgPSBudWxs
cHRyOyBtX2FzeW5jQ2xpZW50ID0gbnVsbHB0cjsgfQorICAgIFJlc291cmNlUmVzb2x2ZXJDbGll
bnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgYm9vbCBpc0NsaWVu
dChSZXNvdXJjZVJlc29sdmVyQ2xpZW50KiBjbGllbnQpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50
ID09IGNsaWVudDsgfQorICAgIFJlc291cmNlUmVxdWVzdCYgZmlyc3RSZXF1ZXN0KCkgeyByZXR1
cm4gbV9yZXF1ZXN0OyB9CisKKyAgICBSZXNvdXJjZVJlc29sdmVyQXN5bmMqIGFzeW5jKCkgeyBy
ZXR1cm4gdGhpczsgfQorICAgIHZvaWQgc2V0QXN5bmNDbGllbnQoUmVzb3VyY2VSZXNvbHZlckFz
eW5jQ2xpZW50KiBjbGllbnQpIHsgbV9hc3luY0NsaWVudCA9IGNsaWVudDsgfQorCisgICAgLy8g
UmVzb3VyY2VSZXNvbHZlckFzeW5jIG1ldGhvZC4KKyAgICB2aXJ0dWFsIHZvaWQgY29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2UoKTsKKwogcHJpdmF0ZToKLSAgICBCbG9iUmVzb3VyY2VIYW5kbGUo
QmxvYkRhdGEqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCos
IGJvb2wgYXN5bmMpOworICAgIEJsb2JSZXNvdXJjZUhhbmRsZShCbG9iRGF0YSosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIFJlc291cmNlUmVzb2x2ZXJDbGllbnQqLCBSZXNvdXJjZVJlc29sdmVy
QXN5bmNDbGllbnQqLCBib29sKTsKICAgICB2aXJ0dWFsIH5CbG9iUmVzb3VyY2VIYW5kbGUoKTsK
IAogICAgIC8vIEZpbGVTdHJlYW1DbGllbnQgbWV0aG9kcy4KQEAgLTY2LDEwICs4MCw2IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW4oYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlYWQoaW50KSBvdmVycmlkZTsKIAotICAgIC8vIFJlc291cmNlSGFuZGxl
IG1ldGhvZHMuCi0gICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpIG92ZXJyaWRlOwotCiAgICAgdm9p
ZCBkb1N0YXJ0KCk7CiAgICAgdm9pZCBnZXRTaXplRm9yTmV4dCgpOwogICAgIHZvaWQgc2Vlaygp
OwpAQCAtMTA2LDYgKzExNiwxMCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc2l6ZUl0ZW1D
b3VudDsKICAgICB1bnNpZ25lZCBtX3JlYWRJdGVtQ291bnQ7CiAgICAgYm9vbCBtX2ZpbGVPcGVu
ZWQ7CisKKyAgICBSZXNvdXJjZVJlc29sdmVyQ2xpZW50ICptX2NsaWVudDsKKyAgICBSZXNvdXJj
ZVJlc29sdmVyQXN5bmNDbGllbnQgKm1fYXN5bmNDbGllbnQ7CisgICAgUmVzb3VyY2VSZXF1ZXN0
IG1fcmVxdWVzdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRl
eCA3ZTVlMjU3MGU5NGU3MWRjYzVjY2Y0MTkyMmFjN2E1YmUxZmIwMTc0Li40MjBkNmQ0MTFhYzNl
ODZhMzZiYTI0MDcwMmE4YTJmMjYxZTNiODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjaWZuZGVmIFJlc291cmNlSGFuZGxlQ2xpZW50X2gKICNkZWZpbmUgUmVzb3VyY2VIYW5k
bGVDbGllbnRfaAogCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNvbHZlci5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQpAQCAtNjMsNiArNjQsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0b3JhZ2VOb3RBbGxvd2VkCiAgICAgfTsKICAg
ICAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG1ldGhvZHMgcmVkdW5kYW50IHdpdGggUmVzb3VyY2VS
ZXNvbHZlckNsaWVudCBhbmQgUmVzb3VyY2VSZXNvbHZlckFzeW5jQ2xpZW50IGNhbGxiYWNrcy4K
KyAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudCBzaG91bGQgb25seSBjb250YWluIGNhbGxiYWNr
cyBzcGVjaWZpY2FsbHkgbmVlZGVkIHRvIFJlc291cmNlSGFuZGxlLgogICAgIGNsYXNzIFJlc291
cmNlSGFuZGxlQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlSGFuZGxlQ2xpZW50KCk7CkBAIC04Niw3ICs4OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICAvLyBDbGllbnQgd2lsbCBwYXNzIGFuIHVwZGF0ZWQgcmVxdWVzdCB1c2lu
ZyBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoKSB3aGVuIHJlYWR5Lgog
ICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKLQogICAgICAgICAvLyBDbGllbnQgd2lsbCBjYWxs
IFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpIHdoZW4gcmVhZHku
CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc29sdmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNvbHZlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWNmNDA2MjA0MTI4NTQwMGI0YmUzNzBmOTljMjAxZGVhM2FiYmEzYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNvbHZlci5jcHAKQEAgLTAsMCArMSwyODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIENhbm9u
IEluYy4gMjAxNAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVp
cmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBD
QU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNvbHZlci5oIgorCisjaW5jbHVkZSAiQmxvYlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgorI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzb2x2ZXJDbGll
bnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBGSVhNRTogTWVyZ2UgdGhpcyBjbGFz
cyB3aXRoIFJlc291cmNlSGFuZGxlIG9uY2UgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZSBpcyBubyBs
b25nZXIgY2FsbGVkIGJ5IG90aGVyIGNsYXNzZXMgdGhhbiBSZXNvdXJjZVJlc29sdmVyLgorY2xh
c3MgUmVzb3VyY2VIYW5kbGVSZXNvbHZlcjogcHVibGljIFJlc291cmNlUmVzb2x2ZXJBc3luYywg
cHJpdmF0ZSBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CitwdWJsaWM6CisKKyAgICAvLyBSZXNvdXJj
ZUhhbmRsZUNsaWVudCBBUEkgZm9yd2FyZCB0byBSZXNvdXJjZVJlc29sdmVyIGNsaWVudCBhbmQg
YXN5bmMgY2xpZW50LgorICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9j
bGllbnQtPndpbGxTZW5kUmVxdWVzdCh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsK
KyAgICB9CisgICAgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
CisgICAgeworICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+ZGlk
U2VuZERhdGEodGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOworICAgIH0KKwor
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCisgICAgeworICAgICAgICBpZiAobV9jbGllbnQpCisgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIHJlc3BvbnNlKTsKKyAg
ICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgewor
ICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURh
dGEodGhpcywgZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgfQorICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICB7CisgICAgICAgIGlmICht
X2NsaWVudCkKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKHRoaXMsIGJ1
ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIH0KKworICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5pc2hUaW1lKQorICAgIHsKKyAgICAgICAg
aWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPmRpZEZpbmlzaExvYWRpbmcodGhp
cywgZmluaXNoVGltZSk7CisgICAgfQorCisgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCisgICAgeworICAgICAgICBpZiAobV9jbGll
bnQpCisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbCh0aGlzLCBlcnJvcik7CisgICAgfQor
ICAgIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopCisgICAgeworICAgICAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+d2FzQmxvY2tlZCh0aGlzKTsKKyAgICB9
CisKKyAgICB2b2lkIGNhbm5vdFNob3dVUkwoUmVzb3VyY2VIYW5kbGUqKQorICAgIHsKKyAgICAg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPmNhbm5vdFNob3dVUkwodGhp
cyk7CisgICAgfQorCisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSkKKyAgICB7CisgICAgICAgIGlmIChtX2FzeW5jQ2xpZW50KQor
ICAgICAgICAgICAgbV9hc3luY0NsaWVudC0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywgcmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKKyAgICB7CisgICAgICAgIGlmIChtX2FzeW5jQ2xpZW50KQorICAgICAgICAgICAgbV9hc3lu
Y0NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmModGhpcywgcmVzcG9uc2UpOworICAgIH0K
KworICAgIGJvb2wgdXNlc0FzeW5jQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9hc3luY0NsaWVudDsg
fQorCisgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSop
IHsgcmV0dXJuIG1fY2xpZW50LT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlzKTsgfQor
CisgICAgLy8gUmVzb3VyY2VIYW5kbGVDbGllbnQgQVBJIGZvcndhcmQgdG8gaGFuZGxlIGNsaWVu
dC4KKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorICAgICAgICB2b2lk
IGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHNwYWNlKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAobV9oYW5kbGVDbGllbnQpCisgICAgICAgICAgICAgICAgbV9oYW5kbGVDbGll
bnQtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhoYW5kbGUsIHNw
YWNlKTsKKyAgICAgICAgfQorI2VuZGlmCisjaWYgVVNFKENGTkVUV09SSykKKyAgICAgICAgdm9p
ZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYgcmVmKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9oYW5kbGVD
bGllbnQpCisgICAgICAgICAgICAgICAgbV9oYW5kbGVDbGllbnQtPndpbGxDYWNoZVJlc3BvbnNl
QXN5bmMoaGFuZGxlLCByZWYpOworICAgICAgICB9CisjZWxpZiBQTEFURk9STShDT0NPQSkKKyAg
ICAgICAgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAobV9oYW5kbGVDbGllbnQpCisgICAgICAgICAgICAgICAgbV9oYW5kbGVDbGllbnQtPndpbGxD
YWNoZVJlc3BvbnNlQXN5bmMoaGFuZGxlLCByZXNwb25zZSk7CisgICAgICAgIH0KKyNlbmRpZgor
CisjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorICAgICAgICBib29sIHN1
cHBvcnRzRGF0YUFycmF5KCkgIHsgcmV0dXJuIG1faGFuZGxlQ2xpZW50ID8gbV9oYW5kbGVDbGll
bnQtPnN1cHBvcnRzRGF0YUFycmF5KCkgOiBmYWxzZTsgfQorICAgICAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhQXJyYXkoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgQ0ZBcnJheVJlZiByZWYpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChtX2hhbmRsZUNsaWVudCkKKyAgICAgICAgICAgICAgICBt
X2hhbmRsZUNsaWVudC0+ZGlkUmVjZWl2ZURhdGFBcnJheShoYW5kbGUsIHJlZik7CisgICAgICAg
IH0KKyNlbmRpZgorCisjaWYgVVNFKFNPVVApCisgICAgICAgIGNoYXIqIGdldE9yQ3JlYXRlUmVh
ZEJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkTGVuZ3RoLCBzaXplX3QmIGFjdHVhbExlbmd0aCkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1faGFuZGxlQ2xpZW50ID8gbV9oYW5kbGVDbGll
bnQtPmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihyZXF1ZXN0ZWRMZW5ndGgsIGFjdHVhbExlbmd0aCkg
OiBudWxscHRyOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAobV9oYW5kbGVDbGllbnQpCisgICAgICAgICAgICAgICAgbV9oYW5kbGVDbGllbnQtPmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShoYW5kbGUsIGNoYWxsZW5nZSk7CisgICAgICAg
IH0KKyAgICAgICAgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdl
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9oYW5kbGVDbGllbnQpCisgICAgICAgICAg
ICAgICAgbV9oYW5kbGVDbGllbnQtPmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGhh
bmRsZSwgY2hhbGxlbmdlKTsKKyAgICAgICAgfQorI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FV
VEhfQ0FMTEJBQ0spCisgICAgICAgIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHNw
YWNlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9oYW5kbGVDbGllbnQgPyBtX2hh
bmRsZUNsaWVudC0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShoYW5kbGUs
IHNwYWNlKSA6IGZhbHNlOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgdm9pZCByZWNlaXZl
ZENhbmNlbGxhdGlvbihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgY2hhbGxlbmdlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9oYW5k
bGVDbGllbnQpCisgICAgICAgICAgICAgICAgbV9oYW5kbGVDbGllbnQtPnJlY2VpdmVkQ2FuY2Vs
bGF0aW9uKGhhbmRsZSwgY2hhbGxlbmdlKTsKKyAgICAgICAgfQorCisjaWYgUExBVEZPUk0oSU9T
KSB8fCBVU0UoQ0ZORVRXT1JLKQorICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBj
b25uZWN0aW9uUHJvcGVydGllcyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlKSB7IHJldHVybiBtX2hh
bmRsZUNsaWVudCA/IG1faGFuZGxlQ2xpZW50LT5jb25uZWN0aW9uUHJvcGVydGllcyhoYW5kbGUp
IDogbnVsbHB0cjsgfQorI2VuZGlmCisKKyNpZiBVU0UoQ0ZORVRXT1JLKQorICAgICAgICBDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBtX2hhbmRsZUNsaWVudCA/IG1faGFuZGxlQ2xpZW50LT53aWxsQ2FjaGVSZXNw
b25zZShoYW5kbGUsIHJlc3BvbnNlKSA6IG51bGxwdHI7CisgICAgICAgIH0KKyNpZiBQTEFURk9S
TShXSU4pCisgICAgICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHJlZikKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIG1faGFuZGxlQ2xpZW50ID8gbV9oYW5kbGVDbGllbnQtPnNob3VsZENhY2hlUmVz
cG9uc2UoaGFuZGxlLCByZWYpIDogdHJ1ZTsKKyAgICAgICAgfQorI2VuZGlmIC8vIFBMQVRGT1JN
KFdJTikKKworI2VsaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIE5TQ2FjaGVkVVJMUmVzcG9u
c2UqIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJM
UmVzcG9uc2UqIHJlc3BvbnNlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9oYW5k
bGVDbGllbnQgPyBtX2hhbmRsZUNsaWVudC0+d2lsbENhY2hlUmVzcG9uc2UoaGFuZGxlLCByZXNw
b25zZSkgOiBudWxscHRyOworICAgICAgICB9CisjZW5kaWYKKworI2lmIFVTRShRVUlDS19MT09L
KQorICAgICAgICB2b2lkIGRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZShRdWlja0xvb2tIYW5kbGUm
IGhhbmRsZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1faGFuZGxlQ2xpZW50KQorICAg
ICAgICAgICAgICAgIG1faGFuZGxlQ2xpZW50LT5kaWRDcmVhdGVRdWlja0xvb2tIYW5kbGUoaGFu
ZGxlKTsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAvLyBSZXNvdXJjZVJlc29sdmVyIEFQSQor
ICAgIHZvaWQgY2FuY2VsKCkKKyAgICB7CisgICAgICAgIGlmIChtX2hhbmRsZSkgeworICAgICAg
ICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOworICAgICAgICAgICAgbV9oYW5kbGUgPSBudWxscHRy
OworICAgICAgICB9CisgICAgfQorICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVy
cykKKyAgICB7CisgICAgICAgIGlmIChtX2hhbmRsZSkKKyAgICAgICAgICAgIG1faGFuZGxlLT5z
ZXREZWZlcnNMb2FkaW5nKGRlZmVycyk7CisgICAgfQorCisgICAgUmVzb3VyY2VSZXNvbHZlckFz
eW5jKiBhc3luYygpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxl
KCkgeyByZXR1cm4gbV9oYW5kbGUuZ2V0KCk7IH0KKworICAgIC8vIFJlc291cmNlUmVzb2x2ZXJB
c3luYyBBUEkKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKKyAgICB7CisgICAgICAgIGlmIChtX2hhbmRsZSkKKyAgICAgICAg
ICAgIG1faGFuZGxlLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChyZXF1ZXN0KTsKKyAgICB9Cisg
ICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCisgICAgeworICAgICAgICBpZiAo
bV9oYW5kbGUpCisgICAgICAgICAgICBtX2hhbmRsZS0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UoKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQ2xpZW50KCkKKyAgICB7CisgICAgICAgIG1f
Y2xpZW50ID0gbnVsbHB0cjsKKyAgICAgICAgbV9hc3luY0NsaWVudCA9IG51bGxwdHI7CisgICAg
ICAgIG1faGFuZGxlQ2xpZW50ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKG1faGFuZGxlKQorICAg
ICAgICAgICAgbV9oYW5kbGUtPnNldENsaWVudChudWxscHRyKTsKKyAgICB9CisKKyAgICBib29s
IGlzQ2xpZW50KFJlc291cmNlUmVzb2x2ZXJDbGllbnQqIGNsaWVudCkgY29uc3QgeyByZXR1cm4g
Y2xpZW50ID09IG1fY2xpZW50OyB9CisgICAgUmVzb3VyY2VSZXF1ZXN0JiBmaXJzdFJlcXVlc3Qo
KSB7IHJldHVybiBtX2ZpcnN0UmVxdWVzdDsgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVz
b3VyY2VSZXNvbHZlcj4gY3JlYXRlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlUmVzb2x2ZXJDbGllbnQqIGNsaWVudCwg
UmVzb3VyY2VSZXNvbHZlckFzeW5jQ2xpZW50KiBhc3luY0NsaWVudCwgUmVzb3VyY2VIYW5kbGVD
bGllbnQqIGhhbmRsZUNsaWVudCwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29sIHNob3VsZENvbnRl
bnRTbmlmZikKKyAgICB7CisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZVJlc29sdmVyPiBy
ZXNvbHZlcihhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGVSZXNvbHZlcihjb250ZXh0LCByZXF1
ZXN0LCBjbGllbnQsIGFzeW5jQ2xpZW50LCBoYW5kbGVDbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNo
b3VsZENvbnRlbnRTbmlmZikpKTsKKyAgICAgICAgaWYgKCFyZXNvbHZlcikKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gcmVzb2x2ZXIucmVsZWFzZSgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBSZXNvdXJjZUhhbmRsZVJlc29sdmVyKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlUmVz
b2x2ZXJDbGllbnQqIGNsaWVudCwgUmVzb3VyY2VSZXNvbHZlckFzeW5jQ2xpZW50KiBhc3luY0Ns
aWVudCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGhhbmRsZUNsaWVudCwgYm9vbCBkZWZlcnNMb2Fk
aW5nLCBib29sIHNob3VsZENvbnRlbnRTbmlmZikKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQp
CisgICAgICAgICwgbV9hc3luY0NsaWVudChhc3luY0NsaWVudCkKKyAgICAgICAgLCBtX2hhbmRs
ZUNsaWVudChoYW5kbGVDbGllbnQpCisgICAgICAgICwgbV9maXJzdFJlcXVlc3QocmVxdWVzdCkK
KyAgICB7CisgICAgICAgIG1faGFuZGxlID0gUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZShjb250ZXh0
LCByZXF1ZXN0LCB0aGlzLCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYpOworICAg
IH0KKworICAgIFJlc291cmNlUmVzb2x2ZXJDbGllbnQqIG1fY2xpZW50OworICAgIFJlc291cmNl
UmVzb2x2ZXJBc3luY0NsaWVudCogbV9hc3luY0NsaWVudDsKKyAgICBSZXNvdXJjZUhhbmRsZUNs
aWVudCogbV9oYW5kbGVDbGllbnQ7CisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBtX2hhbmRs
ZTsKKyAgICBSZXNvdXJjZVJlcXVlc3QgbV9maXJzdFJlcXVlc3Q7CisKK307CisKK1Bhc3NSZWZQ
dHI8UmVzb3VyY2VSZXNvbHZlcj4gUmVzb3VyY2VSZXNvbHZlcjo6Y3JlYXRlKE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNl
UmVzb2x2ZXJDbGllbnQqIGNsaWVudCwgUmVzb3VyY2VSZXNvbHZlckFzeW5jQ2xpZW50KiBhc3lu
Y0NsaWVudCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGhhbmRsZUNsaWVudCwgYm9vbCBkZWZlcnNM
b2FkaW5nLCBib29sIHNob3VsZENvbnRlbnRTbmlmZikKK3sKKyAgICBpZiAocmVxdWVzdC51cmwo
KS5wcm90b2NvbElzKCJibG9iIikpIHsKKyAgICAgICAgUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRs
ZT4gcmVzb2x2ZXIgPSBCbG9iUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZShyZXF1ZXN0LCBjbGllbnQs
IGFzeW5jQ2xpZW50KTsKKyAgICAgICAgcmVzb2x2ZXItPnN0YXJ0KCk7CisgICAgICAgIHJldHVy
biByZXNvbHZlcjsKKyAgICB9CisKKyAgICByZXR1cm4gUmVzb3VyY2VIYW5kbGVSZXNvbHZlcjo6
Y3JlYXRlKGNvbnRleHQsIHJlcXVlc3QsIGNsaWVudCwgYXN5bmNDbGllbnQsIGhhbmRsZUNsaWVu
dCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVudFNuaWZmKTsKK30KKwordm9pZCBSZXNvdXJj
ZVJlc29sdmVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxz
IHN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKK3sKKyAgICBpZiAocmVxdWVzdC51cmwo
KS5wcm90b2NvbElzKCJibG9iIikpIHsKKyAgICAgICAgQmxvYlJlc291cmNlSGFuZGxlOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoY29udGV4dCwgcmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlhbHMsIGVycm9yLCBy
ZXNwb25zZSwgZGF0YSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc29sdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmVlYmU1MjFlYWZhNDJjMWY3
MWIzNjIwY2IwZDI0N2U0MTZhN2FlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNvbHZlci5oCkBAIC0wLDAgKzEsNzQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIENhbm9uIEluYy4gMjAxNAorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBSZXNvdXJjZVJl
c29sdmVyX2gKKyNkZWZpbmUgUmVzb3VyY2VSZXNvbHZlcl9oCisKKyNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZVR5cGVzLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgUmVzb3VyY2VFcnJv
cjsKK2NsYXNzIFJlc291cmNlSGFuZGxlOworY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7Citj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgUmVz
b3VyY2VSZXNvbHZlckFzeW5jOworY2xhc3MgUmVzb3VyY2VSZXNvbHZlckFzeW5jQ2xpZW50Owor
Y2xhc3MgUmVzb3VyY2VSZXNvbHZlckNsaWVudDsKKworY2xhc3MgUmVzb3VyY2VSZXNvbHZlciA6
IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlUmVzb2x2ZXI+IHsKKworcHVibGljOgorICAgIC8v
IEZJWE1FOiBSZXBsYWNlIHRoZSB1c2Ugb2YgUmVzb3VyY2VIYW5kbGUgY3JlYXRlIGFuZCBsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5IG1ldGhvZHMgYnkgdGhlc2UgdHdvIG1ldGhvZHMuCisgICAg
Ly8gQXN5bmMgY2xpZW50IGFuZCBoYW5kbGUgY2xpZW50IGFyZSBvcHRpb25hbC4KKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJjZVJlc29sdmVyPiBjcmVhdGUoTmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZVJlc29sdmVy
Q2xpZW50KiwgUmVzb3VyY2VSZXNvbHZlckFzeW5jQ2xpZW50KiwgUmVzb3VyY2VIYW5kbGVDbGll
bnQqLCBib29sLCBib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgU3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgVmVjdG9yPGNoYXI+Jik7CisKKyAgICB2aXJ0dWFsIH5SZXNvdXJjZVJlc29sdmVyKCkgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldERl
ZmVyc0xvYWRpbmcoYm9vbCkgeyB9CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5
IHJlbW92ZSB0aGVzZSBtZXRob2RzIHdoZW5ldmVyIHBvc3NpYmxlLgorICAgIHZpcnR1YWwgUmVz
b3VyY2VSZXNvbHZlckFzeW5jKiBhc3luYygpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0
dWFsIFJlc291cmNlSGFuZGxlKiBoYW5kbGUoKSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICAv
LyBGSVhNRTogQ2FuIHdlIG1lcmdlIGNsZWFyQ2xpZW50L2lzQ2xpZW50IHdpdGggdGhlIGNhbmNl
bCBtZXRob2Q/CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc0NsaWVudChSZXNvdXJjZVJlc29sdmVyQ2xpZW50KikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgUmVzb3VyY2VSZXF1ZXN0JiBmaXJzdFJlcXVlc3QoKSA9IDA7Cit9OworCit9CisK
KyNlbmRpZiAvLyBSZXNvdXJjZVJlc29sdmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNvbHZlckFzeW5jLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzb2x2ZXJBc3luYy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4
NWViNmM1M2ZlNjRkYmQxOTdlZWJiNDgxNTk3MjM1NTc0OWY5YTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzb2x2ZXJBc3luYy5o
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIENhbm9uIEluYy4gMjAxNAor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04g
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFJlc291cmNlUmVzb2x2ZXJBc3luY19oCisjZGVmaW5lIFJlc291cmNlUmVz
b2x2ZXJBc3luY19oCisKKyNpbmNsdWRlICJSZXNvdXJjZVJlc29sdmVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKKworY2xhc3MgUmVzb3VyY2VSZXNvbHZlckFzeW5jIDogcHVibGljIFJlc291cmNlUmVz
b2x2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgflJlc291cmNlUmVzb2x2ZXJBc3luYygpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UoKSB7IH0KK307CisKK2NsYXNzIFJlc291cmNlUmVzb2x2ZXJBc3luY0NsaWVudCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+UmVzb3VyY2VSZXNvbHZlckFzeW5jQ2xpZW50KCkgeyB9CisKKyAg
ICAvLyBDbGllbnQgd2lsbCBwYXNzIGFuIHVwZGF0ZWQgcmVxdWVzdCB1c2luZyBSZXNvdXJjZVJl
c29sdmVyQXN5bmM6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KCkgd2hlbiByZWFkeS4KKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VS
ZXNvbHZlciogcmVzb2x2ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNlKi8pIHsgcmVzb2x2ZXItPmFzeW5j
KCktPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QpOyB9CisKKyAgICAvLyBDbGllbnQg
d2lsbCBjYWxsIFJlc291cmNlUmVzb2x2ZXJBc3luYzo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UoKSB3aGVuIHJlYWR5LgorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZVJlc29sdmVyKiByZXNvbHZlciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIHsgcmVzb2x2ZXItPmFzeW5jKCktPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlKCk7IH0KK307CisKK30KKworI2VuZGlmIC8vIFJlc291cmNlUmVzb2x2ZXJBc3luY19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzb2x2
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNv
bHZlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMjUzN2YwZWRhNTY3M2ViMWIxNGVmMmE4ZDEwMGQ3
NjUyOTdmMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzb2x2ZXJDbGllbnQuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSBDYW5vbiBJbmMuIDIwMTQKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSZXNvdXJjZVJlc29sdmVy
Q2xpZW50X2gKKyNkZWZpbmUgUmVzb3VyY2VSZXNvbHZlckNsaWVudF9oCisKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZXNvdXJjZUVycm9y
OworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3VyY2VSZXNvbHZlcjsKK2NsYXNz
IFJlc291cmNlUmVzcG9uc2U7CisKK2NsYXNzIFJlc291cmNlUmVzb2x2ZXJDbGllbnQgeworcHVi
bGljOgorICAgIHZpcnR1YWwgflJlc291cmNlUmVzb2x2ZXJDbGllbnQoKSB7IH0KKworICAgIC8v
IFJlcXVlc3QgbWF5IGJlIG1vZGlmaWVkLgorICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXNvbHZlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2Vu
ZERhdGEoUmVzb3VyY2VSZXNvbHZlciosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCov
LCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzb2x2ZXIqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VSZXNvbHZlciosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERh
dGFMZW5ndGgqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3Vy
Y2VSZXNvbHZlciogcmVzb2x2ZXIsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkgeyBkaWRSZWNlaXZlRGF0YShyZXNvbHZlciwgYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7IH0KKworICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlUmVzb2x2ZXIqLCBkb3VibGUgLypmaW5p
c2hUaW1lKi8pIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VSZXNvbHZl
ciosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHJl
bW92ZSB3YXNCbG9ja2VkIGFuZCBjYW5ub3RTaG93VVJMIGFuZCBhbHdheXMgdXNlIGRpZEZhaWwg
aW5zdGVhZD8KKyAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZVJlc29sdmVyKikg
eyB9CisgICAgdmlydHVhbCB2b2lkIGNhbm5vdFNob3dVUkwoUmVzb3VyY2VSZXNvbHZlciopIHsg
fQorCisgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNl
UmVzb2x2ZXIqKSB7IHJldHVybiBmYWxzZTsgfQorfTsKKworfQorCisjZW5kaWYgLy8gUmVzb3Vy
Y2VSZXNvbHZlckNsaWVudF9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>